|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <!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
- (GNU Arm Embedded Toolchain 10-2020-q4-major)
- version 2.35.1.
-
- Copyright (C) 1991-2020 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 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Input Section Wildcards (LD)</title>
-
- <meta name="description" content="Input Section Wildcards (LD)">
- <meta name="keywords" content="Input Section Wildcards (LD)">
- <meta name="resource-type" content="document">
- <meta name="distribution" content="global">
- <meta name="Generator" content="makeinfo">
- <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="Input-Section.html#Input-Section" rel="up" title="Input Section">
- <link href="Input-Section-Common.html#Input-Section-Common" rel="next" title="Input Section Common">
- <link href="Input-Section-Basics.html#Input-Section-Basics" rel="prev" title="Input Section Basics">
- <style type="text/css">
- <!--
- a.summary-letter {text-decoration: none}
- blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
- div.display {margin-left: 3.2em}
- div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- 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.nolinebreak {white-space: nowrap}
- span.roman {font-family: initial; font-weight: normal}
- span.sansserif {font-family: sans-serif; font-weight: normal}
- ul.no-bullet {list-style: none}
- -->
- </style>
-
-
- </head>
-
- <body lang="en">
- <a name="Input-Section-Wildcards"></a>
- <div class="header">
- <p>
- Next: <a href="Input-Section-Common.html#Input-Section-Common" accesskey="n" rel="next">Input Section Common</a>, Previous: <a href="Input-Section-Basics.html#Input-Section-Basics" accesskey="p" rel="prev">Input Section Basics</a>, Up: <a href="Input-Section.html#Input-Section" accesskey="u" rel="up">Input Section</a> [<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="Input-Section-Wildcard-Patterns"></a>
- <h4 class="subsubsection">3.6.4.2 Input Section Wildcard Patterns</h4>
- <a name="index-input-section-wildcards"></a>
- <a name="index-wildcard-file-name-patterns"></a>
- <a name="index-file-name-wildcard-patterns"></a>
- <a name="index-section-name-wildcard-patterns"></a>
- <p>In an input section description, either the file name or the section
- name or both may be wildcard patterns.
- </p>
- <p>The file name of ‘<samp>*</samp>’ seen in many examples is a simple wildcard
- pattern for the file name.
- </p>
- <p>The wildcard patterns are like those used by the Unix shell.
- </p>
- <dl compact="compact">
- <dt>‘<samp>*</samp>’</dt>
- <dd><p>matches any number of characters
- </p></dd>
- <dt>‘<samp>?</samp>’</dt>
- <dd><p>matches any single character
- </p></dd>
- <dt>‘<samp>[<var>chars</var>]</samp>’</dt>
- <dd><p>matches a single instance of any of the <var>chars</var>; the ‘<samp>-</samp>’
- character may be used to specify a range of characters, as in
- ‘<samp>[a-z]</samp>’ to match any lower case letter
- </p></dd>
- <dt>‘<samp>\</samp>’</dt>
- <dd><p>quotes the following character
- </p></dd>
- </dl>
-
- <p>When a file name is matched with a wildcard, the wildcard characters
- will not match a ‘<samp>/</samp>’ character (used to separate directory names on
- Unix). A pattern consisting of a single ‘<samp>*</samp>’ character is an
- exception; it will always match any file name, whether it contains a
- ‘<samp>/</samp>’ or not. In a section name, the wildcard characters will match
- a ‘<samp>/</samp>’ character.
- </p>
- <p>File name wildcard patterns only match files which are explicitly
- specified on the command line or in an <code>INPUT</code> command. The linker
- does not search directories to expand wildcards.
- </p>
- <p>If a file name matches more than one wildcard pattern, or if a file name
- appears explicitly and is also matched by a wildcard pattern, the linker
- will use the first match in the linker script. For example, this
- sequence of input section descriptions is probably in error, because the
- <samp>data.o</samp> rule will not be used:
- </p><div class="smallexample">
- <pre class="smallexample">.data : { *(.data) }
- .data1 : { data.o(.data) }
- </pre></div>
-
- <a name="index-SORT_005fBY_005fNAME"></a>
- <p>Normally, the linker will place files and sections matched by wildcards
- in the order in which they are seen during the link. You can change
- this by using the <code>SORT_BY_NAME</code> keyword, which appears before a wildcard
- pattern in parentheses (e.g., <code>SORT_BY_NAME(.text*)</code>). When the
- <code>SORT_BY_NAME</code> keyword is used, the linker will sort the files or sections
- into ascending order by name before placing them in the output file.
- </p>
- <a name="index-SORT_005fBY_005fALIGNMENT"></a>
- <p><code>SORT_BY_ALIGNMENT</code> is similar to <code>SORT_BY_NAME</code>.
- <code>SORT_BY_ALIGNMENT</code> will sort sections into descending order of
- alignment before placing them in the output file. Placing larger
- alignments before smaller alignments can reduce the amount of padding
- needed.
- </p>
- <a name="index-SORT_005fBY_005fINIT_005fPRIORITY"></a>
- <p><code>SORT_BY_INIT_PRIORITY</code> is also similar to <code>SORT_BY_NAME</code>.
- <code>SORT_BY_INIT_PRIORITY</code> will sort sections into ascending
- numerical order of the GCC init_priority attribute encoded in the
- section name before placing them in the output file. In
- <code>.init_array.NNNNN</code> and <code>.fini_array.NNNNN</code>, <code>NNNNN</code> is
- the init_priority. In <code>.ctors.NNNNN</code> and <code>.dtors.NNNNN</code>,
- <code>NNNNN</code> is 65535 minus the init_priority.
- </p>
- <a name="index-SORT"></a>
- <p><code>SORT</code> is an alias for <code>SORT_BY_NAME</code>.
- </p>
- <p>When there are nested section sorting commands in linker script, there
- can be at most 1 level of nesting for section sorting commands.
- </p>
- <ol>
- <li> <code>SORT_BY_NAME</code> (<code>SORT_BY_ALIGNMENT</code> (wildcard section pattern)).
- It will sort the input sections by name first, then by alignment if two
- sections have the same name.
- </li><li> <code>SORT_BY_ALIGNMENT</code> (<code>SORT_BY_NAME</code> (wildcard section pattern)).
- It will sort the input sections by alignment first, then by name if two
- sections have the same alignment.
- </li><li> <code>SORT_BY_NAME</code> (<code>SORT_BY_NAME</code> (wildcard section pattern)) is
- treated the same as <code>SORT_BY_NAME</code> (wildcard section pattern).
- </li><li> <code>SORT_BY_ALIGNMENT</code> (<code>SORT_BY_ALIGNMENT</code> (wildcard section pattern))
- is treated the same as <code>SORT_BY_ALIGNMENT</code> (wildcard section pattern).
- </li><li> All other nested section sorting commands are invalid.
- </li></ol>
-
- <p>When both command-line section sorting option and linker script
- section sorting command are used, section sorting command always
- takes precedence over the command-line option.
- </p>
- <p>If the section sorting command in linker script isn’t nested, the
- command-line option will make the section sorting command to be
- treated as nested sorting command.
- </p>
- <ol>
- <li> <code>SORT_BY_NAME</code> (wildcard section pattern ) with
- <samp>--sort-sections alignment</samp> is equivalent to
- <code>SORT_BY_NAME</code> (<code>SORT_BY_ALIGNMENT</code> (wildcard section pattern)).
- </li><li> <code>SORT_BY_ALIGNMENT</code> (wildcard section pattern) with
- <samp>--sort-section name</samp> is equivalent to
- <code>SORT_BY_ALIGNMENT</code> (<code>SORT_BY_NAME</code> (wildcard section pattern)).
- </li></ol>
-
- <p>If the section sorting command in linker script is nested, the
- command-line option will be ignored.
- </p>
- <a name="index-SORT_005fNONE"></a>
- <p><code>SORT_NONE</code> disables section sorting by ignoring the command-line
- section sorting option.
- </p>
- <p>If you ever get confused about where input sections are going, use the
- ‘<samp>-M</samp>’ linker option to generate a map file. The map file shows
- precisely how input sections are mapped to output sections.
- </p>
- <p>This example shows how wildcard patterns might be used to partition
- files. This linker script directs the linker to place all ‘<samp>.text</samp>’
- sections in ‘<samp>.text</samp>’ and all ‘<samp>.bss</samp>’ sections in ‘<samp>.bss</samp>’.
- The linker will place the ‘<samp>.data</samp>’ section from all files beginning
- with an upper case character in ‘<samp>.DATA</samp>’; for all other files, the
- linker will place the ‘<samp>.data</samp>’ section in ‘<samp>.data</samp>’.
- </p><div class="smallexample">
- <pre class="smallexample">SECTIONS {
- .text : { *(.text) }
- .DATA : { [A-Z]*(.data) }
- .data : { *(.data) }
- .bss : { *(.bss) }
- }
- </pre></div>
-
- <hr>
- <div class="header">
- <p>
- Next: <a href="Input-Section-Common.html#Input-Section-Common" accesskey="n" rel="next">Input Section Common</a>, Previous: <a href="Input-Section-Basics.html#Input-Section-Basics" accesskey="p" rel="prev">Input Section Basics</a>, Up: <a href="Input-Section.html#Input-Section" accesskey="u" rel="up">Input Section</a> [<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>
-
-
-
- </body>
- </html>
|