mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 23:52:31 +00:00
macho: mark relocs dirty by target when updating GOT/stubs
This commit is contained in:
parent
a596e48d8f
commit
9a181f367d
@ -1801,6 +1801,7 @@ fn addGotEntry(self: *MachO, target: SymbolWithLoc) !void {
|
|||||||
const got_index = try self.got_table.allocateEntry(self.base.allocator, target);
|
const got_index = try self.got_table.allocateEntry(self.base.allocator, target);
|
||||||
try self.writeOffsetTableEntry(got_index);
|
try self.writeOffsetTableEntry(got_index);
|
||||||
self.got_table_count_dirty = true;
|
self.got_table_count_dirty = true;
|
||||||
|
self.markRelocsDirtyByTarget(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn addStubEntry(self: *MachO, target: SymbolWithLoc) !void {
|
fn addStubEntry(self: *MachO, target: SymbolWithLoc) !void {
|
||||||
@ -1808,6 +1809,7 @@ fn addStubEntry(self: *MachO, target: SymbolWithLoc) !void {
|
|||||||
const stub_index = try self.stub_table.allocateEntry(self.base.allocator, target);
|
const stub_index = try self.stub_table.allocateEntry(self.base.allocator, target);
|
||||||
try self.writeStubTableEntry(stub_index);
|
try self.writeStubTableEntry(stub_index);
|
||||||
self.stub_table_count_dirty = true;
|
self.stub_table_count_dirty = true;
|
||||||
|
self.markRelocsDirtyByTarget(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn updateFunc(self: *MachO, module: *Module, func: *Module.Fn, air: Air, liveness: Liveness) !void {
|
pub fn updateFunc(self: *MachO, module: *Module, func: *Module.Fn, air: Air, liveness: Liveness) !void {
|
||||||
@ -2294,6 +2296,7 @@ fn updateDeclCode(self: *MachO, decl_index: Module.Decl.Index, code: []u8) !u64
|
|||||||
log.debug(" (updating GOT entry)", .{});
|
log.debug(" (updating GOT entry)", .{});
|
||||||
const got_atom_index = self.got_table.lookup.get(.{ .sym_index = sym_index }).?;
|
const got_atom_index = self.got_table.lookup.get(.{ .sym_index = sym_index }).?;
|
||||||
try self.writeOffsetTableEntry(got_atom_index);
|
try self.writeOffsetTableEntry(got_atom_index);
|
||||||
|
self.markRelocsDirtyByTarget(.{ .sym_index = sym_index });
|
||||||
}
|
}
|
||||||
} else if (code_len < atom.size) {
|
} else if (code_len < atom.size) {
|
||||||
self.shrinkAtom(atom_index, code_len);
|
self.shrinkAtom(atom_index, code_len);
|
||||||
|
Loading…
Reference in New Issue
Block a user