Browse Source

gdb: The signal definitions of musl and gdb collide

This fixes compilation of gdb on arm64.

The kernel defines "struct sigcontext" in asm/sigcontext.h and musl libc
defines it in signal.h, which collides.
Kernel 4.14 misses the definitions of struct user_sve_header so we still
have to use the aarch64-sve-linux-sigcontext.h header file which also
provides that and make sure aarch64-sve-linux-sigcontext.h does not
provide the same headers as the kernel or musl.

Fixes: FS#2040
Signed-off-by: Hauke Mehrtens <[email protected]>
Hauke Mehrtens 6 years ago
parent
commit
bc89690f6e
1 changed files with 44 additions and 0 deletions
  1. 44 0
      package/devel/gdb/patches/010-aarch64-headers.patch

+ 44 - 0
package/devel/gdb/patches/010-aarch64-headers.patch

@@ -0,0 +1,44 @@
+The signal definitions of musl and gdb collide
+
+The kernel defines "struct sigcontext" in asm/sigcontext.h and musl libc 
+defines it in signal.h which collides. 
+Kernel 4.14 misses the definitions of struct user_sve_header so we still 
+have to use the aarch64-sve-linux-sigcontext.h header file which also 
+provides that and make sure aarch64-sve-linux-sigcontext.h does not 
+provide the same headers as the kernel or musl.
+
+--- a/gdb/nat/aarch64-sve-linux-ptrace.h
++++ b/gdb/nat/aarch64-sve-linux-ptrace.h
+@@ -20,12 +20,12 @@
+ #ifndef AARCH64_SVE_LINUX_PTRACE_H
+ #define AARCH64_SVE_LINUX_PTRACE_H
+ 
+-#include <asm/sigcontext.h>
++#include <signal.h>
+ #include <sys/utsname.h>
+ #include <sys/ptrace.h>
+ #include <asm/ptrace.h>
+ 
+-#ifndef SVE_SIG_ZREGS_SIZE
++#ifndef SVE_PT_REGS_SVE
+ #include "aarch64-sve-linux-sigcontext.h"
+ #endif
+ 
+--- a/gdb/nat/aarch64-sve-linux-sigcontext.h
++++ b/gdb/nat/aarch64-sve-linux-sigcontext.h
+@@ -19,6 +19,7 @@
+ #ifndef AARCH64_SVE_LINUX_SIGCONTEXT_H
+ #define AARCH64_SVE_LINUX_SIGCONTEXT_H
+ 
++#ifndef SVE_MAGIC
+ #define SVE_MAGIC	0x53564501
+ 
+ struct sve_context {
+@@ -128,6 +129,7 @@ struct sve_context {
+ 	(SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET)
+ 
+ #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
++#endif
+ 
+ /* SVE/FP/SIMD state (NT_ARM_SVE) */
+