a = append(a, "-Qunused-arguments")
}
- // zig cc passes --gc-sections to the underlying linker, which then causes
- // undefined symbol errors when compiling with cgo but without C code.
- // https://github.com/golang/go/issues/52690
- if b.gccSupportsFlag(compiler, "-Wl,--no-gc-sections") {
- a = append(a, "-Wl,--no-gc-sections")
- }
-
// disable word wrapping in error messages
a = append(a, "-fmessage-length=0")
defer os.Remove(tmp)
}
- // We used to write an empty C file, but that gets complicated with go
- // build -n. We tried using a file that does not exist, but that fails on
- // systems with GCC version 4.2.1; that is the last GPLv2 version of GCC,
- // so some systems have frozen on it. Now we pass an empty file on stdin,
- // which should work at least for GCC and clang.
- //
- // If the argument is "-Wl,", then it's testing the linker. In that case,
- // skip "-c". If it's not "-Wl,", then we are testing the compiler and
- // can emit the linking step with "-c".
- cmdArgs := str.StringList(compiler, flag)
- if !strings.HasPrefix(flag, "-Wl,") /* linker flag */ {
- cmdArgs = append(cmdArgs, "-c")
- }
- cmdArgs = append(cmdArgs, "-x", "c", "-", "-o", tmp)
-
+ // We used to write an empty C file, but that gets complicated with
+ // go build -n. We tried using a file that does not exist, but that
+ // fails on systems with GCC version 4.2.1; that is the last GPLv2
+ // version of GCC, so some systems have frozen on it.
+ // Now we pass an empty file on stdin, which should work at least for
+ // GCC and clang.
+ cmdArgs := str.StringList(compiler, flag, "-c", "-x", "c", "-", "-o", tmp)
if cfg.BuildN || cfg.BuildX {
b.Showcmd(b.WorkDir, "%s || true", joinUnambiguously(cmdArgs))
if cfg.BuildN {