]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: add and use new SymKind SFirstUnallocated
authorIan Lance Taylor <iant@golang.org>
Tue, 28 Oct 2025 21:01:48 +0000 (14:01 -0700)
committerGopher Robot <gobot@golang.org>
Wed, 5 Nov 2025 00:32:28 +0000 (16:32 -0800)
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>

src/cmd/link/internal/ld/data.go
src/cmd/link/internal/ld/macho.go
src/cmd/link/internal/ld/pe.go
src/cmd/link/internal/ld/symtab.go
src/cmd/link/internal/ld/xcoff.go
src/cmd/link/internal/sym/symkind.go
src/cmd/link/internal/sym/symkind_string.go

index a8e56bdd5ac9832bb0de7f5a2d9633d8b18b4a4c..7f5a7e65adcbf755a7fd19ee89bc55a151af053f 100644 (file)
@@ -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]...)
        }
 }
index 8e059f299ffa7317537da4fa960cebc3cb2febd0..6d3347ff2d4569ae43522202eceb6e082c311b33 100644 (file)
@@ -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
index f5b7580fda33070b7da657511b9cc203ec79f143..b49da42c4cf0c7791eac0357c880de190e0253b7 100644 (file)
@@ -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
                        }
index 2c999ccc4e3a198e3047bcc2eaadee943758da7b..f18bb3599ad0c9aabe8169a6ebd5213c5ce519db 100644 (file)
@@ -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
 }
index fdc16ac48f9d2b4b94bbb80fae0511706d8b5340..fc98fcba2bccebe0fc8df61642f0f9d474b70ea7 100644 (file)
@@ -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)
                        }
index f5901e0a22b0c581db1d4c3a7b63ecea408711ca..19de4ad2108692989188e4efae37d641b51fd314 100644 (file)
@@ -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.
index 2fa8472f651de69f65200bd73515f584365a52ff..509318403ab071d4e790492d36b6a8598ff253d2 100644 (file)
@@ -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) {