This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [GLIBC][PATCH v2] Remove strdup inlines
On Thu, Dec 15, 2016 at 8:16 AM, Wilco Dijkstra <Wilco.Dijkstra@arm.com> wrote:
>
> No I'm not talking about the C++ const inlines, I mean redirects to avoid namespace
> issues (and to enable GCC to optimize builtins) for non-C90 functions that are used
> inside GLIBC. Eg:
>
> #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
I tend to think this is the best approach, since it doesn't involve
macros and doesn't require the use of mangled names in the source
code. However, the NO_MEMPCPY_STPCPY_REDIRECT thing is a big mess and
we might not want to have more of that.
> # ifndef _ISOMAC
> # ifndef index
> # define index(s, c) (strchr ((s), (c)))
> # endif
> # ifndef rindex
> # define rindex(s, c) (strrchr ((s), (c)))
> # endif
> # endif
Arguably we shouldn't be using these legacy names at all in glibc's
source. Maybe they should be poisoned (#pragma GCC poison).
> Note there are also plenty of calls to functions with underscores, eg. __stpcpy,
> __mempcpy, __bzero, so we ideally need to either rename these to use the base name
> or redirect to the builtin.
I'd prefer to rename to the base name, but that's just for aesthetics.
zw