| <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
| "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| <html> |
| <head> |
| <title>Object Files: Understanding The Result Of LLVM Compilation</title> |
| <link rel="stylesheet" href="llvm.css" type="text/css"> |
| <style> |
| <!-- |
| td { border: 2px solid gray } |
| --> |
| </style> |
| </head> |
| <body> |
| <div class="doc_title"> |
| Object Files: Understanding The Result Of LLVM Compilation |
| </div> |
| |
| <ol> |
| <li><a href="#abstract">Abstract</a></li> |
| <li><a href="#introduction">Introduction</a></li> |
| <li><a href="#files">File Contents</a></li> |
| <li><a href="#rot">Linkage Rules Of Thumb</a> |
| <ol> |
| <li><a href="#always">Always Link vmcore.o, support.a</a> |
| <li><a href="#placeholder">Placeholder</a> |
| </ol> |
| </li> |
| </ol> |
| |
| <div class="doc_author"> |
| <p>Written by <a href="mailto:rspencer@x10sys.com">Reid Spencer</a></p> |
| </div> |
| |
| <!-- ======================================================================= --> |
| <div class="doc_section"><a name="abstract">Abstract</a></div> |
| <div class="doc_text"> |
| <p>This document describes the contents of the many objects files and libraries |
| that are produced by compiling LLVM. To make use of LLVM this information is |
| needed in order to understand what files should be linked into your program. |
| </p> |
| </div> |
| <!-- ======================================================================= --> |
| <div class="doc_section"> <a name="introduction">Introduction</a></div> |
| <div class="doc_text"> |
| <p>If you're writing a compiler, virtual machine, or any other utility for |
| LLVM, you'll need to figure out which of the many .a (archive) and .o |
| (object) files you will need to link with to be successful. An |
| understanding of the contents of these files and their inter-relationships |
| will be useful in coming up with an optimal specification for the objects |
| and libraries to link with. |
| </p> |
| <p>The purpose of this document is to hopefully reduce some of the trial and |
| error that the author experienced in using LLVM. |
| </p> |
| </div> |
| <!-- ======================================================================= --> |
| <div class="doc_section"><a name="files"></a>File Contents</div> |
| <div class="doc_text"> |
| <p>The table below provides a summary of the basic contents of each file.</p> |
| <table class="doc_table" |
| style="width:80%; text-align: left; border: 2px solid gray; border-collapse: collapse;"> |
| <tr class="doc_table"> |
| <td colspan="2" class="doc_section">Summary Of LLVM Library And Object Files |
| </td> |
| </tr> |
| <tr class="doc_table"> |
| <td><h2><u>Library</u></h2></td> |
| <td><h2><u>Description</u></h2></td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libipo.a</td> |
| <td> |
| An archive of all interprocedural optimizations. |
| </td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libscalaropts.a</td> |
| <td> |
| An archive of all scalar optimizations. |
| </td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libtransforms.a</td> |
| <td>Uncategorized transformations.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libtarget.a</td> |
| <td>An archive containing generic code generator support.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libanalysis.a</td> |
| <td>An archive containing intraprocedural analyses.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libdatastructure.a</td> |
| <td>An archive containing Data Structure Analysis.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libinstrument.a</td> |
| <td>Intraprocedural instrumentation and utilities.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libsparcv9regalloc.a</td> |
| <td>SparcV9 graph-coloring register allocator.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libipa.a</td> |
| <td>An archive containing interprocedural analyses</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libtransformutils.a</td> |
| <td>Utility functions for transformations.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>libsupport.a</td> |
| <td>General support utilities</td> |
| </tr> |
| <tr class="doc_table"> |
| <td><h2><u>Object File</u></h2></td> |
| <td><h2><u>Description</u></h2></td> |
| </tr> |
| <tr class="doc_table"> |
| <td>support.o</td> |
| <td>General support utilities</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>asmparser.o</td> |
| <td>Assembler Parser</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>bcreader.o</td> |
| <td>Bytecode Reader</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>bcwriter.o</td> |
| <td>Bytecode Writer</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>sched.o</td> |
| <td>SparcV9 instruction scheduler</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>selectiondag.o</td> |
| <td>Aggressive instruction selector for Directed Acyclic Graphs</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>transformutils.o</td> |
| <td>Utilities for code transformations</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>ipa.o</td> |
| <td>Interprocedural Analyses</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>sparcv9select.o</td> |
| <td>SparcV9 instruction selector</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>cwriter.o</td> |
| <td>"C" Code Writer</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>profpaths.o</td> |
| <td>Path profiling instrumentation</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>sparcv9regalloc.o</td> |
| <td>SparcV9 graph-coloring register allocator</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>instrument.o</td> |
| <td>Intraprocedural instrumentation and utilities.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>datastructure.o</td> |
| <td>Data Structure Analysis</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>codegen.o</td> |
| <td>Native code generation</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>sparcv9livevar.o</td> |
| <td>SparcV9 Live Variable Analysis</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>vmcore.o</td> |
| <td>Virtual Machine Core</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>lli-interpreter.o</td> |
| <td>Interpreter for LLVM ByteCode</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>lli-jit.o</td> |
| <td> |
| Just-In-Time Compiler For LLVM ByteCode |
| </td> |
| </tr> |
| <tr class="doc_table"> |
| <td>executionengine.o</td> |
| <td>Engine for LLI</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>debugger.o</td> |
| <td>Source Level Debugging Support</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>analysis.o</td> |
| <td>General framework for Analysis</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>sparcv9.o</td> |
| <td>SparcV9 backend</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>target.o</td> |
| <td>Generic backend support</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>transforms.o</td> |
| <td>Uncategorized transformations.</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>x86.o</td> |
| <td>Intel x86 backend</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>powerpc.o</td> |
| <td>PowerPC backend</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>scalaropts.o</td> |
| <td>Optimizations For Scalars</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>ipo.o</td> |
| <td>Interprocedural Optimizations</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>trace.o</td> |
| <td>Support For Tracing/Debugging?</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>profile_rt.o</td> |
| <td>Runtime Library For Profiler</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>sample.o</td> |
| <td>Sample Program ?</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>stkr_compiler.o</td> |
| <td>Stacker Language Compiler Library</td> |
| </tr> |
| <tr class="doc_table"> |
| <td>stkr_runtime.o</td> |
| <td>Stacker Language Runtime Library</td> |
| </tr> |
| </table> |
| </div> |
| <p></p> |
| <!-- ======================================================================= --> |
| <div class="doc_section"><a name="rot">Linkage Rules Of Thumb</a></div> |
| <div class="doc_text"> |
| <p>This section contains various "rules of thumb" about what files you |
| should link into your programs.</p> |
| </div> |
| <!-- ======================================================================= --> |
| <div class="doc_subsection"><a name="always">Always Link vmcore.o support.a</a> |
| </div> |
| <div class="doc_text"> |
| <p>No matter what you do with LLVM, you'll always need to link with vmcore.o |
| and support.a.</p> |
| </div> |
| <!-- ======================================================================= --> |
| <div class="doc_subsection"><a name="Placeholder">Placeholder</a></div> |
| <div class="doc_text"> |
| <p>Need more rules of thumb here.</p> |
| </div> |
| <!-- ======================================================================= --> |
| <hr> |
| <div class="doc_footer"> |
| <address><a href="mailto:rspencer@x10sys.com">Reid Spencer</a></address> |
| <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a> |
| <br>Last modified: $Date$ </div> |
| </body> |
| </html> |
| <!-- vim: sw=2 ts=2 ai |
| --> |