From: Florian Weimer Date: Sun, 2 Feb 2025 19:10:09 +0000 (+0100) Subject: elf: Use _dl_find_object instead of _dl_find_dso_for_object in dlopen X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc058b46c78f090580c1ca5b785b54ae4092f0c1;p=thirdparty%2Fglibc.git elf: Use _dl_find_object instead of _dl_find_dso_for_object in dlopen The _dl_find_object function uses a binary search and is faster if there are many objects. --- diff --git a/elf/dl-open.c b/elf/dl-open.c index ee420983cd..60a1dce9de 100644 --- a/elf/dl-open.c +++ b/elf/dl-open.c @@ -866,8 +866,10 @@ no more namespaces available for dlmopen()")); if (nsid == __LM_ID_CALLER || strchr (file, '$') != NULL || strchr (file, '/') == NULL) { - args.caller_map = _dl_find_dso_for_object ((ElfW(Addr)) caller_dlopen); - if (args.caller_map == NULL) + struct dl_find_object dlfo; + if (_dl_find_object ((void *) caller_dlopen, &dlfo) == 0) + args.caller_map = dlfo.dlfo_link_map; + else /* By default we assume this is the main application. */ args.caller_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded; if (args.nsid == __LM_ID_CALLER)