<!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-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. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Untitled Document: Writing the symbol table</title>

<meta name="description" content="Untitled Document: Writing the symbol table">
<meta name="keywords" content="Untitled Document: Writing the symbol table">
<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="Performing-the-Final-Link.html#Performing-the-Final-Link" rel="up" title="Performing the Final Link">
<link href="Hash-Tables.html#Hash-Tables" rel="next" title="Hash Tables">
<link href="Relocating-the-section-contents.html#Relocating-the-section-contents" rel="prev" title="Relocating the section contents">
<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="Writing-the-symbol-table"></a>
<div class="header">
<p>
Previous: <a href="Relocating-the-section-contents.html#Relocating-the-section-contents" accesskey="p" rel="prev">Relocating the section contents</a>, Up: <a href="Performing-the-Final-Link.html#Performing-the-Final-Link" accesskey="u" rel="up">Performing the Final Link</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="Writing-the-symbol-table-1"></a>
<h4 class="subsubsection">2.17.3.3 Writing the symbol table</h4>
<p>The <code>_bfd_final_link</code> function must gather all the symbols
in the input files and write them out.  It must also write out
all the symbols in the global hash table.  This must be
controlled by the <code>strip</code> and <code>discard</code> fields of the
<code>bfd_link_info</code> structure.
</p>
<p>The local symbols of the input files will not have been
entered into the linker hash table.  The <code>_bfd_final_link</code>
routine must consider each input file and include the symbols
in the output file.  It may be convenient to do this when
looking through the <code>link_order</code> structures, or it may be
done by stepping through the <code>input_bfds</code> list.
</p>
<p>The <code>_bfd_final_link</code> routine must also traverse the global
hash table to gather all the externally visible symbols.  It
is possible that most of the externally visible symbols may be
written out when considering the symbols of each input file,
but it is still necessary to traverse the hash table since the
linker script may have defined some symbols that are not in
any of the input files.
</p>
<p>The <code>strip</code> field of the <code>bfd_link_info</code> structure
controls which symbols are written out.  The possible values
are listed in <code>bfdlink.h</code>.  If the value is <code>strip_some</code>,
then the <code>keep_hash</code> field of the <code>bfd_link_info</code>
structure is a hash table of symbols to keep; each symbol
should be looked up in this hash table, and only symbols which
are present should be included in the output file.
</p>
<p>If the <code>strip</code> field of the <code>bfd_link_info</code> structure
permits local symbols to be written out, the <code>discard</code> field
is used to further controls which local symbols are included
in the output file.  If the value is <code>discard_l</code>, then all
local symbols which begin with a certain prefix are discarded;
this is controlled by the <code>bfd_is_local_label_name</code> entry point.
</p>
<p>The a.out backend handles symbols by calling
<code>aout_link_write_symbols</code> on each input BFD and then
traversing the global hash table with the function
<code>aout_link_write_other_symbol</code>.  It builds a string table
while writing out the symbols, which is written to the output
file at the end of <code>NAME(aout,final_link)</code>.
</p>
<a name="index-bfd_005flink_005fsplit_005fsection"></a>
<a name="bfd_005flink_005fsplit_005fsection"></a>
<h4 class="subsubsection">2.17.3.4 <code>bfd_link_split_section</code></h4>
<p><strong>Synopsis</strong>
</p><div class="example">
<pre class="example">bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
</pre></div>
<p><strong>Description</strong><br>
Return nonzero if <var>sec</var> should be split during a
reloceatable or final link.
</p><div class="example">
<pre class="example">#define bfd_link_split_section(abfd, sec) \
       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))

</pre></div>

<a name="index-bfd_005fsection_005falready_005flinked"></a>
<a name="bfd_005fsection_005falready_005flinked"></a>
<h4 class="subsubsection">2.17.3.5 <code>bfd_section_already_linked</code></h4>
<p><strong>Synopsis</strong>
</p><div class="example">
<pre class="example">bfd_boolean bfd_section_already_linked (bfd *abfd,
    asection *sec,
    struct bfd_link_info *info);
</pre></div>
<p><strong>Description</strong><br>
Check if <var>data</var> has been already linked during a reloceatable
or final link.  Return TRUE if it has.
</p><div class="example">
<pre class="example">#define bfd_section_already_linked(abfd, sec, info) \
       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))

</pre></div>

<a name="index-bfd_005fgeneric_005fdefine_005fcommon_005fsymbol"></a>
<a name="bfd_005fgeneric_005fdefine_005fcommon_005fsymbol"></a>
<h4 class="subsubsection">2.17.3.6 <code>bfd_generic_define_common_symbol</code></h4>
<p><strong>Synopsis</strong>
</p><div class="example">
<pre class="example">bfd_boolean bfd_generic_define_common_symbol
   (bfd *output_bfd, struct bfd_link_info *info,
    struct bfd_link_hash_entry *h);
</pre></div>
<p><strong>Description</strong><br>
Convert common symbol <var>h</var> into a defined symbol.
Return TRUE on success and FALSE on failure.
</p><div class="example">
<pre class="example">#define bfd_define_common_symbol(output_bfd, info, h) \
       BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))

</pre></div>

<a name="index-bfd_005ffind_005fversion_005ffor_005fsym"></a>
<a name="bfd_005ffind_005fversion_005ffor_005fsym"></a>
<h4 class="subsubsection">2.17.3.7 <code>bfd_find_version_for_sym</code></h4>
<p><strong>Synopsis</strong>
</p><div class="example">
<pre class="example">struct bfd_elf_version_tree * bfd_find_version_for_sym
   (struct bfd_elf_version_tree *verdefs,
    const char *sym_name, bfd_boolean *hide);
</pre></div>
<p><strong>Description</strong><br>
Search an elf version script tree for symbol versioning
info and export / don&rsquo;t-export status for a given symbol.
Return non-NULL on success and NULL on failure; also sets
the output &lsquo;<samp>hide</samp>&rsquo; boolean parameter.
</p>
<a name="index-bfd_005fhide_005fsym_005fby_005fversion"></a>
<a name="bfd_005fhide_005fsym_005fby_005fversion"></a>
<h4 class="subsubsection">2.17.3.8 <code>bfd_hide_sym_by_version</code></h4>
<p><strong>Synopsis</strong>
</p><div class="example">
<pre class="example">bfd_boolean bfd_hide_sym_by_version
   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
</pre></div>
<p><strong>Description</strong><br>
Search an elf version script tree for symbol versioning
info for a given symbol.  Return TRUE if the symbol is hidden.
</p>

<hr>
<div class="header">
<p>
Previous: <a href="Relocating-the-section-contents.html#Relocating-the-section-contents" accesskey="p" rel="prev">Relocating the section contents</a>, Up: <a href="Performing-the-Final-Link.html#Performing-the-Final-Link" accesskey="u" rel="up">Performing the Final Link</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>



</body>
</html>
