Index: sandbox/linux/services/android_arm_ucontext.h |
diff --git a/sandbox/linux/services/android_arm_ucontext.h b/sandbox/linux/services/android_arm_ucontext.h |
index 0c21e2092796d8ce83100bf8e9876c0a009cc00e..c4d748e5d511108346d377b7953a7887a426935e 100644 |
--- a/sandbox/linux/services/android_arm_ucontext.h |
+++ b/sandbox/linux/services/android_arm_ucontext.h |
@@ -5,10 +5,20 @@ |
#ifndef SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |
#define SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |
+#if !defined(__BIONIC_HAVE_UCONTEXT_T) |
#include <asm/sigcontext.h> |
-typedef long int greg_t; |
-typedef unsigned long sigset_t; |
+// We also need greg_t for the sandbox, include it in this header as well. |
+typedef unsigned long greg_t; |
+ |
+// sigset_t from arch/arm/include/asm/signal.h in the Linux kernel. |
+typedef struct { |
+ unsigned long sig[64 / 8 / sizeof(long)]; // Always 64 bits (yes we assume |
+ // 8 bits per char). |
+} android_header_sigset_t; // Change name to avoid collissions if sigset_t |
+ // gets defined in newer Android headers. |
+ |
+//typedef unsigned long sigset_t; |
typedef struct ucontext { |
unsigned long uc_flags; |
struct ucontext *uc_link; |
@@ -16,9 +26,14 @@ typedef struct ucontext { |
struct sigcontext uc_mcontext; |
sigset_t uc_sigmask; |
/* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ |
- int __not_used[32 - (sizeof (sigset_t) / sizeof (int))]; |
+ int __not_used[32 - (sizeof (android_header_sigset_t) / sizeof (int))]; |
/* Last for extensibility. Eight byte aligned because some |
coprocessors require eight byte alignment. */ |
unsigned long uc_regspace[128] __attribute__((__aligned__(8))); |
} ucontext_t; |
+ |
+#else |
+#include <sys/ucontext.h> |
+#endif // __BIONIC_HAVE_UCONTEXT_T |
+ |
#endif // SANDBOX_LINUX_SERVICES_ANDROID_ARM_UCONTEXT_H_ |