mirror of
https://github.com/ziglang/zig.git
synced 2026-01-14 11:25:14 +00:00
macho: use existing rebase mechanism to rebase lazy pointers
This commit is contained in:
parent
32ce8238a8
commit
aee6f14bce
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user