| ... | @@ -59,24 +59,12 @@ const RDebug = extern struct { | ... | @@ -59,24 +59,12 @@ const RDebug = extern struct { |
| 59 | r_ldbase: usize, | 59 | r_ldbase: usize, |
| 60 | }; | 60 | }; |
| 61 | | 61 | |
| 62 | // TODO: This should be weak (#1917) | | |
| 63 | extern var _DYNAMIC: [128]elf.Dyn; | | |
| 64 | | | |
| 65 | comptime { | | |
| 66 | if (std.Target.current.os.tag == .linux) { | | |
| 67 | asm ( | | |
| 68 | \\ .weak _DYNAMIC | | |
| 69 | \\ .hidden _DYNAMIC | | |
| 70 | ); | | |
| 71 | } | | |
| 72 | } | | |
| 73 | | | |
| 74 | pub fn linkmap_iterator(phdrs: []elf.Phdr) !LinkMap.Iterator { | 62 | pub fn linkmap_iterator(phdrs: []elf.Phdr) !LinkMap.Iterator { |
| 75 | if (@ptrToInt(&_DYNAMIC[0]) == 0) { | 63 | const _DYNAMIC = @extern([*]elf.Dyn, .{ .name = "_DYNAMIC", .linkage = .Weak }) orelse { |
| 76 | // No PT_DYNAMIC means this is either a statically-linked program or a | 64 | // No PT_DYNAMIC means this is either a statically-linked program or a |
| 77 | // badly corrupted one | 65 | // badly corrupted dynamically-linked one. |
| 78 | return LinkMap.Iterator{ .current = null }; | 66 | return LinkMap.Iterator{ .current = null }; |
| 79 | } | 67 | }; |
| 80 | | 68 | |
| 81 | const link_map_ptr = init: { | 69 | const link_map_ptr = init: { |
| 82 | var i: usize = 0; | 70 | var i: usize = 0; |