about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua M. Clulow <jmc@oxide.computer>2020-03-16 23:15:34 -0700
committerJoshua M. Clulow <jmc@oxide.computer>2020-03-16 23:15:34 -0700
commita83e6c7328f3fe8c78445fdb8088d7a7fa6f8897 (patch)
treefd0d915bae0abbb9272bd0f1f570991ddab22753
parent5e9ebf4da3522c479aea9c242cb3686f8d6afa78 (diff)
downloadrust-a83e6c7328f3fe8c78445fdb8088d7a7fa6f8897.tar.gz
rust-a83e6c7328f3fe8c78445fdb8088d7a7fa6f8897.zip
use "gcc" instead of "cc" on *-sun-solaris systems when linking
On illumos and Solaris systems, Rust will use GCC as the link editor.
Rust does this by invoking "cc", which on many (Linux and perhaps BSD)
systems is generally either GCC or a GCC-compatible front-end.  On
historical Solaris systems, "cc" was often the Sun Studio compiler.
This history casts a long shadow, and as such, even most modern
illumos-based operating systems tend to install GCC as "gcc", without
also making it available as "cc".

We should invoke GCC as "gcc" on such systems to ensure we get the right
compiler driver.
-rw-r--r--src/librustc_codegen_ssa/back/link.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs
index a4eef2374c2..d7081e60bd1 100644
--- a/src/librustc_codegen_ssa/back/link.rs
+++ b/src/librustc_codegen_ssa/back/link.rs
@@ -839,7 +839,13 @@ pub fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
                             "emcc"
                         }
                     }
-                    LinkerFlavor::Gcc => "cc",
+                    LinkerFlavor::Gcc => {
+                        if cfg!(target_os = "solaris") {
+                            "gcc"
+                        } else {
+                            "cc"
+                        }
+                    }
                     LinkerFlavor::Ld => "ld",
                     LinkerFlavor::Msvc => "link.exe",
                     LinkerFlavor::Lld(_) => "lld",