[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r3467 - in glibc-package/branches/eglibc-2.10/debian: . debhelper.in patches patches/any patches/kfreebsd testsuite-checking



Author: aurel32
Date: 2009-05-09 22:11:33 +0000 (Sat, 09 May 2009)
New Revision: 3467

Added:
   glibc-package/branches/eglibc-2.10/debian/patches/any/local-revert-3270.diff
Modified:
   glibc-package/branches/eglibc-2.10/debian/changelog
   glibc-package/branches/eglibc-2.10/debian/debhelper.in/locales.config
   glibc-package/branches/eglibc-2.10/debian/debhelper.in/nscd.init
   glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-sysdeps.diff
   glibc-package/branches/eglibc-2.10/debian/patches/series
   glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i386
Log:
Merge from trunk revisions 3455-3466


Modified: glibc-package/branches/eglibc-2.10/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/changelog	2009-05-09 19:00:15 UTC (rev 3466)
+++ glibc-package/branches/eglibc-2.10/debian/changelog	2009-05-09 22:11:33 UTC (rev 3467)
@@ -5,6 +5,26 @@
 
  -- Aurelien Jarno <aurel32@debian.org>  Tue, 05 May 2009 09:57:43 +0200
 
+eglibc (2.9-13) unstable; urgency=low
+
+  * debian/debhelper.in/nscd.init: fix return code when querying status
+    and nscd is not running to comply with LSB.  Closes: #527883.
+  * debian/debhelper.in/locales.config: don't use "echo -e".  Closes: 
+    #527945.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 09 May 2009 20:56:18 +0200
+
+eglibc (2.9-12) unstable; urgency=low
+
+  [ Petr Salinger ]
+  * kfreebsd/local-sysdeps.diff: update to revision 2503 (from glibc-bsd).
+
+  [ Aurelien Jarno ]
+  * any/local-revert-3270.diff: new patch to revert fix for PR nptl/3270.
+    (closes: bug#527541).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 08 May 2009 11:57:16 +0200
+
 eglibc (2.9-11) unstable; urgency=low
 
   * Switch to Embedded GLIBC (EGLIBC), sources taken from the 2.9

Modified: glibc-package/branches/eglibc-2.10/debian/debhelper.in/locales.config
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/debhelper.in/locales.config	2009-05-09 19:00:15 UTC (rev 3466)
+++ glibc-package/branches/eglibc-2.10/debian/debhelper.in/locales.config	2009-05-09 22:11:33 UTC (rev 3467)
@@ -35,7 +35,7 @@
 fi
 
 # List of supported locales (PROVIDED_LOCALES + USER_LOCALES + GEN_LOCALES)
-SUPPORTED_LOCALES="$(echo -e "$PROVIDED_LOCALES\n$USER_LOCALES\n$GEN_LOCALES" | grep -v "^$" | sort -u | tr '\n' ',' | sed -e 's/, */, /g' -e 's/, *$//g')"
+SUPPORTED_LOCALES="$(printf '%s\n' "$PROVIDED_LOCALES" "$USER_LOCALES" "$GEN_LOCALES" | grep -v "^$" | sort -u | tr '\n' ',' | sed -e 's/, */, /g' -e 's/, *$//g')"
 db_subst locales/locales_to_be_generated locales "$SUPPORTED_LOCALES"
 
 # Get the list of selected locales from /etc/locale.gen

Modified: glibc-package/branches/eglibc-2.10/debian/debhelper.in/nscd.init
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/debhelper.in/nscd.init	2009-05-09 19:00:15 UTC (rev 3466)
+++ glibc-package/branches/eglibc-2.10/debian/debhelper.in/nscd.init	2009-05-09 22:11:33 UTC (rev 3467)
@@ -115,7 +115,7 @@
 	log_daemon_msg "Status of $DESC service: "
 	status
 	case "$?" in
-		0) log_failure_msg "not running." ; exit 1 ;;
+		0) log_failure_msg "not running." ; exit 3 ;;
 		1) log_success_msg "running." ; exit 0 ;;
 	esac
 	;;

