diff options
| author | Russ Cox <rsc@golang.org> | 2015-07-22 14:59:56 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2015-07-22 20:27:24 +0000 |
| commit | 0acecb7164133ee235809d642711b46b340221cb (patch) | |
| tree | 6c9276a6a329098adc2cdbf4d076833f892fda9f /src | |
| parent | 3b26e8b29a488d96ea921839ed22e70d894ebe38 (diff) | |
| download | go-0acecb7164133ee235809d642711b46b340221cb.tar.xz | |
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 <josharian@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/internal/obj/link.go | 1 | ||||
| -rw-r--r-- | src/cmd/link/internal/ld/dwarf.go | 3 | ||||
| -rw-r--r-- | src/cmd/link/internal/ld/lib.go | 1 | ||||
| -rw-r--r-- | src/cmd/link/internal/ld/symtab.go | 13 | ||||
| -rw-r--r-- | src/cmd/newlink/testdata/Makefile | 2 | ||||
| -rw-r--r-- | src/cmd/newlink/testdata/autosection.6 | bin | 937 -> 897 bytes | |||
| -rw-r--r-- | src/cmd/newlink/testdata/autoweak.6 | bin | 386 -> 346 bytes | |||
| -rw-r--r-- | src/cmd/newlink/testdata/dead.6 | bin | 849 -> 809 bytes | |||
| -rw-r--r-- | src/cmd/newlink/testdata/hello.6 | bin | 229 -> 189 bytes | |||
| -rw-r--r-- | src/cmd/newlink/testdata/layout.6 | bin | 396 -> 356 bytes | |||
| -rw-r--r-- | src/cmd/newlink/testdata/pclntab.6 | bin | 3804 -> 3764 bytes |
11 files changed, 19 insertions, 1 deletions
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 Binary files differindex 34aa5d3dbb..3681f70db8 100644 --- a/src/cmd/newlink/testdata/autosection.6 +++ b/src/cmd/newlink/testdata/autosection.6 diff --git a/src/cmd/newlink/testdata/autoweak.6 b/src/cmd/newlink/testdata/autoweak.6 Binary files differindex a86b841171..99cf465928 100644 --- a/src/cmd/newlink/testdata/autoweak.6 +++ b/src/cmd/newlink/testdata/autoweak.6 diff --git a/src/cmd/newlink/testdata/dead.6 b/src/cmd/newlink/testdata/dead.6 Binary files differindex 5e9b09c03e..5b17ef1adb 100644 --- a/src/cmd/newlink/testdata/dead.6 +++ b/src/cmd/newlink/testdata/dead.6 diff --git a/src/cmd/newlink/testdata/hello.6 b/src/cmd/newlink/testdata/hello.6 Binary files differindex 890cbbd016..1f08d2155e 100644 --- a/src/cmd/newlink/testdata/hello.6 +++ b/src/cmd/newlink/testdata/hello.6 diff --git a/src/cmd/newlink/testdata/layout.6 b/src/cmd/newlink/testdata/layout.6 Binary files differindex 748c836255..d1669866a4 100644 --- a/src/cmd/newlink/testdata/layout.6 +++ b/src/cmd/newlink/testdata/layout.6 diff --git a/src/cmd/newlink/testdata/pclntab.6 b/src/cmd/newlink/testdata/pclntab.6 Binary files differindex 8156698265..dfe53ddc38 100644 --- a/src/cmd/newlink/testdata/pclntab.6 +++ b/src/cmd/newlink/testdata/pclntab.6 |
