From cccfb8ffdb97224aed5cc718d4bac3f3df9e55ed Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Wed, 23 Mar 2022 18:57:16 -0400 Subject: [PATCH] cmd/link: do not add label symbols for DWARF on Windows/ARM64 Label symbols are only useful for relocations from text. No need to do it for DWARF. And the PE symbol table doesn't like them. May fix #51903. Change-Id: Ibe6ea880d8533ba1dcc017030072c7dffee0e9e5 Reviewed-on: https://go-review.googlesource.com/c/go/+/395215 Trust: Cherry Mui Run-TryBot: Cherry Mui TryBot-Result: Gopher Robot Reviewed-by: Than McIntosh --- src/cmd/link/internal/arm64/asm.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cmd/link/internal/arm64/asm.go b/src/cmd/link/internal/arm64/asm.go index abae0f87bc..229a4d300b 100644 --- a/src/cmd/link/internal/arm64/asm.go +++ b/src/cmd/link/internal/arm64/asm.go @@ -1146,7 +1146,8 @@ func gensymlate(ctxt *ld.Link, ldr *loader.Loader) { if !ldr.AttrReachable(s) { continue } - if ldr.SymType(s) == sym.STEXT { + t := ldr.SymType(s) + if t == sym.STEXT { if ctxt.IsDarwin() || ctxt.IsWindows() { // Cannot relocate into middle of function. // Generate symbol names for every offset we need in duffcopy/duffzero (only 64 each). @@ -1159,6 +1160,9 @@ func gensymlate(ctxt *ld.Link, ldr *loader.Loader) { } continue // we don't target the middle of other functions } + if t >= sym.SDWARFSECT { + continue // no need to add label for DWARF symbols + } sz := ldr.SymSize(s) if sz <= limit { continue -- 2.48.1