aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2021-08-24 20:16:34 +0200
committerJakub Konka <kubkon@jakubkonka.com>2021-08-24 20:16:34 +0200
commitaee6f14bcee7c96fcb65490cad96e06991caece7 (patch)
treeb13864304e5fc44fa26cdcc09468ba094389c7a4 /src
parent32ce8238a8f722a17a408bf9d15db4a74662ae71 (diff)
downloadzig-aee6f14bcee7c96fcb65490cad96e06991caece7.tar.gz
zig-aee6f14bcee7c96fcb65490cad96e06991caece7.zip
macho: use existing rebase mechanism to rebase lazy pointers
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO.zig31
1 files changed, 1 insertions, 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);