diff options
| author | David Crawshaw <crawshaw@golang.org> | 2017-10-13 12:41:09 -0400 |
|---|---|---|
| committer | David Crawshaw <crawshaw@golang.org> | 2017-10-13 17:48:54 +0000 |
| commit | 350b74bc4b9f37ba29ef02c2f89d687ae8563a05 (patch) | |
| tree | 86169a25f69259eeca6e410ccc4f4942c68be42a /src | |
| parent | 0e4de78d132677268d307f307c33831e17703195 (diff) | |
| download | go-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.go | 6 |
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 |
