From: Russ Cox Date: Wed, 22 Jul 2015 18:59:56 +0000 (-0400) Subject: cmd/link: elide individual gcbits symbols X-Git-Tag: go1.5beta3~110 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0acecb7164133ee235809d642711b46b340221cb;p=gostls13.git cmd/link: elide individual gcbits symbols Same as we do for string symbols. Fixes #11583. Change-Id: Ia9264f6faf486697d987051b7f9851d37d8ad381 Reviewed-on: https://go-review.googlesource.com/12531 Reviewed-by: Josh Bleecher Snyder Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/internal/obj/link.go b/src/cmd/internal/obj/link.go index 24de6ef698..688c2785d1 100644 --- a/src/cmd/internal/obj/link.go +++ b/src/cmd/internal/obj/link.go @@ -337,6 +337,7 @@ const ( SSTRING SGOSTRING SGOFUNC + SGCBITS SRODATA SFUNCTAB STYPELINK diff --git a/src/cmd/link/internal/ld/dwarf.go b/src/cmd/link/internal/ld/dwarf.go index b8fb2e6b55..41d820dc15 100644 --- a/src/cmd/link/internal/ld/dwarf.go +++ b/src/cmd/link/internal/ld/dwarf.go @@ -1419,6 +1419,9 @@ func defdwsymb(sym *LSym, s string, t int, v int64, size int64, ver int, gotype if strings.HasPrefix(s, "go.string.") { return } + if strings.HasPrefix(s, "runtime.gcbits.") { + return + } if strings.HasPrefix(s, "type.") && s != "type.*" && !strings.HasPrefix(s, "type..") { defgotype(sym) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 1ce0348602..74e4445b86 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1793,6 +1793,7 @@ func genasmsym(put func(*LSym, string, int, int64, int64, int, *LSym)) { obj.SSTRING, obj.SGOSTRING, obj.SGOFUNC, + obj.SGCBITS, obj.SWINDOWS: if !s.Reachable { continue diff --git a/src/cmd/link/internal/ld/symtab.go b/src/cmd/link/internal/ld/symtab.go index 7ceb64f941..5360ec15a1 100644 --- a/src/cmd/link/internal/ld/symtab.go +++ b/src/cmd/link/internal/ld/symtab.go @@ -373,6 +373,13 @@ func symtab() { s.Reachable = true symgofunc := s + s = Linklookup(Ctxt, "runtime.gcbits.*", 0) + s.Type = obj.SGCBITS + s.Local = true + s.Size = 0 + s.Reachable = true + symgcbits := s + symtypelink := Linklookup(Ctxt, "runtime.typelink", 0) symt = Linklookup(Ctxt, "runtime.symtab", 0) @@ -411,6 +418,12 @@ func symtab() { s.Outer = symgostring } + if strings.HasPrefix(s.Name, "runtime.gcbits.") { + s.Type = obj.SGCBITS + s.Hide = 1 + s.Outer = symgcbits + } + if strings.HasPrefix(s.Name, "go.func.") { s.Type = obj.SGOFUNC s.Hide = 1 diff --git a/src/cmd/newlink/testdata/Makefile b/src/cmd/newlink/testdata/Makefile index 83e8a05195..d5df474248 100644 --- a/src/cmd/newlink/testdata/Makefile +++ b/src/cmd/newlink/testdata/Makefile @@ -9,7 +9,7 @@ ALL=\ all: $(ALL) %.6: %.s - GOARCH=amd64 GOOS=darwin go tool asm -I $(shell go env GOROOT)/pkg/include -trimpath=$(shell pwd) $*.s + GOARCH=amd64 GOOS=darwin go tool asm -o $*.6 -I $(shell go env GOROOT)/pkg/include -trimpath=$(shell pwd) $*.s pclntab.s: genpcln.go go run genpcln.go >pclntab.s diff --git a/src/cmd/newlink/testdata/autosection.6 b/src/cmd/newlink/testdata/autosection.6 index 34aa5d3dbb..3681f70db8 100644 Binary files a/src/cmd/newlink/testdata/autosection.6 and b/src/cmd/newlink/testdata/autosection.6 differ diff --git a/src/cmd/newlink/testdata/autoweak.6 b/src/cmd/newlink/testdata/autoweak.6 index a86b841171..99cf465928 100644 Binary files a/src/cmd/newlink/testdata/autoweak.6 and b/src/cmd/newlink/testdata/autoweak.6 differ diff --git a/src/cmd/newlink/testdata/dead.6 b/src/cmd/newlink/testdata/dead.6 index 5e9b09c03e..5b17ef1adb 100644 Binary files a/src/cmd/newlink/testdata/dead.6 and b/src/cmd/newlink/testdata/dead.6 differ diff --git a/src/cmd/newlink/testdata/hello.6 b/src/cmd/newlink/testdata/hello.6 index 890cbbd016..1f08d2155e 100644 Binary files a/src/cmd/newlink/testdata/hello.6 and b/src/cmd/newlink/testdata/hello.6 differ diff --git a/src/cmd/newlink/testdata/layout.6 b/src/cmd/newlink/testdata/layout.6 index 748c836255..d1669866a4 100644 Binary files a/src/cmd/newlink/testdata/layout.6 and b/src/cmd/newlink/testdata/layout.6 differ diff --git a/src/cmd/newlink/testdata/pclntab.6 b/src/cmd/newlink/testdata/pclntab.6 index 8156698265..dfe53ddc38 100644 Binary files a/src/cmd/newlink/testdata/pclntab.6 and b/src/cmd/newlink/testdata/pclntab.6 differ