SPRAB89A September 2011 – March 2014
Preemption occurs when a symbol defined in a library is masked by a definition in an earlier executable or library. Earlier in this sense is according to the breadth-first ordering established by the dependence tree formed by the executable and its dependent libraries.
A symbol can be preempted only if all references to it, even from the module that defines it, use GOT-based addressing. The dynamic linker carries out the preemption by simply patching the address of the overriding symbol into the appropriate slot of the GOT.