diff mbox series

[V2] linux-libc-header: Fix ptrace.h and prctl.h conflict on aarch64

Message ID 20190724065615.13704-1-raj.khem@gmail.com
State Accepted
Commit eff0a21a835808c5e2862b820a1ebb200ff100db
Headers show
Series [V2] linux-libc-header: Fix ptrace.h and prctl.h conflict on aarch64 | expand

Commit Message

Khem Raj July 24, 2019, 6:56 a.m. UTC
This is a backport from 5.2 release upstream, it fixes long standing
build failure on musl/aarch64

Signed-off-by: Khem Raj <raj.khem@gmail.com>

---
v2: Drop unused patch

 ...sm-ptrace.h-should-not-depend-on-uap.patch | 62 +++++++++++++++++++
 .../linux-libc-headers_5.0.bb                 |  1 +
 2 files changed, 63 insertions(+)
 create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch

-- 
2.22.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Bruce Ashfield July 24, 2019, 12:30 p.m. UTC | #1
v2 looks good to me.

I have a full linux-libc-headers from 5.2 just about ready to go, so
I'll make sure to test and drop this patch as part of that work.

Cheers,

Bruce

On Wed, Jul 24, 2019 at 2:56 AM Khem Raj <raj.khem@gmail.com> wrote:
>

> This is a backport from 5.2 release upstream, it fixes long standing

> build failure on musl/aarch64

>

> Signed-off-by: Khem Raj <raj.khem@gmail.com>

> ---

> v2: Drop unused patch

>

>  ...sm-ptrace.h-should-not-depend-on-uap.patch | 62 +++++++++++++++++++

>  .../linux-libc-headers_5.0.bb                 |  1 +

>  2 files changed, 63 insertions(+)

>  create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch

>

> diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch

> new file mode 100644

> index 0000000000..5ea46e9590

> --- /dev/null

> +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch

> @@ -0,0 +1,62 @@

> +From 35341ca0614ab13e1ef34ad4f29a39e15ef31fa8 Mon Sep 17 00:00:00 2001

> +From: Anisse Astier <aastier@freebox.fr>

> +Date: Mon, 17 Jun 2019 15:22:22 +0200

> +Subject: [PATCH] arm64/sve: <uapi/asm/ptrace.h> should not depend on

> + <uapi/linux/prctl.h>

> +

> +Pulling linux/prctl.h into asm/ptrace.h in the arm64 UAPI headers causes

> +userspace build issues for any program (e.g. strace and qemu) that

> +includes both <sys/prctl.h> and <linux/ptrace.h> when using musl libc:

> +

> +  | error: redefinition of 'struct prctl_mm_map'

