This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Prevent tailcall optimizations of libdl functions


On 01/26/2017 02:09 PM, Szabolcs Nagy wrote:
On 26/01/17 12:43, Florian Weimer wrote:
On 01/26/2017 01:35 PM, Szabolcs Nagy wrote:
On 26/01/17 12:15, Florian Weimer wrote:
Maybe we should just change the definition of RTLD_DEFAULT and RTLD_NEXT, to something like this:

#define RTLD_DEFAULT ((void *) ((unsigned long) &__dso_handle | 1)))
#define RTLD_NEXT ((void *) ((unsigned long) &__dso_handle | 3)))

i think these should be constants that can be
copied and passed around between modules.

Why?  The effect of these identifies is very much module-specific, and the definition would make this explicit.

What do other libcs do here?  Bionic and FreeBSD use magic constants just like current glibc.

because ppl do wrappers like
http://git.haskell.org/packages/unix.git/blob/HEAD:/cbits/HsUnix.c#l12
which sit in one module and may get called from another one.

But the same thing would happen with dlsym: The caller would be identified as the wrapper, not the actual module calling dlsym.

Thanks,
Florian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]