2.2 Linker Scoping Specifiers
The following
declaration specifiers help hide declarations and definitions of
extern symbols. By using these specifiers, you no longer need to use mapfiles for
linker scoping. You can also control the default setting for variable scoping by specifying
–xldscope on the command line. For more information, see -xldscope={v}.
Table 2-2 Declaration Specifiers
|
|
__global
|
The
symbol has global linker scoping and is the least restrictive linker scoping. All
references to the symbol bind to the definition in the first dynamic module that defines the symbol.
This linker scoping is the current linker scoping for extern symbols.
|
__symbolic
|
The
symbol has symbolic linker scoping and is more restrictive than global linker scoping.
All references to the symbol from within the dynamic module being linked bind to the symbol defined
within the module. Outside of the module, the symbol appears as though it were global. This linker
scoping corresponds to the linker option -Bsymbolic. For more information about
the linker, see ld(1).
|
__hidden
|
The
symbol has hidden linker scoping. Hidden linker scoping is more restrictive than
symbolic and global linker scoping. All references within a dynamic module bind to a definition
within that module. The symbol will not be visible outside of the module.
|
|
An object or function may be redeclared with a more restrictive specifier, but may not be
redeclared with a less restrictive specifier. A symbol may not be declared with a different
specifier once the symbol has been defined.
__global is the least restrictive scoping, __symbolic is
more restrictive, and __hidden is the most restrictive scoping.