blob: 8c3fce9925b14e554363cb952eb7b3067e70f124 [file] [log] [blame]
tools/lld
~~~~~~~~~
Driver
------
lld needs a driver that supports gnu-ld_, ld64_, and link.exe_ arguments. It
would be nice to refactor the argument parsing parts of `Clang's`_ driver support
out to LLVM's Support library.
.. _gnu-ld: http://sourceware.org/binutils/docs-2.22/ld/Options.html#Options
.. _ld64: https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/Xcode-3.2.5/man1/ld.1.html
.. _link.exe: http://msdn.microsoft.com/en-us/library/y0zzbyt4(v=vs.110).aspx
.. _Clang's: http://clang.llvm.org/docs/DriverInternals.html
Driver Requirements
*******************
The following are the different types of arguments that the driver will need to
support for compatibility with each linker.
link.exe
^^^^^^^^
Output: Default output filename is the name of the first file with .obj on the
command line with .exe or .dll appended. Override with /OUT.
Options are case insensitive and can begin with - or /.
Types of options:
* @response_file
* {-/}flag
* {-/}flag[:number]
* {-/}flag[:string]
* {-/}flag:string
* {-/}flag:string[,[string][,string]]
* {-/}flag:string[,number]
* {-/}flag:@string,string
* {-/}flag:string[,@string[,string]][,string]
* {-/}flag:[string\]string
* {-/}flag:[string | string=string]
* {-/}flag:string,[[!]{DEKPRSW}][,ALIGN=#]
When options conflict, the last one wins.
ld64
^^^^
gnuld
^^^^^