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

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



Author: aurel32
Date: 2009-05-26 07:05:24 +0000 (Tue, 26 May 2009)
New Revision: 3537

Added:
   glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-config_h_in.patch
Modified:
   glibc-package/branches/eglibc-2.10/debian/changelog
   glibc-package/branches/eglibc-2.10/debian/debhelper.in/libc.NEWS
   glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-sysdeps.diff
   glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-amd64
   glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-i386
   glibc-package/branches/eglibc-2.10/debian/sysdeps/kfreebsd.mk
   glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i486-kfreebsd-gnu-libc
   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-i686
   glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc
Log:
Merge from trunk, revisions 3518-3536



Modified: glibc-package/branches/eglibc-2.10/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/changelog	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/changelog	2009-05-26 07:05:24 UTC (rev 3537)
@@ -107,9 +107,14 @@
     accordingly.  Closes: #382175.
   * debian/patches/any/submitted-tst-cpucount.diff: new patch to fix 
     tst-cpucount test on non Linux kernels.
-  * kfreebsd/local-sysdeps.diff: update to revision 2520 (from glibc-bsd).
+  * kfreebsd/local-sysdeps.diff: update to revision 2544 (from glibc-bsd).
+  * debian/patches/kfreebsd/local-config_h_in.patch: new patch to correctly
+    define __KFREEBSD_KERNEL_VERSION.
+  * debian/sysdeps/kfreebsd.mk: bump minimal kernel version to 6.0.
+  * debian/debhelper.in/libc.NEWS: detail the exact line that has to be
+    added to /etc/resolv.conf.
 
- -- Aurelien Jarno <aurel32@debian.org>  Thu, 14 May 2009 21:25:26 +0200
+ -- Aurelien Jarno <aurel32@debian.org>  Tue, 26 May 2009 08:32:00 +0200
 
 eglibc (2.9-12) unstable; urgency=low
 

Modified: glibc-package/branches/eglibc-2.10/debian/debhelper.in/libc.NEWS
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/debhelper.in/libc.NEWS	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/debhelper.in/libc.NEWS	2009-05-26 07:05:24 UTC (rev 3537)
@@ -9,8 +9,8 @@
   for that process) to a mode where the second request is sent only when
   the first answer has been received. This means the first request will
   be timeout, but subsequent requests should be fast again. This 
-  behaviour   can be enabled permanently by adding 'single-request' to 
-  /etc/resolv.conf.  
+  behaviour can be enabled permanently by adding 'options single-request'
+  to /etc/resolv.conf.  
 
  -- Aurelien Jarno <aurel32@debian.org>  Thu, 23 Apr 2009 21:14:32 +0200
 

Added: glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-config_h_in.patch
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-config_h_in.patch	                        (rev 0)
+++ glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-config_h_in.patch	2009-05-26 07:05:24 UTC (rev 3537)
@@ -0,0 +1,17 @@
+2009-05-23  Aurelien Jarno <aurelien@aurel32.net>
+
+	* config.h.in (__KFREEBSD_KERNEL_VERSION): Add.
+
+--- a/config.h.in
++++ b/config.h.in
+@@ -150,6 +150,9 @@
+ /* Linux specific: minimum supported kernel version.  */
+ #undef	__LINUX_KERNEL_VERSION
+ 
++/* kFreeBSD specific: minimum supported kernel version.  */
++#undef	__KFREEBSD_KERNEL_VERSION
++
+ /* Override abi-tags ABI version if necessary.  */
+ #undef  __ABI_TAG_VERSION
+ 
+

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-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/patches/kfreebsd/local-sysdeps.diff	2009-05-26 07:05:24 UTC (rev 3537)
@@ -81,7 +81,7 @@
 +
 +ifeq ($(subdir),io)
 +# For <unistd.h>.
-+sysdep_routines += sys_getcwd sys_lseek
++sysdep_routines += sys_getcwd sys_lseek sys_freebsd6_lseek
 +# For <fcntl.h>.
 +sysdep_routines += sys_open open_2
 +# For <sys/stat.h>.
@@ -101,7 +101,7 @@
 +# For <sched.h>.
 +sysdep_routines += clone start_thread
 +# For <unistd.h>.
-+sysdep_routines += sys_ftruncate sys_truncate
++sysdep_routines += sys_ftruncate sys_freebsd6_ftruncate sys_truncate sys_freebsd6_truncate
 +# For <sys/acl.h>.
 +sysdep_routines += acl_aclcheck_fd acl_aclcheck_file acl_delete_fd acl_delete_file acl_get_fd acl_get_file acl_set_fd acl_set_file
 +# For <sys/extattr.h>.
@@ -113,7 +113,7 @@
 +# For <sys/linker.h>.
 +sysdep_routines += kldfind kldfirstmod kldload kldnext kldstat kldsym kldunload kldunloadf
 +# For <sys/mman.h>.
-+sysdep_routines += minherit sys_mmap
++sysdep_routines += minherit sys_mmap sys_freebsd6_mmap sys_munmap
 +# For <sys/mount.h>.
 +sysdep_routines += fhopen sys_fhstat sys_fhstatfs fhstat fhstat64 fhstatfs fhstatfs64 getfh getfsstat getfsstat64 sys_getfsstat getmntinfo getmntinfo64 mount nmount unmount
 +# For <sys/ptrace.h>.
@@ -137,7 +137,7 @@
 +
 +ifeq ($(subdir),posix)
 +# For <unistd.h>.
-+sysdep_routines += sys_getlogin sys_pread sys_pwrite sys_setlogin sys_read sys_write
++sysdep_routines += sys_getlogin sys_pread sys_freebsd6_pread sys_pwrite sys_freebsd6_pwrite sys_setlogin sys_read sys_write
 +# for <sched.h>
 +sysdep_routines += sys_cpuset_getaffinity sys_cpuset_setaffinity
 +endif
@@ -176,7 +176,7 @@
 +endif
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions
-@@ -0,0 +1,102 @@
+@@ -0,0 +1,103 @@
 +libc {
 +  # The comment lines with "#errlist-compat" are magic; see errlist-compat.awk.
 +  # When you get an error from errlist-compat.awk, you need to add a new
@@ -272,6 +272,7 @@
 +    __syscall_clock_getres; __syscall_clock_gettime; __syscall_clock_settime;
 +     # misc fixes for FreeBSD:
 +    __syscall_freebsd6_lseek; __syscall_freebsd6_pread; __syscall_freebsd6_pwrite;
++    __syscall_lseek; __syscall_pread; __syscall_pwrite;
 +    __syscall_connect; __syscall_sendto;
 +    __syscall_cpuset_getaffinity ; __syscall_cpuset_setaffinity;
 +    __sigprocmask; __ioctl;
@@ -4976,7 +4977,7 @@
 +#endif	/* have _SIGNAL_H.  */
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/signum.h
-@@ -0,0 +1,71 @@
+@@ -0,0 +1,80 @@
 +/* Signal number definitions.  FreeBSD version.
 +   Copyright (C) 1991-1993, 1996, 1998, 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -5045,9 +5046,18 @@
 +#define	SIGUSR1		30	/* User-defined signal 1 (POSIX).  */
 +#define	SIGUSR2		31	/* User-defined signal 2 (POSIX).  */
 +
++#define	_NSIG		129	/* Biggest signal number + 1
++				   (including real-time signals).  */
++
++#define SIGRTMIN	(__libc_current_sigrtmin ())
++#define SIGRTMAX	(__libc_current_sigrtmax ())
++
++/* These are the hard limits of the kernel.  These values should not be
++   used directly at user level.  */
++#define __SIGRTMIN	65	/* be in sync with FreeBSD kernel */
++#define __SIGRTMAX	126	/* be in sync with FreeBSD kernel */
++
 +#endif	/* <signal.h> included.  */
-+
-+#define	_NSIG		129	/* Biggest signal number + 1.  */
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigset.h
 @@ -0,0 +1,140 @@
@@ -7039,7 +7049,7 @@
 +
 +echo "$as_me:$LINENO: checking installed kFreeBSD kernel header files" >&5
 +echo $ECHO_N "checking installed kFreeBSD kernel header files... $ECHO_C" >&6
-+if test "${libc_cv_kfreebsd540+set}" = set; then
++if test "${libc_cv_kfreebsd600+set}" = set; then
 +  echo $ECHO_N "(cached) $ECHO_C" >&6
 +else
 +  cat >conftest.$ac_ext <<_ACEOF
@@ -7052,34 +7062,34 @@
 +#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version)
 +#define __FreeBSD_kernel_version __FreeBSD_version
 +#endif
-+#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version <  (5 *10000+ 4 *100+ 0) /* 5.4.0 */
++#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version <  (6 *65536+ 4 *256+ 0) /* 6.0.0 */
 +eat flaming death
 +#endif
 +_ACEOF
 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 +  $EGREP "eat flaming death" >/dev/null 2>&1; then
-+  libc_cv_kfreebsd540='TOO OLD!'
++  libc_cv_kfreebsd600='TOO OLD!'
 +else
-+  libc_cv_kfreebsd540='5.4.0 or later'
++  libc_cv_kfreebsd600='6.0.0 or later'
 +fi
 +rm -f conftest*
 +
 +fi
-+echo "$as_me:$LINENO: result: $libc_cv_kfreebsd540" >&5
-+echo "${ECHO_T}$libc_cv_kfreebsd540" >&6
-+if test "$libc_cv_kfreebsd540" != '5.4.0 or later'; then
++echo "$as_me:$LINENO: result: $libc_cv_kfreebsd600" >&5
++echo "${ECHO_T}$libc_cv_kfreebsd600" >&6
++if test "$libc_cv_kfreebsd600" != '6.0.0 or later'; then
 +  { { echo "$as_me:$LINENO: error: GNU libc requires kernel header files from
-+kFreeBSD 5.4.0 or later to be installed before configuring.
++kFreeBSD 6.0.0 or later to be installed before configuring.
 +The kernel header files are found usually in /usr/src/sys/; make sure
-+these directories use files from kFreeBSD 5.4.0 or later.
++these directories use files from kFreeBSD 6.0.0 or later.
 +This check uses <osreldate.h>, so
 +make sure that file was built correctly when installing the kernel header
 +files.  To use kernel headers not from /usr/src/sys/, use the
 +configure option --with-headers." >&5
 +echo "$as_me: error: GNU libc requires kernel header files from
-+kFreeBSD 5.4.0 or later to be installed before configuring.
++kFreeBSD 6.0.0 or later to be installed before configuring.
 +The kernel header files are found usually in /usr/src/sys/; make sure
-+these directories use files from kFreeBSD 5.4.0 or later.
++these directories use files from kFreeBSD 6.0.0 or later.
 +This check uses <osreldate.h>, so
 +make sure that file was built correctly when installing the kernel header
 +files.  To use kernel headers not from /usr/src/sys/, use the
@@ -7111,19 +7121,19 @@
 +case "$machine" in
 +  i386*)
 +    libc_cv_gcc_unwind_find_fde=yes
-+    arch_minimum_kernel=5.4.0
++    arch_minimum_kernel=6.0.0
 +    ;;
 +  x86_64*)
-+    arch_minimum_kernel=5.4.0
++    arch_minimum_kernel=6.0.0
 +    ;;
 +  *)
