1
0
mirror of https://github.com/golang/go synced 2024-10-01 07:38:32 -06:00

cmd/go: allow -buildmode=pie with -race on darwin

Fixes #62318

Change-Id: I6f1b22c9a4523461aa4c7fcd12e72dbc4430812d
Reviewed-on: https://go-review.googlesource.com/c/go/+/523475
Run-TryBot: Andy Pan <panjf2000@gmail.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Andy Pan 2023-08-28 20:40:51 +08:00 committed by Gopher Robot
parent 7b166602fb
commit 38db2df02d
2 changed files with 32 additions and 2 deletions

View File

@ -246,8 +246,8 @@ func buildModeInit() {
pkgsFilter = oneMainPkg
}
case "pie":
if cfg.BuildRace {
base.Fatalf("-buildmode=pie not supported when -race is enabled")
if cfg.BuildRace && !platform.DefaultPIE(cfg.Goos, cfg.Goarch, cfg.BuildRace) {
base.Fatalf("-buildmode=pie not supported when -race is enabled on %s/%s", cfg.Goos, cfg.Goarch)
}
if gccgo {
codegenArg = "-fPIE"

View File

@ -0,0 +1,30 @@
# go build -buildmode=pie -race main.go on Darwin should work without errors
[!race] skip 'test requires race detector support'
[!GOOS:darwin] ! go build -buildmode=pie -race
[!GOOS:darwin] stderr '^-buildmode=pie not supported when -race is enabled on '$GOOS'/'$GOARCH'$'
[!GOOS:darwin] stop 'not testing -buildmode=pie -race on platform that does not support it'
go build -buildmode=pie -race bytes
! stderr .
[short] stop 'not linking a binary in -short mode'
go build -buildmode=pie -race main.go
! stderr .
exec ./main
stdout 'Hello, 世界'
-- go.mod --
module m
go 1.21
-- main.go --
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}