Skip to contentSkip to conversation

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

PATCH In review Khem Raj 2 participants 2 messages Jul 24, 2019

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

PATCH v2 1/1 linux-libc-header: Fix ptrace.h and prctl.h conflict on aarch64

This is a backport from 5.2 release upstream, it fixes long standing build failure on musl/aarch64

---
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
meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch new file +62 -0
new file mode 100644
index 0000000000..5ea46e9590
@@ -0,0 +1,62 @@
+From 35341ca0614ab13e1ef34ad4f29a39e15ef31fa8 Mon Sep 17 00:00:00 2001
+From: Anisse Astier <[email protected]>
+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: [email protected]
+Acked-by: Dave Martin <[email protected]>
+Signed-off-by: Anisse Astier <[email protected]>
+Signed-off-by: Will Deacon <[email protected]>
+---
+ 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
+
meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb +1 -0
index e76120c5b8..473688d95f 100644
@@ -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"
Signature · 1 line
2.22.0
#1 lore raw

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

Quoted 101 lines · Khem Raj

This is a backport from 5.2 release upstream, it fixes long standing build failure on musl/aarch64

---
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
meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-arm64-sve-uapi-asm-ptrace.h-should-not-depend-on-uap.patch new file +62 -0
new file mode 100644
index 0000000000..5ea46e9590
@@ -0,0 +1,62 @@
+From 35341ca0614ab13e1ef34ad4f29a39e15ef31fa8 Mon Sep 17 00:00:00 2001
+From: Anisse Astier <[email protected]>
+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: [email protected]
+Acked-by: Dave Martin <[email protected]>
+Signed-off-by: Anisse Astier <[email protected]>
+Signed-off-by: Will Deacon <[email protected]>
+---
+ 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
+
meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb +1 -1
index e76120c5b8..473688d95f 100644
@@ -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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Signature · 3 lines
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II