aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO.zig11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index d78f0dc942..17e17f13f0 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -2167,19 +2167,16 @@ fn resolveSymbolsInObject(
.global => {
const global = &self.globals.items[resolv.where_index];
- if (!(symbolIsWeakDef(sym) or symbolIsPext(sym)) and
+ if (symbolIsTentative(global.*)) {
+ _ = tentatives.fetchSwapRemove(resolv.where_index);
+ } else if (!(symbolIsWeakDef(sym) or symbolIsPext(sym)) and
!(symbolIsWeakDef(global.*) or symbolIsPext(global.*)))
{
log.err("symbol '{s}' defined multiple times", .{sym_name});
log.err(" first definition in '{s}'", .{self.objects.items[resolv.file].name});
log.err(" next definition in '{s}'", .{object.name});
return error.MultipleSymbolDefinitions;
- }
- if (symbolIsWeakDef(sym) or symbolIsPext(sym)) continue; // Current symbol is weak, so skip it.
-
- if (symbolIsTentative(global.*)) {
- _ = tentatives.fetchSwapRemove(resolv.where_index);
- }
+ } else if (symbolIsWeakDef(sym) or symbolIsPext(sym)) continue; // Current symbol is weak, so skip it.
// Otherwise, update the resolver and the global symbol.
global.n_type = sym.n_type;