about summary refs log tree commit diff
path: root/src/libstd/sys/unix/time.rs
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-08-25 20:16:51 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-09-05 21:07:02 -0700
commited938f08a949cb487f7513d4f22f92355a40d2f3 (patch)
tree7ab91cf4fa734cef75f13d7e333cdf41df09a56f /src/libstd/sys/unix/time.rs
parent2f1ef9ef1181298d46e79d5dde6bafeb6483926f (diff)
downloadrust-ed938f08a949cb487f7513d4f22f92355a40d2f3.tar.gz
rust-ed938f08a949cb487f7513d4f22f92355a40d2f3.zip
rustc: Attempt to handle super long linker invocations
This commit adds logic to the compiler to attempt to handle super long linker
invocations by falling back to the `@`-file syntax if the invoked command is too
large. Each OS has a limit on how many arguments and how large the arguments can
be when spawning a new process, and linkers tend to be one of those programs
that can hit the limit!

The logic implemented here is to unconditionally attempt to spawn a linker and
then if it fails to spawn with an error from the OS that indicates the command
line is too big we attempt a fallback. The fallback is roughly the same for all
linkers where an argument pointing to a file, prepended with `@`, is passed.
This file then contains all the various arguments that we want to pass to the
linker.

Closes #41190
Diffstat (limited to 'src/libstd/sys/unix/time.rs')
0 files changed, 0 insertions, 0 deletions