From 0acecb7164133ee235809d642711b46b340221cb Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 22 Jul 2015 14:59:56 -0400 Subject: [PATCH] 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 --- src/cmd/internal/obj/link.go | 1 + src/cmd/link/internal/ld/dwarf.go | 3 +++ src/cmd/link/internal/ld/lib.go | 1 + src/cmd/link/internal/ld/symtab.go | 13 +++++++++++++ src/cmd/newlink/testdata/Makefile | 2 +- src/cmd/newlink/testdata/autosection.6 | Bin 937 -> 897 bytes src/cmd/newlink/testdata/autoweak.6 | Bin 386 -> 346 bytes src/cmd/newlink/testdata/dead.6 | Bin 849 -> 809 bytes src/cmd/newlink/testdata/hello.6 | Bin 229 -> 189 bytes src/cmd/newlink/testdata/layout.6 | Bin 396 -> 356 bytes src/cmd/newlink/testdata/pclntab.6 | Bin 3804 -> 3764 bytes 11 files changed, 19 insertions(+), 1 deletion(-) 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 34aa5d3dbbc9219f9866cc7b0f1933dcc8c1024e..3681f70db8d04528f734877f485a91960278e902 100644 GIT binary patch delta 124 zcmZ3<-pD>dW}-{Ek{(A@YEeD|g8%~%{4)>&@$&KuN{Sd56u?4y8}BwUdF%1z<>x_E qaxgG(FhW#IKn0;1fMy6Vfn-47pB`UgX$iz6u)zQS>G_7nIVk`eav*~M delta 141 zcmZo XbodfWOCUNxq7484r{^0Q=cE7trxqij diff --git a/src/cmd/newlink/testdata/autoweak.6 b/src/cmd/newlink/testdata/autoweak.6 index a86b84117137d7a564acb97639707304ac1f06db..99cf465928063a6a915efb4db536b9c56e79c236 100644 GIT binary patch delta 69 zcmZo-zQr^_W}-_8qu#`wlg;$liYs#&7?>D<;GZ5}N@`*Xia=s%Nq#{|5l9*c{{K(U JH#E*k0RXe+6Py45 delta 110 zcmcb`)WkeNMngf{*eEf@$ii5`H$P9ov7ku7$Uwo+(#qJv%D@cBHZ)bxHZ(FYm?%@i ws55cmWHTMM;>uhG1||j|_@~2{lA4%;B9K^Gl3!3#1d;}V|NqnT4UKbB0QeLfQUCw| diff --git a/src/cmd/newlink/testdata/dead.6 b/src/cmd/newlink/testdata/dead.6 index 5e9b09c03ee8598c6dd63b0f2efc0e512fe3798e..5b17ef1adb8ccbe8a482b46875f8ebfa6d2a4e02 100644 GIT binary patch delta 141 zcmcb}wvugv%tjX>CPux<;Y?PBdR!@qC5c813``6_@DIW@hI0kdO7oIIDi|09APOcQ iV)As;6G=%;Oo>O;iV#ESmjbIpGvxpO^n63(oD=}du_XHd delta 157 zcmZ3Z+@PFV?mLEk%5AtrIoRTm4O+MZD^{XZD?d*uu(>c ziBV^=K9iN94p&NINum)00}}%f{DW|f;aq{V(!6Al3I+xNh=R$pm^?LgL{d@{Q{qvz NBE%5-C-X4N0sv)vB)$Lu diff --git a/src/cmd/newlink/testdata/hello.6 b/src/cmd/newlink/testdata/hello.6 index 890cbbd016f76da8ddd5504d6ee9f947d7db038f..1f08d2155eec7afe079e143ee53c45f0d5fd5c40 100644 GIT binary patch delta 14 VcmaFLxR-H)%tV)ZM!ktg6agul1xf$_ delta 55 zcmdnX_>^&ijD~`?u~A}*k%h5>Z+@PFV?mLEk%5AtrIoRTm4O+MZD^{XZD?d*Fj1zS JQD@>DMF5xb4h8@K diff --git a/src/cmd/newlink/testdata/layout.6 b/src/cmd/newlink/testdata/layout.6 index 748c836255cb0d3494e835da9cdc1e9ec838f3d5..d1669866a4976400f78effb9de09191f4630d832 100644 GIT binary patch delta 84 zcmeBSe!?_CW}?eQNdb|f{FKC!#Q5UMTm}XXAYxG35M7sEAx J6&End006M36s!OM delta 95 zcmaFD)WbYMMngf{*eEf@$ii5`H$P9ov7ku7$Uwo+(#qJv%D@cBHZ)bxHZ(FYm?(3R wk#FKVadthay!?WaqKO|x7rfl*E!m0|o{K1|ax{5HiFRGJ*>I|DT?3Xq=M*07Y>X An*aa+ delta 95 zcmdlYdq;MHjD~`?u~A}*k%h5>Z+@PFV?mLEk%5AtrIoRTm4O+MZD^{XZD?d*uu&$0 hPhCeStu!w=C9x#YfPq1Q0SNvfgbd+AlV|fu0sxtu7zF?T -- 2.48.1