diff options
author | jdp <jdp@FreeBSD.org> | 1999-08-30 01:48:19 +0000 |
---|---|---|
committer | jdp <jdp@FreeBSD.org> | 1999-08-30 01:48:19 +0000 |
commit | 4382ccec34f7f0bb2721459e301575176a175688 (patch) | |
tree | b8c873578b2f44d81183ecf2c7d5dd097bff5f6b /libexec/rtld-elf/amd64 | |
parent | d8c85ab826fb402b3bb08f91f622e4e355f63b21 (diff) | |
download | FreeBSD-src-4382ccec34f7f0bb2721459e301575176a175688.zip FreeBSD-src-4382ccec34f7f0bb2721459e301575176a175688.tar.gz |
Revamp the symbol lookup algorithm to cope better with objects
loaded separately by dlopen that have global symbols with identical
names. Viewing each dlopened object as a DAG which is linked by its
DT_NEEDED entries in the dynamic table, the search order is as
follows:
* If the referencing object was linked with -Bsymbolic, search it
internally.
* Search all dlopened DAGs containing the referencing object.
* Search all objects loaded at program start up.
* Search all objects which were dlopened() using the RTLD_GLOBAL
flag (which is now supported too).
The search terminates as soon as a strong definition is found.
Lacking that, the first weak definition is used.
These rules match those of Solaris, as best I could determine them
from its vague manual pages and the results of experiments I performed.
PR: misc/12438
Diffstat (limited to 'libexec/rtld-elf/amd64')
0 files changed, 0 insertions, 0 deletions