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@12350 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			202 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			202 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <html>
 | |
| <title>LLVM: gccld tool</title>
 | |
| 
 | |
| <body bgcolor=white>
 | |
| 
 | |
| <center><h1>LLVM: <tt>gccld</tt> tool</h1></center>
 | |
| <HR>
 | |
| 
 | |
| <h3>NAME</h3>
 | |
| <tt>gccld</tt>
 | |
| 
 | |
| <h3>SYNOPSIS</h3>
 | |
| <tt>gccld [options] < filename> [ filename ...]</tt>
 | |
| 
 | |
| <h3>DESCRIPTION</h3>
 | |
| 
 | |
| The <tt>gccld</tt> 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, <tt>gccld</tt> is able to produce native code executables.
 | |
| <p>
 | |
| 
 | |
| The <tt>gccld</tt> utility is primarily used by the <a href="llvmgcc.html">C</a>
 | |
| and <a href="llvmgxx.html">C++</a> 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.
 | |
| <p>
 | |
| 
 | |
| The <tt>gccld</tt> tool performs a small set of interprocedural, post-link,
 | |
| optimizations on the program.
 | |
| 
 | |
| 
 | |
| <h4>Search Order</h4>
 | |
| 
 | |
| <p>
 | |
| When looking for objects specified on the command line, <tt>gccld</tt> will
 | |
| search for the object first in the current directory and then in the directory
 | |
| specified by the <tt>LLVM_LIB_SEARCH_PATH</tt> environment variable.  If it
 | |
| cannot find the object, it fails.
 | |
| </p>
 | |
| 
 | |
| <p>
 | |
| When looking for a library specified with the -l option, <tt>gccld</tt> first
 | |
| attempts to load a file with that name from the current directory.  If that
 | |
| fails, it looks for lib<library>.bc, lib<library>.a, or
 | |
| lib<library>.<shared library extension>, in that order, in each
 | |
| directory added to the library search path with the -L option.  These
 | |
| directories are searched in the order they
 | |
| were specified.  If the library cannot be located, then <tt>gccld</tt> looks in
 | |
| the directory specified by the <tt>LLVM_LIB_SEARCH_PATH</tt> environment
 | |
| variable.  If it does not find a library there, it fails.
 | |
| </p>
 | |
| 
 | |
| <p>
 | |
| The shared library extension is usually <tt>.so</tt>, but it may differ
 | |
| depending upon the system.
 | |
| </p>
 | |
| 
 | |
| <p>
 | |
| The -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.
 | |
| </p>
 | |
| 
 | |
| <h4>Link order</h4>
 | |
| 
 | |
| 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.
 | |
| 
 | |
| <h4>Library Linkage</h4>
 | |
| 
 | |
| 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.
 | |
| 
 | |
| <h4>Native code generation</h4>
 | |
| 
 | |
| The <tt>gccld</tt> program has limited support for native code generation, when
 | |
| using the -native option.
 | |
| 
 | |
| 
 | |
| <h3>OPTIONS</h3>
 | |
| 
 | |
| <ul>
 | |
| 	<li> -help
 | |
| 	<br>
 | |
| 	Print a summary of command line options.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -o <filename>
 | |
| 	<br>
 | |
| 	Specify the output filename which will hold the linked bytecode.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -stats
 | |
| 	<br>
 | |
| 	Print statistics.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -time-passes
 | |
| 	<br>
 | |
| 	Record the amount of time needed for each pass and print it to standard
 | |
| 	error.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -verify
 | |
| 	<br>
 | |
| 	Verify each pass result.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -disable-opt
 | |
| 	<br>
 | |
|   Disable all link-time optimization passes.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -disable-inlining
 | |
| 	<br>
 | |
|   Do not run the inliner pass.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -L=<directory>
 | |
| 	<br>
 | |
| 	Add directory to the list of directories to search when looking for
 | |
| 	libraries.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -disable-internalize
 | |
| 	<br>
 | |
| 	Do not mark all symbols as internal.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -internalize-public-api-file <filename>
 | |
| 	<br>
 | |
| 	Preserve the list of symbol names in the file filename.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -internalize-public-api-list <list>
 | |
| 	<br>
 | |
| 	Preserve the symbol names in list.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -l=<library>
 | |
| 	<br>
 | |
| 	Specify libraries to include when linking the output file.  When
 | |
| 	linking, <tt>gccld</tt> will first attempt to load a file with the
 | |
| 	pathname <tt>library</tt>.  If that fails, it will then attempt to load
 | |
| 	lib<library>.bc, lib<library>.a, and
 | |
|   lib<library>.<shared library extension>, in that order.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -link-as-library
 | |
| 	<br>
 | |
| 	Link the .bc files together as a library, not an executable.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -native
 | |
| 	<br>
 | |
| 	Generate a native, machine code executable.
 | |
|   <p>
 | |
|   When generating native executables, <tt>gccld</tt> first checks for a bytecode
 | |
|   version of the library and links it in, if necessary.  If the library is
 | |
|   missing, <tt>gccld</tt> skips it.  Then, <tt>gccld</tt> links in the same
 | |
|   libraries as native code.
 | |
|   <p>
 | |
|   In this way, <tt>gccld</tt> 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.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -s
 | |
| 	<br>
 | |
| 	Strip symbol information from the generated executable.
 | |
| 	<p>
 | |
| 
 | |
| 	<li> -v
 | |
| 	<br>
 | |
| 	Print information about actions taken.
 | |
| </ul>
 | |
| 
 | |
| <h3>EXIT STATUS</h3>
 | |
| 
 | |
| If <tt>gccld</tt> succeeds, it will exit with 0.  Otherwise, if an error occurs,
 | |
| it will exit with a non-zero value.
 | |
| 
 | |
| <h3>SEE ALSO</h3>
 | |
| <a href="llvm-link.html"><tt>llvm-link</tt></a>
 | |
| <a href="gccas.html"><tt>gccas</tt></a>
 | |
| 
 | |
| <h3>BUGS</h3>
 | |
| The -L option cannot be used for find native code libraries when using the
 | |
| -native option.
 | |
| 
 | |
| <HR>
 | |
| Maintained by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a>.
 | |
| </body>
 | |
| </html>
 | |
| 
 |