-+    arch_minimum_kernel=5.4.0
++    arch_minimum_kernel=6.0.0
 +    ;;
 +esac
 +if test -n "$minimum_kernel"; then
 +
-+  user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`))
-+  arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`))
++  user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`))
++  arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`))
 +
 +  if test $user_version -lt $arch_version; then
 +    { echo "$as_me:$LINENO: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&5
@@ -7131,7 +7141,7 @@
 +    minimum_kernel=$arch_minimum_kernel
 +  fi
 +else
-+  if test $arch_minimum_kernel != '5.4.0'; then
++  if test $arch_minimum_kernel != '6.0.0'; then
 +    minimum_kernel=$arch_minimum_kernel
 +  fi
 +fi
@@ -7139,7 +7149,7 @@
 +if test -n "$minimum_kernel"; then
 +  echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5
 +echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&6
-+  decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 10000 + \2 * 100 + \3)/'`;
++  decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
 +  abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
 +  cat >conftest.$ac_ext <<_ACEOF
 +/* confdefs.h.  */
@@ -7363,7 +7373,7 @@
 +# existing system library, because we are the only system library.
 +inhibit_glue=yes
 +
-+define([LIBC_KFREEBSD_VERSION],[5.4.0])dnl
++define([LIBC_KFREEBSD_VERSION],[6.0.0])dnl
 +if test -n "$sysheaders"; then
 +  OLD_CPPFLAGS=$CPPFLAGS
 +  CPPFLAGS="$CPPFLAGS $SYSINCLUDES"
@@ -7376,7 +7386,7 @@
 +#endif
 +#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version < ]dnl
 +patsubst(LIBC_KFREEBSD_VERSION,[^\([^.]*\)\.\([^.]*\)\.\([^.]*\)$],dnl
-+[ (\1 *10000+ \2 *100+ \3) /* \1.\2.\3 */])[
++[ (\1 *65536+ \2 *256+ \3) /* \1.\2.\3 */])[
 +eat flaming death
 +#endif],
 +	     libc_cv_kfreebsdVER='TOO OLD!',
@@ -7413,26 +7423,26 @@
 +case "$machine" in
 +  i386*)
 +    libc_cv_gcc_unwind_find_fde=yes
-+    arch_minimum_kernel=5.4.0
++    arch_minimum_kernel=6.0.0
 +    ;;
 +  x86_64*)
-+    arch_minimum_kernel=5.4.0
++    arch_minimum_kernel=6.0.0
 +    ;;
 +  *)
-+    arch_minimum_kernel=5.4.0
++    arch_minimum_kernel=6.0.0
 +    ;;
 +esac
 +if test -n "$minimum_kernel"; then
 +  changequote(,)
-+  user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`))
-+  arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`))
++  user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`))
++  arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`))
 +  changequote([,])
 +  if test $user_version -lt $arch_version; then
 +    AC_MSG_WARN([minimum kernel version reset to $arch_minimum_kernel])
 +    minimum_kernel=$arch_minimum_kernel
 +  fi
 +else
-+  if test $arch_minimum_kernel != '5.4.0'; then
++  if test $arch_minimum_kernel != '6.0.0'; then
 +    minimum_kernel=$arch_minimum_kernel
 +  fi
 +fi
@@ -7440,7 +7450,7 @@
 +if test -n "$minimum_kernel"; then
 +  AC_MSG_CHECKING(for kernel header at least $minimum_kernel)
 +changequote(,)dnl
-+  decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 10000 + \2 * 100 + \3)/'`;
++  decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
 +  abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
 +changequote([,])dnl
 +  AC_EGREP_CPP([eat flaming death], [#include <osreldate.h>
@@ -7773,7 +7783,7 @@
 +#include_next <dl-machine.h>
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h
-@@ -0,0 +1,135 @@
+@@ -0,0 +1,98 @@
 +/* Operating system specific code  for generic dynamic loader functions.
 +   Copyright (C) 2006 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -7815,63 +7825,26 @@
 +}
 +#endif
 +
-+
-+#define DL_SYSDEP_OSCHECK(FATAL) \
++#define DL_SYSDEP_OSCHECK(FATAL)					      \
 +  do {									      \
-+    /* Test whether the kernel is new enough.  This test is only	      \
-+       performed if the library is not compiled to run on all		      \
-+       kernels.  */							      \
-+    if (__KFREEBSD_KERNEL_VERSION > 0)					      \
++    /* Test whether the kernel is new enough.  This test is only performed    \
++       if the library is not compiled to run on all kernels.  */	      \
++									      \
++    int version = _dl_discover_osversion ();				      \
++    if (__builtin_expect (version >= 0, 1))				      \
 +      {									      \
-+	char bufmem[64];						      \
-+	char *buf = bufmem;						      \
-+	unsigned int version;						      \
-+	int parts;							      \
-+	char *cp;							      \
-+	struct utsname uts;						      \
++	if (__builtin_expect (GLRO(dl_osversion) == 0, 1)		      \
++	    || GLRO(dl_osversion) > version)				      \
++	  GLRO(dl_osversion) = version;					      \
 +									      \
-+	/* Try the uname syscall */					      \
-+	if (! __uname (&uts))					      	      \
-+	  {							      	      \
-+	    /* Now convert it into a number.  The string consists of at most  \
-+	       three parts.  */						      \
-+	    version = 0;						      \
-+	    parts = 0;							      \
-+            buf = uts.release;						      \
-+	    cp = buf;							      \
-+	    while ((*cp >= '0') && (*cp <= '9'))			      \
-+	      {								      \
-+	        unsigned int here = *cp++ - '0';			      \
-+									      \
-+	        while ((*cp >= '0') && (*cp <= '9'))			      \
-+	          {							      \
-+		    here *= 10;						      \
-+		    here += *cp++ - '0';				      \
-+	          }							      \
-+									      \
-+	        ++parts;						      \
-+	        version *= 100;						      \
-+	        version |= here;					      \
-+									      \
-+	        if (*cp++ != '.')					      \
-+	          /* Another part following?  */			      \
-+	          break;						      \
-+	      }								      \
-+									      \
-+	    if (parts == 2)						      \
-+	      version *= 100;						      \
-+									      \
-+	    if (parts == 1)						      \
-+	      version *= 10000;						      \
-+									      \
-+	    /* Now we can test with the required version.  */		      \
-+	    if (version < __KFREEBSD_KERNEL_VERSION)			      \
-+	      /* Not sufficent.  */					      \
-+	      FATAL ("FATAL: kernel too old\n");			      \
-+									      \
-+	    GLRO(dl_osversion) = version;				      \
-+          }								      \
++	/* Now we can test with the required version.  */		      \
++	if (__KFREEBSD_KERNEL_VERSION > 0 && 				      \
++	    version < __KFREEBSD_KERNEL_VERSION)   			      \
++	  /* Not sufficent.  */						      \
++	  FATAL ("FATAL: kernel too old\n");				      \
 +      }									      \
++    else if (__KFREEBSD_KERNEL_VERSION > 0)				      \
++      FATAL ("FATAL: cannot determine kernel version\n");		      \
 +  } while (0)
 +
 +static inline uintptr_t __attribute__ ((always_inline))
@@ -7910,8 +7883,94 @@
 +}
 +
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h.orig
+@@ -0,0 +1,83 @@
++/* Operating system specific code  for generic dynamic loader functions.
++   Copyright (C) 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 <string.h>
++#include <fcntl.h>
++#include <sys/sysctl.h>
++#include <sys/utsname.h>
++#include <kernel-features.h>
++
++#ifndef MIN
++# define MIN(a,b) (((a)<(b))?(a):(b))
++#endif
++
++#ifdef SHARED
++/* This is the function used in the dynamic linker to print the fatal error
++   message.  */
++static inline void
++__attribute__ ((__noreturn__))
++dl_fatal (const char *str)
++{
++  _dl_dprintf (2, str);
++  _exit (1);
++}
++#endif
++
++#define DL_SYSDEP_OSCHECK(FATAL)					      \
++  do {									      \
++    /* Test whether the kernel is new enough.  This test is only performed    \
++       if the library is not compiled to run on all kernels.  */	      \
++									      \
++    int version = _dl_discover_osversion ();				      \
++    if (__builtin_expect (version >= 0, 1))				      \
++      {									      \
++	if (__builtin_expect (GLRO(dl_osversion) == 0, 1)		      \
++	    || GLRO(dl_osversion) > version)				      \
++	  GLRO(dl_osversion) = version;					      \
++									      \
++	/* Now we can test with the required version.  */		      \
++	if (__KFREEBSD_KERNEL_VERSION > 0 && 				      \
++	    version < __KFREEBSD_KERNEL_VERSION)   			      \
++	  /* Not sufficent.  */						      \
++	  FATAL ("FATAL: kernel too old\n");				      \
++      }									      \
++    else if (__KFREEBSD_KERNEL_VERSION > 0)				      \
++      FATAL ("FATAL: cannot determine kernel version\n");		      \
++  } while (0)
++
++static inline uintptr_t __attribute__ ((always_inline))
++_dl_setup_stack_chk_guard (void)
++{
++  uintptr_t ret;
++#ifdef ENABLE_STACKGUARD_RANDOMIZE
++  int fd = __open ("/dev/urandom", O_RDONLY);
++  if (fd >= 0)
++    {
++      ssize_t reslen = __read (fd, &ret, sizeof (ret));
++      __close (fd);
++      if (reslen == (ssize_t) sizeof (ret))
++        return ret;
++    }
++#endif
++  ret = 0;
++  unsigned char *p = (unsigned char *) &ret;
++  p[sizeof (ret) - 1] = 255;
++  p[sizeof (ret) - 2] = '\n';
++  return ret;
++}
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-sysdep.c
-@@ -0,0 +1,31 @@
+@@ -0,0 +1,56 @@
 +/* Dynamic linker system dependencies for GNU/kFreeBSD.
 +   Copyright (C) 2008 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -7937,13 +7996,67 @@
 +#include <string.h>
 +#include <fcntl.h>
 +#include <unistd.h>
++#include <sys/sysctl.h>
 +#include <ldsodefs.h>
 +#include <kernel-features.h>
 +
 +#ifdef SHARED
 +# include <elf/dl-sysdep.c>
 +#endif
++
++int
++attribute_hidden
++_dl_discover_osversion (void)
++{
++  int request[2] = { CTL_KERN, KERN_OSRELDATE };
++  size_t len;
++  int version;
++
++  len = sizeof(version);
++  if (__sysctl (request, 2, &version, &len, NULL, 0) < 0)
++    return -1;
++    
++/*
++ *   scheme is:  <major><two digit minor>Rxx
++ *		'R' is 0 if release branch or x.0-CURRENT before RELENG_*_0
++ *		is created, otherwise 1.
++ */
++
++  /* Convert to the GLIBC versioning system */
++  return ((version / 100000) << 16)		/* major */
++	 | (((version % 100000) / 1000) << 8)   /* minor 	0 -  99 */
++	 | ((version % 1000));			/* subrelease 	0 - 199 */ 
++}
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-sysdep.h
+@@ -0,0 +1,26 @@
++/* System-specific settings for dynamic linker code.  Linux version.
++   Copyright (C) 2005, 2008 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_next <dl-sysdep.h>
++
++#ifndef __ASSEMBLER__
++/* Get version of the OS.  */
++extern int _dl_discover_osversion (void) attribute_hidden;
++# define HAVE_DL_DISCOVER_OSVERSION	1
++#endif
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fcntl.c
 @@ -0,0 +1 @@
 +#include <sysdeps/unix/sysv/linux/fcntl.c>
