]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.10] cmd/link: put runtime.framepointer_enabled in DATA instead...
authorCherry Zhang <cherryyz@google.com>
Wed, 4 Apr 2018 16:12:10 +0000 (12:12 -0400)
committerAndrew Bonventre <andybons@golang.org>
Mon, 29 Oct 2018 19:25:12 +0000 (19:25 +0000)
On darwin, only writable symbol is exported
(cmd/link/internal/ld/macho.go:/machoShouldExport).
For plugin to work correctly, global variables, including
runtime.framepointer_enabled which is set by the linker, need
to be exported when dynamic linking. Put it in DATA so it is
exported. Also in Go it is defined as a var, which is not
read-only.

While here, do the same for runtime.goarm.

Fixes #25038.

Change-Id: I9d1b7d5a648be17103d20b97be65a901cb69f5a2
Reviewed-on: https://go-review.googlesource.com/104715
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-on: https://go-review.googlesource.com/c/122116
Run-TryBot: Andrew Bonventre <andybons@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

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

index 8a45825c65ef0f69aaa933a5945ccc734c9b3cad..bfb766522b2f635d30b2558dec7a26a5b1c68248 100644 (file)
@@ -461,14 +461,14 @@ func (ctxt *Link) loadlib() {
                // recording the value of GOARM.
                if ctxt.Arch.Family == sys.ARM {
                        s := ctxt.Syms.Lookup("runtime.goarm", 0)
-                       s.Type = sym.SRODATA
+                       s.Type = sym.SDATA
                        s.Size = 0
                        s.AddUint8(uint8(objabi.GOARM))
                }
 
                if objabi.Framepointer_enabled(objabi.GOOS, objabi.GOARCH) {
                        s := ctxt.Syms.Lookup("runtime.framepointer_enabled", 0)
-                       s.Type = sym.SRODATA
+                       s.Type = sym.SDATA
                        s.Size = 0
                        s.AddUint8(1)
                }