svn commit: trunk/uClibc: extra/Configs include libc/string libc/s etc...
psm at uclibc.org
psm at uclibc.org
Thu Mar 23 17:19:52 UTC 2006
Author: psm
Date: 2006-03-23 09:19:42 -0800 (Thu, 23 Mar 2006)
New Revision: 14630
Log:
Add new option for SuSv3 legacy functions and use it for bcopy/bzero/bcmp/index/rindex
Modified:
trunk/uClibc/extra/Configs/Config.in
trunk/uClibc/include/string.h
trunk/uClibc/include/strings.h
trunk/uClibc/libc/string/arm/bcopy.S
trunk/uClibc/libc/string/arm/bzero.S
trunk/uClibc/libc/string/arm/memcmp.S
trunk/uClibc/libc/string/bcopy.c
trunk/uClibc/libc/string/bzero.c
trunk/uClibc/libc/string/generic/memcmp.c
trunk/uClibc/libc/string/generic/strchr.c
trunk/uClibc/libc/string/generic/strrchr.c
trunk/uClibc/libc/string/i386/strchr.c
trunk/uClibc/libc/string/i386/strrchr.c
trunk/uClibc/libc/string/ia64/bcopy.S
trunk/uClibc/libc/string/ia64/bzero.S
trunk/uClibc/libc/string/ia64/memcmp.S
trunk/uClibc/libc/string/ia64/strchr.S
trunk/uClibc/libc/string/memcmp.c
trunk/uClibc/libc/string/sparc/sparc32/memcpy.S
trunk/uClibc/libc/string/sparc/sparc32/memset.S
trunk/uClibc/libc/string/sparc/sparc32/strchr.S
trunk/uClibc/libc/string/sparc/sparc64/memcpy.S
trunk/uClibc/libc/string/sparc/sparc64/memset.S
trunk/uClibc/libc/string/sparc/sparc64/sparcv9b/memcpy.S
trunk/uClibc/libc/string/sparc/sparc64/strchr.S
trunk/uClibc/libc/string/strchr.c
trunk/uClibc/libc/string/strrchr.c
trunk/uClibc/libc/string/x86_64/bzero.S
trunk/uClibc/libc/string/x86_64/strchr.S
Changeset:
Modified: trunk/uClibc/extra/Configs/Config.in
===================================================================
--- trunk/uClibc/extra/Configs/Config.in 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/extra/Configs/Config.in 2006-03-23 17:19:42 UTC (rev 14630)
@@ -455,6 +455,15 @@
Enable this option if you want to update from 0.9.28 to svn/0.9.29, else
you will be missing atexit() until you rebuild all apps.
+config UCLIBC_SUSV3_LEGACY
+ bool "Enable SuSv3 LEGACY functions"
+ default n
+ help
+ Enable this option if you want to have SuSv3 LEGACY functions
+ in the library, else they are replaced by SuSv3 proposed macros.
+ Currently applies to bcopy/bzero/bcmp/index/rindex.
+ WARNING! ABI incompatibility.
+
config HAS_SHADOW
bool "Shadow Password Support"
default y
Modified: trunk/uClibc/include/string.h
===================================================================
--- trunk/uClibc/include/string.h 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/include/string.h 2006-03-23 17:19:42 UTC (rev 14630)
@@ -301,6 +301,7 @@
#endif
#ifdef __USE_BSD
+# ifdef __UCLIBC_SUSV3_LEGACY__
/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
extern void bcopy (__const void *__src, void *__dest, size_t __n)
__THROW __nonnull ((1, 2));
@@ -319,7 +320,18 @@
/* Find the last occurrence of C in S (same as strrchr). */
extern char *rindex (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+# else
+/* bcopy/bzero/bcmp/index/rindex are marked LEGACY in SuSv3.
+ * They are replaced as proposed by SuSv3. Don't sync this part
+ * with glibc and keep it in sync with strings.h. */
+# define bcopy(src,dest,n) (memmove((dest), (src), (n)), (void) 0)
+# define bzero(s,n) (memset((s), '\0', (n)), (void) 0)
+# define bcmp(s1,s2,n) memcmp((s1), (s2), (size_t)(n))
+# define index(s,c) strchr((s), (c))
+# define rindex(s,c) strrchr((s), (c))
+# endif
+
/* Return the position of the first bit set in I, or 0 if none are set.
The least-significant bit is position 1, the most-significant 32. */
extern int ffs (int __i) __THROW __attribute__ ((__const__));
Modified: trunk/uClibc/include/strings.h
===================================================================
--- trunk/uClibc/include/strings.h 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/include/strings.h 2006-03-23 17:19:42 UTC (rev 14630)
@@ -33,6 +33,7 @@
__BEGIN_DECLS
+# ifdef __UCLIBC_SUSV3_LEGACY__
/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
extern void bcopy (__const void *__src, void *__dest, size_t __n)
__THROW __nonnull ((1, 2));
@@ -51,7 +52,18 @@
/* Find the last occurrence of C in S (same as strrchr). */
extern char *rindex (__const char *__s, int __c)
__THROW __attribute_pure__ __nonnull ((1));
+# else
+/* bcopy/bzero/bcmp/index/rindex are marked LEGACY in SuSv3.
+ * They are replaced as proposed by SuSv3. Don't sync this part
+ * with glibc and keep it in sync with string.h. */
+# define bcopy(src,dest,n) (memmove((dest), (src), (n)), (void) 0)
+# define bzero(s,n) (memset((s), '\0', (n)), (void) 0)
+# define bcmp(s1,s2,n) memcmp((s1), (s2), (size_t)(n))
+# define index(s,c) strchr((s), (c))
+# define rindex(s,c) strrchr((s), (c))
+# endif
+
/* Return the position of the first bit set in I, or 0 if none are set.
The least-significant bit is position 1, the most-significant 32. */
extern int ffs (int __i) __THROW __attribute__ ((__const__));
Modified: trunk/uClibc/libc/string/arm/bcopy.S
===================================================================
--- trunk/uClibc/libc/string/arm/bcopy.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/arm/bcopy.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -41,6 +41,8 @@
#include <features.h>
+#ifdef __UCLIBC_SUSV3_LEGACY__
+
.text
.global bcopy
.type bcopy,%function
@@ -54,3 +56,5 @@
b _memcpy /* (PLT) */
.size bcopy,.-bcopy
+
+#endif
Modified: trunk/uClibc/libc/string/arm/bzero.S
===================================================================
--- trunk/uClibc/libc/string/arm/bzero.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/arm/bzero.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -39,6 +39,8 @@
#include <features.h>
+#ifdef __UCLIBC_SUSV3_LEGACY__
+
.text
.global bzero
.type bzero,%function
@@ -50,3 +52,5 @@
b HIDDEN_JUMPTARGET(memset)
.size bzero,.-bzero
+
+#endif
Modified: trunk/uClibc/libc/string/arm/memcmp.S
===================================================================
--- trunk/uClibc/libc/string/arm/memcmp.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/arm/memcmp.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -63,4 +63,6 @@
.size memcmp,.-memcmp
libc_hidden_def(memcmp)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(memcmp,bcmp)
+#endif
Modified: trunk/uClibc/libc/string/bcopy.c
===================================================================
--- trunk/uClibc/libc/string/bcopy.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/bcopy.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -7,6 +7,8 @@
#include "_string.h"
+#ifdef __UCLIBC_SUSV3_LEGACY__
+
libc_hidden_proto(memmove)
void bcopy(const void *s2, void *s1, size_t n)
@@ -51,3 +53,4 @@
#endif
#endif
}
+#endif
Modified: trunk/uClibc/libc/string/bzero.c
===================================================================
--- trunk/uClibc/libc/string/bzero.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/bzero.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -7,6 +7,8 @@
#include "_string.h"
+#ifdef __UCLIBC_SUSV3_LEGACY__
+
libc_hidden_proto(memset)
void bzero(void *s, size_t n)
@@ -29,3 +31,4 @@
#endif
}
#undef np
+#endif
Modified: trunk/uClibc/libc/string/generic/memcmp.c
===================================================================
--- trunk/uClibc/libc/string/generic/memcmp.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/generic/memcmp.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -331,4 +331,6 @@
return 0;
}
libc_hidden_def(memcmp)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(memcmp,bcmp)
+#endif
Modified: trunk/uClibc/libc/string/generic/strchr.c
===================================================================
--- trunk/uClibc/libc/string/generic/strchr.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/generic/strchr.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -182,4 +182,6 @@
return NULL;
}
libc_hidden_def(strchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strchr,index)
+#endif
Modified: trunk/uClibc/libc/string/generic/strrchr.c
===================================================================
--- trunk/uClibc/libc/string/generic/strrchr.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/generic/strrchr.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -43,4 +43,6 @@
return (char *) found;
}
libc_hidden_def(strrchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strrchr,rindex)
+#endif
Modified: trunk/uClibc/libc/string/i386/strchr.c
===================================================================
--- trunk/uClibc/libc/string/i386/strchr.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/i386/strchr.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -51,4 +51,6 @@
return __res;
}
libc_hidden_def(strchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strchr,index)
+#endif
Modified: trunk/uClibc/libc/string/i386/strrchr.c
===================================================================
--- trunk/uClibc/libc/string/i386/strrchr.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/i386/strrchr.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -49,4 +49,6 @@
return __res;
}
libc_hidden_def(strrchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strrchr,rindex)
+#endif
Modified: trunk/uClibc/libc/string/ia64/bcopy.S
===================================================================
--- trunk/uClibc/libc/string/ia64/bcopy.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/ia64/bcopy.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -1,5 +1,7 @@
#include "sysdep.h"
+#ifdef __UCLIBC_SUSV3_LEGACY__
+
ENTRY(bcopy)
.regstk 3, 0, 0, 0
mov r8 = in0
@@ -8,3 +10,5 @@
mov in1 = r8
br.cond.sptk.many HIDDEN_JUMPTARGET(memmove)
END(bcopy)
+
+#endif
Modified: trunk/uClibc/libc/string/ia64/bzero.S
===================================================================
--- trunk/uClibc/libc/string/ia64/bzero.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/ia64/bzero.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -33,6 +33,9 @@
to get peak speed. */
#include "sysdep.h"
+
+#ifdef __UCLIBC_SUSV3_LEGACY__
+
#undef ret
#define dest in0
@@ -313,3 +316,5 @@
br.ret.sptk.many rp
;; }
END(bzero)
+
+#endif
Modified: trunk/uClibc/libc/string/ia64/memcmp.S
===================================================================
--- trunk/uClibc/libc/string/ia64/memcmp.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/ia64/memcmp.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -160,6 +160,7 @@
mov ar.lc = saved_lc // restore the loop counter
br.ret.sptk.many b0
END(memcmp)
-
-weak_alias (memcmp, bcmp)
libc_hidden_def (memcmp)
+#ifdef __UCLIBC_SUSV3_LEGACY__
+strong_alias (memcmp, bcmp)
+#endif
Modified: trunk/uClibc/libc/string/ia64/strchr.S
===================================================================
--- trunk/uClibc/libc/string/ia64/strchr.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/ia64/strchr.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -107,6 +107,7 @@
ld8 val2 = [ret0], 8 // bomb out here
br.cond.sptk .back
END(strchr)
-
-weak_alias (strchr, index)
libc_hidden_def (strchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
+strong_alias (strchr, index)
+#endif
Modified: trunk/uClibc/libc/string/memcmp.c
===================================================================
--- trunk/uClibc/libc/string/memcmp.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/memcmp.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -38,5 +38,7 @@
#ifndef WANT_WIDE
libc_hidden_def(memcmp)
+# ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(memcmp,bcmp)
+# endif
#endif
Modified: trunk/uClibc/libc/string/sparc/sparc32/memcpy.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/memcpy.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc32/memcpy.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -21,6 +21,8 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
+
/* Both these macros have to start with exactly the same insn */
#define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \
ldd [%src + offset + 0x00], %t0; \
@@ -161,11 +163,13 @@
b 3f
sub %o0, 2, %o0
+#ifdef __UCLIBC_SUSV3_LEGACY__
ENTRY(bcopy)
mov %o0, %o3
mov %o1, %o0
mov %o3, %o1
END(bcopy)
+#endif
ENTRY(memmove)
cmp %o0, %o1
Modified: trunk/uClibc/libc/string/sparc/sparc32/memset.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/memset.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc32/memset.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -20,6 +20,8 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
+
/* Store 64 bytes at (BASE + OFFSET) using value SOURCE. */
#define ZERO_BIG_BLOCK(base, offset, source) \
std source, [base + offset + 0x00]; \
@@ -43,6 +45,7 @@
.text
.align 4
+#ifdef __UCLIBC_SUSV3_LEGACY__
ENTRY(bzero)
b 1f
mov %g0, %g3
@@ -61,6 +64,7 @@
b 4f
sub %o0, %o2, %o0
END(bzero)
+#endif
ENTRY(memset)
and %o1, 0xff, %g3
Modified: trunk/uClibc/libc/string/sparc/sparc32/strchr.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/strchr.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc32/strchr.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -35,6 +35,8 @@
in these days for an average user.
*/
+#include <features.h>
+
.text
.align 4
10: ldub [%o0], %g4
@@ -217,7 +219,9 @@
ld [%o0], %g4
END(strchr)
libc_hidden_def(strchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strchr,index)
+#endif
ENTRY(strrchr)
andcc %o1, 0xff, %o1
@@ -278,4 +282,6 @@
mov %o5, %o0
END(strrchr)
libc_hidden_def(strrchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strrchr,rindex)
+#endif
Modified: trunk/uClibc/libc/string/sparc/sparc64/memcpy.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc64/memcpy.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc64/memcpy.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -20,6 +20,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
#include <asm/asi.h>
#ifndef XCC
#define USE_BPR
@@ -191,6 +192,7 @@
.text
.align 32
+#ifdef __UCLIBC_SUSV3_LEGACY__
ENTRY(bcopy)
sub %o1, %o0, %o4 /* IEU0 Group */
mov %o0, %g3 /* IEU1 */
@@ -206,6 +208,7 @@
retl
nop
END(bcopy)
+#endif
.align 32
200: be,pt %xcc, 201f /* CTI */
Modified: trunk/uClibc/libc/string/sparc/sparc64/memset.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc64/memset.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc64/memset.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -20,6 +20,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
#include <asm/asi.h>
#ifndef XCC
#define XCC xcc
@@ -191,6 +192,7 @@
.text
.align 32
+#ifdef __UCLIBC_SUSV3_LEGACY__
ENTRY(bzero)
#ifndef USE_BPR
srl %o1, 0, %o1
@@ -310,3 +312,4 @@
0: retl
mov %o5, %o0
END(bzero)
+#endif
Modified: trunk/uClibc/libc/string/sparc/sparc64/sparcv9b/memcpy.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc64/sparcv9b/memcpy.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc64/sparcv9b/memcpy.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -19,6 +19,8 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
+
#define ASI_BLK_P 0xf0
#define FPRS_FEF 0x04
#define VISEntryHalf rd %fprs, %o5; wr %g0, FPRS_FEF, %fprs
@@ -36,6 +38,7 @@
.text
.align 32
+#ifdef __UCLIBC_SUSV3_LEGACY__
ENTRY(bcopy)
sub %o1, %o0, %o4
mov %o0, %g4
@@ -51,6 +54,7 @@
retl
nop
END(bcopy)
+#endif
/* Special/non-trivial issues of this code:
*
Modified: trunk/uClibc/libc/string/sparc/sparc64/strchr.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc64/strchr.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/sparc/sparc64/strchr.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -20,6 +20,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
#include <asm/asi.h>
#ifndef XCC
#define XCC xcc
@@ -329,7 +330,9 @@
add %o0, -1, %o0 /* IEU0 */
END(strchr)
libc_hidden_def(strchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strchr,index)
+#endif
.align 32
ENTRY(strrchr)
@@ -478,4 +481,6 @@
ldx [%o0], %o3 /* Load */
END(strrchr)
libc_hidden_def(strrchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strrchr,rindex)
+#endif
Modified: trunk/uClibc/libc/string/strchr.c
===================================================================
--- trunk/uClibc/libc/string/strchr.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/strchr.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -27,6 +27,6 @@
}
libc_hidden_def(Wstrchr)
-#ifndef WANT_WIDE
+#if !defined WANT_WIDE && defined __UCLIBC_SUSV3_LEGACY__
strong_alias(strchr,index)
#endif
Modified: trunk/uClibc/libc/string/strrchr.c
===================================================================
--- trunk/uClibc/libc/string/strrchr.c 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/strrchr.c 2006-03-23 17:19:42 UTC (rev 14630)
@@ -29,5 +29,7 @@
}
#ifndef WANT_WIDE
libc_hidden_def(strrchr)
+# ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(strrchr,rindex)
+# endif
#endif
Modified: trunk/uClibc/libc/string/x86_64/bzero.S
===================================================================
--- trunk/uClibc/libc/string/x86_64/bzero.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/x86_64/bzero.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -1,2 +1,5 @@
-#define memset bzero
-#include "memset.S"
+#include <features.h>
+#ifdef __UCLIBC_SUSV3_LEGACY__
+# define memset bzero
+# include "memset.S"
+#endif
Modified: trunk/uClibc/libc/string/x86_64/strchr.S
===================================================================
--- trunk/uClibc/libc/string/x86_64/strchr.S 2006-03-23 16:52:59 UTC (rev 14629)
+++ trunk/uClibc/libc/string/x86_64/strchr.S 2006-03-23 17:19:42 UTC (rev 14630)
@@ -285,4 +285,6 @@
END (BP_SYM (strchr))
libc_hidden_def(strchr)
+#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias (BP_SYM (strchr), BP_SYM (index))
+#endif
More information about the uClibc-cvs
mailing list