@@ -8281,7 +8394,7 @@
 +weak_alias (__fstatvfs64, fstatvfs64)
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate.c
-@@ -0,0 +1,41 @@
+@@ -0,0 +1,52 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -8304,9 +8417,10 @@
 +#include <unistd.h>
 +#include <sys/types.h>
 +#include <sysdep.h>
++#include <errno.h>
 +
-+/* The real system call has a word of padding before the 64-bit off_t
-+   argument.  */
++extern int __syscall_ftruncate (int __fd, __off_t __length) __THROW;
++libc_hidden_proto (__syscall_ftruncate)
 +extern int __syscall_freebsd6_ftruncate (int __fd, int __unused1,
 +				__off_t __length) __THROW;
 +libc_hidden_proto (__syscall_freebsd6_ftruncate)
@@ -8314,8 +8428,18 @@
 +int
 +__ftruncate (int fd, __off_t length)
 +{
-+  /* We pass 2 arguments in 4 words.  */
-+  return INLINE_SYSCALL (freebsd6_ftruncate, 2, fd, 0, length);
++  int result;
++
++  /* First try the new syscall. */
++  result = INLINE_SYSCALL (ftruncate, 2, fd, length);
++
++#ifndef __ASSUME_FTRUNCATE_SYSCALL
++  if (result == -1 && errno == ENOSYS)
++    /* New syscall not available, us the old one. */
++    result = INLINE_SYSCALL (freebsd6_ftruncate, 3, fd, 0, length);
++#endif
++
++  return result;
 +}
 +
 +weak_alias (__ftruncate, ftruncate)
@@ -11493,7 +11617,7 @@
 +PSEUDO_END (__syscall_fork)
 +libc_hidden_def (__syscall_fork)
 --- /dev/null
-+++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_freebsd6_lseek.S
 @@ -0,0 +1,32 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -11528,6 +11652,41 @@
 +PSEUDO_END(__syscall_freebsd6_lseek)
 +libc_hidden_def (__syscall_freebsd6_lseek)
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S
+@@ -0,0 +1,32 @@
++/* 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.  */
++
++#include <sysdep.h>
++
++/* lseek returns a 64-bit result in %eax, %edx.  This means that in the
++   error case we have to set both %eax and %edx to -1.  */
++
++PSEUDO_NOERRNO(__syscall_lseek, lseek, 3)
++        jnb L(no_error)
++	call SYSCALL_ERROR_LABEL;
++	orl $-1, %edx;
++L(pseudo_end):
++L(no_error):
++	ret
++PSEUDO_END(__syscall_lseek)
++libc_hidden_def (__syscall_lseek)
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysarch.h
 @@ -0,0 +1,81 @@
 +/* Parameters for the architecture specific system call.  i386 version.
@@ -12937,7 +13096,7 @@
 +}
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-features.h
-@@ -0,0 +1,43 @@
+@@ -0,0 +1,75 @@
 +/* Set flags signalling availability of kernel features based on given
 +   kernel version number.
 +   Copyright (C) 2002 Free Software Foundation, Inc.
@@ -12963,10 +13122,10 @@
 +# define __KFREEBSD_KERNEL_VERSION	0
 +#endif
 +
-+/* We assume for __KFREEBSD_KERNEL_VERSION the same encoding used in
-+   osreldate.h.  I.e., the major, minor, and subminor are all
-+   concatenated, with two digits for each.  This means we can do
-+   numeric comparisons.
++/* The encoding for __KFREEBSD_KERNEL_VERSION is defined the following
++   way: the major, minor, and subminor all get a byte with the major
++   number being in the highest byte.  This means we can do numeric
++   comparisons.
 +
 +   In the following we will define certain symbols depending on
 +   whether the describes kernel feature is available in the kernel
@@ -12975,12 +13134,44 @@
 +   introduced.  If somebody cares these values can afterwards be
 +   corrected.  */
 +
-+/* No real-time signals in FreeBSD 5.x or 6.x.  */
-+#define __ASSUME_REALTIME_SIGNALS	0
++/* Real-time signals introduced in FreeBSD 7.x.  */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_REALTIME_SIGNALS	1
++#endif
 +
 +/* Use signals #32, #33, #34 for internal linuxthreads communication */
 +#define PTHREAD_SIGBASE 32
 +
++/* The `ftruncate' syscall was introduced in kFreeBSD 7.0. */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_FTRUNCATE_SYSCALL	1
++#endif
++
++/* The `lseek' syscall was introduced in kFreeBSD 7.0. */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_LSEEK_SYSCALL		1
++#endif
++
++/* The `mmap' syscall was introduced in kFreeBSD 7.0. */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_MMAP_SYSCALL		1
++#endif
++
++/* The `pread' syscall was introduced in kFreeBSD 7.0. */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_PREAD_SYSCALL		1
++#endif
++
++/* The `pwrite' syscall was introduced in kFreeBSD 7.0. */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_PWRITE_SYSCALL	1
++#endif
++
++/* The `truncate' syscall was introduced in kFreeBSD 7.0. */
++#if __KFREEBSD_KERNEL_VERSION >= 0x70000
++# define __ASSUME_TRUNCATE_SYSCALL	1
++#endif
++
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-posix-cpu-timers.h
 @@ -0,0 +1,5 @@
@@ -13051,21 +13242,8 @@
 +}
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/allocrtsig.c
-@@ -0,0 +1,14 @@
-+#if 1
-+
-+#define __SIGRTMIN 65
-+#define __SIGRTMAX 126
+@@ -0,0 +1 @@
 +#include <linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c>
-+
-+#else
-+
-+#include <signal/allocrtsig.c>
-+strong_alias (__libc_current_sigrtmin, __libc_current_sigrtmin_private);
-+strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private);
-+strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private);
-+
-+#endif
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/bits/local_lim.h
 @@ -0,0 +1,48 @@
@@ -13623,7 +13801,7 @@
 +the `llseek' function may be dangerous; use `lseek64' instead.")
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek.c
-@@ -0,0 +1,86 @@
+@@ -0,0 +1,59 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -13648,8 +13826,8 @@
 +#include <sysdep.h>
 +#include <errno.h>
 +
-+/* The real system call has a word of padding before the 64-bit off_t
-+   argument.  */
++extern __off_t __syscall_lseek (int __fd, __off_t __offset, int __whence) __THROW;
++libc_hidden_proto (__syscall_lseek)
 +extern __off_t __syscall_freebsd6_lseek (int __fd, int __unused1, __off_t __offset,
 +				int __whence) __THROW;
 +libc_hidden_proto (__syscall_freebsd6_lseek)
