about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-11-07 16:27:35 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-11-07 16:27:35 +0000
commit596cc360aa9f0484d6621fd9dfa5de83c3a24dc5 (patch)
tree429562abeb09809b004957798b71a3603c474d3a
parent00c86a37d1b63044e3169d1f2ebec23447c73f79 (diff)
downloadglibc-596cc360aa9f0484d6621fd9dfa5de83c3a24dc5.tar.gz
glibc-596cc360aa9f0484d6621fd9dfa5de83c3a24dc5.tar.xz
glibc-596cc360aa9f0484d6621fd9dfa5de83c3a24dc5.zip
Fix __ASSUME_MLOCK2 for ARM, MicroBlaze (bug 23867).
The generic kernel-features.h defines __ASSUME_MLOCK2 for 4.4 and
later kernels.  However, for 32-bit ARM binaries running on 64-bit ARM
kernels, and for MicroBlaze, the syscall was only wired up in the 4.7
kernel.  (32-bit ARM kernels did have the syscall from 4.4 onwards.)
This patch duly arranges for the macro to be undefined for those
architectures for kernels before 4.7.

Tested with build-many-glibcs.py for its ARM and MicroBlaze
configurations.

	[BZ #23867]
	* sysdeps/unix/sysv/linux/arm/kernel-features.h
	[__LINUX_KERNEL_VERSION < 0x040700] (__ASSUME_MLOCK2): Undefine.
	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
	[__LINUX_KERNEL_VERSION < 0x040700] (__ASSUME_MLOCK2): Undefine.
-rw-r--r--ChangeLog8
-rw-r--r--sysdeps/unix/sysv/linux/arm/kernel-features.h7
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/kernel-features.h5
3 files changed, 20 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3dcf4b30b0..b259e3a24e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2018-11-07  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #23867]
+	* sysdeps/unix/sysv/linux/arm/kernel-features.h
+	[__LINUX_KERNEL_VERSION < 0x040700] (__ASSUME_MLOCK2): Undefine.
+	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
+	[__LINUX_KERNEL_VERSION < 0x040700] (__ASSUME_MLOCK2): Undefine.
+
 2018-11-07  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* support/support_test_compare_string.c
diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h
index 7831ab1e0f..c6e745227c 100644
--- a/sysdeps/unix/sysv/linux/arm/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h
@@ -40,5 +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.  */
+#if __LINUX_KERNEL_VERSION < 0x040700
+# undef __ASSUME_MLOCK2
+#endif
+
 #undef __ASSUME_CLONE_DEFAULT
 #define __ASSUME_CLONE_BACKWARDS	1
diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
index e8e2ac6a87..dfee428f49 100644
--- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
@@ -58,6 +58,11 @@
 # undef __ASSUME_EXECVEAT
 #endif
 
+/* Support for the mlock2 syscall was added in 4.7.  */
+#if __LINUX_KERNEL_VERSION < 0x040700
+# undef __ASSUME_MLOCK2
+#endif
+
 /* Support for the copy_file_range syscall was added in 4.10.  */
 #if __LINUX_KERNEL_VERSION < 0x040A00
 # undef __ASSUME_COPY_FILE_RANGE