Added: glibc-package/branches/eglibc-2.10/debian/patches/any/local-revert-3270.diff
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/any/local-revert-3270.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.10/debian/patches/any/local-revert-3270.diff	2009-05-09 22:11:33 UTC (rev 3467)
@@ -0,0 +1,199 @@
+Revert PR ntpl/3270
+
+--- a/nptl/init.c	(revision 5285)
++++ b/nptl/init.c	(revision 5284)
+@@ -221,21 +221,12 @@
+ 
+   /* Reset the SETXID flag.  */
+   struct pthread *self = THREAD_SELF;
+-  int flags, newval;
+-  do
+-    {
+-      flags = THREAD_GETMEM (self, cancelhandling);
+-      newval = THREAD_ATOMIC_CMPXCHG_VAL (self, cancelhandling,
+-					  flags & ~SETXID_BITMASK, flags);
+-    }
+-  while (flags != newval);
++  int flags = THREAD_GETMEM (self, cancelhandling);
++  THREAD_SETMEM (self, cancelhandling, flags & ~SETXID_BITMASK);
+ 
+   /* And release the futex.  */
+   self->setxid_futex = 1;
+   lll_futex_wake (&self->setxid_futex, 1, LLL_PRIVATE);
+-
+-  if (atomic_decrement_val (&__xidcmd->cntr) == 0)
+-    lll_futex_wake (&__xidcmd->cntr, 1, LLL_PRIVATE);
+ }
+ 
+ 
+--- a/nptl/allocatestack.c	(revision 5285)
++++ b/nptl/allocatestack.c	(revision 5284)
+@@ -904,54 +904,23 @@
+ 
+ static void
+ internal_function
+-setxid_mark_thread (struct xid_command *cmdp, struct pthread *t)
++setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)
+ {
+-  int ch;
+-
+-  /* Don't let the thread exit before the setxid handler runs.  */
+-  t->setxid_futex = 0;
+-
+-  do
++  if (! IS_DETACHED (t))
+     {
+-      ch = t->cancelhandling;
++      int ch;
++      do
++	{
++	  ch = t->cancelhandling;
+ 
+-      /* If the thread is exiting right now, ignore it.  */
+-      if ((ch & EXITING_BITMASK) != 0)
+-	return;
++	  /* If the thread is exiting right now, ignore it.  */
++	  if ((ch & EXITING_BITMASK) != 0)
++	    return;
++	}
++      while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
++						   ch | SETXID_BITMASK, ch));
+     }
+-  while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
+-					       ch | SETXID_BITMASK, ch));
+-}
+ 
+-
+-static void
+-internal_function
+-setxid_unmark_thread (struct xid_command *cmdp, struct pthread *t)
+-{
+-  int ch;
+-
+-  do
+-    {
+-      ch = t->cancelhandling;
+-      if ((ch & SETXID_BITMASK) == 0)
+-	return;
+-    }
+-  while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
+-					       ch & ~SETXID_BITMASK, ch));
+-
+-  /* Release the futex just in case.  */
+-  t->setxid_futex = 1;
+-  lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE);
+-}
+-
+-
+-static int
+-internal_function
+-setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)
+-{
+-  if ((t->cancelhandling & SETXID_BITMASK) == 0)
+-    return 0;
+-
+   int val;
+   INTERNAL_SYSCALL_DECL (err);
+ #if __ASSUME_TGKILL
+@@ -967,14 +936,8 @@
+     val = INTERNAL_SYSCALL (tkill, err, 2, t->tid, SIGSETXID);
+ #endif
+ 
+-  /* If this failed, it must have had not started yet or else exited.  */
+   if (!INTERNAL_SYSCALL_ERROR_P (val, err))
+-    {
+-      atomic_increment (&cmdp->cntr);
+-      return 1;
+-    }
+-  else
+-    return 0;
++    atomic_increment (&cmdp->cntr);
+ }
+ 
+ 
+@@ -982,7 +945,6 @@
+ attribute_hidden
+ __nptl_setxid (struct xid_command *cmdp)
+ {
+-  int signalled;
+   int result;
+   lll_lock (stack_cache_lock, LLL_PRIVATE);
+ 
+@@ -999,7 +961,7 @@
+       if (t == self)
+ 	continue;
+ 
+-      setxid_mark_thread (cmdp, t);
++      setxid_signal_thread (cmdp, t);
+     }
+ 
+   /* Now the list with threads using user-allocated stacks.  */
+@@ -1009,63 +971,16 @@
+       if (t == self)
+ 	continue;
+ 
+-      setxid_mark_thread (cmdp, t);
++      setxid_signal_thread (cmdp, t);
+     }
+ 
+-  /* Iterate until we don't succeed in signalling anyone.  That means
+-     we have gotten all running threads, and their children will be
+-     automatically correct once started.  */
+-  do
++  int cur = cmdp->cntr;
++  while (cur != 0)
+     {
+-      signalled = 0;
+-
+-      list_for_each (runp, &stack_used)
+-	{
+-	  struct pthread *t = list_entry (runp, struct pthread, list);
+-	  if (t == self)
+-	    continue;
+-
+-	  signalled += setxid_signal_thread (cmdp, t);
+-	}
+-
+-      list_for_each (runp, &__stack_user)
+-	{
+-	  struct pthread *t = list_entry (runp, struct pthread, list);
+-	  if (t == self)
+-	    continue;
+-
+-	  signalled += setxid_signal_thread (cmdp, t);
+-	}
+-
+-      int cur = cmdp->cntr;
+-      while (cur != 0)
+-	{
+-	  lll_futex_wait (&cmdp->cntr, cur, LLL_PRIVATE);
+-	  cur = cmdp->cntr;
+-	}
++      lll_futex_wait (&cmdp->cntr, cur, LLL_PRIVATE);
++      cur = cmdp->cntr;
+     }
+-  while (signalled != 0);
+ 
+-  /* Clean up flags, so that no thread blocks during exit waiting
+-     for a signal which will never come.  */
+-  list_for_each (runp, &stack_used)
+-    {
+-      struct pthread *t = list_entry (runp, struct pthread, list);
+-      if (t == self)
+-	continue;
+-
+-      setxid_unmark_thread (cmdp, t);
+-    }
+-
+-  list_for_each (runp, &__stack_user)
+-    {
+-      struct pthread *t = list_entry (runp, struct pthread, list);
+-      if (t == self)
+-	continue;
+-
+-      setxid_unmark_thread (cmdp, t);
+-    }
+-
+   /* This must be last, otherwise the current thread might not have
+      permissions to send SIGSETXID syscall to the other threads.  */
+   INTERNAL_SYSCALL_DECL (err);

