From dcf85b30ba422c50e6e96893a3ed930aea5b6b4a Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Fri, 2 Apr 2021 21:04:31 -0400 Subject: [PATCH] cmd/link: mangle function name with ABI on Mach-O This is not strictly necessary. But as we already do this on ELF and PE, do it here as well. Updates #40724. Change-Id: Ie6e5211aba116634bc9ed82eb8d22a7fed3b7776 Reviewed-on: https://go-review.googlesource.com/c/go/+/307229 Trust: Cherry Zhang Reviewed-by: Than McIntosh Reviewed-by: Austin Clements --- src/cmd/link/internal/ld/macho.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go index 3630e67c25..872144e723 100644 --- a/src/cmd/link/internal/ld/macho.go +++ b/src/cmd/link/internal/ld/macho.go @@ -1022,7 +1022,10 @@ func machosymtab(ctxt *Link) { symstr.AddUint8('_') // replace "·" as ".", because DTrace cannot handle it. - symstr.Addstring(strings.Replace(ldr.SymExtname(s), "·", ".", -1)) + name := strings.Replace(ldr.SymExtname(s), "·", ".", -1) + + name = mangleABIName(ldr, s, name) + symstr.Addstring(name) if t := ldr.SymType(s); t == sym.SDYNIMPORT || t == sym.SHOSTOBJ || t == sym.SUNDEFEXT { symtab.AddUint8(0x01) // type N_EXT, external symbol -- 2.48.1