summaryrefslogtreecommitdiff
path: root/patches/uClibc/20080801/100-ifaddrs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/uClibc/20080801/100-ifaddrs.patch')
-rw-r--r--patches/uClibc/20080801/100-ifaddrs.patch190
1 files changed, 190 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 */