svn commit: branches/uClibc-nptl/include
sjhill at uclibc.org
sjhill at uclibc.org
Mon Aug 21 04:46:42 UTC 2006
Author: sjhill
Date: 2006-08-20 21:46:41 -0700 (Sun, 20 Aug 2006)
New Revision: 15881
Log:
Merge from trunk.
Modified:
branches/uClibc-nptl/include/elf.h
branches/uClibc-nptl/include/features.h
branches/uClibc-nptl/include/libc-internal.h
branches/uClibc-nptl/include/libc-symbols.h
branches/uClibc-nptl/include/string.h
branches/uClibc-nptl/include/strings.h
branches/uClibc-nptl/include/wchar.h
Changeset:
Modified: branches/uClibc-nptl/include/elf.h
===================================================================
--- branches/uClibc-nptl/include/elf.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/elf.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -1253,6 +1253,46 @@
/* Keep this the last entry. */
#define R_386_NUM 38
+/* Blackfin specific definitions. */
+#define R_BFIN_unused0 0x00
+#define R_BFIN_pcrel5m2 0x01
+#define R_BFIN_unused1 0x02
+#define R_BFIN_pcrel10 0x03
+#define R_BFIN_pcrel12_jump 0x04
+#define R_BFIN_rimm16 0x05
+#define R_BFIN_luimm16 0x06
+#define R_BFIN_huimm16 0x07
+#define R_BFIN_pcrel12_jump_s 0x08
+#define R_BFIN_pcrel24_jump_x 0x09
+#define R_BFIN_pcrel24 0x0a
+#define R_BFIN_unusedb 0x0b
+#define R_BFIN_unusedc 0x0c
+#define R_BFIN_pcrel24_jump_l 0x0d
+#define R_BFIN_pcrel24_call_x 0x0e
+#define R_BFIN_var_eq_symb 0x0f
+#define R_BFIN_byte_data 0x10
+#define R_BFIN_byte2_data 0x11
+#define R_BFIN_byte4_data 0x12
+#define R_BFIN_pcrel11 0x13
+
+#define R_BFIN_GOT17M4 0x14
+#define R_BFIN_GOTHI 0x15
+#define R_BFIN_GOTLO 0x16
+#define R_BFIN_FUNCDESC 0x17
+#define R_BFIN_FUNCDESC_GOT17M4 0x18
+#define R_BFIN_FUNCDESC_GOTHI 0x19
+#define R_BFIN_FUNCDESC_GOTLO 0x1a
+#define R_BFIN_FUNCDESC_VALUE 0x1b
+#define R_BFIN_FUNCDESC_GOTOFF17M4 0x1c
+#define R_BFIN_FUNCDESC_GOTOFFHI 0x1d
+#define R_BFIN_FUNCDESC_GOTOFFLO 0x1e
+#define R_BFIN_GOTOFF17M4 0x1f
+#define R_BFIN_GOTOFFHI 0x20
+#define R_BFIN_GOTOFFLO 0x21
+
+#define EF_BFIN_PIC 0x00000001 /* -fpic */
+#define EF_BFIN_FDPIC 0x00000002 /* -mfdpic */
+
/* FR-V specific definitions. */
#define R_FRV_NONE 0 /* No reloc. */
#define R_FRV_32 1 /* Direct 32 bit. */
Modified: branches/uClibc-nptl/include/features.h
===================================================================
--- branches/uClibc-nptl/include/features.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/features.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -292,6 +292,8 @@
# define __USE_REENTRANT 1
#endif
+/* uClibc does not support _FORTIFY_SOURCE */
+#undef _FORTIFY_SOURCE
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
&& __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
# if _FORTIFY_SOURCE > 1
Modified: branches/uClibc-nptl/include/libc-internal.h
===================================================================
--- branches/uClibc-nptl/include/libc-internal.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/libc-internal.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
/* --- this is added to integrate linuxthreads */
-#define __USE_UNIX98 1
+/*#define __USE_UNIX98 1*/
#ifndef __ASSEMBLER__
# ifdef IS_IN_libc
@@ -44,7 +44,11 @@
# include <stddef.h>
/* sources are built w/ _GNU_SOURCE, this gets undefined */
+#ifdef __USE_GNU
extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
+#else
+extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen);
+#endif
/* #include <pthread.h> */
# ifndef __UCLIBC_HAS_THREADS__
Modified: branches/uClibc-nptl/include/libc-symbols.h
===================================================================
--- branches/uClibc-nptl/include/libc-symbols.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/libc-symbols.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -1,4 +1,7 @@
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
+/* Support macros for making weak and strong aliases for symbols,
+ and for using symbol sets and linker warnings with GNU ld.
+ Copyright (C) 1995-1998,2000-2003,2004,2005,2006
+ 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
@@ -17,14 +20,38 @@
02111-1307 USA. */
#ifndef _LIBC_SYMBOLS_H
-#define _LIBC_SYMBOLS_H 1
+#define _LIBC_SYMBOLS_H 1
+/* This file's macros are included implicitly in the compilation of every
+ file in the C library by -imacros.
+
+ We include uClibc_arch_features.h which is defined by arch devs.
+ It should define for us the following symbols:
+
+ * HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
+ * ASM_GLOBAL_DIRECTIVE with `.globl' or `.global'.
+ * ASM_TYPE_DIRECTIVE_PREFIX with `@' or `#' or whatever for .type,
+ or leave it undefined if there is no .type directive.
+ * HAVE_ELF if using ELF, which supports weak symbols using `.weak'.
+ * HAVE_ASM_WEAK_DIRECTIVE if we have weak symbols using `.weak'.
+ * HAVE_ASM_WEAKEXT_DIRECTIVE if we have weak symbols using `.weakext'.
+
+ */
+
#include <bits/uClibc_arch_features.h>
-#define _LIBC 1
+/* This is defined for the compilation of all C library code. features.h
+ tests this to avoid inclusion of stubs.h while compiling the library,
+ before stubs.h has been generated. Some library code that is shared
+ with other packages also tests this symbol to see if it is being
+ compiled as part of the C library. We must define this before including
+ config.h, because it makes some definitions conditional on whether libc
+ itself is being compiled, or just some generator program. */
+#define _LIBC 1
+
/* Enable declarations of GNU extensions, since we are compiling them. */
-#define _GNU_SOURCE 1
+#define _GNU_SOURCE 1
/* Prepare for the case that `__builtin_expect' is not available. */
#if __GNUC__ == 2 && __GNUC_MINOR__ < 96
@@ -128,13 +155,13 @@
# define _strong_alias(name, aliasname) \
extern __typeof (name) aliasname __attribute__ ((alias (#name)));
-# ifdef HAVE_WEAK_SYMBOLS
-
/* This comes between the return type and function name in
a function definition to make that definition weak. */
# define weak_function __attribute__ ((weak))
# define weak_const_function __attribute__ ((weak, __const__))
+# ifdef HAVE_WEAK_SYMBOLS
+
/* Define ALIASNAME as a weak alias for NAME.
If weak aliases are not available, this defines a strong alias. */
# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
@@ -235,7 +262,7 @@
functions not exported) a bit faster by using a different calling
convention. */
#ifndef internal_function
-# define internal_function /* empty */
+# define internal_function /* empty */
#endif
/* We want the .gnu.warning.SYMBOL section to be unallocated. */
@@ -315,7 +342,7 @@
}
libc_hidden_weak (foo)
- Similarly for global data. If references to foo within libc.so should
+ Similarly for global data. If references to foo within libc.so should
always go to foo defined in libc.so, then in include/foo.h you add:
libc_hidden_proto (foo)
@@ -330,7 +357,7 @@
int foo = INITIAL_FOO_VALUE;
libc_hidden_data_weak (foo)
- If foo is normally just an alias (strong or weak) of some other function,
+ If foo is normally just an alias (strong or weak) to some other function,
you should use the normal strong_alias first, then add libc_hidden_def
or libc_hidden_weak:
@@ -385,63 +412,31 @@
#if !defined STATIC && !defined __BCC__
# ifndef __ASSEMBLER__
-# define hidden_proto(name, attrs...) __hidden_proto (name, __GI_##name, ##attrs)
-# define __hidden_proto(name, internal, attrs...) \
- extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \
- __hidden_proto_hiddenattr (attrs);
-# define __hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name)
-# define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name)
-# define __hidden_asmname2(prefix, name) #prefix name
-# define __hidden_ver1(local, internal, name) \
- extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \
- extern __typeof (name) __EI_##name __attribute__((alias (__hidden_asmname1 (,#local))))
-# define hidden_def(name) __hidden_ver1(__GI_##name, name, name);
-# define hidden_data_def(name) hidden_def(name)
-# define hidden_weak(name) __hidden_ver1(__GI_##name, name, name) __attribute__((weak));
-# define hidden_data_weak(name) hidden_weak(name)
+# define hidden_proto(name, attrs...)
+# define hidden_def(name)
+# define hidden_data_def(name)
+# define hidden_weak(name)
+# define hidden_data_weak(name)
# else /* __ASSEMBLER__ */
# ifdef HAVE_ASM_SET_DIRECTIVE
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
-# define _hidden_strong_alias(original, alias) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original) ASM_LINE_SEP \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
- .set C_SYMBOL_DOT_NAME (alias),C_SYMBOL_DOT_NAME (original)
+# define _hidden_strong_alias(original, alias)
# else
-# define _hidden_strong_alias(original, alias) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
+# define _hidden_strong_alias(original, alias)
# endif
# else
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
-# define _hidden_strong_alias(original, alias) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
+# define _hidden_strong_alias(original, alias)
# else
-# define _hidden_strong_alias(original, alias) \
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
+# define _hidden_strong_alias(original, alias)
# endif
# endif
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
-# define _hidden_weak_alias(original, alias) \
- .hidden C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- .hidden C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
- weak_alias(original, alias)
+# define _hidden_weak_alias(original, alias)
# else
-# define _hidden_weak_alias(original, alias) \
- .hidden C_SYMBOL_NAME (alias) ASM_LINE_SEP \
- weak_alias(original, alias)
+# define _hidden_weak_alias(original, alias)
# endif
/* For assembly, we need to do the opposite of what we do in C:
@@ -453,11 +448,11 @@
but we provide it for consistency with the C usage.
hidden_proto doesn't make sense for assembly but the equivalent
is to call via the HIDDEN_JUMPTARGET macro instead of JUMPTARGET. */
-# define hidden_def(name) _hidden_strong_alias (name, __GI_##name)
-# define hidden_data_def(name) _hidden_strong_alias (name, __GI_##name)
-# define hidden_weak(name) _hidden_weak_alias (name, __GI_##name)
-# define hidden_data_weak(name) _hidden_weak_alias (name, __GI_##name)
-# define HIDDEN_JUMPTARGET(name) __GI_##name
+# define hidden_def(name)
+# define hidden_data_def(name)
+# define hidden_weak(name)
+# define hidden_data_weak(name)
+# define HIDDEN_JUMPTARGET(name)
# endif /* __ASSEMBLER__ */
#else /* SHARED */
# ifndef __ASSEMBLER__
@@ -674,4 +669,4 @@
# define libpthread_hidden_data_ver(local, name)
#endif
-#endif /* _LIBC_SYMBOLS_H */
+#endif /* libc-symbols.h */
Modified: branches/uClibc-nptl/include/string.h
===================================================================
--- branches/uClibc-nptl/include/string.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/string.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -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: branches/uClibc-nptl/include/strings.h
===================================================================
--- branches/uClibc-nptl/include/strings.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/strings.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -22,6 +22,9 @@
/* We don't need and should not read this file if <string.h> was already
read. The one exception being that if __USE_BSD isn't defined, then
these aren't defined in string.h, so we need to define them here. */
+
+/* keep this file in sync w/ string.h, the glibc version is out of date */
+
#if !defined _STRING_H || !defined __USE_BSD
# include <features.h>
@@ -30,33 +33,58 @@
__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));
+
+/* Set N bytes of S to 0. */
+extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1));
+
/* Compare N bytes of S1 and S2 (same as memcmp). */
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
- __THROW __attribute_pure__;
+ __THROW __attribute_pure__ __nonnull ((1, 2));
-/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
-extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW;
+/* Find the first occurrence of C in S (same as strchr). */
+extern char *index (__const char *__s, int __c)
+ __THROW __attribute_pure__ __nonnull ((1));
-/* Set N bytes of S to 0. */
-extern void bzero (void *__s, size_t __n) __THROW;
+/* 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));
+extern int ffs (int __i) __THROW __attribute__ ((__const__));
-/* Find the first occurrence of C in S (same as strchr). */
-extern char *index (__const char *__s, int __c) __THROW __attribute_pure__;
+/* The following two functions are non-standard but necessary for non-32 bit
+ platforms. */
+#if 0 /*def __USE_GNU*/
+extern int ffsl (long int __l) __THROW __attribute__ ((__const__));
+# ifdef __GNUC__
+__extension__ extern int ffsll (long long int __ll)
+ __THROW __attribute__ ((__const__));
+# endif
+# endif
-/* Find the last occurrence of C in S (same as strrchr). */
-extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__;
-
/* Compare S1 and S2, ignoring case. */
extern int strcasecmp (__const char *__s1, __const char *__s2)
- __THROW __attribute_pure__;
+ __THROW __attribute_pure__ __nonnull ((1, 2));
/* Compare no more than N chars of S1 and S2, ignoring case. */
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
- __THROW __attribute_pure__;
+ __THROW __attribute_pure__ __nonnull ((1, 2));
__END_DECLS
Modified: branches/uClibc-nptl/include/wchar.h
===================================================================
--- branches/uClibc-nptl/include/wchar.h 2006-08-21 04:46:30 UTC (rev 15880)
+++ branches/uClibc-nptl/include/wchar.h 2006-08-21 04:46:41 UTC (rev 15881)
@@ -329,8 +329,10 @@
mbstate_t *__restrict __ps) __THROW;
/* Return number of bytes in multibyte character pointed to by S. */
+#if 0 /* uClibc: disabled */
extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW;
+#endif
extern size_t mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW;
@@ -721,8 +723,7 @@
__const struct tm *__restrict __tp) __THROW;
__END_NAMESPACE_C99
-# ifdef __USE_GNU
-#ifdef __UCLIBC_HAS_XLOCALE__
+# if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
# include <xlocale.h>
/* Similar to `wcsftime' but takes the information from
@@ -731,7 +732,6 @@
__const wchar_t *__restrict __format,
__const struct tm *__restrict __tp,
__locale_t __loc) __THROW;
-#endif /* __UCLIBC_HAS_XLOCALE__ */
# endif
/* The X/Open standard demands that most of the functions defined in
More information about the uClibc-cvs
mailing list