Using the -B symbolic
Option
The link-editor's -B symbolic
option enables you to
bind symbol references to their global definitions within a shared object. This option
is historic, in that it was designed for use in creating the runtime linker
itself.
Defining an object's interface and reducing non-public symbols to local is preferable
to using the -B symbolic
option. See Reducing Symbol Scope. Using
-B symbolic
can often result in some non-intuitive side
effects.
If a symbolically bound symbol is interposed upon, then references to the symbol from outside of the symbolically bound object bind to the interposer. The object itself is already bound internally. Essentially, two symbols with the same name are now being referenced from within the process. A symbolically bound data symbol that results in a copy relocation creates the same interposition situation. See Copy Relocations.
Note:
Symbolically bound shared objects are identified by the.dynamic
flag DF_SYMBOLIC
. This flag is
informational only. The runtime linker processes symbol lookups from these objects
in the same manner as any other object. Any symbolic binding is assumed to have been
created at the link-edit phase.