loader.go (go1.19.src) | : | loader.go (go1.19.1.src) | ||
---|---|---|---|---|
skipping to change at line 1613 | skipping to change at line 1613 | |||
// GetFuncDwarfAuxSyms collects and returns the auxiliary DWARF | // GetFuncDwarfAuxSyms collects and returns the auxiliary DWARF | |||
// symbols associated with a given function symbol. Prior to the | // symbols associated with a given function symbol. Prior to the | |||
// introduction of the loader, this was done purely using name | // introduction of the loader, this was done purely using name | |||
// lookups, e.f. for function with name XYZ we would then look up | // lookups, e.f. for function with name XYZ we would then look up | |||
// go.info.XYZ, etc. | // go.info.XYZ, etc. | |||
func (l *Loader) GetFuncDwarfAuxSyms(fnSymIdx Sym) (auxDwarfInfo, auxDwarfLoc, a uxDwarfRanges, auxDwarfLines Sym) { | func (l *Loader) GetFuncDwarfAuxSyms(fnSymIdx Sym) (auxDwarfInfo, auxDwarfLoc, a uxDwarfRanges, auxDwarfLines Sym) { | |||
if l.SymType(fnSymIdx) != sym.STEXT { | if l.SymType(fnSymIdx) != sym.STEXT { | |||
log.Fatalf("error: non-function sym %d/%s t=%s passed to GetFuncD warfAuxSyms", fnSymIdx, l.SymName(fnSymIdx), l.SymType(fnSymIdx).String()) | log.Fatalf("error: non-function sym %d/%s t=%s passed to GetFuncD warfAuxSyms", fnSymIdx, l.SymName(fnSymIdx), l.SymType(fnSymIdx).String()) | |||
} | } | |||
if l.IsExternal(fnSymIdx) { | r, auxs := l.auxs(fnSymIdx) | |||
// Current expectation is that any external function will | ||||
// not have auxsyms. | ||||
return | ||||
} | ||||
r, li := l.toLocal(fnSymIdx) | ||||
auxs := r.Auxs(li) | ||||
for i := range auxs { | for i := range auxs { | |||
a := &auxs[i] | a := &auxs[i] | |||
switch a.Type() { | switch a.Type() { | |||
case goobj.AuxDwarfInfo: | case goobj.AuxDwarfInfo: | |||
auxDwarfInfo = l.resolve(r, a.Sym()) | auxDwarfInfo = l.resolve(r, a.Sym()) | |||
if l.SymType(auxDwarfInfo) != sym.SDWARFFCN { | if l.SymType(auxDwarfInfo) != sym.SDWARFFCN { | |||
panic("aux dwarf info sym with wrong type") | panic("aux dwarf info sym with wrong type") | |||
} | } | |||
case goobj.AuxDwarfLoc: | case goobj.AuxDwarfLoc: | |||
auxDwarfLoc = l.resolve(r, a.Sym()) | auxDwarfLoc = l.resolve(r, a.Sym()) | |||
End of changes. 1 change blocks. | ||||
7 lines changed or deleted | 2 lines changed or added |