From 9c5cae08928a885616f54d8df50a43713b95db7a Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Tue, 9 Aug 2022 22:41:06 +0700 Subject: [PATCH] debug/gosym: fix missing symbol version for 1.2+ pclntab Updates #37762 Change-Id: Ib587f472304a04ebd9794666228f81ae6cb5c2a3 Reviewed-on: https://go-review.googlesource.com/c/go/+/422315 Auto-Submit: Cuong Manh Le Run-TryBot: Cuong Manh Le TryBot-Result: Gopher Robot Reviewed-by: Cherry Mui Reviewed-by: Than McIntosh --- src/debug/gosym/pclntab.go | 11 ++++++----- src/debug/gosym/pclntab_test.go | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/debug/gosym/pclntab.go b/src/debug/gosym/pclntab.go index 1aed5ed7e7..5832ded6ea 100644 --- a/src/debug/gosym/pclntab.go +++ b/src/debug/gosym/pclntab.go @@ -312,11 +312,12 @@ func (t *LineTable) go12Funcs() []Func { f.LineTable = t f.FrameSize = int(info.deferreturn()) syms[i] = Sym{ - Value: f.Entry, - Type: 'T', - Name: t.funcName(info.nameoff()), - GoType: 0, - Func: f, + Value: f.Entry, + Type: 'T', + Name: t.funcName(info.nameoff()), + GoType: 0, + Func: f, + goVersion: t.version, } f.Sym = &syms[i] } diff --git a/src/debug/gosym/pclntab_test.go b/src/debug/gosym/pclntab_test.go index 04b5fcc283..e380bb5ad7 100644 --- a/src/debug/gosym/pclntab_test.go +++ b/src/debug/gosym/pclntab_test.go @@ -268,6 +268,20 @@ func TestPCLine(t *testing.T) { } } +func TestSymVersion(t *testing.T) { + skipIfNotELF(t) + + table := getTable(t) + if table.go12line == nil { + t.Skip("not relevant to Go 1.2+ symbol table") + } + for _, fn := range table.Funcs { + if fn.goVersion == verUnknown { + t.Fatalf("unexpected symbol version: %v", fn) + } + } +} + // read115Executable returns a hello world executable compiled by Go 1.15. // // The file was compiled in /tmp/hello.go: -- 2.50.0