SPRAB89A September 2011 – March 2014
Under Linux, the default visibility for global symbols is STV_DEFAULT. In a shared object, defined symbols with STV_DEFAULT visibility are subject to preemption and must be addressed as if they were imported. In an executable, the import-as-own convention (see Section 15.10) allows defined and undefined variables with STV_DEFAULT visibility to be addressed as it they were STV_INTERNAL; that is, using DP-relative addressing.
Toolchains may implement vendor-specific options or extensions that alter the default visibility rules. These must be reflected using standard values for the visibility flags in the affected symbol(s).