diff options
Diffstat (limited to 'src/link/MachO/Object.zig')
| -rw-r--r-- | src/link/MachO/Object.zig | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/link/MachO/Object.zig b/src/link/MachO/Object.zig index cfa994ecfb..de747eb4c7 100644 --- a/src/link/MachO/Object.zig +++ b/src/link/MachO/Object.zig @@ -6,7 +6,7 @@ const assert = std.debug.assert; const dwarf = std.dwarf; const fs = std.fs; const io = std.io; -const log = std.log.scoped(.object); +const log = std.log.scoped(.link); const macho = std.macho; const math = std.math; const mem = std.mem; @@ -458,9 +458,15 @@ pub fn parseIntoAtoms(self: *Object, allocator: *Allocator, macho_file: *MachO) // a temp one, unless we already did that when working out the relocations // of other atoms. const atom_local_sym_index = self.sections_as_symbols.get(sect_id) orelse blk: { + const sym_name = try std.fmt.allocPrint(allocator, "{s}_{s}_{s}", .{ + self.name, + segmentName(sect), + sectionName(sect), + }); + defer allocator.free(sym_name); const atom_local_sym_index = @intCast(u32, macho_file.locals.items.len); try macho_file.locals.append(allocator, .{ - .n_strx = 0, + .n_strx = try macho_file.makeString(sym_name), .n_type = macho.N_SECT, .n_sect = @intCast(u8, macho_file.section_ordinals.getIndex(match).? + 1), .n_desc = 0, @@ -481,7 +487,6 @@ pub fn parseIntoAtoms(self: *Object, allocator: *Allocator, macho_file: *MachO) try atom.parseRelocs(relocs, .{ .base_addr = sect.addr, - .base_offset = 0, .allocator = allocator, .object = self, .macho_file = macho_file, |
