mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/link: add and use new SymKind SFirstUnallocated
The linker sources in several places used SXREF to mark the first SymKind which is not allocated in memory. This is cryptic. Instead use SFirstUnallocated, following the example of the existing SFirstWritable. Change-Id: If326ad63027402699094bcc49ef860db3772f82a Reviewed-on: https://go-review.googlesource.com/c/go/+/715623 Reviewed-by: Than McIntosh <thanm@golang.org> Auto-Submit: Ian Lance Taylor <iant@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
f5f14262d0
commit
6914dd11c0
7 changed files with 36 additions and 34 deletions
|
|
@ -1628,9 +1628,9 @@ type dodataState struct {
|
|||
// Link context
|
||||
ctxt *Link
|
||||
// Data symbols bucketed by type.
|
||||
data [sym.SXREF][]loader.Sym
|
||||
data [sym.SFirstUnallocated][]loader.Sym
|
||||
// Max alignment for each flavor of data symbol.
|
||||
dataMaxAlign [sym.SXREF]int32
|
||||
dataMaxAlign [sym.SFirstUnallocated]int32
|
||||
// Overridden sym type
|
||||
symGroupType []sym.SymKind
|
||||
// Current data size so far.
|
||||
|
|
@ -1687,7 +1687,7 @@ func (ctxt *Link) dodata(symGroupType []sym.SymKind) {
|
|||
|
||||
st := state.symType(s)
|
||||
|
||||
if st <= sym.STEXTFIPSEND || st >= sym.SXREF {
|
||||
if st <= sym.STEXTEND || st >= sym.SFirstUnallocated {
|
||||
continue
|
||||
}
|
||||
state.data[st] = append(state.data[st], s)
|
||||
|
|
@ -2264,11 +2264,11 @@ func (state *dodataState) allocateDataSections(ctxt *Link) {
|
|||
}
|
||||
|
||||
siz := 0
|
||||
for symn := sym.SELFRXSECT; symn < sym.SXREF; symn++ {
|
||||
for symn := sym.SELFRXSECT; symn < sym.SFirstUnallocated; symn++ {
|
||||
siz += len(state.data[symn])
|
||||
}
|
||||
ctxt.datap = make([]loader.Sym, 0, siz)
|
||||
for symn := sym.SELFRXSECT; symn < sym.SXREF; symn++ {
|
||||
for symn := sym.SELFRXSECT; symn < sym.SFirstUnallocated; symn++ {
|
||||
ctxt.datap = append(ctxt.datap, state.data[symn]...)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -919,7 +919,7 @@ func collectmachosyms(ctxt *Link) {
|
|||
continue
|
||||
}
|
||||
t := ldr.SymType(s)
|
||||
if t >= sym.SELFRXSECT && t < sym.SXREF { // data sections handled in dodata
|
||||
if t >= sym.SELFRXSECT && t < sym.SFirstUnallocated { // data sections handled in dodata
|
||||
if t == sym.STLSBSS {
|
||||
// TLSBSS is not used on darwin. See data.go:allocateDataSections
|
||||
continue
|
||||
|
|
|
|||
|
|
@ -854,7 +854,7 @@ func (f *peFile) writeSymbols(ctxt *Link) {
|
|||
continue
|
||||
}
|
||||
t := ldr.SymType(s)
|
||||
if t >= sym.SELFRXSECT && t < sym.SXREF { // data sections handled in dodata
|
||||
if t >= sym.SELFRXSECT && t < sym.SFirstUnallocated { // data sections handled in dodata
|
||||
if t == sym.STLSBSS {
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ func genelfsym(ctxt *Link, elfbind elf.SymBind) {
|
|||
continue
|
||||
}
|
||||
st := ldr.SymType(s)
|
||||
if st >= sym.SELFRXSECT && st < sym.SXREF {
|
||||
if st >= sym.SELFRXSECT && st < sym.SFirstUnallocated {
|
||||
typ := elf.STT_OBJECT
|
||||
if st == sym.STLSBSS {
|
||||
if ctxt.IsInternal() {
|
||||
|
|
@ -345,7 +345,7 @@ func asmbPlan9Sym(ctxt *Link) {
|
|||
continue
|
||||
}
|
||||
t := ldr.SymType(s)
|
||||
if t >= sym.SELFRXSECT && t < sym.SXREF { // data sections handled in dodata
|
||||
if t >= sym.SELFRXSECT && t < sym.SFirstUnallocated { // data sections handled in dodata
|
||||
if t == sym.STLSBSS {
|
||||
continue
|
||||
}
|
||||
|
|
@ -843,7 +843,7 @@ func (ctxt *Link) symtab(pcln *pclntab) []sym.SymKind {
|
|||
}
|
||||
|
||||
// CarrierSymByType tracks carrier symbols and their sizes.
|
||||
var CarrierSymByType [sym.SXREF]struct {
|
||||
var CarrierSymByType [sym.SFirstUnallocated]struct {
|
||||
Sym loader.Sym
|
||||
Size int64
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1121,7 +1121,7 @@ func (f *xcoffFile) asmaixsym(ctxt *Link) {
|
|||
putaixsym(ctxt, s, BSSSym)
|
||||
}
|
||||
|
||||
case st >= sym.SELFRXSECT && st < sym.SXREF: // data sections handled in dodata
|
||||
case st >= sym.SELFRXSECT && st < sym.SFirstUnallocated: // data sections handled in dodata
|
||||
if ldr.AttrReachable(s) {
|
||||
putaixsym(ctxt, s, DataSym)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ const (
|
|||
STLSBSS // Thread-local zeroed data.
|
||||
|
||||
// Unallocated segment.
|
||||
SFirstUnallocated
|
||||
SXREF // Reference from non-Go object file.
|
||||
SMACHOSYMSTR // Mach-O string table.
|
||||
SMACHOSYMTAB // Mach-O symbol table.
|
||||
|
|
|
|||
|
|
@ -67,32 +67,33 @@ func _() {
|
|||
_ = x[SCOVERAGE_COUNTER-56]
|
||||
_ = x[SCOVERAGE_AUXVAR-57]
|
||||
_ = x[STLSBSS-58]
|
||||
_ = x[SXREF-59]
|
||||
_ = x[SMACHOSYMSTR-60]
|
||||
_ = x[SMACHOSYMTAB-61]
|
||||
_ = x[SMACHOINDIRECTPLT-62]
|
||||
_ = x[SMACHOINDIRECTGOT-63]
|
||||
_ = x[SDYNIMPORT-64]
|
||||
_ = x[SHOSTOBJ-65]
|
||||
_ = x[SUNDEFEXT-66]
|
||||
_ = x[SDWARFSECT-67]
|
||||
_ = x[SDWARFCUINFO-68]
|
||||
_ = x[SDWARFCONST-69]
|
||||
_ = x[SDWARFFCN-70]
|
||||
_ = x[SDWARFABSFCN-71]
|
||||
_ = x[SDWARFTYPE-72]
|
||||
_ = x[SDWARFVAR-73]
|
||||
_ = x[SDWARFRANGE-74]
|
||||
_ = x[SDWARFLOC-75]
|
||||
_ = x[SDWARFLINES-76]
|
||||
_ = x[SDWARFADDR-77]
|
||||
_ = x[SSEHUNWINDINFO-78]
|
||||
_ = x[SSEHSECT-79]
|
||||
_ = x[SFirstUnallocated-59]
|
||||
_ = x[SXREF-60]
|
||||
_ = x[SMACHOSYMSTR-61]
|
||||
_ = x[SMACHOSYMTAB-62]
|
||||
_ = x[SMACHOINDIRECTPLT-63]
|
||||
_ = x[SMACHOINDIRECTGOT-64]
|
||||
_ = x[SDYNIMPORT-65]
|
||||
_ = x[SHOSTOBJ-66]
|
||||
_ = x[SUNDEFEXT-67]
|
||||
_ = x[SDWARFSECT-68]
|
||||
_ = x[SDWARFCUINFO-69]
|
||||
_ = x[SDWARFCONST-70]
|
||||
_ = x[SDWARFFCN-71]
|
||||
_ = x[SDWARFABSFCN-72]
|
||||
_ = x[SDWARFTYPE-73]
|
||||
_ = x[SDWARFVAR-74]
|
||||
_ = x[SDWARFRANGE-75]
|
||||
_ = x[SDWARFLOC-76]
|
||||
_ = x[SDWARFLINES-77]
|
||||
_ = x[SDWARFADDR-78]
|
||||
_ = x[SSEHUNWINDINFO-79]
|
||||
_ = x[SSEHSECT-80]
|
||||
}
|
||||
|
||||
const _SymKind_name = "SxxxSTEXTSTEXTFIPSSTARTSTEXTFIPSSTEXTFIPSENDSTEXTENDSELFRXSECTSMACHOPLTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASRODATAFIPSSTARTSRODATAFIPSSRODATAFIPSENDSRODATAENDSFUNCTABSELFROSECTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSELFRELROSECTSMACHORELROSECTSTYPELINKSITABLINKSSYMTABSPCLNTABSFirstWritableSBUILDINFOSFIPSINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASNOPTRDATAFIPSSTARTSNOPTRDATAFIPSSNOPTRDATAFIPSENDSNOPTRDATAENDSINITARRSDATASDATAFIPSSTARTSDATAFIPSSDATAFIPSENDSDATAENDSXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSTLSBSSSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSDWARFADDRSSEHUNWINDINFOSSEHSECT"
|
||||
const _SymKind_name = "SxxxSTEXTSTEXTFIPSSTARTSTEXTFIPSSTEXTFIPSENDSTEXTENDSELFRXSECTSMACHOPLTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASRODATAFIPSSTARTSRODATAFIPSSRODATAFIPSENDSRODATAENDSFUNCTABSELFROSECTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSELFRELROSECTSMACHORELROSECTSTYPELINKSITABLINKSSYMTABSPCLNTABSFirstWritableSBUILDINFOSFIPSINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASNOPTRDATAFIPSSTARTSNOPTRDATAFIPSSNOPTRDATAFIPSENDSNOPTRDATAENDSINITARRSDATASDATAFIPSSTARTSDATAFIPSSDATAFIPSENDSDATAENDSXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSTLSBSSSFirstUnallocatedSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSDWARFADDRSSEHUNWINDINFOSSEHSECT"
|
||||
|
||||
var _SymKind_index = [...]uint16{0, 4, 9, 23, 32, 44, 52, 62, 71, 76, 83, 92, 99, 106, 113, 129, 140, 154, 164, 172, 182, 192, 204, 218, 230, 242, 254, 267, 280, 295, 304, 313, 320, 328, 342, 352, 361, 369, 375, 384, 392, 399, 409, 428, 442, 459, 472, 480, 485, 499, 508, 520, 528, 537, 541, 550, 573, 590, 606, 613, 618, 630, 642, 659, 676, 686, 694, 703, 713, 725, 736, 745, 757, 767, 776, 787, 796, 807, 817, 831, 839}
|
||||
var _SymKind_index = [...]uint16{0, 4, 9, 23, 32, 44, 52, 62, 71, 76, 83, 92, 99, 106, 113, 129, 140, 154, 164, 172, 182, 192, 204, 218, 230, 242, 254, 267, 280, 295, 304, 313, 320, 328, 342, 352, 361, 369, 375, 384, 392, 399, 409, 428, 442, 459, 472, 480, 485, 499, 508, 520, 528, 537, 541, 550, 573, 590, 606, 613, 630, 635, 647, 659, 676, 693, 703, 711, 720, 730, 742, 753, 762, 774, 784, 793, 804, 813, 824, 834, 848, 856}
|
||||
|
||||
func (i SymKind) String() string {
|
||||
if i >= SymKind(len(_SymKind_index)-1) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue