mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/link: fix checks for supported linker flags with relative paths.
The existing way of checking for supported linker flags causes false negatives when there are relative paths passed to go tool link. This fixes the issue by calling the external linker in the current working directory, instead of in a temporary directory. Fixes #59952 Change-Id: I173bb8b44902f30dacefde1c202586f87667ab70 Reviewed-on: https://go-review.googlesource.com/c/go/+/491796 Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
c20b7a072a
commit
db22489012
1 changed files with 3 additions and 2 deletions
|
|
@ -2006,10 +2006,11 @@ func linkerFlagSupported(arch *sys.Arch, linker, altLinker, flag string) bool {
|
|||
if altLinker != "" {
|
||||
flags = append(flags, "-fuse-ld="+altLinker)
|
||||
}
|
||||
flags = append(flags, flag, "trivial.c")
|
||||
trivialPath := filepath.Join(*flagTmpdir, "trivial.c")
|
||||
outPath := filepath.Join(*flagTmpdir, "a.out")
|
||||
flags = append(flags, "-o", outPath, flag, trivialPath)
|
||||
|
||||
cmd := exec.Command(linker, flags...)
|
||||
cmd.Dir = *flagTmpdir
|
||||
cmd.Env = append([]string{"LC_ALL=C"}, os.Environ()...)
|
||||
out, err := cmd.CombinedOutput()
|
||||
// GCC says "unrecognized command line option ‘-no-pie’"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue