toolchain: Add uClibc 0.9.30.3, remove older 0.9.30.x

As the 0.9.30.x stable releases only contain bugfixes, there isn't much
sense in using the older 0.9.30.x releases instead of .3, so use a single
0.9.30.x config similar to how we do it for the kernel headers.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Peter Korsgaard 2010-03-12 23:14:59 +01:00
parent 12ebf5714c
commit de859f6b2a
35 changed files with 7 additions and 2686 deletions

View File

@ -1,9 +1,11 @@
2010.05, Not yet released
X.org updated to 7.5.
Toolchain: uClibc 0.9.30.3, older 0.9.30.x removed.
Updated/fixed packages: busybox, dosfstools, e2fsprogs,
mtd-utils, squashfs
X.org updated to 7.5.
Updated/fixed packages: busybox, dosfstools, e2fsprogs,
mtd-utils, squashfs
2010.02, Release February 26th, 2010:

View File

@ -20,15 +20,7 @@ choice
bool "uClibc 0.9.29"
config BR2_UCLIBC_VERSION_0_9_30
depends on BR2_DEPRECATED
bool "uClibc 0.9.30"
config BR2_UCLIBC_VERSION_0_9_30_1
depends on BR2_RECENT || BR2_DEPRECATED
bool "uClibc 0.9.30.1"
config BR2_UCLIBC_VERSION_0_9_30_2
bool "uClibc 0.9.30.2"
bool "uClibc 0.9.30.x"
config BR2_UCLIBC_VERSION_SNAPSHOT
bool "daily snapshot"
@ -46,9 +38,7 @@ config BR2_UCLIBC_VERSION_STRING
string
default 0.9.28.3 if BR2_UCLIBC_VERSION_0_9_28_3
default 0.9.29 if BR2_UCLIBC_VERSION_0_9_29
default 0.9.30 if BR2_UCLIBC_VERSION_0_9_30
default 0.9.30.1 if BR2_UCLIBC_VERSION_0_9_30_1
default 0.9.30.2 if BR2_UCLIBC_VERSION_0_9_30_2
default 0.9.30.3 if BR2_UCLIBC_VERSION_0_9_30
default $BR2_USE_UCLIBC_SNAPSHOT if BR2_UCLIBC_VERSION_SNAPSHOT
config BR2_UCLIBC_CONFIG
@ -56,8 +46,6 @@ config BR2_UCLIBC_CONFIG
default "toolchain/uClibc/uClibc-0.9.28.config" if BR2_UCLIBC_VERSION_0_9_28_3
default "toolchain/uClibc/uClibc-0.9.29.config" if BR2_UCLIBC_VERSION_0_9_29
default "toolchain/uClibc/uClibc-0.9.30.config" if BR2_UCLIBC_VERSION_0_9_30
default "toolchain/uClibc/uClibc-0.9.30.config" if BR2_UCLIBC_VERSION_0_9_30_1
default "toolchain/uClibc/uClibc-0.9.30.config" if BR2_UCLIBC_VERSION_0_9_30_2
default "toolchain/uClibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_SNAPSHOT
help
Some people may wish to use their own modified uClibc configuration

View File

@ -1,48 +0,0 @@
[PATCH]: Add strtouq alias (to strtoul) for 64bit
The strtouq alias was only available on 32bit, breaking compilation of stuff
using strtouq on 64bit machines. At the same time use the correct return
type (u_quad_t).
Signed-of-by: Peter Korsgaard <jacmet@sunsite.dk>
---
include/stdlib.h | 4 +++-
libc/stdlib/stdlib.c | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
Index: uClibc-0.9.30.1/libc/stdlib/stdlib.c
===================================================================
--- uClibc-0.9.30.1.orig/libc/stdlib/stdlib.c
+++ uClibc-0.9.30.1/libc/stdlib/stdlib.c
@@ -401,6 +401,9 @@
libc_hidden_proto(__XL_NPP(strtoull))
strong_alias(__XL_NPP(strtoul),__XL_NPP(strtoull))
libc_hidden_def(__XL_NPP(strtoull))
+#if !defined(L_strtoul_l)
+strong_alias(strtoul,strtouq)
+#endif
#endif
Index: uClibc-0.9.30.1/include/stdlib.h
===================================================================
--- uClibc-0.9.30.1.orig/include/stdlib.h
+++ uClibc-0.9.30.1/include/stdlib.h
@@ -203,6 +203,8 @@
__END_NAMESPACE_STD
#ifdef __USE_BSD
+#include <sys/types.h> /* for u_quad_t */
+
/* Convert a string to a quadword integer. */
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
@@ -210,7 +212,7 @@
__THROW __nonnull ((1)) __wur;
/* Convert a string to an unsigned quadword integer. */
__extension__
-extern unsigned long long int strtouq (__const char *__restrict __nptr,
+extern u_quad_t strtouq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__THROW __nonnull ((1)) __wur;
#endif /* GCC and use BSD. */

View File

@ -1,177 +0,0 @@
From 1b6e90090da7194a8f94277aa132873044f7e8e7 Mon Sep 17 00:00:00 2001
From: carmelo <carmelo@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Date: Wed, 28 Jan 2009 15:23:51 +0000
Subject: [PATCH] Added sysdep.h and sysdep-cancel.h for linuxthreads ARM
Signed-off-by: Will Wagner <will_wagner@carallon.com>
git-svn-id: svn+ssh://uclibc.org/svn/trunk/uClibc@25099 69ca8d6d-28ef-0310-b511-8ec308f3f277
---
.../linuxthreads/sysdeps/arm/sysdep-cancel.h | 8 +
libpthread/linuxthreads/sysdeps/arm/sysdep.h | 137 ++++++++++++++++++++
2 files changed, 145 insertions(+), 0 deletions(-)
create mode 100644 libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
create mode 100644 libpthread/linuxthreads/sysdeps/arm/sysdep.h
diff --git a/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
new file mode 100644
index 0000000..ba6a1e0
--- /dev/null
+++ b/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
@@ -0,0 +1,8 @@
+#include <sysdep.h>
+
+/* No multi-thread handling enabled. */
+#define SINGLE_THREAD_P (1)
+#define RTLD_SINGLE_THREAD_P (1)
+#define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */
+#define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */
+#define LIBC_CANCEL_HANDLED() /* Nothing. */
diff --git a/libpthread/linuxthreads/sysdeps/arm/sysdep.h b/libpthread/linuxthreads/sysdeps/arm/sysdep.h
new file mode 100644
index 0000000..15d951c
--- /dev/null
+++ b/libpthread/linuxthreads/sysdeps/arm/sysdep.h
@@ -0,0 +1,137 @@
+/* Generic asm macros used on many machines.
+ Copyright (C) 1991,92,93,96,98,2002,2003 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
+ 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. */
+
+#ifndef C_LABEL
+
+/* Define a macro we can use to construct the asm name for a C symbol. */
+#ifdef NO_UNDERSCORES
+#ifdef __STDC__
+#define C_LABEL(name) name##:
+#else
+#define C_LABEL(name) name/**/:
+#endif
+#else
+#ifdef __STDC__
+#define C_LABEL(name) _##name##:
+#else
+#define C_LABEL(name) _/**/name/**/:
+#endif
+#endif
+
+#endif
+
+#ifdef __ASSEMBLER__
+/* Mark the end of function named SYM. This is used on some platforms
+ to generate correct debugging information. */
+#ifndef END
+#define END(sym)
+#endif
+
+#ifndef JUMPTARGET
+#define JUMPTARGET(sym) sym
+#endif
+
+/* Makros to generate eh_frame unwind information. */
+# ifdef HAVE_ASM_CFI_DIRECTIVES
+# define cfi_startproc .cfi_startproc
+# define cfi_endproc .cfi_endproc
+# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off
+# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg
+# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off
+# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off
+# define cfi_offset(reg, off) .cfi_offset reg, off
+# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off
+# define cfi_register(r1, r2) .cfi_register r1, r2
+# define cfi_return_column(reg) .cfi_return_column reg
+# define cfi_restore(reg) .cfi_restore reg
+# define cfi_same_value(reg) .cfi_same_value reg
+# define cfi_undefined(reg) .cfi_undefined reg
+# define cfi_remember_state .cfi_remember_state
+# define cfi_restore_state .cfi_restore_state
+# define cfi_window_save .cfi_window_save
+# else
+# define cfi_startproc
+# define cfi_endproc
+# define cfi_def_cfa(reg, off)
+# define cfi_def_cfa_register(reg)
+# define cfi_def_cfa_offset(off)
+# define cfi_adjust_cfa_offset(off)
+# define cfi_offset(reg, off)
+# define cfi_rel_offset(reg, off)
+# define cfi_register(r1, r2)
+# define cfi_return_column(reg)
+# define cfi_restore(reg)
+# define cfi_same_value(reg)
+# define cfi_undefined(reg)
+# define cfi_remember_state
+# define cfi_restore_state
+# define cfi_window_save
+# endif
+
+#else /* ! ASSEMBLER */
+# ifdef HAVE_ASM_CFI_DIRECTIVES
+# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
+# define CFI_STRINGIFY2(Name) #Name
+# define CFI_STARTPROC ".cfi_startproc"
+# define CFI_ENDPROC ".cfi_endproc"
+# define CFI_DEF_CFA(reg, off) \
+ ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
+# define CFI_DEF_CFA_REGISTER(reg) \
+ ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
+# define CFI_DEF_CFA_OFFSET(off) \
+ ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
+# define CFI_ADJUST_CFA_OFFSET(off) \
+ ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
+# define CFI_OFFSET(reg, off) \
+ ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
+# define CFI_REL_OFFSET(reg, off) \
+ ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
+# define CFI_REGISTER(r1, r2) \
+ ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
+# define CFI_RETURN_COLUMN(reg) \
+ ".cfi_return_column " CFI_STRINGIFY(reg)
+# define CFI_RESTORE(reg) \
+ ".cfi_restore " CFI_STRINGIFY(reg)
+# define CFI_UNDEFINED(reg) \
+ ".cfi_undefined " CFI_STRINGIFY(reg)
+# define CFI_REMEMBER_STATE \
+ ".cfi_remember_state"
+# define CFI_RESTORE_STATE \
+ ".cfi_restore_state"
+# define CFI_WINDOW_SAVE \
+ ".cfi_window_save"
+# else
+# define CFI_STARTPROC
+# define CFI_ENDPROC
+# define CFI_DEF_CFA(reg, off)
+# define CFI_DEF_CFA_REGISTER(reg)
+# define CFI_DEF_CFA_OFFSET(off)
+# define CFI_ADJUST_CFA_OFFSET(off)
+# define CFI_OFFSET(reg, off)
+# define CFI_REL_OFFSET(reg, off)
+# define CFI_REGISTER(r1, r2)
+# define CFI_RETURN_COLUMN(reg)
+# define CFI_RESTORE(reg)
+# define CFI_UNDEFINED(reg)
+# define CFI_REMEMBER_STATE
+# define CFI_RESTORE_STATE
+# define CFI_WINDOW_SAVE
+# endif
+
+#endif /* __ASSEMBLER__ */
--
1.5.6.5

View File

@ -1,29 +0,0 @@
--- uClibc-0.9.30.1.orig/extra/scripts/unifdef.c
+++ uClibc-0.9.30.1/extra/scripts/unifdef.c
@@ -206,7 +206,7 @@ static void done(void);
static void error(const char *);
static int findsym(const char *);
static void flushline(bool);
-static Linetype getline(void);
+static Linetype get_line(void);
static Linetype ifeval(const char **);
static void ignoreoff(void);
static void ignoreon(void);
@@ -512,7 +512,7 @@ process(void)
for (;;) {
linenum++;
- lineval = getline();
+ lineval = get_line();
trans_table[ifstate[depth]][lineval]();
debug("process %s -> %s depth %d",
linetype_name[lineval],
@@ -526,7 +526,7 @@ process(void)
* help from skipcomment().
*/
static Linetype
-getline(void)
+get_line(void)
{
const char *cp;
int cursym;

View File

@ -1,59 +0,0 @@
From df180f43dd9fc651ac760e7fe4a4dcf9e6dd42f1 Mon Sep 17 00:00:00 2001
From: kraj <kraj@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Date: Tue, 23 Dec 2008 09:04:50 +0000
Subject: [PATCH] These defines needs to be considered after recent linux kernel combined i386 and x86_64 into x86
git-svn-id: svn+ssh://uclibc.org/svn/trunk/uClibc@24515 69ca8d6d-28ef-0310-b511-8ec308f3f277
git-svn-id: svn+ssh://uclibc.org/svn/trunk/uClibc@24799 69ca8d6d-28ef-0310-b511-8ec308f3f277
---
libc/sysdeps/linux/i386/bits/kernel_types.h | 8 ++++++--
libc/sysdeps/linux/x86_64/bits/kernel_types.h | 11 ++++++++++-
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/libc/sysdeps/linux/i386/bits/kernel_types.h b/libc/sysdeps/linux/i386/bits/kernel_types.h
index 6609dd3..8641a48 100644
--- a/libc/sysdeps/linux/i386/bits/kernel_types.h
+++ b/libc/sysdeps/linux/i386/bits/kernel_types.h
@@ -7,10 +7,14 @@
/* a hack for compiling a 32 bit user space with 64 bit
* kernel on x86_64 */
-#if !defined(__ARCH_I386_POSIX_TYPES_H) && !defined(_ASM_X86_64_POSIX_TYPES_H)
+#if !defined(__ARCH_I386_POSIX_TYPES_H) && \
+ !defined(_ASM_X86_64_POSIX_TYPES_H) && \
+ !defined(_ASM_X86_POSIX_TYPES_32_H) && \
+ !defined(_ASM_X86_POSIX_TYPES_64_H)
#define _ASM_X86_64_POSIX_TYPES_H
#define __ARCH_I386_POSIX_TYPES_H
-
+#define _ASM_X86_POSIX_TYPES_32_H
+#define _ASM_X86_POSIX_TYPES_64_H
typedef unsigned short __kernel_dev_t;
typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t;
diff --git a/libc/sysdeps/linux/x86_64/bits/kernel_types.h b/libc/sysdeps/linux/x86_64/bits/kernel_types.h
index 73f6ffb..b2f7341 100644
--- a/libc/sysdeps/linux/x86_64/bits/kernel_types.h
+++ b/libc/sysdeps/linux/x86_64/bits/kernel_types.h
@@ -4,8 +4,17 @@
* our private content, and not the kernel header, will win.
* -Erik
*/
-#ifndef _ASM_X86_64_POSIX_TYPES_H
+
+/* a hack for compiling a 32 bit user space with 64 bit
+ * kernel on x86_64 */
+#if !defined(__ARCH_I386_POSIX_TYPES_H) && \
+ !defined(_ASM_X86_64_POSIX_TYPES_H) && \
+ !defined(_ASM_X86_POSIX_TYPES_32_H) && \
+ !defined(_ASM_X86_POSIX_TYPES_64_H)
#define _ASM_X86_64_POSIX_TYPES_H
+#define __ARCH_I386_POSIX_TYPES_H
+#define _ASM_X86_POSIX_TYPES_32_H
+#define _ASM_X86_POSIX_TYPES_64_H
typedef unsigned long __kernel_dev_t;
typedef unsigned long __kernel_ino_t;
--
1.5.6.5

View File

@ -1,48 +0,0 @@
[PATCH]: Add strtouq alias (to strtoul) for 64bit
The strtouq alias was only available on 32bit, breaking compilation of stuff
using strtouq on 64bit machines. At the same time use the correct return
type (u_quad_t).
Signed-of-by: Peter Korsgaard <jacmet@sunsite.dk>
---
include/stdlib.h | 4 +++-
libc/stdlib/stdlib.c | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
Index: uClibc-0.9.30.1/libc/stdlib/stdlib.c
===================================================================
--- uClibc-0.9.30.1.orig/libc/stdlib/stdlib.c
+++ uClibc-0.9.30.1/libc/stdlib/stdlib.c
@@ -401,6 +401,9 @@
libc_hidden_proto(__XL_NPP(strtoull))
strong_alias(__XL_NPP(strtoul),__XL_NPP(strtoull))
libc_hidden_def(__XL_NPP(strtoull))
+#if !defined(L_strtoul_l)
+strong_alias(strtoul,strtouq)
+#endif
#endif
Index: uClibc-0.9.30.1/include/stdlib.h
===================================================================
--- uClibc-0.9.30.1.orig/include/stdlib.h
+++ uClibc-0.9.30.1/include/stdlib.h
@@ -203,6 +203,8 @@
__END_NAMESPACE_STD
#ifdef __USE_BSD
+#include <sys/types.h> /* for u_quad_t */
+
/* Convert a string to a quadword integer. */
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
@@ -210,7 +212,7 @@
__THROW __nonnull ((1)) __wur;
/* Convert a string to an unsigned quadword integer. */
__extension__
-extern unsigned long long int strtouq (__const char *__restrict __nptr,
+extern u_quad_t strtouq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__THROW __nonnull ((1)) __wur;
#endif /* GCC and use BSD. */

View File

@ -1,177 +0,0 @@
From 1b6e90090da7194a8f94277aa132873044f7e8e7 Mon Sep 17 00:00:00 2001
From: carmelo <carmelo@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Date: Wed, 28 Jan 2009 15:23:51 +0000
Subject: [PATCH] Added sysdep.h and sysdep-cancel.h for linuxthreads ARM
Signed-off-by: Will Wagner <will_wagner@carallon.com>
git-svn-id: svn+ssh://uclibc.org/svn/trunk/uClibc@25099 69ca8d6d-28ef-0310-b511-8ec308f3f277
---
.../linuxthreads/sysdeps/arm/sysdep-cancel.h | 8 +
libpthread/linuxthreads/sysdeps/arm/sysdep.h | 137 ++++++++++++++++++++
2 files changed, 145 insertions(+), 0 deletions(-)
create mode 100644 libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
create mode 100644 libpthread/linuxthreads/sysdeps/arm/sysdep.h
diff --git a/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
new file mode 100644
index 0000000..ba6a1e0
--- /dev/null
+++ b/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
@@ -0,0 +1,8 @@
+#include <sysdep.h>
+
+/* No multi-thread handling enabled. */
+#define SINGLE_THREAD_P (1)
+#define RTLD_SINGLE_THREAD_P (1)
+#define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */
+#define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */
+#define LIBC_CANCEL_HANDLED() /* Nothing. */
diff --git a/libpthread/linuxthreads/sysdeps/arm/sysdep.h b/libpthread/linuxthreads/sysdeps/arm/sysdep.h
new file mode 100644
index 0000000..15d951c
--- /dev/null
+++ b/libpthread/linuxthreads/sysdeps/arm/sysdep.h
@@ -0,0 +1,137 @@
+/* Generic asm macros used on many machines.
+ Copyright (C) 1991,92,93,96,98,2002,2003 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
+ 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. */
+
+#ifndef C_LABEL
+
+/* Define a macro we can use to construct the asm name for a C symbol. */
+#ifdef NO_UNDERSCORES
+#ifdef __STDC__
+#define C_LABEL(name) name##:
+#else
+#define C_LABEL(name) name/**/:
+#endif
+#else
+#ifdef __STDC__
+#define C_LABEL(name) _##name##:
+#else
+#define C_LABEL(name) _/**/name/**/:
+#endif
+#endif
+
+#endif
+
+#ifdef __ASSEMBLER__
+/* Mark the end of function named SYM. This is used on some platforms
+ to generate correct debugging information. */
+#ifndef END
+#define END(sym)
+#endif
+
+#ifndef JUMPTARGET
+#define JUMPTARGET(sym) sym
+#endif
+
+/* Makros to generate eh_frame unwind information. */
+# ifdef HAVE_ASM_CFI_DIRECTIVES
+# define cfi_startproc .cfi_startproc
+# define cfi_endproc .cfi_endproc
+# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off
+# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg
+# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off
+# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off
+# define cfi_offset(reg, off) .cfi_offset reg, off
+# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off
+# define cfi_register(r1, r2) .cfi_register r1, r2
+# define cfi_return_column(reg) .cfi_return_column reg
+# define cfi_restore(reg) .cfi_restore reg
+# define cfi_same_value(reg) .cfi_same_value reg
+# define cfi_undefined(reg) .cfi_undefined reg
+# define cfi_remember_state .cfi_remember_state
+# define cfi_restore_state .cfi_restore_state
+# define cfi_window_save .cfi_window_save
+# else
+# define cfi_startproc
+# define cfi_endproc
+# define cfi_def_cfa(reg, off)
+# define cfi_def_cfa_register(reg)
+# define cfi_def_cfa_offset(off)
+# define cfi_adjust_cfa_offset(off)
+# define cfi_offset(reg, off)
+# define cfi_rel_offset(reg, off)
+# define cfi_register(r1, r2)
+# define cfi_return_column(reg)
+# define cfi_restore(reg)
+# define cfi_same_value(reg)
+# define cfi_undefined(reg)
+# define cfi_remember_state
+# define cfi_restore_state
+# define cfi_window_save
+# endif
+
+#else /* ! ASSEMBLER */
+# ifdef HAVE_ASM_CFI_DIRECTIVES
+# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
+# define CFI_STRINGIFY2(Name) #Name
+# define CFI_STARTPROC ".cfi_startproc"
+# define CFI_ENDPROC ".cfi_endproc"
+# define CFI_DEF_CFA(reg, off) \
+ ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
+# define CFI_DEF_CFA_REGISTER(reg) \
+ ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
+# define CFI_DEF_CFA_OFFSET(off) \
+ ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
+# define CFI_ADJUST_CFA_OFFSET(off) \
+ ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
+# define CFI_OFFSET(reg, off) \
+ ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
+# define CFI_REL_OFFSET(reg, off) \
+ ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
+# define CFI_REGISTER(r1, r2) \
+ ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
+# define CFI_RETURN_COLUMN(reg) \
+ ".cfi_return_column " CFI_STRINGIFY(reg)
+# define CFI_RESTORE(reg) \
+ ".cfi_restore " CFI_STRINGIFY(reg)
+# define CFI_UNDEFINED(reg) \
+ ".cfi_undefined " CFI_STRINGIFY(reg)
+# define CFI_REMEMBER_STATE \
+ ".cfi_remember_state"
+# define CFI_RESTORE_STATE \
+ ".cfi_restore_state"
+# define CFI_WINDOW_SAVE \
+ ".cfi_window_save"
+# else
+# define CFI_STARTPROC
+# define CFI_ENDPROC
+# define CFI_DEF_CFA(reg, off)
+# define CFI_DEF_CFA_REGISTER(reg)
+# define CFI_DEF_CFA_OFFSET(off)
+# define CFI_ADJUST_CFA_OFFSET(off)
+# define CFI_OFFSET(reg, off)
+# define CFI_REL_OFFSET(reg, off)
+# define CFI_REGISTER(r1, r2)
+# define CFI_RETURN_COLUMN(reg)
+# define CFI_RESTORE(reg)
+# define CFI_UNDEFINED(reg)
+# define CFI_REMEMBER_STATE
+# define CFI_RESTORE_STATE
+# define CFI_WINDOW_SAVE
+# endif
+
+#endif /* __ASSEMBLER__ */
--
1.5.6.5

View File

@ -1,474 +0,0 @@
Index: uClibc-0.9.30.1/libm/ldouble_wrappers.c
===================================================================
--- uClibc-0.9.30.1/libm/ldouble_wrappers.c (revision 25552)
+++ uClibc-0.9.30.1/libm/ldouble_wrappers.c (working copy)
@@ -13,6 +13,16 @@
#include "math.h"
#include <complex.h>
+#if defined __NO_LONG_DOUBLE_MATH
+# define int_WRAPPER_C99(func) /* not needed */
+# else
+# define int_WRAPPER_C99(func) \
+int func##l(long double x) \
+{ \
+ return func((double) x); \
+} \
+libm_hidden_def(func##l)
+#endif
/* Implement the following, as defined by SuSv3 */
#if 0
@@ -543,46 +553,28 @@ long double truncl (long double x)
#endif
-#ifdef __DO_C99_MATH__
+#if defined __DO_C99_MATH__
#ifdef L_fpclassifyl
-int __fpclassifyl (long double x)
-{
- return __fpclassify ( (double) x );
-}
-libm_hidden_def(__fpclassifyl)
+int_WRAPPER_C99(__fpclassify)
#endif
#ifdef L_finitel
-int __finitel (long double x)
-{
- return __finite ( (double)x );
-}
-libm_hidden_def(__finitel)
+int_WRAPPER_C99(__finite)
#endif
#ifdef L_signbitl
-int __signbitl (long double x)
-{
- return __signbitl ( (double)x );
-}
-libm_hidden_def(__signbitl)
+int_WRAPPER_C99(__signbit)
#endif
#ifdef L_isnanl
-int __isnanl (long double x)
-{
- return __isnan ( (double)x );
-}
-libm_hidden_def(__isnanl)
+int_WRAPPER_C99(__isnan)
#endif
#ifdef L_isinfl
-int __isinfl (long double x)
-{
- return __isinf ( (double)x );
-}
-libm_hidden_def(__isinfl)
+int_WRAPPER_C99(__isinf)
#endif
-#endif
+#endif /* DO_C99_MATH */
+
+#undef int_WRAPPER_C99
Index: uClibc-0.9.30.1/libm/nan.c
===================================================================
--- uClibc-0.9.30.1/libm/nan.c (revision 25552)
+++ uClibc-0.9.30.1/libm/nan.c (working copy)
@@ -45,7 +45,7 @@ float nanf (const char *tagp)
}
libm_hidden_def(nanf)
-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __NO_LONG_DOUBLE_MATH
libm_hidden_proto(nanl)
long double nanl (const char *tagp)
{
Index: uClibc-0.9.30.1/include/math.h
===================================================================
--- uClibc-0.9.30.1/include/math.h (revision 25552)
+++ uClibc-0.9.30.1/include/math.h (working copy)
@@ -118,7 +118,7 @@ __BEGIN_DECLS
# undef __MATH_PRECNAME
# if (__STDC__ - 0 || __GNUC__ - 0) \
- && (defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ || defined __LDBL_COMPAT)
+ && (!defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT)
# ifdef __LDBL_COMPAT
# ifdef __USE_ISOC99
@@ -230,7 +230,7 @@ enum
};
/* Return number of classification appropriate for X. */
-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifdef __NO_LONG_DOUBLE_MATH
# define fpclassify(x) \
(sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x))
# else
@@ -242,7 +242,7 @@ enum
# endif
/* Return nonzero value if sign of X is negative. */
-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifdef __NO_LONG_DOUBLE_MATH
# define signbit(x) \
(sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x))
# else
@@ -254,7 +254,7 @@ enum
# endif
/* Return nonzero value if X is not +-Inf or NaN. */
-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifdef __NO_LONG_DOUBLE_MATH
# define isfinite(x) \
(sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x))
# else
@@ -270,7 +270,7 @@ enum
/* Return nonzero value if X is a NaN. We could use `fpclassify' but
we already have this functions `__isnan' and it is faster. */
-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifdef __NO_LONG_DOUBLE_MATH
# define isnan(x) \
(sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x))
# else
@@ -282,7 +282,7 @@ enum
# endif
/* Return nonzero value is X is positive or negative infinity. */
-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifdef __NO_LONG_DOUBLE_MATH
# define isinf(x) \
(sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x))
# else
Index: uClibc-0.9.30.1/include/tgmath.h
===================================================================
--- uClibc-0.9.30.1/include/tgmath.h (revision 25552)
+++ uClibc-0.9.30.1/include/tgmath.h (working copy)
@@ -36,7 +36,7 @@
#if __GNUC_PREREQ (2, 7)
-# ifndef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifdef __NO_LONG_DOUBLE_MATH
# define __tgml(fct) fct
# else
# define __tgml(fct) fct ## l
Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h (working copy)
@@ -7,13 +7,13 @@
# define __WORDSIZE 32
#endif
-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
/* Signal the glibc ABI didn't used to have a `long double'.
The changes all the `long double' function variants to be redirects
to the double functions. */
# define __LONG_DOUBLE_MATH_OPTIONAL 1
# ifndef __LONG_DOUBLE_128__
-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
# endif
#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h (working copy)
@@ -65,11 +65,13 @@ typedef double double_t;
#endif /* ISO C99 */
-#ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+#ifndef __NO_LONG_DOUBLE_MATH
#include <bits/wordsize.h>
/* Signal that we do not really have a `long double'. The disables the
declaration of all the `long double' function variants. */
# if __WORDSIZE == 32
-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+# elif !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
# endif /* __WORDSIZE == 32 */
-#endif /* __UCLIBC_HAS_LONG_DOUBLE_MATH__ */
+#endif /* __NO_LONG_DOUBLE_MATH */
Index: uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h (working copy)
@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp
# define FP_ILOGBNAN (2147483647)
#endif /* ISO C99 */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+/* Signal that we do not really have a `long double'. This disables the
+ declaration of all the `long double' function variants. */
+/* XXX The FPA does support this but the patterns in GCC are currently
+ turned off. */
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h (working copy)
@@ -36,3 +36,7 @@ typedef long double double_t; /* `double
# define FP_ILOGBNAN (2147483647)
#endif /* ISO C99 */
+
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h (working copy)
@@ -18,13 +18,13 @@
#define __WORDSIZE 64
-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
/* Signal that we didn't used to have a `long double'. The changes all
the `long double' function variants to be redirects to the double
functions. */
# define __LONG_DOUBLE_MATH_OPTIONAL 1
# ifndef __LONG_DOUBLE_128__
-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
# endif
#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h (working copy)
@@ -78,3 +78,7 @@ typedef double double_t;
# endif /* GNUC before 3.4 */
#endif /* COMPLEX_H */
+
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h (working copy)
@@ -35,3 +35,9 @@ typedef double double_t; /* `double' exp
# define FP_ILOGBNAN 2147483647
#endif /* ISO C99 */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+/* Signal that we do not really have a `long double'. The disables the
+ declaration of all the `long double' function variants. */
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h (working copy)
@@ -44,3 +44,7 @@ typedef long double double_t; /* `double
# define FP_ILOGBNAN (-2147483647 - 1)
#endif /* ISO C99 */
+
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h (working copy)
@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp
# define FP_ILOGBNAN (2147483647)
#endif /* ISO C99 */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+/* Signal that we do not really have a `long double'. This disables the
+ declaration of all the `long double' function variants. */
+/* XXX The FPA does support this but the patterns in GCC are currently
+ turned off. */
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h (working copy)
@@ -46,3 +46,7 @@ typedef long double double_t; /* `double
# define FP_ILOGBNAN (-2147483647 - 1)
#endif /* ISO C99 */
+
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h (working copy)
@@ -36,8 +36,8 @@ typedef double double_t; /* `double' exp
#endif /* ISO C99 */
-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+#ifndef __NO_LONG_DOUBLE_MATH
/* Signal that we do not really have a `long double'. The disables the
declaration of all the `long double' function variants. */
-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h (working copy)
@@ -35,3 +35,7 @@ typedef double double_t; /* `double' exp
# define FP_ILOGBNAN 2147483647
#endif /* ISO C99 */
+
+#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h (working copy)
@@ -39,8 +39,10 @@ typedef double double_t; /* `double' exp
#endif /* ISO C99 */
-#if defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && _MIPS_SIM == _ABIO32
+#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
/* Signal that we do not really have a `long double'. This disables the
declaration of all the `long double' function variants. */
-# error defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ and _MIPS_SIM == _ABIO32
+# define __NO_LONG_DOUBLE_MATH 1
+#elif !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h (working copy)
@@ -34,3 +34,11 @@ typedef double double_t; /* `double' exp
# define FP_ILOGBNAN (2147483647)
#endif /* ISO C99 */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+/* Signal that we do not really have a `long double'. This disables the
+ declaration of all the `long double' function variants. */
+/* XXX The FPA does support this but the patterns in GCC are currently
+ turned off. */
+# define __NO_LONG_DOUBLE_MATH 1
+#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h (working copy)
@@ -6,7 +6,7 @@
# define __WORDSIZE 32
#endif
-#if 0 /* uClibc: done in mathdefs.h: defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ && !defined __LONG_DOUBLE_MATH_OPTIONAL*/
+#if 0 /* uClibc: done in mathdefs.h: !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL*/
# if __WORDSIZE == 32
/* Signal that in 32bit ABI we didn't used to have a `long double'.
@@ -14,7 +14,7 @@
to the double functions. */
# define __LONG_DOUBLE_MATH_OPTIONAL 1
# ifndef __LONG_DOUBLE_128__
-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
# endif
# endif
#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h (working copy)
@@ -57,13 +57,15 @@ typedef double double_t;
#endif /* ISO C99 */
-#ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+#ifndef __NO_LONG_DOUBLE_MATH
# if __WORDSIZE == 32
/* Signal that in 32bit ABI we do not really have a `long double'.
The disables the declaration of all the `long double' function
variants. */
-# undef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
+# elif !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# define __NO_LONG_DOUBLE_MATH 1
# endif
#endif
Index: uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h (working copy)
@@ -37,7 +37,7 @@
# if __WORDSIZE == 32
-# ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifndef __NO_LONG_DOUBLE_MATH
# define __unordered_cmp(x, y) \
(__extension__ \
@@ -157,7 +157,7 @@ __NTH (__signbit (double __x))
return __u.__i[0] < 0;
}
-# ifdef __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# ifndef __NO_LONG_DOUBLE_MATH
__MATH_INLINE int
__NTH (__signbitl (long double __x))
{
@@ -219,7 +219,7 @@ __NTH (sqrtl (long double __x))
_Qp_sqrt (&__r, &__x);
return __r;
}
-# elif defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# elif !defined __NO_LONG_DOUBLE_MATH
__MATH_INLINE long double
sqrtl (long double __x) __THROW
{
@@ -257,7 +257,7 @@ __ieee754_sqrtl (long double __x)
_Qp_sqrt(&__r, &__x);
return __r;
}
-# elif defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
+# elif !defined __NO_LONG_DOUBLE_MATH
__MATH_INLINE long double
__ieee754_sqrtl (long double __x)
{
Index: uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h
===================================================================
--- uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h (revision 25552)
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h (working copy)
@@ -61,3 +61,9 @@ typedef double double_t;
# define FP_ILOGBNAN 0x7fffffff
#endif /* ISO C99 */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+/* Signal that we do not really have a `long double'. The disables the
+ declaration of all the `long double' function variants. */
+# define __NO_LONG_DOUBLE_MATH 1
+#endif

View File

@ -1,371 +0,0 @@
Index: uClibc-0.9.30.1/ldso/ldso/arm/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/arm/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/arm/dl-sysdep.h (working copy)
@@ -15,7 +15,7 @@
GOT_BASE[1] = (unsigned long) MODULE; \
}
-static __inline__ unsigned long arm_modulus(unsigned long m, unsigned long p)
+static __always_inline unsigned long arm_modulus(unsigned long m, unsigned long p)
{
unsigned long i,t,inc;
i=p; t=0;
@@ -72,7 +72,7 @@ unsigned long _dl_linux_resolver(struct
first element of the GOT. We used to use the PIC register to do this
without a constant pool reference, but GCC 4.2 will use a pseudo-register
for the PIC base, so it may not be in r10. */
-static __inline__ Elf32_Addr __attribute__ ((unused))
+static __always_inline Elf32_Addr __attribute__ ((unused))
elf_machine_dynamic (void)
{
Elf32_Addr dynamic;
@@ -104,7 +104,7 @@ elf_machine_dynamic (void)
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr __attribute__ ((unused))
+static __always_inline Elf32_Addr __attribute__ ((unused))
elf_machine_load_address (void)
{
extern void __dl_start __asm__ ("_dl_start");
@@ -128,7 +128,7 @@ elf_machine_load_address (void)
return pcrel_addr - got_addr;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/powerpc/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/powerpc/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/powerpc/dl-sysdep.h (working copy)
@@ -90,7 +90,7 @@ void _dl_init_got(unsigned long *lpnt,st
#define ELF_MACHINE_PLTREL_OVERLAP 1
/* Return the value of the GOT pointer. */
-static __inline__ Elf32_Addr * __attribute__ ((const))
+static __always_inline Elf32_Addr * __attribute__ ((const))
ppc_got (void)
{
Elf32_Addr *got;
@@ -109,14 +109,14 @@ ppc_got (void)
/* Return the link-time address of _DYNAMIC, stored as
the first value in the GOT. */
-static __inline__ Elf32_Addr __attribute__ ((const))
+static __always_inline Elf32_Addr __attribute__ ((const))
elf_machine_dynamic (void)
{
return *ppc_got();
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr __attribute__ ((const))
+static __always_inline Elf32_Addr __attribute__ ((const))
elf_machine_load_address (void)
{
Elf32_Addr *branchaddr;
@@ -164,7 +164,7 @@ elf_machine_load_address (void)
return runtime_dynamic - elf_machine_dynamic ();
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/sh64/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/sh64/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/sh64/dl-sysdep.h (working copy)
@@ -42,7 +42,7 @@ extern unsigned long _dl_linux_resolver(
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. */
-static __inline__ Elf32_Addr elf_machine_dynamic(void)
+static __always_inline Elf32_Addr elf_machine_dynamic(void)
{
register Elf32_Addr *got;
@@ -70,7 +70,7 @@ static __inline__ Elf32_Addr elf_machine
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr elf_machine_load_address(void)
+static __always_inline Elf32_Addr elf_machine_load_address(void)
{
Elf32_Addr addr;
@@ -123,7 +123,7 @@ static __inline__ Elf32_Addr elf_machine
} \
}
-static __inline__ void
+static __always_inline void
elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/m68k/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/m68k/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/m68k/dl-sysdep.h (working copy)
@@ -41,7 +41,7 @@ extern unsigned long _dl_linux_resolver
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_dynamic (void)
{
register Elf32_Addr *got __asm__ ("%a5");
@@ -50,7 +50,7 @@ elf_machine_dynamic (void)
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_load_address (void)
{
Elf32_Addr addr;
@@ -60,7 +60,7 @@ elf_machine_load_address (void)
return addr;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/i386/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/i386/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/i386/dl-sysdep.h (working copy)
@@ -42,8 +42,8 @@ extern unsigned long _dl_linux_resolver(
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. */
-static __inline__ Elf32_Addr elf_machine_dynamic (void) attribute_unused;
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr elf_machine_dynamic (void) attribute_unused;
+static __always_inline Elf32_Addr
elf_machine_dynamic (void)
{
register Elf32_Addr *got __asm__ ("%ebx");
@@ -52,8 +52,8 @@ elf_machine_dynamic (void)
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr elf_machine_load_address (void) attribute_unused;
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr elf_machine_load_address (void) attribute_unused;
+static __always_inline Elf32_Addr
elf_machine_load_address (void)
{
/* It doesn't matter what variable this is, the reference never makes
@@ -66,7 +66,7 @@ elf_machine_load_address (void)
return addr;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/cris/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/cris/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/cris/dl-sysdep.h (working copy)
@@ -39,7 +39,7 @@ extern unsigned long _dl_linux_resolver(
|| ((type) == R_CRIS_GLOB_DAT)) * ELF_RTYPE_CLASS_PLT) \
| (((type) == R_CRIS_COPY) * ELF_RTYPE_CLASS_COPY))
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_dynamic(void)
{
/* Don't just set this to an asm variable "r0" since that's not logical
@@ -61,7 +61,7 @@ elf_machine_dynamic(void)
there's some other symbol we could use, that we don't *have* to force a
GOT entry for. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_load_address(void)
{
Elf32_Addr gotaddr_diff;
@@ -95,7 +95,7 @@ elf_machine_load_address(void)
return gotaddr_diff;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/xtensa/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/xtensa/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/xtensa/dl-sysdep.h (working copy)
@@ -87,7 +87,7 @@ extern unsigned long _dl_linux_resolver
(((type) == R_XTENSA_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
/* Return the link-time address of _DYNAMIC. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_dynamic (void)
{
/* This function is only used while bootstrapping the runtime linker.
@@ -97,7 +97,7 @@ elf_machine_dynamic (void)
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_load_address (void)
{
Elf32_Addr addr, tmp;
@@ -118,7 +118,7 @@ elf_machine_load_address (void)
return addr - 3;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/sparc/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/sparc/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/sparc/dl-sysdep.h (working copy)
@@ -49,7 +49,7 @@ unsigned long _dl_linux_resolver(struct
#ifndef COMPILE_ASM
/* Cheap modulo implementation, taken from arm/ld_sysdep.h. */
-static __inline__ unsigned long
+static __always_inline unsigned long
sparc_mod(unsigned long m, unsigned long p)
{
unsigned long i, t, inc;
@@ -127,7 +127,7 @@ do { register Elf32_Addr pc __asm__("
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_dynamic (void)
{
register Elf32_Addr *got __asm__ ("%l7");
@@ -138,7 +138,7 @@ elf_machine_dynamic (void)
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_load_address (void)
{
register Elf32_Addr *pc __asm__ ("%o7"), *got __asm__ ("%l7");
@@ -157,7 +157,7 @@ elf_machine_load_address (void)
return (Elf32_Addr) got - *got + (pc[2] - pc[3]) * 4 - 4;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/mips/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/mips/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/mips/dl-sysdep.h (working copy)
@@ -163,7 +163,7 @@ void _dl_perform_mips_global_got_relocat
#define OFFSET_GP_GOT 0x7ff0
-static __inline__ ElfW(Addr) *
+static __always_inline ElfW(Addr) *
elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
{
/* FIXME: the offset of gp from GOT may be system-dependent. */
@@ -173,7 +173,7 @@ elf_mips_got_from_gpreg (ElfW(Addr) gpre
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. We assume its $gp points to the primary GOT. */
-static __inline__ ElfW(Addr)
+static __always_inline ElfW(Addr)
elf_machine_dynamic (void)
{
register ElfW(Addr) gp __asm__ ("$28");
@@ -192,7 +192,7 @@ elf_machine_dynamic (void)
#endif
/* Return the run-time load address of the shared object. */
-static __inline__ ElfW(Addr)
+static __always_inline ElfW(Addr)
elf_machine_load_address (void)
{
ElfW(Addr) addr;
@@ -208,7 +208,7 @@ elf_machine_load_address (void)
return addr;
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (ElfW(Addr) load_off, const ElfW(Addr) rel_addr,
ElfW(Word) relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/sh/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/sh/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/sh/dl-sysdep.h (working copy)
@@ -25,7 +25,7 @@
struct elf_resolve;
extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry);
-static __inline__ unsigned int
+static __always_inline unsigned int
_dl_urem(unsigned int n, unsigned int base)
{
int res;
@@ -100,7 +100,7 @@ _dl_urem(unsigned int n, unsigned int ba
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. */
-static __inline__ Elf32_Addr __attribute__ ((unused))
+static __always_inline Elf32_Addr __attribute__ ((unused))
elf_machine_dynamic (void)
{
register Elf32_Addr *got;
@@ -109,7 +109,7 @@ elf_machine_dynamic (void)
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr __attribute__ ((unused))
+static __always_inline Elf32_Addr __attribute__ ((unused))
elf_machine_load_address (void)
{
Elf32_Addr addr;
@@ -151,7 +151,7 @@ elf_machine_load_address (void)
} \
}
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
Index: uClibc-0.9.30.1/ldso/ldso/bfin/dl-sysdep.h
===================================================================
--- uClibc-0.9.30.1/ldso/ldso/bfin/dl-sysdep.h (revision 25503)
+++ uClibc-0.9.30.1/ldso/ldso/bfin/dl-sysdep.h (working copy)
@@ -213,7 +213,7 @@ while (0)
#endif
#include <elf.h>
-static __inline__ void
+static __always_inline void
elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{

View File

@ -1,13 +0,0 @@
[PATCH]: runp->ifa_addr can be NULL. Backport of r24336.
diff -Narup uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c uClibc-0.9.30.1/libc/inet/getaddrinfo.c
--- uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c 2009-02-26 21:49:14.000000000 +0900
+++ uClibc-0.9.30.1/libc/inet/getaddrinfo.c 2009-03-06 00:59:23.000000000 +0900
@@ -187,6 +187,8 @@ static unsigned __check_pf(void)
}
for (runp = ifa; runp != NULL; runp = runp->ifa_next) {
+ if (runp->ifa_addr == NULL)
+ continue;
#if defined __UCLIBC_HAS_IPV4__
if (runp->ifa_addr->sa_family == PF_INET)
seen |= SEEN_IPV4;

View File

@ -1,29 +0,0 @@
--- a/libc/sysdeps/linux/common/prctl.c
+++ b/libc/sysdeps/linux/common/prctl.c
@@ -12,6 +12,24 @@
/* psm: including sys/prctl.h would depend on kernel headers */
#ifdef __NR_prctl
-extern int prctl (int, long, long, long, long);
-_syscall5(int, prctl, int, option, long, arg2, long, arg3, long, arg4, long, arg5)
+#define __NR___syscall_prctl __NR_prctl
+static inline _syscall5(int, __syscall_prctl, int, option, long, arg2, long, arg3, long,
+ arg4, long, arg5);
+
+int prctl(int option, ...) {
+ long arg2 = 0;
+ long arg3 = 0;
+ long arg4 = 0;
+ long arg5 = 0;
+ va_list ap;
+
+ va_start(ap, option);
+ arg2 = va_arg(ap, long);
+ arg3 = va_arg(ap, long);
+ arg4 = va_arg(ap, long);
+ arg5 = va_arg(ap, long);
+ va_end(ap);
+
+ return __syscall_prctl(option, arg2, arg3, arg4, arg5);
+}
#endif

View File

@ -1,29 +0,0 @@
--- uClibc-0.9.30.1.orig/extra/scripts/unifdef.c
+++ uClibc-0.9.30.1/extra/scripts/unifdef.c
@@ -206,7 +206,7 @@ static void done(void);
static void error(const char *);
static int findsym(const char *);
static void flushline(bool);
-static Linetype getline(void);
+static Linetype get_line(void);
static Linetype ifeval(const char **);
static void ignoreoff(void);
static void ignoreon(void);
@@ -512,7 +512,7 @@ process(void)
for (;;) {
linenum++;
- lineval = getline();
+ lineval = get_line();
trans_table[ifstate[depth]][lineval]();
debug("process %s -> %s depth %d",
linetype_name[lineval],
@@ -526,7 +526,7 @@ process(void)
* help from skipcomment().
*/
static Linetype
-getline(void)
+get_line(void)
{
const char *cp;
int cursym;

View File

@ -1,64 +0,0 @@
From a05c4380c5aaa6e107a4c7e1e5a139ec4cc43f0c Mon Sep 17 00:00:00 2001
From: Henning Heinold <heinold@inf.fu-berlin.de>
Date: Sun, 21 Feb 2010 11:55:32 +0100
Subject: [PATCH 14/15] LT pthread_atfork: unhide
Trying to compile perl with uClibc new linuxthreads on arm.
I run into the problem that pthread_atfork is not available.
The problem was that it was synced with the glibc version, which has
compat ifdefs we do not need in uClibc. The inital checked in version
is right and works. So either revert the commit 2 years ago
or patch it with the patch attached I made for openembedded.
Signed-off-by: Henning Heinold <heinold@inf.fu-berlin.de>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
libpthread/linuxthreads/Makefile.in | 2 +-
libpthread/linuxthreads/pthread_atfork.c | 13 +++----------
2 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/libpthread/linuxthreads/Makefile.in b/libpthread/linuxthreads/Makefile.in
index 947dea9..d53b5fa 100644
--- a/libpthread/linuxthreads/Makefile.in
+++ b/libpthread/linuxthreads/Makefile.in
@@ -45,7 +45,7 @@ pthread_sysdep_SRC := $(patsubst %,$(libpthread_DIR)/sysdeps/pthread/%.c,$(pthre
pthread_SRC := \
attr barrier cancel condvar errno events join pthread \
lockfile manager mutex pt-machine ptcleanup \
- ptclock_gettime ptclock_settime ptfork pthandles \
+ ptclock_gettime ptclock_settime ptfork pthandles pthread_atfork \
pthread_setegid pthread_seteuid pthread_setgid pthread_setregid \
pthread_setresgid pthread_setresuid pthread_setreuid pthread_setuid \
rwlock semaphore sighandler signals specific spinlock
diff --git a/libpthread/linuxthreads/pthread_atfork.c b/libpthread/linuxthreads/pthread_atfork.c
index 2464acb..4c83dd0 100644
--- a/libpthread/linuxthreads/pthread_atfork.c
+++ b/libpthread/linuxthreads/pthread_atfork.c
@@ -43,12 +43,8 @@ extern void *__dso_handle __attribute__ ((__weak__));
/* Hide the symbol so that no definition but the one locally in the
executable or DSO is used. */
-int
-#ifndef __pthread_atfork
-/* Don't mark the compatibility function as hidden. */
-attribute_hidden
-#endif
-__pthread_atfork (prepare, parent, child)
+
+int attribute_hidden __pthread_atfork (prepare, parent, child)
void (*prepare) (void);
void (*parent) (void);
void (*child) (void);
@@ -56,8 +52,5 @@ __pthread_atfork (prepare, parent, child)
return __register_atfork (prepare, parent, child,
&__dso_handle == NULL ? NULL : __dso_handle);
}
-#ifndef __pthread_atfork
-extern int pthread_atfork (void (*prepare) (void), void (*parent) (void),
- void (*child) (void)) attribute_hidden;
+
strong_alias (__pthread_atfork, pthread_atfork)
-#endif
--
1.6.6.1

View File

@ -1,87 +0,0 @@
From 2911103dd4a03bbd3aad11eddfce524a5c9ba9b3 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 22 Jan 2010 13:00:20 +0100
Subject: [PATCH 03/15] Make use of macros from sys/asm.h in crt1.S
Needed for mips nptl to boot once again.
(cherry picked from commit 9c343fd4030dcd7a52616f365893177dded50346)
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
libc/sysdeps/linux/mips/crt1.S | 46 +++++++++++----------------------------
1 files changed, 13 insertions(+), 33 deletions(-)
diff --git a/libc/sysdeps/linux/mips/crt1.S b/libc/sysdeps/linux/mips/crt1.S
index e851d52..6a80412 100644
--- a/libc/sysdeps/linux/mips/crt1.S
+++ b/libc/sysdeps/linux/mips/crt1.S
@@ -85,29 +85,10 @@
__start:
#ifdef __PIC__
-#if _MIPS_SIM == _MIPS_SIM_ABI32
- .frame sp, 24, sp
- .set noreorder
- move $0, $31 /* Save old ra. */
- bal 10f /* Find addr of cpload. */
- nop
-10:
- .cpload $31
- move $31, $0
- .set reorder
- .cprestore 16
-#else
- move $0, $31; /* Save old ra. */
- .set noreorder
- bal 10f /* Find addr of .cpsetup. */
- nop
-10:
- .set reorder
- .cpsetup $31, $25, 10b
- move $31, $0
-#endif
+ SETUP_GPX($0)
+ SETUP_GPX64($25,$0)
#else
- la $28, _gp /* Setup GP correctly if we're non-PIC. */
+ PTR_LA $28, _gp /* Setup GP correctly if we're non-PIC. */
move $31, $0
#endif
@@ -118,18 +99,18 @@ __start:
/* Allocate space on the stack for seven arguments and
* make sure the stack is aligned to double words (8 bytes) */
+ and $29, -2 * SZREG
+
#if _MIPS_SIM == _MIPS_SIM_ABI32
- and $29, -2 * 4
- subu $29, 32
- la $7, _init /* init */
- la $8, _fini
- sw $8, 16($29) /* fini */
- sw $2, 20($29) /* rtld_fini */
- sw $29, 24($29) /* stack_end */
-#else
- and $29, -2 * PTRSIZE
+ PTR_SUBIU $29, 32
+#endif
PTR_LA $7, _init /* init */
- PTR_LA $8, _fini /* fini */
+ PTR_LA $8, _fini
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+ PTR_S $8, 16($29) /* fini */
+ PTR_S $2, 20($29) /* rtld_fini */
+ PTR_S $29, 24($29) /* stack_end */
+#else
move $9, $2 /* rtld_fini */
move $10, $29 /* stack_end */
#endif
@@ -148,4 +129,3 @@ __data_start:
.weak data_start
data_start = __data_start
-
--
1.6.6.1

View File

@ -1,30 +0,0 @@
From 323453d85ed29ccba7a81d884479188869cd64b7 Mon Sep 17 00:00:00 2001
From: Henning Heinold <heinold@inf.fu-berlin.de>
Date: Sat, 23 Jan 2010 21:29:42 -0800
Subject: [PATCH 13/15] Makefile.in: Make install_dev depend on install_runtime.
* Helps in parallel build.
Signed-off-by: Henning Heinold <heinold@inf.fu-berlin.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
Makefile.in | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index ec4c28e..a889838 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -370,7 +370,7 @@ ifneq ($(UCLIBC_SUPPORT_AI_ADDRCONFIG),y)
endif
# Installs development library links.
-install_dev: install_headers all
+install_dev: install_headers install_runtime
$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
-$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
ifeq ($(HAVE_SHARED),y)
--
1.6.6.1

View File

@ -1,42 +0,0 @@
From 7b964170536951a260f7d552db99b428d1ea5026 Mon Sep 17 00:00:00 2001
From: Austin Foxley <austinf@cetoncorp.com>
Date: Wed, 3 Feb 2010 12:12:10 -0800
Subject: [PATCH 08/15] Unbreak build for sparc on some config's
Thanks to rob@landley.net
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
---
libc/sysdeps/linux/sparc/sigaction.c | 9 ++++-----
1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/libc/sysdeps/linux/sparc/sigaction.c b/libc/sysdeps/linux/sparc/sigaction.c
index a22ac40..7140fd3 100644
--- a/libc/sysdeps/linux/sparc/sigaction.c
+++ b/libc/sysdeps/linux/sparc/sigaction.c
@@ -34,7 +34,8 @@ _syscall5(int, rt_sigaction, int, a, int, b, int, c, int, d, int, e);
static void __rt_sigreturn_stub(void);
static void __sigreturn_stub(void);
-int __libc_sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
+libc_hidden_proto(sigaction)
+int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
{
int ret;
struct sigaction kact, koact;
@@ -65,10 +66,8 @@ int __libc_sigaction(int sig, const struct sigaction *act, struct sigaction *oac
return ret;
}
-#ifndef LIBC_SIGACTION
-weak_alias(__libc_sigaction,sigaction)
-libc_hidden_weak(sigaction)
-#endif
+libc_hidden_def(sigaction)
+weak_alias(sigaction,__libc_sigaction)
static void
__rt_sigreturn_stub(void)
--
1.6.6.1

View File

@ -1,74 +0,0 @@
From 85bc04d5436ca6c8a30a1ad28862260a04b8b3d5 Mon Sep 17 00:00:00 2001
From: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
Date: Wed, 16 Dec 2009 13:16:08 +0100
Subject: [PATCH 02/15] avr32: add varargs handling of prctl syscall
prctl is defined to use varargs in the header file, hence it needs varargs
specific handling in the source. This patch properly handles the variodic
argument before the syscall is passed to the kernel for the AVR32 architecture.
Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
---
libc/sysdeps/linux/avr32/Makefile.arch | 2 +-
libc/sysdeps/linux/avr32/prctl.c | 36 ++++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 1 deletions(-)
create mode 100644 libc/sysdeps/linux/avr32/prctl.c
diff --git a/libc/sysdeps/linux/avr32/Makefile.arch b/libc/sysdeps/linux/avr32/Makefile.arch
index bc5f625..98b85a7 100644
--- a/libc/sysdeps/linux/avr32/Makefile.arch
+++ b/libc/sysdeps/linux/avr32/Makefile.arch
@@ -5,7 +5,7 @@
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
-CSRC := brk.c clone.c mmap.c sigaction.c
+CSRC := brk.c clone.c mmap.c prctl.c sigaction.c
SSRC := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
sigrestorer.S syscall.S vfork.S
diff --git a/libc/sysdeps/linux/avr32/prctl.c b/libc/sysdeps/linux/avr32/prctl.c
new file mode 100644
index 0000000..4e146e3
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/prctl.c
@@ -0,0 +1,36 @@
+/*
+ * prctl syscall for AVR32 Linux.
+ *
+ * Copyright (C) 2010 Atmel Corporation
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser General
+ * Public License. See the file "COPYING.LIB" in the main directory of this
+ * archive for more details.
+ */
+#include <sys/syscall.h>
+#include <sys/prctl.h>
+#include <stdarg.h>
+
+#ifdef __NR_prctl
+#define __NR___syscall_prctl __NR_prctl
+static inline _syscall5(int, __syscall_prctl, int, option, long, arg2,
+ long, arg3, long, arg4, long, arg5);
+
+int prctl(int __option, ...)
+{
+ long arg2;
+ long arg3;
+ long arg4;
+ long arg5;
+ va_list ap;
+
+ va_start(ap, __option);
+ arg2 = va_arg(ap, long);
+ arg3 = va_arg(ap, long);
+ arg4 = va_arg(ap, long);
+ arg5 = va_arg(ap, long);
+ va_end(ap);
+
+ return INLINE_SYSCALL(prctl, 5, __option, arg2, arg3, arg4, arg5);
+}
+#endif
--
1.6.6.1

View File

@ -1,297 +0,0 @@
From 74ca5695cd9913691192e075449b8be5794d50f0 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Thu, 8 Oct 2009 02:51:55 +0000
Subject: [PATCH 12/15] clean up O_CLOEXEC handling
Drop the "#ifndef O_CLOEXEC" cruft, enable O_CLOEXEC in most fcntl.h
headers, and import __ASSUME_O_CLOEXEC from glibc.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
libc/pwd_grp/lckpwdf.c | 8 +++++++-
libc/sysdeps/linux/alpha/bits/fcntl.h | 2 --
libc/sysdeps/linux/arm/bits/fcntl.h | 2 --
libc/sysdeps/linux/avr32/bits/fcntl.h | 1 +
libc/sysdeps/linux/bfin/bits/fcntl.h | 2 ++
libc/sysdeps/linux/cris/bits/fcntl.h | 1 +
libc/sysdeps/linux/frv/bits/fcntl.h | 2 ++
libc/sysdeps/linux/hppa/bits/fcntl.h | 1 +
libc/sysdeps/linux/i386/bits/fcntl.h | 2 --
libc/sysdeps/linux/ia64/bits/fcntl.h | 2 --
libc/sysdeps/linux/m68k/bits/fcntl.h | 1 +
libc/sysdeps/linux/microblaze/bits/fcntl.h | 2 ++
libc/sysdeps/linux/mips/bits/fcntl.h | 1 +
libc/sysdeps/linux/powerpc/bits/fcntl.h | 2 --
libc/sysdeps/linux/sh/bits/fcntl.h | 2 --
libc/sysdeps/linux/sh64/bits/fcntl.h | 2 ++
libc/sysdeps/linux/sparc/bits/fcntl.h | 2 --
libc/sysdeps/linux/x86_64/bits/fcntl.h | 2 --
libc/sysdeps/linux/xtensa/bits/fcntl.h | 1 +
19 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/libc/pwd_grp/lckpwdf.c b/libc/pwd_grp/lckpwdf.c
index 0b0fb47..aec6283 100644
--- a/libc/pwd_grp/lckpwdf.c
+++ b/libc/pwd_grp/lckpwdf.c
@@ -75,7 +75,7 @@ lckpwdf (void)
/* Prevent problems caused by multiple threads. */
__UCLIBC_MUTEX_LOCK(mylock);
- lock_fd = open (_PATH_PASSWD, O_WRONLY);
+ lock_fd = open (_PATH_PASSWD, O_WRONLY | O_CLOEXEC);
if (lock_fd == -1) {
/* Cannot create lock file. */
goto DONE;
@@ -97,6 +97,12 @@ lckpwdf (void)
goto DONE;
}
+#ifndef __ASSUME_O_CLOEXEC
+ /* Make sure file gets correctly closed when process finished. */
+ fcntl (lock_fd, F_SETFD, FD_CLOEXEC);
+#endif
+
+
/* Now we have to get exclusive write access. Since multiple
process could try this we won't stop when it first fails.
Instead we set a timeout for the system call. Once the timer
diff --git a/libc/sysdeps/linux/alpha/bits/fcntl.h b/libc/sysdeps/linux/alpha/bits/fcntl.h
index 2a6b9ea..649c563 100644
--- a/libc/sysdeps/linux/alpha/bits/fcntl.h
+++ b/libc/sysdeps/linux/alpha/bits/fcntl.h
@@ -50,9 +50,7 @@
# define O_NOFOLLOW 0200000 /* Do not follow links. */
# define O_DIRECT 02000000 /* Direct disk access. */
# define O_NOATIME 04000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 010000000 /* Set close_on_exec. */
-# endif
#endif
#ifdef __USE_LARGEFILE64
diff --git a/libc/sysdeps/linux/arm/bits/fcntl.h b/libc/sysdeps/linux/arm/bits/fcntl.h
index 86cea4b..7cc5a9d 100644
--- a/libc/sysdeps/linux/arm/bits/fcntl.h
+++ b/libc/sysdeps/linux/arm/bits/fcntl.h
@@ -50,9 +50,7 @@
# define O_NOFOLLOW 0100000 /* Do not follow links. */
# define O_DIRECT 0200000 /* Direct disk access. */
# define O_NOATIME 01000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
-# endif
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/avr32/bits/fcntl.h b/libc/sysdeps/linux/avr32/bits/fcntl.h
index 2301e22..767243e 100644
--- a/libc/sysdeps/linux/avr32/bits/fcntl.h
+++ b/libc/sysdeps/linux/avr32/bits/fcntl.h
@@ -30,6 +30,7 @@
# define O_DIRECTORY 00200000 /* direct disk access */
# define O_NOFOLLOW 00400000 /* don't follow links */
# define O_NOATIME 01000000 /* don't set atime */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
#ifdef __USE_LARGEFILE64
diff --git a/libc/sysdeps/linux/bfin/bits/fcntl.h b/libc/sysdeps/linux/bfin/bits/fcntl.h
index 7d0bcf9..aabf94d 100644
--- a/libc/sysdeps/linux/bfin/bits/fcntl.h
+++ b/libc/sysdeps/linux/bfin/bits/fcntl.h
@@ -48,6 +48,8 @@
# define O_DIRECTORY 040000 /* Must be a directory. */
# define O_NOFOLLOW 0100000 /* Do not follow links. */
# define O_DIRECT 0200000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* don't set atime */
+# define O_CLOEXEC 02000000 /* set close_on_exec *
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/cris/bits/fcntl.h b/libc/sysdeps/linux/cris/bits/fcntl.h
index a2106ef..29443ba 100644
--- a/libc/sysdeps/linux/cris/bits/fcntl.h
+++ b/libc/sysdeps/linux/cris/bits/fcntl.h
@@ -50,6 +50,7 @@
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
# define O_NOATIME 01000000 /* Do not set atime. */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/frv/bits/fcntl.h b/libc/sysdeps/linux/frv/bits/fcntl.h
index 06e8860..5bff4d3 100644
--- a/libc/sysdeps/linux/frv/bits/fcntl.h
+++ b/libc/sysdeps/linux/frv/bits/fcntl.h
@@ -45,6 +45,8 @@
# define O_DIRECT 040000 /* Direct disk access. */
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
+# define O_NOATIME 01000000 /* don't set atime */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/hppa/bits/fcntl.h b/libc/sysdeps/linux/hppa/bits/fcntl.h
index cc23bf8..86e3b6f 100644
--- a/libc/sysdeps/linux/hppa/bits/fcntl.h
+++ b/libc/sysdeps/linux/hppa/bits/fcntl.h
@@ -50,6 +50,7 @@
# define O_DIRECTORY 00010000 /* Must be a directory. */
# define O_NOFOLLOW 00000200 /* Do not follow links. */
# define O_NOATIME 04000000 /* Do not set atime. */
+# define O_CLOEXEC 010000000 /* set close_on_exec */
#endif
#ifdef __USE_LARGEFILE64
diff --git a/libc/sysdeps/linux/i386/bits/fcntl.h b/libc/sysdeps/linux/i386/bits/fcntl.h
index 7f0b552..22e073b 100644
--- a/libc/sysdeps/linux/i386/bits/fcntl.h
+++ b/libc/sysdeps/linux/i386/bits/fcntl.h
@@ -50,9 +50,7 @@
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
# define O_NOATIME 01000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
-# endif
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/ia64/bits/fcntl.h b/libc/sysdeps/linux/ia64/bits/fcntl.h
index d134c4b..85a55f6 100644
--- a/libc/sysdeps/linux/ia64/bits/fcntl.h
+++ b/libc/sysdeps/linux/ia64/bits/fcntl.h
@@ -49,9 +49,7 @@
# define O_DIRECTORY 0200000 /* must be a directory */
# define O_NOFOLLOW 0400000 /* don't follow links */
# define O_NOATIME 01000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
-# endif
#endif
#ifdef __USE_LARGEFILE64
diff --git a/libc/sysdeps/linux/m68k/bits/fcntl.h b/libc/sysdeps/linux/m68k/bits/fcntl.h
index d36198d..e564b42 100644
--- a/libc/sysdeps/linux/m68k/bits/fcntl.h
+++ b/libc/sysdeps/linux/m68k/bits/fcntl.h
@@ -49,6 +49,7 @@
# define O_NOFOLLOW 0100000 /* Do not follow links. */
# define O_DIRECT 0200000 /* Direct disk access. */
# define O_NOATIME 01000000 /* Do not set atime. */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/microblaze/bits/fcntl.h b/libc/sysdeps/linux/microblaze/bits/fcntl.h
index c8aeb91..da35209 100644
--- a/libc/sysdeps/linux/microblaze/bits/fcntl.h
+++ b/libc/sysdeps/linux/microblaze/bits/fcntl.h
@@ -45,6 +45,8 @@
# define O_DIRECTORY 040000 /* Must be a directory. */
# define O_NOFOLLOW 0100000 /* Do not follow links. */
# define O_DIRECT 0200000 /* Direct disk access. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/mips/bits/fcntl.h b/libc/sysdeps/linux/mips/bits/fcntl.h
index ef015a4..f0072fd 100644
--- a/libc/sysdeps/linux/mips/bits/fcntl.h
+++ b/libc/sysdeps/linux/mips/bits/fcntl.h
@@ -51,6 +51,7 @@
# define O_DIRECT 0x8000 /* Direct disk access hint. */
# define O_DIRECTORY 0x10000 /* Must be a directory. */
# define O_NOATIME 0x40000 /* Do not set atime. */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has no synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/powerpc/bits/fcntl.h b/libc/sysdeps/linux/powerpc/bits/fcntl.h
index ceb75b4..0759c6a 100644
--- a/libc/sysdeps/linux/powerpc/bits/fcntl.h
+++ b/libc/sysdeps/linux/powerpc/bits/fcntl.h
@@ -50,9 +50,7 @@
# define O_DIRECTORY 040000 /* Must be a directory. */
# define O_NOFOLLOW 0100000 /* Do not follow links. */
# define O_NOATIME 01000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
-# endif
#endif
#ifdef __USE_LARGEFILE64
diff --git a/libc/sysdeps/linux/sh/bits/fcntl.h b/libc/sysdeps/linux/sh/bits/fcntl.h
index 570484c..adb7377 100644
--- a/libc/sysdeps/linux/sh/bits/fcntl.h
+++ b/libc/sysdeps/linux/sh/bits/fcntl.h
@@ -50,9 +50,7 @@
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
# define O_NOATIME 01000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
-# endif
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/sh64/bits/fcntl.h b/libc/sysdeps/linux/sh64/bits/fcntl.h
index 06e8860..245d35a 100644
--- a/libc/sysdeps/linux/sh64/bits/fcntl.h
+++ b/libc/sysdeps/linux/sh64/bits/fcntl.h
@@ -45,6 +45,8 @@
# define O_DIRECT 040000 /* Direct disk access. */
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
+# define O_NOATIME 01000000 /* Do not set atime. */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/sparc/bits/fcntl.h b/libc/sysdeps/linux/sparc/bits/fcntl.h
index 29c09a9..31a6d9b 100644
--- a/libc/sysdeps/linux/sparc/bits/fcntl.h
+++ b/libc/sysdeps/linux/sparc/bits/fcntl.h
@@ -49,9 +49,7 @@
# define O_NOFOLLOW 0x20000 /* don't follow links */
# define O_DIRECT 0x100000 /* direct disk access hint */
# define O_NOATIME 0x200000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 0x400000 /* Set close_on_exit. */
-# endif
#endif
#ifdef __USE_LARGEFILE64
diff --git a/libc/sysdeps/linux/x86_64/bits/fcntl.h b/libc/sysdeps/linux/x86_64/bits/fcntl.h
index be00e4a..f1cf388 100644
--- a/libc/sysdeps/linux/x86_64/bits/fcntl.h
+++ b/libc/sysdeps/linux/x86_64/bits/fcntl.h
@@ -50,9 +50,7 @@
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
# define O_NOATIME 01000000 /* Do not set atime. */
-# if 0
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
-# endif
#endif
/* For now Linux has synchronisity options for data and read operations.
diff --git a/libc/sysdeps/linux/xtensa/bits/fcntl.h b/libc/sysdeps/linux/xtensa/bits/fcntl.h
index a89362e..921a626 100644
--- a/libc/sysdeps/linux/xtensa/bits/fcntl.h
+++ b/libc/sysdeps/linux/xtensa/bits/fcntl.h
@@ -50,6 +50,7 @@
# define O_DIRECTORY 0200000 /* Must be a directory. */
# define O_NOFOLLOW 0400000 /* Do not follow links. */
# define O_NOATIME 01000000 /* Do not set atime. */
+# define O_CLOEXEC 02000000 /* set close_on_exec */
#endif
/* For now Linux has synchronisity options for data and read operations.
--
1.6.6.1

View File

@ -1,153 +0,0 @@
From d75ad2e129b3f22296cead3db53c784527deab60 Mon Sep 17 00:00:00 2001
From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Date: Fri, 18 Sep 2009 14:07:31 +0000
Subject: fix make {,install_}{,host}utils
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
diff --git a/extra/locale/programs/locale.c b/extra/locale/programs/locale.c
index 462a579..dfd2029 100644
--- a/extra/locale/programs/locale.c
+++ b/extra/locale/programs/locale.c
@@ -10,10 +10,9 @@
*
*/
-
+#include <string.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <langinfo.h>
#include <unistd.h>
#ifdef __UCLIBC_HAS_GETOPT_LONG__
diff --git a/libc/misc/wchar/wchar.c b/libc/misc/wchar/wchar.c
index 290e680..3ce884d 100644
--- a/libc/misc/wchar/wchar.c
+++ b/libc/misc/wchar/wchar.c
@@ -171,7 +171,6 @@ extern size_t _wchar_utf8sntowcs(wchar_t *__restrict pwc, size_t wn,
extern size_t _wchar_wcsntoutf8s(char *__restrict s, size_t n,
const wchar_t **__restrict src, size_t wn) attribute_hidden;
-
#endif /* _LIBC */
/**********************************************************************/
#ifdef L_btowc
@@ -1201,45 +1200,6 @@ typedef struct {
int skip_invalid_input; /* To support iconv -c option. */
} _UC_iconv_t;
-
-
-#ifdef L_iconv
-
-#include <iconv.h>
-#include <string.h>
-#include <endian.h>
-#include <byteswap.h>
-
-#if (__BYTE_ORDER != __BIG_ENDIAN) && (__BYTE_ORDER != __LITTLE_ENDIAN)
-#error unsupported endianness for iconv
-#endif
-
-#ifndef __CTYPE_HAS_8_BIT_LOCALES
-#error currently iconv requires 8 bit locales
-#endif
-#ifndef __CTYPE_HAS_UTF_8_LOCALES
-#error currently iconv requires UTF-8 locales
-#endif
-
-
-enum {
- IC_WCHAR_T = 0xe0,
- IC_MULTIBYTE = 0xe0,
-#if __BYTE_ORDER == __BIG_ENDIAN
- IC_UCS_4 = 0xec,
- IC_UTF_32 = 0xe4,
- IC_UCS_2 = 0xe2,
- IC_UTF_16 = 0xea,
-#else
- IC_UCS_4 = 0xed,
- IC_UTF_32 = 0xe5,
- IC_UCS_2 = 0xe3,
- IC_UTF_16 = 0xeb,
-#endif
- IC_UTF_8 = 2,
- IC_ASCII = 1
-};
-
/* For the multibyte
* bit 0 means swap endian
* bit 1 means 2 byte
@@ -1247,8 +1207,13 @@ enum {
*
*/
+#if defined L_iconv && defined _LIBC
+/* Used externally only by iconv utility */
extern const unsigned char __iconv_codesets[];
libc_hidden_proto(__iconv_codesets)
+#endif
+
+#if defined L_iconv || defined L_iconv_main
const unsigned char __iconv_codesets[] =
"\x0a\xe0""WCHAR_T\x00" /* superset of UCS-4 but platform-endian */
#if __BYTE_ORDER == __BIG_ENDIAN
@@ -1281,7 +1246,48 @@ const unsigned char __iconv_codesets[] =
"\x08\x02""UTF-8\x00"
"\x0b\x01""US-ASCII\x00"
"\x07\x01""ASCII"; /* Must be last! (special case to save a nul) */
+#endif
+#if defined L_iconv && defined _LIBC
libc_hidden_data_def(__iconv_codesets)
+#endif
+
+
+#ifdef L_iconv
+
+#include <iconv.h>
+#include <string.h>
+#include <endian.h>
+#include <byteswap.h>
+
+#if (__BYTE_ORDER != __BIG_ENDIAN) && (__BYTE_ORDER != __LITTLE_ENDIAN)
+#error unsupported endianness for iconv
+#endif
+
+#ifndef __CTYPE_HAS_8_BIT_LOCALES
+#error currently iconv requires 8 bit locales
+#endif
+#ifndef __CTYPE_HAS_UTF_8_LOCALES
+#error currently iconv requires UTF-8 locales
+#endif
+
+
+enum {
+ IC_WCHAR_T = 0xe0,
+ IC_MULTIBYTE = 0xe0,
+#if __BYTE_ORDER == __BIG_ENDIAN
+ IC_UCS_4 = 0xec,
+ IC_UTF_32 = 0xe4,
+ IC_UCS_2 = 0xe2,
+ IC_UTF_16 = 0xea,
+#else
+ IC_UCS_4 = 0xed,
+ IC_UTF_32 = 0xe5,
+ IC_UCS_2 = 0xe3,
+ IC_UTF_16 = 0xeb,
+#endif
+ IC_UTF_8 = 2,
+ IC_ASCII = 1
+};
/* Experimentally off - libc_hidden_proto(strcasecmp) */
@@ -1575,6 +1581,4 @@ size_t weak_function iconv(iconv_t cd, char **__restrict inbuf,
}
return nrcount;
}
-
#endif
-
--
cgit v0.8.2.1

View File

@ -1,113 +0,0 @@
From d43f068e84513ed88392df4ca27d49ad01145fd2 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Sun, 6 Sep 2009 12:12:12 -0400
Subject: [PATCH 07/15] fstatat: fix up behavior on 32/64 bit hosts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The fstatat() syscall is a little funky in that it sometimes changes name
between 32 and 64 bit hosts, but it should always operate on a 64bit stat
structure. So for the fstatat() function, make sure we convert it from a
64bit kstat to a 32bit stat.
Along these lines, we need to restore the __xstat32_conv() function.
Reported-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
libc/sysdeps/linux/common/fstatat.c | 9 +++++++--
libc/sysdeps/linux/common/fstatat64.c | 5 +++++
libc/sysdeps/linux/common/xstatconv.c | 19 +++++++++++++++++++
libc/sysdeps/linux/common/xstatconv.h | 1 +
4 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/libc/sysdeps/linux/common/fstatat.c b/libc/sysdeps/linux/common/fstatat.c
index 149c189..33daa7c 100644
--- a/libc/sysdeps/linux/common/fstatat.c
+++ b/libc/sysdeps/linux/common/fstatat.c
@@ -10,15 +10,20 @@
#include <sys/stat.h>
#include "xstatconv.h"
+/* 64bit ports tend to favor newfstatat() */
+#ifdef __NR_newfstatat
+# define __NR_fstatat64 __NR_newfstatat
+#endif
+
#ifdef __NR_fstatat64
int fstatat(int fd, const char *file, struct stat *buf, int flag)
{
int ret;
- struct kernel_stat kbuf;
+ struct kernel_stat64 kbuf;
ret = INLINE_SYSCALL(fstatat64, 4, fd, file, &kbuf, flag);
if (ret == 0)
- __xstat_conv(&kbuf, buf);
+ __xstat32_conv(&kbuf, buf);
return ret;
}
diff --git a/libc/sysdeps/linux/common/fstatat64.c b/libc/sysdeps/linux/common/fstatat64.c
index 5ae1fad..95627af 100644
--- a/libc/sysdeps/linux/common/fstatat64.c
+++ b/libc/sysdeps/linux/common/fstatat64.c
@@ -12,6 +12,11 @@
#ifdef __UCLIBC_HAS_LFS__
+/* 64bit ports tend to favor newfstatat() */
+#ifdef __NR_newfstatat
+# define __NR_fstatat64 __NR_newfstatat
+#endif
+
#ifdef __NR_fstatat64
int fstatat64(int fd, const char *file, struct stat64 *buf, int flag)
{
diff --git a/libc/sysdeps/linux/common/xstatconv.c b/libc/sysdeps/linux/common/xstatconv.c
index e575b26..50455c6 100644
--- a/libc/sysdeps/linux/common/xstatconv.c
+++ b/libc/sysdeps/linux/common/xstatconv.c
@@ -46,6 +46,25 @@ void attribute_hidden __xstat_conv(struct kernel_stat *kbuf, struct stat *buf)
buf->st_ctim = kbuf->st_ctim;
}
+void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf)
+{
+ /* Convert to current kernel version of `struct stat64'. */
+ memset(buf, 0x00, sizeof(*buf));
+ buf->st_dev = kbuf->st_dev;
+ buf->st_ino = kbuf->st_ino;
+ buf->st_mode = kbuf->st_mode;
+ buf->st_nlink = kbuf->st_nlink;
+ buf->st_uid = kbuf->st_uid;
+ buf->st_gid = kbuf->st_gid;
+ buf->st_rdev = kbuf->st_rdev;
+ buf->st_size = kbuf->st_size;
+ buf->st_blksize = kbuf->st_blksize;
+ buf->st_blocks = kbuf->st_blocks;
+ buf->st_atim = kbuf->st_atim;
+ buf->st_mtim = kbuf->st_mtim;
+ buf->st_ctim = kbuf->st_ctim;
+}
+
#ifdef __UCLIBC_HAS_LFS__
void attribute_hidden __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf)
diff --git a/libc/sysdeps/linux/common/xstatconv.h b/libc/sysdeps/linux/common/xstatconv.h
index 57c8bcb..7568da8 100644
--- a/libc/sysdeps/linux/common/xstatconv.h
+++ b/libc/sysdeps/linux/common/xstatconv.h
@@ -26,6 +26,7 @@
#include <bits/kernel_stat.h>
extern void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf) attribute_hidden;
+extern void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf) attribute_hidden;
#if defined __UCLIBC_HAS_LFS__
extern void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf) attribute_hidden;
#endif
--
1.6.6.1

View File

@ -1,72 +0,0 @@
From 13545bce877b33e30155fc412ad44cc118d83f77 Mon Sep 17 00:00:00 2001
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Date: Sat, 30 Jan 2010 00:24:37 +0900
Subject: [PATCH 15/15] getdents: Fix mips64 build
On Wed, 27 Jan 2010 07:14:08 +0100, Carmelo AMOROSO <carmelo.amoroso@st.com> wrote:
> I would re-write your patch in a simpler way.
>
> We already have the following
>
> 136 #if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
> 137 attribute_hidden strong_alias(__getdents,__getdents64)
> 138 #endif
>
> I think that it's simpler to move in the proper place this statement.
Thanks, indeed. If we came into "#elif WORDSIZE == 32" block, above
condition never be true. So we can just move this statement out of
"#if...#elif...#elif...#endif" block. Here is a revised patch.
------------------------------------------------------
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: [PATCH] getdents: Fix mips64 build
Some archs (such as mips64) do not have getdents64 syscall but have
getdents syscall. Define alias for it.
This fixes regression from 0.9.30.1.
Backgrounds:
This is once done by commit e8b1c674. But after the commit 33bcf733
("Use getdents syscall if kernel provide supports for this instead of
relying upon getdents64."), if __ASSUME_GETDENTS32_D_TYPE was defined
the alias for getdents64 is not defined. The macro
__ASSUME_GETDENTS32_D_TYPE had been effectively ignored until 0.9.30.1
but the commit 0f0f20ab ("Move kernel-features.h header from the
linuxthread directory to a common one...") really enables it.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
libc/sysdeps/linux/common/getdents.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libc/sysdeps/linux/common/getdents.c b/libc/sysdeps/linux/common/getdents.c
index b518cc0..66a03b3 100644
--- a/libc/sysdeps/linux/common/getdents.c
+++ b/libc/sysdeps/linux/common/getdents.c
@@ -136,10 +136,6 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
return (char *) dp - buf;
}
-#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
-attribute_hidden strong_alias(__getdents,__getdents64)
-#endif
-
#elif __WORDSIZE == 32
/* Experimentally off - libc_hidden_proto(memmove) */
@@ -171,4 +167,8 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
}
#endif
+#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
+attribute_hidden strong_alias(__getdents,__getdents64)
+#endif
+
#endif
--
1.6.6.1

