| ... | ... | @@ -59,24 +59,12 @@ const RDebug = extern struct { |
| 59 | 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 | 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 | 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 | 66 | return LinkMap.Iterator{ .current = null }; |
| 79 | | } |
| 67 | }; |
| 80 | 68 | |
| 81 | 69 | const link_map_ptr = init: { |
| 82 | 70 | var i: usize = 0; |