From c6fea80b9582d7c4f86bf88b404ac6ebb33359fd Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Thu, 26 Dec 2019 13:39:04 -0500 Subject: [PATCH] [dev.link] cmd/link: add SymVersion loader method Add a loader method to retrieve the version from a loader.Sym (useful mainly for debugging at the moment). Change-Id: I82e0e316bb86eb41b9cf366e656a0f848cf3424e Reviewed-on: https://go-review.googlesource.com/c/go/+/212617 Reviewed-by: Jeremy Faller Reviewed-by: Cherry Zhang --- src/cmd/link/internal/loader/loader.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index f774c0c8dd..029e10feda 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -607,6 +607,21 @@ func (l *Loader) SymName(i Sym) string { return strings.Replace(osym.Name, "\"\".", r.pkgprefix, -1) } +// Returns the version of the i-th symbol. +func (l *Loader) SymVersion(i Sym) int { + if l.IsExternal(i) { + if s := l.Syms[i]; s != nil { + return int(s.Version) + } + pp := l.getPayload(i) + return pp.ver + } + r, li := l.toLocal(i) + osym := goobj2.Sym{} + osym.Read(r.Reader, r.SymOff(li)) + return int(abiToVer(osym.ABI, r.version)) +} + // Returns the type of the i-th symbol. func (l *Loader) SymType(i Sym) sym.SymKind { if l.IsExternal(i) { -- 2.48.1