summaryrefslogtreecommitdiff
path: root/arch/mips/bits/signal.h
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-11-23 14:35:25 -0500
committerRich Felker <dalias@aerifal.cx>2012-11-23 14:35:25 -0500
commitc72fc23843906e2571e817a62c94cee15648b7dc (patch)
tree539517daf0b9e34cba766a89d9775722456f5c41 /arch/mips/bits/signal.h
parentac562aa1ef4012f617583f474a8d8e5c972ed6ee (diff)
downloadmusl-c72fc23843906e2571e817a62c94cee15648b7dc.tar.gz
sigcontext/mcontext cleanup for arch-specific bits
with these changes, the members/types of mcontext_t and related stuff should closely match the glibc definitions. unlike glibc, however, the definitions here avoid using typedefs as much as possible and work directly with the underlying types, to minimize namespace pollution from signal.h in the default (_BSD_SOURCE) profile. this is a first step in improving compatibility with applications which poke at context/register information -- mainly debuggers, trace utilities, etc. additional definitions in ucontext.h and other headers may be needed later. if feature test macros are used to request a conforming namespace, mcontext_t is replaced with an opaque structure of the equivalent size and alignment; conforming programs cannot examine its contents anyway.
Diffstat (limited to 'arch/mips/bits/signal.h')
-rw-r--r--arch/mips/bits/signal.h22
1 files changed, 11 insertions, 11 deletions
diff --git a/arch/mips/bits/signal.h b/arch/mips/bits/signal.h
index 9e1384ff..9b4861d3 100644
--- a/arch/mips/bits/signal.h
+++ b/arch/mips/bits/signal.h
@@ -1,6 +1,16 @@
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef struct sigcontext
+{
+ unsigned sc_regmask, sc_status;
+ unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
+ unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
+ unsigned long long sc_mdhi, sc_mdlo;
+ unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
+} mcontext_t;
+#else
typedef struct {
unsigned __mc1[2];
unsigned long long __mc2[65];
@@ -8,6 +18,7 @@ typedef struct {
unsigned long long __mc4[2];
unsigned __mc5[6];
} mcontext_t;
+#endif
typedef struct __ucontext {
unsigned long uc_flags;
@@ -34,17 +45,6 @@ typedef struct __ucontext {
#define SIG_UNBLOCK 2
#define SIG_SETMASK 3
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-struct sigcontext
-{
- unsigned sc_regmask, sc_status;
- unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
- unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
- unsigned long long sc_mdhi, sc_mdlo;
- unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
-};
-#endif
-
#endif
#define SIGHUP 1