 
 
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.
Packaging copyright © 1988-2000 OAR Corporation Context copyright by each document's author. See Free Software Foundation for information.