]> Cypherpunks repositories - gostls13.git/commitdiff
Revert "[dev.link] cmd/link: stop overwriting symbol types in loadlibfull"
authorCherry Zhang <cherryyz@google.com>
Tue, 28 Apr 2020 14:05:20 +0000 (14:05 +0000)
committerCherry Zhang <cherryyz@google.com>
Tue, 28 Apr 2020 14:15:26 +0000 (14:15 +0000)
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 <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/main.go

index 96e3e8870c11f2148c9f0237022ec2797355d474..a43aff22ee8c36c5475a72679347b4cb8d759b98 100644 (file)
@@ -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.
index 6bcf27421556faf773e48780f0d3fdc2b9db3d87..bbd6f1c66369c9728f5aae4c64cec7fe8492365d 100644 (file)
@@ -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")