From c1f0601389db64d97b3a4580c9037d7e1c9daefb Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 12 Jan 2017 02:19:00 +0000 Subject: Fix MIPS o32 posix_fadvise. The posix_fadvise consolidation broke posix_fadvise for MIPS o32, so resulting in posix/tst-posix_fadvise failing. MIPS o32 (and the other ABIs) has only the posix_fadvise64 syscall, which acts like posix_fadvise64_64 (in the o32 case, because of the alignment argument it's actually a 7-argument syscall). The generic posix_fadvise implementation presumes that if __NR_fadvise64 is defined, it's for the case where a single len argument is passed to the syscall rather than two syscall arguments in the case of a 32-bit system. The generic posix_fadvise64 works fine for this case (defining __NR_fadvise64_64 to __NR_fadvise64 as needed). ARM has a posix_fadvise.c that uses __posix_fadvise64_l64 in posix_fadvise, and that approach also works for MIPS o32, so this patch makes MIPS o32 include the ARM file. Tested for MIPS o32. * sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c: New file. --- ChangeLog | 2 ++ sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c | 4 ++++ 2 files changed, 6 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c diff --git a/ChangeLog b/ChangeLog index 5b0601f..16eb52a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2017-01-12 Joseph Myers + * sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c: New file. + * math/fgetexcptflg.c (__fegetexceptflag): Store 0 in fexcept_t object. diff --git a/sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c b/sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c new file mode 100644 index 0000000..6e9c3f9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips32/posix_fadvise.c @@ -0,0 +1,4 @@ +/* The o32 MIPS fadvise64 syscall behaves as fadvise64_64. The ARM + implementation of posix_fadvise works correctly for this case; the + generic implementation mishandles it. */ +#include -- cgit v1.1