This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC] Prevent tailcall optimizations of libdl functions
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.
the glibc dlsym manual is not very clear about the nature
of these macros, but i think historically they are assumed
to be const and what matters is where dlsym is called from,
not where RTLD_NEXT is used.