@@ -13657,45 +13835,18 @@
 +__off_t
 +__libc_lseek (int fd, __off_t offset, int whence)
 +{
-+#if 0 /* If the kernel would work right... */
-+  /* We pass 3 arguments in 5 words.  */
-+  return INLINE_SYSCALL (freebsd6_lseek, 3, fd, 0, offset, whence);
-+#else
-+  /* According to POSIX:2001, if the resulting file offset would become
-+     negative, this function has to return an EINVAL error and leave the
-+     file offset unchanged.  But the FreeBSD 4.0 kernel doesn't do this,
-+     so we emulate it.  */
-+  if (offset >= 0)
-+    /* No risk that the file offset could become negative.  */
-+    return INLINE_SYSCALL (freebsd6_lseek, 3, fd, 0, offset, whence);
-+  else
-+    {
-+      /* Test whether the file offset becomes negative.  */
-+      __off_t old_position;
-+      __off_t new_position;
-+      int saved_errno;
++  __off_t result;
 +
-+      saved_errno = errno;
-+      old_position = INLINE_SYSCALL (freebsd6_lseek, 3, fd, 0, 0, SEEK_CUR);
-+      errno = 0;
-+      new_position = INLINE_SYSCALL (freebsd6_lseek, 3, fd, 0, offset, whence);
-+      if (new_position < 0)
-+	{
-+	  if (errno == 0)
-+	    {
-+	      /* The file offset became negative, and the kernel didn't
-+		 notice it.  */
-+	      if (old_position >= 0)
-+		INLINE_SYSCALL (freebsd6_lseek, 3, fd, 0, old_position, SEEK_SET);
-+	      new_position = -1;
-+	      errno = EINVAL;
-+	    }
-+	}
-+      else
-+	errno = saved_errno;
-+      return new_position;
-+    }
++  /* First try the new syscall. */
++  result = INLINE_SYSCALL (lseek, 3, fd, offset, whence);
++
++#ifndef __ASSUME_LSEEK_SYSCALL
++  if (result == -1 && errno == ENOSYS)
++    /* New syscall not available, us the old one. */
++    result = INLINE_SYSCALL (freebsd6_lseek, 4, fd, 0, offset, whence);
 +#endif
++
++  return result;
 +}
 +
 +weak_alias (__libc_lseek, __lseek)
@@ -13815,7 +13966,7 @@
 +hidden_def (__lxstat64)
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap.c
-@@ -0,0 +1,84 @@
+@@ -0,0 +1,86 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -13841,56 +13992,58 @@
 +#include <errno.h>
 +#include <sysdep.h>
 +
-+/* The real system call has a word of padding before the 64-bit off_t
-+   argument.  */
++extern void *__syscall_mmap (void *__addr, size_t __len, int __prot,
++			     int __flags, int __fd, __off_t __offset) __THROW;
++libc_hidden_proto (__syscall_mmap)
 +extern void *__syscall_freebsd6_mmap (void *__addr, size_t __len, int __prot,
 +			     int __flags, int __fd, int __unused1,
 +			     __off_t __offset) __THROW;
 +libc_hidden_proto (__syscall_freebsd6_mmap)
-+
 +extern ssize_t __syscall_freebsd6_pread (int __fd, void *__buf, size_t __nbytes,
 +                                int __unused1, __off_t __offset) __THROW;
++libc_hidden_proto (__syscall_freebsd6_pread)
 +
-+libc_hidden_proto (__syscall_freebsd6_pread)
 +void *
 +__mmap (void *addr, size_t len, int prot, int flags, int fd, __off_t offset)
 +{
 +  void *result;
 +
 +  /* Validity checks not done by the kernel.  */
-+  if ((flags & MAP_FIXED) || (offset != 0))
++  if (offset != 0)
 +    {
 +      int pagesize = __getpagesize ();
-+
-+      if (((flags & MAP_FIXED)
-+	   && (__builtin_expect (pagesize & (pagesize - 1), 0)
-+	       ? (unsigned long) addr % pagesize
-+	       : (unsigned long) addr & (pagesize - 1)))
-+	  || (__builtin_expect (pagesize & (pagesize - 1), 0)
-+	      ? offset % pagesize
-+	      : offset & (pagesize - 1)))
++      if ((__builtin_expect (pagesize & (pagesize - 1), 0)
++        ? offset % pagesize
++	: offset & (pagesize - 1)))
 +	{
 +	  __set_errno (EINVAL);
 +	  return (void *) (-1);
 +	}
 +    }
 +
-+  /* We pass 7 arguments in 8 words.  */
 +  /* for ANON mapping we must pass -1 in place of fd */
 +  if (flags & MAP_ANON)
-+    return INLINE_SYSCALL (freebsd6_mmap, 7, addr, len, prot, flags, -1, 0, offset);
-+  result = INLINE_SYSCALL (freebsd6_mmap, 7, addr, len, prot, flags, fd, 0, offset);
++    fd = -1;
 +
-+  if (result != (void *) (-1) && fd >= 0 && len > 0)
++  /* First try the new syscall. */
++  result = INLINE_SYSCALL (mmap, 6, addr, len, prot, flags, fd, offset);
++
++#ifndef __ASSUME_MMAP_SYSCALL
++  if (result == (void *) (-1) && errno == ENOSYS)
 +    {
-+      /* Force an update of the atime.  POSIX:2001 mandates that this happens
-+	 at some time between the mmap() call and the first page-in.  Since
-+	 the FreeBSD 4.0 kernel doesn't update the atime upon a page-in, we
-+	 do it here.  */
-+      char dummy;
-+
-+      INLINE_SYSCALL (freebsd6_pread, 5, fd, &dummy, 1, 0, offset);
++      /* New syscall not available, us the old one. */
++      result = INLINE_SYSCALL (freebsd6_mmap, 7, addr, len, prot, flags, fd, 0, offset);
++      if (result != (void *) (-1) && fd >= 0 && len > 0)
++	{
++	  /* Force an update of the atime.  POSIX:2001 mandates that this happens
++	  at some time between the mmap() call and the first page-in.  Since
++	  the FreeBSD 6.0 kernel doesn't update the atime upon a page-in, we
++	  do it here.  */
++	  char dummy;
++	  INLINE_SYSCALL (freebsd6_pread, 5, fd, &dummy, 1, 0, offset);
++	}
 +    }
++#endif
 +
 +  return result;
 +}
@@ -15368,6 +15521,254 @@
 +#define sigsuspend_not_cancel(set) \
 +  INLINE_SYSCALL (sigsuspend, 1, set)
 --- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nptl/Implies
+@@ -0,0 +1 @@
++pthread
+--- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nptl/bits/local_lim.h
+@@ -0,0 +1,48 @@
++/* Minimum guaranteed maximum values for system limits.  FreeBSD version.
++   Copyright (C) 1993-1998, 2000, 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.  */
++
++#include <sys/syslimits.h>
++
++/* The number of data keys per process.  */
++#define _POSIX_THREAD_KEYS_MAX	128
++/* This is the value this implementation supports.  */
++#define PTHREAD_KEYS_MAX	1024
++
++/* Controlling the iterations of destructors for thread-specific data.  */
++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS	4
++/* Number of iterations this implementation does.  */
++#define PTHREAD_DESTRUCTOR_ITERATIONS	_POSIX_THREAD_DESTRUCTOR_ITERATIONS
++
++/* The number of threads per process.  */
++#define _POSIX_THREAD_THREADS_MAX	64
++/* This is the value this implementation supports.  */
++#define PTHREAD_THREADS_MAX	1024
++
++/* Maximum amount by which a process can descrease its asynchronous I/O
++   priority level.  */
++#define AIO_PRIO_DELTA_MAX	20
++
++/* Minimum size for a thread.  We are free to choose a reasonable value.  */
++#define PTHREAD_STACK_MIN	16384
++
++/* Maximum number of POSIX timers available.  */
++#define TIMER_MAX	256
++
++/* Maximum number of timer expiration overruns.  */
++#define DELAYTIMER_MAX	2147483647
+--- /dev/null
++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nptl/bits/posix_opt.h
+@@ -0,0 +1,190 @@
++/* Define POSIX options for FreeBSD.
++   Copyright (C) 1996-1997, 1999, 2000, 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.  */
++
++/*
++ * Never include this file directly; use <unistd.h> instead.
++ */
++
++#ifndef	_BITS_POSIX_OPT_H
++#define	_BITS_POSIX_OPT_H	1
++
++/* Job control is supported.  */
++#define	_POSIX_JOB_CONTROL	1
++
++/* Processes have a saved set-user-ID and a saved set-group-ID.  */
++#define	_POSIX_SAVED_IDS	1
++
++/* Priority scheduling is supported.  */
++#define	_POSIX_PRIORITY_SCHEDULING	200112L
++
++/* Synchronizing file data is supported.  */
++#define	_POSIX_SYNCHRONIZED_IO	200112L
++
++/* The fsync function is present.  */
++#define	_POSIX_FSYNC	200112L
++
++/* Mapping of files to memory is supported.  */
++#define	_POSIX_MAPPED_FILES	200112L
++
++/* Locking of all memory is supported.  */
++#define	_POSIX_MEMLOCK	200112L
++
++/* Locking of ranges of memory is supported.  */
++#define	_POSIX_MEMLOCK_RANGE	200112L
++
++/* Setting of memory protections is supported.  */
++#define	_POSIX_MEMORY_PROTECTION	200112L
++
++/* Only root can change owner of file.  */
++#define	_POSIX_CHOWN_RESTRICTED	1
++
++/* `c_cc' member of 'struct termios' structure can be disabled by
++   using the value _POSIX_VDISABLE.  */
++#define	_POSIX_VDISABLE	((unsigned char)'\377')
++
++/* Filenames are not silently truncated.  */
++#define	_POSIX_NO_TRUNC	1
++/* X/Open realtime support is only partially available.  */
++#define _XOPEN_REALTIME	-1
++
++/* X/Open realtime thread support is only partially available.  */
++#define _XOPEN_REALTIME_THREADS	-1
++
++/* Implementation supports `poll' function.  */
++#define	_POSIX_POLL	1
++
++/* Implementation supports `select' and `pselect' functions.  */
++#define	_POSIX_SELECT	1
++
++/* XPG4.2 shared memory is supported.  */
++#define	_XOPEN_SHM	1
++
++/* Tell we have POSIX threads.  */
++#define _POSIX_THREADS	200112L
++
++/* We have the reentrant functions described in POSIX.  */
++#define _POSIX_REENTRANT_FUNCTIONS	1
++#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
++
++/* We provide priority scheduling for threads.  */
++#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
++
++/* We support user-defined stack sizes.  */
++#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
++
++/* We support user-defined stacks.  */
++#define _POSIX_THREAD_ATTR_STACKADDR	200112L
++
++/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
++#define _POSIX_SEMAPHORES	200112L
++
++/* Real-time signals are not available.  */
++#define _POSIX_REALTIME_SIGNALS	-1
++
++/* We support asynchronous I/O.  */
++#define _POSIX_ASYNCHRONOUS_IO	200112L
++#define _POSIX_ASYNC_IO		1
++/* Alternative name for Unix98.  */
++#define _LFS_ASYNCHRONOUS_IO	1
++/* Support for prioritization is not available.  */
++#define _POSIX_PRIORITIZED_IO	-1
++
++/* The LFS support in asynchronous I/O is also available.  */
++#define _LFS64_ASYNCHRONOUS_IO	1
++
++/* The rest of the LFS is also available.  */
++#define _LFS_LARGEFILE		1
++#define _LFS64_LARGEFILE	1
++#define _LFS64_STDIO		1
++
++/* POSIX shared memory objects are implemented.  */
++#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
++
++/* CPU-time clocks somewhere supported.  */
++#define _POSIX_CPUTIME	0
++
++/* We support somewhere the clock also in threads.  */
++#define _POSIX_THREAD_CPUTIME	0
++
++/* GNU libc provides regular expression handling.  */
++#define _POSIX_REGEXP	1
++
++/* Reader/Writer locks are available.  */
++#define _POSIX_READER_WRITER_LOCKS	200112L
++
++/* We have a POSIX shell.  */
++#define _POSIX_SHELL	1
++
++/* We support the Timeouts option.  */
++#define _POSIX_TIMEOUTS	200112L
++
++/* We support spinlocks.  */
++#define _POSIX_SPIN_LOCKS	200112L
++
++/* The `spawn' function family is supported.  */
++#define _POSIX_SPAWN	200112L
++
++/* We have POSIX timers.  */
++#define _POSIX_TIMERS	200112L
++
++/* The barrier functions are available.  */
++#define _POSIX_BARRIERS	200112L
++
++/* POSIX message queues are not available.  */
++#define _POSIX_MESSAGE_PASSING	-1
++
++/* Thread process-shared synchronization is not supported.  */
++#define _POSIX_THREAD_PROCESS_SHARED	-1
++
++/* The monotonic clock is available.  */
++#define _POSIX_MONOTONIC_CLOCK	200112L
++
++/* The clock selection interfaces are not available.  */
++#define _POSIX_CLOCK_SELECTION	-1
++
++/* Advisory information interfaces are not available.  */
++#define _POSIX_ADVISORY_INFO	-1
++
++/* IPv6 support is available.  */
++#define _POSIX_IPV6	200112L
++
++/* Raw socket support is available.  */
++#define _POSIX_RAW_SOCKETS	200112L
++
++/* We have at least one terminal.  */
++#define _POSIX2_CHAR_TERM	200112L
++
++/* Neither process nor thread sporadic server interfaces is available.  */
++#define _POSIX_SPORADIC_SERVER	-1
++#define _POSIX_THREAD_SPORADIC_SERVER	-1
++
++/* trace.h is not available.  */
++#define _POSIX_TRACE	-1
++#define _POSIX_TRACE_EVENT_FILTER	-1
++#define _POSIX_TRACE_INHERIT	-1
++#define _POSIX_TRACE_LOG	-1
++
++/* Typed memory objects are not available.  */
++#define _POSIX_TYPED_MEMORY_OBJECTS	-1
++
++/* No support for priority inheritance or protection.  */
++#define _POSIX_THREAD_PRIO_INHERIT	-1
++#define _POSIX_THREAD_PRIO_PROTECT	-1
++
++#endif /* bits/posix_opt.h */
+--- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ntp_gettime.c
 @@ -0,0 +1,62 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
