1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

* string/bits/string3.h (memcpy, memmove, mempcpy, memset, bcopy,

bzero, strcpy, stpcpy, strncpy, strcat, strncat): Use
	__extern_always_inline functions unconditionally, drop macros.
This commit is contained in:
Ulrich Drepper
2007-10-03 18:33:57 +00:00
parent ac97dec17a
commit e5dd21787d
2 changed files with 7 additions and 127 deletions

View File

@ -1,5 +1,9 @@
2007-10-03 Jakub Jelinek 2007-10-03 Jakub Jelinek
* string/bits/string3.h (memcpy, memmove, mempcpy, memset, bcopy,
bzero, strcpy, stpcpy, strncpy, strcat, strncat): Use
__extern_always_inline functions unconditionally, drop macros.
* misc/sys/cdefs.h (__REDIRECT_LDBL, __REDIRECT_NTH_LDBL): New macros. * misc/sys/cdefs.h (__REDIRECT_LDBL, __REDIRECT_NTH_LDBL): New macros.
* wcsmbs/bits/wchar2.h (__swprintf_alias, __vswprintf_alias): Use * wcsmbs/bits/wchar2.h (__swprintf_alias, __vswprintf_alias): Use
__REDIRECT_NTH_LDBL macro rather than __REDIRECT_NTH. __REDIRECT_NTH_LDBL macro rather than __REDIRECT_NTH.

View File

