[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
In some cases, it is desirable for a linker script to define a symbol
only if it is referenced and is not defined by any object included in
the link. For example, traditional linkers defined the symbol
`etext'. However, ANSI C requires that the user be able to use
`etext' as a function name without encountering an error. The
PROVIDE
keyword may be used to define a symbol, such as
`etext', only if it is referenced but not defined. The syntax is
PROVIDE(symbol = expression)
.
Here is an example of using PROVIDE
to define `etext':
SECTIONS { .text : { *(.text) _etext = .; PROVIDE(etext = .); } } |
In this example, if the program defines `_etext' (with a leading underscore), the linker will give a multiple definition error. If, on the other hand, the program defines `etext' (with no leading underscore), the linker will silently use the definition in the program. If the program references `etext' but does not define it, the linker will use the definition in the linker script.
This document was generated by Build Daemon user on October, 25 2005 using texi2html 1.76.