[RFC] Prevent tailcall optimizations of libdl functions
Florian Weimer
fweimer@redhat.com
Thu Jan 26 13:34:00 GMT 2017
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
More information about the Libc-alpha
mailing list