Modified: glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-sysdeps.diff
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-sysdeps.diff	2009-05-09 19:00:15 UTC (rev 3466)
+++ glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-sysdeps.diff	2009-05-09 22:11:33 UTC (rev 3467)
@@ -3125,7 +3125,7 @@
 +
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h
-@@ -0,0 +1,145 @@
+@@ -0,0 +1,153 @@
 +/* O_*, F_*, FD_* bit values for FreeBSD.
 +   Copyright (C) 1991-1992, 1997, 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -3146,52 +3146,56 @@
 +   02111-1307 USA.  */
 +
 +#ifndef	_FCNTL_H
-+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
++# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
 +#endif
 +
 +#include <sys/types.h>
++#include <bits/wordsize.h>
++#ifdef __USE_GNU
++# include <bits/uio.h>
++#endif
 +
-+/* File access modes for `open' and `fcntl'.  */
-+#define	O_RDONLY	0	/* Open read-only.  */
-+#define	O_WRONLY	1	/* Open write-only.  */
-+#define	O_RDWR		2	/* Open read/write.  */
 +
++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
++   located on an ext2 file system */
++#define O_ACCMODE	   0003
++#define O_RDONLY	     00
++#define O_WRONLY	     01
++#define O_RDWR		     02
++#define O_CREAT		  01000	/* not fcntl */
++#define O_EXCL		  04000	/* not fcntl */
++#define O_NOCTTY	0100000	/* not fcntl */
++#define O_TRUNC		  02000	/* not fcntl */
++#define O_APPEND	    010
++#define O_NONBLOCK	     04
++#define O_NDELAY	O_NONBLOCK
++#define O_SYNC		   0200
++#define O_FSYNC		 O_SYNC
++#define O_ASYNC		   0100
 +
