]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: look for .go.buildinfo section when looking for ELF version
authorMark Glines <mark@glines.org>
Wed, 31 Jul 2019 03:46:15 +0000 (03:46 +0000)
committerAndrew Bonventre <andybons@golang.org>
Mon, 5 Aug 2019 16:26:27 +0000 (16:26 +0000)
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>
src/cmd/go/internal/version/exe.go
src/cmd/go/testdata/script/version.txt

index 55da960c025e6168af111c44c09444ce2fbec413..528433e325f015b64bf738cf0cd6710bacd296a5 100644 (file)
@@ -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
index cb4881f7a72ac3f1538bd049b7a99544f5a77c26..9086f047e4bbfbb9eae239df9f298348127edeb7 100644 (file)
@@ -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