mirror of
https://github.com/golang/go.git
synced 2025-10-19 19:13:18 +00:00
cmd/go: permit additional cflags when compiling
In CL 475375 the Go command started to generate the "preferlinkext" token file for "strange/dangerous" compiler flags. This serves as a hint to the Go linker whether to call the external linker or not. Permit compiler flag used by the hermetic_cc_toolchain bzlmod. As a side effect, it also allows these flags to appear in #cgo directives in source code. We don't know of any cases where that is actually useful, but it appears to be harmless and simplifies the implementation of the internal linking change. Fixes #72842 Change-Id: Ic6de29b535a4e2c0720f383567ea6b3c7ca4f541 Reviewed-on: https://go-review.googlesource.com/c/go/+/657575 Auto-Submit: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
6bd5741a4c
commit
0f5d86c5a0
2 changed files with 9 additions and 0 deletions
|
@ -90,6 +90,7 @@ var validCompilerFlags = []*lazyregexp.Regexp{
|
||||||
re(`-f(no-)?use-linker-plugin`), // safe if -B is not used; we don't permit -B
|
re(`-f(no-)?use-linker-plugin`), // safe if -B is not used; we don't permit -B
|
||||||
re(`-f(no-)?visibility-inlines-hidden`),
|
re(`-f(no-)?visibility-inlines-hidden`),
|
||||||
re(`-fsanitize=(.+)`),
|
re(`-fsanitize=(.+)`),
|
||||||
|
re(`-fsanitize-undefined-strip-path-components=(-)?[0-9]+`),
|
||||||
re(`-ftemplate-depth-(.+)`),
|
re(`-ftemplate-depth-(.+)`),
|
||||||
re(`-ftls-model=(global-dynamic|local-dynamic|initial-exec|local-exec)`),
|
re(`-ftls-model=(global-dynamic|local-dynamic|initial-exec|local-exec)`),
|
||||||
re(`-fvisibility=(.+)`),
|
re(`-fvisibility=(.+)`),
|
||||||
|
|
|
@ -56,6 +56,14 @@ env CGO_CFLAGS=-fprofile-instr-generate
|
||||||
go build -x -n -o dummy.exe ./usesInternalCgo
|
go build -x -n -o dummy.exe ./usesInternalCgo
|
||||||
stderr preferlinkext
|
stderr preferlinkext
|
||||||
|
|
||||||
|
# Trimming file information for the UndefinedBehaviorSanitizer is permitted for internal linking.
|
||||||
|
env CGO_CFLAGS=-fsanitize-undefined-strip-path-components=-1
|
||||||
|
go build -x -n -o dummy.exe ./usesInternalCgo
|
||||||
|
! stderr preferlinkext
|
||||||
|
env CGO_CFLAGS=-fsanitize-undefined-strip-path-components=2
|
||||||
|
go build -x -n -o dummy.exe ./usesInternalCgo
|
||||||
|
! stderr preferlinkext
|
||||||
|
|
||||||
# The -fdebug-prefix-map=path is permitted for internal linking.
|
# The -fdebug-prefix-map=path is permitted for internal linking.
|
||||||
env CGO_CFLAGS=-fdebug-prefix-map=/some/sandbox/execroot/workspace=/tmp/new
|
env CGO_CFLAGS=-fdebug-prefix-map=/some/sandbox/execroot/workspace=/tmp/new
|
||||||
go build -x -n -o dummy.exe ./usesInternalCgo
|
go build -x -n -o dummy.exe ./usesInternalCgo
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue