From b85a03ccc20e446f89d7e32e98c71f5e66393b0c Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 28 Apr 2020 14:05:20 +0000 Subject: [PATCH] Revert "[dev.link] cmd/link: stop overwriting symbol types in loadlibfull" This reverts CL 229994. Reason for revert: break AIX build. This is nice to have but isn't critical. We can revisit later. Change-Id: Ifc56a0a4c0fb36859cf7666ab149e25e0e5d4cc0 Reviewed-on: https://go-review.googlesource.com/c/go/+/230459 Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh --- src/cmd/link/internal/ld/lib.go | 16 +++++++++++++++- src/cmd/link/internal/ld/main.go | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 96e3e8870c..a43aff22ee 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -2824,7 +2824,7 @@ func addToTextp(ctxt *Link) { ctxt.Textp = textp } -func (ctxt *Link) loadlibfull() { +func (ctxt *Link) loadlibfull(symGroupType []sym.SymKind) { // Load full symbol contents, resolve indexed references. ctxt.loader.LoadFull(ctxt.Arch, ctxt.Syms) @@ -2890,6 +2890,20 @@ func (ctxt *Link) loadlibfull() { } } + // For now, overwrite symbol type with its "group" type, as dodata + // expected. Once we converted dodata, this will probably not be + // needed. + for i, t := range symGroupType { + if t != sym.Sxxx { + s := ctxt.loader.Syms[i] + if s == nil { + panic(fmt.Sprintf("nil sym for symGroupType t=%s entry %d", t.String(), i)) + } + s.Type = t + } + } + symGroupType = nil + if ctxt.Debugvlog > 1 { // loadlibfull is likely a good place to dump. // Only dump under -v=2 and above. diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go index 6bcf274215..bbd6f1c663 100644 --- a/src/cmd/link/internal/ld/main.go +++ b/src/cmd/link/internal/ld/main.go @@ -301,7 +301,7 @@ func Main(arch *sys.Arch, theArch Arch) { bench.Start("dodata") ctxt.dodata2(symGroupType) bench.Start("loadlibfull") - ctxt.loadlibfull() // XXX do it here for now + ctxt.loadlibfull(symGroupType) // XXX do it here for now bench.Start("address") order := ctxt.address() bench.Start("dwarfcompress")