aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Crawshaw <crawshaw@golang.org>2017-10-13 12:41:09 -0400
committerDavid Crawshaw <crawshaw@golang.org>2017-10-13 17:48:54 +0000
commit350b74bc4b9f37ba29ef02c2f89d687ae8563a05 (patch)
tree86169a25f69259eeca6e410ccc4f4942c68be42a /src
parent0e4de78d132677268d307f307c33831e17703195 (diff)
downloadgo-350b74bc4b9f37ba29ef02c2f89d687ae8563a05.tar.xz
cmd/link: zero symtab fields correctly
CL 69370 introduced a hasmain field to moduledata after the modulehashes slice. However that code was relying on the zeroing code after it to cover modulehashes if len(Shlibs) == 0. The hasmain field gets in the way of that. So clear modulehashes explicitly in that case. Found when looking at #22250. Not sure if it's related. Change-Id: I81050cb4554cd49e9f245d261ef422f97d026df4 Reviewed-on: https://go-review.googlesource.com/70730 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/link/internal/ld/symtab.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/link/internal/ld/symtab.go b/src/cmd/link/internal/ld/symtab.go
index c77298e870..5adce1530b 100644
--- a/src/cmd/link/internal/ld/symtab.go
+++ b/src/cmd/link/internal/ld/symtab.go
@@ -639,6 +639,12 @@ func (ctxt *Link) symtab() {
moduledata.AddAddr(ctxt.Arch, modulehashes)
moduledata.AddUint(ctxt.Arch, uint64(len(ctxt.Shlibs)))
moduledata.AddUint(ctxt.Arch, uint64(len(ctxt.Shlibs)))
+ } else {
+ moduledata.AddUint(ctxt.Arch, 0) // modulename
+ moduledata.AddUint(ctxt.Arch, 0)
+ moduledata.AddUint(ctxt.Arch, 0) // moduleshashes slice
+ moduledata.AddUint(ctxt.Arch, 0)
+ moduledata.AddUint(ctxt.Arch, 0)
}
hasmain := ctxt.BuildMode == BuildModeExe || ctxt.BuildMode == BuildModePIE