You copied the Doc URL to your clipboard.

Symbol visibility for 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 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:

Table 17. Symbol visibility
VisibilityReferenceDefinition
STV_DEFAULTSymbol 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_PROTECTEDSymbol 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_HIDDENSTV_INTERNALSymbol 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.