<html lang="en"> <head> <title>Miscellaneous Commands - Untitled</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="Untitled"> <meta name="generator" content="makeinfo 4.7"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Simple-Commands.html#Simple-Commands" title="Simple Commands"> <link rel="prev" href="Format-Commands.html#Format-Commands" title="Format Commands"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- This file documents the GNU linker LD (GNU Binutils) version 2.19. Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 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.1 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; } --></style> </head> <body> <div class="node"> <p> <a name="Miscellaneous-Commands"></a>Previous: <a rel="previous" accesskey="p" href="Format-Commands.html#Format-Commands">Format Commands</a>, Up: <a rel="up" accesskey="u" href="Simple-Commands.html#Simple-Commands">Simple Commands</a> <hr><br> </div> <h4 class="subsection">3.4.4 Other Linker Script Commands</h4> <p>There are a few other linker scripts commands. <dl> <dt><code>ASSERT(</code><var>exp</var><code>, </code><var>message</var><code>)</code><dd><a name="index-ASSERT-341"></a><a name="index-assertion-in-linker-script-342"></a>Ensure that <var>exp</var> is non-zero. If it is zero, then exit the linker with an error code, and print <var>message</var>. <br><dt><code>EXTERN(</code><var>symbol</var> <var>symbol</var><code> ...)</code><dd><a name="index-EXTERN-343"></a><a name="index-undefined-symbol-in-linker-script-344"></a>Force <var>symbol</var> to be entered in the output file as an undefined symbol. Doing this may, for example, trigger linking of additional modules from standard libraries. You may list several <var>symbol</var>s for each <code>EXTERN</code>, and you may use <code>EXTERN</code> multiple times. This command has the same effect as the <span class="samp">-u</span> command-line option. <br><dt><code>FORCE_COMMON_ALLOCATION</code><dd><a name="index-FORCE_005fCOMMON_005fALLOCATION-345"></a><a name="index-common-allocation-in-linker-script-346"></a>This command has the same effect as the <span class="samp">-d</span> command-line option: to make <span class="command">ld</span> assign space to common symbols even if a relocatable output file is specified (<span class="samp">-r</span>). <br><dt><code>INHIBIT_COMMON_ALLOCATION</code><dd><a name="index-INHIBIT_005fCOMMON_005fALLOCATION-347"></a><a name="index-common-allocation-in-linker-script-348"></a>This command has the same effect as the <span class="samp">--no-define-common</span> command-line option: to make <code>ld</code> omit the assignment of addresses to common symbols even for a non-relocatable output file. <br><dt><code>INSERT [ AFTER | BEFORE ] </code><var>output_section</var><dd><a name="index-INSERT-349"></a><a name="index-insert-user-script-into-default-script-350"></a>This command is typically used in a script specified by <span class="samp">-T</span> to augment the default <code>SECTIONS</code> with, for example, overlays. It inserts all prior linker script statements after (or before) <var>output_section</var>, and also causes <span class="samp">-T</span> to not override the default linker script. The exact insertion point is as for orphan sections. See <a href="Location-Counter.html#Location-Counter">Location Counter</a>. The insertion happens after the linker has mapped input sections to output sections. Prior to the insertion, since <span class="samp">-T</span> scripts are parsed before the default linker script, statements in the <span class="samp">-T</span> script occur before the default linker script statements in the internal linker representation of the script. In particular, input section assignments will be made to <span class="samp">-T</span> output sections before those in the default script. Here is an example of how a <span class="samp">-T</span> script using <code>INSERT</code> might look: <pre class="smallexample"> SECTIONS { OVERLAY : { .ov1 { ov1*(.text) } .ov2 { ov2*(.text) } } } INSERT AFTER .text; </pre> <br><dt><code>NOCROSSREFS(</code><var>section</var> <var>section</var><code> ...)</code><dd><a name="index-NOCROSSREFS_0028_0040var_007bsections_007d_0029-351"></a><a name="index-cross-references-352"></a>This command may be used to tell <span class="command">ld</span> to issue an error about any references among certain output sections. <p>In certain types of programs, particularly on embedded systems when using overlays, when one section is loaded into memory, another section will not be. Any direct references between the two sections would be errors. For example, it would be an error if code in one section called a function defined in the other section. <p>The <code>NOCROSSREFS</code> command takes a list of output section names. If <span class="command">ld</span> detects any cross references between the sections, it reports an error and returns a non-zero exit status. Note that the <code>NOCROSSREFS</code> command uses output section names, not input section names. <br><dt><code>OUTPUT_ARCH(</code><var>bfdarch</var><code>)</code><dd><a name="index-OUTPUT_005fARCH_0028_0040var_007bbfdarch_007d_0029-353"></a><a name="index-machine-architecture-354"></a><a name="index-architecture-355"></a>Specify a particular output machine architecture. The argument is one of the names used by the BFD library (see <a href="BFD.html#BFD">BFD</a>). You can see the architecture of an object file by using the <code>objdump</code> program with the <span class="samp">-f</span> option. </dl> </body></html>