From 2340d371796f95acdcc399e60f9ecefec2add8df Mon Sep 17 00:00:00 2001 From: Jeremy Quirke Date: Tue, 9 Aug 2022 17:20:33 +0000 Subject: cmd/link: fix trampolines breaking DWARF line info When trampolines are needed (e.g. Darwin ARM64), the DWARF LPT (Line Program Table - see DWARF section 6.1) generation fails because the replacement symbols are marked as external symbols and skipped during the DWARF LPT generation phase. Fixes #54320 Change-Id: I6c93f5378f50e5edf30d5121402a48214abb1ce2 GitHub-Last-Rev: 085bbc55dbc95d55456cc2acc46a0d02416c2848 GitHub-Pull-Request: golang/go#54321 Reviewed-on: https://go-review.googlesource.com/c/go/+/422154 Reviewed-by: Cherry Mui Run-TryBot: Than McIntosh Reviewed-by: Than McIntosh TryBot-Result: Gopher Robot --- src/cmd/link/internal/loader/loader.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'src/cmd/link/internal/loader/loader.go') diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 52c7d72835..c2baa20d8d 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -1611,13 +1611,8 @@ func (l *Loader) GetFuncDwarfAuxSyms(fnSymIdx Sym) (auxDwarfInfo, auxDwarfLoc, a if l.SymType(fnSymIdx) != sym.STEXT { log.Fatalf("error: non-function sym %d/%s t=%s passed to GetFuncDwarfAuxSyms", fnSymIdx, l.SymName(fnSymIdx), l.SymType(fnSymIdx).String()) } - if l.IsExternal(fnSymIdx) { - // Current expectation is that any external function will - // not have auxsyms. - return - } - r, li := l.toLocal(fnSymIdx) - auxs := r.Auxs(li) + r, auxs := l.auxs(fnSymIdx) + for i := range auxs { a := &auxs[i] switch a.Type() { -- cgit v1.3