-+/* Bits OR'd into the second argument to open.  */
-+#define	O_CREAT		0x0200	/* Create file if it doesn't exist.  */
-+#define	O_EXCL		0x0800	/* Fail if file already exists.  */
-+#define	O_TRUNC		0x0400	/* Truncate file to zero length.  */
-+#define	O_NOCTTY	0x8000	/* Don't assign a controlling terminal.  */
-+#ifdef	__USE_MISC
-+#define	O_ASYNC		0x0040	/* Send SIGIO to owner when data is ready.  */
-+#define	O_FSYNC		0x0080	/* Synchronous writes.  */
-+#define	O_SYNC		O_FSYNC
-+#define	O_SHLOCK	0x0010	/* Open with shared file lock.  */
-+#define	O_EXLOCK	0x0020	/* Open with shared exclusive lock.  */
-+#define O_NOFOLLOW	0x0100	/* Don't follow symlinks.  */
-+#define	O_DIRECT    0x00010000  /* Attempt to bypass buffer cache */
++#ifdef __USE_GNU
++# define O_DIRECT	0200000	/* Direct disk access.	*/
++enum { O_DIRECTORY = 0 };	/* Must be a directory.	 */
++enum { O_NOATIME = 0};          /* Do not set atime.  */
++# define O_NOFOLLOW	   0400	/* Do not follow links.	 */
 +#endif
 +
-+enum { O_DIRECTORY = 0 };
-+
-+/* File status flags for `open' and `fcntl'.  */
-+#define	O_APPEND	0x0008	/* Writes append to the file.  */
-+#define	O_NONBLOCK	0x0004	/* Non-blocking I/O.  */
-+
 +#ifdef __USE_BSD
-+#define	O_NDELAY	O_NONBLOCK
++#define O_SHLOCK	    020 /* Open with shared file lock.  */
++#define O_EXLOCK	    040 /* Open with shared exclusive lock.  */
 +#endif
 +
-+/* Since 'off_t' is 64-bit, O_LARGEFILE is a no-op.  */
-+#define O_LARGEFILE	0
-+
-+/* FreeBSD doesn't have smaller grained synchronicity control than per file.
-+   fdatasync() is equivalent to fsync(), so we define O_DSYNC == O_SYNC.  */
++/* For now FreeBSD has synchronisity options for data and read operations.
++   We define the symbols here but let them do the same as O_SYNC since
++   this is a superset.	*/
 +#if defined __USE_POSIX199309 || defined __USE_UNIX98
 +# define O_DSYNC	O_SYNC	/* Synchronize data.  */
-+# define O_RSYNC	O_SYNC	/* Synchronize read operations.  */
++# define O_RSYNC	O_SYNC	/* Synchronize read operations.	 */
 +#endif
 +
++/* Since 'off_t' is 64-bit, O_LARGEFILE is a no-op.  */
++#define O_LARGEFILE	0
++
 +#ifdef __USE_BSD
 +/* Bits in the file status flags returned by F_GETFL.
 +   These are all the O_* flags, plus FREAD and FWRITE, which are
@@ -3199,53 +3203,52 @@
 +   given to `open'.  */
 +#define FREAD		1
 +#define	FWRITE		2
-+
-+/* Traditional BSD names the O_* bits.  */
-+#define FASYNC		O_ASYNC
-+#define FCREAT		O_CREAT
-+#define FEXCL		O_EXCL
-+#define FTRUNC		O_TRUNC
-+#define FNOCTTY		O_NOCTTY
-+#define FFSYNC		O_FSYNC
-+#define FSYNC		O_SYNC
-+#define FAPPEND		O_APPEND
-+#define FNONBLOCK	O_NONBLOCK
-+#define FNDELAY		O_NDELAY
 +#endif
 +
