toolchain/gcc-linaro-6.3.1-2017.02-x8.../share/doc/ld.html/Orphan-Sections.html

103 lines
4.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 GNU linker LD
(Linaro_Binutils-2017.02)
version 2.27.0.
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 no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is included in the
section entitled "GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>LD: Orphan Sections</title>
<meta name="description" content="LD: Orphan Sections">
<meta name="keywords" content="LD: Orphan Sections">
<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="LD-Index.html#LD-Index" rel="index" title="LD Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Expressions.html#Expressions" rel="up" title="Expressions">
<link href="Location-Counter.html#Location-Counter" rel="next" title="Location Counter">
<link href="Symbols.html#Symbols" rel="prev" title="Symbols">
<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="Orphan-Sections"></a>
<div class="header">
<p>
Next: <a href="Location-Counter.html#Location-Counter" accesskey="n" rel="next">Location Counter</a>, Previous: <a href="Symbols.html#Symbols" accesskey="p" rel="prev">Symbols</a>, Up: <a href="Expressions.html#Expressions" accesskey="u" rel="up">Expressions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="LD-Index.html#LD-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Orphan-Sections-1"></a>
<h4 class="subsection">3.10.4 Orphan Sections</h4>
<a name="index-orphan"></a>
<p>Orphan sections are sections present in the input files which
are not explicitly placed into the output file by the linker
script. The linker will still copy these sections into the
output file, but it has to guess as to where they should be
placed. The linker uses a simple heuristic to do this. It
attempts to place orphan sections after non-orphan sections of the
same attribute, such as code vs data, loadable vs non-loadable, etc.
If there is not enough room to do this then it places
at the end of the file.
</p>
<p>For ELF targets, the attribute of the section includes section type as
well as section flag.
</p>
<p>The command line options &lsquo;<samp>--orphan-handling</samp>&rsquo; and &lsquo;<samp>--unique</samp>&rsquo;
(see <a href="Options.html#Options">Command Line Options</a>) can be used to control which
output sections an orphan is placed in.
</p>
<p>If an orphaned section&rsquo;s name is representable as a C identifier then
the linker will automatically see <a href="PROVIDE.html#PROVIDE">PROVIDE</a> two symbols:
__start_SECNAME and __stop_SECNAME, where SECNAME is the name of the
section. These indicate the start address and end address of the
orphaned section respectively. Note: most section names are not
representable as C identifiers because they contain a &lsquo;<samp>.</samp>&rsquo;
character.
</p>
</body>
</html>