public inbox for libc-help@sourceware.org
 help / color / mirror / Atom feed
* Enable preloading in dlopen-ed shared libraries?
@ 2021-07-14  8:44 Fengkai Sun
  2021-07-23 21:00 ` Adhemerval Zanella
  0 siblings, 1 reply; 8+ messages in thread
From: Fengkai Sun @ 2021-07-14  8:44 UTC (permalink / raw)
  To: libc-help

Hi list,

As I dive a little deeper into the source code, I found that
`_dl_map_object_deps' is called in both rtld.c and dl-open.c.

The semantics of two invocations are both clear: rtld.c makes a call like
this:
_dl_map_object_deps (main_map, preloads, npreloads, mode == trace, 0);
because ld.so needs to preload the libraries specified by LD_PRELOAD into
the global scope for interposing the symbols.

dl-open.c makes a call like this:
_dl_map_object_deps (new, NULL, 0, 0,
      mode & (__RTLD_DLOPEN | RTLD_DEEPBIND | __RTLD_AUDIT));
because no dlopen-ed library needs to preload anything.

However, I think it might be useful to allow users to preload some
libraries in the local scope after the map of the dlopen-ed library, just
like how ld.so treats preloaded libs in global scope.

By doing so, the user can easily provide a different definition of a symbol
from the one of the main executable, by enabling RTLD_DEEPBIND.
This is useful under some circumstances. For example, a dlopen-ed library
may want to use a separate heap from the main heap, and the user can
provide another malloc implementation for that library.

The auditing interface can do the similar thing, but after doing some
experiments, I found that `la_symbind64' cannot catch the bindings of
global variables, and it cannot hook all of the function bindings.

Would it be a good idea to add an interface to enable preloading in the
local scope of dlopen-ed shared libraries?

Thank you in advance.

--
Best,
Fengkai

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-07-28 19:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-14  8:44 Enable preloading in dlopen-ed shared libraries? Fengkai Sun
2021-07-23 21:00 ` Adhemerval Zanella
2021-07-24  2:51   ` Fengkai Sun
2021-07-26 19:51     ` Adhemerval Zanella
2021-07-27 13:23       ` Vivek Das Mohapatra
2021-07-28  6:17       ` Fengkai Sun
2021-07-28 18:09         ` Adhemerval Zanella
2021-07-28 19:02           ` Geoff T

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).