|  | <html> | 
|  | <title> | 
|  | LLVM: gccld tool | 
|  | </title> | 
|  |  | 
|  | <body> | 
|  |  | 
|  | <center> | 
|  | <h1>LLVM: gccld tool</h1> | 
|  | </center> | 
|  | <HR> | 
|  |  | 
|  | <h3> | 
|  | NAME | 
|  | </h3> | 
|  |  | 
|  | gccld | 
|  |  | 
|  | <h3> | 
|  | SYNOPSIS | 
|  | </h3> | 
|  |  | 
|  | gccld [options] < filename> [ filename ...] | 
|  | <h3> | 
|  | DESCRIPTION | 
|  | </h3> | 
|  |  | 
|  | The 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, | 
|  | gccld is able to produce native code executables. | 
|  | <p> | 
|  | The gccld utility is primarily used by the GCC front end, and as such, attempts | 
|  | to mimic the interface provided by the default system linker so that it can act | 
|  | as a "drop-in" replacement. | 
|  |  | 
|  | <h4> | 
|  | Search Order | 
|  | </h4> | 
|  | When looking for objects specified on the command line, gccld will search for | 
|  | the object first in the current directory and then in the directory specified | 
|  | by LLVM_LIB_SEARCH_PATH.  If it cannot find the object, it fails. | 
|  | <p> | 
|  | When looking for a library specified with the -l option, gccld 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>.so, in that order, in each directory added to the library | 
|  | search path with the -L option.  These directories are searched in order they | 
|  | were specified.  If the library cannot be located, then gccld looks in the | 
|  | directory specified by the LLVM_LIB_SEARCH_PATH environment variable.  If it | 
|  | does not find lib<library>.[bc | a | so] there, it fails. | 
|  |  | 
|  | 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. | 
|  |  | 
|  | <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 gccld program has limited support for native code generation. | 
|  | <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> -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, | 
|  | gccld will first attempt to load a file with the pathname library.  If that | 
|  | fails, it will then attempt to load lib<library>.bc, | 
|  | lib<library>.a, and lib<library>.so, 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, gccld first checks for a bytecode version | 
|  | of the library and links it in, if necessary.  If the library is missing, | 
|  | gccld skips it.  Then, gccld links in the same libraries as native code. | 
|  | <p> | 
|  | In this way, 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. | 
|  | <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 gccld succeeds, it will exit with 0.  Otherwise, if an error occurs, it | 
|  | will exit with a non-zero value. | 
|  |  | 
|  | <h3> | 
|  | SEE ALSO | 
|  | </h3> | 
|  | gccas | 
|  |  | 
|  | <h3> | 
|  | BUGS | 
|  | </h3> | 
|  | The -L option cannot be used for find native code libraries when using the | 
|  | -native option. | 
|  |  | 
|  | <HR> | 
|  | <a href="http://llvm.cs.uiuc.edu">LLVM Team</a> | 
|  | </body> | 
|  | </html> | 
|  |  |