Fix __ASSUME_MLOCK2 for ARM, MicroBlaze (bug 23867)

Message ID alpine.DEB.2.21.1811062255400.9324@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers Nov. 6, 2018, 10:56 p.m. UTC
  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.

2018-11-06  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.
  

Comments

Adhemerval Zanella Nov. 7, 2018, 11:50 a.m. UTC | #1
On 06/11/2018 20:56, Joseph Myers wrote:
> 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.

LGTM, for ARM it follows 10fdf8513f776 (arm64: unistd32.h: wire up 
missing syscalls for compat tasks) and for MicroBlaze fbce3befd60d4
( microblaze: Wire up userfaultfd, membarrier, mlock2 syscalls).

> 
> 2018-11-06  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.
> 
> 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
>
  

Patch

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