-+/* Mask for file access modes.  This is system-dependent in case
-+   some system ever wants to define some other flavor of access.  */
-+#define	O_ACCMODE	(O_RDONLY|O_WRONLY|O_RDWR)
++/* Values for the second argument to `fcntl'.  */
++#define F_DUPFD		0	/* Duplicate file descriptor.  */
++#define F_GETFD		1	/* Get file descriptor flags.  */
++#define F_SETFD		2	/* Set file descriptor flags.  */
++#define F_GETFL		3	/* Get file status flags.  */
++#define F_SETFL		4	/* Set file status flags.  */
++#define F_GETLK		7	/* Get record locking info.  */
++#define F_SETLK		8	/* Set record locking info (non-blocking).  */
++#define F_SETLKW	9	/* Set record locking info (blocking).	*/
++/* Not necessary, we always have 64-bit offsets.  */
++#define F_GETLK64	7	/* Get record locking info.  */
++#define F_SETLK64	8	/* Set record locking info (non-blocking).  */
++#define F_SETLKW64	9	/* Set record locking info (blocking).	*/
 +
-+/* Values for the second argument to `fcntl'.  */
-+#define	F_DUPFD	  	0	/* Duplicate file descriptor.  */
-+#define	F_GETFD		1	/* Get file descriptor flags.  */
-+#define	F_SETFD		2	/* Set file descriptor flags.  */
-+#define	F_GETFL		3	/* Get file status flags.  */
-+#define	F_SETFL		4	/* Set file status flags.  */
-+#ifdef __USE_BSD
-+#define	F_GETOWN	5	/* Get owner (receiver of SIGIO).  */
-+#define	F_SETOWN	6	/* Set owner (receiver of SIGIO).  */
++#if defined __USE_BSD || defined __USE_UNIX98
++# define F_SETOWN	5	/* Get owner of socket (receiver of SIGIO).  */
++# define F_GETOWN	6	/* Set owner of socket (receiver of SIGIO).  */
 +#endif
-+#define	F_GETLK		7	/* Get record locking info.  */
-+#define	F_SETLK		8	/* Set record locking info (non-blocking).  */
-+#define	F_SETLKW	9	/* Set record locking info (blocking).  */
 +
-+/* File descriptor flags used with F_GETFD and F_SETFD.  */
-+#define	FD_CLOEXEC	1	/* Close on exec.  */
++/* For F_[GET|SET]FD.  */
++#define FD_CLOEXEC	1	/* actually anything with low bit set goes */
 +
++/* For posix fcntl() and `l_type' field of a `struct flock' for lockf().  */
++#define F_RDLCK		1	/* Read lock.  */
++#define F_WRLCK		3	/* Write lock.	*/
++#define F_UNLCK		2	/* Remove lock.	 */
 +
-+#include <bits/types.h>
++#ifdef __USE_BSD
++/* Operations for bsd flock(), also used by the kernel implementation.	*/
++# define LOCK_SH	1	/* shared lock */
++# define LOCK_EX	2	/* exclusive lock */
++# define LOCK_NB	4	/* or'd with one of the above to prevent
++				   blocking */
++# define LOCK_UN	8	/* remove lock */
++#endif
 +
-+/* The structure describing an advisory lock.  This is the type of the third
-+   argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
 +struct flock
 +  {
 +    __off_t l_start;	/* Offset where the lock begins.  */
 +    __off_t l_len;	/* Size of the locked area; zero means until EOF.  */
 +    __pid_t l_pid;	/* Process holding the lock.  */
-+    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
++    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.	*/
 +    short int l_whence;	/* Where `l_start' is relative to (like `lseek').  */
++    int	__l_sysid;	/* remote system id or zero for local */
 +  };
 +
 +#ifdef __USE_LARGEFILE64
@@ -3254,23 +3257,28 @@
 +    __off64_t l_start;	/* Offset where the lock begins.  */
 +    __off64_t l_len;	/* Size of the locked area; zero means until EOF.  */
 +    __pid_t l_pid;	/* Process holding the lock.  */
-+    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
++    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.	*/
 +    short int l_whence;	/* Where `l_start' is relative to (like `lseek').  */
++    int	__l_sysid;	/* remote system id or zero for local */
 +  };
 +#endif
 +
