| ... | @@ -1284,17 +1284,14 @@ fn resolveSymbols(self: *Zld) !void { | ... | @@ -1284,17 +1284,14 @@ fn resolveSymbols(self: *Zld) !void { |
| 1284 | } | 1284 | } |
| 1285 | | 1285 | |
| 1286 | // Second pass, resolve symbols in static libraries. | 1286 | // Second pass, resolve symbols in static libraries. |
| 1287 | var next: usize = 0; | 1287 | var next_sym: usize = 0; |
| 1288 | var hit: bool = undefined; | 1288 | var nsyms: usize = self.symtab.items().len; |
| 1289 | while (true) { | 1289 | while (next_sym < nsyms) : (next_sym += 1) { |
| 1290 | var archive = &self.archives.items[next]; | 1290 | const sym = self.symtab.items()[next_sym]; |
| 1291 | hit = false; | 1291 | if (sym.value.tag != .undef) continue; |
| 1292 | | 1292 | |
| 1293 | for (self.symtab.items()) |entry| { | 1293 | const sym_name = sym.value.name; |
| 1294 | if (entry.value.tag != .undef) continue; | 1294 | for (self.archives.items) |archive| { |
| 1295 | | | |
| 1296 | const sym_name = entry.value.name; | | |
| 1297 | | | |
| 1298 | // Check if the entry exists in a static archive. | 1295 | // Check if the entry exists in a static archive. |
| 1299 | const offsets = archive.toc.get(sym_name) orelse { | 1296 | const offsets = archive.toc.get(sym_name) orelse { |
| 1300 | // No hit. | 1297 | // No hit. |
| ... | @@ -1307,18 +1304,9 @@ fn resolveSymbols(self: *Zld) !void { | ... | @@ -1307,18 +1304,9 @@ fn resolveSymbols(self: *Zld) !void { |
| 1307 | try self.objects.append(self.allocator, object); | 1304 | try self.objects.append(self.allocator, object); |
| 1308 | try self.resolveSymbolsInObject(object_id); | 1305 | try self.resolveSymbolsInObject(object_id); |
| 1309 | | 1306 | |
| 1310 | hit = true; | 1307 | nsyms = self.symtab.items().len; |
| 1311 | break; | 1308 | break; |
| 1312 | } | 1309 | } |
| 1313 | | | |
| 1314 | if (!hit) { | | |
| 1315 | // Next archive. | | |
| 1316 | next += 1; | | |
| 1317 | if (next == self.archives.items.len) { | | |
| 1318 | break; | | |
| 1319 | } | | |
| 1320 | archive = &self.archives.items[next]; | | |
| 1321 | } | | |
| 1322 | } | 1310 | } |
| 1323 | | 1311 | |
| 1324 | // Third pass, resolve symbols in dynamic libraries. | 1312 | // Third pass, resolve symbols in dynamic libraries. |