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

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: