r5225 - in glibc-package/trunk/debian: . patches patches/hppa
Author: aurel32
Date: 2012-04-29 13:15:33 +0000 (Sun, 29 Apr 2012)
New Revision: 5225
Added:
glibc-package/trunk/debian/patches/hppa/cvs-cloexec-nonblock.diff
glibc-package/trunk/debian/patches/hppa/cvs-prlimit64.diff
glibc-package/trunk/debian/patches/hppa/cvs-stackinfo.diff
glibc-package/trunk/debian/patches/hppa/cvs-sys_procfs_h.diff
glibc-package/trunk/debian/patches/hppa/cvs-test-tls-support.diff
glibc-package/trunk/debian/patches/hppa/local-EAGAIN.diff
Removed:
glibc-package/trunk/debian/patches/hppa/submitted-stackinfo.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/hppa/local-dlfptr.diff
glibc-package/trunk/debian/patches/hppa/local-lowlevellock.diff
glibc-package/trunk/debian/patches/hppa/local-stack-grows-up.diff
glibc-package/trunk/debian/patches/hppa/submitted-nptl-carlos.diff
glibc-package/trunk/debian/patches/series
Log:
* patches/hppa/*: update hppa patchset from a mix of CVS, submitted and
unknown sources patches. Closes: #666774.
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/changelog 2012-04-29 13:15:33 UTC (rev 5225)
@@ -63,6 +63,8 @@
* patches/kfreebsd/local-sys_queue_h.diff: fix STAILQ_FOREACH_SAFE.
Closes: #669960.
* local/manpages/locale.1: fix warnings from "groff". Closes: #661041.
+ * patches/hppa/*: update hppa patchset from a mix of CVS, submitted and
+ unknown sources patches. Closes: #666774.
-- Aurelien Jarno <aurel32@debian.org> Thu, 26 Apr 2012 16:37:27 +0200
Added: glibc-package/trunk/debian/patches/hppa/cvs-cloexec-nonblock.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/cvs-cloexec-nonblock.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/cvs-cloexec-nonblock.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -0,0 +1,470 @@
+2012-01-08 Carlos O'Donell <carlos@systemhalted.org>
+
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h (EPOLLONESHOT)
+ (EPOLLET): Initialize with unsiged values.
+
+2011-10-17 Guy Martin <gmsoft@tuxicoman.be>
+
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h:
+ Fix EPOLL_CLOEXEC and EPOLL_NONBLOCK to match kernel definition.
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h:
+ Fix EFD_CLOEXEC and EFD_NONBLOCK to match kernel definition.
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/inotify.h:
+ Fix IN_CLOEXEC and IN_NONBLOCK to match kernel definition.
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/signalfd.h:
+ Fix SFD_CLOEXEC and SFD_NONBLOCK to match kernel definition.
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/timerfd.h:
+ Fix TFD_CLOEXEC and TFD_NONBLOCK to match kernel definition.
+
+---
+ ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h | 144 ++++++++++++++++++++++
+ ports/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h | 54 ++++++++
+ ports/sysdeps/unix/sysv/linux/hppa/sys/inotify.h | 105 ++++++++++++++++
+ ports/sysdeps/unix/sysv/linux/hppa/sys/signalfd.h | 66 ++++++++++
+ ports/sysdeps/unix/sysv/linux/hppa/sys/timerfd.h | 60 +++++++++
+ 5 files changed, 429 insertions(+)
+
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h
+@@ -0,0 +1,144 @@
++/* Copyright (C) 2002-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_EPOLL_H
++#define _SYS_EPOLL_H 1
++
++#include <stdint.h>
++#include <sys/types.h>
++
++/* Get __sigset_t. */
++#include <bits/sigset.h>
++
++#ifndef __sigset_t_defined
++# define __sigset_t_defined
++typedef __sigset_t sigset_t;
++#endif
++
++
++/* Flags to be passed to epoll_create1. */
++enum
++ {
++ EPOLL_CLOEXEC = 010000000,
++#define EPOLL_CLOEXEC EPOLL_CLOEXEC
++ EPOLL_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
++#define EPOLL_NONBLOCK EPOLL_NONBLOCK
++ };
++
++
++enum EPOLL_EVENTS
++ {
++ EPOLLIN = 0x001,
++#define EPOLLIN EPOLLIN
++ EPOLLPRI = 0x002,
++#define EPOLLPRI EPOLLPRI
++ EPOLLOUT = 0x004,
++#define EPOLLOUT EPOLLOUT
++ EPOLLRDNORM = 0x040,
++#define EPOLLRDNORM EPOLLRDNORM
++ EPOLLRDBAND = 0x080,
++#define EPOLLRDBAND EPOLLRDBAND
++ EPOLLWRNORM = 0x100,
++#define EPOLLWRNORM EPOLLWRNORM
++ EPOLLWRBAND = 0x200,
++#define EPOLLWRBAND EPOLLWRBAND
++ EPOLLMSG = 0x400,
++#define EPOLLMSG EPOLLMSG
++ EPOLLERR = 0x008,
++#define EPOLLERR EPOLLERR
++ EPOLLHUP = 0x010,
++#define EPOLLHUP EPOLLHUP
++ EPOLLRDHUP = 0x2000,
++#define EPOLLRDHUP EPOLLRDHUP
++ EPOLLONESHOT = 1u << 30,
++#define EPOLLONESHOT EPOLLONESHOT
++ EPOLLET = 1u << 31
++#define EPOLLET EPOLLET
++ };
++
++
++/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
++#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
++#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
++#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
++
++
++typedef union epoll_data
++{
++ void *ptr;
++ int fd;
++ uint32_t u32;
++ uint64_t u64;
++} epoll_data_t;
++
++struct epoll_event
++{
++ uint32_t events; /* Epoll events */
++ epoll_data_t data; /* User data variable */
++};
++
++
++__BEGIN_DECLS
++
++/* Creates an epoll instance. Returns an fd for the new instance.
++ The "size" parameter is a hint specifying the number of file
++ descriptors to be associated with the new instance. The fd
++ returned by epoll_create() should be closed with close(). */
++extern int epoll_create (int __size) __THROW;
++
++/* Same as epoll_create but with an FLAGS parameter. The unused SIZE
++ parameter has been dropped. */
++extern int epoll_create1 (int __flags) __THROW;
++
++
++/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
++ -1 in case of error ( the "errno" variable will contain the
++ specific error code ) The "op" parameter is one of the EPOLL_CTL_*
++ constants defined above. The "fd" parameter is the target of the
++ operation. The "event" parameter describes which events the caller
++ is interested in and any associated user data. */
++extern int epoll_ctl (int __epfd, int __op, int __fd,
++ struct epoll_event *__event) __THROW;
++
++
++/* Wait for events on an epoll instance "epfd". Returns the number of
++ triggered events returned in "events" buffer. Or -1 in case of
++ error with the "errno" variable set to the specific error code. The
++ "events" parameter is a buffer that will contain triggered
++ events. The "maxevents" is the maximum number of events to be
++ returned ( usually size of "events" ). The "timeout" parameter
++ specifies the maximum wait time in milliseconds (-1 == infinite).
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int epoll_wait (int __epfd, struct epoll_event *__events,
++ int __maxevents, int __timeout);
++
++
++/* Same as epoll_wait, but the thread's signal mask is temporarily
++ and atomically replaced with the one provided as parameter.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int epoll_pwait (int __epfd, struct epoll_event *__events,
++ int __maxevents, int __timeout,
++ __const __sigset_t *__ss);
++
++__END_DECLS
++
++#endif /* sys/epoll.h */
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
+@@ -0,0 +1,54 @@
++/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_EVENTFD_H
++#define _SYS_EVENTFD_H 1
++
++#include <stdint.h>
++
++
++/* Type for event counter. */
++typedef uint64_t eventfd_t;
++
++/* Flags for signalfd. */
++enum
++ {
++ EFD_SEMAPHORE = 1,
++#define EFD_SEMAPHORE EFD_SEMAPHORE
++ EFD_CLOEXEC = 010000000,
++#define EFD_CLOEXEC EFD_CLOEXEC
++ EFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
++#define EFD_NONBLOCK EFD_NONBLOCK
++ };
++
++
++__BEGIN_DECLS
++
++/* Return file descriptor for generic event channel. Set initial
++ value to COUNT. */
++extern int eventfd (int __count, int __flags) __THROW;
++
++/* Read event counter and possibly wait for events. */
++extern int eventfd_read (int __fd, eventfd_t *__value);
++
++/* Increment event counter. */
++extern int eventfd_write (int __fd, eventfd_t __value);
++
++__END_DECLS
++
++#endif /* sys/eventfd.h */
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sys/inotify.h
+@@ -0,0 +1,105 @@
++/* Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_INOTIFY_H
++#define _SYS_INOTIFY_H 1
++
++#include <stdint.h>
++
++
++/* Flags for the parameter of inotify_init1. */
++enum
++ {
++ IN_CLOEXEC = 010000000,
++#define IN_CLOEXEC IN_CLOEXEC
++ IN_NONBLOCK = 000200004 /* HPUX has separate NDELAY & NONBLOCK */
++#define IN_NONBLOCK IN_NONBLOCK
++ };
++
++
++/* Structure describing an inotify event. */
++struct inotify_event
++{
++ int wd; /* Watch descriptor. */
++ uint32_t mask; /* Watch mask. */
++ uint32_t cookie; /* Cookie to synchronize two events. */
++ uint32_t len; /* Length (including NULs) of name. */
++ char name __flexarr; /* Name. */
++};
++
++
++/* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH. */
++#define IN_ACCESS 0x00000001 /* File was accessed. */
++#define IN_MODIFY 0x00000002 /* File was modified. */
++#define IN_ATTRIB 0x00000004 /* Metadata changed. */
++#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed. */
++#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed. */
++#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
++#define IN_OPEN 0x00000020 /* File was opened. */
++#define IN_MOVED_FROM 0x00000040 /* File was moved from X. */
++#define IN_MOVED_TO 0x00000080 /* File was moved to Y. */
++#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
++#define IN_CREATE 0x00000100 /* Subfile was created. */
++#define IN_DELETE 0x00000200 /* Subfile was deleted. */
++#define IN_DELETE_SELF 0x00000400 /* Self was deleted. */
++#define IN_MOVE_SELF 0x00000800 /* Self was moved. */
++
++/* Events sent by the kernel. */
++#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted. */
++#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed. */
++#define IN_IGNORED 0x00008000 /* File was ignored. */
++
++/* Helper events. */
++#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
++#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
++
++/* Special flags. */
++#define IN_ONLYDIR 0x01000000 /* Only watch the path if it is a
++ directory. */
++#define IN_DONT_FOLLOW 0x02000000 /* Do not follow a sym link. */
++#define IN_MASK_ADD 0x20000000 /* Add to the mask of an already
++ existing watch. */
++#define IN_ISDIR 0x40000000 /* Event occurred against dir. */
++#define IN_ONESHOT 0x80000000 /* Only send event once. */
++
++/* All events which a program can wait on. */
++#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
++ | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
++ | IN_MOVED_TO | IN_CREATE | IN_DELETE \
++ | IN_DELETE_SELF | IN_MOVE_SELF)
++
++
++__BEGIN_DECLS
++
++/* Create and initialize inotify instance. */
++extern int inotify_init (void) __THROW;
++
++/* Create and initialize inotify instance. */
++extern int inotify_init1 (int __flags) __THROW;
++
++/* Add watch of object NAME to inotify instance FD. Notify about
++ events specified by MASK. */
++extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
++ __THROW;
++
++/* Remove the watch specified by WD from the inotify instance FD. */
++extern int inotify_rm_watch (int __fd, int __wd) __THROW;
++
++__END_DECLS
++
++#endif /* sys/inotify.h */
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sys/signalfd.h
+@@ -0,0 +1,66 @@
++/* Copyright (C) 2007, 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. */
++
++#ifndef _SYS_SIGNALFD_H
++#define _SYS_SIGNALFD_H 1
++
++#define __need_sigset_t
++#include <signal.h>
++#include <stdint.h>
++
++
++struct signalfd_siginfo
++{
++ uint32_t ssi_signo;
++ int32_t ssi_errno;
++ int32_t ssi_code;
++ uint32_t ssi_pid;
++ uint32_t ssi_uid;
++ int32_t ssi_fd;
++ uint32_t ssi_tid;
++ uint32_t ssi_band;
++ uint32_t ssi_overrun;
++ uint32_t ssi_trapno;
++ int32_t ssi_status;
++ int32_t ssi_int;
++ uint64_t ssi_ptr;
++ uint64_t ssi_utime;
++ uint64_t ssi_stime;
++ uint64_t ssi_addr;
++ uint8_t __pad[48];
++};
++
++/* Flags for signalfd. */
++enum
++ {
++ SFD_CLOEXEC = 010000000,
++#define SFD_CLOEXEC SFD_CLOEXEC
++ SFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
++#define SFD_NONBLOCK SFD_NONBLOCK
++ };
++
++__BEGIN_DECLS
++
++/* Request notification for delivery of signals in MASK to be
++ performed using descriptor FD.*/
++extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
++ __THROW __nonnull ((2));
++
++__END_DECLS
++
++#endif /* sys/signalfd.h */
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sys/timerfd.h
+@@ -0,0 +1,60 @@
++/* Copyright (C) 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. */
++
++#ifndef _SYS_TIMERFD_H
++#define _SYS_TIMERFD_H 1
++
++#include <time.h>
++
++
++/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
++enum
++ {
++ TFD_CLOEXEC = 010000000,
++#define TFD_CLOEXEC TFD_CLOEXEC
++ TFD_NONBLOCK = 000200004 /* HPUX has separate NDELAY & NONBLOCK */
++#define TFD_NONBLOCK TFD_NONBLOCK
++ };
++
++
++/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
++enum
++ {
++ TFD_TIMER_ABSTIME = 1 << 0
++#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME
++ };
++
++
++__BEGIN_DECLS
++
++/* Return file descriptor for new interval timer source. */
++extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW;
++
++/* Set next expiration time of interval timer source UFD to UTMR. If
++ FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
++ absolute. Optionally return the old expiration time in OTMR. */
++extern int timerfd_settime (int __ufd, int __flags,
++ __const struct itimerspec *__utmr,
++ struct itimerspec *__otmr) __THROW;
++
++/* Return the next expiration time of UFD. */
++extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
++
++__END_DECLS
++
++#endif /* sys/timerfd.h */
Added: glibc-package/trunk/debian/patches/hppa/cvs-prlimit64.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/cvs-prlimit64.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/cvs-prlimit64.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -0,0 +1,16 @@
+2012-03-31 Carlos O'Donell <carlos@systemhalted.org>
+
+ * ports/sysdeps/unix/sysv/linux/hppa/syscalls.list: Add prlimit64
+ syscall.
+
+---
+ ports/sysdeps/unix/sysv/linux/hppa/syscalls.list | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list
++++ b/ports/sysdeps/unix/sysv/linux/hppa/syscalls.list
+@@ -35,3 +35,4 @@
+
+ setrlimit - setrlimit i:ip __setrlimit setrlimit
+ getrlimit - getrlimit i:ip __getrlimit getrlimit
++prlimit64 EXTRA prlimit64 i:iipp prlimit64
Added: glibc-package/trunk/debian/patches/hppa/cvs-stackinfo.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/cvs-stackinfo.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/cvs-stackinfo.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -0,0 +1,24 @@
+2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
+
+ * ports/sysdeps/hppa/stackinfo.h: Include elf.h and define
+ DEFAULT_STACK_PERMS.
+
+---
+ ports/sysdeps/hppa/stackinfo.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/ports/sysdeps/hppa/stackinfo.h
++++ b/ports/sysdeps/hppa/stackinfo.h
+@@ -22,6 +22,12 @@
+ #ifndef _STACKINFO_H
+ #define _STACKINFO_H 1
+
++#include <elf.h>
++
++/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is
++ * present, but it is presumed absent. */
++#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X)
++
+ /* On PA the stack grows up. */
+ #define _STACK_GROWS_UP 1
+
Added: glibc-package/trunk/debian/patches/hppa/cvs-sys_procfs_h.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/cvs-sys_procfs_h.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/cvs-sys_procfs_h.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -0,0 +1,22 @@
+2011-10-21 Carlos O'Donell <carlos@systemhalted.org>
+
+ * ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h: Do
+ not include signal.h and sys/ucontext.h.
+
+---
+ ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sys/procfs.h
+@@ -29,10 +29,8 @@
+ GDB unless you know what you are doing. */
+
+ #include <features.h>
+-#include <signal.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+-#include <sys/ucontext.h>
+ #include <sys/user.h>
+
+ __BEGIN_DECLS
Added: glibc-package/trunk/debian/patches/hppa/cvs-test-tls-support.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/cvs-test-tls-support.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/cvs-test-tls-support.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -0,0 +1,545 @@
+2011-10-20 Carlos O'Donell <carlos@systemhalted.org>
+
+ * ports/sysdeps/hppa/elf/configure.in: Always test for TLS support
+ and error out if missing.
+ * ports/sysdeps/hppa/elf/configure: Regenerate.
+ * ports/sysdeps/hppa/configure: Regenerate.
+
+
+---
+ ports/sysdeps/hppa/configure | 94 ++++++++++++++-
+ ports/sysdeps/hppa/dl-tls.h | 3
+ ports/sysdeps/hppa/elf/configure | 98 ++++++++++++++--
+ ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h | 82 +++++++++++--
+ ports/sysdeps/unix/sysv/linux/hppa/sysdep.h | 67 +++++-----
+ 5 files changed, 283 insertions(+), 61 deletions(-)
+
+--- a/ports/sysdeps/hppa/configure
++++ b/ports/sysdeps/hppa/configure
+@@ -1,19 +1,101 @@
++
++# as_fn_set_status STATUS
++# -----------------------
++# Set $? to STATUS, without forking.
++as_fn_set_status ()
++{
++ return $1
++} # as_fn_set_status
++
++# as_fn_exit STATUS
++# -----------------
++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
++as_fn_exit ()
++{
++ set +e
++ as_fn_set_status $1
++ exit $1
++} # as_fn_exit
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
++ as_expr=expr
++else
++ as_expr=false
++fi
++
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
++ as_basename=basename
++else
++ as_basename=false
++fi
++
++as_me=`$as_basename -- "$0" ||
++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
++ X"$0" : 'X\(//\)$' \| \
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++$as_echo X/"$0" |
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++
++
++ as_lineno_1=$LINENO as_lineno_1a=$LINENO
++ as_lineno_2=$LINENO as_lineno_2a=$LINENO
++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
++ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
++ N
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ t loop
++ s/-\n.*//
++ ' >$as_me.lineno &&
++ chmod +x "$as_me.lineno" ||
++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
++
++ # Don't try to exec as it changes $[0], causing all sort of problems
++ # (the dirname of $[0] is not the place where we might find the
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
++ # Exit status is that of the last command.
++ exit
++}
++
+ # This file is generated from configure.in by Autoconf. DO NOT EDIT!
+
+-{ $as_echo "$as_me:$LINENO: checking for assembler line separator" >&5
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler line separator" >&5
+ $as_echo_n "checking for assembler line separator... " >&6; }
+-if test "${libc_cv_asm_line_sep+set}" = set; then
++if test "${libc_cv_asm_line_sep+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+ else
+ cat > conftest.s <<EOF
+ nop ; is_old_puffin
+ EOF
+ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }; }; then
+ libc_cv_asm_line_sep='!'
+ else
+ if test -z "$enable_hacker_mode"; then
+@@ -25,7 +107,7 @@
+ fi
+ rm -f conftest*
+ fi
+-{ $as_echo "$as_me:$LINENO: result: $libc_cv_asm_line_sep" >&5
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_line_sep" >&5
+ $as_echo "$libc_cv_asm_line_sep" >&6; }
+ cat >>confdefs.h <<_ACEOF
+ #define ASM_LINE_SEP $libc_cv_asm_line_sep
+--- a/ports/sysdeps/hppa/dl-tls.h
++++ b/ports/sysdeps/hppa/dl-tls.h
+@@ -27,3 +27,6 @@
+
+
+ extern void *__tls_get_addr (tls_index *ti);
++
++/* Value used for dtv entries for which the allocation is delayed. */
++#define TLS_DTV_UNALLOCATED ((void *) -1l)
+--- a/ports/sysdeps/hppa/elf/configure
++++ b/ports/sysdeps/hppa/elf/configure
+@@ -1,12 +1,94 @@
++
++# as_fn_set_status STATUS
++# -----------------------
++# Set $? to STATUS, without forking.
++as_fn_set_status ()
++{
++ return $1
++} # as_fn_set_status
++
++# as_fn_exit STATUS
++# -----------------
++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
++as_fn_exit ()
++{
++ set +e
++ as_fn_set_status $1
++ exit $1
++} # as_fn_exit
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
++ as_expr=expr
++else
++ as_expr=false
++fi
++
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
++ as_basename=basename
++else
++ as_basename=false
++fi
++
++as_me=`$as_basename -- "$0" ||
++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
++ X"$0" : 'X\(//\)$' \| \
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
++$as_echo X/"$0" |
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++
++
++ as_lineno_1=$LINENO as_lineno_1a=$LINENO
++ as_lineno_2=$LINENO as_lineno_2a=$LINENO
++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
++ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
++ N
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
++ t loop
++ s/-\n.*//
++ ' >$as_me.lineno &&
++ chmod +x "$as_me.lineno" ||
++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
++
++ # Don't try to exec as it changes $[0], causing all sort of problems
++ # (the dirname of $[0] is not the place where we might find the
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
++ # Exit status is that of the last command.
++ exit
++}
++
+ # This file is generated from configure.in by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/hppa/elf.
+
+ if test "$usetls" != no; then
+ # Check for support of thread-local storage handling in assembler and
+ # linker.
+-{ $as_echo "$as_me:$LINENO: checking for hppa TLS support" >&5
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hppa TLS support" >&5
+ $as_echo_n "checking for hppa TLS support... " >&6; }
+-if test "${libc_cv_hppa_tls+set}" = set; then
++if test "${libc_cv_hppa_tls+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+ else
+ cat > conftest.s <<\EOF
+@@ -41,23 +123,21 @@
+ ; Done all the TLS tests.
+ EOF
+ if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }; }; then
+ libc_cv_hppa_tls=yes
+ else
+ libc_cv_hppa_tls=no
+ fi
+ rm -f conftest*
+ fi
+-{ $as_echo "$as_me:$LINENO: result: $libc_cv_hppa_tls" >&5
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hppa_tls" >&5
+ $as_echo "$libc_cv_hppa_tls" >&6; }
+ if test $libc_cv_hppa_tls = yes; then
+- cat >>confdefs.h <<\_ACEOF
+-#define HAVE_TLS_SUPPORT 1
+-_ACEOF
++ $as_echo "#define HAVE_TLS_SUPPORT 1" >>confdefs.h
+
+ fi
+ fi
+--- a/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
++++ b/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+@@ -61,11 +61,53 @@
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
++ ENTRY (__##syscall_name##_nocancel) \
++ DOARGS_##args ASM_LINE_SEP \
++ stwm TREG, 64(%sp) ASM_LINE_SEP \
++ .cfi_offset TREG, 0 ASM_LINE_SEP \
++ .cfi_adjust_cfa_offset 64 ASM_LINE_SEP \
++ stw %sp, -4(%sp) ASM_LINE_SEP \
++ .cfi_offset 30, -4 ASM_LINE_SEP \
++ stw %r19, -32(%sp) ASM_LINE_SEP \
++ .cfi_offset 19, -32 ASM_LINE_SEP \
++ /* Save r19 */ ASM_LINE_SEP \
++ SAVE_PIC(TREG) ASM_LINE_SEP \
++ /* Do syscall, delay loads # */ ASM_LINE_SEP \
++ ble 0x100(%sr2,%r0) ASM_LINE_SEP \
++ ldi SYS_ify (syscall_name), %r20 /* delay */ ASM_LINE_SEP \
++ ldi NO_ERROR,%r1 ASM_LINE_SEP \
++ cmpb,>>=,n %r1,%ret0,L(pre_nc_end) ASM_LINE_SEP \
++ /* Restore r19 from TREG */ ASM_LINE_SEP \
++ LOAD_PIC(TREG) /* delay */ ASM_LINE_SEP \
++ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \
++ /* Use TREG for temp storage */ ASM_LINE_SEP \
++ copy %ret0, TREG /* delay */ ASM_LINE_SEP \
++ /* OPTIMIZE: Don't reload r19 */ ASM_LINE_SEP \
++ /* do a -1*syscall_ret0 */ ASM_LINE_SEP \
++ sub %r0, TREG, TREG ASM_LINE_SEP \
++ /* Store into errno location */ ASM_LINE_SEP \
++ stw TREG, 0(%sr0,%ret0) ASM_LINE_SEP \
++ /* return -1 as error */ ASM_LINE_SEP \
++ ldi -1, %ret0 ASM_LINE_SEP \
++L(pre_nc_end): ASM_LINE_SEP \
++ /* No need to LOAD_PIC */ ASM_LINE_SEP \
++ /* Undo frame */ ASM_LINE_SEP \
++ ldwm -64(%sp),TREG ASM_LINE_SEP \
++ .cfi_adjust_cfa_offset -64 ASM_LINE_SEP \
++ /* Restore rp before exit */ ASM_LINE_SEP \
++ ldw -20(%sp), %rp ASM_LINE_SEP \
++ .cfi_restore 2 ASM_LINE_SEP \
++ ret ASM_LINE_SEP \
++ END(__##syscall_name##_nocancel) ASM_LINE_SEP \
++ /**********************************************/ASM_LINE_SEP \
+ ENTRY (name) \
+ DOARGS_##args ASM_LINE_SEP \
+ stwm TREG, 64(%sp) ASM_LINE_SEP \
++ .cfi_adjust_cfa_offset 64 ASM_LINE_SEP \
+ stw %sp, -4(%sp) ASM_LINE_SEP \
++ .cfi_offset 30, -4 ASM_LINE_SEP \
+ stw %r19, -32(%sp) ASM_LINE_SEP \
++ .cfi_offset 19, -32 ASM_LINE_SEP \
+ /* Done setting up frame, continue... */ ASM_LINE_SEP \
+ SINGLE_THREAD_P ASM_LINE_SEP \
+ cmpib,<>,n 0,%ret0,L(pseudo_cancel) ASM_LINE_SEP \
+@@ -128,26 +170,40 @@
+ /* No need to LOAD_PIC */ ASM_LINE_SEP \
+ /* Undo frame */ ASM_LINE_SEP \
+ ldwm -64(%sp),TREG ASM_LINE_SEP \
++ .cfi_adjust_cfa_offset -64 ASM_LINE_SEP \
+ /* Restore rp before exit */ ASM_LINE_SEP \
+- ldw -20(%sp), %rp ASM_LINE_SEP
++ ldw -20(%sp), %rp ASM_LINE_SEP \
++ .cfi_restore 2 ASM_LINE_SEP
+
+ /* Save arguments into our frame */
+ # define PUSHARGS_0 /* nothing to do */
+-# define PUSHARGS_1 PUSHARGS_0 stw %r26, -36(%sr0,%sp) ASM_LINE_SEP
+-# define PUSHARGS_2 PUSHARGS_1 stw %r25, -40(%sr0,%sp) ASM_LINE_SEP
+-# define PUSHARGS_3 PUSHARGS_2 stw %r24, -44(%sr0,%sp) ASM_LINE_SEP
+-# define PUSHARGS_4 PUSHARGS_3 stw %r23, -48(%sr0,%sp) ASM_LINE_SEP
+-# define PUSHARGS_5 PUSHARGS_4 stw %r22, -52(%sr0,%sp) ASM_LINE_SEP
+-# define PUSHARGS_6 PUSHARGS_5 stw %r21, -56(%sr0,%sp) ASM_LINE_SEP
++# define PUSHARGS_1 PUSHARGS_0 stw %r26, -36(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 26, -36 ASM_LINE_SEP
++# define PUSHARGS_2 PUSHARGS_1 stw %r25, -40(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 25, -40 ASM_LINE_SEP
++# define PUSHARGS_3 PUSHARGS_2 stw %r24, -44(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 24, -44 ASM_LINE_SEP
++# define PUSHARGS_4 PUSHARGS_3 stw %r23, -48(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 23, -48 ASM_LINE_SEP
++# define PUSHARGS_5 PUSHARGS_4 stw %r22, -52(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 22, -52 ASM_LINE_SEP
++# define PUSHARGS_6 PUSHARGS_5 stw %r21, -56(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 21, -56 ASM_LINE_SEP
+
+ /* Bring them back from the stack */
+ # define POPARGS_0 /* nothing to do */
+-# define POPARGS_1 POPARGS_0 ldw -36(%sr0,%sp), %r26 ASM_LINE_SEP
+-# define POPARGS_2 POPARGS_1 ldw -40(%sr0,%sp), %r25 ASM_LINE_SEP
+-# define POPARGS_3 POPARGS_2 ldw -44(%sr0,%sp), %r24 ASM_LINE_SEP
+-# define POPARGS_4 POPARGS_3 ldw -48(%sr0,%sp), %r23 ASM_LINE_SEP
+-# define POPARGS_5 POPARGS_4 ldw -52(%sr0,%sp), %r22 ASM_LINE_SEP
+-# define POPARGS_6 POPARGS_5 ldw -56(%sr0,%sp), %r21 ASM_LINE_SEP
++# define POPARGS_1 POPARGS_0 ldw -36(%sr0,%sp), %r26 ASM_LINE_SEP \
++ .cfi_restore 26 ASM_LINE_SEP
++# define POPARGS_2 POPARGS_1 ldw -40(%sr0,%sp), %r25 ASM_LINE_SEP \
++ .cfi_restore 25 ASM_LINE_SEP
++# define POPARGS_3 POPARGS_2 ldw -44(%sr0,%sp), %r24 ASM_LINE_SEP \
++ .cfi_restore 24 ASM_LINE_SEP
++# define POPARGS_4 POPARGS_3 ldw -48(%sr0,%sp), %r23 ASM_LINE_SEP \
++ .cfi_restore 23 ASM_LINE_SEP
++# define POPARGS_5 POPARGS_4 ldw -52(%sr0,%sp), %r22 ASM_LINE_SEP \
++ .cfi_restore 22 ASM_LINE_SEP
++# define POPARGS_6 POPARGS_5 ldw -56(%sr0,%sp), %r21 ASM_LINE_SEP \
++ .cfi_restore 21 ASM_LINE_SEP
+
+ # ifdef IS_IN_libpthread
+ # ifdef PIC
+--- a/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h
++++ b/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h
+@@ -22,7 +22,6 @@
+
+ #include <asm/unistd.h>
+ #include <sysdeps/generic/sysdep.h>
+-#include <sys/syscall.h>
+
+ /* In order to get __set_errno() definition in INLINE_SYSCALL. */
+ #ifndef __ASSEMBLER__
+@@ -35,32 +34,28 @@
+ #undef SYS_ify
+ #define SYS_ify(syscall_name) (__NR_##syscall_name)
+
++/* The vfork, fork, and clone syscalls clobber r19
++ * and r21. We list r21 as either clobbered or as an
++ * input to a 6-argument syscall. We must save and
++ * restore r19 in both PIC and non-PIC cases.
++ */
+ /* WARNING: TREG must be a callee saves register so
+ that it doesn't have to be restored after a call
+ to another function */
+-#ifdef PIC
+-# define TREG %r3
+-# define SAVE_PIC(SREG) copy %r19, SREG ASM_LINE_SEP
+-# define LOAD_PIC(LREG) copy LREG, %r19 ASM_LINE_SEP
+-/* Inline assembly defines */
+-# define TREG_ASM "%r4" /* Cant clobber r3, it holds framemarker */
+-# define SAVE_ASM_PIC " copy %%r19, %" TREG_ASM "\n"
+-# define LOAD_ASM_PIC " copy %" TREG_ASM ", %%r19\n"
+-# define CLOB_TREG TREG_ASM ,
+-# define PIC_REG_DEF register unsigned long __r19 asm("r19");
+-# define PIC_REG_USE , "r" (__r19)
+-#else
+-# define TREG %r3
+-# define SAVE_PIC(SREG) nop ASM_LINE_SEP
+-# define LOAD_PIC(LREG) nop ASM_LINE_SEP
++#define TREG 4
++#define SAVE_PIC(SREG) \
++ copy %r19, SREG ASM_LINE_SEP \
++ .cfi_register 19, SREG
++#define LOAD_PIC(LREG) \
++ copy LREG , %r19 ASM_LINE_SEP \
++ .cfi_restore 19
+ /* Inline assembly defines */
+-# define TREG_ASM
+-# define SAVE_ASM_PIC "nop \n"
+-# define LOAD_ASM_PIC "nop \n"
+-# define CLOB_TREG
+-# define PIC_REG_DEF
+-# define PIC_REG_USE
+-#endif
++#define TREG_ASM "%r4" /* Cant clobber r3, it holds framemarker */
++#define SAVE_ASM_PIC " copy %%r19, %" TREG_ASM "\n"
++#define LOAD_ASM_PIC " copy %" TREG_ASM ", %%r19\n"
++#define CLOB_TREG TREG_ASM ,
++#define PIC_REG_DEF register unsigned long __r19 asm("r19");
++#define PIC_REG_USE , "r" (__r19)
+
+ #ifdef __ASSEMBLER__
+
+@@ -127,12 +122,14 @@
+ .align ALIGNARG(4) ASM_LINE_SEP \
+ .export C_SYMBOL_NAME(name) ASM_LINE_SEP \
+ .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \
++ cfi_startproc ASM_LINE_SEP \
+ C_LABEL(name) ASM_LINE_SEP \
+ .PROC ASM_LINE_SEP \
+ .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3 ASM_LINE_SEP \
+ .ENTRY ASM_LINE_SEP \
+ /* SAVE_RP says we do */ ASM_LINE_SEP \
+ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 2, -20 ASM_LINE_SEP \
+ /*FIXME: Call mcount? (carefull with stack!) */
+
+ /* Some syscall wrappers do not call other functions, and
+@@ -142,18 +139,21 @@
+ .align ALIGNARG(4) ASM_LINE_SEP \
+ .export C_SYMBOL_NAME(name) ASM_LINE_SEP \
+ .type C_SYMBOL_NAME(name),@function ASM_LINE_SEP \
++ cfi_startproc ASM_LINE_SEP \
+ C_LABEL(name) ASM_LINE_SEP \
+ .PROC ASM_LINE_SEP \
+ .CALLINFO FRAME=64,NO_CALLS,SAVE_RP,ENTRY_GR=3 ASM_LINE_SEP \
+ .ENTRY ASM_LINE_SEP \
+ /* SAVE_RP says we do */ ASM_LINE_SEP \
+ stw %rp, -20(%sr0,%sp) ASM_LINE_SEP \
++ .cfi_offset 2, -20 ASM_LINE_SEP \
+ /*FIXME: Call mcount? (carefull with stack!) */
+
+ #undef END
+ #define END(name) \
+ .EXIT ASM_LINE_SEP \
+ .PROCEND ASM_LINE_SEP \
++ cfi_endproc ASM_LINE_SEP \
+ .size C_SYMBOL_NAME(name), .-C_SYMBOL_NAME(name) ASM_LINE_SEP
+
+ /* If compiled for profiling, call `mcount' at the start
+@@ -170,9 +170,7 @@
+ which means
+ ENTRY(name)
+ DO_CALL(...)
+- nop
+- bv 0(2)
+- nop
++ bv,n 0(2)
+ */
+
+ #define PSEUDO(name, syscall_name, args) \
+@@ -180,8 +178,7 @@
+ /* If necc. load args from stack */ ASM_LINE_SEP \
+ DOARGS_##args ASM_LINE_SEP \
+ DO_CALL (syscall_name, args) ASM_LINE_SEP \
+- UNDOARGS_##args ASM_LINE_SEP \
+- nop ASM_LINE_SEP
++ UNDOARGS_##args ASM_LINE_SEP
+
+ #define ret \
+ /* Return value set by ERRNO code */ ASM_LINE_SEP \
+@@ -196,8 +193,7 @@
+ ENTRY_LEAF (name) ASM_LINE_SEP \
+ DOARGS_##args ASM_LINE_SEP \
+ DO_CALL_NOERRNO (syscall_name, args) ASM_LINE_SEP \
+- UNDOARGS_##args ASM_LINE_SEP \
+- nop ASM_LINE_SEP
++ UNDOARGS_##args ASM_LINE_SEP
+
+ #define ret_NOERRNO ret
+
+@@ -211,8 +207,7 @@
+ ENTRY_LEAF (name) ASM_LINE_SEP \
+ DOARGS_##args ASM_LINE_SEP \
+ DO_CALL_ERRVAL (syscall_name, args) ASM_LINE_SEP \
+- UNDOARGS_##args ASM_LINE_SEP \
+- nop ASM_LINE_SEP
++ UNDOARGS_##args ASM_LINE_SEP
+
+ #define ret_ERRVAL ret
+
+@@ -290,8 +285,12 @@
+ #define DO_CALL(syscall_name, args) \
+ /* Create a frame */ ASM_LINE_SEP \
+ stwm TREG, 64(%sp) ASM_LINE_SEP \
++ .cfi_offset TREG, 0 ASM_LINE_SEP \
++ .cfi_adjust_cfa_offset 64 ASM_LINE_SEP \
+ stw %sp, -4(%sp) ASM_LINE_SEP \
++ .cfi_offset 30, -4 ASM_LINE_SEP \
+ stw %r19, -32(%sp) ASM_LINE_SEP \
++ .cfi_offset 19, -32 ASM_LINE_SEP \
+ /* Save r19 */ ASM_LINE_SEP \
+ SAVE_PIC(TREG) ASM_LINE_SEP \
+ /* Do syscall, delay loads # */ ASM_LINE_SEP \
+@@ -314,8 +313,10 @@
+ L(pre_end): ASM_LINE_SEP \
+ /* Restore our frame, restoring TREG */ ASM_LINE_SEP \
+ ldwm -64(%sp), TREG ASM_LINE_SEP \
++ .cfi_adjust_cfa_offset -64 ASM_LINE_SEP \
+ /* Restore return pointer */ ASM_LINE_SEP \
+- ldw -20(%sp),%rp ASM_LINE_SEP
++ ldw -20(%sp),%rp ASM_LINE_SEP \
++ .cfi_restore 2 ASM_LINE_SEP
+
+ /* We do nothing with the return, except hand it back to someone else */
+ #undef DO_CALL_NOERRNO
Added: glibc-package/trunk/debian/patches/hppa/local-EAGAIN.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-EAGAIN.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hppa/local-EAGAIN.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -0,0 +1,103 @@
+---
+ nptl/pthread_mutex_trylock.c | 3 ++-
+ nptl/sysdeps/pthread/aio_misc.h | 4 ++--
+ nptl/sysdeps/pthread/gai_misc.h | 4 ++--
+ nptl/sysdeps/unix/sysv/linux/sem_timedwait.c | 2 +-
+ nptl/sysdeps/unix/sysv/linux/sem_wait.c | 4 ++--
+ sunrpc/clnt_udp.c | 2 +-
+ 6 files changed, 10 insertions(+), 9 deletions(-)
+
+--- a/nptl/pthread_mutex_trylock.c
++++ b/nptl/pthread_mutex_trylock.c
+@@ -240,7 +240,8 @@
+ private), 0, 0);
+
+ if (INTERNAL_SYSCALL_ERROR_P (e, __err)
+- && INTERNAL_SYSCALL_ERRNO (e, __err) == EWOULDBLOCK)
++ && ((INTERNAL_SYSCALL_ERRNO (e, __err) == EWOULDBLOCK)
++ || (INTERNAL_SYSCALL_ERRNO (e, __err) == EAGAIN)))
+ {
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+
+--- a/nptl/sysdeps/pthread/aio_misc.h
++++ b/nptl/sysdeps/pthread/aio_misc.h
+@@ -51,7 +51,7 @@
+ { \
+ status = lll_futex_timed_wait (futexaddr, oldval, timeout, \
+ LLL_PRIVATE); \
+- if (status != -EWOULDBLOCK) \
++ if (status != -EWOULDBLOCK && status != -EAGAIN) \
+ break; \
+ \
+ oldval = *futexaddr; \
+@@ -66,7 +66,7 @@
+ else if (status == -ETIMEDOUT) \
+ result = EAGAIN; \
+ else \
+- assert (status == 0 || status == -EWOULDBLOCK); \
++ assert (status == 0 || status == -EWOULDBLOCK || status == -EAGAIN);\
+ \
+ pthread_mutex_lock (&__aio_requests_mutex); \
+ } \
+--- a/nptl/sysdeps/pthread/gai_misc.h
++++ b/nptl/sysdeps/pthread/gai_misc.h
+@@ -52,7 +52,7 @@
+ { \
+ status = lll_futex_timed_wait (futexaddr, oldval, timeout, \
+ LLL_PRIVATE); \
+- if (status != -EWOULDBLOCK) \
++ if (status != -EWOULDBLOCK && status != -EAGAIN) \
+ break; \
+ \
+ oldval = *futexaddr; \
+@@ -67,7 +67,7 @@
+ else if (status == -ETIMEDOUT) \
+ result = EAGAIN; \
+ else \
+- assert (status == 0 || status == -EWOULDBLOCK); \
++ assert (status == 0 || status == -EWOULDBLOCK || status == -EAGAIN);\
+ \
+ pthread_mutex_lock (&__gai_requests_mutex); \
+ } \
+--- a/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
++++ b/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
+@@ -90,7 +90,7 @@
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+
+- if (err != 0 && err != -EWOULDBLOCK)
++ if (err != 0 && err != -EWOULDBLOCK && err != -EAGAIN)
+ {
+ __set_errno (-err);
+ err = -1;
+--- a/nptl/sysdeps/unix/sysv/linux/sem_wait.c
++++ b/nptl/sysdeps/unix/sysv/linux/sem_wait.c
+@@ -62,7 +62,7 @@
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+
+- if (err != 0 && err != -EWOULDBLOCK)
++ if (err != 0 && err != -EWOULDBLOCK && err != -EAGAIN)
+ {
+ __set_errno (-err);
+ err = -1;
+@@ -107,7 +107,7 @@
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+ }
+- while (err == 0 || err == -EWOULDBLOCK);
++ while (err == 0 || err == -EWOULDBLOCK || err == -EAGAIN);
+
+ __set_errno (-err);
+ return -1;
+--- a/sunrpc/clnt_udp.c
++++ b/sunrpc/clnt_udp.c
+@@ -456,7 +456,7 @@
+ while (inlen < 0 && errno == EINTR);
+ if (inlen < 0)
+ {
+- if (errno == EWOULDBLOCK)
++ if (errno == EWOULDBLOCK || errno == EAGAIN)
+ continue;
+ cu->cu_error.re_errno = errno;
+ return (cu->cu_error.re_status = RPC_CANTRECV);
Modified: glibc-package/trunk/debian/patches/hppa/local-dlfptr.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-dlfptr.diff 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/patches/hppa/local-dlfptr.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -1,6 +1,7 @@
---
+ ports/sysdeps/hppa/dl-fptr.h | 3 +++
ports/sysdeps/hppa/dl-machine.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ 2 files changed, 5 insertions(+), 1 deletion(-)
--- a/ports/sysdeps/hppa/dl-machine.h
+++ b/ports/sysdeps/hppa/dl-machine.h
@@ -14,3 +15,15 @@
/* Return nonzero iff ELF header is compatible with the running host. */
static inline int
+--- a/ports/sysdeps/hppa/dl-fptr.h
++++ b/ports/sysdeps/hppa/dl-fptr.h
+@@ -22,6 +22,9 @@
+
+ #include <sysdeps/generic/dl-fptr.h>
+
++/* Initialize function pointer code. Call before relocation processing. */
++extern void _dl_fptr_init (void);
++
+ /* There are currently 33 dynamic symbols in ld.so.
+ ELF_MACHINE_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
+ #define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 64
Modified: glibc-package/trunk/debian/patches/hppa/local-lowlevellock.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-lowlevellock.diff 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/patches/hppa/local-lowlevellock.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -1,13 +1,13 @@
2010-02-11 Aurelien Jarno <aurelien@aurel32.net>
- * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: remove
- useless <sysdep.h> include. Move <tls.h> include to...
- * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: here.
+ * ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
+ remove useless <sysdep.h> include. Move <tls.h> include to...
+ * ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: here.
---
- ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c | 1 +
- ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h | 2 --
- 2 files changed, 1 insertion(+), 2 deletions(-)
+ ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c | 1
+ ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h | 20 ++++++++---------
+ 2 files changed, 11 insertions(+), 10 deletions(-)
--- a/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
+++ b/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
@@ -32,3 +32,32 @@
/* HPPA only has one atomic read and modify memory operation,
load and clear, so hppa uses a kernel helper routine to implement
+@@ -290,18 +288,20 @@
+ __lll_robust_timedlock (&(futex), abstime, id, private)
+
+ #define __lll_unlock(futex, private) \
+- (void) \
+- ({ int val = atomic_exchange_rel (futex, 0); \
+- if (__builtin_expect (val > 1, 0)) \
+- lll_futex_wake (futex, 1, private); \
++ (void) \
++ ({ int *__futex = (futex); \
++ int val = atomic_exchange_rel (__futex, 0); \
++ if (__builtin_expect (val > 1, 0)) \
++ lll_futex_wake (__futex, 1, private); \
+ })
+ #define lll_unlock(futex, private) __lll_unlock(&(futex), private)
+
+ #define __lll_robust_unlock(futex,private) \
+- (void) \
+- ({ int val = atomic_exchange_rel (futex, 0); \
+- if (__builtin_expect (val & FUTEX_WAITERS, 0)) \
+- lll_futex_wake (futex, 1, private); \
++ (void) \
++ ({ int *__futex = (futex); \
++ int val = atomic_exchange_rel (__futex, 0); \
++ if (__builtin_expect (val & FUTEX_WAITERS, 0)) \
++ lll_futex_wake (__futex, 1, private); \
+ })
+ #define lll_robust_unlock(futex, private) \
+ __lll_robust_unlock(&(futex), private)
Modified: glibc-package/trunk/debian/patches/hppa/local-stack-grows-up.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/local-stack-grows-up.diff 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/patches/hppa/local-stack-grows-up.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -1,10 +1,10 @@
---
- nptl/allocatestack.c | 22 +++++++++++++++-------
- nptl/pthread_attr_getstack.c | 6 +++++-
- nptl/pthread_attr_setstack.c | 10 +++++++++-
- nptl/pthread_create.c | 12 +++++++++---
- nptl/pthread_getattr_np.c | 15 ++++++++++++++-
- 5 files changed, 52 insertions(+), 13 deletions(-)
+ nptl/allocatestack.c | 35 +++++++++++++++++++++++++----------
+ nptl/pthread_attr_getstack.c | 4 ++++
+ nptl/pthread_attr_setstack.c | 8 ++++++++
+ nptl/pthread_create.c | 19 ++++++++++++++++---
+ nptl/pthread_getattr_np.c | 12 ++++++++++++
+ 5 files changed, 65 insertions(+), 13 deletions(-)
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -69,9 +69,30 @@
char *guard = (char *) (((uintptr_t) pd - guardsize) & ~pagesize_m1);
#endif
if (mprotect (guard, guardsize, PROT_NONE) != 0)
-@@ -724,7 +733,6 @@
+@@ -678,9 +687,13 @@
+ prot) != 0)
+ goto mprot_error;
+ #elif _STACK_GROWS_UP
+- if (mprotect ((char *) pd - pd->guardsize,
+- pd->guardsize - guardsize, prot) != 0)
+- goto mprot_error;
++ char *new_guard = (char *) (((uintptr_t) pd - guardsize) & ~pagesize_m1);
++ char *old_guard = (char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1);
++ /* The guard size difference might be > 0, but once rounded
++ to the nearest page the size difference might be zero. */
++ if (old_guard - new_guard > 0)
++ if (mprotect (old_guard, new_guard - old_guard, prot) != 0)
++ goto mprot_error;
+ #endif
+
+ pd->guardsize = guardsize;
+@@ -723,8 +736,10 @@
+ #elif _STACK_GROWS_DOWN
*stack = stacktop;
#elif _STACK_GROWS_UP
++ /* We don't use stacktop. In _STACK_GROWS_UP the start
++ of the stack is simply stackblock (lowest address of
++ the stored block of memory for the stack). */
*stack = pd->stackblock;
- assert (*stack > 0);
#endif
@@ -79,12 +100,6 @@
return 0;
--- a/nptl/pthread_attr_getstack.c
+++ b/nptl/pthread_attr_getstack.c
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2010 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
@@ -33,7 +33,11 @@
iattr = (struct pthread_attr *) attr;
@@ -99,12 +114,6 @@
return 0;
--- a/nptl/pthread_attr_setstack.c
+++ b/nptl/pthread_attr_setstack.c
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003, 2006, 2010 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
@@ -48,7 +48,11 @@
#endif
@@ -131,7 +140,7 @@
return 0;
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
-@@ -392,12 +392,18 @@
+@@ -392,12 +392,25 @@
#ifdef _STACK_GROWS_DOWN
char *sp = CURRENT_STACK_FRAME;
size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1;
@@ -142,27 +151,27 @@
if (freesize > PTHREAD_STACK_MIN)
madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
+#else
-+ char *sp = CURRENT_STACK_FRAME;
-+ size_t freesize = ((char *) pd->stackblock + pd->stackblock_size - sp)
-+ & ~pagesize_m1;
-+ void *freeblock = (void *) (sp + PTHREAD_STACK_MIN);
-+ assert (freesize < pd->stackblock_size);
-+ if (freesize > PTHREAD_STACK_MIN)
-+ madvise (freeblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
++ /* Page aligned start of memory to free (higher than or equal
++ to current sp plus the minimum stack size). */
++ void *freeblock = (void*)((size_t)(CURRENT_STACK_FRAME
++ + PTHREAD_STACK_MIN
++ + pagesize_m1)
++ & ~pagesize_m1);
++ char *free_end = (char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1);
++ /* Is there any space to free? */
++ if (free_end > (char *)freeblock)
++ {
++ size_t freesize = (size_t)(free_end - (char *)freeblock);
++ assert (freesize < pd->stackblock_size);
++ madvise (freeblock, freesize, MADV_DONTNEED);
++ }
+#endif
/* If the thread is detached free the TCB. */
if (IS_DETACHED (pd))
--- a/nptl/pthread_getattr_np.c
+++ b/nptl/pthread_getattr_np.c
-@@ -1,4 +1,5 @@
--/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
-+/* Copyright (C) 2002, 2003, 2004, 2006, 2007,
-+ 2010 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-@@ -61,7 +62,11 @@
+@@ -61,7 +61,11 @@
if (__builtin_expect (thread->stackblock != NULL, 1))
{
iattr->stacksize = thread->stackblock_size;
@@ -174,7 +183,7 @@
}
else
{
-@@ -110,13 +115,21 @@
+@@ -110,13 +114,21 @@
{
/* Found the entry. Now we have the info we need. */
iattr->stacksize = rl.rlim_cur;
Modified: glibc-package/trunk/debian/patches/hppa/submitted-nptl-carlos.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/submitted-nptl-carlos.diff 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/patches/hppa/submitted-nptl-carlos.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -5,12 +5,11 @@
nptl/pthread_barrier_wait.c | 2 +-
nptl/sysdeps/pthread/Makefile | 2 ++
stdio-common/Makefile | 2 +-
- sunrpc/clnt_udp.c | 2 +-
- 7 files changed, 55 insertions(+), 24 deletions(-)
+ 6 files changed, 54 insertions(+), 23 deletions(-)
--- a/elf/rtld.c
+++ b/elf/rtld.c
-@@ -392,14 +392,14 @@
+@@ -393,14 +393,14 @@
know it is available. We do not have to clear the memory if we
do not have to use the temporary bootstrap_map. Global variables
are initialized to zero by default. */
@@ -234,14 +233,3 @@
CFLAGS-vfwprintf.c = -Wno-uninitialized
CFLAGS-tst-printf.c = -Wno-format
CFLAGS-tstdiomisc.c = -Wno-format
---- a/sunrpc/clnt_udp.c
-+++ b/sunrpc/clnt_udp.c
-@@ -456,7 +456,7 @@
- while (inlen < 0 && errno == EINTR);
- if (inlen < 0)
- {
-- if (errno == EWOULDBLOCK)
-+ if (errno == EWOULDBLOCK || errno == EAGAIN)
- continue;
- cu->cu_error.re_errno = errno;
- return (cu->cu_error.re_status = RPC_CANTRECV);
Deleted: glibc-package/trunk/debian/patches/hppa/submitted-stackinfo.diff
===================================================================
--- glibc-package/trunk/debian/patches/hppa/submitted-stackinfo.diff 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/patches/hppa/submitted-stackinfo.diff 2012-04-29 13:15:33 UTC (rev 5225)
@@ -1,15 +0,0 @@
-2011-03-11 Aurelien Jarno <aurelien@aurel32.net>
-
- * sysdeps/hppa/stackinfo.h: Define DEFAULT_STACK_PERMS with PF_X.
-
---- a/ports/sysdeps/hppa/stackinfo.h
-+++ b/ports/sysdeps/hppa/stackinfo.h
-@@ -25,4 +25,8 @@
- /* On PA the stack grows up. */
- #define _STACK_GROWS_UP 1
-
-+/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is
-+ * present, but it is presumed absent. */
-+#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X)
-+
- #endif /* stackinfo.h */
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2012-04-27 14:17:34 UTC (rev 5224)
+++ glibc-package/trunk/debian/patches/series 2012-04-29 13:15:33 UTC (rev 5225)
@@ -107,7 +107,12 @@
hppa/local-lowlevellock.diff
hppa/submitted-fcntl_h.diff
hppa/submitted-libm-hidden.diff
-hppa/submitted-stackinfo.diff
+hppa/cvs-stackinfo.diff
+hppa/local-EAGAIN.diff
+hppa/cvs-sys_procfs_h.diff
+hppa/cvs-test-tls-support.diff
+hppa/cvs-cloexec-nonblock.diff
+hppa/cvs-prlimit64.diff
hurd-i386/local-dl-dynamic-weak.diff
hurd-i386/local-enable-ldconfig.diff
Reply to: