]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: remove Unit field from sym.Symbol
authorThan McIntosh <thanm@google.com>
Mon, 27 Apr 2020 17:21:48 +0000 (13:21 -0400)
committerThan McIntosh <thanm@google.com>
Tue, 28 Apr 2020 18:59:09 +0000 (18:59 +0000)
Remove sym.Symbol 'Unit' field, replacing accesses to the field with
calls into the loader instead.

Change-Id: Ia1abd4c3d93036705dd624a49cb3d9cbe6a5188b
Reviewed-on: https://go-review.googlesource.com/c/go/+/230307
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
src/cmd/link/internal/ld/data2.go
src/cmd/link/internal/loader/loader.go
src/cmd/link/internal/sym/sizeof_test.go
src/cmd/link/internal/sym/symbol.go

index 2aba40c231e547bb578467d415f1d07169d081f5..b9c8cd83dead07190fa37aa0f54aad37cecfefbe 100644 (file)
@@ -324,7 +324,8 @@ func relocsym2(target *Target, ldr *loader.Loader, err *ErrorReporter, syms *Arc
                case objabi.R_ADDRCUOFF:
                        // debug_range and debug_loc elements use this relocation type to get an
                        // offset from the start of the compile unit.
-                       o = Symaddr(r.Sym) + r.Add - Symaddr(ldr.Syms[r.Sym.Unit.Textp2[0]])
+                       u := ldr.SymUnit(loader.Sym(r.Sym.SymIdx))
+                       o = Symaddr(r.Sym) + r.Add - Symaddr(ldr.Syms[u.Textp2[0]])
 
                        // r->sym can be null when CALL $(constant) is transformed from absolute PC to relative PC call.
                case objabi.R_GOTPCREL:
@@ -482,4 +483,3 @@ func relocsym2(target *Target, ldr *loader.Loader, err *ErrorReporter, syms *Arc
                }
        }
 }
-
index 1c687ee3e29af3ae89110ee92e2c21a69c321bbb..fb792ac059a628d921bb61b084be890905970e72 100644 (file)
@@ -2307,7 +2307,6 @@ func (l *Loader) addNewSym(i Sym, name string, ver int, unit *sym.CompilationUni
                t = s.Type
        }
        s.Type = t
-       s.Unit = unit
        l.growSyms(int(i))
        l.installSym(i, s)
        return s
index e05e2a003235ac88d80364d0d1a262a5b09f7d82..d7db7f1daaaa91c31edb8aabbb6130422f93d6d9 100644 (file)
@@ -21,7 +21,7 @@ func TestSizeof(t *testing.T) {
                _32bit uintptr     // size on 32bit platforms
                _64bit uintptr     // size on 64bit platforms
        }{
-               {Symbol{}, 96, 152},
+               {Symbol{}, 92, 144},
        }
 
        for _, tt := range tests {
index 90c6d4c5f3b6250b3a403e18cd1bb7d0cf450025..643c48d5894915a94c2186f50ef7ba1ceff51b78 100644 (file)
@@ -30,7 +30,6 @@ type Symbol struct {
        SymIdx      LoaderSym
        auxinfo     *AuxSymbol
        Sect        *Section
-       Unit        *CompilationUnit
        // P contains the raw symbol data.
        P []byte
        R []Reloc