mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76768 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			235 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			235 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =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
 |