macho: remove error_union return from resolveRelocations()

This commit is contained in:
Jakub Konka 2023-03-28 21:52:44 +02:00
parent cde722a711
commit 17ec2cea64
3 changed files with 8 additions and 18 deletions

View file

@ -1091,7 +1091,7 @@ pub fn writeAtom(self: *MachO, atom_index: Atom.Index, code: []u8) !void {
log.debug("writing atom for symbol {s} at file offset 0x{x}", .{ atom.getName(self), file_offset });
if (self.relocs.get(atom_index)) |relocs| {
try Atom.resolveRelocations(self, atom_index, relocs.items, code);
Atom.resolveRelocations(self, atom_index, relocs.items, code);
}
if (is_hot_update_compatible) {

View file

@ -183,11 +183,11 @@ pub fn addLazyBinding(macho_file: *MachO, atom_index: Index, binding: Binding) !
try gop.value_ptr.append(gpa, binding);
}
pub fn resolveRelocations(macho_file: *MachO, atom_index: Index, relocs: []Relocation, code: []u8) !void {
pub fn resolveRelocations(macho_file: *MachO, atom_index: Index, relocs: []Relocation, code: []u8) void {
log.debug("relocating '{s}'", .{macho_file.getAtom(atom_index).getName(macho_file)});
for (relocs) |*reloc| {
if (!reloc.dirty) continue;
try reloc.resolve(macho_file, atom_index, code);
reloc.resolve(macho_file, atom_index, code);
reloc.dirty = false;
}
}

View file

@ -50,7 +50,7 @@ pub fn getTargetAtomIndex(self: Relocation, macho_file: *MachO) ?Atom.Index {
return macho_file.getAtomIndexForSymbol(self.target);
}
pub fn resolve(self: Relocation, macho_file: *MachO, atom_index: Atom.Index, code: []u8) !void {
pub fn resolve(self: Relocation, macho_file: *MachO, atom_index: Atom.Index, code: []u8) void {
const arch = macho_file.base.options.target.cpu.arch;
const atom = macho_file.getAtom(atom_index);
const source_sym = atom.getSymbol(macho_file);
@ -68,18 +68,13 @@ pub fn resolve(self: Relocation, macho_file: *MachO, atom_index: Atom.Index, cod
});
switch (arch) {
.aarch64 => return self.resolveAarch64(source_addr, target_addr, code),
.x86_64 => return self.resolveX8664(source_addr, target_addr, code),
.aarch64 => self.resolveAarch64(source_addr, target_addr, code),
.x86_64 => self.resolveX8664(source_addr, target_addr, code),
else => unreachable,
}
}
fn resolveAarch64(
self: Relocation,
source_addr: u64,
target_addr: i64,
code: []u8,
) !void {
fn resolveAarch64(self: Relocation, source_addr: u64, target_addr: i64, code: []u8) void {
const rel_type = @intToEnum(macho.reloc_type_arm64, self.type);
if (rel_type == .ARM64_RELOC_UNSIGNED) {
return switch (self.length) {
@ -212,12 +207,7 @@ fn resolveAarch64(
}
}
fn resolveX8664(
self: Relocation,
source_addr: u64,
target_addr: i64,
code: []u8,
) !void {
fn resolveX8664(self: Relocation, source_addr: u64, target_addr: i64, code: []u8) void {
const rel_type = @intToEnum(macho.reloc_type_x86_64, self.type);
switch (rel_type) {
.X86_64_RELOC_BRANCH,