aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/objfile.go
diff options
context:
space:
mode:
authorMichael Hudson-Doyle <michael.hudson@canonical.com>2015-04-18 08:14:08 +1200
committerIan Lance Taylor <iant@golang.org>2015-04-24 16:19:41 +0000
commit029c7bbdfeeccd537a78796f5095157b6eb5f454 (patch)
treedd0f6fc2646fcc7cdbb109e8a03741cba4b8a3dc /src/cmd/internal/obj/objfile.go
parent0e6a6c510f870709ac7bba8470bed7f862f579b1 (diff)
downloadgo-029c7bbdfeeccd537a78796f5095157b6eb5f454.tar.xz
cmd/internal/gc, cmd/internal/ld, cmd/internal/obj: teach compiler about local symbols
This lets us avoid loading string constants via the GOT and (together with http://golang.org/cl/9102) results in the fannkuch benchmark having very similar register usage with -dynlink as without. Change-Id: Ic3892b399074982b76773c3e547cfbba5dabb6f9 Reviewed-on: https://go-review.googlesource.com/9103 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/objfile.go')
-rw-r--r--src/cmd/internal/obj/objfile.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go
index 62426a5d73..473a4bffe2 100644
--- a/src/cmd/internal/obj/objfile.go
+++ b/src/cmd/internal/obj/objfile.go
@@ -400,7 +400,11 @@ func writesym(ctxt *Link, b *Biobuf, s *LSym) {
wrint(b, int64(s.Type))
wrstring(b, s.Name)
wrint(b, int64(s.Version))
- wrint(b, int64(s.Dupok))
+ flags := int64(s.Dupok)
+ if s.Local {
+ flags |= 2
+ }
+ wrint(b, flags)
wrint(b, s.Size)
wrsym(b, s.Gotype)
wrdata(b, s.P)