mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26747 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			176 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| =pod
 | |
| 
 | |
| =head1 NAME
 | |
| 
 | |
| gccld - optimizing LLVM linker
 | |
| 
 | |
| =head1 SYNOPSIS
 | |
| 
 | |
| B<gccld> [I<options>] I<filename ...>
 | |
| 
 | |
| =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> I<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|llvm-link>, L<gccas|gccas>
 | |
| 
 | |
| =head1 AUTHORS
 | |
| 
 | |
| Maintained by the LLVM Team (L<http://llvm.org>).
 | |
| 
 | |
| =cut
 |