View File

@ -1,35 +0,0 @@
From 47e88c04e01299f975ff23f33035d0f34a8f6787 Mon Sep 17 00:00:00 2001
From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Date: Fri, 22 Jan 2010 13:32:44 +0100
Subject: [PATCH 06/15] {,host}utils depend on headers
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
Makefile.in | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 4c5aecb..ec4c28e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -436,7 +436,7 @@ ifeq ($(HAVE_SHARED),y)
fi
endif
-utils:
+utils: headers
$(Q)$(MAKE) CROSS="$(CROSS)" CC="$(CC)" -C utils $@
# Installs helper applications, such as 'ldd' and 'ldconfig'
@@ -445,7 +445,7 @@ install_utils: utils
endif # ifeq ($(HAVE_DOT_CONFIG),y)
-hostutils:
+hostutils: headers
$(Q)$(MAKE) CROSS="$(CROSS)" CC="$(CC)" HOSTCC="$(HOSTCC)" DOTHOST=.host -C utils $@
install_hostutils: hostutils
--
1.6.6.1

View File

@ -1,63 +0,0 @@
From b4d6a6e94d87ff2b4ae687a21048833f19b9dd48 Mon Sep 17 00:00:00 2001
From: Carmelo Amoroso <carmelo.amoroso@st.com>
Date: Mon, 8 Feb 2010 16:24:06 +0100
Subject: [PATCH 11/15] libc: Fix typo in include/rpc
s/GNU_SOUCE/GNU_SOURCE/ in include/rcp/
Signed-off-by: Jason Woodward <jason.woodward@timesys.com>
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
---
include/rpc/auth.h | 4 ++--
include/rpc/rpc.h | 4 ++--
include/rpc/types.h | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/rpc/auth.h b/include/rpc/auth.h
index 17eb59f..12297e6 100644
--- a/include/rpc/auth.h
+++ b/include/rpc/auth.h
@@ -47,8 +47,8 @@
#ifndef __FORCE_GLIBC
#define __FORCE_GLIBC
#endif
-#ifndef _GNU_SOUCE
-#define _GNU_SOUCE
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
#endif
#define _(X) X
#endif
diff --git a/include/rpc/rpc.h b/include/rpc/rpc.h
index 8194ffe..219910e 100644
--- a/include/rpc/rpc.h
+++ b/include/rpc/rpc.h
@@ -44,8 +44,8 @@
#ifndef __FORCE_GLIBC
#define __FORCE_GLIBC
#endif
-#ifndef _GNU_SOUCE
-#define _GNU_SOUCE
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
#endif
#define _(X) X
#include <features.h>
diff --git a/include/rpc/types.h b/include/rpc/types.h
index 469576e..05f49c3 100644
--- a/include/rpc/types.h
+++ b/include/rpc/types.h
@@ -39,8 +39,8 @@
#ifndef __FORCE_GLIBC
#define __FORCE_GLIBC
#endif
-#ifndef _GNU_SOUCE
-#define _GNU_SOUCE
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
#endif
#define _(X) X
#endif
--
1.6.6.1

