aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal/loader/loader.go
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2020-04-27 12:19:57 -0400
committerThan McIntosh <thanm@google.com>2020-04-28 18:54:37 +0000
commit43a85a39bf4204267c20e60c2e32383a0e506347 (patch)
tree000fa98f7cbd5a792b8cb019209f006a4ec2ff2c /src/cmd/link/internal/loader/loader.go
parent0612e78f0f9b5381b8690891a91fd05b450a0a91 (diff)
downloadgo-43a85a39bf4204267c20e60c2e32383a0e506347.tar.gz
go-43a85a39bf4204267c20e60c2e32383a0e506347.zip
[dev.link] cmd/link: remove Gotype and File fields from sym.Symbol
Remove the 'Gotype' field from sym.Symbol, as it is now no longer used. Store the loader.Sym for a symbol as a field in sym.Symbol ("SymIdx"). Then remove sym.Symbol 'File' field, and replace the field accesses in question with calls into the loader instead. Change-Id: I01c5504425006b8d3fe77fac2b69a86e198c7a5a Reviewed-on: https://go-review.googlesource.com/c/go/+/230304 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org>
Diffstat (limited to 'src/cmd/link/internal/loader/loader.go')
-rw-r--r--src/cmd/link/internal/loader/loader.go39
1 files changed, 3 insertions, 36 deletions
diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go
index 1af771e970..2e4f5de0ee 100644
--- a/src/cmd/link/internal/loader/loader.go
+++ b/src/cmd/link/internal/loader/loader.go
@@ -1992,14 +1992,6 @@ func (l *Loader) LoadFull(arch *sys.Arch, syms *sym.Symbols) {
s.Version = int16(pp.ver)
s.Type = pp.kind
s.Size = pp.size
- if pp.gotype != 0 {
- s.Gotype = l.Syms[pp.gotype]
- }
- if f, ok := l.symPkg[i]; ok {
- s.File = f
- } else if pp.objidx != 0 {
- s.File = l.objs[pp.objidx].r.unit.Lib.Pkg
- }
// Copy relocations
batch := l.relocBatch
@@ -2161,22 +2153,7 @@ func (l *Loader) PropagateLoaderChangesToSymbols(toconvert []Sym, anonVerReplace
relfix = true
}
- // For 'new' symbols, copy other content (such as Gotype,
- // sym file, relocations, etc).
- if isnew {
- if gt := l.SymGoType(cand); gt != 0 {
- s.Gotype = l.Syms[gt]
- }
- if f, ok := l.symPkg[cand]; ok {
- s.File = f
- } else {
- r, _ := l.toLocal(cand)
- if r != nil && r != l.extReader {
- s.File = l.SymPkg(cand)
- }
- }
- }
-
+ // For 'new' symbols, copy other content.
if relfix {
relocfixup = append(relocfixup, cand)
}
@@ -2276,6 +2253,7 @@ func (l *Loader) installSym(i Sym, s *sym.Symbol) {
panic("sym already present in installSym")
}
l.Syms[i] = s
+ s.SymIdx = sym.LoaderSym(i)
}
// addNewSym adds a new sym.Symbol to the i-th index in the list of symbols.
@@ -2554,11 +2532,6 @@ func (l *Loader) CreateStaticSym(name string) Sym {
}
func loadObjFull(l *Loader, r *oReader) {
- resolveSymRef := func(s goobj2.SymRef) *sym.Symbol {
- i := l.resolve(r, s)
- return l.Syms[i]
- }
-
for i, n := 0, r.NSym()+r.NNonpkgdef(); i < n; i++ {
// A symbol may be a dup or overwritten. In this case, its
// content will actually be provided by a different object
@@ -2595,12 +2568,7 @@ func loadObjFull(l *Loader, r *oReader) {
for j := range auxs {
a := &auxs[j]
switch a.Type() {
- case goobj2.AuxGotype:
- typ := resolveSymRef(a.Sym())
- if typ != nil {
- s.Gotype = typ
- }
- case goobj2.AuxFuncInfo, goobj2.AuxFuncdata:
+ case goobj2.AuxFuncInfo, goobj2.AuxFuncdata, goobj2.AuxGotype:
// already handled
case goobj2.AuxDwarfInfo, goobj2.AuxDwarfLoc, goobj2.AuxDwarfRanges, goobj2.AuxDwarfLines:
// ignored for now
@@ -2609,7 +2577,6 @@ func loadObjFull(l *Loader, r *oReader) {
}
}
- s.File = r.pkgprefix[:len(r.pkgprefix)-1]
if s.Size < int64(size) {
s.Size = int64(size)
}