You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
3.9 KiB
HTML

<html lang="en">
<head>
<title>Performing the Final Link - Untitled</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Untitled">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Linker-Functions.html#Linker-Functions" title="Linker Functions">
<link rel="prev" href="Adding-Symbols-to-the-Hash-Table.html#Adding-Symbols-to-the-Hash-Table" title="Adding Symbols to the Hash Table">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the BFD library.
Copyright (C) 1991-2015 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.-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="Performing-the-Final-Link"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="Adding-Symbols-to-the-Hash-Table.html#Adding-Symbols-to-the-Hash-Table">Adding Symbols to the Hash Table</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Linker-Functions.html#Linker-Functions">Linker Functions</a>
<hr>
</div>
<h4 class="subsection">2.17.3 Performing the final link</h4>
<p><a name="index-g_t_005fbfd_005flink_005ffinal_005flink-in-target-vector-2346"></a><a name="index-target-vector-_0028_005fbfd_005ffinal_005flink_0029-2347"></a>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>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>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>.
<ul class="menu">
<li><a accesskey="1" href="Information-provided-by-the-linker.html#Information-provided-by-the-linker">Information provided by the linker</a>
<li><a accesskey="2" href="Relocating-the-section-contents.html#Relocating-the-section-contents">Relocating the section contents</a>
<li><a accesskey="3" href="Writing-the-symbol-table.html#Writing-the-symbol-table">Writing the symbol table</a>
</ul>
</body></html>