diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-05-17 17:25:32 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-05-17 17:25:32 +0000 |
commit | 9bbd7837b698c0bba325de00cd396c1e970ab281 (patch) | |
tree | 44023c4f36e4d1acf2d5107cd9ee2cd368f5d1ca /sysdeps/i386/i486 | |
parent | 431c33c0bc7cb43231da4364187e0161b0541071 (diff) | |
download | glibc-9bbd7837b698c0bba325de00cd396c1e970ab281.tar.gz glibc-9bbd7837b698c0bba325de00cd396c1e970ab281.tar.xz glibc-9bbd7837b698c0bba325de00cd396c1e970ab281.zip |
Update.
1999-05-17 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/i386/i486/Versions: New file with inline functions from sysdeps/i386/i486/bits/string.h for now. * sysdeps/i386/Versions: Add inline functions from sysdeps/i386/bits/string.h. * string/Versions: Add inline functions from <bits/string2.h>. * string/Makefile (routines): Add string-inlines. * string/string-inlines.c: New file, used for implementation of extern inline functions. * sysdeps/i386/i486/bits/string.h: Use _FORCE_INLINES to generate non inlined versions of functions. * string/bits/string2.h: Likewise. * sysdeps/i386/bits/string.h: Likewise. 1999-05-17 Ulrich Drepper <drepper@cygnus.com> * inet/arpa/tftp.h: Add second packed attribute.
Diffstat (limited to 'sysdeps/i386/i486')
-rw-r--r-- | sysdeps/i386/i486/Versions | 13 | ||||
-rw-r--r-- | sysdeps/i386/i486/bits/string.h | 35 |
2 files changed, 36 insertions, 12 deletions
diff --git a/sysdeps/i386/i486/Versions b/sysdeps/i386/i486/Versions new file mode 100644 index 0000000000..b33fa127a4 --- /dev/null +++ b/sysdeps/i386/i486/Versions @@ -0,0 +1,13 @@ +libc { + GLIBC_2.1.1 { + # extern inline functions used by <bits/string.h> + __memcpy_by2; __memcpy_by4; __memcpy_g; __mempcpy_by2; __mempcpy_by4; + __mempcpy_byn; __memset_ccn_by2; __memset_ccn_by4; __memset_gcn_by2; + __memset_gcn_by4; __stpcpy_g; __strcat_c; __strcat_g; __strchr_c; + __strchr_g; __strchrnul_c; __strchrnul_g; __strcmp_gg; __strcpy_g; + __strcspn_c1; __strcspn_cg; __strcspn_g; __strlen_g; __strncat_g; + __strncmp_g; __strncpy_by2; __strncpy_by4; __strncpy_byn; __strncpy_gg; + __strpbrk_cg; __strpbrk_g; __strrchr_c; __strrchr_g; __strspn_c1; + __strspn_cg; __strspn_g; __strstr_cg; __strstr_g; + } +} diff --git a/sysdeps/i386/i486/bits/string.h b/sysdeps/i386/i486/bits/string.h index e726a340a1..5bf80f0398 100644 --- a/sysdeps/i386/i486/bits/string.h +++ b/sysdeps/i386/i486/bits/string.h @@ -30,10 +30,12 @@ #if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \ && defined __GNUC__ && __GNUC__ >= 2 -#ifdef __cplusplus -# define __STRING_INLINE inline -#else -# define __STRING_INLINE extern __inline +#ifndef __STRING_INLINE +# ifdef __cplusplus +# define __STRING_INLINE inline +# else +# define __STRING_INLINE extern __inline +# endif #endif /* The macros are used in some of the optimized implementations below. */ @@ -133,7 +135,8 @@ __memcpy_g (void *__dest, __const void *__src, size_t __n) return __dest; } - +#define _HAVE_STRING_ARCH_memmove 1 +#ifndef _FORCE_INLINES /* Copy N bytes of SRC to DEST, guaranteeing correct behavior for overlapping strings. */ __STRING_INLINE void * @@ -159,11 +162,12 @@ memmove (void *__dest, __const void *__src, size_t __n) : "memory"); return __dest; } - +#endif /* Compare N bytes of S1 and S2. */ #define _HAVE_STRING_ARCH_memcmp 1 -#ifndef __PIC__ +#ifndef _FORCE_INLINES +# ifndef __PIC__ /* gcc has problems to spill registers when using PIC. */ __STRING_INLINE int memcmp (__const void *__s1, __const void *__s2, size_t __n) @@ -183,9 +187,9 @@ memcmp (__const void *__s1, __const void *__s2, size_t __n) : "cc"); return __res; } +# endif #endif - /* Set N bytes of S to C. */ #define _HAVE_STRING_ARCH_memset 1 #define memset(s, c, n) \ @@ -390,6 +394,7 @@ __memset_gcn_by2 (void *__s, int __c, size_t __n) /* Search N bytes of S for C. */ #define _HAVE_STRING_ARCH_memchr 1 +#ifndef _FORCE_INLINES __STRING_INLINE void * memchr (__const void *__s, int __c, size_t __n) { @@ -421,10 +426,13 @@ memchr (__const void *__s, int __c, size_t __n) #endif return __res - 1; } - +#endif /* Return pointer to C in S. */ #define _HAVE_STRING_ARCH_rawmemchr 1 +__STRING_INLINE void *__rawmemchr (const void *__s, int __c); + +#ifndef _FORCE_INLINES __STRING_INLINE void * __rawmemchr (const void *__s, int __c) { @@ -438,13 +446,14 @@ __rawmemchr (const void *__s, int __c) : "cc"); return __res - 1; } -#ifdef __USE_GNU +#if defined __USE_GNU && !defined _FORCE_INLINES __STRING_INLINE void * rawmemchr (const void *__s, int __c) { return __rawmemchr (__s, __c); } -#endif /* use GNU */ +# endif /* use GNU */ +#endif /* Return the length of S. */ @@ -1817,6 +1826,8 @@ __strstr_g (__const char *__haystack, __const char *__needle) # endif /* i686 */ #endif /* BSD || X/Open */ -#undef __STRING_INLINE +#ifndef _FORCE_INLINES +# undef __STRING_INLINE +#endif #endif /* use string inlines && GNU CC */ |