aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal/loader
diff options
context:
space:
mode:
authorJeremy Faller <jeremy@golang.org>2020-02-12 17:20:00 -0500
committerJeremy Faller <jeremy@golang.org>2020-02-18 15:29:12 +0000
commit860f12a2fc3c12f68ded0044a34fe76441914b78 (patch)
treefe2a919e8c856692c62f73e7926a43c6e9c511bf /src/cmd/link/internal/loader
parent112a7cb82ca26f9705480087afcf00349d19928e (diff)
downloadgo-860f12a2fc3c12f68ded0044a34fe76441914b78.tar.xz
[dev.link] cmd/link: dostrdata and fieldtrack with new syms
Move the wavefront past fieldtrack and dostrdata. Change-Id: Ia327ece0202e24031fec7e1f70b40e15fbb4f728 Reviewed-on: https://go-review.googlesource.com/c/go/+/219226 Run-TryBot: Jeremy Faller <jeremy@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/link/internal/loader')
-rw-r--r--src/cmd/link/internal/loader/loader.go10
-rw-r--r--src/cmd/link/internal/loader/symbolbuilder.go6
2 files changed, 14 insertions, 2 deletions
diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go
index 1dcbf503c9..04bd2e8a94 100644
--- a/src/cmd/link/internal/loader/loader.go
+++ b/src/cmd/link/internal/loader/loader.go
@@ -423,7 +423,6 @@ func (l *Loader) IsExternal(i Sym) bool {
return l.isExtReader(r)
}
-
func (l *Loader) isExtReader(r *oReader) bool {
return r == l.extReader
}
@@ -1708,7 +1707,7 @@ func (l *Loader) LoadFull(arch *sys.Arch, syms *sym.Symbols) {
// ExtractSymbols grabs the symbols out of the loader for work that hasn't been
// ported to the new symbol type.
-func (l *Loader) ExtractSymbols(syms *sym.Symbols) {
+func (l *Loader) ExtractSymbols(syms *sym.Symbols, rp map[*sym.Symbol]*sym.Symbol) {
// Add symbols to the ctxt.Syms lookup table. This explicitly skips things
// created via loader.Create (marked with versions less than zero), since
// if we tried to add these we'd wind up with collisions. We do, however,
@@ -1731,6 +1730,13 @@ func (l *Loader) ExtractSymbols(syms *sym.Symbols) {
s.Version = int16(anonVerReplacement)
}
}
+
+ for i, s := range l.Reachparent {
+ if i == 0 {
+ continue
+ }
+ rp[l.Syms[i]] = l.Syms[s]
+ }
}
// allocSym allocates a new symbol backing.
diff --git a/src/cmd/link/internal/loader/symbolbuilder.go b/src/cmd/link/internal/loader/symbolbuilder.go
index 6437046bac..cc148945aa 100644
--- a/src/cmd/link/internal/loader/symbolbuilder.go
+++ b/src/cmd/link/internal/loader/symbolbuilder.go
@@ -73,6 +73,7 @@ func (sb *SymbolBuilder) CgoExportDynamic() bool { return sb.l.AttrCgoExportDyna
func (sb *SymbolBuilder) Dynimplib() string { return sb.l.SymDynimplib(sb.symIdx) }
func (sb *SymbolBuilder) Dynimpvers() string { return sb.l.SymDynimpvers(sb.symIdx) }
func (sb *SymbolBuilder) SubSym() Sym { return sb.l.SubSym(sb.symIdx) }
+func (sb *SymbolBuilder) GoType() Sym { return sb.l.SymGoType(sb.symIdx) }
// Setters for symbol properties.
@@ -89,6 +90,11 @@ func (sb *SymbolBuilder) SetDynimplib(value string) { sb.l.SetSymDynimplib(sb.s
func (sb *SymbolBuilder) SetDynimpvers(value string) { sb.l.SetSymDynimpvers(sb.symIdx, value) }
func (sb *SymbolBuilder) SetPlt(value int32) { sb.l.SetPlt(sb.symIdx, value) }
func (sb *SymbolBuilder) SetGot(value int32) { sb.l.SetGot(sb.symIdx, value) }
+func (sb *SymbolBuilder) SetSpecial(value bool) { sb.l.SetAttrSpecial(sb.symIdx, value) }
+
+func (sb *SymbolBuilder) SetNotInSymbolTable(value bool) {
+ sb.l.SetAttrNotInSymbolTable(sb.symIdx, value)
+}
func (sb *SymbolBuilder) AddBytes(data []byte) {
sb.setReachable()