• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2011.09/share/doc/arm-arm-none-eabi/html/ld.html/
1<html lang="en">
2<head>
3<title>PROVIDE - Untitled</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Untitled">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="Assignments.html#Assignments" title="Assignments">
9<link rel="prev" href="Simple-Assignments.html#Simple-Assignments" title="Simple Assignments">
10<link rel="next" href="PROVIDE_005fHIDDEN.html#PROVIDE_005fHIDDEN" title="PROVIDE_HIDDEN">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<!--
13This file documents the GNU linker LD
14(Sourcery CodeBench Lite 2011.09-69)
15version 2.21.53.
16
17Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
182001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
19
20Permission is granted to copy, distribute and/or modify this document
21under the terms of the GNU Free Documentation License, Version 1.3
22or any later version published by the Free Software Foundation;
23with no Invariant Sections, with no Front-Cover Texts, and with no
24Back-Cover Texts.  A copy of the license is included in the
25section entitled ``GNU Free Documentation License''.-->
26<meta http-equiv="Content-Style-Type" content="text/css">
27<style type="text/css"><!--
28  pre.display { font-family:inherit }
29  pre.format  { font-family:inherit }
30  pre.smalldisplay { font-family:inherit; font-size:smaller }
31  pre.smallformat  { font-family:inherit; font-size:smaller }
32  pre.smallexample { font-size:smaller }
33  pre.smalllisp    { font-size:smaller }
34  span.sc    { font-variant:small-caps }
35  span.roman { font-family:serif; font-weight:normal; } 
36  span.sansserif { font-family:sans-serif; font-weight:normal; } 
37--></style>
38<link rel="stylesheet" type="text/css" href="../cs.css">
39</head>
40<body>
41<div class="node">
42<a name="PROVIDE"></a>
43<p>
44Next:&nbsp;<a rel="next" accesskey="n" href="PROVIDE_005fHIDDEN.html#PROVIDE_005fHIDDEN">PROVIDE_HIDDEN</a>,
45Previous:&nbsp;<a rel="previous" accesskey="p" href="Simple-Assignments.html#Simple-Assignments">Simple Assignments</a>,
46Up:&nbsp;<a rel="up" accesskey="u" href="Assignments.html#Assignments">Assignments</a>
47<hr>
48</div>
49
50<h4 class="subsection">3.5.2 PROVIDE</h4>
51
52<p><a name="index-PROVIDE-398"></a>In some cases, it is desirable for a linker script to define a symbol
53only if it is referenced and is not defined by any object included in
54the link.  For example, traditional linkers defined the symbol
55&lsquo;<samp><span class="samp">etext</span></samp>&rsquo;.  However, ANSI C requires that the user be able to use
56&lsquo;<samp><span class="samp">etext</span></samp>&rsquo; as a function name without encountering an error.  The
57<code>PROVIDE</code> keyword may be used to define a symbol, such as
58&lsquo;<samp><span class="samp">etext</span></samp>&rsquo;, only if it is referenced but not defined.  The syntax is
59<code>PROVIDE(</code><var>symbol</var><code> = </code><var>expression</var><code>)</code>.
60
61   <p>Here is an example of using <code>PROVIDE</code> to define &lsquo;<samp><span class="samp">etext</span></samp>&rsquo;:
62<pre class="smallexample">     SECTIONS
63     {
64       .text :
65         {
66           *(.text)
67           _etext = .;
68           PROVIDE(etext = .);
69         }
70     }
71</pre>
72   <p>In this example, if the program defines &lsquo;<samp><span class="samp">_etext</span></samp>&rsquo; (with a leading
73underscore), the linker will give a multiple definition error.  If, on
74the other hand, the program defines &lsquo;<samp><span class="samp">etext</span></samp>&rsquo; (with no leading
75underscore), the linker will silently use the definition in the program. 
76If the program references &lsquo;<samp><span class="samp">etext</span></samp>&rsquo; but does not define it, the
77linker will use the definition in the linker script.
78
79   </body></html>
80
81