aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Faller <jeremy@golang.org>2019-09-17 21:45:28 +0000
committerJeremy Faller <jeremy@golang.org>2019-09-17 22:04:57 +0000
commitb3e2a72e6f42a924d6489b14c6881aa5cddf9418 (patch)
tree533e1060ac54a5b802541889b6a7cd0a51e0eae2 /src
parent575386d6324308d83f6f0782e61620ffe9f5dba3 (diff)
downloadgo-b3e2a72e6f42a924d6489b14c6881aa5cddf9418.tar.xz
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 <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/link/internal/ld/issue33808_test.go53
-rw-r--r--src/cmd/link/internal/ld/macho.go5
-rw-r--r--src/debug/macho/file.go7
3 files changed, 3 insertions, 62 deletions
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