[0/4] Fix getrlimit/setrlimit/prlimit on Alpha and 32-bit machines
Commit Message
On 2018-01-06 11:00, Aurelien Jarno wrote:
> On 2018-01-05 23:55, Joseph Myers wrote:
> > One of these patches breaks the testsuite build for various (but not all)
> > 32-bit configurations.
> >
> > https://sourceware.org/ml/libc-testresults/2018-q1/msg00035.html
> >
> > The failures are all of the form:
> >
> > /scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc/io/test-lfs.o: In function `do_prepare':
> > /scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc-src/io/test-lfs.c:75: undefined reference to `getrlimit64'
> > collect2: error: ld returned 1 exit status
> > ../Rules:202: recipe for target '/scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc/io/test-lfs' failed
> > make[3]: *** [/scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc/io/test-lfs] Error 1
>
> Sorry about that. The issue happens on 32-bit configurations which have
> a minimum version >= 2.2, and thus which don't need the 2GiB limited
> compat getrlimit64. I wrongly moved one case under the #ifdef
> __RLIM_T_MATCHES_RLIM64_T case, while it should have been copied
> instead.
>
> I am currently testing the following patch:
It worked fine on arm-linux-gnueabihf with no regression. Here is the
full patch.
From 5551e9755c3bbcd0c6682a1626eb869596d201c6 Mon Sep 17 00:00:00 2001
From: Aurelien Jarno <aurelien@aurel32.net>
Date: Sat, 6 Jan 2018 11:48:16 +0100
Subject: [PATCH] getrlimit64: fix for 32-bit configurations with default
version >= 2.2
Commit 24731685 ("prlimit: Translate old_rlimit from RLIM64_INFINITY to
RLIM_INFINITY") broken the getrlimit64 for 32-bit configurations which
do no need the 2GiB limited compat getrlimit (default version >= 2.2).
This patch fixes that by restoring the weak alias in that case.
Changelog:
* sysdeps/unix/sysv/linux/getrlimit64 (getrlimit64)
[!__RLIM_T_MATCHES_RLIM64_T]
[!SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)]: Define as weak alias of
__getrlimit64. Add libc_hidden_weak.
---
ChangeLog | 7 +++++++
sysdeps/unix/sysv/linux/getrlimit64.c | 3 +++
2 files changed, 10 insertions(+)
Comments
On 2018-01-06 12:01, Aurelien Jarno wrote:
> On 2018-01-06 11:00, Aurelien Jarno wrote:
> > On 2018-01-05 23:55, Joseph Myers wrote:
> > > One of these patches breaks the testsuite build for various (but not all)
> > > 32-bit configurations.
> > >
> > > https://sourceware.org/ml/libc-testresults/2018-q1/msg00035.html
> > >
> > > The failures are all of the form:
> > >
> > > /scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc/io/test-lfs.o: In function `do_prepare':
> > > /scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc-src/io/test-lfs.c:75: undefined reference to `getrlimit64'
> > > collect2: error: ld returned 1 exit status
> > > ../Rules:202: recipe for target '/scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc/io/test-lfs' failed
> > > make[3]: *** [/scratch/jmyers/glibc-bot/build/glibcs/arm-linux-gnueabi/glibc/io/test-lfs] Error 1
> >
> > Sorry about that. The issue happens on 32-bit configurations which have
> > a minimum version >= 2.2, and thus which don't need the 2GiB limited
> > compat getrlimit64. I wrongly moved one case under the #ifdef
> > __RLIM_T_MATCHES_RLIM64_T case, while it should have been copied
> > instead.
> >
> > I am currently testing the following patch:
>
> It worked fine on arm-linux-gnueabihf with no regression. Here is the
> full patch.
I have now committed it, as I don't want to leave things broken for too
long.
Aurelien
@@ -1,3 +1,10 @@
+2018-01-06 Aurelien Jarno <aurelien@aurel32.net>
+
+ * sysdeps/unix/sysv/linux/getrlimit64 (getrlimit64)
+ [!__RLIM_T_MATCHES_RLIM64_T]
+ [!SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)]: Define as weak alias of
+ __getrlimit64. Add libc_hidden_weak.
+
2018-01-06 Samuel Thibault <samuel.thibault@ens-lyon.org>
* sysdeps/mach/hurd/i386/jmp_buf-macros.h: New file.
@@ -81,4 +81,7 @@ __old_getrlimit64 (enum __rlimit_resource resource, struct rlimit64 *rlimits)
}
versioned_symbol (libc, __getrlimit64, getrlimit64, GLIBC_2_2);
compat_symbol (libc, __old_getrlimit64, getrlimit64, GLIBC_2_1);
+#else
+weak_alias (__getrlimit64, getrlimit64)
+libc_hidden_weak (getrlimit64)
#endif /* __RLIM_T_MATCHES_RLIM64_T */