diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2007-02-09 04:12:51 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2007-02-09 04:12:51 +0000 |
commit | 8645f26926bef43f32b0d2f024d7d910d6aa0873 (patch) | |
tree | 2725b4719f9b1da6bb4ff12651f73ec73fbb42a7 /docs/CommandGuide | |
parent | 1ce58ee90091d5b8539ff7e500e74d117665e20b (diff) | |
download | external_llvm-8645f26926bef43f32b0d2f024d7d910d6aa0873.zip external_llvm-8645f26926bef43f32b0d2f024d7d910d6aa0873.tar.gz external_llvm-8645f26926bef43f32b0d2f024d7d910d6aa0873.tar.bz2 |
Merge gccld documentation in here. gccld will go away soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34079 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/CommandGuide')
-rw-r--r-- | docs/CommandGuide/llvm-ld.pod | 126 |
1 files changed, 107 insertions, 19 deletions
diff --git a/docs/CommandGuide/llvm-ld.pod b/docs/CommandGuide/llvm-ld.pod index fb5418c..afeefa9 100644 --- a/docs/CommandGuide/llvm-ld.pod +++ b/docs/CommandGuide/llvm-ld.pod @@ -10,11 +10,85 @@ B<llvm-ld> <options> <files> =head1 DESCRIPTION -The B<llvm-ld> command is similar to the common Unix utility, C<ld>. It -links together bytecode modules to produce an executable program. +The B<llvm-ld> tool takes a set of LLVM bytecode files and links them +together into a single LLVM bytecode file. The output bytecode file can be +another bytecode file or an executable bytecode program. Using additional +options, B<llvm-ld> is able to produce native code executables. + +The B<llvm-ld> tool is the main linker for LLVM. It is used to link together +the output of LLVM front-end compilers and run "link time" optimizations (mostly +the inter-procedural kind). + +The B<llvm-ld> tools attemps to mimic the interface provided by the default +system linker so that it can act as a I<drop-in> replacement. + +=head2 Search Order + +When looking for objects specified on the command line, B<llvm-ld> will search +for the object first in the current directory and then in the directory +specified by the B<LLVM_LIB_SEARCH_PATH> environment variable. If it cannot +find the object, it fails. + +When looking for a library specified with the B<-l> option, B<llvm-ld> first +attempts to load a file with that name from the current directory. If that +fails, it looks for libI<library>.bc, libI<library>.a, or libI<library>.I<shared +library extension>, in that order, in each directory added to the library search +path with the B<-L> option. These directories are searched in the order they +are specified. If the library cannot be located, then B<llvm-ld> looks in the +directory specified by the B<LLVM_LIB_SEARCH_PATH> environment variable. If it +does not find a library there, it fails. + +The I<shared library extension> may be I<.so>, I<.dyld>, I<.dll>, or something +different, depending upon the system. + +The B<-L> option is global. It does not matter where it is specified in the +list of command line arguments; the directory is simply added to the search path +and is applied to all libraries, preceding or succeeding, in the command line. + +=head2 Link order + +All object and bytecode files are linked first in the order they were +specified on the command line. All library files are linked next. +Some libraries may not be linked into the object program; see below. + +=head2 Library Linkage + +Object files and static bytecode objects are always linked into the output +file. Library archives (.a files) load only the objects within the archive +that define symbols needed by the output file. Hence, libraries should be +listed after the object files and libraries which need them; otherwise, the +library may not be linked in, and the dependent library will not have its +undefined symbols defined. + +=head2 Native code generation + +The B<llvm-ld> program has limited support for native code generation, when +using the B<-native> or B<-native-cbe> options. Native code generation is +perfomed by converting the linked bytecode into native assembly (.s) or C code +and running the system compiler (typically gcc) on the result. =head1 OPTIONS +=head2 General Options + +=item B<-help> + +Print a summary of command line options. + +=item B<-v> + +Specifies verbose mode. In this mode the linker will print additional +information about the actions it takes, programs it executes, etc. + +=item B<-stats> + +Print statistics. + +=item B<-time-passes> + +Record the amount of time needed for each pass and print it to standard +error. + =head2 Input/Output Options =over @@ -56,12 +130,24 @@ Specifies the kind of machine for which code or assembly should be generated. =item B<-native> -Generate a native binary instead of a shell script that runs the JIT from -bytecode. +Generate a native machine code executable. + +When generating native executables, B<llvm-ld> first checks for a bytecode +version of the library and links it in, if necessary. If the library is +missing, B<llvm-ld> skips it. Then, B<llvm-ld> links in the same +libraries as native code. + +In this way, B<llvm-ld> should be able to link in optimized bytecode +subsets of common libraries and then link in any part of the library that +hasn't been converted to bytecode. =item B<-native-cbe> -Generate a native binary with the C back end and compilation with GCC. +Generate a native machine code executable with the LLVM C backend. + +This option is identical to the B<-native> option, but uses the +C backend to generate code for the program instead of an LLVM native +code generator. =item B<-disable-compression> @@ -115,18 +201,30 @@ no link time optimization passes will be run. Do not mark all symbols as internal. -=item B<-verify> +=item B<-verify-each> Run the verification pass after each of the passes to verify intermediate results. +=item B<-strip-all> + +Strip all debug and symbol information from the executable to make it smaller. + +=item B<-strip-debug> + +Strip all debug information from the executable to make it smaller. + =item B<-s> -Strip symbol info from the executable to make it smaller. +An alias for B<-strip-all>. + +=item B<-S> + +An alias for B<-strip-debug>. =item B<-export-dynamic> -An alias for -disable-internalize +An alias for B<-disable-internalize> =item B<-load> F<module> @@ -153,16 +251,6 @@ cp $1 $2 =back -=head2 Miscellaneous Options - -=over - -=item B<-v> - -Specifies verbose mode. In this mode the linker will print additional -information about the actions it takes, programs it executes, etc. - -=back =head1 EXIT STATUS @@ -177,7 +265,7 @@ options. =head1 SEE ALSO -L<llvm-ar|llvm-ar> +L<llvm-link|llvm-link> =head1 AUTHORS |