aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Glines <mark@glines.org>2019-07-31 03:46:15 +0000
committerAndrew Bonventre <andybons@golang.org>2019-08-05 16:26:27 +0000
commit6c74db40247737da2d3c3ffe1871d9cf67afd0a5 (patch)
treee2224e8fec3613835cd937f06d6c6aa304ea59d4
parent09c9d3a58a4aa1531ac516754f65c31aa8418d3f (diff)
downloadgo-6c74db40247737da2d3c3ffe1871d9cf67afd0a5.tar.gz
go-6c74db40247737da2d3c3ffe1871d9cf67afd0a5.zip
cmd/go: look for .go.buildinfo section when looking for ELF version
Based on original fix from Mark Glines in golang.org/cl/186737 Fixes #31861 Change-Id: Ibd583a3aa8f8b8eefade998aa2ac757b55140937 Reviewed-on: https://go-review.googlesource.com/c/go/+/188957 Run-TryBot: Andrew Bonventre <andybons@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-rw-r--r--src/cmd/go/internal/version/exe.go5
-rw-r--r--src/cmd/go/testdata/script/version.txt7
2 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/go/internal/version/exe.go b/src/cmd/go/internal/version/exe.go
index 55da960c02..528433e325 100644
--- a/src/cmd/go/internal/version/exe.go
+++ b/src/cmd/go/internal/version/exe.go
@@ -103,6 +103,11 @@ func (x *elfExe) ReadData(addr, size uint64) ([]byte, error) {
}
func (x *elfExe) DataStart() uint64 {
+ for _, s := range x.f.Sections {
+ if s.Name == ".go.buildinfo" {
+ return s.Addr
+ }
+ }
for _, p := range x.f.Progs {
if p.Type == elf.PT_LOAD && p.Flags&(elf.PF_X|elf.PF_W) == elf.PF_W {
return p.Vaddr
diff --git a/src/cmd/go/testdata/script/version.txt b/src/cmd/go/testdata/script/version.txt
index cb4881f7a7..9086f047e4 100644
--- a/src/cmd/go/testdata/script/version.txt
+++ b/src/cmd/go/testdata/script/version.txt
@@ -8,5 +8,12 @@ go version -m fortune.exe
stdout '^\tpath\trsc.io/fortune'
stdout '^\tmod\trsc.io/fortune\tv1.0.0'
+go build -buildmode=pie -o external.exe rsc.io/fortune
+go version external.exe
+stdout '^external.exe: .+'
+go version -m external.exe
+stdout '^\tpath\trsc.io/fortune'
+stdout '^\tmod\trsc.io/fortune\tv1.0.0'
+
-- go.mod --
module m