summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/amd64
diff options
context:
space:
mode:
authorjdp <jdp@FreeBSD.org>1999-08-30 01:48:19 +0000
committerjdp <jdp@FreeBSD.org>1999-08-30 01:48:19 +0000
commit4382ccec34f7f0bb2721459e301575176a175688 (patch)
treeb8c873578b2f44d81183ecf2c7d5dd097bff5f6b /libexec/rtld-elf/amd64
parentd8c85ab826fb402b3bb08f91f622e4e355f63b21 (diff)
downloadFreeBSD-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
OpenPOWER on IntegriCloud