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 -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 /* 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 +#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 + +/* 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)