@@ -15731,7 +16132,7 @@
 +#endif /* !_PATHS_H_ */
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pread.c
-@@ -0,0 +1,50 @@
+@@ -0,0 +1,65 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -15755,9 +16156,11 @@
 +#include <sys/types.h>
 +#include <sysdep.h>
 +#include <sysdep-cancel.h>
++#include <errno.h>
 +
-+/* The real system call has a word of padding before the 64-bit off_t
-+   argument.  */
++extern ssize_t __syscall_pread (int __fd, void *__buf, size_t __nbytes,
++				__off_t __offset) __THROW;
++libc_hidden_proto(__syscall_pread)
 +extern ssize_t __syscall_freebsd6_pread (int __fd, void *__buf, size_t __nbytes,
 +				int __unused1, __off_t __offset) __THROW;
 +libc_hidden_proto(__syscall_freebsd6_pread)
@@ -15765,13 +16168,26 @@
 +ssize_t
 +__libc_pread (int fd, void *buf, size_t nbytes, __off_t offset)
 +{
-+  /* We pass 5 arguments in 6 words.  */
-+  if (SINGLE_THREAD_P)
-+    return INLINE_SYSCALL (freebsd6_pread, 5, fd, buf, nbytes, 0, offset);
++  ssize_t result;
++  int oldtype;
 +
-+  int oldtype = LIBC_CANCEL_ASYNC ();
-+  ssize_t result = INLINE_SYSCALL (freebsd6_pread, 5, fd, buf, nbytes, 0, offset);
-+  LIBC_CANCEL_RESET (oldtype);
++  if (!SINGLE_THREAD_P)
++    {
++      oldtype = LIBC_CANCEL_ASYNC ();
++    }
++
++  /* First try the new syscall. */
++  result = INLINE_SYSCALL (pread, 4, fd, buf, nbytes, offset);
++#ifndef __ASSUME_PREAD_SYSCALL
++  if (result == -1 && errno == ENOSYS)
++    /* New syscall not available, us the old one. */
++    result = INLINE_SYSCALL (freebsd6_pread, 5, fd, buf, nbytes, 0, offset);
++#endif
++
++  if (!SINGLE_THREAD_P)
++    {
++      LIBC_CANCEL_RESET (oldtype);
++    }
 +  return result;
 +}
 +
@@ -16016,7 +16432,7 @@
 +weak_alias (__ptsname_r, ptsname_r)
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite.c
-@@ -0,0 +1,50 @@
+@@ -0,0 +1,68 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -16040,9 +16456,11 @@
 +#include <sys/types.h>
 +#include <sysdep.h>
 +#include <sysdep-cancel.h>
++#include <errno.h>
 +
-+/* The real system call has a word of padding before the 64-bit off_t
-+   argument.  */
++extern ssize_t __syscall_pwrite (int __fd, const void *__buf, size_t __nbytes,
++				 __off_t __offset) __THROW;
++libc_hidden_proto(__syscall_pwrite)
 +extern ssize_t __syscall_freebsd6_pwrite (int __fd, const void *__buf, size_t __nbytes,
 +				 int __unused1, __off_t __offset) __THROW;
 +libc_hidden_proto(__syscall_freebsd6_pwrite)
@@ -16050,12 +16468,28 @@
 +ssize_t
 +__libc_pwrite (int fd, const void *buf, size_t nbytes, __off_t offset)
 +{
-+  /* We pass 5 arguments in 6 words.  */
++  ssize_t result;
++
 +  if (SINGLE_THREAD_P)
-+    return INLINE_SYSCALL (freebsd6_pwrite, 5, fd, buf, nbytes, 0, offset);
++    {
++      /* First try the new syscall. */
++      result = INLINE_SYSCALL (pwrite, 4, fd, buf, nbytes, offset);
++#ifndef __ASSUME_PREAD_SYSCALL
++      if (result == -1 && errno == ENOSYS)
++        /* New syscall not available, us the old one. */
++        result = INLINE_SYSCALL (freebsd6_pwrite, 5, fd, buf, nbytes, 0, offset);
++#endif
++      return result;
++    }
 +
 +  int oldtype = LIBC_CANCEL_ASYNC ();
-+  ssize_t result = INLINE_SYSCALL (freebsd6_pwrite, 5, fd, buf, nbytes, 0, offset);
++  /* First try the new syscall. */
++  result = INLINE_SYSCALL (pwrite, 4, fd, buf, nbytes, offset);
++#ifndef __ASSUME_PREAD_SYSCALL
++  if (result == -1 && errno == ENOSYS)
++    /* New syscall not available, us the old one. */
++    result = INLINE_SYSCALL (freebsd6_pwrite, 5, fd, buf, nbytes, 0, offset);
++#endif
 +  LIBC_CANCEL_RESET (oldtype);
 +  return result;
 +}