@ -45,65 +45,27 @@ __warndecl (__warn_memset_zero_len,
#endif #endif
#ifdef __cplusplus
__extern_always_inline void * __extern_always_inline void *
__NTH (memcpy (void *__restrict __dest, __const void *__restrict __src, __NTH (memcpy (void *__restrict __dest, __const void *__restrict __src,
size_t __len)) size_t __len))
{ {
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
} }
#else
# define memcpy(dest, src, len) \
((__bos0 (dest) != (size_t) -1) \
? __builtin___memcpy_chk (dest, src, len, __bos0 (dest)) \
: __memcpy_ichk (dest, src, len))
static __always_inline void *
__NTH (__memcpy_ichk (void *__restrict __dest, __const void *__restrict __src,
size_t __len))
{
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
}
#endif
#ifdef __cplusplus
__extern_always_inline void * __extern_always_inline void *
__NTH (memmove (void *__restrict __dest, __const void *__restrict __src, __NTH (memmove (void *__restrict __dest, __const void *__restrict __src,
size_t __len)) size_t __len))
{ {
return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
} }
#else
# define memmove(dest, src, len) \
((__bos0 (dest) != (size_t) -1) \
? __builtin___memmove_chk (dest, src, len, __bos0 (dest)) \
: __memmove_ichk (dest, src, len))
static __always_inline void *
__NTH (__memmove_ichk (void *__dest, __const void *__src, size_t __len))
{
return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
}
#endif
#ifdef __USE_GNU #ifdef __USE_GNU
# ifdef __cplusplus
__extern_always_inline void * __extern_always_inline void *
__NTH (mempcpy (void *__restrict __dest, __const void *__restrict __src, __NTH (mempcpy (void *__restrict __dest, __const void *__restrict __src,
size_t __len)) size_t __len))
{ {
return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest)); return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest));
} }
# else
# define mempcpy(dest, src, len) \
((__bos0 (dest) != (size_t) -1) \
? __builtin___mempcpy_chk (dest, src, len, __bos0 (dest)) \
: __mempcpy_ichk (dest, src, len))
static __always_inline void *
__NTH (__mempcpy_ichk (void *__restrict __dest,
__const void *__restrict __src, size_t __len))
{
return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest));
}
# endif
#endif #endif
@ -112,7 +74,6 @@ __NTH (__mempcpy_ichk (void *__restrict __dest,
especially problematic if the intended fill value is zero. In this especially problematic if the intended fill value is zero. In this
case no work is done at all. We detect these problems by referring case no work is done at all. We detect these problems by referring
non-existing functions. */ non-existing functions. */
#ifdef __cplusplus
__extern_always_inline void * __extern_always_inline void *
__NTH (memset (void *__dest, int __ch, size_t __len)) __NTH (memset (void *__dest, int __ch, size_t __len))
{ {
@ -123,103 +84,43 @@ __NTH (memset (void *__dest, int __ch, size_t __len))
} }
return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
} }
#else
# define memset(dest, ch, len) \
(__builtin_constant_p (len) && (len) == 0 \
? (__warn_memset_zero_len (), (void) (ch), (void) (len), (void *) (dest)) \
: ((__bos0 (dest) != (size_t) -1) \
? __builtin___memset_chk (dest, ch, len, __bos0 (dest)) \
: __memset_ichk (dest, ch, len)))
static __always_inline void *
__NTH (__memset_ichk (void *__dest, int __ch, size_t __len))
{
return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
}
#endif
#ifdef __USE_BSD #ifdef __USE_BSD
# ifdef __cplusplus
__extern_always_inline void __extern_always_inline void
__NTH (bcopy (__const void *__restrict __src, void *__restrict __dest, __NTH (bcopy (__const void *__restrict __src, void *__restrict __dest,
size_t __len)) size_t __len))
{ {
__builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
} }
__extern_always_inline void __extern_always_inline void
__NTH (bzero (void *__dest, size_t __len)) __NTH (bzero (void *__dest, size_t __len))
{ {
__builtin___memset_chk (__dest, '\0', __len, __bos0 (__dest)); (void) __builtin___memset_chk (__dest, '\0', __len, __bos0 (__dest));
} }
# else
# define bcopy(src, dest, len) ((void) \
((__bos0 (dest) != (size_t) -1) \
? __builtin___memmove_chk (dest, src, len, __bos0 (dest)) \
: __memmove_ichk (dest, src, len)))
# define bzero(dest, len) ((void) \
((__bos0 (dest) != (size_t) -1) \
? __builtin___memset_chk (dest, '\0', len, __bos0 (dest)) \
: __memset_ichk (dest, '\0', len)))
# endif
#endif #endif
#ifdef __cplusplus
__extern_always_inline char * __extern_always_inline char *
__NTH (strcpy (char *__restrict __dest, __const char *__restrict __src)) __NTH (strcpy (char *__restrict __dest, __const char *__restrict __src))
{ {
return __builtin___strcpy_chk (__dest, __src, __bos (__dest)); return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
} }
#else
# define strcpy(dest, src) \
((__bos (dest) != (size_t) -1) \
? __builtin___strcpy_chk (dest, src, __bos (dest)) \
: __strcpy_ichk (dest, src))
static __always_inline char *
__NTH (__strcpy_ichk (char *__restrict __dest, __const char *__restrict __src))
{
return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
}
#endif
#ifdef __USE_GNU #ifdef __USE_GNU
# ifdef __cplusplus
__extern_always_inline char * __extern_always_inline char *
__NTH (stpcpy (char *__restrict __dest, __const char *__restrict __src)) __NTH (stpcpy (char *__restrict __dest, __const char *__restrict __src))
{ {
return __builtin___stpcpy_chk (__dest, __src, __bos (__dest)); return __builtin___stpcpy_chk (__dest, __src, __bos (__dest));
} }
# else
# define stpcpy(dest, src) \
((__bos (dest) != (size_t) -1) \
? __builtin___stpcpy_chk (dest, src, __bos (dest)) \
: __stpcpy_ichk (dest, src))
static __always_inline char *
__NTH (__stpcpy_ichk (char *__restrict __dest, __const char *__restrict __src))
{
return __builtin___stpcpy_chk (__dest, __src, __bos (__dest));
}
# endif
#endif #endif
#ifdef __cplusplus
__extern_always_inline char * __extern_always_inline char *
__NTH (strncpy (char *__restrict __dest, __const char *__restrict __src, __NTH (strncpy (char *__restrict __dest, __const char *__restrict __src,
size_t __len)) size_t __len))
{ {
return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
} }
#else
# define strncpy(dest, src, len) \
((__bos (dest) != (size_t) -1) \
? __builtin___strncpy_chk (dest, src, len, __bos (dest)) \
: __strncpy_ichk (dest, src, len))
static __always_inline char *
__NTH (__strncpy_ichk (char *__restrict __dest, __const char *__restrict __src,
size_t __len))
{
return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
}
#endif
// XXX We have no corresponding builtin yet. // XXX We have no corresponding builtin yet.
extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n, extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n,
@ -238,41 +139,16 @@ __NTH (stpncpy (char *__dest, __const char *__src, size_t __n))
} }
#ifdef __cplusplus
__extern_always_inline char * __extern_always_inline char *
__NTH (strcat (char *__restrict __dest, __const char *__restrict __src)) __NTH (strcat (char *__restrict __dest, __const char *__restrict __src))
{ {
return __builtin___strcat_chk (__dest, __src, __bos (__dest)); return __builtin___strcat_chk (__dest, __src, __bos (__dest));
} }
#else
# define strcat(dest, src) \
((__bos (dest) != (size_t) -1) \
? __builtin___strcat_chk (dest, src, __bos (dest)) \
: __strcat_ichk (dest, src))
static __always_inline char *
__NTH (__strcat_ichk (char *__restrict __dest, __const char *__restrict __src))
{
return __builtin___strcat_chk (__dest, __src, __bos (__dest));
}
#endif
#ifdef __cplusplus
__extern_always_inline char * __extern_always_inline char *
__NTH (strncat (char *__restrict __dest, __const char *__restrict __src, __NTH (strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __len)) size_t __len))
{ {
return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest)); return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
} }
#else
# define strncat(dest, src, len) \
((__bos (dest) != (size_t) -1) \
? __builtin___strncat_chk (dest, src, len, __bos (dest)) \
: __strncat_ichk (dest, src, len))
static __always_inline char *
__NTH (__strncat_ichk (char *__restrict __dest, __const char *__restrict __src,
size_t __len))
{
return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
}
#endif