rustc: Don't invoke lld
with an @
-file
Looks like LLD doesn't support this yet, so always try to use the OS before we fall back to using `@`
This commit is contained in:
parent
883e74645d
commit
04442af18b
@ -132,6 +132,13 @@ impl Command {
|
||||
return false
|
||||
}
|
||||
|
||||
// Right now LLD doesn't support the `@` syntax of passing an argument
|
||||
// through files, so regardless of the platform we try to go to the OS
|
||||
// on this one.
|
||||
if let Program::Lld(..) = self.program {
|
||||
return false
|
||||
}
|
||||
|
||||
// Ok so on Windows to spawn a process is 32,768 characters in its
|
||||
// command line [1]. Unfortunately we don't actually have access to that
|
||||
// as it's calculated just before spawning. Instead we perform a
|
||||
|
@ -827,11 +827,14 @@ fn exec_linker(sess: &Session, cmd: &mut Command, tmpdir: &Path)
|
||||
if !cmd.very_likely_to_exceed_some_spawn_limit() {
|
||||
match cmd.command().stdout(Stdio::piped()).stderr(Stdio::piped()).spawn() {
|
||||
Ok(child) => return child.wait_with_output(),
|
||||
Err(ref e) if command_line_too_big(e) => {}
|
||||
Err(ref e) if command_line_too_big(e) => {
|
||||
info!("command line to linker was too big: {}", e);
|
||||
}
|
||||
Err(e) => return Err(e)
|
||||
}
|
||||
}
|
||||
|
||||
info!("falling back to passing arguments to linker via an @-file");
|
||||
let mut cmd2 = cmd.clone();
|
||||
let mut args = String::new();
|
||||
for arg in cmd2.take_args() {
|
||||
@ -856,6 +859,7 @@ fn exec_linker(sess: &Session, cmd: &mut Command, tmpdir: &Path)
|
||||
};
|
||||
fs::write(&file, &bytes)?;
|
||||
cmd2.arg(format!("@{}", file.display()));
|
||||
info!("invoking linker {:?}", cmd2);
|
||||
return cmd2.output();
|
||||
|
||||
#[cfg(unix)]
|
||||
|
Loading…
Reference in New Issue
Block a user