Submitted By: Jim Gifford (jim at cross-lfs dot org)
Date: 03-28-2009
Initial Package Version: 0.9.30.1
Origin: Upstream
Upstream Status: Applied
Description: This is a branch update for uClibc-0.9.30.1, and should be
             rechecked periodically.

diff -Naur uClibc-0.9.30.1.orig/include/math.h uClibc-0.9.30.1/include/math.h
--- uClibc-0.9.30.1.orig/include/math.h	2008-12-22 03:55:13.000000000 -0800
+++ uClibc-0.9.30.1/include/math.h	2009-03-12 09:51:53.727930000 -0700
@@ -118,7 +118,7 @@
 # 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 @@
   };
 
 /* 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 @@
 # 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 @@
 # 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 @@
 
 /* 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 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/include/tgmath.h uClibc-0.9.30.1/include/tgmath.h
--- uClibc-0.9.30.1.orig/include/tgmath.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/include/tgmath.h	2009-03-12 09:51:53.727930000 -0700
@@ -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
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/arm/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/arm/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/arm/dl-sysdep.h	2008-09-25 01:35:20.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/arm/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -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 @@
    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 @@
 }
 
 /* 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 @@
 	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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/bfin/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/bfin/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/bfin/dl-sysdep.h	2008-07-23 04:23:36.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/bfin/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -213,7 +213,7 @@
 #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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/cris/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/cris/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/cris/dl-sysdep.h	2008-07-23 04:19:00.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/cris/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -39,7 +39,7 @@
      || ((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 @@
    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 @@
 	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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/i386/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/i386/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/i386/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/i386/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -42,8 +42,8 @@
 /* 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 @@
 
 
 /* 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 @@
 	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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/m68k/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/m68k/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/m68k/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/m68k/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -41,7 +41,7 @@
 /* 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 @@
 
 
 /* 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 @@
 	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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/mips/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/mips/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/mips/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/mips/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -163,7 +163,7 @@
 
 #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 @@
 /* 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 @@
 #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 @@
 	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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/powerpc/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/powerpc/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/powerpc/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/powerpc/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -90,7 +90,7 @@
 #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 @@
 
 /* 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 @@
   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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/sh/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/sh/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/sh/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/sh/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -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 @@
 /* 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 @@
 }
 
 /* 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 @@
     } \
   }
 
-static __inline__ void
+static __always_inline void
 elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
 		      Elf32_Word relative_count)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/sh64/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/sh64/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/sh64/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/sh64/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -42,7 +42,7 @@
 /* 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 @@
 }
 
 /* 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__ void
+static __always_inline void
 elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
 		     Elf32_Word relative_count)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/sparc/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/sparc/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/sparc/dl-sysdep.h	2008-09-15 09:36:11.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/sparc/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -49,7 +49,7 @@
 
 #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 @@
 /* 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 @@
 }
 
 /* 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 @@
 	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)
 {
diff -Naur uClibc-0.9.30.1.orig/ldso/ldso/xtensa/dl-sysdep.h uClibc-0.9.30.1/ldso/ldso/xtensa/dl-sysdep.h
--- uClibc-0.9.30.1.orig/ldso/ldso/xtensa/dl-sysdep.h	2008-07-23 04:19:00.000000000 -0700
+++ uClibc-0.9.30.1/ldso/ldso/xtensa/dl-sysdep.h	2009-03-05 09:18:44.955696000 -0800
@@ -87,7 +87,7 @@
   (((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 @@
 }
 
 /* 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 @@
   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)
 {
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/alpha/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/alpha/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -78,3 +78,7 @@
 
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/alpha/bits/wordsize.h uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/alpha/bits/wordsize.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/alpha/bits/wordsize.h	2009-03-12 09:51:53.727930000 -0700
@@ -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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/arm/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/arm/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/arm/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -34,3 +34,11 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/common/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/common/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/common/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -35,3 +35,9 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/i386/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/i386/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/i386/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -44,3 +44,7 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/ia64/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/ia64/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/ia64/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -35,3 +35,7 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/m68k/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/m68k/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/m68k/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -36,3 +36,7 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/mips/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/mips/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/mips/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -39,8 +39,10 @@
 
 #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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/nios/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/nios/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/nios/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -34,3 +34,11 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/nios2/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/nios2/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/nios2/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -34,3 +34,11 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/powerpc/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/powerpc/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -65,11 +65,13 @@
 
 #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 */
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/powerpc/bits/wordsize.h uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/powerpc/bits/wordsize.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/powerpc/bits/wordsize.h	2009-03-12 09:51:53.727930000 -0700
@@ -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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/sh/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sh/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sh/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -61,3 +61,9 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -57,13 +57,15 @@
 
 #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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/mathinline.h uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/mathinline.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/mathinline.h	2009-03-12 09:51:53.727930000 -0700
