From 46f99ce7ea97d11b0a1a079da8dda0f51df2a2d2 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Tue, 6 Aug 2019 13:12:23 -0400 Subject: [PATCH] cmd/go: look for __go_buildinfo section when looking for Mach-O version This mirrors the ELF fix in CL 188957. TestScript/version failed on darwin after that change. Fixes #31861 Change-Id: I4ce953ebec8dd5fa47e26d373c59d7e290b75a34 Reviewed-on: https://go-review.googlesource.com/c/go/+/189159 Run-TryBot: Jay Conrod Reviewed-by: Bryan C. Mills TryBot-Result: Gobot Gobot --- src/cmd/go/internal/version/exe.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/internal/version/exe.go b/src/cmd/go/internal/version/exe.go index 528433e325..0e7deef149 100644 --- a/src/cmd/go/internal/version/exe.go +++ b/src/cmd/go/internal/version/exe.go @@ -213,7 +213,13 @@ func (x *machoExe) ReadData(addr, size uint64) ([]byte, error) { } func (x *machoExe) DataStart() uint64 { - // Assume data is first non-empty writable segment. + // Look for section named "__go_buildinfo". + for _, sec := range x.f.Sections { + if sec.Name == "__go_buildinfo" { + return sec.Addr + } + } + // Try the first non-empty writable segment. const RW = 3 for _, load := range x.f.Loads { seg, ok := load.(*macho.Segment)