]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: do not add label symbols for DWARF on Windows/ARM64
authorCherry Mui <cherryyz@google.com>
Wed, 23 Mar 2022 22:57:16 +0000 (18:57 -0400)
committerCherry Mui <cherryyz@google.com>
Thu, 24 Mar 2022 14:44:47 +0000 (14:44 +0000)
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 <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/arm64/asm.go

index abae0f87bcda689c7d2253535f5b38c017092a03..229a4d300bfc2e240c5c41d97728988f4e28d2e3 100644 (file)
@@ -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