View File

@ -1,70 +0,0 @@
From 956a0087e282e53ba9c085dbbc469391f7234944 Mon Sep 17 00:00:00 2001
From: Aurelien Jacobs <aurel@gnuage.org>
Date: Thu, 4 Feb 2010 09:31:40 -0800
Subject: [PATCH 10/15] libm: enable log2f and exp2f
Signed-off-by: Aurelien Jacobs <aurel@gnuage.org>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
---
libm/float_wrappers.c | 4 ++--
test/math/compile_test.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libm/float_wrappers.c b/libm/float_wrappers.c
index dc315e7..b7317a1 100644
--- a/libm/float_wrappers.c
+++ b/libm/float_wrappers.c
@@ -15,12 +15,10 @@
/* For the time being, do _NOT_ implement these functions
* that are defined by SuSv3 */
-#undef L_exp2f /*float exp2f(float);*/
#undef L_fdimf /*float fdimf(float, float);*/
#undef L_fmaf /*float fmaf(float, float, float);*/
#undef L_fmaxf /*float fmaxf(float, float);*/
#undef L_fminf /*float fminf(float, float);*/
-#undef L_log2f /*float log2f(float);*/
#undef L_nearbyintf /*float nearbyintf(float);*/
#undef L_nexttowardf /*float nexttowardf(float, long double);*/
#undef L_remquof /*float remquof(float, float, int *);*/
@@ -43,6 +41,7 @@ float cosf(float);
float coshf(float);
float erfcf(float);
float erff(float);
+float exp2f(float);
float expf(float);
float expm1f(float);
float fabsf(float);
@@ -56,6 +55,7 @@ float lgammaf(float);
long long llroundf(float);
float log10f(float);
float log1pf(float);
+float log2f(float);
float logbf(float);
float logf(float);
long lroundf(float);
diff --git a/test/math/compile_test.c b/test/math/compile_test.c
index 9990520..ee5e2e3 100644
--- a/test/math/compile_test.c
+++ b/test/math/compile_test.c
@@ -18,7 +18,7 @@ r += cosf(float_x);
r += coshf(float_x);
r += erfcf(float_x);
r += erff(float_x);
-/*r += exp2f(float_x); - uclibc does not have it (yet?) */
+r += exp2f(float_x);
r += expf(float_x);
r += expm1f(float_x);
r += fabsf(float_x);
@@ -38,7 +38,7 @@ r += llrintf(float_x);
r += llroundf(float_x);
r += log10f(float_x);
r += log1pf(float_x);
-/*r += log2f(float_x); - uclibc does not have it (yet?) */
+r += log2f(float_x);
r += logbf(float_x);
r += logf(float_x);
r += lrintf(float_x);
--
1.6.6.1

