Commit baceaf65f2

Jakub Konka <kubkon@jakubkonka.com>
2022-10-19 13:03:07
macho: fix incorrectly erroring out with multiple sym definition
1 parent a32bc0e
Changed files (1)
src
src/link/MachO.zig
@@ -2702,13 +2702,17 @@ pub fn updateDeclExports(
 
         self.resolveGlobalSymbol(sym_loc) catch |err| switch (err) {
             error.MultipleSymbolDefinitions => {
-                _ = try module.failed_exports.put(module.gpa, exp, try Module.ErrorMsg.create(
-                    gpa,
-                    decl.srcLoc(),
-                    \\LinkError: symbol '{s}' defined multiple times
-                ,
-                    .{exp_name},
-                ));
+                // TODO: this needs rethinking
+                const global = self.getGlobal(exp_name).?;
+                if (sym_loc.sym_index != global.sym_index and global.file != null) {
+                    _ = try module.failed_exports.put(module.gpa, exp, try Module.ErrorMsg.create(
+                        gpa,
+                        decl.srcLoc(),
+                        \\LinkError: symbol '{s}' defined multiple times
+                    ,
+                        .{exp_name},
+                    ));
+                }
             },
             else => |e| return e,
         };