diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-08-10 18:56:08 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-08-10 22:27:59 -0700 |
| commit | cc56400e62ae7d59cccf78d0cfe2e4b990d53abc (patch) | |
| tree | 527f2135419a2f5ac230830ffa7f4aeddeb0ad86 /src | |
| parent | 74673b7f69b27dc39a653f92eb58bba71e289f39 (diff) | |
| download | zig-cc56400e62ae7d59cccf78d0cfe2e4b990d53abc.tar.gz zig-cc56400e62ae7d59cccf78d0cfe2e4b990d53abc.zip | |
Revert "macho: allow unaligned offsets in object files"
This reverts commit 45c444ff18b43d30a7277e346174ba6eca4a6193.
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/MachO/Object.zig | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/link/MachO/Object.zig b/src/link/MachO/Object.zig index 098917e81f..996a85ed4b 100644 --- a/src/link/MachO/Object.zig +++ b/src/link/MachO/Object.zig @@ -99,11 +99,10 @@ pub fn parse(self: *Object, allocator: Allocator, cpu_arch: std.Target.Cpu.Arch) }, .SYMTAB => { const symtab = cmd.cast(macho.symtab_command).?; - // Sadly, SYMTAB may be at an unaligned offset within the object file. - self.in_symtab = @alignCast(@alignOf(macho.nlist_64), @ptrCast( - [*]align(1) const macho.nlist_64, - self.contents.ptr + symtab.symoff, - ))[0..symtab.nsyms]; + self.in_symtab = @ptrCast( + [*]const macho.nlist_64, + @alignCast(@alignOf(macho.nlist_64), &self.contents[symtab.symoff]), + )[0..symtab.nsyms]; self.in_strtab = self.contents[symtab.stroff..][0..symtab.strsize]; try self.symtab.appendSlice(allocator, self.in_symtab); }, @@ -303,10 +302,10 @@ pub fn splitIntoAtomsOneShot(self: *Object, macho_file: *MachO, object_id: u32) const code: ?[]const u8 = if (!sect.isZerofill()) try self.getSectionContents(sect) else null; // Read section's list of relocations - const relocs = @alignCast(@alignOf(macho.relocation_info), @ptrCast( - [*]align(1) const macho.relocation_info, - self.contents.ptr + sect.reloff, - ))[0..sect.nreloc]; + const relocs = @ptrCast( + [*]const macho.relocation_info, + @alignCast(@alignOf(macho.relocation_info), &self.contents[sect.reloff]), + )[0..sect.nreloc]; // Symbols within this section only. const filtered_syms = filterSymbolsByAddress( @@ -549,10 +548,10 @@ pub fn parseDataInCode(self: Object) ?[]const macho.data_in_code_entry { .DATA_IN_CODE => { const dice = cmd.cast(macho.linkedit_data_command).?; const ndice = @divExact(dice.datasize, @sizeOf(macho.data_in_code_entry)); - return @alignCast(@alignOf(macho.data_in_code_entry), @ptrCast( - [*]align(1) const macho.data_in_code_entry, - self.contents.ptr + dice.dataoff, - ))[0..ndice]; + return @ptrCast( + [*]const macho.data_in_code_entry, + @alignCast(@alignOf(macho.data_in_code_entry), &self.contents[dice.dataoff]), + )[0..ndice]; }, else => {}, } |
