Skip to content

Commit 08304e8

Browse files
committed
cmd/link: put runtime.framepointer_enabled in DATA instead of RODATA
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 #24653. Change-Id: I9d1b7d5a648be17103d20b97be65a901cb69f5a2 Reviewed-on: https://go-review.googlesource.com/104715 Run-TryBot: Cherry Zhang <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]> Reviewed-by: Austin Clements <[email protected]>
1 parent 73e0c30 commit 08304e8

File tree

1 file changed

+2
-2
lines changed
  • src/cmd/link/internal/ld

1 file changed

+2
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,14 +454,14 @@ func (ctxt *Link) loadlib() {
454454
// recording the value of GOARM.
455455
if ctxt.Arch.Family == sys.ARM {
456456
s := ctxt.Syms.Lookup("runtime.goarm", 0)
457-
s.Type = sym.SRODATA
457+
s.Type = sym.SDATA
458458
s.Size = 0
459459
s.AddUint8(uint8(objabi.GOARM))
460460
}
461461

462462
if objabi.Framepointer_enabled(objabi.GOOS, objabi.GOARCH) {
463463
s := ctxt.Syms.Lookup("runtime.framepointer_enabled", 0)
464-
s.Type = sym.SRODATA
464+
s.Type = sym.SDATA
465465
s.Size = 0
466466
s.AddUint8(1)
467467
}

0 commit comments

Comments
 (0)