Each symbol has a visibility property that can be controlled by compiler switches, a steering file, or attributes in the source code. If the symbol is a reference, the visibility controls the definitions that the linker can use to define the symbol. If the symbol is a definition, the visibility controls whether the symbol can be made visible outside the current module.
The visibility options defined by the ELF specification are:
|Symbol can be bound to a definition in a shared object.||Symbol can be made visible outside the module. It can be preempted by the dynamic linker by a definition from another module.|
|Symbol must be resolved within the module.||Symbol can be made visible outside the module. It cannot be preempted at run-time by a definition from another module.|
|Symbol must be resolved within the module.||Symbol is not visible outside the module.|
Symbol preemption is most common in System V (SysV) systems. Symbol preemption can happen in dynamically linked library (DLL) like implementations of the Base Platform Application Binary Interface (BPABI). The platform owner defines how this works. See the documentation for your specific platform for more information.
- Other information
SysV ELF specification.