[llvm-commits] CVS: llvm/docs/CommandGuide/gccld.pod
Misha Brukman
brukman at cs.uiuc.edu
Thu Jul 1 12:54:01 PDT 2004
Changes in directory llvm/docs/CommandGuide:
gccld.pod added (r1.1)
---
Log message:
gccld enters the Hall of POD.
---
Diffs of the changes: (+177 -0)
Index: llvm/docs/CommandGuide/gccld.pod
diff -c /dev/null llvm/docs/CommandGuide/gccld.pod:1.1
*** /dev/null Thu Jul 1 12:53:37 2004
--- llvm/docs/CommandGuide/gccld.pod Thu Jul 1 12:53:27 2004
***************
*** 0 ****
--- 1,177 ----
+
+ =pod
+
+ =head1 NAME
+
+ gccld - optimizing LLVM linker
+
+ =head1 SYNOPSIS
+
+ gccld [options] file1 [file2 ...]
+
+ =head1 DESCRIPTION
+
+ The B<gccld> utility 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 library or an executable bytecode program. Using additional
+ options, B<gccld> is able to produce native code executables.
+
+ The B<gccld> utility is primarily used by the L<llvmgcc> and
+ L<llvmg++|llvmgxx> front-ends, and as such, attempts to mimic the interface
+ provided by the default system linker so that it can act as a ``drop-in''
+ replacement.
+
+ The B<gccld> tool performs a small set of interprocedural, post-link
+ optimizations on the program.
+
+ =head2 Search Order
+
+ When looking for objects specified on the command line, B<gccld> 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<gccld> 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
+ were specified. If the library cannot be located, then B<gccld> 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 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 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<gccld> program has limited support for native code generation, when
+ using the B<-native> or B<-native-cbe> options.
+
+ =head1 OPTIONS
+
+ =over
+
+ =item B<-help>
+
+ Print a summary of command line options.
+
+ =item B<-o> I<filename>
+
+ Specify the output filename which will hold the linked bytecode.
+
+ =item B<-stats>
+
+ Print statistics.
+
+ =item B<-time-passes>
+
+ Record the amount of time needed for each pass and print it to standard
+ error.
+
+ =item B<-verify>
+
+ Verify each pass result.
+
+ =item B<-disable-opt>
+
+ Disable all link-time optimization passes.
+
+ =item B<-disable-inlining>
+
+ Do not run the inliner pass.
+
+ =item B<-L>I<directory>
+
+ Add directory to the list of directories to search when looking for
+ libraries.
+
+ =item B<-disable-internalize>
+
+ Do not mark all symbols as internal.
+
+ =item B<-internalize-public-api-file> I<filename>
+
+ Preserve the list of symbol names in the file filename.
+
+ =item B<-internalize-public-api-list <list>>
+
+ Preserve the symbol names in list.
+
+ =item B<-l>I<library>
+
+ Specify libraries to include when linking the output file. When linking,
+ B<gccld> will first attempt to load a file with the pathname B<library>. If
+ that fails, it will then attempt to load libI<library>.bc, libI<library>.a, and
+ libI<library>.I<shared library extension>, in that order.
+
+ =item B<-link-as-library>
+
+ Link the .bc files together as a library, not an executable.
+
+ =item B<-native>
+
+ Generate a native machine code executable.
+
+ When generating native executables, B<gccld> first checks for a bytecode
+ version of the library and links it in, if necessary. If the library is
+ missing, B<gccld> skips it. Then, B<gccld> links in the same
+ libraries as native code.
+
+ In this way, B<gccld> 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 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<-s>
+
+ Strip symbol information from the generated executable.
+
+ =item B<-v>
+
+ Print information about actions taken.
+
+ =back
+
+ =head1 EXIT STATUS
+
+ If B<gccld> succeeds, it will exit with an exit status of 0.
+ Otherwise, if an error occurs, it will exit with a non-zero exit
+ status.
+
+ =head1 SEE ALSO
+
+ L<llvm-link>, L<gccas>
+
+ =head1 AUTHORS
+
+ Maintained by the LLVM Team (L<http://llvm.cs.uiuc.edu>).
+
+ =cut
+
More information about the llvm-commits
mailing list