Index: src/platform-linux.cc |
diff --git a/src/platform-linux.cc b/src/platform-linux.cc |
index bed069dfb79283280a9e50f4c5e247b258d5ca1e..5c05a3ad662af0d4db1ed0c8f2c4e2d4881e2a88 100644 |
--- a/src/platform-linux.cc |
+++ b/src/platform-linux.cc |
@@ -964,6 +964,46 @@ typedef struct ucontext { |
__sigset_t uc_sigmask; |
} ucontext_t; |
+#elif !defined(__GLIBC__) && defined(__i386__) |
+// x86 version for Android. |
+struct _libc_fpreg { |
+ uint16_t significand[4]; |
+ uint16_t exponent; |
+}; |
+ |
+struct _libc_fpstate { |
+ uint64_t cw; |
+ uint64_t sw; |
+ uint64_t tag; |
+ uint64_t ipoff; |
+ uint64_t cssel; |
+ uint64_t dataoff; |
+ uint64_t datasel; |
+ struct _libc_fpreg _st[8]; |
+ uint64_t status; |
+}; |
+ |
+typedef struct _libc_fpstate *fpregset_t; |
+ |
+typedef struct mcontext { |
+ int32_t gregs[19]; |
+ fpregset_t fpregs; |
+ int64_t oldmask; |
+ int64_t cr2; |
+} mcontext_t; |
+ |
+typedef uint64_t __sigset_t; |
+ |
+typedef struct ucontext { |
+ uint64_t uc_flags; |
+ struct ucontext *uc_link; |
+ stack_t uc_stack; |
+ mcontext_t uc_mcontext; |
+ __sigset_t uc_sigmask; |
+ struct _libc_fpstate __fpregs_mem; |
+} ucontext_t; |
+ |
+enum { REG_EBP = 6, REG_ESP = 7, REG_EIP = 14 }; |
#endif |