From 03f63654c4ce5885bf804fe242a4e15b70edc2c4 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Thu, 12 Sep 2019 20:43:42 +0000 Subject: [PATCH] Revert "cmd/link: prefix syms with "_" on external darwin links" This reverts CL 194381 Reason for revert: break tests like add2line. Change-Id: I9e858c7ada340a842bd0cad719616ad30fae4aaa Reviewed-on: https://go-review.googlesource.com/c/go/+/195137 Reviewed-by: Matthew Dempsky --- src/cmd/link/internal/ld/issue33808_test.go | 53 --------------------- src/cmd/link/internal/ld/macho.go | 5 +- 2 files changed, 2 insertions(+), 56 deletions(-) delete mode 100644 src/cmd/link/internal/ld/issue33808_test.go diff --git a/src/cmd/link/internal/ld/issue33808_test.go b/src/cmd/link/internal/ld/issue33808_test.go deleted file mode 100644 index df928a73d6..0000000000 --- a/src/cmd/link/internal/ld/issue33808_test.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ld - -import ( - "internal/testenv" - "io/ioutil" - "os" - "runtime" - "strings" - "testing" -) - -const prog = ` -package main - -import "log" - -func main() { - log.Fatalf("HERE") -} -` - -func TestIssue33808(t *testing.T) { - if runtime.GOOS != "darwin" { - return - } - testenv.MustHaveGoBuild(t) - - dir, err := ioutil.TempDir("", "TestIssue33808") - if err != nil { - t.Fatalf("could not create directory: %v", err) - } - defer os.RemoveAll(dir) - - f := gobuild(t, dir, prog, "-ldflags=-linkmode=external") - f.Close() - - syms, err := f.Symbols() - if err != nil { - t.Fatalf("Error reading symbols: %v", err) - } - - name := "log.Fatalf" - for _, sym := range syms { - if strings.Contains(sym.Name, name) { - return - } - } - t.Fatalf("Didn't find %v", name) -} diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go index 7453f37c62..02e133e31d 100644 --- a/src/cmd/link/internal/ld/macho.go +++ b/src/cmd/link/internal/ld/macho.go @@ -869,7 +869,6 @@ func machosymtab(ctxt *Link) { symtab.AddUint32(ctxt.Arch, uint32(symstr.Size)) export := machoShouldExport(ctxt, s) - isGoSymbol := strings.Contains(s.Extname(), ".") // In normal buildmodes, only add _ to C symbols, as // Go symbols have dot in the name. @@ -878,8 +877,8 @@ func machosymtab(ctxt *Link) { // symbols like crosscall2 are in pclntab and end up // pointing at the host binary, breaking unwinding. // See Issue #18190. - cexport := !isGoSymbol && (ctxt.BuildMode != BuildModePlugin || onlycsymbol(s)) - if cexport || export || isGoSymbol { + cexport := !strings.Contains(s.Extname(), ".") && (ctxt.BuildMode != BuildModePlugin || onlycsymbol(s)) + if cexport || export { symstr.AddUint8('_') } -- 2.48.1