r5807 - in glibc-package/trunk/debian: . patches patches/mips testsuite-checking
Author: aurel32
Date: 2013-11-29 14:34:18 +0000 (Fri, 29 Nov 2013)
New Revision: 5807
Added:
glibc-package/trunk/debian/patches/mips/cvs-prlimit64.diff
Removed:
glibc-package/trunk/debian/patches/mips/local-prlimit64.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
glibc-package/trunk/debian/testsuite-checking/expected-results-mips-linux-gnu-libc
glibc-package/trunk/debian/testsuite-checking/expected-results-mips32-linux-gnu-mipsn32
glibc-package/trunk/debian/testsuite-checking/expected-results-mips32el-linux-gnu-mipsn32
glibc-package/trunk/debian/testsuite-checking/expected-results-mips64-linux-gnu-mips64
glibc-package/trunk/debian/testsuite-checking/expected-results-mips64el-linux-gnu-mips64
glibc-package/trunk/debian/testsuite-checking/expected-results-mipsel-linux-gnu-libc
Log:
patches/mips/cvs-prlimit64.diff: new patch from upstream to fix
getrlimit64/setrlimit64 with recent 64-bit kernels (Closes: #665897).
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/changelog 2013-11-29 14:34:18 UTC (rev 5807)
@@ -2,7 +2,10 @@
!!! PLEASE MOVE ALL MAJOR DEVELOPMENT TO THE 2.18 BRANCH OR UPSTREAM !!!
- *
+ [ Aurelien Jarno ]
+ * patches/mips/local-prlimit64.diff: remove.
+ * patches/mips/cvs-prlimit64.diff: new patch from upstream to fix
+ getrlimit64/setrlimit64 with recent 64-bit kernels (Closes: #665897).
[ Petr Salinger ]
* kfreebsd/local-sysdeps.diff: raise MAXLOGNAME
Added: glibc-package/trunk/debian/patches/mips/cvs-prlimit64.diff
===================================================================
--- glibc-package/trunk/debian/patches/mips/cvs-prlimit64.diff (rev 0)
+++ glibc-package/trunk/debian/patches/mips/cvs-prlimit64.diff 2013-11-29 14:34:18 UTC (rev 5807)
@@ -0,0 +1,139 @@
+2013-11-27 Aurelien Jarno <aurelien@aurel32.net>
+
+ * sysdeps/unix/sysv/linux/mips/getrlimit64.c: On O32 and N32 ABIs,
+ include the generic getrlimit64 version as __internal_getrlimit64
+ and add a wrapper around it to convert the RLIM64_INFINITY constant
+ between the libc and the kernel version.
+ * sysdeps/unix/sysv/linux/mips/setrlimit64.c: Ditto with setrlimit64.
+
+diff --git a/ports/sysdeps/unix/sysv/linux/mips/getrlimit64.c b/ports/sysdeps/unix/sysv/linux/mips/getrlimit64.c
+new file mode 100644
+index 0000000..10a5495
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/mips/getrlimit64.c
+@@ -0,0 +1,64 @@
++/* Copyright (C) 2013 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, see
++ <http://www.gnu.org/licenses/>. */
++
++#include <sys/resource.h>
++
++#if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32
++
++# define getrlimit64 static __internal_getrlimit64
++# undef libc_hidden_def
++# define libc_hidden_def(name)
++# include <sysdeps/unix/sysv/linux/getrlimit64.c>
++# undef getrlimit64
++# undef libc_hidden_def
++# define libc_hidden_def(name) hidden_def (name)
++
++/* RLIM64_INFINITY was supposed to be a glibc convention rather than
++ anything seen by the kernel, but it ended being passed to the kernel
++ through the prlimit64 syscall. Given that a lot of binaries with
++ the wrong constant value are in the wild, provide a wrapper function
++ fixing the value after the syscall. */
++
++# define GLIBC_RLIM64_INFINITY 0x7fffffffffffffffULL
++# define KERNEL_RLIM64_INFINITY 0xffffffffffffffffULL
++
++int
++getrlimit64 (enum __rlimit_resource resource,
++ struct rlimit64 *rlimits)
++{
++ struct rlimit64 krlimits;
++
++ if (__internal_getrlimit64 (resource, &krlimits) < 0)
++ return -1;
++
++ if (krlimits.rlim_cur == KERNEL_RLIM64_INFINITY)
++ rlimits->rlim_cur = GLIBC_RLIM64_INFINITY;
++ else
++ rlimits->rlim_cur = krlimits.rlim_cur;
++ if (krlimits.rlim_max == KERNEL_RLIM64_INFINITY)
++ rlimits->rlim_max = GLIBC_RLIM64_INFINITY;
++ else
++ rlimits->rlim_max = krlimits.rlim_max;
++
++ return 0;
++}
++
++libc_hidden_def (getrlimit64)
++
++#else /* !_ABI_O32 && !_ABI_N32 */
++# include <sysdeps/unix/sysv/linux/getrlimit64.c>
++#endif
+diff --git a/ports/sysdeps/unix/sysv/linux/mips/setrlimit64.c b/ports/sysdeps/unix/sysv/linux/mips/setrlimit64.c
+new file mode 100644
+index 0000000..8609f69
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/mips/setrlimit64.c
+@@ -0,0 +1,55 @@
++/* Copyright (C) 2013 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, see
++ <http://www.gnu.org/licenses/>. */
++
++#include <sys/resource.h>
++
++#if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32
++
++# define setrlimit64 static __internal_setrlimit64
++# include <sysdeps/unix/sysv/linux/setrlimit64.c>
++# undef setrlimit64
++
++/* RLIM64_INFINITY was supposed to be a glibc convention rather than
++ anything seen by the kernel, but it ended being passed to the kernel
++ through the prlimit64 syscall. Given that a lot of binaries with
++ the wrong constant value are in the wild, provide a wrapper function
++ fixing the value before the syscall. */
++
++# define GLIBC_RLIM64_INFINITY 0x7fffffffffffffffULL
++# define KERNEL_RLIM64_INFINITY 0xffffffffffffffffULL
++
++int
++setrlimit64 (enum __rlimit_resource resource,
++ const struct rlimit64 *rlimits)
++{
++ struct rlimit64 krlimits;
++
++ if (rlimits->rlim_cur == GLIBC_RLIM64_INFINITY)
++ krlimits.rlim_cur = KERNEL_RLIM64_INFINITY;
++ else
++ krlimits.rlim_cur = rlimits->rlim_cur;
++ if (rlimits->rlim_max == GLIBC_RLIM64_INFINITY)
++ krlimits.rlim_max = KERNEL_RLIM64_INFINITY;
++ else
++ krlimits.rlim_max = rlimits->rlim_max;
++
++ return __internal_setrlimit64 (resource, &krlimits);
++}
++
++#else /* !_ABI_O32 && !_ABI_N32 */
++# include <sysdeps/unix/sysv/linux/setrlimit64.c>
++#endif
Deleted: glibc-package/trunk/debian/patches/mips/local-prlimit64.diff
===================================================================
--- glibc-package/trunk/debian/patches/mips/local-prlimit64.diff 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/patches/mips/local-prlimit64.diff 2013-11-29 14:34:18 UTC (rev 5807)
@@ -1,116 +0,0 @@
-Same code than the common getrlimit64/setrlimit64, but without using the
-prlimit64 syscall until the inconsistency between kernel and userland is
-solved. See:
-
-http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
-
-
-diff --git a/ports/sysdeps/unix/sysv/linux/mips/getrlimit64.c b/ports/sysdeps/unix/sysv/linux/mips/getrlimit64.c
-new file mode 100644
-index 0000000..e889cbd
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/getrlimit64.c
-@@ -0,0 +1,49 @@
-+/* Copyright (C) 2010-2013 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, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#include <errno.h>
-+#include <sys/resource.h>
-+#include <sys/types.h>
-+#include <sysdep.h>
-+
-+/* Put the soft and hard limits for RESOURCE in *RLIMITS.
-+ Returns 0 if successful, -1 if not (and sets errno). */
-+int
-+getrlimit64 (enum __rlimit_resource resource, struct rlimit64 *rlimits)
-+{
-+ /* Same code than the common getrlimit64, but without using the
-+ prlimit64 syscall until the inconsistency between kernel and
-+ userland is solved. See:
-+ http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html */
-+
-+ struct rlimit rlimits32;
-+
-+ if (__getrlimit (resource, &rlimits32) < 0)
-+ return -1;
-+
-+ if (rlimits32.rlim_cur == RLIM_INFINITY)
-+ rlimits->rlim_cur = RLIM64_INFINITY;
-+ else
-+ rlimits->rlim_cur = rlimits32.rlim_cur;
-+ if (rlimits32.rlim_max == RLIM_INFINITY)
-+ rlimits->rlim_max = RLIM64_INFINITY;
-+ else
-+ rlimits->rlim_max = rlimits32.rlim_max;
-+
-+ return 0;
-+}
-+libc_hidden_def (getrlimit64)
-diff --git a/ports/sysdeps/unix/sysv/linux/mips/setrlimit64.c b/ports/sysdeps/unix/sysv/linux/mips/setrlimit64.c
-new file mode 100644
-index 0000000..73c90e2
---- /dev/null
-+++ b/ports/sysdeps/unix/sysv/linux/mips/setrlimit64.c
-@@ -0,0 +1,48 @@
-+/* Copyright (C) 2010-2013 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, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#include <errno.h>
-+#include <sys/resource.h>
-+#include <sys/types.h>
-+#include <sysdep.h>
-+
-+/* Set the soft and hard limits for RESOURCE to *RLIMITS.
-+ Only the super-user can increase hard limits.
-+ Return 0 if successful, -1 if not (and sets errno). */
-+int
-+setrlimit64 (resource, rlimits)
-+ enum __rlimit_resource resource;
-+ const struct rlimit64 *rlimits;
-+{
-+ /* Same code than the common setrlimit64, but without using the
-+ prlimit64 syscall until the inconsistency between kernel and
-+ userland is solved. See:
-+ http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html */
-+
-+ struct rlimit rlimits32;
-+
-+ if (rlimits->rlim_cur >= RLIM_INFINITY)
-+ rlimits32.rlim_cur = RLIM_INFINITY;
-+ else
-+ rlimits32.rlim_cur = rlimits->rlim_cur;
-+ if (rlimits->rlim_max >= RLIM_INFINITY)
-+ rlimits32.rlim_max = RLIM_INFINITY;
-+ else
-+ rlimits32.rlim_max = rlimits->rlim_max;
-+
-+ return __setrlimit (resource, &rlimits32);
-+}
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/patches/series 2013-11-29 14:34:18 UTC (rev 5807)
@@ -170,7 +170,7 @@
mips/local-r10k.diff
mips/submitted-rld_map.diff
mips/submitted-wordsize-clang.diff
-mips/local-prlimit64.diff
+mips/cvs-prlimit64.diff
powerpc/local-math-logb.diff
Modified: glibc-package/trunk/debian/testsuite-checking/expected-results-mips-linux-gnu-libc
===================================================================
--- glibc-package/trunk/debian/testsuite-checking/expected-results-mips-linux-gnu-libc 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/testsuite-checking/expected-results-mips-linux-gnu-libc 2013-11-29 14:34:18 UTC (rev 5807)
@@ -21,17 +21,19 @@
tst-tls3.out, Error 1
tst-waitid.out, Error 1
tst-cputimer1.out, Error 1
-tst-ptrguard1-static.out, Error 1
-tst-ptrguard1.out, Error 1
# These failures are caused by an inconsistency between userland and
-# kernel about prlimit64. They should be removed once the kernel or
-# the userland have been fixed in wheezy. See:
+# kernel about prlimit64. They should be removed once the build daemons
+# get a fixed version of eglibc/wheezy. See:
#
# http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
tst-cleanup0.out, Error 1
tst-oddstacklimit.out, Error 1
tst-pthread-getattr.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1.out, Error 1
+tst-ptrguard1.out, Error 1
tst-setvbuf1.out, Error 1
tst-stackguard1-static.out, Error 1
tst-stackguard1-static.out, Error 1
Modified: glibc-package/trunk/debian/testsuite-checking/expected-results-mips32-linux-gnu-mipsn32
===================================================================
--- glibc-package/trunk/debian/testsuite-checking/expected-results-mips32-linux-gnu-mipsn32 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/testsuite-checking/expected-results-mips32-linux-gnu-mipsn32 2013-11-29 14:34:18 UTC (rev 5807)
@@ -26,17 +26,19 @@
tst-tls3.out, Error 1
tst-waitid.out, Error 1
tst-cputimer1.out, Error 1
-tst-ptrguard1-static.out, Error 1
-tst-ptrguard1.out, Error 1
# These failures are caused by an inconsistency between userland and
-# kernel about prlimit64. They should be removed once the kernel or
-# the userland have been fixed in wheezy. See:
+# kernel about prlimit64. They should be removed once the build daemons
+# get a fixed version of eglibc/wheezy. See:
#
# http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
tst-cleanup0.out, Error 1
tst-oddstacklimit.out, Error 1
tst-pthread-getattr.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1.out, Error 1
+tst-ptrguard1.out, Error 1
tst-setvbuf1.out, Error 1
tst-stackguard1-static.out, Error 1
tst-stackguard1-static.out, Error 1
Modified: glibc-package/trunk/debian/testsuite-checking/expected-results-mips32el-linux-gnu-mipsn32
===================================================================
--- glibc-package/trunk/debian/testsuite-checking/expected-results-mips32el-linux-gnu-mipsn32 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/testsuite-checking/expected-results-mips32el-linux-gnu-mipsn32 2013-11-29 14:34:18 UTC (rev 5807)
@@ -27,17 +27,19 @@
tst-tls3.out, Error 1
tst-waitid.out, Error 1
tst-cputimer1.out, Error 1
-tst-ptrguard1-static.out, Error 1
-tst-ptrguard1.out, Error 1
# These failures are caused by an inconsistency between userland and
-# kernel about prlimit64. They should be removed once the kernel or
-# the userland have been fixed in wheezy. See:
+# kernel about prlimit64. They should be removed once the build daemons
+# get a fixed version of eglibc/wheezy. See:
#
# http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
tst-cleanup0.out, Error 1
tst-oddstacklimit.out, Error 1
tst-pthread-getattr.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1.out, Error 1
+tst-ptrguard1.out, Error 1
tst-setvbuf1.out, Error 1
tst-stackguard1-static.out, Error 1
tst-stackguard1-static.out, Error 1
Modified: glibc-package/trunk/debian/testsuite-checking/expected-results-mips64-linux-gnu-mips64
===================================================================
--- glibc-package/trunk/debian/testsuite-checking/expected-results-mips64-linux-gnu-mips64 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/testsuite-checking/expected-results-mips64-linux-gnu-mips64 2013-11-29 14:34:18 UTC (rev 5807)
@@ -26,17 +26,19 @@
tst-waitid.out, Error 1
tst-writev.out, Error 1
tst-cputimer1.out, Error 1
-tst-ptrguard1-static.out, Error 1
-tst-ptrguard1.out, Error 1
# These failures are caused by an inconsistency between userland and
-# kernel about prlimit64. They should be removed once the kernel or
-# the userland have been fixed in wheezy. See:
+# kernel about prlimit64. They should be removed once the build daemons
+# get a fixed version of eglibc/wheezy. See:
#
# http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
tst-cleanup0.out, Error 1
tst-oddstacklimit.out, Error 1
tst-pthread-getattr.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1.out, Error 1
+tst-ptrguard1.out, Error 1
tst-setvbuf1.out, Error 1
tst-stackguard1-static.out, Error 1
tst-stackguard1-static.out, Error 1
Modified: glibc-package/trunk/debian/testsuite-checking/expected-results-mips64el-linux-gnu-mips64
===================================================================
--- glibc-package/trunk/debian/testsuite-checking/expected-results-mips64el-linux-gnu-mips64 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/testsuite-checking/expected-results-mips64el-linux-gnu-mips64 2013-11-29 14:34:18 UTC (rev 5807)
@@ -27,17 +27,19 @@
tst-waitid.out, Error 1
tst-writev.out, Error 1
tst-cputimer1.out, Error 1
-tst-ptrguard1-static.out, Error 1
-tst-ptrguard1.out, Error 1
# These failures are caused by an inconsistency between userland and
-# kernel about prlimit64. They should be removed once the kernel or
-# the userland have been fixed in wheezy. See:
+# kernel about prlimit64. They should be removed once the build daemons
+# get a fixed version of eglibc/wheezy. See:
#
# http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
tst-cleanup0.out, Error 1
tst-oddstacklimit.out, Error 1
tst-pthread-getattr.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1.out, Error 1
+tst-ptrguard1.out, Error 1
tst-setvbuf1.out, Error 1
tst-stackguard1-static.out, Error 1
tst-stackguard1-static.out, Error 1
Modified: glibc-package/trunk/debian/testsuite-checking/expected-results-mipsel-linux-gnu-libc
===================================================================
--- glibc-package/trunk/debian/testsuite-checking/expected-results-mipsel-linux-gnu-libc 2013-11-29 13:07:11 UTC (rev 5806)
+++ glibc-package/trunk/debian/testsuite-checking/expected-results-mipsel-linux-gnu-libc 2013-11-29 14:34:18 UTC (rev 5807)
@@ -22,17 +22,19 @@
tst-tls3.out, Error 1
tst-waitid.out, Error 1
tst-cputimer1.out, Error 1
-tst-ptrguard1-static.out, Error 1
-tst-ptrguard1.out, Error 1
# These failures are caused by an inconsistency between userland and
-# kernel about prlimit64. They should be removed once the kernel or
-# the userland have been fixed in wheezy. See:
+# kernel about prlimit64. They should be removed once the build daemons
+# get a fixed version of eglibc/wheezy. See:
#
# http://www.linux-mips.org/archives/linux-mips/2013-06/msg00541.html
tst-cleanup0.out, Error 1
tst-oddstacklimit.out, Error 1
tst-pthread-getattr.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1-static.out, Error 1
+tst-ptrguard1.out, Error 1
+tst-ptrguard1.out, Error 1
tst-setvbuf1.out, Error 1
tst-stackguard1-static.out, Error 1
tst-stackguard1-static.out, Error 1
Reply to: