[Feature Request] dlopen_from function

Szabolcs Nagy szabolcs.nagy@arm.com
Wed Jun 23 07:37:52 GMT 2021


The 06/19/2021 09:23, Jakob Skaar via Libc-help wrote:
> Hi,
> 
> The behaviour of certain functions in libdl[^2] like the `dlopen`
> function is dependent on where it is called from. This is normally
> what you want, but sometimes you may want to specify the caller
> address yourself, for example when intercepting/hooking the `dlopen`
> function itself. For this reason, Apple has added the `dlopen_from`
> function in macOS Big Sur. `dlopen_from` has an extra parameter, `void
> *caller`, that specifies the "fake" caller address to be used instead
> of `RETURN_ADDRESS(0)`[^3]. Using `dlopen_from` significantly
> simplifies intercepting `dlopen` calls (see [here][1] for an example).
> So my feature request is to implement `dlopen_from` in glibc too.

i think glibc specific feature requests should go to
bugzilla.

but i would be useful to discuss this on
libc-coord@lists.openwall.com to see if there is
interest across implementations otherwise the api
will not work portably.

> 
> [1]: <https://github.com/clementgallet/libTAS/blob/70966f9e1f400dfdd5176bba63c11cb6026d3da6/src/library/dlhook.cpp#L108-L189>
> [^2]: The same logic also applies to `dlmopen`, `dlsym`, and `dlvsym`.
> [^3]: Header file where `dlopen_from` is declared:
> <https://opensource.apple.com/source/dyld/dyld-832.7.3/include/dlfcn_private.h.auto.html>


More information about the Libc-help mailing list