> +  |  struct prctl_mm_map {

> +

> +See https://github.com/foundriesio/meta-lmp/commit/6d4a106e191b5d79c41b9ac78fd321316d3013c0

> +for a public example of people working around this issue.

> +

> +Although it's a bit grotty, fix this breakage by duplicating the prctl

> +constant definitions. Since these are part of the kernel ABI, they

> +cannot be changed in future and so it's not the end of the world to have

> +them open-coded.

> +

> +Fixes: 43d4da2c45b2 ("arm64/sve: ptrace and ELF coredump support")

> +

> +Upstream-Status: Backport [https://github.com/torvalds/linux/commit/35341ca0614ab13e1ef34ad4f29a39e15ef31fa8]

> +Cc: stable@vger.kernel.org

> +Acked-by: Dave Martin <Dave.Martin@arm.com>

> +Signed-off-by: Anisse Astier <aastier@freebox.fr>

> +Signed-off-by: Will Deacon <will.deacon@arm.com>

> +---

> + arch/arm64/include/uapi/asm/ptrace.h | 8 +++-----

> + 1 file changed, 3 insertions(+), 5 deletions(-)

> +

> +diff --git a/arch/arm64/include/uapi/asm/ptrace.h b/arch/arm64/include/uapi/asm/ptrace.h

> +index 97c53203150b..e932284993d4 100644

> +--- a/arch/arm64/include/uapi/asm/ptrace.h

> ++++ b/arch/arm64/include/uapi/asm/ptrace.h

> +@@ -65,8 +65,6 @@

> +

> + #ifndef __ASSEMBLY__

> +

> +-#include <linux/prctl.h>

> +-

> + /*

> +  * User structures for general purpose, floating point and debug registers.

> +  */

> +@@ -113,10 +111,10 @@ struct user_sve_header {

> +

> + /*

> +  * Common SVE_PT_* flags:

> +- * These must be kept in sync with prctl interface in <linux/ptrace.h>

> ++ * These must be kept in sync with prctl interface in <linux/prctl.h>

> +  */

> +-#define SVE_PT_VL_INHERIT             (PR_SVE_VL_INHERIT >> 16)

> +-#define SVE_PT_VL_ONEXEC              (PR_SVE_SET_VL_ONEXEC >> 16)

> ++#define SVE_PT_VL_INHERIT             ((1 << 17) /* PR_SVE_VL_INHERIT */ >> 16)

> ++#define SVE_PT_VL_ONEXEC              ((1 << 18) /* PR_SVE_SET_VL_ONEXEC */ >> 16)

> +

> +

> + /*

> +--

> +2.22.0

> +

> diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb

> index e76120c5b8..473688d95f 100644

> --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb

> +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb

> @@ -12,6 +12,7 @@ SRC_URI_append_libc-musl = "\

>  SRC_URI_append = "\

>      file://0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch \

>      file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \

> +    file://0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch \

>  "

>

>  SRC_URI[md5sum] = "7381ce8aac80a01448e065ce795c19c0"

> --

> 2.22.0

>

> --

> _______________________________________________

> Openembedded-core mailing list

> Openembedded-core@lists.openembedded.org

> http://lists.openembedded.org/mailman/listinfo/openembedded-core




-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff mbox series

Patch

diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch
new file mode 100644
index 0000000000..5ea46e9590
--- /dev/null
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch
@@ -0,0 +1,62 @@ 
+From 35341ca0614ab13e1ef34ad4f29a39e15ef31fa8 Mon Sep 17 00:00:00 2001
+From: Anisse Astier <aastier@freebox.fr>
+Date: Mon, 17 Jun 2019 15:22:22 +0200
+Subject: [PATCH] arm64/sve: <uapi/asm/ptrace.h> should not depend on
+ <uapi/linux/prctl.h>
+
+Pulling linux/prctl.h into asm/ptrace.h in the arm64 UAPI headers causes
+userspace build issues for any program (e.g. strace and qemu) that
+includes both <sys/prctl.h> and <linux/ptrace.h> when using musl libc:
+
+  | error: redefinition of 'struct prctl_mm_map'
+  |  struct prctl_mm_map {
+
+See https://github.com/foundriesio/meta-lmp/commit/6d4a106e191b5d79c41b9ac78fd321316d3013c0
+for a public example of people working around this issue.
+
+Although it's a bit grotty, fix this breakage by duplicating the prctl
+constant definitions. Since these are part of the kernel ABI, they
+cannot be changed in future and so it's not the end of the world to have
+them open-coded.
+
+Fixes: 43d4da2c45b2 ("arm64/sve: ptrace and ELF coredump support")
+
+Upstream-Status: Backport [https://github.com/torvalds/linux/commit/35341ca0614ab13e1ef34ad4f29a39e15ef31fa8]
+Cc: stable@vger.kernel.org
+Acked-by: Dave Martin <Dave.Martin@arm.com>
+Signed-off-by: Anisse Astier <aastier@freebox.fr>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+---
+ arch/arm64/include/uapi/asm/ptrace.h | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/arch/arm64/include/uapi/asm/ptrace.h b/arch/arm64/include/uapi/asm/ptrace.h
+index 97c53203150b..e932284993d4 100644
+--- a/arch/arm64/include/uapi/asm/ptrace.h
++++ b/arch/arm64/include/uapi/asm/ptrace.h
+@@ -65,8 +65,6 @@
+ 
+ #ifndef __ASSEMBLY__
+ 
+-#include <linux/prctl.h>
+-
+ /*
+  * User structures for general purpose, floating point and debug registers.
+  */
+@@ -113,10 +111,10 @@ struct user_sve_header {
+ 
+ /*
+  * Common SVE_PT_* flags:
+- * These must be kept in sync with prctl interface in <linux/ptrace.h>
++ * These must be kept in sync with prctl interface in <linux/prctl.h>
+  */
+-#define SVE_PT_VL_INHERIT		(PR_SVE_VL_INHERIT >> 16)
+-#define SVE_PT_VL_ONEXEC		(PR_SVE_SET_VL_ONEXEC >> 16)
++#define SVE_PT_VL_INHERIT		((1 << 17) /* PR_SVE_VL_INHERIT */ >> 16)
++#define SVE_PT_VL_ONEXEC		((1 << 18) /* PR_SVE_SET_VL_ONEXEC */ >> 16)
+ 
+ 
+ /*
+-- 
+2.22.0
+
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb
index e76120c5b8..473688d95f 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb
@@ -12,6 +12,7 @@  SRC_URI_append_libc-musl = "\
 SRC_URI_append = "\
     file://0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch \
     file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \
+    file://0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch \
 "
 
 SRC_URI[md5sum] = "7381ce8aac80a01448e065ce795c19c0"