toolchain/share/doc/ld.html/Output-Section-Discarding.html

77 lines
4.4 KiB
HTML
Raw Permalink Normal View History

2024-01-10 05:24:32 +00:00
<html lang="en">
<head>
<title>Output Section Discarding - 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="SECTIONS.html#SECTIONS" title="SECTIONS">
<link rel="prev" href="Output-Section-Keywords.html#Output-Section-Keywords" title="Output Section Keywords">
<link rel="next" href="Output-Section-Attributes.html#Output-Section-Attributes" title="Output Section Attributes">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU linker LD
(GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))
version 2.33.1.
Copyright (C) 1991-2019 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''.-->
<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="Output-Section-Discarding"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Output-Section-Attributes.html#Output-Section-Attributes">Output Section Attributes</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Output-Section-Keywords.html#Output-Section-Keywords">Output Section Keywords</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="SECTIONS.html#SECTIONS">SECTIONS</a>
<hr>
</div>
<h4 class="subsection">3.6.7 Output Section Discarding</h4>
<p><a name="index-discarding-sections-492"></a><a name="index-sections_002c-discarding-493"></a><a name="index-removing-sections-494"></a>The linker will not normally create output sections with no contents.
This is for convenience when referring to input sections that may or
may not be present in any of the input files. For example:
<pre class="smallexample"> .foo : { *(.foo) }
</pre>
<p class="noindent">will only create a &lsquo;<samp><span class="samp">.foo</span></samp>&rsquo; section in the output file if there is a
&lsquo;<samp><span class="samp">.foo</span></samp>&rsquo; section in at least one input file, and if the input
sections are not all empty. Other link script directives that allocate
space in an output section will also create the output section. So
too will assignments to dot even if the assignment does not create
space, except for &lsquo;<samp><span class="samp">. = 0</span></samp>&rsquo;, &lsquo;<samp><span class="samp">. = . + 0</span></samp>&rsquo;, &lsquo;<samp><span class="samp">. = sym</span></samp>&rsquo;,
&lsquo;<samp><span class="samp">. = . + sym</span></samp>&rsquo; and &lsquo;<samp><span class="samp">. = ALIGN (. != 0, expr, 1)</span></samp>&rsquo; when
&lsquo;<samp><span class="samp">sym</span></samp>&rsquo; is an absolute symbol of value 0 defined in the script.
This allows you to force output of an empty section with &lsquo;<samp><span class="samp">. = .</span></samp>&rsquo;.
<p>The linker will ignore address assignments (see <a href="Output-Section-Address.html#Output-Section-Address">Output Section Address</a>)
on discarded output sections, except when the linker script defines
symbols in the output section. In that case the linker will obey
the address assignments, possibly advancing dot even though the
section is discarded.
<p><a name="index-g_t_002fDISCARD_002f-495"></a>The special output section name &lsquo;<samp><span class="samp">/DISCARD/</span></samp>&rsquo; may be used to discard
input sections. Any input sections which are assigned to an output
section named &lsquo;<samp><span class="samp">/DISCARD/</span></samp>&rsquo; are not included in the output file.
</body></html>