diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-11-23 08:55:34 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-23 08:55:34 -0800 |
| commit | 9d2fe1682f19bd21a393deeea2c4173b4429b482 (patch) | |
| tree | 471896cda055375d4c647e69c6ee2602665f4915 /lib/std/dynamic_library.zig | |
| parent | c7170e4a5480581db5f30913eebd9ad4f7cd121e (diff) | |
| parent | 3e22077d46a02d1c4e02dd603b560978dc184a87 (diff) | |
| download | zig-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.zig | 18 |
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; |
