diff options
Diffstat (limited to 'libc/string')
-rw-r--r-- | libc/string/_collate.c | 11 | ||||
-rw-r--r-- | libc/string/ffs.c | 11 | ||||
-rw-r--r-- | libc/string/ffsll.c | 36 | ||||
-rw-r--r-- | libc/string/frv/memset.S | 1 | ||||
-rw-r--r-- | libc/string/generic/memmem.c | 1 | ||||
-rw-r--r-- | libc/string/generic/strcpy.c | 3 | ||||
-rw-r--r-- | libc/string/memmem.c | 1 | ||||
-rw-r--r-- | libc/string/stpncpy.c | 4 | ||||
-rw-r--r-- | libc/string/strcasecmp.c | 4 | ||||
-rw-r--r-- | libc/string/strchr.c | 7 | ||||
-rw-r--r-- | libc/string/strchrnul.c | 2 | ||||
-rw-r--r-- | libc/string/strcpy.c | 4 | ||||
-rw-r--r-- | libc/string/strlcpy.c | 22 | ||||
-rw-r--r-- | libc/string/strncasecmp.c | 4 | ||||
-rw-r--r-- | libc/string/x86_64/memcpy.S | 4 | ||||
-rw-r--r-- | libc/string/x86_64/memset.S | 6 |
16 files changed, 70 insertions, 51 deletions
diff --git a/libc/string/_collate.c b/libc/string/_collate.c index 77d9eb62c..def56d260 100644 --- a/libc/string/_collate.c +++ b/libc/string/_collate.c @@ -62,7 +62,6 @@ size_t wcsxfrm(Wchar *__restrict ws1, const Wchar *__restrict ws2, size_t n) { return wcsxfrm_l(ws1, ws2, n, __UCLIBC_CURLOCALE ); } -libc_hidden_def(wcsxfrm) #else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */ @@ -500,7 +499,6 @@ static void next_weight(col_state_t *cs, int pass __LOCALE_PARAM ) } while (1); } -libc_hidden_proto(__XL_NPP(wcscoll)) int __XL_NPP(wcscoll) (const Wchar *s0, const Wchar *s1 __LOCALE_PARAM ) { col_state_t ws[2]; @@ -538,10 +536,6 @@ libc_hidden_def(__XL_NPP(wcscoll)) #ifdef WANT_WIDE -extern size_t __wcslcpy(wchar_t *__restrict dst, - const wchar_t *__restrict src, size_t n); - -libc_hidden_proto(__XL_NPP(wcsxfrm)) size_t __XL_NPP(wcsxfrm)(wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t n __LOCALE_PARAM ) { @@ -579,7 +573,9 @@ size_t __XL_NPP(wcsxfrm)(wchar_t *__restrict ws1, const wchar_t *__restrict ws2, } return count-1; } +#if defined L_strxfrm_l || defined L_wcsxfrm_l libc_hidden_def(__XL_NPP(wcsxfrm)) +#endif #else /* WANT_WIDE */ @@ -623,7 +619,6 @@ static size_t store(unsigned char *s, size_t count, size_t n, __uwchar_t weight) return r; } -libc_hidden_proto(__XL_NPP(strxfrm)) size_t __XL_NPP(strxfrm)(char *__restrict ws1, const char *__restrict ws2, size_t n __LOCALE_PARAM ) { @@ -661,7 +656,9 @@ size_t __XL_NPP(strxfrm)(char *__restrict ws1, const char *__restrict ws2, size_ } return count-1; } +#ifdef L_strxfrm_l libc_hidden_def(__XL_NPP(strxfrm)) +#endif #endif /* WANT_WIDE */ diff --git a/libc/string/ffs.c b/libc/string/ffs.c index 22efe4a1e..f39d304b7 100644 --- a/libc/string/ffs.c +++ b/libc/string/ffs.c @@ -5,11 +5,9 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -/* ffsl,ffsll */ - -#include "_string.h" - - +#include <limits.h> +#include <string.h> + int ffs(int i) { #if 1 @@ -52,3 +50,6 @@ int ffs(int i) #endif } libc_hidden_def(ffs) +#if ULONG_MAX == UINT_MAX +strong_alias_untyped(ffs, ffsl) +#endif diff --git a/libc/string/ffsll.c b/libc/string/ffsll.c new file mode 100644 index 000000000..a7662900b --- /dev/null +++ b/libc/string/ffsll.c @@ -0,0 +1,36 @@ +/* Copyright (C) 1991, 1992, 1997, 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Torbjorn Granlund (tege@sics.se). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <limits.h> +#include <string.h> + +/* Find the first bit set in I. */ +int ffsll (long long int i) +{ + unsigned long long int x = i & -i; + + if (x <= 0xffffffff) + return ffs (i); + else + return 32 + ffs (i >> 32); +} + +#if ULONG_MAX != UINT_MAX +strong_alias_untyped(ffsll, ffsl) +#endif diff --git a/libc/string/frv/memset.S b/libc/string/frv/memset.S index a3e76c491..bc0f80db0 100644 --- a/libc/string/frv/memset.S +++ b/libc/string/frv/memset.S @@ -155,3 +155,4 @@ memset: bralr .size memset, .-memset +libc_hidden_def(memset) diff --git a/libc/string/generic/memmem.c b/libc/string/generic/memmem.c index 0fccac77f..97384978b 100644 --- a/libc/string/generic/memmem.c +++ b/libc/string/generic/memmem.c @@ -48,5 +48,4 @@ void *memmem (const void *haystack, size_t haystack_len, return NULL; } -libc_hidden_def(memmem) #endif diff --git a/libc/string/generic/strcpy.c b/libc/string/generic/strcpy.c index 4d070531f..ace6dea58 100644 --- a/libc/string/generic/strcpy.c +++ b/libc/string/generic/strcpy.c @@ -17,9 +17,6 @@ 02111-1307 USA. */ #include <string.h> -#include <stddef.h> - -#include "memcopy.h" /* Copy SRC to DEST. */ char *strcpy(char *dest, const char *src) diff --git a/libc/string/memmem.c b/libc/string/memmem.c index f568a4261..1b3a0bab6 100644 --- a/libc/string/memmem.c +++ b/libc/string/memmem.c @@ -37,5 +37,4 @@ void *memmem(const void *haystack, size_t haystacklen, return NULL; } -libc_hidden_def(memmem) #endif diff --git a/libc/string/stpncpy.c b/libc/string/stpncpy.c index 088145dea..50d83a131 100644 --- a/libc/string/stpncpy.c +++ b/libc/string/stpncpy.c @@ -27,7 +27,3 @@ Wchar *Wstpncpy(register Wchar * __restrict s1, } return s1 + (s2 - p); } - -#ifndef WANT_WIDE -libc_hidden_def(stpncpy) -#endif diff --git a/libc/string/strcasecmp.c b/libc/string/strcasecmp.c index 33e48fa22..f894e426e 100644 --- a/libc/string/strcasecmp.c +++ b/libc/string/strcasecmp.c @@ -31,7 +31,9 @@ int strcasecmp(register const Wchar *s1, register const Wchar *s2) { return strcasecmp_l(s1, s2, __UCLIBC_CURLOCALE); } +#ifndef WANT_WIDE libc_hidden_def(strcasecmp) +#endif #else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */ @@ -59,6 +61,8 @@ int __XL_NPP(strcasecmp)(register const Wchar *s1, register const Wchar *s2 return r; #endif } +#if !defined WANT_WIDE || (defined WANT_WIDE && defined __UCLIBC_DO_XLOCALE) libc_hidden_def(__XL_NPP(strcasecmp)) +#endif #endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */ diff --git a/libc/string/strchr.c b/libc/string/strchr.c index 462b7b1f1..7ea477362 100644 --- a/libc/string/strchr.c +++ b/libc/string/strchr.c @@ -23,8 +23,9 @@ Wchar *Wstrchr(register const Wchar *s, Wint c) return NULL; } -libc_hidden_def(Wstrchr) - -#if !defined WANT_WIDE && defined __UCLIBC_SUSV3_LEGACY__ +#ifndef WANT_WIDE +libc_hidden_def(strchr) +# ifdef __UCLIBC_SUSV3_LEGACY__ weak_alias(strchr,index) +# endif #endif diff --git a/libc/string/strchrnul.c b/libc/string/strchrnul.c index d2d7df307..4751971bc 100644 --- a/libc/string/strchrnul.c +++ b/libc/string/strchrnul.c @@ -21,5 +21,7 @@ Wchar *Wstrchrnul(register const Wchar *s, Wint c) while (*++s && (*s != ((Wchar)c))); return (Wchar *) s; } +# ifndef WANT_WIDE libc_hidden_def(Wstrchrnul) +# endif #endif diff --git a/libc/string/strcpy.c b/libc/string/strcpy.c index bb5a16872..549360c22 100644 --- a/libc/string/strcpy.c +++ b/libc/string/strcpy.c @@ -22,8 +22,6 @@ Wchar *Wstrcpy(Wchar * __restrict s1, const Wchar * __restrict s2) return s1; } -#ifdef WANT_WIDE -/* wcscpy does not need libc_hidden_def */ -#else +#ifndef WANT_WIDE libc_hidden_def(strcpy) #endif diff --git a/libc/string/strlcpy.c b/libc/string/strlcpy.c index 0ccfc0e8a..83787049a 100644 --- a/libc/string/strlcpy.c +++ b/libc/string/strlcpy.c @@ -9,19 +9,16 @@ #ifdef WANT_WIDE # define Wstrlcpy __wcslcpy +# define Wstrxfrm wcsxfrm #else # define Wstrlcpy strlcpy +# define Wstrxfrm strxfrm #endif /* OpenBSD function: * Copy at most n-1 chars from src to dst and nul-terminate dst. * Returns strlen(src), so truncation occurred if the return value is >= n. */ -#ifdef WANT_WIDE -size_t Wstrlcpy(register Wchar *__restrict dst, - register const Wchar *__restrict src, - size_t n) attribute_hidden; -#endif size_t Wstrlcpy(register Wchar *__restrict dst, register const Wchar *__restrict src, size_t n) @@ -45,19 +42,10 @@ size_t Wstrlcpy(register Wchar *__restrict dst, return src - src0; } -#ifdef WANT_WIDE - -#ifndef __UCLIBC_HAS_LOCALE__ -strong_alias(__wcslcpy,wcsxfrm) -libc_hidden_def(wcsxfrm) -#endif - -#else - +#ifndef WANT_WIDE libc_hidden_def(strlcpy) -#ifndef __UCLIBC_HAS_LOCALE__ -strong_alias(strlcpy,strxfrm) -libc_hidden_def(strxfrm) #endif +#ifndef __UCLIBC_HAS_LOCALE__ +strong_alias(Wstrlcpy,Wstrxfrm) #endif diff --git a/libc/string/strncasecmp.c b/libc/string/strncasecmp.c index 2af305e16..2eac47dd4 100644 --- a/libc/string/strncasecmp.c +++ b/libc/string/strncasecmp.c @@ -31,7 +31,9 @@ int strncasecmp(register const Wchar *s1, register const Wchar *s2, size_t n) { return strncasecmp_l(s1, s2, n, __UCLIBC_CURLOCALE); } +#ifndef WANT_WIDE libc_hidden_def(strncasecmp) +#endif #else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */ @@ -62,6 +64,8 @@ int __XL_NPP(strncasecmp)(register const Wchar *s1, register const Wchar *s2, return r; #endif } +#if !defined WANT_WIDE || (defined WANT_WIDE && defined __UCLIBC_DO_XLOCALE) libc_hidden_def(__XL_NPP(strncasecmp)) +#endif #endif /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */ diff --git a/libc/string/x86_64/memcpy.S b/libc/string/x86_64/memcpy.S index 6d941e0f2..9c8169b42 100644 --- a/libc/string/x86_64/memcpy.S +++ b/libc/string/x86_64/memcpy.S @@ -26,12 +26,10 @@ #define MEMPCPY_P (defined memcpy) .text -#if defined __PIC__ && !defined NOT_IN_libc +#if defined __PIC__ && !defined NOT_IN_libc && defined __UCLIBC_HAS_FORTIFY__ ENTRY (__memcpy_chk) cmpq %rdx, %rcx -#if defined __UCLIBC_HAS_SSP__ jb HIDDEN_JUMPTARGET (__chk_fail) -#endif END (__memcpy_chk) #endif ENTRY (BP_SYM (memcpy)) diff --git a/libc/string/x86_64/memset.S b/libc/string/x86_64/memset.S index df265f394..6b758ce3a 100644 --- a/libc/string/x86_64/memset.S +++ b/libc/string/x86_64/memset.S @@ -29,12 +29,10 @@ #define LARGE $120000 .text -#if defined __PIC__ && !defined NOT_IN_libc +#if defined __PIC__ && !defined NOT_IN_libc && defined __UCLIBC_HAS_FORTIFY__ ENTRY (__memset_chk) cmpq %rdx, %rcx -#if defined __UCLIBC_HAS_SSP__ jb HIDDEN_JUMPTARGET (__chk_fail) -#endif END (__memset_chk) #endif ENTRY (memset) @@ -144,6 +142,6 @@ END (memset) libc_hidden_def(memset) #endif -#if !BZERO_P && defined __PIC__ && !defined NOT_IN_libc +#if !BZERO_P && defined __PIC__ && !defined NOT_IN_libc && defined __UCLIBC_HAS_FORTIFY__ strong_alias (__memset_chk, __memset_zero_constant_len_parameter) #endif |