diff options
| author | Maxim Sobolev <sobomax@FreeBSD.org> | 2003-02-06 13:31:30 +0000 |
|---|---|---|
| committer | Maxim Sobolev <sobomax@FreeBSD.org> | 2003-02-06 13:31:30 +0000 |
| commit | ec3a2610cbda61aea0b6d6c82a719f9b3901910f (patch) | |
| tree | d373d89ad1dbd0b11350d09d2a2d66da6f1ad2f5 /libexec/rtld-elf | |
| parent | 8418379ae54515c66d16bc2caecd67f5c8db5d0f (diff) | |
Notes
Diffstat (limited to 'libexec/rtld-elf')
| -rw-r--r-- | libexec/rtld-elf/rtld.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index cb5cc28bf68d..f991c9c8c0b8 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -1566,11 +1566,8 @@ dlopen(const char *name, int mode) assert(*old_obj_tail == obj); result = load_needed_objects(obj); - if (result != -1 && ld_tracing) { - trace_loaded_objects(obj); - wlock_release(); - exit(0); - } + if (result != -1 && ld_tracing) + goto trace; if (result == -1 || (init_dag(obj), relocate_objects(obj, mode == RTLD_NOW)) == -1) { @@ -1583,7 +1580,8 @@ dlopen(const char *name, int mode) /* Make list of init functions to call. */ initlist_add_objects(obj, &obj->next, &initlist); } - } + } else if (ld_tracing) + goto trace; } GDB_STATE(RT_CONSISTENT,obj ? &obj->linkmap : NULL); @@ -1595,6 +1593,10 @@ dlopen(const char *name, int mode) objlist_clear(&initlist); wlock_release(); return obj; +trace: + trace_loaded_objects(obj); + wlock_release(); + exit(0); } void * |