@@ -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 @@
   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 @@
   _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 @@
   _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)
 {
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/wordsize.h uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/sparc/bits/wordsize.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/sparc/bits/wordsize.h	2009-03-12 09:51:53.727930000 -0700
@@ -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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/x86_64/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/x86_64/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/x86_64/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -46,3 +46,7 @@
 # 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
diff -Naur uClibc-0.9.30.1.orig/libc/sysdeps/linux/xtensa/bits/mathdef.h uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h
--- uClibc-0.9.30.1.orig/libc/sysdeps/linux/xtensa/bits/mathdef.h	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libc/sysdeps/linux/xtensa/bits/mathdef.h	2009-03-12 09:51:53.727930000 -0700
@@ -36,8 +36,8 @@
 
 #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
diff -Naur uClibc-0.9.30.1.orig/libm/ldouble_wrappers.c uClibc-0.9.30.1/libm/ldouble_wrappers.c
--- uClibc-0.9.30.1.orig/libm/ldouble_wrappers.c	2009-02-24 06:31:14.000000000 -0800
+++ uClibc-0.9.30.1/libm/ldouble_wrappers.c	2009-03-12 09:51:53.727930000 -0700
@@ -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 @@
 #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
diff -Naur uClibc-0.9.30.1.orig/libm/nan.c uClibc-0.9.30.1/libm/nan.c
--- uClibc-0.9.30.1.orig/libm/nan.c	2008-10-03 07:24:28.000000000 -0700
+++ uClibc-0.9.30.1/libm/nan.c	2009-03-12 09:51:53.727930000 -0700
@@ -45,7 +45,7 @@
 }
 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)
 {
diff -Naur uClibc-0.9.30.1.orig/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h uClibc-0.9.30.1/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h
--- uClibc-0.9.30.1.orig/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h	1969-12-31 16:00:00.000000000 -0800
+++ uClibc-0.9.30.1/libpthread/linuxthreads/sysdeps/arm/sysdep-cancel.h	2009-03-28 09:09:19.312443917 -0700
@@ -0,0 +1,9 @@
+#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 -Naur uClibc-0.9.30.1.orig/libpthread/linuxthreads/sysdeps/arm/sysdep.h uClibc-0.9.30.1/libpthread/linuxthreads/sysdeps/arm/sysdep.h
--- uClibc-0.9.30.1.orig/libpthread/linuxthreads/sysdeps/arm/sysdep.h	1969-12-31 16:00:00.000000000 -0800
+++ uClibc-0.9.30.1/libpthread/linuxthreads/sysdeps/arm/sysdep.h	2009-03-28 09:10:02.267196257 -0700
@@ -0,0 +1,138 @@
+/* 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__ */
+
diff -Naur uClibc-0.9.30.1.orig/Rules.mak uClibc-0.9.30.1/Rules.mak
--- uClibc-0.9.30.1.orig/Rules.mak	2009-03-02 13:10:04.000000000 -0800
+++ uClibc-0.9.30.1/Rules.mak	2009-03-25 12:26:54.011652000 -0700
@@ -85,7 +85,7 @@
 MAJOR_VERSION := 0
 MINOR_VERSION := 9
 SUBLEVEL      := 30
-EXTRAVERSION  :=.1
+EXTRAVERSION  :=.2-svn
 VERSION       := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
 ifneq ($(EXTRAVERSION),)
 VERSION       := $(VERSION)$(EXTRAVERSION)
@@ -393,7 +393,7 @@
 	# -shared by itself would get us global function descriptors
 	# and calls through PLTs, dynamic resolution of symbols, etc,
 	# which would break as well, but -Bsymbolic comes to the rescue.
-	export LDPIEFLAG:=-Wl,-shared -Wl,-Bsymbolic
+	export LDPIEFLAG:=-shared -Wl,-Bsymbolic
 	UCLIBC_LDSO=ld.so.1
 endif
 
@@ -520,7 +520,7 @@
 
 CFLAGS += $(call check_gcc,-std=gnu99,)
 
-LDFLAGS_NOSTRIP:=$(CPU_LDFLAGS-y) -Wl,-shared \
+LDFLAGS_NOSTRIP:=$(CPU_LDFLAGS-y) -shared \
 	-Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc
 # binutils-2.16.1 warns about ignored sections, 2.16.91.0.3 and newer are ok
 #LDFLAGS_NOSTRIP+=$(call check_ld,--gc-sections)
