diff options
| author | Alexander Kabaev <kan@FreeBSD.org> | 2009-06-16 16:38:54 +0000 |
|---|---|---|
| committer | Alexander Kabaev <kan@FreeBSD.org> | 2009-06-16 16:38:54 +0000 |
| commit | 1310f23766bb99cae81e16e1a21960b21888aa94 (patch) | |
| tree | e91941ea186edc47d2b7f7a7efbf15485d799383 /libexec | |
| parent | 5d54b264b7329230ef94c7882f56b74a4af0cf8c (diff) | |
Notes
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/rtld-elf/rtld.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index 40ed6edc3b16a..7e4c995d1defc 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -2130,6 +2130,16 @@ do_dlsym(void *handle, const char *name, void *retaddr, const Ver_Entry *ve, /* Search main program and all libraries loaded by it. */ def = symlook_list(name, hash, &list_main, &defobj, ve, flags, &donelist); + + /* + * We do not distinguish between 'main' object an global scope. + * If symbol is not defined by objects loaded at startup, continue + * search among dynamically loaded objects with RTLD_GLOBAL + * scope. + */ + if (def == NULL) + def = symlook_list(name, hash, &list_global, &defobj, ve, + flags, &donelist); } else { Needed_Entry fake; |
