]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: zero symtab fields correctly
authorDavid Crawshaw <crawshaw@golang.org>
Fri, 13 Oct 2017 16:41:09 +0000 (12:41 -0400)
committerDavid Crawshaw <crawshaw@golang.org>
Fri, 13 Oct 2017 17:48:54 +0000 (17:48 +0000)
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>
src/cmd/link/internal/ld/symtab.go

index c77298e870cfa343718a6a90b22697de4eb07728..5adce1530b354bc7c189c59fb0b1daaca737fbca 100644 (file)
@@ -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