diff --git a/src/link/MachO/Object.zig b/src/link/MachO/Object.zig index 2c49108b82..2d27c3d816 100644 --- a/src/link/MachO/Object.zig +++ b/src/link/MachO/Object.zig @@ -515,8 +515,9 @@ pub fn getSourceSymbol(self: Object, index: u32) ?macho.nlist_64 { } /// Caller owns memory. -pub fn createReverseSymbolLookup(self: Object, gpa: Allocator) ![]u32 { - const lookup = try gpa.alloc(u32, self.in_symtab.?.len); +pub fn createReverseSymbolLookup(self: Object, arena: Allocator) ![]u32 { + const symtab = self.in_symtab orelse return &[0]u32{}; + const lookup = try arena.alloc(u32, symtab.len); for (self.source_symtab_lookup) |source_id, id| { lookup[source_id] = @intCast(u32, id); } diff --git a/src/link/MachO/zld.zig b/src/link/MachO/zld.zig index bde418642a..c7b34723ac 100644 --- a/src/link/MachO/zld.zig +++ b/src/link/MachO/zld.zig @@ -3486,6 +3486,7 @@ pub const Zld = struct { scoped_log.debug("locals:", .{}); for (self.objects.items) |object, id| { scoped_log.debug(" object({d}): {s}", .{ id, object.name }); + if (object.in_symtab == null) continue; for (object.symtab) |sym, sym_id| { mem.set(u8, &buf, '_'); scoped_log.debug(" %{d}: {s} @{x} in sect({d}), {s}", .{ @@ -3641,7 +3642,7 @@ pub const Zld = struct { sym.n_sect, }); - if (atom.getFile() != null) { + if (atom.getFile() != null) { var it = Atom.getInnerSymbolsIterator(self, atom_index); while (it.next()) |sym_loc| { const inner = self.getSymbol(sym_loc);