Add support for linker file lists. A file list is similar to linker response
files, but slightly more restricted. A file list may only contain a list of
input files. Flags must remain on the actual command invocation. Runs of files
are collapsed into a single input which is marked as a file list by prepending
the filename with an '@' symbol. The linker will read this file and expand the
contents as the input items.
This is supported by at least the GNU linker as well as Microsoft's link.exe
linker. The use of the option is controlled through a driver flag, defaulting
to disabled.
This functionality aids in reducing the length of the subcommand invoked to
perform the final link. Some systems have a limit on the command line, and when
linking a large number of object files, it is possible to overrun that limit.
Use llvm::raw_fd_ostream. It has less moving parts.