Fix __ASSUME_MLOCK2 for ARM, MicroBlaze (bug 23867)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Fix __ASSUME_MLOCK2 for ARM, MicroBlaze (bug 23867)

Joseph Myers
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  <[hidden email]>

        [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

--
Joseph S. Myers
[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Fix __ASSUME_MLOCK2 for ARM, MicroBlaze (bug 23867)

Adhemerval Zanella-2


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  <[hidden email]>
>
> [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
>