From b3e2a72e6f42a924d6489b14c6881aa5cddf9418 Mon Sep 17 00:00:00 2001 From: Jeremy Faller Date: Tue, 17 Sep 2019 21:45:28 +0000 Subject: [PATCH] Revert "cmd/link: prefix syms with "_" on darwin links" This reverts commit 06e5529eceae35bb26b51f2430c2c9425149ede2. Reason for revert: darwin_386 is unhappy. (Almost as unhappy as I am.) https://build.golang.org/log/292c90a4ef1c93597b865ab8513b66a95d93d022 Change-Id: I690566ce1d8212317fc3dc349ad0d4d5a2bb58eb Reviewed-on: https://go-review.googlesource.com/c/go/+/196033 Reviewed-by: Cherry Zhang Run-TryBot: Cherry Zhang --- src/cmd/link/internal/ld/issue33808_test.go | 53 --------------------- src/cmd/link/internal/ld/macho.go | 5 +- src/debug/macho/file.go | 7 +-- 3 files changed, 3 insertions(+), 62 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('_') } diff --git a/src/debug/macho/file.go b/src/debug/macho/file.go index 085b0c8219..16708e5247 100644 --- a/src/debug/macho/file.go +++ b/src/debug/macho/file.go @@ -473,12 +473,7 @@ func (f *File) parseSymtab(symdat, strtab, cmddat []byte, hdr *SymtabCmd, offset if n.Name >= uint32(len(strtab)) { return nil, &FormatError{offset, "invalid name in symbol table", n.Name} } - // We add "_" to Go symbols. Strip it here. See issue 33808. - name := cstring(strtab[n.Name:]) - if strings.Contains(name, ".") && name[0] == '_' { - name = name[1:] - } - sym.Name = name + sym.Name = cstring(strtab[n.Name:]) sym.Type = n.Type sym.Sect = n.Sect sym.Desc = n.Desc