Skip to content

Commit

Permalink
cmd/link: explicitly disable PIE for windows/amd64 -race mode
Browse files Browse the repository at this point in the history
Turn off PIE explicitly for windows/amd64 when -race is in effect,
since at the moment the race detector runtime doesn't seem to handle
PIE binaries correctly. Note that newer C compilers on windows
produce PIE binaries by default, so the Go linker needs to explicitly
turn off PIE when invoking the external linker in this case.

Updates golang#53539.

Change-Id: Ib990621f22cf61a5fa383584bab81d3dfd7552e8
Reviewed-on: https://go-review.googlesource.com/c/go/+/415676
Reviewed-by: Cherry Mui <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Run-TryBot: Than McIntosh <[email protected]>
Reviewed-by: Alex Brainman <[email protected]>
  • Loading branch information
thanm committed Jul 7, 2022
1 parent eaf2125 commit 0c7fcf6
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/cmd/link/internal/ld/lib.go
Original file line number Diff line number Diff line change
Expand Up @@ -1426,10 +1426,23 @@ func (ctxt *Link) hostlink() {
argv = append(argv, "-Wl,-pagezero_size,4000000")
}
}
if *flagRace && ctxt.HeadType == objabi.Hwindows {
// Current windows/amd64 race detector tsan support
// library can't handle PIE mode (see #53539 for more details).
// For now, explicitly disable PIE (since some compilers
// default to it) if -race is in effect.
argv = addASLRargs(argv, false)
}
case BuildModePIE:
switch ctxt.HeadType {
case objabi.Hdarwin, objabi.Haix:
case objabi.Hwindows:
if *flagAslr && *flagRace {
// Current windows/amd64 race detector tsan support
// library can't handle PIE mode (see #53539 for more details).
// Disable alsr if -race in effect.
*flagAslr = false
}
argv = addASLRargs(argv, *flagAslr)
default:
// ELF.
Expand Down

0 comments on commit 0c7fcf6

Please sign in to comment.