about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-11-23 17:53:50 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-11-23 17:53:50 +0000
commit1283c478aa0a9b3d84320db5745a61b7f61b360c (patch)
treedef3ad714311a2880898cd7b82ac20805d515987
parentc089fd80c793b1a987e1a6e9a08248b0861ec7ed (diff)
downloadglibc-1283c478aa0a9b3d84320db5745a61b7f61b360c.tar.gz
glibc-1283c478aa0a9b3d84320db5745a61b7f61b360c.tar.xz
glibc-1283c478aa0a9b3d84320db5745a61b7f61b360c.zip
Fix Arm __ASSUME_COPY_FILE_RANGE (bug 23915).
The generic kernel-features.h defines __ASSUME_COPY_FILE_RANGE for 4.5
and later kernels.  However, for 32-bit Arm binaries running on 64-bit
Arm kernels, the syscall was only wired up in the 4.7 kernel, although
the 32-bit Arm kernel had the syscall from 4.5 onwards.  This patch
corrects the Arm kernel-features.h to undefine the macro for
configured minimum kernel versions before 4.7.

Tested (compilation only) with a build-many-glibcs.py build for
arm-linux-gnueabi.

	[BZ #23915]
	* sysdeps/unix/sysv/linux/arm/kernel-features.h
	[__LINUX_KERNEL_VERSION < 0x040700] (__ASSUME_COPY_FILE_RANGE):
	Undefine.
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/unix/sysv/linux/arm/kernel-features.h7
2 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index ce7a55f1fc..f8f7672c5b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2018-11-23  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #23915]
+	* sysdeps/unix/sysv/linux/arm/kernel-features.h
+	[__LINUX_KERNEL_VERSION < 0x040700] (__ASSUME_COPY_FILE_RANGE):
+	Undefine.
+
 2018-11-23  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/x86/Makefile (tests): Add tst-cet-legacy-1a.
diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h
index c6e745227c..e4ca98bfea 100644
--- a/sysdeps/unix/sysv/linux/arm/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h
@@ -40,11 +40,12 @@
 #define __ASSUME_RECV_SYSCALL   1
 #define __ASSUME_SEND_SYSCALL	1
 
-/* Support for the mlock2 syscall was added to the compat syscall
-   table for 64-bit kernels in 4.7, although present in 32-bit kernels
-   from 4.4.  */
+/* Support for the mlock2 and copy_file_range syscalls was added to
+   the compat syscall table for 64-bit kernels in 4.7, although
+   present in 32-bit kernels from 4.4 and 4.5 respectively.  */
 #if __LINUX_KERNEL_VERSION < 0x040700
 # undef __ASSUME_MLOCK2
+# undef __ASSUME_COPY_FILE_RANGE
 #endif
 
 #undef __ASSUME_CLONE_DEFAULT