View File

@ -1,89 +0,0 @@
From fa476d01f1c1990a92ee49d1f1c557b83805d0e9 Mon Sep 17 00:00:00 2001
From: Freeman Wang <xwang@ubicom.com>
Date: Sat, 19 Dec 2009 13:43:00 -0800
Subject: [PATCH 09/15] malloc: fix race condition and other bugs in the no-mmu malloc
Fixes multiple race conditions on mmb list. This was done by
making the mmb_heap_lock into a recursive lock and making the
regular heap_lock extend to cover the mmb heap handling.
Also move the new_mmb allocation up to before the mmb list is
iterated through to find the insertion point. When the mmb_heap
also runs out and needs to be extended when the regular heap is
just extended, the mmb list could be messed up.
Signed-off-by: Freeman Wang <xwang@ubicom.com>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
---
libc/stdlib/malloc/free.c | 6 +++---
libc/stdlib/malloc/malloc.c | 7 ++++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/libc/stdlib/malloc/free.c b/libc/stdlib/malloc/free.c
index 90e18f4..741248a 100644
--- a/libc/stdlib/malloc/free.c
+++ b/libc/stdlib/malloc/free.c
@@ -179,14 +179,14 @@ __free_to_heap (void *mem, struct heap_free_area **heap
/* Start searching again from the end of this block. */
start = mmb_end;
+ /* Release the descriptor block we used. */
+ free_to_heap (mmb, &__malloc_mmb_heap, &__malloc_mmb_heap_lock);
+
/* We have to unlock the heap before we recurse to free the mmb
descriptor, because we might be unmapping from the mmb
heap. */
__heap_unlock (heap_lock);
- /* Release the descriptor block we used. */
- free_to_heap (mmb, &__malloc_mmb_heap, &__malloc_mmb_heap_lock);
-
/* Do the actual munmap. */
munmap ((void *)mmb_start, mmb_end - mmb_start);
diff --git a/libc/stdlib/malloc/malloc.c b/libc/stdlib/malloc/malloc.c
index 71f9e58..84a6acd 100644
--- a/libc/stdlib/malloc/malloc.c
+++ b/libc/stdlib/malloc/malloc.c
@@ -48,7 +48,7 @@ struct malloc_mmb *__malloc_mmapped_blocks = 0;
HEAP_DECLARE_STATIC_FREE_AREA (initial_mmb_fa, 48); /* enough for 3 mmbs */
struct heap_free_area *__malloc_mmb_heap = HEAP_INIT_WITH_FA (initial_mmb_fa);
#ifdef HEAP_USE_LOCKING
-pthread_mutex_t __malloc_mmb_heap_lock = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t __malloc_mmb_heap_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
#endif
#endif /* __UCLIBC_UCLINUX_BROKEN_MUNMAP__ */
@@ -151,19 +151,19 @@ __malloc_from_heap (size_t size, struct heap_free_area **heap
/* Try again to allocate. */
mem = __heap_alloc (heap, &size);
- __heap_unlock (heap_lock);
#if !defined(MALLOC_USE_SBRK) && defined(__UCLIBC_UCLINUX_BROKEN_MUNMAP__)
/* Insert a record of BLOCK in sorted order into the
__malloc_mmapped_blocks list. */
+ new_mmb = malloc_from_heap (sizeof *new_mmb, &__malloc_mmb_heap, &__malloc_mmb_heap_lock);
+
for (prev_mmb = 0, mmb = __malloc_mmapped_blocks;
mmb;
prev_mmb = mmb, mmb = mmb->next)
if (block < mmb->mem)
break;
- new_mmb = malloc_from_heap (sizeof *new_mmb, &__malloc_mmb_heap, &__malloc_mmb_heap_lock);
new_mmb->next = mmb;
new_mmb->mem = block;
new_mmb->size = block_size;
@@ -177,6 +177,7 @@ __malloc_from_heap (size_t size, struct heap_free_area **heap
(unsigned)new_mmb,
(unsigned)new_mmb->mem, block_size);
#endif /* !MALLOC_USE_SBRK && __UCLIBC_UCLINUX_BROKEN_MUNMAP__ */
+ __heap_unlock (heap_lock);
}
}
--
1.6.6.1

View File

@ -1,26 +0,0 @@
From 83a09cd5c9ed9afd87a7d1d17319c2fd2203ad0f Mon Sep 17 00:00:00 2001
From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Date: Thu, 21 Jan 2010 10:36:13 +0100
Subject: [PATCH 04/15] rpc: fix typo in version mismatch msg
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
libc/inet/rpc/rpc_prot.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/libc/inet/rpc/rpc_prot.c b/libc/inet/rpc/rpc_prot.c
index 74658e6..229f988 100644
--- a/libc/inet/rpc/rpc_prot.c
+++ b/libc/inet/rpc/rpc_prot.c
@@ -229,7 +229,7 @@ rejected (enum reject_stat rjct_stat,
{
switch (rjct_stat)
{
- case RPC_VERSMISMATCH:
+ case RPC_MISMATCH:
error->re_status = RPC_VERSMISMATCH;
return;
case AUTH_ERROR:
--
1.6.6.1