@@ -19309,166 +19743,171 @@
 +#endif
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls.list
-@@ -0,0 +1,159 @@
-+# File name	Caller	Syscall name		# args	Strong name	Weak names
+@@ -0,0 +1,164 @@
++# File name		Caller	Syscall name		# args		Strong name	Weak names
++acl_aclcheck_fd		-	acl_aclcheck_fd		i:iip		__acl_aclcheck_fd
++acl_aclcheck_file	-	acl_aclcheck_file	i:sip		__acl_aclcheck_file
++acl_delete_fd		-	acl_delete_fd		i:ii		__acl_delete_fd
++acl_delete_file		-	acl_delete_file		i:si		__acl_delete_file
++acl_get_fd		-	acl_get_fd		i:iip		__acl_get_fd
++acl_get_file		-	acl_get_file		i:sip		__acl_get_file
++acl_set_fd		-	acl_set_fd		i:iip		__acl_set_fd
++acl_set_file		-	acl_set_file		i:sip		__acl_set_file
++sys_aio_cancel		-	aio_cancel		i:ip		__syscall_aio_cancel
++sys_aio_error		-	aio_error		i:p		__syscall_aio_error
++sys_aio_read		-	aio_read		i:p		__syscall_aio_read
++sys_aio_return		-	aio_return		i:p		__syscall_aio_return
++sys_aio_suspend		-	aio_suspend		i:bnP		__syscall_aio_suspend
++sys_aio_waitcomplete	-	aio_waitcomplete	i:pp		__syscall_aio_waitcomplete
++sys_aio_write		-	aio_write		i:p		__syscall_aio_write
++sys_clock_getres	-	clock_getres		i:ip		__syscall_clock_getres
++sys_clock_gettime	-	clock_gettime		i:ip		__syscall_clock_gettime
++sys_clock_settime	-	clock_settime		i:ip		__syscall_clock_settime
++sys_execve		-	execve			i:ppp		__syscall_execve
++extattrctl		-	extattrctl		i:sisI		extattrctl
++extattr_delete_file	-	extattr_delete_file	i:ss		extattr_delete_file
++extattr_get_file	-	extattr_get_file	i:ssbn		extattr_get_file
++extattr_set_file	-	extattr_set_file	i:ssbn		extattr_set_file
++fhopen			-	fhopen			i:pi		fhopen
++sys_fork		-	fork			i:		__syscall_fork	fork
++sys_fhstat		-	fhstat			i:pp		__syscall_fhstat
++sys_getfsstat		-	getfsstat		i:pii		__syscall_getfsstat
++sys_statfs		-	statfs			i:sp		__syscall_statfs
++sys_fstatfs		-	fstatfs			i:ip		__syscall_fstatfs
++sys_fhstatfs		-	fhstatfs		i:pp		__syscall_fhstatfs
++sys_fstat		-	fstat			i:ip		__syscall_fstat
++sys_ftruncate		-	ftruncate		i:ii		__syscall_ftruncate
++sys_freebsd6_ftruncate	-	freebsd6_ftruncate	i:iii		__syscall_freebsd6_ftruncate
++futimes			-	futimes			i:ip		__futimes futimes
++sys_getcwd		-	getcwd			i:bn		__syscall_getcwd
++sys_getdents		-	getdents		i:ibn		__syscall_getdents
++sys_getdirentries	-	getdirentries		i:ibnP		__syscall_getdirentries
++getfh			-	getfh			i:sp		getfh
++sys_getlogin		-	getlogin		i:bn		__syscall_getlogin
++getpgid			-	getpgid			i:i		__getpgid __getpgid_internal getpgid
++getpgrp			-	getpgrp			i:		getpgrp
++getresgid		-	getresgid		i:ppp		getresgid
++getresuid		-	getresuid		i:ppp		getresuid
++getrlimit		-	getrlimit		i:ip		__getrlimit getrlimit getrlimit64
++getsid			-	getsid			i:i		getsid
++issetugid		-	issetugid		i:		issetugid
++jail			-	jail			i:p		jail
++kldfind			-	kldfind			i:s		kldfind
++kldfirstmod		-	kldfirstmod		i:i		kldfirstmod
++kldload			-	kldload			i:s		kldload
++kldnext			-	kldnext			i:i		kldnext
++kldstat			-	kldstat			i:ip		kldstat
++kldsym			-	kldsym			i:iip		kldsym
++kldunload		-	kldunload		i:i		kldunload
++kldunloadf		-	kldunloadf		i:ii		kldunloadf
++ktrace			-	ktrace			i:siii		ktrace
++lchmod			-	lchmod			i:si		lchmod
++lchown			-	lchown			i:sii		__lchown lchown
++sys_lio_listio		-	lio_listio		i:ibnP		__syscall_lio_listio
++sys_lseek		EXTRA	lseek			i:iii		__syscall_lseek
++sys_freebsd6_lseek	EXTRA	freebsd6_lseek		i:iiii		__syscall_freebsd6_lseek
++sys_lstat		-	lstat			i:sp		__syscall_lstat
++lutimes			-	lutimes			i:sp		__lutimes lutimes
++posix_madvise		-	madvise			i:pii		posix_madvise
++minherit		-	minherit		i:aii		minherit
++mincore			-	mincore			i:anV		mincore
++mlock			-	mlock			i:bn		mlock
++mlockall		-	mlockall		i:i		mlockall
++mkfifo			-	mkfifo			i:si		__mkfifo mkfifo
++sys_mknod		-	mknod			i:sii		__syscall_mknod
++sys_mmap		-	mmap			b:aniiii	__syscall_mmap
++sys_freebsd6_mmap	-	freebsd6_mmap		b:aniiiii	__syscall_freebsd6_mmap
++sys_munmap		-	munmap			i:pi		__syscall_munmap
++modfind			-	modfind			i:s		modfind
++modfnext		-	modfnext		i:i		modfnext
++modnext			-	modnext			i:i		modnext
++modstat			-	modstat			i:ip		modstat
++mount			-	mount			i:ssiP		mount
++msgctl			-	msgctl			i:iip		msgctl
++msgget			-	msgget			i:ii		msgget
++msgrcv			-	msgrcv			Ci:ibnii	__libc_msgrcv msgrcv
++msgsnd			-	msgsnd			Ci:ibni		__libc_msgsnd msgsnd
++munlock			-	munlock			i:ai		munlock
++munlockall		-	munlockall		i:		munlockall
++nanosleep		-	nanosleep		Ci:pp		__libc_nanosleep __nanosleep nanosleep
++nmount			-	nmount			i:pii		nmount
++sys_nfstat		-	nfstat			i:ip		__syscall_nfstat
++sys_nlstat		-	nlstat			i:sp		__syscall_nlstat
++sys_nstat		-	nstat			i:sp		__syscall_nstat
++ntp_adjtime		-	ntp_adjtime		i:p		ntp_adjtime
++obreak			-	obreak			i:a		__syscall_obreak
++sys_open		-	open			i:siv		__syscall_open
++poll			-	poll			Ci:pii		__poll poll
++sys_pread		-	pread			i:ibni		__syscall_pread
++sys_freebsd6_pread	-	freebsd6_pread		i:ibnii		__syscall_freebsd6_pread
++sys_ptrace		-	ptrace			i:iipi		__syscall_ptrace
++sys_pwrite		-	pwrite			i:ibni		__syscall_pwrite
++sys_freebsd6_pwrite	-	freebsd6_pwrite		i:ibnii		__syscall_freebsd6_pwrite
++quotactl		-	quotactl		i:siip		quotactl
++sys_readv		-	readv			i:ipi		__syscall_readv
++rfork			-	rfork			i:i		__rfork rfork
++rtprio			-	rtprio			i:iip		__rtprio rtprio
++sched_gets		-	sched_getscheduler	i:i		__sched_getscheduler sched_getscheduler
++sched_primax		-	sched_get_priority_max	i:i		__sched_get_priority_max sched_get_priority_max
++sched_primin		-	sched_get_priority_min	i:i		__sched_get_priority_min sched_get_priority_min
++sched_rr_gi		-	sched_rr_get_interval	i:ip		__sched_rr_get_interval sched_rr_get_interval
++sched_setp		-	sched_setparam		i:ip		__sched_setparam sched_setparam
++sched_sets		-	sched_setscheduler	i:iip		__sched_setscheduler sched_setscheduler
++sched_yield		-	sched_yield		i:		__sched_yield sched_yield
++semget			-	semget			i:iii		semget
++semop			-	semop			i:ipi		semop
++bsd_sendfile		-	sendfile		i:iiiippi	bsd_sendfile
++setegid			-	setegid			i:i		setegid
++seteuid			-	seteuid			i:i		seteuid
++setgid			-	setgid			i:i		__setgid setgid
++sys_setlogin		-	setlogin		i:s		__syscall_setlogin
++setpgid			-	setpgid			i:ii		__setpgid setpgid
++setresgid		-	setresgid		i:iii		setresgid
++setresuid		-	setresuid		i:iii		setresuid
++setrlimit		-	setrlimit		i:ip		__setrlimit setrlimit setrlimit64
++setsid			-	setsid			i:		__setsid setsid
++setuid			-	setuid			i:i		__setuid setuid
++shmat			-	shmat			i:iai		shmat
++shmctl			-	shmctl			i:iip		shmctl
++shmdt			-	shmdt			i:a		shmdt
++shmget			-	shmget			i:iii		shmget
++sys_sigaction		-	sigaction		i:ipp		__syscall_sigaction
++sigpending		-	sigpending		i:p		sigpending
++sigprocmask		-	sigprocmask		i:iPP		__sigprocmask sigprocmask
++sigsuspend		-	sigsuspend		Ci:p		__sigsuspend sigsuspend
++sigwaitinfo		-	sigwaitinfo		Ci:pp		__sigwaitinfo sigwaitinfo
++sigtimedwait		-	sigtimedwait		Ci:ppP		__sigtimedwait sigtimedwait
++sys_stat		-	stat			i:sp		__syscall_stat
++sysarch			-	sysarch			i:ip		__sysarch sysarch
++sysctl			-	sysctl			i:pibNbn	__sysctl sysctl
++sys_truncate		-	truncate		i:sii		__syscall_truncate
++sys_freebsd6_truncate	-	freebsd6_truncate	i:si		__syscall_freebsd6_truncate
++undelete		-	undelete		i:s		undelete
++unmount			-	unmount			i:si		unmount
++utrace			-	utrace			i:bn		utrace
++sys_writev		-	writev			i:ipi		__syscall_writev
++yield			-	yield			i:		__syscall_yield
++wait4			-	wait4			i:iWiP		__syscall_wait4 __wait4	wait4
++sys_close		-	close			i:i		__syscall_close
++sys_fcntl		-	fcntl			i:iiF		__syscall_fcntl
++sys_write		-	write			i:ibn		__syscall_write
++sys_read		-	read			i:ibn		__syscall_read
++sys_connect		-	connect			i:ipi		__syscall_connect
++sys_bind		-	bind			i:ipi		__syscall_bind
++sys_sendto		-	sendto			i:ibnibn	__syscall_sendto
++sys_nanosleep		EXTRA	nanosleep		i:pp		__syscall_nanosleep
++sys_sigsuspend		EXTRA	sigsuspend		i:p		__syscall_sigsuspend
++swapcontext		-	swapcontext		i:pp		__swapcontext swapcontext
++swapon			-	swapon			i:s		swapon
++swapoff			-	swapoff			i:s		swapoff
++getcontext		-	getcontext		i:p		__getcontext getcontext
++setcontext		-	setcontext		i:p		__setcontext setcontext
++kqueue			EXTRA	kqueue			i:		__kqueue kqueue
++kevent			EXTRA	kevent			i:ipipip	__kevent kevent
++sys_umtx		-	_umtx_op		i:piipp		__syscall__umtx_op
++sys_cpuset_getaffinity	-	cpuset_getaffinity	i:iiiip		__syscall_cpuset_getaffinity
++sys_cpuset_setaffinity	-	cpuset_setaffinity	i:iiiip		__syscall_cpuset_setaffinity
 +
