| ... | @@ -4996,17 +4996,9 @@ fn writeSymbolTable(self: *MachO) !void { | ... | @@ -4996,17 +4996,9 @@ fn writeSymbolTable(self: *MachO) !void { |
| 4996 | } | 4996 | } |
| 4997 | } | 4997 | } |
| 4998 | | 4998 | |
| 4999 | var undefs = std.ArrayList(macho.nlist_64).init(self.base.allocator); | | |
| 5000 | defer undefs.deinit(); | | |
| 5001 | | | |
| 5002 | for (self.undefs.items) |sym| { | | |
| 5003 | if (sym.n_strx == 0) continue; | | |
| 5004 | try undefs.append(sym); | | |
| 5005 | } | | |
| 5006 | | | |
| 5007 | const nlocals = locals.items.len; | 4999 | const nlocals = locals.items.len; |
| 5008 | const nexports = self.globals.items.len; | 5000 | const nexports = self.globals.items.len; |
| 5009 | const nundefs = undefs.items.len; | 5001 | const nundefs = self.undefs.items.len; |
| 5010 | | 5002 | |
| 5011 | const locals_off = symtab.symoff; | 5003 | const locals_off = symtab.symoff; |
| 5012 | const locals_size = nlocals * @sizeOf(macho.nlist_64); | 5004 | const locals_size = nlocals * @sizeOf(macho.nlist_64); |
| ... | @@ -5021,7 +5013,7 @@ fn writeSymbolTable(self: *MachO) !void { | ... | @@ -5021,7 +5013,7 @@ fn writeSymbolTable(self: *MachO) !void { |
| 5021 | const undefs_off = exports_off + exports_size; | 5013 | const undefs_off = exports_off + exports_size; |
| 5022 | const undefs_size = nundefs * @sizeOf(macho.nlist_64); | 5014 | const undefs_size = nundefs * @sizeOf(macho.nlist_64); |
| 5023 | log.debug("writing undefined symbols from 0x{x} to 0x{x}", .{ undefs_off, undefs_size + undefs_off }); | 5015 | log.debug("writing undefined symbols from 0x{x} to 0x{x}", .{ undefs_off, undefs_size + undefs_off }); |
| 5024 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(undefs.items), undefs_off); | 5016 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(self.undefs.items), undefs_off); |
| 5025 | | 5017 | |
| 5026 | symtab.nsyms = @intCast(u32, nlocals + nexports + nundefs); | 5018 | symtab.nsyms = @intCast(u32, nlocals + nexports + nundefs); |
| 5027 | seg.inner.filesize += locals_size + exports_size + undefs_size; | 5019 | seg.inner.filesize += locals_size + exports_size + undefs_size; |