Commit 26dabbf301

kcbanner <kcbanner@gmail.com>
2023-11-05 05:27:08
cbe: handle underscore prexfix on macos, don't mangle extern function names
1 parent 192e9a3
Changed files (2)
lib
src
codegen
lib/zig.h
@@ -203,7 +203,11 @@ typedef char bool;
     __pragma(comment(linker, "/alternatename:_" #symbol "=_" #name ))
 #endif /*_M_X64 */
 #else
+#if __APPLE__
+#define zig_import(sig, symbol, name) zig_extern sig __asm("_" #name);
+#else /* __APPLE__ */
 #define zig_import(sig, symbol, name) zig_extern sig __asm(#name);
+#endif /* __APPLE__ */
 #endif
 
 #define zig_expand_import(sig, symbol, name) zig_import(sig, symbol, name)
src/codegen/c.zig
@@ -1978,7 +1978,7 @@ pub const DeclGen = struct {
         if (mod.decl_exports.get(decl_index)) |exports| {
             try writer.print("{ }", .{fmtIdent(mod.intern_pool.stringToSlice(exports.items[export_index].opts.name))});
         } else if (decl.getExternDecl(mod).unwrap()) |extern_decl_index| {
-            try writer.print("{ }", .{fmtIdent(mod.intern_pool.stringToSlice(mod.declPtr(extern_decl_index).name))});
+            try writer.print("{}", .{mod.declPtr(extern_decl_index).name.fmt(&mod.intern_pool)});
         } else {
             // MSVC has a limit of 4095 character token length limit, and fmtIdent can (worst case),
             // expand to 3x the length of its input, but let's cut it off at a much shorter limit.