aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-07-22 14:59:56 -0400
committerRuss Cox <rsc@golang.org>2015-07-22 20:27:24 +0000
commit0acecb7164133ee235809d642711b46b340221cb (patch)
tree6c9276a6a329098adc2cdbf4d076833f892fda9f /src
parent3b26e8b29a488d96ea921839ed22e70d894ebe38 (diff)
downloadgo-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.go1
-rw-r--r--src/cmd/link/internal/ld/dwarf.go3
-rw-r--r--src/cmd/link/internal/ld/lib.go1
-rw-r--r--src/cmd/link/internal/ld/symtab.go13
-rw-r--r--src/cmd/newlink/testdata/Makefile2
-rw-r--r--src/cmd/newlink/testdata/autosection.6bin937 -> 897 bytes
-rw-r--r--src/cmd/newlink/testdata/autoweak.6bin386 -> 346 bytes
-rw-r--r--src/cmd/newlink/testdata/dead.6bin849 -> 809 bytes
-rw-r--r--src/cmd/newlink/testdata/hello.6bin229 -> 189 bytes
-rw-r--r--src/cmd/newlink/testdata/layout.6bin396 -> 356 bytes
-rw-r--r--src/cmd/newlink/testdata/pclntab.6bin3804 -> 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
index 34aa5d3dbb..3681f70db8 100644
--- a/src/cmd/newlink/testdata/autosection.6
+++ b/src/cmd/newlink/testdata/autosection.6
Binary files differ
diff --git a/src/cmd/newlink/testdata/autoweak.6 b/src/cmd/newlink/testdata/autoweak.6
index a86b841171..99cf465928 100644
--- a/src/cmd/newlink/testdata/autoweak.6
+++ b/src/cmd/newlink/testdata/autoweak.6
Binary files differ
diff --git a/src/cmd/newlink/testdata/dead.6 b/src/cmd/newlink/testdata/dead.6
index 5e9b09c03e..5b17ef1adb 100644
--- a/src/cmd/newlink/testdata/dead.6
+++ b/src/cmd/newlink/testdata/dead.6
Binary files differ
diff --git a/src/cmd/newlink/testdata/hello.6 b/src/cmd/newlink/testdata/hello.6
index 890cbbd016..1f08d2155e 100644
--- a/src/cmd/newlink/testdata/hello.6
+++ b/src/cmd/newlink/testdata/hello.6
Binary files differ
diff --git a/src/cmd/newlink/testdata/layout.6 b/src/cmd/newlink/testdata/layout.6
index 748c836255..d1669866a4 100644
--- a/src/cmd/newlink/testdata/layout.6
+++ b/src/cmd/newlink/testdata/layout.6
Binary files differ
diff --git a/src/cmd/newlink/testdata/pclntab.6 b/src/cmd/newlink/testdata/pclntab.6
index 8156698265..dfe53ddc38 100644
--- a/src/cmd/newlink/testdata/pclntab.6
+++ b/src/cmd/newlink/testdata/pclntab.6
Binary files differ