[GLIBC][PATCH v2] Remove strdup inlines

Florian Weimer fweimer@redhat.com
Mon Dec 12 22:18:00 GMT 2016


On 12/12/2016 07:39 PM, Mike Frysinger wrote:
> On 12 Dec 2016 17:28, Wilco Dijkstra wrote:
>> Mike Frysinger wrote:
>>>> +# define strdup(s) __builtin_strdup (s)
>>>
>>> why do we need these at all ?  these seem like the sort of thing that
>>> gcc should do automatically for us ?
>>
>> strdup and strndup are used inside GLIBC and without these defines
>> I get lots of linknamespace and ocalplt failures. We do something similar
>> for __stpcpy in bits/string2.h. However here is this in include/string.h:
>>
>> #if (!IS_IN (libc) || !defined SHARED) \
>>   && !defined NO_MEMPCPY_STPCPY_REDIRECT
>> /* Redirect calls to __builtin_mempcpy and __builtin_stpcpy to call
>>    __mempcpy and __stpcpy if not inlined.  */
>> extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy");
>> extern __typeof (stpcpy) stpcpy __asm__ ("__stpcpy");
>> #endif
>>
>> Maybe strdup needs to be added here?
>
> right -- if it's for internal needs only, include/string.h is the right
> place to drop it in (with an explanation comment).  string/string.h is
> the exported header and i don't think this define makes sense there.

Traditionally, we do not fix this up through header magic, we rewrite 
all the occurrences to use __ symbols.

I think Joseph did many such cleanups in the past.  He may have guidance 
what to do here, too.

Thanks,
Florian



More information about the Libc-alpha mailing list