diff options
9 files changed, 799 insertions, 0 deletions
| diff --git a/meta/packages/glibc/glibc-2.10.1/generic-bits_select.h b/meta/packages/glibc/glibc-2.10.1/generic-bits_select.h new file mode 100644 index 0000000000..47e7dedc30 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/generic-bits_select.h @@ -0,0 +1,35 @@ +/* Copyright (C) 1997, 1998, 2001 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 _SYS_SELECT_H +# error "Never use <bits/select.h> directly; include <sys/select.h> instead." +#endif + + +/* We don't use `memset' because this would require a prototype and +   the array isn't too big.  */ +#define __FD_ZERO(s) \ +  do {									      \ +    unsigned int __i;							      \ +    fd_set *__arr = (s);						      \ +    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \ +      __FDS_BITS (__arr)[__i] = 0;					      \ +  } while (0) +#define __FD_SET(d, s)     (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) +#define __FD_CLR(d, s)     (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) +#define __FD_ISSET(d, s)   ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) diff --git a/meta/packages/glibc/glibc-2.10.1/generic-bits_time.h b/meta/packages/glibc/glibc-2.10.1/generic-bits_time.h new file mode 100644 index 0000000000..b3184d1de9 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/generic-bits_time.h @@ -0,0 +1,75 @@ +/* System-dependent timing definitions.  Generic version. +   Copyright (C) 1996,1997,1999-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.  */ + +/* + * Never include this file directly; use <time.h> instead. + */ + +#ifndef __need_timeval +# ifndef _BITS_TIME_H +#  define _BITS_TIME_H	1 + +/* ISO/IEC 9899:1990 7.12.1: <time.h> +   The macro `CLOCKS_PER_SEC' is the number per second of the value +   returned by the `clock' function. */ +/* CAE XSH, Issue 4, Version 2: <time.h> +   The value of CLOCKS_PER_SEC is required to be 1 million on all +   XSI-conformant systems. */ +#  define CLOCKS_PER_SEC  1000000l + +#  if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K +/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK +   presents the real value for clock ticks per second for the system.  */ +#   include <bits/types.h> +extern long int __sysconf (int); +#   define CLK_TCK ((__clock_t) __sysconf (2))	/* 2 is _SC_CLK_TCK */ +#  endif + +#  ifdef __USE_POSIX199309 +/* Identifier for system-wide realtime clock.  */ +#   define CLOCK_REALTIME		0 +/* Monotonic system-wide clock.  */ +#   define CLOCK_MONOTONIC		1 +/* High-resolution timer from the CPU.  */ +#   define CLOCK_PROCESS_CPUTIME_ID	2 +/* Thread-specific CPU-time clock.  */ +#   define CLOCK_THREAD_CPUTIME_ID	3 + +/* Flag to indicate time is absolute.  */ +#   define TIMER_ABSTIME		1 +#  endif + +# endif	/* bits/time.h */ +#endif + +#ifdef __need_timeval +# undef __need_timeval +# ifndef _STRUCT_TIMEVAL +#  define _STRUCT_TIMEVAL	1 +#  include <bits/types.h> + +/* A time value that is accurate to the nearest +   microsecond but also has a range of years.  */ +struct timeval +  { +    __time_t tv_sec;		/* Seconds.  */ +    __suseconds_t tv_usec;	/* Microseconds.  */ +  }; +# endif	/* struct timeval */ +#endif	/* need timeval */ diff --git a/meta/packages/glibc/glibc-2.10.1/generic-bits_types.h b/meta/packages/glibc/glibc-2.10.1/generic-bits_types.h new file mode 100644 index 0000000000..65c8a9fe90 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/generic-bits_types.h @@ -0,0 +1,200 @@ +/* bits/types.h -- definitions of __*_t types underlying *_t types. +   Copyright (C) 2002, 2003, 2004, 2005 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.  */ + +/* + * Never include this file directly; use <sys/types.h> instead. + */ + +#ifndef	_BITS_TYPES_H +#define	_BITS_TYPES_H	1 + +#include <features.h> +#include <bits/wordsize.h> + +#define __need_size_t +#include <stddef.h> + +/* Convenience types.  */ +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + +/* Fixed-size types, underlying types depend on word size and compiler.  */ +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; +#if __WORDSIZE == 64 +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; +#elif defined __GLIBC_HAVE_LONG_LONG +__extension__ typedef signed long long int __int64_t; +__extension__ typedef unsigned long long int __uint64_t; +#endif + +/* quad_t is also 64 bits.  */ +#if __WORDSIZE == 64 +typedef long int __quad_t; +typedef unsigned long int __u_quad_t; +#elif defined __GLIBC_HAVE_LONG_LONG +__extension__ typedef long long int __quad_t; +__extension__ typedef unsigned long long int __u_quad_t; +#else +typedef struct +{ +  long __val[2]; +} __quad_t; +typedef struct +{ +  __u_long __val[2]; +} __u_quad_t; +#endif + + +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE +   macros for each of the OS types we define below.  The definitions +   of those macros must use the following macros for underlying types. +   We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned +   variants of each of the following integer types on this machine. + +	16		-- "natural" 16-bit type (always short) +	32		-- "natural" 32-bit type (always int) +	64		-- "natural" 64-bit type (long or long long) +	LONG32		-- 32-bit type, traditionally long +	QUAD		-- 64-bit type, always long long +	WORD		-- natural type of __WORDSIZE bits (int or long) +	LONGWORD	-- type of __WORDSIZE bits, traditionally long + +   We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the +   conventional uses of `long' or `long long' type modifiers match the +   types we define, even when a less-adorned type would be the same size. +   This matters for (somewhat) portably writing printf/scanf formats for +   these types, where using the appropriate l or ll format modifiers can +   make the typedefs and the formats match up across all GNU platforms.  If +   we used `long' when it's 64 bits where `long long' is expected, then the +   compiler would warn about the formats not matching the argument types, +   and the programmer changing them to shut up the compiler would break the +   program's portability. + +   Here we assume what is presently the case in all the GCC configurations +   we support: long long is always 64 bits, long is always word/address size, +   and int is always 32 bits.  */ + +#define	__S16_TYPE		short int +#define __U16_TYPE		unsigned short int +#define	__S32_TYPE		int +#define __U32_TYPE		unsigned int +#define __SLONGWORD_TYPE	long int +#define __ULONGWORD_TYPE	unsigned long int +#if __WORDSIZE == 32 +# define __SQUAD_TYPE		__quad_t +# define __UQUAD_TYPE		__u_quad_t +# define __SWORD_TYPE		int +# define __UWORD_TYPE		unsigned int +# define __SLONG32_TYPE		long int +# define __ULONG32_TYPE		unsigned long int +# define __S64_TYPE		__quad_t +# define __U64_TYPE		__u_quad_t +/* We want __extension__ before typedef's that use nonstandard base types +   such as `long long' in C89 mode.  */ +# define __STD_TYPE		__extension__ typedef +#elif __WORDSIZE == 64 +# define __SQUAD_TYPE		long int +# define __UQUAD_TYPE		unsigned long int +# define __SWORD_TYPE		long int +# define __UWORD_TYPE		unsigned long int +# define __SLONG32_TYPE		int +# define __ULONG32_TYPE		unsigned int +# define __S64_TYPE		long int +# define __U64_TYPE		unsigned long int +/* No need to mark the typedef with __extension__.   */ +# define __STD_TYPE		typedef +#else +# error +#endif +#include <bits/typesizes.h>	/* Defines __*_T_TYPE macros.  */ + + +__STD_TYPE __DEV_T_TYPE __dev_t;	/* Type of device numbers.  */ +__STD_TYPE __UID_T_TYPE __uid_t;	/* Type of user identifications.  */ +__STD_TYPE __GID_T_TYPE __gid_t;	/* Type of group identifications.  */ +__STD_TYPE __INO_T_TYPE __ino_t;	/* Type of file serial numbers.  */ +__STD_TYPE __INO64_T_TYPE __ino64_t;	/* Type of file serial numbers (LFS).*/ +__STD_TYPE __MODE_T_TYPE __mode_t;	/* Type of file attribute bitmasks.  */ +__STD_TYPE __NLINK_T_TYPE __nlink_t;	/* Type of file link counts.  */ +__STD_TYPE __OFF_T_TYPE __off_t;	/* Type of file sizes and offsets.  */ +__STD_TYPE __OFF64_T_TYPE __off64_t;	/* Type of file sizes and offsets (LFS).  */ +__STD_TYPE __PID_T_TYPE __pid_t;	/* Type of process identifications.  */ +__STD_TYPE __FSID_T_TYPE __fsid_t;	/* Type of file system IDs.  */ +__STD_TYPE __CLOCK_T_TYPE __clock_t;	/* Type of CPU usage counts.  */ +__STD_TYPE __RLIM_T_TYPE __rlim_t;	/* Type for resource measurement.  */ +__STD_TYPE __RLIM64_T_TYPE __rlim64_t;	/* Type for resource measurement (LFS).  */ +__STD_TYPE __ID_T_TYPE __id_t;		/* General type for IDs.  */ +__STD_TYPE __TIME_T_TYPE __time_t;	/* Seconds since the Epoch.  */ +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds.  */ +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */ + +__STD_TYPE __DADDR_T_TYPE __daddr_t;	/* The type of a disk address.  */ +__STD_TYPE __SWBLK_T_TYPE __swblk_t;	/* Type of a swap block maybe?  */ +__STD_TYPE __KEY_T_TYPE __key_t;	/* Type of an IPC key.  */ + +/* Clock ID used in clock and timer functions.  */ +__STD_TYPE __CLOCKID_T_TYPE __clockid_t; + +/* Timer ID returned by `timer_create'.  */ +__STD_TYPE __TIMER_T_TYPE __timer_t; + +/* Type to represent block size.  */ +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; + +/* Types from the Large File Support interface.  */ + +/* Type to count number of disk blocks.  */ +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; + +/* Type to count file system blocks.  */ +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; + +/* Type to count file system nodes.  */ +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; + +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error.  */ + +/* These few don't really vary by system, they always correspond +   to one of the other defined types.  */ +typedef __off64_t __loff_t;	/* Type of file sizes and offsets (LFS).  */ +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + +/* Duplicates info from stdint.h but this is used in unistd.h.  */ +__STD_TYPE __SWORD_TYPE __intptr_t; + +/* Duplicate info from sys/socket.h.  */ +__STD_TYPE __U32_TYPE __socklen_t; + + +#undef __STD_TYPE + +#endif /* bits/types.h */ diff --git a/meta/packages/glibc/glibc-2.10.1/generic-bits_typesizes.h b/meta/packages/glibc/glibc-2.10.1/generic-bits_typesizes.h new file mode 100644 index 0000000000..e9226c4174 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/generic-bits_typesizes.h @@ -0,0 +1,66 @@ +/* bits/typesizes.h -- underlying types for *_t.  Generic version. +   Copyright (C) 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 _BITS_TYPES_H +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." +#endif + +#ifndef	_BITS_TYPESIZES_H +#define	_BITS_TYPESIZES_H	1 + +/* See <bits/types.h> for the meaning of these macros.  This file exists so +   that <bits/types.h> need not vary across different GNU platforms.  */ + +#define __DEV_T_TYPE		__UQUAD_TYPE +#define __UID_T_TYPE		__U32_TYPE +#define __GID_T_TYPE		__U32_TYPE +#define __INO_T_TYPE		__ULONGWORD_TYPE +#define __INO64_T_TYPE		__UQUAD_TYPE +#define __MODE_T_TYPE		__U32_TYPE +#define __NLINK_T_TYPE		__UWORD_TYPE +#define __OFF_T_TYPE		__SLONGWORD_TYPE +#define __OFF64_T_TYPE		__SQUAD_TYPE +#define __PID_T_TYPE		__S32_TYPE +#define __RLIM_T_TYPE		__ULONGWORD_TYPE +#define __RLIM64_T_TYPE		__UQUAD_TYPE +#define	__BLKCNT_T_TYPE		__SLONGWORD_TYPE +#define	__BLKCNT64_T_TYPE	__SQUAD_TYPE +#define	__FSBLKCNT_T_TYPE	__ULONGWORD_TYPE +#define	__FSBLKCNT64_T_TYPE	__UQUAD_TYPE +#define	__FSFILCNT_T_TYPE	__ULONGWORD_TYPE +#define	__FSFILCNT64_T_TYPE	__UQUAD_TYPE +#define	__ID_T_TYPE		__U32_TYPE +#define __CLOCK_T_TYPE		__SLONGWORD_TYPE +#define __TIME_T_TYPE		__SLONGWORD_TYPE +#define __USECONDS_T_TYPE	__U32_TYPE +#define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE +#define __DADDR_T_TYPE		__S32_TYPE +#define __SWBLK_T_TYPE		__SLONGWORD_TYPE +#define __KEY_T_TYPE		__S32_TYPE +#define __CLOCKID_T_TYPE	__S32_TYPE +#define __TIMER_T_TYPE		void * +#define __BLKSIZE_T_TYPE	__SLONGWORD_TYPE +#define __FSID_T_TYPE		struct { int __val[2]; } +#define __SSIZE_T_TYPE		__SWORD_TYPE + +/* Number of descriptors that can fit in an `fd_set'.  */ +#define	__FD_SETSIZE		1024 + + +#endif /* bits/typesizes.h */ diff --git a/meta/packages/glibc/glibc-2.10.1/glibc-check_pf.patch b/meta/packages/glibc/glibc-2.10.1/glibc-check_pf.patch new file mode 100644 index 0000000000..3cff6bbcfa --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/glibc-check_pf.patch @@ -0,0 +1,343 @@ +From libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org Tue Oct 31 17:37:21 2006 +Return-Path: <libc-ports-return-550-listarch-libc-ports=sources dot redhat dot com at sourceware dot org> +Delivered-To: listarch-libc-ports at sources dot redhat dot com +Received: (qmail 17273 invoked by alias); 31 Oct 2006 17:37:20 -0000 +Received: (qmail 17262 invoked by uid 22791); 31 Oct 2006 17:37:19 -0000 +X-Spam-Status: No, hits=-2.5 required=5.0 	tests=AWL,BAYES_00,TW_CP +X-Spam-Check-By: sourceware.org +Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17)     by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 31 Oct 2006 17:37:11 +0000 +Received: from drow by nevyn.them.org with local (Exim 4.54) 	id 1GexXw-0007Dj-30; Tue, 31 Oct 2006 12:37:08 -0500 +Date: Tue, 31 Oct 2006 12:37:08 -0500 +From: Daniel Jacobowitz <drow at false dot org> +To: Mike Frysinger <vapier at gentoo dot org> +Cc: libc-ports at sourceware dot org, Philip Balister <philip dot balister at gmail dot com> +Subject: Re: Problem with glibc-2.5 on ARM +Message-ID: <20061031173708.GJ20468@nevyn.them.org> +References: <499146270610241149ibe030e0nd9d6b177a95b346e@mail.gmail.com> <499146270610241254u7cadf63ej2edf05cedbc5266f@mail.gmail.com> <20061024195837.GA20181@nevyn.them.org> <200610291954.27022.vapier@gentoo.org> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +In-Reply-To: <200610291954 dot 27022 dot vapier at gentoo dot org> +User-Agent: Mutt/1.5.13 (2006-08-11) +X-IsSubscribed: yes +Mailing-List: contact libc-ports-help at sourceware dot org; run by ezmlm +Precedence: bulk +List-Subscribe: <mailto:libc-ports-subscribe at sourceware dot org> +List-Post: <mailto:libc-ports at sourceware dot org> +List-Help: <mailto:libc-ports-help at sourceware dot org>, <http://sourceware dot org/lists dot html#faqs> +Sender: libc-ports-owner at sourceware dot org +Delivered-To: mailing list libc-ports at sourceware dot org + +On Sun, Oct 29, 2006 at 07:54:25PM -0500, Mike Frysinger wrote: +> On Tuesday 24 October 2006 15:58, Daniel Jacobowitz wrote: +> > ARM is going to need a slightly different version of that file, I +> > guess. +>  +> would declaring req with attribute packed not help ? +> -mike + +Nope.  "struct rtgenmsg" would still have size 4. + +Philip, are you still at all interested in this for the old ABI? +I don't have time to test this patch right now, but I think it +will work. + +--  +Daniel Jacobowitz +CodeSourcery + +2006-10-31  Daniel Jacobowitz  <dan@codesourcery.com> + +	* sysdeps/unix/sysv/linux/arm/check_pf.c: New file. +	* sysdeps/unix/sysv/linux/arm/eabi/check_pf.c: New file. + +Index: sysdeps/unix/sysv/linux/arm/check_pf.c +=================================================================== +RCS file: sysdeps/unix/sysv/linux/arm/check_pf.c +diff -N sysdeps/unix/sysv/linux/arm/check_pf.c +--- /dev/null	1 Jan 1970 00:00:00 -0000 ++++ sysdeps/unix/sysv/linux/arm/check_pf.c	31 Oct 2006 17:29:58 -0000 +@@ -0,0 +1,274 @@ ++/* Determine protocol families for which interfaces exist.  ARM Linux version. ++   Copyright (C) 2003, 2006 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.  */ ++ ++#include <assert.h> ++#include <errno.h> ++#include <ifaddrs.h> ++#include <netdb.h> ++#include <stddef.h> ++#include <string.h> ++#include <time.h> ++#include <unistd.h> ++#include <sys/socket.h> ++ ++#include <asm/types.h> ++#include <linux/netlink.h> ++#include <linux/rtnetlink.h> ++ ++#include <not-cancel.h> ++#include <kernel-features.h> ++ ++ ++#ifndef IFA_F_TEMPORARY ++# define IFA_F_TEMPORARY IFA_F_SECONDARY ++#endif ++#ifndef IFA_F_HOMEADDRESS ++# define IFA_F_HOMEADDRESS 0 ++#endif ++ ++ ++static int ++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, ++	      struct in6addrinfo **in6ai, size_t *in6ailen) ++{ ++  struct req ++  { ++    struct nlmsghdr nlh; ++    struct rtgenmsg g; ++  } req; ++  struct sockaddr_nl nladdr; ++ ++  /* struct rtgenmsg consists of a single byte but the ARM ABI rounds ++     it up to a word.  Clear the padding explicitly here.  */ ++  assert (sizeof (req.g) == 4); ++  memset (&req.g, '\0', sizeof (req.g)); ++ ++  req.nlh.nlmsg_len = sizeof (req); ++  req.nlh.nlmsg_type = RTM_GETADDR; ++  req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; ++  req.nlh.nlmsg_pid = 0; ++  req.nlh.nlmsg_seq = time (NULL); ++  req.g.rtgen_family = AF_UNSPEC; ++ ++  memset (&nladdr, '\0', sizeof (nladdr)); ++  nladdr.nl_family = AF_NETLINK; ++ ++  if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0, ++				    (struct sockaddr *) &nladdr, ++				    sizeof (nladdr))) < 0) ++    return -1; ++ ++  *seen_ipv4 = false; ++  *seen_ipv6 = false; ++ ++  bool done = false; ++  char buf[4096]; ++  struct iovec iov = { buf, sizeof (buf) }; ++  struct in6ailist ++  { ++    struct in6addrinfo info; ++    struct in6ailist *next; ++  } *in6ailist = NULL; ++  size_t in6ailistlen = 0; ++ ++  do ++    { ++      struct msghdr msg = ++	{ ++	  (void *) &nladdr, sizeof (nladdr), ++	  &iov, 1, ++	  NULL, 0, ++	  0 ++	}; ++ ++      ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); ++      if (read_len < 0) ++	return -1; ++ ++      if (msg.msg_flags & MSG_TRUNC) ++	return -1; ++ ++      struct nlmsghdr *nlmh; ++      for (nlmh = (struct nlmsghdr *) buf; ++	   NLMSG_OK (nlmh, (size_t) read_len); ++	   nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len)) ++	{ ++	  if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid ++	      || nlmh->nlmsg_seq != req.nlh.nlmsg_seq) ++	    continue; ++ ++	  if (nlmh->nlmsg_type == RTM_NEWADDR) ++	    { ++	      struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh); ++ ++	      switch (ifam->ifa_family) ++		{ ++		case AF_INET: ++		  *seen_ipv4 = true; ++		  break; ++		case AF_INET6: ++		  *seen_ipv6 = true; ++ ++		  if (ifam->ifa_flags & (IFA_F_DEPRECATED ++					 | IFA_F_TEMPORARY ++					 | IFA_F_HOMEADDRESS)) ++		    { ++		      struct rtattr *rta = IFA_RTA (ifam); ++		      size_t len = (nlmh->nlmsg_len ++				    - NLMSG_LENGTH (sizeof (*ifam))); ++		      void *local = NULL; ++		      void *address = NULL; ++		      while (RTA_OK (rta, len)) ++			{ ++			  switch (rta->rta_type) ++			    { ++			    case IFA_LOCAL: ++			      local = RTA_DATA (rta); ++			      break; ++ ++			    case IFA_ADDRESS: ++			      address = RTA_DATA (rta); ++			      break; ++			    } ++ ++			  rta = RTA_NEXT (rta, len); ++			} ++ ++		      struct in6ailist *newp = alloca (sizeof (*newp)); ++		      newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED) ++					   ? in6ai_deprecated : 0) ++					  | ((ifam->ifa_flags ++					      & IFA_F_TEMPORARY) ++					     ? in6ai_temporary : 0) ++					  | ((ifam->ifa_flags ++					      & IFA_F_HOMEADDRESS) ++					     ? in6ai_homeaddress : 0)); ++		      memcpy (newp->info.addr, address ?: local, ++			      sizeof (newp->info.addr)); ++		      newp->next = in6ailist; ++		      in6ailist = newp; ++		      ++in6ailistlen; ++		    } ++		  break; ++		default: ++		  /* Ignore.  */ ++		  break; ++		} ++	    } ++	  else if (nlmh->nlmsg_type == NLMSG_DONE) ++	    /* We found the end, leave the loop.  */ ++	    done = true; ++	} ++    } ++  while (! done); ++ ++  close_not_cancel_no_status (fd); ++ ++  if (in6ailist != NULL) ++    { ++      *in6ai = malloc (in6ailistlen * sizeof (**in6ai)); ++      if (*in6ai == NULL) ++	return -1; ++ ++      *in6ailen = in6ailistlen; ++ ++      do ++	{ ++	  (*in6ai)[--in6ailistlen] = in6ailist->info; ++	  in6ailist = in6ailist->next; ++	} ++      while (in6ailist != NULL); ++    } ++ ++  return 0; ++} ++ ++ ++/* We don't know if we have NETLINK support compiled in in our ++   Kernel.  */ ++#if __ASSUME_NETLINK_SUPPORT == 0 ++/* Define in ifaddrs.h.  */ ++extern int __no_netlink_support attribute_hidden; ++#else ++# define __no_netlink_support 0 ++#endif ++ ++ ++void ++attribute_hidden ++__check_pf (bool *seen_ipv4, bool *seen_ipv6, ++	    struct in6addrinfo **in6ai, size_t *in6ailen) ++{ ++  *in6ai = NULL; ++  *in6ailen = 0; ++ ++  if (! __no_netlink_support) ++    { ++      int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); ++ ++      struct sockaddr_nl nladdr; ++      memset (&nladdr, '\0', sizeof (nladdr)); ++      nladdr.nl_family = AF_NETLINK; ++ ++      socklen_t addr_len = sizeof (nladdr); ++ ++      if (fd >= 0 ++	  && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 ++	  && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0 ++	  && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6, ++			   in6ai, in6ailen) == 0) ++	/* It worked.  */ ++	return; ++ ++      if (fd >= 0) ++	__close (fd); ++ ++#if __ASSUME_NETLINK_SUPPORT == 0 ++      /* Remember that there is no netlink support.  */ ++      __no_netlink_support = 1; ++#else ++      /* We cannot determine what interfaces are available.  Be ++	 pessimistic.  */ ++      *seen_ipv4 = true; ++      *seen_ipv6 = true; ++#endif ++    } ++ ++#if __ASSUME_NETLINK_SUPPORT == 0 ++  /* No netlink.  Get the interface list via getifaddrs.  */ ++  struct ifaddrs *ifa = NULL; ++  if (getifaddrs (&ifa) != 0) ++    { ++      /* We cannot determine what interfaces are available.  Be ++	 pessimistic.  */ ++      *seen_ipv4 = true; ++      *seen_ipv6 = true; ++      return; ++    } ++ ++  struct ifaddrs *runp; ++  for (runp = ifa; runp != NULL; runp = runp->ifa_next) ++    if (runp->ifa_addr->sa_family == PF_INET) ++      *seen_ipv4 = true; ++    else if (runp->ifa_addr->sa_family == PF_INET6) ++      *seen_ipv6 = true; ++ ++  (void) freeifaddrs (ifa); ++#endif ++} +Index: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c +=================================================================== +RCS file: sysdeps/unix/sysv/linux/arm/eabi/check_pf.c +diff -N sysdeps/unix/sysv/linux/arm/eabi/check_pf.c +--- /dev/null	1 Jan 1970 00:00:00 -0000 ++++ sysdeps/unix/sysv/linux/arm/eabi/check_pf.c	31 Oct 2006 17:29:58 -0000 +@@ -0,0 +1 @@ ++#include <sysdeps/unix/sysv/linux/check_pf.c> + diff --git a/meta/packages/glibc/glibc-2.10.1/ldd-unbash.patch b/meta/packages/glibc/glibc-2.10.1/ldd-unbash.patch new file mode 100644 index 0000000000..2fb8854b49 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/ldd-unbash.patch @@ -0,0 +1,11 @@ +--- glibc-2.5/elf/ldd.bash.in.org	2006-04-30 16:06:20.000000000 +0000 ++++ glibc-2.5/elf/ldd.bash.in	2007-03-30 19:18:57.000000000 +0000 +@@ -110,7 +110,7 @@ + # environments where the executed program might not have permissions + # to write to the console/tty.  But only bash 3.x supports the pipefail + # option, and we don't bother to handle the case for older bash versions. +-if set -o pipefail 2> /dev/null; then ++if false; then +   try_trace() { +     eval $add_env '"$@"' | cat +   } diff --git a/meta/packages/glibc/glibc-2.10.1/ldsocache-varrun.patch b/meta/packages/glibc/glibc-2.10.1/ldsocache-varrun.patch new file mode 100644 index 0000000000..9994d4f879 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/ldsocache-varrun.patch @@ -0,0 +1,18 @@ +This patch moves ld.so.cache from /etc to /var/run. This is for devices +where /etc is JFFS2 or CRAMFS but /var is a ramdisk. + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- libc/sysdeps/generic/dl-cache.h~ldsocache-varrun ++++ libc/sysdeps/generic/dl-cache.h +@@ -29,7 +29,7 @@ + #endif +  + #ifndef LD_SO_CACHE +-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" ++# define LD_SO_CACHE "/var/run/ld.so.cache" + #endif +  + #ifndef add_system_dir diff --git a/meta/packages/glibc/glibc-2.10.1/nptl-crosscompile.patch b/meta/packages/glibc/glibc-2.10.1/nptl-crosscompile.patch new file mode 100644 index 0000000000..18a46ad4f1 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/nptl-crosscompile.patch @@ -0,0 +1,26 @@ +--- glibc-2.4/nptl/sysdeps/pthread/configure.in.ark	2006-03-12 00:41:40.000000000 +0100 ++++ glibc-2.4/nptl/sysdeps/pthread/configure.in	2006-03-12 00:44:08.000000000 +0100 +@@ -45,5 +45,6 @@ +     AC_MSG_ERROR([the compiler must support C cleanup handling]) +   fi + else +-  AC_MSG_ERROR(forced unwind support is required) ++  AC_MSG_WARN([forced unwind support is required, can't be verified while crosscompiling]) ++  AC_DEFINE(HAVE_FORCED_UNWIND) + fi +--- glibc-2.4/nptl/sysdeps/pthread/configure.ark	2006-03-12 00:42:47.000000000 +0100 ++++ glibc-2.4/nptl/sysdeps/pthread/configure	2006-03-12 00:44:08.000000000 +0100 +@@ -153,7 +153,10 @@ +    { (exit 1); exit 1; }; } +   fi + else +-  { { echo "$as_me:$LINENO: error: forced unwind support is required" >&5 +-echo "$as_me: error: forced unwind support is required" >&2;} +-   { (exit 1); exit 1; }; } ++  { echo "$as_me:$LINENO: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&5 ++echo "$as_me: WARNING: forced unwind support is required, can't be verified while crosscompiling" >&2;} ++  cat >>confdefs.h <<\_ACEOF ++#define HAVE_FORCED_UNWIND 1 ++_ACEOF ++ + fi diff --git a/meta/packages/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff b/meta/packages/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff new file mode 100644 index 0000000000..1046efb2a1 --- /dev/null +++ b/meta/packages/glibc/glibc-2.10.1/powerpc-sqrt-hack.diff @@ -0,0 +1,25 @@ +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c	2006-04-14 07:44:30.000000000 +0200 ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrt.c	2006-12-08 12:53:32.202227000 +0100 +@@ -25,6 +25,9 @@ + #include <sysdep.h> + #include <ldsodefs.h> +  ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) ++ ++ + static const double almost_half = 0.5000000000000001;	/* 0.5 + 2^-53 */ + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; +diff -Nurd ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c +--- ../glibc-initial-2.5-r4/glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c	2006-04-14 07:44:30.000000000 +0200 ++++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c	2006-12-08 12:53:36.992227000 +0100 +@@ -25,6 +25,8 @@ + #include <sysdep.h> + #include <ldsodefs.h> +  ++#define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) ++ + static const float almost_half = 0.50000006;	/* 0.5 + 2^-24 */ + static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; + static const ieee_float_shape_type a_inf = {.word = 0x7f800000 }; | 
