From: Than McIntosh Date: Mon, 27 Apr 2020 17:21:48 +0000 (-0400) Subject: [dev.link] cmd/link: remove Unit field from sym.Symbol X-Git-Tag: go1.15beta1~270^2^2~3 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3f408fc7fdc8156f04414b529b9194f868485c8a;p=gostls13.git [dev.link] cmd/link: remove Unit field from sym.Symbol 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 Reviewed-by: Jeremy Faller --- diff --git a/src/cmd/link/internal/ld/data2.go b/src/cmd/link/internal/ld/data2.go index 2aba40c231..b9c8cd83de 100644 --- a/src/cmd/link/internal/ld/data2.go +++ b/src/cmd/link/internal/ld/data2.go @@ -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 } } } - diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 1c687ee3e2..fb792ac059 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -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 diff --git a/src/cmd/link/internal/sym/sizeof_test.go b/src/cmd/link/internal/sym/sizeof_test.go index e05e2a0032..d7db7f1daa 100644 --- a/src/cmd/link/internal/sym/sizeof_test.go +++ b/src/cmd/link/internal/sym/sizeof_test.go @@ -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 { diff --git a/src/cmd/link/internal/sym/symbol.go b/src/cmd/link/internal/sym/symbol.go index 90c6d4c5f3..643c48d589 100644 --- a/src/cmd/link/internal/sym/symbol.go +++ b/src/cmd/link/internal/sym/symbol.go @@ -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