summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch')
-rw-r--r--meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch b/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch
new file mode 100644
index 0000000000..fcb324e15f
--- /dev/null
+++ b/meta/recipes-core/musl/musl/0001-riscv-Define-sigcontext-again.patch
@@ -0,0 +1,48 @@
+commit a0993f8f0f161423ecdcb754f282ffd2fe47a7b5
+Author: Rich Felker <dalias@aerifal.cx>
+Date: Wed Oct 2 09:28:03 2019 -0400
+
+ reintroduce riscv64 struct sigcontext
+
+ commit ab3eb89a8b83353cdaab12ed017a67a7730f90e9 removed it as part of
+ correcting the mcontext_t definition, but there is still code using
+ struct sigcontext and expecting the member names present in it, most
+ notably libgcc_eh. almost all such usage is incorrect, but bring back
+ struct sigcontext at least for now so as not to introduce regressions.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+diff --git a/arch/riscv64/bits/signal.h b/arch/riscv64/bits/signal.h
+index 03fe48c1..2ff4be30 100644
+--- a/arch/riscv64/bits/signal.h
++++ b/arch/riscv64/bits/signal.h
+@@ -6,12 +6,6 @@
+ # define SIGSTKSZ 8192
+ #endif
+
+-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+-typedef unsigned long greg_t;
+-typedef unsigned long gregset_t[32];
+-typedef union __riscv_mc_fp_state fpregset_t;
+-#endif
+-
+ typedef unsigned long __riscv_mc_gp_state[32];
+
+ struct __riscv_mc_f_ext_state {
+@@ -41,6 +35,16 @@ typedef struct mcontext_t {
+ union __riscv_mc_fp_state __fpregs;
+ } mcontext_t;
+
++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
++typedef unsigned long greg_t;
++typedef unsigned long gregset_t[32];
++typedef union __riscv_mc_fp_state fpregset_t;
++struct sigcontext {
++ gregset_t gregs;
++ fpregset_t fpregs;
++};
++#endif
++
+ struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;