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.