summaryrefslogtreecommitdiff
path: root/patches/uClibc/20080801
diff options
context:
space:
mode:
Diffstat (limited to 'patches/uClibc/20080801')
-rw-r--r--patches/uClibc/20080801/100-ifaddrs.patch190
-rw-r--r--patches/uClibc/20080801/200-mips-typeof.patch112
-rw-r--r--patches/uClibc/20080801/300-fix-asm.patch175
3 files changed, 477 insertions, 0 deletions
diff --git a/patches/uClibc/20080801/100-ifaddrs.patch b/patches/uClibc/20080801/100-ifaddrs.patch
new file mode 100644
index 0000000..97b1984
--- /dev/null
+++ b/patches/uClibc/20080801/100-ifaddrs.patch
@@ -0,0 +1,190 @@
+Copyright 2008 Yann E. MORIN.
+
+This patch is needed to make gcc-4.3.1 able to build the Java frontend.
+
+Index: uClibc/libc/inet/ifaddrs.c
+===================================================================
+--- uClibc/libc/inet/ifaddrs.c (revision 23002)
++++ uClibc/libc/inet/ifaddrs.c (working copy)
+@@ -22,7 +22,7 @@
+ #include <alloca.h>
+ #include <assert.h>
+ #include <errno.h>
+-#include "ifaddrs.h"
++#include <ifaddrs.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <netpacket/packet.h>
+Index: uClibc/libc/inet/ifaddrs.h
+===================================================================
+--- uClibc/libc/inet/ifaddrs.h (revision 23002)
++++ uClibc/libc/inet/ifaddrs.h (working copy)
+@@ -1,76 +0,0 @@
+-/* ifaddrs.h -- declarations for getting network interface addresses
+- Copyright (C) 2002 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 _IFADDRS_H
+-#define _IFADDRS_H 1
+-
+-#include <features.h>
+-#include <sys/socket.h>
+-#include <stdbool.h>
+-#include <stdint.h>
+-
+-__BEGIN_DECLS
+-
+-/* The `getifaddrs' function generates a linked list of these structures.
+- Each element of the list describes one network interface. */
+-struct ifaddrs
+-{
+- struct ifaddrs *ifa_next; /* Pointer to the next structure. */
+-
+- char *ifa_name; /* Name of this network interface. */
+- unsigned int ifa_flags; /* Flags as from SIOCGIFFLAGS ioctl. */
+-
+- struct sockaddr *ifa_addr; /* Network address of this interface. */
+- struct sockaddr *ifa_netmask; /* Netmask of this interface. */
+- union
+- {
+- /* At most one of the following two is valid. If the IFF_BROADCAST
+- bit is set in `ifa_flags', then `ifa_broadaddr' is valid. If the
+- IFF_POINTOPOINT bit is set, then `ifa_dstaddr' is valid.
+- It is never the case that both these bits are set at once. */
+- struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */
+- struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */
+- } ifa_ifu;
+- /* These very same macros are defined by <net/if.h> for `struct ifaddr'.
+- So if they are defined already, the existing definitions will be fine. */
+-# ifndef ifa_broadaddr
+-# define ifa_broadaddr ifa_ifu.ifu_broadaddr
+-# endif
+-# ifndef ifa_dstaddr
+-# define ifa_dstaddr ifa_ifu.ifu_dstaddr
+-# endif
+-
+- void *ifa_data; /* Address-specific data (may be unused). */
+-};
+-
+-
+-/* Create a linked list of `struct ifaddrs' structures, one for each
+- network interface on the host machine. If successful, store the
+- list in *IFAP and return 0. On errors, return -1 and set `errno'.
+-
+- The storage returned in *IFAP is allocated dynamically and can
+- only be properly freed by passing it to `freeifaddrs'. */
+-extern int getifaddrs (struct ifaddrs **__ifap) __THROW;
+-
+-/* Reclaim the storage allocated by a previous `getifaddrs' call. */
+-extern void freeifaddrs (struct ifaddrs *__ifa) __THROW;
+-
+-__END_DECLS
+-
+-#endif /* ifaddrs.h */
+Index: uClibc/libc/inet/getaddrinfo.c
+===================================================================
+--- uClibc/libc/inet/getaddrinfo.c (revision 23002)
++++ uClibc/libc/inet/getaddrinfo.c (working copy)
+@@ -68,7 +68,7 @@
+ #include <sys/un.h>
+ #include <sys/utsname.h>
+ #include <net/if.h>
+-#include "ifaddrs.h"
++#include <ifaddrs.h>
+
+ /* Experimentally off - libc_hidden_proto(memcpy) */
+ /* Experimentally off - libc_hidden_proto(memset) */
+--- /dev/null 2008-08-04 09:44:45.624322752 +0200
++++ uClibc/include/ifaddrs.h 2008-08-05 09:31:20.000000000 +0200
+@@ -0,0 +1,76 @@
++/* ifaddrs.h -- declarations for getting network interface addresses
++ Copyright (C) 2002 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 _IFADDRS_H
++#define _IFADDRS_H 1
++
++#include <features.h>
++#include <sys/socket.h>
++#include <stdbool.h>
++#include <stdint.h>
++
++__BEGIN_DECLS
++
++/* The `getifaddrs' function generates a linked list of these structures.
++ Each element of the list describes one network interface. */
++struct ifaddrs
++{
++ struct ifaddrs *ifa_next; /* Pointer to the next structure. */
++
++ char *ifa_name; /* Name of this network interface. */
++ unsigned int ifa_flags; /* Flags as from SIOCGIFFLAGS ioctl. */
++
++ struct sockaddr *ifa_addr; /* Network address of this interface. */
++ struct sockaddr *ifa_netmask; /* Netmask of this interface. */
++ union
++ {
++ /* At most one of the following two is valid. If the IFF_BROADCAST
++ bit is set in `ifa_flags', then `ifa_broadaddr' is valid. If the
++ IFF_POINTOPOINT bit is set, then `ifa_dstaddr' is valid.
++ It is never the case that both these bits are set at once. */
++ struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */
++ struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */
++ } ifa_ifu;
++ /* These very same macros are defined by <net/if.h> for `struct ifaddr'.
++ So if they are defined already, the existing definitions will be fine. */
++# ifndef ifa_broadaddr
++# define ifa_broadaddr ifa_ifu.ifu_broadaddr
++# endif
++# ifndef ifa_dstaddr
++# define ifa_dstaddr ifa_ifu.ifu_dstaddr
++# endif
++
++ void *ifa_data; /* Address-specific data (may be unused). */
++};
++
++
++/* Create a linked list of `struct ifaddrs' structures, one for each
++ network interface on the host machine. If successful, store the
++ list in *IFAP and return 0. On errors, return -1 and set `errno'.
++
++ The storage returned in *IFAP is allocated dynamically and can
++ only be properly freed by passing it to `freeifaddrs'. */
++extern int getifaddrs (struct ifaddrs **__ifap) __THROW;
++
++/* Reclaim the storage allocated by a previous `getifaddrs' call. */
++extern void freeifaddrs (struct ifaddrs *__ifa) __THROW;
++
++__END_DECLS
++
++#endif /* ifaddrs.h */
diff --git a/patches/uClibc/20080801/200-mips-typeof.patch b/patches/uClibc/20080801/200-mips-typeof.patch
new file mode 100644
index 0000000..668e568
--- /dev/null
+++ b/patches/uClibc/20080801/200-mips-typeof.patch
@@ -0,0 +1,112 @@
+Index: uClibc/libc/sysdeps/linux/mips/bits/atomic.h
+===================================================================
+--- uClibc/libc/sysdeps/linux/mips/bits/atomic.h (revision 23002)
++++ uClibc/libc/sysdeps/linux/mips/bits/atomic.h (working copy)
+@@ -110,22 +110,22 @@
+ /* For all "bool" routines, we return FALSE if exchange succesful. */
+
+ #define __arch_compare_and_exchange_bool_8_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \
+ !__cmp; })
+
+ #define __arch_compare_and_exchange_bool_16_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \
+ !__cmp; })
+
+ #define __arch_compare_and_exchange_bool_32_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \
+ !__cmp; })
+
+ #define __arch_compare_and_exchange_bool_64_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \
+ !__cmp; })
+
+@@ -133,24 +133,24 @@
+ successful or not. */
+
+ #define __arch_compare_and_exchange_val_8_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \
+- (typeof (*mem))__prev; })
++ (__typeof (*mem))__prev; })
+
+ #define __arch_compare_and_exchange_val_16_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \
+- (typeof (*mem))__prev; })
++ (__typeof (*mem))__prev; })
+
+ #define __arch_compare_and_exchange_val_32_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \
+- (typeof (*mem))__prev; })
++ (__typeof (*mem))__prev; })
+
+ #define __arch_compare_and_exchange_val_64_int(mem, new, old, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \
+- (typeof (*mem))__prev; })
++ (__typeof (*mem))__prev; })
+
+ /* Compare and exchange with "acquire" semantics, ie barrier after. */
+
+@@ -183,7 +183,7 @@
+ (abort (), 0)
+
+ #define __arch_exchange_xxx_32_int(mem, newval, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __asm__ __volatile__ ("\n" \
+ ".set push\n\t" \
+ MIPS_PUSH_MIPS2 \
+@@ -207,7 +207,7 @@
+ (abort (), 0)
+ #else
+ #define __arch_exchange_xxx_64_int(mem, newval, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __asm__ __volatile__ ("\n" \
+ ".set push\n\t" \
+ MIPS_PUSH_MIPS2 \
+@@ -236,13 +236,13 @@
+ /* Atomically add value and return the previous (unincremented) value. */
+
+ #define __arch_exchange_and_add_8_int(mem, newval, rel, acq) \
+- (abort (), (typeof(*mem)) 0)
++ (abort (), (__typeof(*mem)) 0)
+
+ #define __arch_exchange_and_add_16_int(mem, newval, rel, acq) \
+- (abort (), (typeof(*mem)) 0)
++ (abort (), (__typeof(*mem)) 0)
+
+ #define __arch_exchange_and_add_32_int(mem, value, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __asm__ __volatile__ ("\n" \
+ ".set push\n\t" \
+ MIPS_PUSH_MIPS2 \
+@@ -263,10 +263,10 @@
+ #if _MIPS_SIM == _ABIO32
+ /* We can't do an atomic 64-bit operation in O32. */
+ #define __arch_exchange_and_add_64_int(mem, value, rel, acq) \
+- (abort (), (typeof(*mem)) 0)
++ (abort (), (__typeof(*mem)) 0)
+ #else
+ #define __arch_exchange_and_add_64_int(mem, value, rel, acq) \
+-({ typeof (*mem) __prev; int __cmp; \
++({ __typeof (*mem) __prev; int __cmp; \
+ __asm__ __volatile__ ( \
+ ".set push\n\t" \
+ MIPS_PUSH_MIPS2 \
diff --git a/patches/uClibc/20080801/300-fix-asm.patch b/patches/uClibc/20080801/300-fix-asm.patch
new file mode 100644
index 0000000..1f57e5c
--- /dev/null
+++ b/patches/uClibc/20080801/300-fix-asm.patch
@@ -0,0 +1,175 @@
+Index: uClibc/ldso/ldso/sparc/dl-sysdep.h
+===================================================================
+--- uClibc/ldso/ldso/sparc/dl-sysdep.h (revision 23055)
++++ uClibc/ldso/ldso/sparc/dl-sysdep.h (working copy)
+@@ -141,7 +141,7 @@
+ static __inline__ Elf32_Addr
+ elf_machine_load_address (void)
+ {
+- register Elf32_Addr *pc __asm__ ("%o7"), *got __asm ("%l7");
++ register Elf32_Addr *pc __asm__ ("%o7"), *got __asm__ ("%l7");
+
+ __asm__ ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t"
+ "call 1f\n\t"
+Index: uClibc/libc/sysdeps/linux/i386/bits/mathinline.h
+===================================================================
+--- uClibc/libc/sysdeps/linux/i386/bits/mathinline.h (revision 23055)
++++ uClibc/libc/sysdeps/linux/i386/bits/mathinline.h (working copy)
+@@ -299,12 +299,12 @@
+ __extension__ long long int __p = (long long int) __x; \
+ if (__x == (long double) __p) \
+ { \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fscale" \
+ : "=t" (__value) : "0" (1.0), "u" (__x)); \
+ return __value; \
+ } \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fld %%st(0)\n\t" \
+ "frndint # int(x)\n\t" \
+ "fxch\n\t" \
+@@ -312,7 +312,7 @@
+ "f2xm1 # 2^(fract(x)) - 1\n\t" \
+ : "=t" (__value), "=u" (__exponent) : "0" (__x)); \
+ __value += 1.0; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fscale" \
+ : "=t" (__value) : "0" (__value), "u" (__exponent)); \
+ return __value)
+@@ -321,7 +321,7 @@
+ # define __sincos_code \
+ register long double __cosr; \
+ register long double __sinr; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fsincos\n\t" \
+ "fnstsw %%ax\n\t" \
+ "testl $0x400, %%eax\n\t" \
+@@ -373,7 +373,7 @@
+ register long double __value; \
+ register long double __exponent; \
+ register long double __temp; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fldl2e # e^x - 1 = 2^(x * log2(e)) - 1\n\t" \
+ "fmul %%st(1) # x * log2(e)\n\t" \
+ "fst %%st(1)\n\t" \
+@@ -383,7 +383,7 @@
+ "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" \
+ "fscale # 2^(x * log2(e)) - 2^(int(x * log2(e)))\n\t" \
+ : "=t" (__value), "=u" (__exponent) : "0" (__x)); \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fscale # 2^int(x * log2(e))\n\t" \
+ : "=t" (__temp) : "0" (1.0), "u" (__exponent)); \
+ __temp -= 1.0; \
+@@ -398,7 +398,7 @@
+ # define __exp_code \
+ register long double __value; \
+ register long double __exponent; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fldl2e # e^x = 2^(x * log2(e))\n\t" \
+ "fmul %%st(1) # x * log2(e)\n\t" \
+ "fst %%st(1)\n\t" \
+@@ -408,7 +408,7 @@
+ "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" \
+ : "=t" (__value), "=u" (__exponent) : "0" (__x)); \
+ __value += 1.0; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fscale" \
+ : "=t" (__value) : "0" (__value), "u" (__exponent)); \
+ return __value
+@@ -421,7 +421,7 @@
+ __inline_mathcodeNP (tan, __x, \
+ register long double __value; \
+ register long double __value2 __attribute__ ((__unused__)); \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fptan" \
+ : "=t" (__value2), "=u" (__value) : "0" (__x)); \
+ return __value)
+@@ -435,7 +435,7 @@
+ #else
+ # define __atan2_code \
+ register long double __value; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fpatan" \
+ : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); \
+ return __value
+@@ -449,7 +449,7 @@
+ #if defined __FAST_MATH__ && !__GNUC_PREREQ (3, 5)
+ __inline_mathcodeNP2 (fmod, __x, __y, \
+ register long double __value; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("1: fprem\n\t" \
+ "fnstsw %%ax\n\t" \
+ "sahf\n\t" \
+@@ -552,7 +552,7 @@
+ #ifdef __FAST_MATH__
+ # define __ldexp_code \
+ register long double __value; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fscale" \
+ : "=t" (__value) : "0" (__x), "u" ((long double) __y)); \
+ return __value
+@@ -581,7 +581,7 @@
+ if (__fabsl (__x) >= 1.0 - 0.5 * __M_SQRT2) \
+ __value = logl (1.0 + __x); \
+ else \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fldln2\n\t" \
+ "fxch\n\t" \
+ "fyl2xp1" \
+@@ -611,7 +611,7 @@
+ __inline_mathcodeNP(logb, __x, \
+ register long double __value; \
+ register long double __junk; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("fxtract\n\t" \
+ : "=t" (__junk), "=u" (__value) : "0" (__x)); \
+ return __value)
+@@ -699,7 +699,7 @@
+ __inline_mathcodeNP2 (drem, __x, __y, \
+ register double __value; \
+ register int __clobbered; \
+- __asm __volatile__ \
++ __asm__ __volatile__ \
+ ("1: fprem1\n\t" \
+ "fstsw %%ax\n\t" \
+ "sahf\n\t" \
+Index: uClibc/libc/sysdeps/linux/x86_64/sigaction.c
+===================================================================
+--- uClibc/libc/sysdeps/linux/x86_64/sigaction.c (revision 23055)
++++ uClibc/libc/sysdeps/linux/x86_64/sigaction.c (working copy)
+@@ -135,7 +135,7 @@
+
+ #define RESTORE(name, syscall) RESTORE2 (name, syscall)
+ # define RESTORE2(name, syscall) \
+-asm \
++__asm__ \
+ ( \
+ ".text\n" \
+ "__" #name ":\n" \
+Index: uClibc/libc/sysdeps/linux/mips/sigaction.c
+===================================================================
+--- uClibc/libc/sysdeps/linux/mips/sigaction.c (revision 23055)
++++ uClibc/libc/sysdeps/linux/mips/sigaction.c (working copy)
+@@ -140,7 +140,7 @@
+
+ #define RESTORE(name, syscall) RESTORE2 (name, syscall)
+ #define RESTORE2(name, syscall) \
+-asm \
++__asm__ \
+ ( \
+ ".align 4\n" \
+ "__" #name ":\n" \