aboutsummaryrefslogtreecommitdiff
path: root/lib/std/dynamic_library.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-11-23 08:55:34 -0800
committerGitHub <noreply@github.com>2020-11-23 08:55:34 -0800
commit9d2fe1682f19bd21a393deeea2c4173b4429b482 (patch)
tree471896cda055375d4c647e69c6ee2602665f4915 /lib/std/dynamic_library.zig
parentc7170e4a5480581db5f30913eebd9ad4f7cd121e (diff)
parent3e22077d46a02d1c4e02dd603b560978dc184a87 (diff)
downloadzig-9d2fe1682f19bd21a393deeea2c4173b4429b482.tar.gz
zig-9d2fe1682f19bd21a393deeea2c4173b4429b482.zip
Merge pull request #7204 from LemonBoy/piecrash
Fix logic for detecting _DYNAMIC symbol
Diffstat (limited to 'lib/std/dynamic_library.zig')
-rw-r--r--lib/std/dynamic_library.zig18
1 files changed, 3 insertions, 15 deletions
diff --git a/lib/std/dynamic_library.zig b/lib/std/dynamic_library.zig
index 0de4bed84d..6c99ee644b 100644
--- a/lib/std/dynamic_library.zig
+++ b/lib/std/dynamic_library.zig
@@ -59,24 +59,12 @@ const RDebug = extern struct {
r_ldbase: usize,
};
-// TODO: This should be weak (#1917)
-extern var _DYNAMIC: [128]elf.Dyn;
-
-comptime {
- if (std.Target.current.os.tag == .linux) {
- asm (
- \\ .weak _DYNAMIC
- \\ .hidden _DYNAMIC
- );
- }
-}
-
pub fn linkmap_iterator(phdrs: []elf.Phdr) !LinkMap.Iterator {
- if (@ptrToInt(&_DYNAMIC[0]) == 0) {
+ const _DYNAMIC = @extern([*]elf.Dyn, .{ .name = "_DYNAMIC", .linkage = .Weak }) orelse {
// No PT_DYNAMIC means this is either a statically-linked program or a
- // badly corrupted one
+ // badly corrupted dynamically-linked one.
return LinkMap.Iterator{ .current = null };
- }
+ };
const link_map_ptr = init: {
var i: usize = 0;