aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/thunks.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-01-11 21:30:32 +0100
committerJakub Konka <kubkon@jakubkonka.com>2024-01-24 12:34:39 +0100
commit32ebceea95d22d399bc979370e5ce4cc3ca7d0ef (patch)
tree397c1dec33bff0a83584cc9602e05864d7e33da9 /src/link/MachO/thunks.zig
parent0b2231998f5b95845c8414083622ec7913d60af6 (diff)
downloadzig-32ebceea95d22d399bc979370e5ce4cc3ca7d0ef.tar.gz
zig-32ebceea95d22d399bc979370e5ce4cc3ca7d0ef.zip
macho: sort sections; use Atom.Alignment for alignment; init segments
Diffstat (limited to 'src/link/MachO/thunks.zig')
-rw-r--r--src/link/MachO/thunks.zig11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/link/MachO/thunks.zig b/src/link/MachO/thunks.zig
index 7f0dc56685..2e9602f8d8 100644
--- a/src/link/MachO/thunks.zig
+++ b/src/link/MachO/thunks.zig
@@ -2,7 +2,7 @@ pub fn createThunks(sect_id: u8, macho_file: *MachO) !void {
const tracy = trace(@src());
defer tracy.end();
- const gpa = macho_file.base.allocator;
+ const gpa = macho_file.base.comp.gpa;
const slice = macho_file.sections.slice();
const header = &slice.items(.header)[sect_id];
const atoms = slice.items(.atoms)[sect_id].items;
@@ -46,18 +46,17 @@ pub fn createThunks(sect_id: u8, macho_file: *MachO) !void {
atom.thunk_index = thunk_index;
}
- thunk.value = try advance(header, thunk.size(), 2);
+ thunk.value = try advance(header, thunk.size(), .@"4");
log.debug("thunk({d}) : {}", .{ thunk_index, thunk.fmt(macho_file) });
}
}
-fn advance(sect: *macho.section_64, size: u64, pow2_align: u32) !u64 {
- const alignment = try math.powi(u32, 2, pow2_align);
- const offset = mem.alignForward(u64, sect.size, alignment);
+fn advance(sect: *macho.section_64, size: u64, alignment: Atom.Alignment) !u64 {
+ const offset = alignment.forward(sect.size);
const padding = offset - sect.size;
sect.size += padding + size;
- sect.@"align" = @max(sect.@"align", pow2_align);
+ sect.@"align" = @max(sect.@"align", alignment.toLog2Units());
return offset;
}