mirror of
https://github.com/golang/go
synced 2024-11-05 15:46:11 -07:00
Revert "cmd/link: prefix syms with "_" on darwin links"
This reverts commit 06e5529ece
.
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>
This commit is contained in:
parent
575386d632
commit
b3e2a72e6f
@ -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)
|
||||
}
|
@ -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('_')
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user