-+acl_aclcheck_fd	-	acl_aclcheck_fd		i:iip	__acl_aclcheck_fd
-+acl_aclcheck_file -	acl_aclcheck_file	i:sip	__acl_aclcheck_file
-+acl_delete_fd	-	acl_delete_fd		i:ii	__acl_delete_fd
-+acl_delete_file	-	acl_delete_file		i:si	__acl_delete_file
-+acl_get_fd	-	acl_get_fd		i:iip	__acl_get_fd
-+acl_get_file	-	acl_get_file		i:sip	__acl_get_file
-+acl_set_fd	-	acl_set_fd		i:iip	__acl_set_fd
-+acl_set_file	-	acl_set_file		i:sip	__acl_set_file
-+sys_aio_cancel	-	aio_cancel		i:ip	__syscall_aio_cancel
-+sys_aio_error	-	aio_error		i:p	__syscall_aio_error
-+sys_aio_read	-	aio_read		i:p	__syscall_aio_read
-+sys_aio_return	-	aio_return		i:p	__syscall_aio_return
-+sys_aio_suspend	-	aio_suspend		i:bnP	__syscall_aio_suspend
-+sys_aio_waitcomplete -	aio_waitcomplete	i:pp	__syscall_aio_waitcomplete
-+sys_aio_write	-	aio_write		i:p	__syscall_aio_write
-+sys_clock_getres -	clock_getres		i:ip	__syscall_clock_getres
-+sys_clock_gettime -	clock_gettime		i:ip	__syscall_clock_gettime
-+sys_clock_settime -	clock_settime		i:ip	__syscall_clock_settime
-+sys_execve	-	execve			i:ppp	__syscall_execve
-+extattrctl	-	extattrctl		i:sisI	extattrctl
-+extattr_delete_file -	extattr_delete_file	i:ss	extattr_delete_file
-+extattr_get_file -	extattr_get_file	i:ssbn	extattr_get_file
-+extattr_set_file -	extattr_set_file	i:ssbn	extattr_set_file
-+fhopen		-	fhopen			i:pi	fhopen
-+sys_fork	-	fork			i:	__syscall_fork fork
-+sys_fhstat	-	fhstat			i:pp	__syscall_fhstat
-+sys_getfsstat	-	getfsstat		i:pii	__syscall_getfsstat
-+sys_statfs	-	statfs			i:sp	__syscall_statfs
-+sys_fstatfs	-	fstatfs			i:ip	__syscall_fstatfs
-+sys_fhstatfs	-	fhstatfs		i:pp	__syscall_fhstatfs
-+sys_fstat	-	fstat			i:ip	__syscall_fstat
-+sys_ftruncate	-	freebsd6_ftruncate	i:iii	__syscall_freebsd6_ftruncate
-+futimes		-	futimes			i:ip	__futimes	futimes
-+sys_getcwd	-	getcwd			i:bn	__syscall_getcwd
-+sys_getdents	-	getdents		i:ibn	__syscall_getdents
-+sys_getdirentries -	getdirentries		i:ibnP	__syscall_getdirentries
-+getfh		-	getfh			i:sp	getfh
-+sys_getlogin	-	getlogin		i:bn	__syscall_getlogin
-+getpgid		-	getpgid			i:i	__getpgid	__getpgid_internal getpgid
-+getpgrp		-	getpgrp			i:	getpgrp
-+getresgid	-	getresgid		i:ppp	getresgid
-+getresuid	-	getresuid		i:ppp	getresuid
-+getrlimit	-	getrlimit		i:ip	__getrlimit	getrlimit getrlimit64
-+getsid		-	getsid			i:i	getsid
-+issetugid	-	issetugid		i:	issetugid
-+jail		-	jail			i:p	jail
-+kldfind		-	kldfind			i:s	kldfind
-+kldfirstmod	-	kldfirstmod		i:i	kldfirstmod
-+kldload		-	kldload			i:s	kldload
-+kldnext		-	kldnext			i:i	kldnext
-+kldstat		-	kldstat			i:ip	kldstat
-+kldsym		-	kldsym			i:iip	kldsym
-+kldunload	-	kldunload		i:i	kldunload
-+kldunloadf	-	kldunloadf		i:ii	kldunloadf
-+ktrace		-	ktrace			i:siii	ktrace
-+lchmod		-	lchmod			i:si	lchmod
-+lchown		-	lchown			i:sii	__lchown	lchown
-+sys_lio_listio	-	lio_listio		i:ibnP	__syscall_lio_listio
-+sys_lseek	-	freebsd6_lseek		i:iiii	__syscall_freebsd6_lseek
-+sys_lstat	-	lstat			i:sp	__syscall_lstat
-+lutimes		-	lutimes			i:sp	__lutimes	lutimes
-+posix_madvise	-	madvise			i:pii	posix_madvise
-+minherit	-	minherit		i:aii	minherit
-+mincore		-	mincore			i:anV	mincore
-+mlock		-	mlock			i:bn	mlock
-+mlockall	-	mlockall		i:i	mlockall
-+mkfifo		-	mkfifo			i:si	__mkfifo	mkfifo
-+sys_mknod	-	mknod			i:sii	__syscall_mknod
-+sys_mmap	-	freebsd6_mmap		b:aniiiii __syscall_freebsd6_mmap
-+sys_munmap	munmap	munmap			i:pi	__syscall_munmap
-+modfind		-	modfind			i:s	modfind
-+modfnext	-	modfnext		i:i	modfnext
-+modnext		-	modnext			i:i	modnext
-+modstat		-	modstat			i:ip	modstat
-+mount		-	mount			i:ssiP	mount
-+msgctl		-	msgctl			i:iip	msgctl
-+msgget		-	msgget			i:ii	msgget
-+msgrcv		-	msgrcv			Ci:ibnii	__libc_msgrcv	msgrcv
-+msgsnd		-	msgsnd			Ci:ibni	__libc_msgsnd	msgsnd
-+munlock		-	munlock			i:ai	munlock
-+munlockall	-	munlockall		i:	munlockall
-+nanosleep	-	nanosleep		Ci:pp	__libc_nanosleep __nanosleep nanosleep
-+nmount		-	nmount			i:pii	nmount
-+sys_nfstat	-	nfstat			i:ip	__syscall_nfstat
-+sys_nlstat	-	nlstat			i:sp	__syscall_nlstat
-+sys_nstat	-	nstat			i:sp	__syscall_nstat
-+ntp_adjtime	-	ntp_adjtime		i:p	ntp_adjtime
-+obreak		-	obreak			i:a	__syscall_obreak
-+sys_open	-	open			i:siv	__syscall_open
-+poll		-	poll			Ci:pii	__poll		poll
-+sys_pread	-	freebsd6_pread		i:ibnii	__syscall_freebsd6_pread
-+sys_ptrace	-	ptrace			i:iipi	__syscall_ptrace
-+sys_pwrite	-	freebsd6_pwrite		i:ibnii	__syscall_freebsd6_pwrite
-+quotactl	-	quotactl		i:siip	quotactl
-+sys_readv	-	readv			i:ipi	__syscall_readv
-+rfork		-	rfork			i:i	__rfork		rfork
-+rtprio		-	rtprio			i:iip	__rtprio	rtprio
-+sched_gets	-	sched_getscheduler	i:i	__sched_getscheduler sched_getscheduler
-+sched_primax	-	sched_get_priority_max	i:i	__sched_get_priority_max sched_get_priority_max
-+sched_primin	-	sched_get_priority_min	i:i	__sched_get_priority_min sched_get_priority_min
-+sched_rr_gi	-	sched_rr_get_interval	i:ip	__sched_rr_get_interval sched_rr_get_interval
-+sched_setp	-	sched_setparam		i:ip	__sched_setparam sched_setparam
-+sched_sets	-	sched_setscheduler	i:iip	__sched_setscheduler sched_setscheduler
-+sched_yield	-	sched_yield		i:	__sched_yield sched_yield
-+semget		-	semget			i:iii	semget
-+semop		-	semop			i:ipi	semop
-+bsd_sendfile	-	sendfile		i:iiiippi bsd_sendfile
-+setegid		-	setegid			i:i	setegid
-+seteuid		-	seteuid			i:i	seteuid
-+setgid		-	setgid			i:i	__setgid	setgid
-+sys_setlogin	-	setlogin		i:s	__syscall_setlogin
-+setpgid		-	setpgid			i:ii	__setpgid	setpgid
-+setresgid	-	setresgid		i:iii	setresgid
-+setresuid	-	setresuid		i:iii	setresuid
-+setrlimit	-	setrlimit		i:ip	__setrlimit	setrlimit setrlimit64
-+setsid		-	setsid			i:	__setsid	setsid
-+setuid		-	setuid			i:i	__setuid	setuid
-+shmat		-	shmat			i:iai	shmat
-+shmctl		-	shmctl			i:iip	shmctl
-+shmdt		-	shmdt			i:a	shmdt
-+shmget		-	shmget			i:iii	shmget
-+sys_sigaction	-	sigaction		i:ipp   __syscall_sigaction
-+sigpending	-	sigpending		i:p	sigpending
-+sigprocmask	-	sigprocmask		i:iPP	__sigprocmask	sigprocmask
-+sigsuspend	-	sigsuspend		Ci:p	__sigsuspend	sigsuspend
-+sigwaitinfo	-	sigwaitinfo		Ci:pp	__sigwaitinfo	sigwaitinfo
-+sigtimedwait	-	sigtimedwait		Ci:ppP	__sigtimedwait	sigtimedwait
-+sys_stat	-	stat			i:sp	__syscall_stat
-+sysarch		-	sysarch			i:ip	__sysarch	sysarch
-+sysctl		-	sysctl			i:pibNbn __sysctl	sysctl
-+sys_truncate	-	freebsd6_truncate	i:sii	__syscall_freebsd6_truncate
-+undelete	-	undelete		i:s	undelete
-+unmount		-	unmount			i:si	unmount
-+utrace		-	utrace			i:bn	utrace
-+sys_writev	-	writev			i:ipi	__syscall_writev
-+yield		-	yield			i:	__syscall_yield
-+wait4		-       wait4                   i:iWiP  __syscall_wait4	__wait4	wait4
-+sys_close      	-       close                   i:i     __syscall_close
-+sys_fcntl       -       fcntl                   i:iiF   __syscall_fcntl
-+sys_write       -       write                   i:ibn   __syscall_write
-+sys_read        -       read                    i:ibn   __syscall_read
-+sys_connect	-       connect	                i:ipi	__syscall_connect
-+sys_bind        -       bind                    i:ipi   __syscall_bind
-+sys_sendto      -       sendto          	i:ibnibn __syscall_sendto
-+sys_nanosleep	EXTRA	nanosleep		i:pp	__syscall_nanosleep
-+sys_sigsuspend	EXTRA	sigsuspend		i:p	__syscall_sigsuspend
-+swapcontext	-	swapcontext		i:pp	__swapcontext	swapcontext
-+swapon		-	swapon			i:s	swapon
-+swapoff		-	swapoff			i:s	swapoff
-+getcontext	-	getcontext		i:p	__getcontext	getcontext
-+setcontext	-	setcontext		i:p	__setcontext	setcontext
-+kqueue		EXTRA	kqueue			i:	__kqueue	kqueue
-+kevent		EXTRA	kevent			i:ipipip	__kevent	kevent
-+sys_umtx	-	_umtx_op		i:piipp	__syscall__umtx_op
-+sys_cpuset_getaffinity - cpuset_getaffinity	i:iiiip	__syscall_cpuset_getaffinity
-+sys_cpuset_setaffinity - cpuset_setaffinity	i:iiiip	__syscall_cpuset_setaffinity
-+
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sysconf.c
 @@ -0,0 +1,50 @@
