diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-01-11 21:30:32 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-01-24 12:34:39 +0100 |
| commit | 32ebceea95d22d399bc979370e5ce4cc3ca7d0ef (patch) | |
| tree | 397c1dec33bff0a83584cc9602e05864d7e33da9 /src/link/MachO/thunks.zig | |
| parent | 0b2231998f5b95845c8414083622ec7913d60af6 (diff) | |
| download | zig-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.zig | 11 |
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; } |
