This is an automated email from the git hooks/post-receive script. aurel32 pushed a commit to branch sid in repository glibc.
commit 85a07c27998f389564ff3a83e68bbfdae3fd3948 Author: Aurelien Jarno <[email protected]> Date: Sun Dec 31 13:40:02 2017 +0100 debian/patches/alpha/submitted-rlimit.diff: new patch to fix getrlimit and setrlimit with RLIM_INFINITY on alpha. --- debian/changelog | 2 + debian/patches/alpha/submitted-rlimit.diff | 137 +++++++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 140 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1480716..e0076c3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,8 @@ glibc (2.25-6) UNRELEASED; urgency=medium * debian/control.in/main, debian/copyright, rules.d/tarball.mk: prefer https for upstream links. * debian/control.in/main: bump Standards-Version to 4.1.3. + * debian/patches/alpha/submitted-rlimit.diff: new patch to fix getrlimit + and setrlimit with RLIM_INFINITY on alpha. -- Aurelien Jarno <[email protected]> Wed, 20 Dec 2017 22:29:01 +0100 diff --git a/debian/patches/alpha/submitted-rlimit.diff b/debian/patches/alpha/submitted-rlimit.diff new file mode 100644 index 0000000..bedda31 --- /dev/null +++ b/debian/patches/alpha/submitted-rlimit.diff @@ -0,0 +1,137 @@ +2017-12-30 Aurelien Jarno <[email protected]> + + [BZ #22648] + * sysdeps/unix/sysv/linux/alpha/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/alpha/setrlimit64.c: Ditto. + +--- /dev/null ++++ b/sysdeps/unix/sysv/linux/alpha/getrlimit64.c +@@ -0,0 +1,64 @@ ++/* Copyright (C) 2017 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/types.h> ++ ++/* Add this redirection so the strong_alias linking getrlimit64 to ++ {__}getrlimit does not throw a type error. */ ++#undef getrlimit ++#undef __getrlimit ++#define getrlimit getrlimit_redirect ++#define __getrlimit __getrlimit_redirect ++#include <sys/resource.h> ++#undef getrlimit ++#undef __getrlimit ++ ++/* 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 KERNEL_RLIM64_INFINITY 0xffffffffffffffffULL ++ ++int ++__getrlimit64 (enum __rlimit_resource resource, struct rlimit64 *rlimits) ++{ ++ struct rlimit64 krlimits; ++ ++ if (INLINE_SYSCALL_CALL (prlimit64, 0, resource, NULL, &krlimits) < 0) ++ return -1; ++ ++ if (krlimits.rlim_cur == KERNEL_RLIM64_INFINITY) ++ rlimits->rlim_cur = RLIM64_INFINITY; ++ else ++ rlimits->rlim_cur = krlimits.rlim_cur; ++ if (krlimits.rlim_max == KERNEL_RLIM64_INFINITY) ++ rlimits->rlim_max = RLIM64_INFINITY; ++ else ++ rlimits->rlim_max = krlimits.rlim_max; ++ ++ return 0; ++} ++libc_hidden_def (__getrlimit64) ++strong_alias (__getrlimit64, __GI_getrlimit) ++strong_alias (__getrlimit64, __GI___getrlimit) ++strong_alias (__getrlimit64, __getrlimit) ++weak_alias (__getrlimit64, getrlimit) ++ ++weak_alias (__getrlimit64, getrlimit64) ++libc_hidden_weak (getrlimit64) +--- /dev/null ++++ b/sysdeps/unix/sysv/linux/alpha/setrlimit64.c +@@ -0,0 +1,61 @@ ++/* Copyright (C) 2013-2017 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/types.h> ++ ++/* Add this redirection so the strong_alias linking setrlimit64 to ++ {__}setrlimit does not throw a type error. */ ++#undef setrlimit ++#undef __setrlimit ++#define setrlimit setrlimit_redirect ++#define __setrlimit __setrlimit_redirect ++#include <sys/resource.h> ++#undef setrlimit ++#undef __setrlimit ++ ++/* 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 KERNEL_RLIM64_INFINITY 0xffffffffffffffffULL ++ ++int ++__setrlimit64 (enum __rlimit_resource resource, const struct rlimit64 *rlimits) ++{ ++ struct rlimit64 krlimits; ++ ++ if (rlimits->rlim_cur == RLIM64_INFINITY) ++ krlimits.rlim_cur = KERNEL_RLIM64_INFINITY; ++ else ++ krlimits.rlim_cur = rlimits->rlim_cur; ++ if (rlimits->rlim_max == RLIM64_INFINITY) ++ krlimits.rlim_max = KERNEL_RLIM64_INFINITY; ++ else ++ krlimits.rlim_max = rlimits->rlim_max; ++ ++ return INLINE_SYSCALL_CALL (prlimit64, 0, resource, &krlimits, NULL); ++} ++ ++weak_alias (__setrlimit64, setrlimit64) ++ ++strong_alias (__setrlimit64, __setrlimit) ++weak_alias (__setrlimit64, setrlimit) ++#ifdef SHARED ++__hidden_ver1 (__setrlimit64, __GI___setrlimit, __setrlimit64); ++#endif diff --git a/debian/patches/series b/debian/patches/series index 8c63151..f526d89 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -35,6 +35,7 @@ alpha/submitted-dl-support.diff alpha/local-string-functions.diff alpha/submitted-termios_h.diff alpha/submitted-fts64.diff +alpha/submitted-rlimit.diff arm/local-sigaction.diff arm/unsubmitted-ldconfig-cache-abi.diff -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-glibc/glibc.git

