diff options
| author | Cherry Zhang <cherryyz@google.com> | 2020-03-24 12:08:36 -0400 |
|---|---|---|
| committer | Cherry Zhang <cherryyz@google.com> | 2020-03-25 15:20:40 +0000 |
| commit | b1a19f3cc73878ab312d103de87f87d71790190f (patch) | |
| tree | 05495dae864b31abaeba1c9c3d67d812530f3121 /src/cmd/link/internal/loader | |
| parent | 651e950fc9416f934dbfcdad312e699a65bed4c5 (diff) | |
| download | go-b1a19f3cc73878ab312d103de87f87d71790190f.tar.xz | |
[dev.link] cmd/link: convert doxcoff to new style
Change-Id: Ic1e4ed6c14e049b1ba2f7c00f986433ab7ebe932
Reviewed-on: https://go-review.googlesource.com/c/go/+/225202
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/cmd/link/internal/loader')
| -rw-r--r-- | src/cmd/link/internal/loader/loader.go | 16 | ||||
| -rw-r--r-- | src/cmd/link/internal/loader/loader_test.go | 4 | ||||
| -rw-r--r-- | src/cmd/link/internal/loader/symbolbuilder.go | 10 |
3 files changed, 24 insertions, 6 deletions
diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 03c64839be..7e8469f501 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -904,6 +904,10 @@ func (l *Loader) SetAttrCgoExportStatic(i Sym, v bool) { } } +func (l *Loader) AttrCgoExport(i Sym) bool { + return l.AttrCgoExportDynamic(i) || l.AttrCgoExportStatic(i) +} + // AttrReadOnly returns true for a symbol whose underlying data // is stored via a read-only mmap. func (l *Loader) AttrReadOnly(i Sym) bool { @@ -2351,8 +2355,8 @@ func (l *Loader) migrateAttributes(src Sym, dst *sym.Symbol) { dst.Attr.Set(sym.AttrSubSymbol, dst.Outer != nil) // Copy over dynimplib, dynimpvers, extname. - if l.SymExtname(src) != "" { - dst.SetExtname(l.SymExtname(src)) + if name, ok := l.extname[src]; ok { + dst.SetExtname(name) } if l.SymDynimplib(src) != "" { dst.SetDynimplib(l.SymDynimplib(src)) @@ -2377,7 +2381,13 @@ func (l *Loader) migrateAttributes(src Sym, dst *sym.Symbol) { // CreateExtSym creates a new external symbol with the specified name // without adding it to any lookup tables, returning a Sym index for it. -func (l *Loader) CreateExtSym(name string) Sym { +func (l *Loader) CreateExtSym(name string, ver int) Sym { + return l.newExtSym(name, ver) +} + +// CreateStaticSym creates a new static symbol with the specified name +// without adding it to any lookup tables, returning a Sym index for it. +func (l *Loader) CreateStaticSym(name string) Sym { // Assign a new unique negative version -- this is to mark the // symbol so that it can be skipped when ExtractSymbols is adding // ext syms to the sym.Symbols hash. diff --git a/src/cmd/link/internal/loader/loader_test.go b/src/cmd/link/internal/loader/loader_test.go index fba4bf8848..b384c752f4 100644 --- a/src/cmd/link/internal/loader/loader_test.go +++ b/src/cmd/link/internal/loader/loader_test.go @@ -52,9 +52,9 @@ func TestAddMaterializedSymbol(t *testing.T) { t.Fatalf("LookupOrCreateSym failed for go.info.type.uint8") } // Create a nameless symbol - es3 := ldr.CreateExtSym("") + es3 := ldr.CreateStaticSym("") if es3 == 0 { - t.Fatalf("CreateExtSym failed for nameless sym") + t.Fatalf("CreateStaticSym failed for nameless sym") } // Grab symbol builder pointers diff --git a/src/cmd/link/internal/loader/symbolbuilder.go b/src/cmd/link/internal/loader/symbolbuilder.go index aeaec8b7b0..c26646cbdb 100644 --- a/src/cmd/link/internal/loader/symbolbuilder.go +++ b/src/cmd/link/internal/loader/symbolbuilder.go @@ -23,7 +23,7 @@ type SymbolBuilder struct { // an entirely new symbol. func (l *Loader) MakeSymbolBuilder(name string) *SymbolBuilder { // for now assume that any new sym is intended to be static - symIdx := l.CreateExtSym(name) + symIdx := l.CreateStaticSym(name) if l.Syms[symIdx] != nil { panic("can't build if sym.Symbol already present") } @@ -86,6 +86,7 @@ func (sb *SymbolBuilder) Dynimplib() string { return sb.l.SymDynimplib(sb.s 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) } +func (sb *SymbolBuilder) VisibilityHidden() bool { return sb.l.AttrVisibilityHidden(sb.symIdx) } // Setters for symbol properties. @@ -103,6 +104,9 @@ func (sb *SymbolBuilder) SetDynimpvers(value string) { sb.l.SetSymDynimpvers(sb. 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) SetVisibilityHidden(value bool) { + sb.l.SetAttrVisibilityHidden(sb.symIdx, value) +} func (sb *SymbolBuilder) SetNotInSymbolTable(value bool) { sb.l.SetAttrNotInSymbolTable(sb.symIdx, value) @@ -314,6 +318,10 @@ func (sb *SymbolBuilder) AddAddrPlus4(arch *sys.Arch, tgt Sym, add int64) int64 return sb.addSymRef(tgt, add, objabi.R_ADDR, 4) } +func (sb *SymbolBuilder) AddAddr(arch *sys.Arch, tgt Sym) int64 { + return sb.AddAddrPlus(arch, tgt, 0) +} + func (sb *SymbolBuilder) AddPCRelPlus(arch *sys.Arch, tgt Sym, add int64) int64 { sb.setReachable() return sb.addSymRef(tgt, add, objabi.R_PCREL, 4) |
