Improve handling of dlopen(RTLD_TRACE) aka ldd, of a library that
authorguenther <guenther@openbsd.org>
Tue, 15 Aug 2023 06:26:34 +0000 (06:26 +0000)
committerguenther <guenther@openbsd.org>
Tue, 15 Aug 2023 06:26:34 +0000 (06:26 +0000)
commitac42b3c848da4d98eda1f6048e269644297321f3
tree3c91b819fc08a7ac9f9f16f5969b18eec48a71ad
parent15fded6337a6d29a92d295a2764241b3e331aae0
Improve handling of dlopen(RTLD_TRACE) aka ldd, of a library that
is already loaded:
 * add a 'trace' argument to _dl_show_objects() and exit the
   walk-the-objects loop if you hit that traced object
 * in dlopen(), pass the trace object to _dl_show_objects()
 * also, invoke _dl_show_objects() + exit if the object was
   already opened
 * pass NULL to _dl_show_objects() for all the other calls
 * oh hey, _dl_tracelib is now superfluous: _dl_show_objects()
   should do the walk-the-objects loop only if trace is not NULL.

Problem noted by gnezdo@
ok millert@
libexec/ld.so/dlfcn.c
libexec/ld.so/loader.c
libexec/ld.so/resolve.h
libexec/ld.so/util.h