=pod

=head1 NAME

llvm-ld - LLVM linker

=head1 SYNOPSIS

B<llvm-ld> <options> <files>

=head1 DESCRIPTION

The B<llvm-ld> tool takes a set of LLVM bitcode files and links them
together into a single LLVM bitcode file.  The output bitcode file can be
another bitcode file or an executable bitcode 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 attempts 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 bitcode 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 bitcode 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
performed by converting the linked bitcode into native assembly (.s) or C code
and running the system compiler (typically gcc) on the result.

=head1 OPTIONS

=head2 General Options

=over 

=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.

=back 

=head2 Input/Output Options

=over

=item B<-o> F<filename>

This overrides the default output file and specifies the name of the file that
should be generated by the linker. By default, B<llvm-ld> generates a file named
F<a.out> for compatibility with B<ld>. The output will be written to
F<filename>.

=item B<-b> F<filename>

This option can be used to override the output bitcode file name. By default, 
the name of the bitcode output file is one more ".bc" suffix added to the name 
specified by B<-o filename> option.

=item B<-l>F<name>

This option specifies the F<name> of a library to search when resolving symbols
for the program. Only the base name should be specified as F<name>, without a
F<lib> prefix or any suffix. 

=item B<-L>F<Path>

This option tells B<llvm-ld> to look in F<Path> to find any library subsequently
specified with the B<-l> option. The paths will be searched in the order in
which they are specified on the command line. If the library is still not found,
a small set of system specific directories will also be searched. Note that
libraries specified with the B<-l> option that occur I<before> any B<-L> options
will not search the paths given by the B<-L> options following it.

=item B<-link-as-library>

Link the bitcode files together as a library, not an executable. In this mode,
undefined symbols will be permitted.

=item B<-r>

An alias for -link-as-library.

=item B<-native>

Generate a native machine code executable.

When generating native executables, B<llvm-ld> first checks for a bitcode
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 bitcode
subsets of common libraries and then link in any part of the library that
hasn't been converted to bitcode.

=item B<-native-cbe>

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.

=back

=head2 Optimization Options

=over 

=item B<-disable-inlining>

Do not run the inlining pass. Functions will not be inlined into other
functions.

=item B<-disable-opt>

Completely disable optimization.

=item B<-disable-internalize>

Do not mark all symbols as internal.

=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>

An alias for B<-strip-all>.

=item B<-S>

An alias for B<-strip-debug>.

=item B<-export-dynamic>

An alias for B<-disable-internalize>

=item B<-post-link-opt>F<Path>

Run post-link optimization program. After linking is completed a bitcode file
will be generated. It will be passed to the program specified by F<Path> as the
first argument. The second argument to the program will be the name of a
temporary file into which the program should place its optimized output. For
example, the "no-op optimization" would be a simple shell script:

    #!/bin/bash
    cp $1 $2

=back

=head1 EXIT STATUS

If B<llvm-ld> succeeds, it will exit with 0 return code.  If an error occurs,
it will exit with a non-zero return code.

=head1 ENVIRONMENT

The C<LLVM_LIB_SEARCH_PATH> environment variable is used to find bitcode
libraries. Any paths specified in this variable will be searched after the C<-L>
options.

=head1 SEE ALSO

L<llvm-link|llvm-link>

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.org>).

=cut
