diff options
Diffstat (limited to 'src/client/linux/android_ucontext.h')
-rw-r--r-- | src/client/linux/android_ucontext.h | 32 |
1 files changed, 6 insertions, 26 deletions
diff --git a/src/client/linux/android_ucontext.h b/src/client/linux/android_ucontext.h index 30a4e6c2..7942db79 100644 --- a/src/client/linux/android_ucontext.h +++ b/src/client/linux/android_ucontext.h @@ -35,33 +35,15 @@ #ifndef GOOGLE_BREAKPAD_CLIENT_LINUX_ANDROID_UCONTEXT_H_ #define GOOGLE_BREAKPAD_CLIENT_LINUX_ANDROID_UCONTEXT_H_ +#include <android/api-level.h> #include <signal.h> -#if !defined(__GLIBC__) && (defined(__arm__) || defined(__thumb__)) +// <signal.h> didn't include <asm/sigcontext.h> before API level 8. +// It is used to define struct sigcontext properly. +#if defined(__arm__) && __ANDROID_API__ < 8 +#include <asm/sigcontext.h> +#endif -struct sigcontext { - uint32_t trap_no; - uint32_t error_code; - uint32_t oldmask; - uint32_t arm_r0; - uint32_t arm_r1; - uint32_t arm_r2; - uint32_t arm_r3; - uint32_t arm_r4; - uint32_t arm_r5; - uint32_t arm_r6; - uint32_t arm_r7; - uint32_t arm_r8; - uint32_t arm_r9; - uint32_t arm_r10; - uint32_t arm_fp; - uint32_t arm_ip; - uint32_t arm_sp; - uint32_t arm_lr; - uint32_t arm_pc; - uint32_t arm_cpsr; - uint32_t fault_address; -}; typedef uint32_t __sigset_t; typedef struct sigcontext mcontext_t; typedef struct ucontext { @@ -72,6 +54,4 @@ typedef struct ucontext { __sigset_t uc_sigmask; } ucontext_t; -#endif - #endif // GOOGLE_BREAKPAD_CLIENT_LINUX_ANDROID_UCONTEXT_H_ |