@@ -19674,7 +20113,7 @@
 +}
 --- /dev/null
 +++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate.c
-@@ -0,0 +1,41 @@
+@@ -0,0 +1,52 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Bruno Haible <bruno@clisp.org>, 2002.
@@ -19697,9 +20136,10 @@
 +#include <unistd.h>
 +#include <sys/types.h>
 +#include <sysdep.h>
++#include <errno.h>
 +
-+/* The real system call has a word of padding before the 64-bit off_t
-+   argument.  */
++extern int __syscall_truncate (const char *__file, __off_t __length) __THROW;
++libc_hidden_proto (__syscall_truncate)
 +extern int __syscall_freebsd6_truncate (const char *__file, int __unused1,
 +			       __off_t __length) __THROW;
 +libc_hidden_proto (__syscall_freebsd6_truncate)
@@ -19707,8 +20147,18 @@
 +int
 +__truncate (const char *file, __off_t length)
 +{
-+  /* We pass 2 arguments in 4 words.  */
-+  return INLINE_SYSCALL (freebsd6_truncate, 2, file, 0, length);
++  int result;
++
++  /* First try the new syscall. */
++  result = INLINE_SYSCALL (truncate, 2, file, length);
++
++#ifndef __ASSUME_TRUNCATE_SYSCALL
++  if (result == -1 && errno == ENOSYS)
++    /* New syscall not available, us the old one. */
++    result = INLINE_SYSCALL (freebsd6_truncate, 3, file, 0, length);
++#endif
++
++  return result;
 +}
 +
 +weak_alias (__truncate, truncate)

Modified: glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-amd64
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-amd64	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-amd64	2009-05-26 07:05:24 UTC (rev 3537)
@@ -1,3 +1,4 @@
+kfreebsd/local-config_h_in.patch
 kfreebsd/local-ftw.diff
 kfreebsd/local-linuxthreads29.diff
 kfreebsd/local-memusage_no_mremap.diff

Modified: glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-i386
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-i386	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/patches/series.kfreebsd-i386	2009-05-26 07:05:24 UTC (rev 3537)
@@ -1,3 +1,4 @@
+kfreebsd/local-config_h_in.patch
 kfreebsd/local-ftw.diff
 kfreebsd/local-linuxthreads29.diff
 kfreebsd/local-memusage_no_mremap.diff

Modified: glibc-package/branches/eglibc-2.10/debian/sysdeps/kfreebsd.mk
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/sysdeps/kfreebsd.mk	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/sysdeps/kfreebsd.mk	2009-05-26 07:05:24 UTC (rev 3537)
@@ -1,5 +1,5 @@
 EGLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*)
-MIN_KERNEL_SUPPORTED := 5.4.0
+MIN_KERNEL_SUPPORTED := 6.0.0
 libc = libc0.1
 
 # Linuxthreads Config

Modified: glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i486-kfreebsd-gnu-libc
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i486-kfreebsd-gnu-libc	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i486-kfreebsd-gnu-libc	2009-05-26 07:05:24 UTC (rev 3537)
@@ -6,6 +6,7 @@
 annexc.out, Error 1 (ignored)
 check-localplt.out, Error 1
 tst-aio10.out, Error 1
+tst-aio4.out, Error 1
 tst-aio9.out, Error 1
 tst-chk1.out, Error 1
 tst-chk2.out, Error 1
@@ -14,9 +15,6 @@
 tst-chk5.out, Error 1
 tst-chk6.out, Error 1
 tst-cpuclock2.out, Error 1
-tst-cputimer1.o, Error 1
-tst-cputimer2.o, Error 1
-tst-cputimer3.o, Error 1
 tst-fdopendir.o, Error 1
 tst-lfschk1.out, Error 1
 tst-lfschk2.out, Error 1
@@ -28,8 +26,6 @@
 tst-pselect.out, Error 1
 tst-readlinkat.out, Error 1
 tst-timer.out, Error 139
-tst-timer2.o, Error 1
-tst-timer4.o, Error 1
-tst-timer5.o, Error 1
+tst-timer4.out, Error 1
 tst-ttyname_r.out, Error 1
 tst-waitid.out, Error 1

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-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i386	2009-05-26 07:05:24 UTC (rev 3537)
@@ -8,6 +8,7 @@
 test-ifaddrs.out, Error 1
 test_ifindex.out, Error 1
 tst-aio10.out, Error 1
+tst-aio4.out, Error 1
 tst-aio9.out, Error 1
 tst-chk1.out, Error 1
 tst-chk2.out, Error 1
@@ -16,9 +17,7 @@
 tst-chk5.out, Error 1
 tst-chk6.out, Error 1
 tst-cpuclock2.out, Error 1
-tst-cputimer1.o, Error 1
-tst-cputimer2.o, Error 1
-tst-cputimer3.o, Error 1
+tst-cputimer2.out, Error 1
 tst-fdopendir.o, Error 1
 tst-lfschk1.out, Error 1
 tst-lfschk2.out, Error 1
@@ -30,8 +29,6 @@
 tst-pselect.out, Error 1
 tst-readlinkat.out, Error 1
 tst-timer.out, Error 139
-tst-timer2.o, Error 1
-tst-timer4.o, Error 1
-tst-timer5.o, Error 1
+tst-timer4.out, Error 1
 tst-ttyname_r.out, Error 1
 tst-waitid.out, Error 1

Modified: glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i686
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i686	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-i686-kfreebsd-i686	2009-05-26 07:05:24 UTC (rev 3537)
@@ -6,6 +6,7 @@
 annexc.out, Error 1 (ignored)
 check-localplt.out, Error 1
 tst-aio10.out, Error 1
+tst-aio4.out, Error 1
 tst-aio9.out, Error 1
 tst-chk1.out, Error 1
 tst-chk2.out, Error 1
@@ -14,9 +15,6 @@
 tst-chk5.out, Error 1
 tst-chk6.out, Error 1
 tst-cpuclock2.out, Error 1
-tst-cputimer1.o, Error 1
-tst-cputimer2.o, Error 1
-tst-cputimer3.o, Error 1
 tst-fdopendir.o, Error 1
 tst-lfschk1.out, Error 1
 tst-lfschk2.out, Error 1
@@ -28,8 +26,6 @@
 tst-pselect.out, Error 1
 tst-readlinkat.out, Error 1
 tst-timer.out, Error 139
-tst-timer2.o, Error 1
-tst-timer4.o, Error 1
-tst-timer5.o, Error 1
+tst-timer4.out, Error 1
 tst-ttyname_r.out, Error 1
 tst-waitid.out, Error 1

Modified: glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc	2009-05-26 07:02:18 UTC (rev 3536)
+++ glibc-package/branches/eglibc-2.10/debian/testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc	2009-05-26 07:05:24 UTC (rev 3537)
@@ -6,6 +6,7 @@
 annexc.out, Error 1 (ignored)
 check-localplt.out, Error 1
 tst-aio10.out, Error 1
+tst-aio4.out, Error 1
 tst-aio9.out, Error 1
 tst-chk1.out, Error 1
 tst-chk2.out, Error 1
@@ -14,9 +15,6 @@
 tst-chk5.out, Error 1
 tst-chk6.out, Error 1
 tst-cpuclock2.out, Error 1
-tst-cputimer1.o, Error 1
-tst-cputimer2.o, Error 1
-tst-cputimer3.o, Error 1
 tst-fdopendir.o, Error 1
 tst-lfschk1.out, Error 1
 tst-lfschk2.out, Error 1
@@ -28,8 +26,6 @@
 tst-pselect.out, Error 1
 tst-readlinkat.out, Error 1
 tst-timer.out, Error 139
-tst-timer2.o, Error 1
-tst-timer4.o, Error 1
-tst-timer5.o, Error 1
+tst-timer4.out, Error 1
 tst-ttyname_r.out, Error 1
 tst-waitid.out, Error 1


Reply to: