From 7347b54727519eecf693e9c10c504dc28611cbbf Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sun, 2 Nov 2025 13:54:22 -0800 Subject: [PATCH] cmd/link: don't generate .gosymtab section Since Go 1.2 the section is always empty. Also remove the code looking for .gosymtab in cmd/internal/objfile. For #76038 Change-Id: Icd34c870ed0c6da8001e8d32305f79905ee2b066 Reviewed-on: https://go-review.googlesource.com/c/go/+/717200 LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui Auto-Submit: Ian Lance Taylor Commit-Queue: Ian Lance Taylor Reviewed-by: Michael Pratt --- src/cmd/internal/objfile/elf.go | 22 +---- src/cmd/internal/objfile/goobj.go | 4 +- src/cmd/internal/objfile/macho.go | 11 +-- src/cmd/internal/objfile/objfile.go | 6 +- src/cmd/internal/objfile/pe.go | 15 +-- src/cmd/internal/objfile/plan9obj.go | 13 +-- src/cmd/internal/objfile/xcoff.go | 7 +- src/cmd/link/internal/ld/data.go | 8 -- src/cmd/link/internal/ld/elf.go | 2 - src/cmd/link/internal/ld/macho_test.go | 2 +- src/cmd/link/internal/ld/symtab.go | 6 -- src/cmd/link/internal/sym/symkind.go | 1 - src/cmd/link/internal/sym/symkind_string.go | 103 ++++++++++---------- src/cmd/link/internal/wasm/asm.go | 1 - src/debug/gosym/symtab.go | 3 +- 15 files changed, 76 insertions(+), 128 deletions(-) diff --git a/src/cmd/internal/objfile/elf.go b/src/cmd/internal/objfile/elf.go index 8923290cff..6988cea936 100644 --- a/src/cmd/internal/objfile/elf.go +++ b/src/cmd/internal/objfile/elf.go @@ -64,40 +64,26 @@ func (f *elfFile) symbols() ([]Sym, error) { return syms, nil } -func (f *elfFile) pcln() (textStart uint64, symtab, pclntab []byte, err error) { +func (f *elfFile) pcln() (textStart uint64, pclntab []byte, err error) { if sect := f.elf.Section(".text"); sect != nil { textStart = sect.Addr } - sect := f.elf.Section(".gosymtab") - if sect == nil { - // try .data.rel.ro.gosymtab, for PIE binaries - sect = f.elf.Section(".data.rel.ro.gosymtab") - } - if sect != nil { - if symtab, err = sect.Data(); err != nil { - return 0, nil, nil, err - } - } else { - // if both sections failed, try the symbol - symtab = f.symbolData("runtime.symtab", "runtime.esymtab") - } - - sect = f.elf.Section(".gopclntab") + sect := f.elf.Section(".gopclntab") if sect == nil { // try .data.rel.ro.gopclntab, for PIE binaries sect = f.elf.Section(".data.rel.ro.gopclntab") } if sect != nil { if pclntab, err = sect.Data(); err != nil { - return 0, nil, nil, err + return 0, nil, err } } else { // if both sections failed, try the symbol pclntab = f.symbolData("runtime.pclntab", "runtime.epclntab") } - return textStart, symtab, pclntab, nil + return textStart, pclntab, nil } func (f *elfFile) text() (textStart uint64, text []byte, err error) { diff --git a/src/cmd/internal/objfile/goobj.go b/src/cmd/internal/objfile/goobj.go index 7d564a2661..ec852d0669 100644 --- a/src/cmd/internal/objfile/goobj.go +++ b/src/cmd/internal/objfile/goobj.go @@ -221,10 +221,10 @@ func (f *goobjFile) symbols() ([]Sym, error) { return syms, nil } -func (f *goobjFile) pcln() (textStart uint64, symtab, pclntab []byte, err error) { +func (f *goobjFile) pcln() (textStart uint64, pclntab []byte, err error) { // Should never be called. We implement Liner below, callers // should use that instead. - return 0, nil, nil, fmt.Errorf("pcln not available in go object file") + return 0, nil, fmt.Errorf("pcln not available in go object file") } // PCToLine returns the file name, line, and function data for the given pc. diff --git a/src/cmd/internal/objfile/macho.go b/src/cmd/internal/objfile/macho.go index 8258145f26..eaf665faee 100644 --- a/src/cmd/internal/objfile/macho.go +++ b/src/cmd/internal/objfile/macho.go @@ -79,21 +79,16 @@ func (f *machoFile) symbols() ([]Sym, error) { return syms, nil } -func (f *machoFile) pcln() (textStart uint64, symtab, pclntab []byte, err error) { +func (f *machoFile) pcln() (textStart uint64, pclntab []byte, err error) { if sect := f.macho.Section("__text"); sect != nil { textStart = sect.Addr } - if sect := f.macho.Section("__gosymtab"); sect != nil { - if symtab, err = sect.Data(); err != nil { - return 0, nil, nil, err - } - } if sect := f.macho.Section("__gopclntab"); sect != nil { if pclntab, err = sect.Data(); err != nil { - return 0, nil, nil, err + return 0, nil, err } } - return textStart, symtab, pclntab, nil + return textStart, pclntab, nil } func (f *machoFile) text() (textStart uint64, text []byte, err error) { diff --git a/src/cmd/internal/objfile/objfile.go b/src/cmd/internal/objfile/objfile.go index ed9aae280e..32e06dfd99 100644 --- a/src/cmd/internal/objfile/objfile.go +++ b/src/cmd/internal/objfile/objfile.go @@ -18,7 +18,7 @@ import ( type rawFile interface { symbols() (syms []Sym, err error) - pcln() (textStart uint64, symtab, pclntab []byte, err error) + pcln() (textStart uint64, pclntab []byte, err error) text() (textStart uint64, text []byte, err error) goarch() string loadAddress() (uint64, error) @@ -141,7 +141,7 @@ func (e *Entry) PCLineTable() (Liner, error) { return pcln, nil } // Otherwise, read the pcln tables and build a Liner out of that. - textStart, symtab, pclntab, err := e.raw.pcln() + textStart, pclntab, err := e.raw.pcln() if err != nil { return nil, err } @@ -154,7 +154,7 @@ func (e *Entry) PCLineTable() (Liner, error) { } } } - return gosym.NewTable(symtab, gosym.NewLineTable(pclntab, textStart)) + return gosym.NewTable(nil, gosym.NewLineTable(pclntab, textStart)) } func (e *Entry) Text() (uint64, []byte, error) { diff --git a/src/cmd/internal/objfile/pe.go b/src/cmd/internal/objfile/pe.go index c5c08264a9..e94821298f 100644 --- a/src/cmd/internal/objfile/pe.go +++ b/src/cmd/internal/objfile/pe.go @@ -90,10 +90,10 @@ func (f *peFile) symbols() ([]Sym, error) { return syms, nil } -func (f *peFile) pcln() (textStart uint64, symtab, pclntab []byte, err error) { +func (f *peFile) pcln() (textStart uint64, pclntab []byte, err error) { imageBase, err := f.imageBase() if err != nil { - return 0, nil, nil, err + return 0, nil, err } if sect := f.pe.Section(".text"); sect != nil { @@ -104,17 +104,10 @@ func (f *peFile) pcln() (textStart uint64, symtab, pclntab []byte, err error) { // TODO: Remove code looking for the old symbols when we no longer care about 1.3. var err2 error if pclntab, err2 = loadPETable(f.pe, "pclntab", "epclntab"); err2 != nil { - return 0, nil, nil, err - } - } - if symtab, err = loadPETable(f.pe, "runtime.symtab", "runtime.esymtab"); err != nil { - // Same as above. - var err2 error - if symtab, err2 = loadPETable(f.pe, "symtab", "esymtab"); err2 != nil { - return 0, nil, nil, err + return 0, nil, err } } - return textStart, symtab, pclntab, nil + return textStart, pclntab, nil } func (f *peFile) text() (textStart uint64, text []byte, err error) { diff --git a/src/cmd/internal/objfile/plan9obj.go b/src/cmd/internal/objfile/plan9obj.go index c91970762c..edd40230ce 100644 --- a/src/cmd/internal/objfile/plan9obj.go +++ b/src/cmd/internal/objfile/plan9obj.go @@ -71,24 +71,17 @@ func (f *plan9File) symbols() ([]Sym, error) { return syms, nil } -func (f *plan9File) pcln() (textStart uint64, symtab, pclntab []byte, err error) { +func (f *plan9File) pcln() (textStart uint64, pclntab []byte, err error) { textStart = f.plan9.LoadAddress + f.plan9.HdrSize if pclntab, err = loadPlan9Table(f.plan9, "runtime.pclntab", "runtime.epclntab"); err != nil { // We didn't find the symbols, so look for the names used in 1.3 and earlier. // TODO: Remove code looking for the old symbols when we no longer care about 1.3. var err2 error if pclntab, err2 = loadPlan9Table(f.plan9, "pclntab", "epclntab"); err2 != nil { - return 0, nil, nil, err + return 0, nil, err } } - if symtab, err = loadPlan9Table(f.plan9, "runtime.symtab", "runtime.esymtab"); err != nil { - // Same as above. - var err2 error - if symtab, err2 = loadPlan9Table(f.plan9, "symtab", "esymtab"); err2 != nil { - return 0, nil, nil, err - } - } - return textStart, symtab, pclntab, nil + return textStart, pclntab, nil } func (f *plan9File) text() (textStart uint64, text []byte, err error) { diff --git a/src/cmd/internal/objfile/xcoff.go b/src/cmd/internal/objfile/xcoff.go index 24f42760c9..85928621f1 100644 --- a/src/cmd/internal/objfile/xcoff.go +++ b/src/cmd/internal/objfile/xcoff.go @@ -87,15 +87,14 @@ func (f *xcoffFile) symbols() ([]Sym, error) { return syms, nil } -func (f *xcoffFile) pcln() (textStart uint64, symtab, pclntab []byte, err error) { +func (f *xcoffFile) pcln() (textStart uint64, pclntab []byte, err error) { if sect := f.xcoff.Section(".text"); sect != nil { textStart = sect.VirtualAddress } if pclntab, err = loadXCOFFTable(f.xcoff, "runtime.pclntab", "runtime.epclntab"); err != nil { - return 0, nil, nil, err + return 0, nil, err } - symtab, _ = loadXCOFFTable(f.xcoff, "runtime.symtab", "runtime.esymtab") // ignore error, this symbol is not useful anyway - return textStart, symtab, pclntab, nil + return textStart, pclntab, nil } func (f *xcoffFile) text() (textStart uint64, text []byte, err error) { diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index 7f5a7e65ad..fcc3272760 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -2238,11 +2238,6 @@ func (state *dodataState) allocateDataSections(ctxt *Link) { state.checkdatsize(sym.SITABLINK) sect.Length = uint64(state.datsize) - sect.Vaddr - /* gosymtab */ - sect = state.allocateNamedSectionAndAssignSyms(seg, genrelrosecname(".gosymtab"), sym.SSYMTAB, sym.SRODATA, relroSecPerm) - ldr.SetSymSect(ldr.LookupOrCreateSym("runtime.symtab", 0), sect) - ldr.SetSymSect(ldr.LookupOrCreateSym("runtime.esymtab", 0), sect) - /* gopclntab */ sect = state.allocateNamedSectionAndAssignSyms(seg, genrelrosecname(".gopclntab"), sym.SPCLNTAB, sym.SRODATA, relroSecPerm) ldr.SetSymSect(ldr.LookupOrCreateSym("runtime.pclntab", 0), sect) @@ -2985,7 +2980,6 @@ func (ctxt *Link) address() []*sym.Segment { ldr := ctxt.loader var ( rodata = ldr.SymSect(ldr.LookupOrCreateSym("runtime.rodata", 0)) - symtab = ldr.SymSect(ldr.LookupOrCreateSym("runtime.symtab", 0)) pclntab = ldr.SymSect(ldr.LookupOrCreateSym("runtime.pclntab", 0)) types = ldr.SymSect(ldr.LookupOrCreateSym("runtime.types", 0)) ) @@ -3065,8 +3059,6 @@ func (ctxt *Link) address() []*sym.Segment { ctxt.xdefine("runtime.egcbss", sym.SRODATA, ldr.SymAddr(s)+ldr.SymSize(s)) ldr.SetSymSect(ldr.LookupOrCreateSym("runtime.egcbss", 0), ldr.SymSect(s)) - ctxt.xdefine("runtime.symtab", sym.SRODATA, int64(symtab.Vaddr)) - ctxt.xdefine("runtime.esymtab", sym.SRODATA, int64(symtab.Vaddr+symtab.Length)) ctxt.xdefine("runtime.pclntab", sym.SRODATA, int64(pclntab.Vaddr)) ctxt.defineInternal("runtime.pcheader", sym.SRODATA) ctxt.defineInternal("runtime.funcnametab", sym.SRODATA) diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go index ed215d7fe5..8981f1c3f0 100644 --- a/src/cmd/link/internal/ld/elf.go +++ b/src/cmd/link/internal/ld/elf.go @@ -1477,7 +1477,6 @@ func (ctxt *Link) doelf() { } shstrtabAddstring(relro_prefix + ".typelink") shstrtabAddstring(relro_prefix + ".itablink") - shstrtabAddstring(relro_prefix + ".gosymtab") shstrtabAddstring(relro_prefix + ".gopclntab") if ctxt.IsExternal() { @@ -1487,7 +1486,6 @@ func (ctxt *Link) doelf() { shstrtabAddstring(elfRelType + ".rodata") shstrtabAddstring(elfRelType + relro_prefix + ".typelink") shstrtabAddstring(elfRelType + relro_prefix + ".itablink") - shstrtabAddstring(elfRelType + relro_prefix + ".gosymtab") shstrtabAddstring(elfRelType + relro_prefix + ".gopclntab") shstrtabAddstring(elfRelType + ".noptrdata") shstrtabAddstring(elfRelType + ".data") diff --git a/src/cmd/link/internal/ld/macho_test.go b/src/cmd/link/internal/ld/macho_test.go index 29adc0b78b..adf159ab6d 100644 --- a/src/cmd/link/internal/ld/macho_test.go +++ b/src/cmd/link/internal/ld/macho_test.go @@ -37,7 +37,7 @@ func TestMachoSectionsReadOnly(t *testing.T) { args: []string{"-ldflags", "-linkmode=internal"}, prog: prog, mustInternalLink: true, - wantSecsRO: []string{"__got", "__rodata", "__itablink", "__typelink", "__gosymtab", "__gopclntab"}, + wantSecsRO: []string{"__got", "__rodata", "__itablink", "__typelink", "__gopclntab"}, }, { name: "linkmode-external", diff --git a/src/cmd/link/internal/ld/symtab.go b/src/cmd/link/internal/ld/symtab.go index f18bb3599a..a0345ca1c7 100644 --- a/src/cmd/link/internal/ld/symtab.go +++ b/src/cmd/link/internal/ld/symtab.go @@ -446,7 +446,6 @@ func (ctxt *Link) symtab(pcln *pclntab) []sym.SymKind { ctxt.xdefine("runtime.ecovctrs", sym.SNOPTRBSS, 0) ctxt.xdefine("runtime.end", sym.SBSS, 0) ctxt.xdefine("runtime.epclntab", sym.SRODATA, 0) - ctxt.xdefine("runtime.esymtab", sym.SRODATA, 0) // garbage collection symbols s := ldr.CreateSymForUpdate("runtime.gcdata", 0) @@ -506,11 +505,6 @@ func (ctxt *Link) symtab(pcln *pclntab) []sym.SymKind { symgofuncrel = groupSym("go:funcrel.*", sym.SGOFUNCRELRO) } - symt := ldr.CreateSymForUpdate("runtime.symtab", 0) - symt.SetType(sym.SSYMTAB) - symt.SetSize(0) - symt.SetLocal(true) - // assign specific types so that they sort together. // within a type they sort by size, so the .* symbols // just defined above will be first. diff --git a/src/cmd/link/internal/sym/symkind.go b/src/cmd/link/internal/sym/symkind.go index 19de4ad210..9f62e809e1 100644 --- a/src/cmd/link/internal/sym/symkind.go +++ b/src/cmd/link/internal/sym/symkind.go @@ -91,7 +91,6 @@ const ( STYPELINK // Type links. SITABLINK // Itab links. - SSYMTAB // Used for runtime.symtab, which is always empty. SPCLNTAB // Pclntab data. // Allocated writable segment. diff --git a/src/cmd/link/internal/sym/symkind_string.go b/src/cmd/link/internal/sym/symkind_string.go index 509318403a..4e3a0a3431 100644 --- a/src/cmd/link/internal/sym/symkind_string.go +++ b/src/cmd/link/internal/sym/symkind_string.go @@ -39,61 +39,60 @@ func _() { _ = x[SMACHORELROSECT-28] _ = x[STYPELINK-29] _ = x[SITABLINK-30] - _ = x[SSYMTAB-31] - _ = x[SPCLNTAB-32] - _ = x[SFirstWritable-33] - _ = x[SBUILDINFO-34] - _ = x[SFIPSINFO-35] - _ = x[SELFSECT-36] - _ = x[SMACHO-37] - _ = x[SMACHOGOT-38] - _ = x[SWINDOWS-39] - _ = x[SELFGOT-40] - _ = x[SNOPTRDATA-41] - _ = x[SNOPTRDATAFIPSSTART-42] - _ = x[SNOPTRDATAFIPS-43] - _ = x[SNOPTRDATAFIPSEND-44] - _ = x[SNOPTRDATAEND-45] - _ = x[SINITARR-46] - _ = x[SDATA-47] - _ = x[SDATAFIPSSTART-48] - _ = x[SDATAFIPS-49] - _ = x[SDATAFIPSEND-50] - _ = x[SDATAEND-51] - _ = x[SXCOFFTOC-52] - _ = x[SBSS-53] - _ = x[SNOPTRBSS-54] - _ = x[SLIBFUZZER_8BIT_COUNTER-55] - _ = x[SCOVERAGE_COUNTER-56] - _ = x[SCOVERAGE_AUXVAR-57] - _ = x[STLSBSS-58] - _ = 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] + _ = x[SPCLNTAB-31] + _ = x[SFirstWritable-32] + _ = x[SBUILDINFO-33] + _ = x[SFIPSINFO-34] + _ = x[SELFSECT-35] + _ = x[SMACHO-36] + _ = x[SMACHOGOT-37] + _ = x[SWINDOWS-38] + _ = x[SELFGOT-39] + _ = x[SNOPTRDATA-40] + _ = x[SNOPTRDATAFIPSSTART-41] + _ = x[SNOPTRDATAFIPS-42] + _ = x[SNOPTRDATAFIPSEND-43] + _ = x[SNOPTRDATAEND-44] + _ = x[SINITARR-45] + _ = x[SDATA-46] + _ = x[SDATAFIPSSTART-47] + _ = x[SDATAFIPS-48] + _ = x[SDATAFIPSEND-49] + _ = x[SDATAEND-50] + _ = x[SXCOFFTOC-51] + _ = x[SBSS-52] + _ = x[SNOPTRBSS-53] + _ = x[SLIBFUZZER_8BIT_COUNTER-54] + _ = x[SCOVERAGE_COUNTER-55] + _ = x[SCOVERAGE_AUXVAR-56] + _ = x[STLSBSS-57] + _ = x[SFirstUnallocated-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] } -const _SymKind_name = "SxxxSTEXTSTEXTFIPSSTARTSTEXTFIPSSTEXTFIPSENDSTEXTENDSELFRXSECTSMACHOPLTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASRODATAFIPSSTARTSRODATAFIPSSRODATAFIPSENDSRODATAENDSFUNCTABSELFROSECTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSELFRELROSECTSMACHORELROSECTSTYPELINKSITABLINKSSYMTABSPCLNTABSFirstWritableSBUILDINFOSFIPSINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASNOPTRDATAFIPSSTARTSNOPTRDATAFIPSSNOPTRDATAFIPSENDSNOPTRDATAENDSINITARRSDATASDATAFIPSSTARTSDATAFIPSSDATAFIPSENDSDATAENDSXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSTLSBSSSFirstUnallocatedSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSDWARFADDRSSEHUNWINDINFOSSEHSECT" +const _SymKind_name = "SxxxSTEXTSTEXTFIPSSTARTSTEXTFIPSSTEXTFIPSENDSTEXTENDSELFRXSECTSMACHOPLTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASRODATAFIPSSTARTSRODATAFIPSSRODATAFIPSENDSRODATAENDSFUNCTABSELFROSECTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSELFRELROSECTSMACHORELROSECTSTYPELINKSITABLINKSPCLNTABSFirstWritableSBUILDINFOSFIPSINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASNOPTRDATAFIPSSTARTSNOPTRDATAFIPSSNOPTRDATAFIPSENDSNOPTRDATAENDSINITARRSDATASDATAFIPSSTARTSDATAFIPSSDATAFIPSENDSDATAENDSXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_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, 630, 635, 647, 659, 676, 693, 703, 711, 720, 730, 742, 753, 762, 774, 784, 793, 804, 813, 824, 834, 848, 856} +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, 321, 335, 345, 354, 362, 368, 377, 385, 392, 402, 421, 435, 452, 465, 473, 478, 492, 501, 513, 521, 530, 534, 543, 566, 583, 599, 606, 623, 628, 640, 652, 669, 686, 696, 704, 713, 723, 735, 746, 755, 767, 777, 786, 797, 806, 817, 827, 841, 849} func (i SymKind) String() string { if i >= SymKind(len(_SymKind_index)-1) { diff --git a/src/cmd/link/internal/wasm/asm.go b/src/cmd/link/internal/wasm/asm.go index 2ddf5b33ba..65f79c8012 100644 --- a/src/cmd/link/internal/wasm/asm.go +++ b/src/cmd/link/internal/wasm/asm.go @@ -127,7 +127,6 @@ func asmb(ctxt *ld.Link, ldr *loader.Loader) { ldr.SymSect(ldr.Lookup("runtime.rodata", 0)), ldr.SymSect(ldr.Lookup("runtime.typelink", 0)), ldr.SymSect(ldr.Lookup("runtime.itablink", 0)), - ldr.SymSect(ldr.Lookup("runtime.symtab", 0)), ldr.SymSect(ldr.Lookup("runtime.pclntab", 0)), ldr.SymSect(ldr.Lookup("runtime.noptrdata", 0)), ldr.SymSect(ldr.Lookup("runtime.data", 0)), diff --git a/src/debug/gosym/symtab.go b/src/debug/gosym/symtab.go index bf38927254..08d46684bf 100644 --- a/src/debug/gosym/symtab.go +++ b/src/debug/gosym/symtab.go @@ -332,7 +332,8 @@ func walksymtab(data []byte, fn func(sym) error) error { // NewTable decodes the Go symbol table (the ".gosymtab" section in ELF), // returning an in-memory representation. -// Starting with Go 1.3, the Go symbol table no longer includes symbol data. +// Starting with Go 1.3, the Go symbol table no longer includes symbol data; +// callers should pass nil for the symtab parameter. func NewTable(symtab []byte, pcln *LineTable) (*Table, error) { var n int err := walksymtab(symtab, func(s sym) error { -- 2.52.0