| ... | ... | @@ -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 | 4999 | const nlocals = locals.items.len; |
| 5008 | 5000 | const nexports = self.globals.items.len; |
| 5009 | | const nundefs = undefs.items.len; |
| 5001 | const nundefs = self.undefs.items.len; |
| 5010 | 5002 | |
| 5011 | 5003 | const locals_off = symtab.symoff; |
| 5012 | 5004 | const locals_size = nlocals * @sizeOf(macho.nlist_64); |
| ... | ... | @@ -5021,7 +5013,7 @@ fn writeSymbolTable(self: *MachO) !void { |
| 5021 | 5013 | const undefs_off = exports_off + exports_size; |
| 5022 | 5014 | const undefs_size = nundefs * @sizeOf(macho.nlist_64); |
| 5023 | 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 | 5018 | symtab.nsyms = @intCast(u32, nlocals + nexports + nundefs); |
| 5027 | 5019 | seg.inner.filesize += locals_size + exports_size + undefs_size; |