[llvm-commits] CVS: llvm/docs/CommandGuide/llvm-ld.pod

Reid Spencer reid at x10sys.com
Thu Feb 8 20:13:07 PST 2007



Changes in directory llvm/docs/CommandGuide:

llvm-ld.pod updated: 1.4 -> 1.5
---
Log message:

Merge gccld documentation in here. gccld will go away soon.


---
Diffs of the changes:  (+107 -19)

 llvm-ld.pod |  126 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 107 insertions(+), 19 deletions(-)


Index: llvm/docs/CommandGuide/llvm-ld.pod
diff -u llvm/docs/CommandGuide/llvm-ld.pod:1.4 llvm/docs/CommandGuide/llvm-ld.pod:1.5
--- llvm/docs/CommandGuide/llvm-ld.pod:1.4	Mon Mar 13 23:42:07 2006
+++ llvm/docs/CommandGuide/llvm-ld.pod	Thu Feb  8 22:12:51 2007
@@ -10,11 +10,85 @@
 
 =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 @@
 
 =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 @@
 
 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 @@
 
 =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 @@
 
 =head1 SEE ALSO
 
-L<llvm-ar|llvm-ar>
+L<llvm-link|llvm-link>
 
 =head1 AUTHORS
 






More information about the llvm-commits mailing list