diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2012-04-19 19:27:54 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2012-04-19 19:27:54 +0000 |
commit | 75338097c786eea1c461e744a2c45af78f56286f (patch) | |
tree | c76fcc9ba79df82b8fabeb896f0c6340629f8fdd /docs/CommandGuide/llvm-ld.pod | |
parent | b423d18a00eed4968d6df7415449259b09b7d67e (diff) | |
download | external_llvm-75338097c786eea1c461e744a2c45af78f56286f.zip external_llvm-75338097c786eea1c461e744a2c45af78f56286f.tar.gz external_llvm-75338097c786eea1c461e744a2c45af78f56286f.tar.bz2 |
Remove llvm-ld and llvm-stub (which is only used by llvm-ld).
llvm-ld is no longer useful and causes confusion and so it is being removed.
* Does not work very well on Windows because it must call a gcc like driver to
assemble and link.
* Has lots of hard coded paths which are wrong on many systems.
* Does not understand most of ld's options.
* Can be partially replaced by llvm-link | opt | {llc | as, llc -filetype=obj} |
ld, or fully replaced by Clang.
I know of no production use of llvm-ld, and hacking use should be
replaced by Clang's driver.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155147 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/CommandGuide/llvm-ld.pod')
-rw-r--r-- | docs/CommandGuide/llvm-ld.pod | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/docs/CommandGuide/llvm-ld.pod b/docs/CommandGuide/llvm-ld.pod deleted file mode 100644 index efa9ebd..0000000 --- a/docs/CommandGuide/llvm-ld.pod +++ /dev/null @@ -1,234 +0,0 @@ -=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 |