|
Message-Id: <20201212043042.32355-1-ariadne@dereferenced.org> Date: Sat, 12 Dec 2020 04:30:53 GMT From: Ariadne Conill <ariadne@...eferenced.org> To: musl@...ts.openwall.com Cc: Ariadne Conill <ariadne@...eferenced.org> Subject: [PATCH v2] sh: fix incorrect GNU mcontext_t member definitions When compiling as _GNU_SOURCE, mcontext_t structure mirrors names used in sigcontext structure, but without the sc_ prefix. Split out sigcontext structure and adjust the mcontext_t member names accordingly. This is necessary to compile libucontext on sh architecture. --- v2: fix mcontext_t.gregs member name typo, fix pthread mcontext member usage arch/sh/bits/signal.h | 13 +++++++++++-- arch/sh/pthread_arch.h | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/arch/sh/bits/signal.h b/arch/sh/bits/signal.h index 160311fa..d0b14828 100644 --- a/arch/sh/bits/signal.h +++ b/arch/sh/bits/signal.h @@ -9,7 +9,16 @@ #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) typedef int greg_t, gregset_t[16]; typedef int freg_t, fpregset_t[16]; -typedef struct sigcontext { +typedef struct { + unsigned long oldmask; + unsigned long gregs[16]; + unsigned long pc, pr, sr; + unsigned long gbr, mach, macl; + unsigned long fpregs[16]; + unsigned long xfpregs[16]; + unsigned int fpscr, fpul, ownedfp; +} mcontext_t; +struct sigcontext { unsigned long oldmask; unsigned long sc_regs[16]; unsigned long sc_pc, sc_pr, sc_sr; @@ -17,7 +26,7 @@ typedef struct sigcontext { unsigned long sc_fpregs[16]; unsigned long sc_xfpregs[16]; unsigned int sc_fpscr, sc_fpul, sc_ownedfp; -} mcontext_t; +}; #else typedef struct { unsigned long __regs[58]; diff --git a/arch/sh/pthread_arch.h b/arch/sh/pthread_arch.h index 0fcf70d2..199c2d55 100644 --- a/arch/sh/pthread_arch.h +++ b/arch/sh/pthread_arch.h @@ -8,9 +8,9 @@ static inline uintptr_t __get_tp() #define TLS_ABOVE_TP #define GAP_ABOVE_TP 8 -#define MC_PC sc_pc +#define MC_PC pc #ifdef __FDPIC__ -#define MC_GOT sc_regs[12] +#define MC_GOT gregs[12] #define CANCEL_GOT (*(uintptr_t *)((char *)__syscall_cp_asm+sizeof(uintptr_t))) #endif -- 2.29.2
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.