summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2005-12-22 16:42:38 +0000
committerkan <kan@FreeBSD.org>2005-12-22 16:42:38 +0000
commit0abef7d070e779458b3f4dced61eb7c56f9dffab (patch)
treeb57026149740e433b9ca367ee38817936b3c09f4 /libexec/rtld-elf
parentd4cd89f6af50e921c62622f69aafbc3ab904e5f6 (diff)
downloadFreeBSD-src-0abef7d070e779458b3f4dced61eb7c56f9dffab.zip
FreeBSD-src-0abef7d070e779458b3f4dced61eb7c56f9dffab.tar.gz
Initialize object dagmembers list before checking version dependencies.
Diffstat (limited to 'libexec/rtld-elf')
-rw-r--r--libexec/rtld-elf/rtld.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index e379004..01ea4f6 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -1762,16 +1762,14 @@ dlopen(const char *name, int mode)
mode &= RTLD_MODEMASK;
if (*old_obj_tail != NULL) { /* We loaded something new. */
assert(*old_obj_tail == obj);
-
result = load_needed_objects(obj);
+ init_dag(obj);
if (result != -1)
result = rtld_verify_versions(&obj->dagmembers);
if (result != -1 && ld_tracing)
goto trace;
-
if (result == -1 ||
- (init_dag(obj), relocate_objects(obj, mode == RTLD_NOW,
- &obj_rtld)) == -1) {
+ (relocate_objects(obj, mode == RTLD_NOW, &obj_rtld)) == -1) {
obj->dl_refcount--;
unref_dag(obj);
if (obj->refcount == 0)
OpenPOWER on IntegriCloud