From aee6f14bcee7c96fcb65490cad96e06991caece7 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 24 Aug 2021 20:16:34 +0200 Subject: [PATCH] macho: use existing rebase mechanism to rebase lazy pointers --- src/link/MachO.zig | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/src/link/MachO.zig b/src/link/MachO.zig index f3304c9e47..b6b70060a9 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -2223,6 +2223,7 @@ fn createLazyPointerAtom(self: *MachO, stub_sym_index: u32) !*TextBlock { }, }, }); + try atom.rebases.append(self.base.allocator, 0); self.lazy_binding_info_dirty = true; return atom; } @@ -3002,21 +3003,6 @@ fn writeRebaseInfoTableZld(self: *MachO) !void { } } - if (self.la_symbol_ptr_section_index) |idx| { - const seg = self.load_commands.items[self.data_segment_cmd_index.?].Segment; - const sect = seg.sections.items[idx]; - const base_offset = sect.addr - seg.inner.vmaddr; - const segment_id = @intCast(u16, self.data_segment_cmd_index.?); - - try pointers.ensureUnusedCapacity(self.stubs.items.len); - for (self.stubs.items) |_, i| { - pointers.appendAssumeCapacity(.{ - .offset = base_offset + i * @sizeOf(u64), - .segment_id = segment_id, - }); - } - } - std.sort.sort(bind.Pointer, pointers.items, {}, bind.pointerCmp); const size = try bind.rebaseInfoSize(pointers.items); @@ -5104,21 +5090,6 @@ fn writeRebaseInfoTable(self: *MachO) !void { } } - if (self.la_symbol_ptr_section_index) |idx| { - const seg = self.load_commands.items[self.data_segment_cmd_index.?].Segment; - const sect = seg.sections.items[idx]; - const base_offset = sect.addr - seg.inner.vmaddr; - const segment_id = @intCast(u16, self.data_segment_cmd_index.?); - - try pointers.ensureUnusedCapacity(self.stubs.items.len); - for (self.stubs.items) |_, i| { - pointers.appendAssumeCapacity(.{ - .offset = base_offset + i * @sizeOf(u64), - .segment_id = segment_id, - }); - } - } - std.sort.sort(bind.Pointer, pointers.items, {}, bind.pointerCmp); const size = try bind.rebaseInfoSize(pointers.items);