Symbol visibility for BPABI models
For Base Platform Application Binary Interface (BPABI) models, each symbol has a visibility property that can be controlled by compiler switches, a steering file, or attributes in the source code.
If a symbol is a reference, the visibility controls the definitions that the linker can use to define the symbol.
If a 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:
|STV_DEFAULT||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.|
|STV_PROTECTED||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.|
|STV_HIDDEN STV_INTERNAL||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 BPABI. The platform owner defines how this works. See the documentation for your specific platform for more information.