diff options
Diffstat (limited to 'string/bits')
-rw-r--r-- | string/bits/string3.h | 87 |
1 files changed, 35 insertions, 52 deletions
diff --git a/string/bits/string3.h b/string/bits/string3.h index 041ac11259..87cbe35bb1 100644 --- a/string/bits/string3.h +++ b/string/bits/string3.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005 Free Software Foundation, Inc. +/* Copyright (C) 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,9 +44,10 @@ ((__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)) +static __inline__ void * +__attribute__ ((__always_inline__)) +__memcpy_ichk (void *__restrict __dest, const void *__restrict __src, + size_t __len) { return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); } @@ -56,8 +57,9 @@ __NTH (__memcpy_ichk (void *__restrict __dest, __const void *__restrict __src, ((__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)) +static __inline__ void * +__attribute__ ((__always_inline__)) +__memmove_ichk (void *__dest, const void *__src, size_t __len) { return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); } @@ -68,30 +70,23 @@ __NTH (__memmove_ichk (void *__dest, __const void *__src, size_t __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)) +static __inline__ void * +__attribute__ ((__always_inline__)) +__mempcpy_ichk (void *__restrict __dest, const void *__restrict __src, + size_t __len) { return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest)); } #endif -/* The first two tests here help to catch a somewhat common problem - where the second and third parameter are transposed. This is - especially problematic if the intended fill value is zero. In this - case no work is done at all. We detect these problems by referring - non-existing functions. */ -__warndecl (__warn_memset_zero_len, - "memset used with constant zero length parameter; this could be due to transposed parameters"); #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)) + ((__bos0 (dest) != (size_t) -1) \ + ? __builtin___memset_chk (dest, ch, len, __bos0 (dest)) \ + : __memset_ichk (dest, ch, len)) +static __inline__ void * +__attribute__ ((__always_inline__)) +__memset_ichk (void *__dest, int __ch, size_t __len) { return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); } @@ -112,8 +107,9 @@ __NTH (__memset_ichk (void *__dest, int __ch, size_t __len)) ((__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)) +static __inline__ char * +__attribute__ ((__always_inline__)) +__strcpy_ichk (char *__restrict __dest, const char *__restrict __src) { return __builtin___strcpy_chk (__dest, __src, __bos (__dest)); } @@ -124,8 +120,9 @@ __NTH (__strcpy_ichk (char *__restrict __dest, __const char *__restrict __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)) +static __inline__ char * +__attribute__ ((__always_inline__)) +__stpcpy_ichk (char *__restrict __dest, const char *__restrict __src) { return __builtin___stpcpy_chk (__dest, __src, __bos (__dest)); } @@ -136,37 +133,22 @@ __NTH (__stpcpy_ichk (char *__restrict __dest, __const char *__restrict __src)) ((__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)) +static __inline__ char * +__attribute__ ((__always_inline__)) +__strncpy_ichk (char *__restrict __dest, const char *__restrict __src, + size_t __len) { return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); } -// XXX We have no corresponding builtin yet. -extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n, - size_t __destlen) __THROW; -extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, - __const char *__src, - size_t __n), stpncpy); - -extern __always_inline char * -__NTH (stpncpy (char *__dest, __const char *__src, size_t __n)) -{ - if (__bos (__dest) != (size_t) -1 - && (!__builtin_constant_p (__n) || __n <= __bos (__dest))) - return __stpncpy_chk (__dest, __src, __n, __bos (__dest)); - return __stpncpy_alias (__dest, __src, __n); -} - - #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)) +static __inline__ char * +__attribute__ ((__always_inline__)) +__strcat_ichk (char *__restrict __dest, const char *__restrict __src) { return __builtin___strcat_chk (__dest, __src, __bos (__dest)); } @@ -176,9 +158,10 @@ __NTH (__strcat_ichk (char *__restrict __dest, __const char *__restrict __src)) ((__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)) +static __inline__ char * +__attribute__ ((__always_inline__)) +__strncat_ichk (char *__restrict __dest, const char *__restrict __src, + size_t __len) { return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest)); } |