aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndy Pan <panjf2000@gmail.com>2023-08-28 20:40:51 +0800
committerGopher Robot <gobot@golang.org>2023-08-28 19:13:34 +0000
commit38db2df02dbe1edbdb586118d16ebdbf20180a95 (patch)
tree69e6baaa45a7e48a37fe557461f445fe171694cf /src
parent7b166602fbab7120089b077716c2a6294ced5d32 (diff)
downloadgo-38db2df02dbe1edbdb586118d16ebdbf20180a95.tar.xz
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>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/go/internal/work/init.go4
-rw-r--r--src/cmd/go/testdata/script/build_pie_race.txt30
2 files changed, 32 insertions, 2 deletions
diff --git a/src/cmd/go/internal/work/init.go b/src/cmd/go/internal/work/init.go
index 29116cb90c..7d0921f0cc 100644
--- a/src/cmd/go/internal/work/init.go
+++ b/src/cmd/go/internal/work/init.go
@@ -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"
diff --git a/src/cmd/go/testdata/script/build_pie_race.txt b/src/cmd/go/testdata/script/build_pie_race.txt
new file mode 100644
index 0000000000..39bea0521f
--- /dev/null
+++ b/src/cmd/go/testdata/script/build_pie_race.txt
@@ -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, 世界")
+}