-+/* Values for the `l_type' field of a `struct flock'.  */
-+#define	F_RDLCK	1	/* Read lock.  */
-+#define	F_WRLCK	3	/* Write lock.  */
-+#define	F_UNLCK	2	/* Remove lock.  */
++/* Define some more compatibility macros to be backward compatible with
++   BSD systems which did not managed to hide these kernel macros.  */
++#ifdef	__USE_BSD
++# define FAPPEND	O_APPEND
++# define FFSYNC		O_FSYNC
++# define FASYNC		O_ASYNC
++# define FNONBLOCK	O_NONBLOCK
++# define FNDELAY	O_NDELAY
 +
-+#ifdef __USE_BSD
-+/* Operations for flock().  */
-+# define LOCK_SH 1	/* shared lock */
-+# define LOCK_EX 2	/* exclusive lock */
-+# define LOCK_NB 4	/* or'd with one of the above to prevent blocking */
-+# define LOCK_UN 8	/* remove lock */
-+#endif
++#define FCREAT		O_CREAT
++#define FEXCL		O_EXCL
++#define FTRUNC		O_TRUNC
++#define FNOCTTY		O_NOCTTY
++#define FSYNC		O_SYNC
++#endif /* Use BSD.  */
++
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/in.h
 @@ -0,0 +1,305 @@
@@ -6413,7 +6421,7 @@
 +#endif /* bits/typesizes.h */
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/uio.h
-@@ -0,0 +1,49 @@
+@@ -0,0 +1,55 @@
 +/* Copyright (C) 1996-1997, 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +
@@ -6432,11 +6440,16 @@
 +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 +   02111-1307 USA.  */
 +
-+#ifndef _SYS_UIO_H
++#if !defined _SYS_UIO_H && !defined _FCNTL_H
 +# error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
 +#endif
 +
++#ifndef _BITS_UIO_H
++#define _BITS_UIO_H     1
 +
++#include <sys/types.h>
++
++
 +/* `struct iovec' -- Structure describing a section of memory.  */
 +
 +struct iovec
@@ -6463,6 +6476,7 @@
 +};
 +#endif
 +
++#endif
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/utsname.h
 @@ -0,0 +1,27 @@
@@ -11993,7 +12007,7 @@
 +weak_alias (__vfork, vfork)
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/if_index.c
-@@ -0,0 +1,303 @@
+@@ -0,0 +1,311 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -12071,7 +12085,15 @@
 +	      if (index == 0)
 +		abort ();
 +
++	      /* FIXME: 'struct if_msghdr' contains a 'struct if_data' which in turns
++	         contains 'unsigned long' values. Their size therefore depends on
++		 the running kernel (32 or 64 bits). This should be fixed in the
++		 compat layer of the kernel. Meanwhile just workaround the bug here/ */
++#if 0
 +	      sdl = (struct sockaddr_dl *) (msg + 1);
++#else
++	      sdl = (struct sockaddr_dl *) (p + msg->ifm_msglen - sizeof(struct sockaddr_dl) - 2);
++#endif
 +	      namelen = sdl->sdl_nlen;
 +	      /* Avoid overflowing namebuf[].  */
 +	      if (namelen > IFNAMSIZ)

Modified: glibc-package/branches/eglibc-2.10/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/series	2009-05-09 19:00:15 UTC (rev 3466)
+++ glibc-package/branches/eglibc-2.10/debian/patches/series	2009-05-09 22:11:33 UTC (rev 3467)
@@ -205,3 +205,4 @@
 any/submitted-nss-nsswitch.diff
 any/submitted-install-map-files.diff
 any/submitted-broken-dns.diff
+any/local-revert-3270.diff

Modified: glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i386
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i386	2009-05-09 19:00:15 UTC (rev 3466)
+++ glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i386	2009-05-09 22:11:33 UTC (rev 3467)
@@ -11,7 +11,7 @@
 tst-aio9.out, Error 1
 tst-chk1.out, Error 1
 tst-chk2.out, Error 1
-itst-chk3.out, Error 1
+tst-chk3.out, Error 1
 tst-chk4.out, Error 1
 tst-chk5.out, Error 1
 tst-chk6.out, Error 1


Reply to: