toolchain/gcc-linaro-6.3.1-2017.02-x8.../share/doc/bfd.html/Performing-the-Final-Link.html

116 lines
5.5 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the BFD library.
Copyright (C) 1991-2016 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Funding
Free Software", the Front-Cover texts being (a) (see below), and with
the Back-Cover Texts being (b) (see below). A copy of the license is
included in the section entitled "GNU Free Documentation License".
(a) The FSF's Front-Cover Text is:
A GNU Manual
(b) The FSF's Back-Cover Text is:
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Untitled Document: Performing the Final Link</title>
<meta name="description" content="Untitled Document: Performing the Final Link">
<meta name="keywords" content="Untitled Document: Performing the Final Link">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="BFD-Index.html#BFD-Index" rel="index" title="BFD Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Linker-Functions.html#Linker-Functions" rel="up" title="Linker Functions">
<link href="Information-provided-by-the-linker.html#Information-provided-by-the-linker" rel="next" title="Information provided by the linker">
<link href="Adding-symbols-from-an-archive.html#Adding-symbols-from-an-archive" rel="prev" title="Adding symbols from an archive">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Performing-the-Final-Link"></a>
<div class="header">
<p>
Previous: <a href="Adding-Symbols-to-the-Hash-Table.html#Adding-Symbols-to-the-Hash-Table" accesskey="p" rel="prev">Adding Symbols to the Hash Table</a>, Up: <a href="Linker-Functions.html#Linker-Functions" accesskey="u" rel="up">Linker Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="BFD-Index.html#BFD-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Performing-the-final-link"></a>
<h4 class="subsection">2.17.3 Performing the final link</h4>
<a name="index-_005fbfd_005flink_005ffinal_005flink-in-target-vector"></a>
<a name="index-target-vector-_0028_005fbfd_005ffinal_005flink_0029"></a>
<p>When all the input files have been processed, the linker calls
the <code>_bfd_final_link</code> entry point of the output BFD. This
routine is responsible for producing the final output file,
which has several aspects. It must relocate the contents of
the input sections and copy the data into the output sections.
It must build an output symbol table including any local
symbols from the input files and the global symbols from the
hash table. When producing relocatable output, it must
modify the input relocs and write them into the output file.
There may also be object format dependent work to be done.
</p>
<p>The linker will also call the <code>write_object_contents</code> entry
point when the BFD is closed. The two entry points must work
together in order to produce the correct output file.
</p>
<p>The details of how this works are inevitably dependent upon
the specific object file format. The a.out
<code>_bfd_final_link</code> routine is <code>NAME(aout,final_link)</code>.
</p>
<table class="menu" border="0" cellspacing="0">
<tr><td align="left" valign="top">&bull; <a href="Information-provided-by-the-linker.html#Information-provided-by-the-linker" accesskey="1">Information provided by the linker</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="Relocating-the-section-contents.html#Relocating-the-section-contents" accesskey="2">Relocating the section contents</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
<tr><td align="left" valign="top">&bull; <a href="Writing-the-symbol-table.html#Writing-the-symbol-table" accesskey="3">Writing the symbol table</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
</table>
</body>
</html>