]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: fix SCONST symbol handling on darwin
authorCherry Zhang <cherryyz@google.com>
Thu, 14 May 2020 16:16:10 +0000 (12:16 -0400)
committerCherry Zhang <cherryyz@google.com>
Thu, 14 May 2020 16:53:34 +0000 (16:53 +0000)
Don't include SCONST symbols in the symbol table when
NotInSymbolTable is set. This is what the old code (genasmsym)
does.

In fact, SCONST symbol is only emitted by the field tracking
code, and is always NotInSymbolTable. So we should just not
include them at all, or not generate SCONST symbols at all. But
at this late stage I'll just restore the old behavior.

Change-Id: If6843003e16701d45b8c67b2297098a7babdec52
Reviewed-on: https://go-review.googlesource.com/c/go/+/233997
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/link/internal/ld/macho.go

index 4dc7f819eb45466412caab01d2774785d1d5508d..5548b8c6664c57cd373d7daa2f634de720b10da8 100644 (file)
@@ -798,7 +798,7 @@ func collectmachosyms(ctxt *Link) {
                        continue
                }
                t := ldr.SymType(s)
-               if t >= sym.SELFRXSECT && t < sym.SXREF { // data sections handled in dodata
+               if t >= sym.SELFRXSECT && t < sym.SXREF || t == sym.SCONST { // data sections handled in dodata
                        if t == sym.STLSBSS {
                                // TLSBSS is not used on darwin. See data.go:allocateDataSections
                                continue
@@ -810,7 +810,7 @@ func collectmachosyms(ctxt *Link) {
                }
 
                switch t {
-               case sym.SDYNIMPORT, sym.SHOSTOBJ, sym.SUNDEFEXT, sym.SCONST:
+               case sym.SDYNIMPORT, sym.SHOSTOBJ, sym.SUNDEFEXT:
                        addsym(s)
                }