Index: sandbox/linux/system_headers/android_x86_64_ucontext.h |
diff --git a/sandbox/linux/system_headers/android_x86_64_ucontext.h b/sandbox/linux/system_headers/android_x86_64_ucontext.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..778e6d073bb2905e218b5e90248aad17a43d0a89 |
--- /dev/null |
+++ b/sandbox/linux/system_headers/android_x86_64_ucontext.h |
@@ -0,0 +1,88 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_ANDROID_X86_64_UCONTEXT_H_ |
+#define SANDBOX_LINUX_SYSTEM_HEADERS_ANDROID_X86_64_UCONTEXT_H_ |
+ |
+// We do something compatible with glibc. Hopefully, at some point Android will |
+// provide that for us, and __BIONIC_HAVE_UCONTEXT_T should be defined. |
+// Spec: |
+// http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-AMD64/LSB-Core-AMD64/libc-ddefs.html#AEN5668 |
+ |
+#if !defined(__BIONIC_HAVE_UCONTEXT_T) |
+#include <asm/sigcontext.h> |
+ |
+struct _libc_fpxreg { |
+ unsigned short significand[4]; |
+ unsigned short exponent; |
+ unsigned short padding[3]; |
+}; |
+ |
+struct _libc_xmmreg { |
+ uint32_t element[4]; |
+}; |
+ |
+struct _libc_fpstate { |
+ uint16_t cwd; |
+ uint16_t swd; |
+ uint16_t twd; |
+ uint16_t fop; |
+ uint64_t rip; |
+ uint64_t rdp; |
+ uint32_t mxcsr; |
+ uint32_t mxcsr_mask; |
+ struct _libc_fpxreg _st[8]; |
+ struct _libc_xmmreg _xmm[16]; |
+ uint32_t padding[24]; |
+}; |
+ |
+typedef uint64_t greg_t; |
+ |
+typedef struct { |
+ greg_t gregs[23]; |
+ struct _libc_fpstate* fpregs; |
+ unsigned long __reserved1[8]; |
+} mcontext_t; |
+ |
+enum { |
+ REG_R8 = 0, |
+ REG_R9, |
+ REG_R10, |
+ REG_R11, |
+ REG_R12, |
+ REG_R13, |
+ REG_R14, |
+ REG_R15, |
+ REG_RDI, |
+ REG_RSI, |
+ REG_RBP, |
+ REG_RBX, |
+ REG_RDX, |
+ REG_RAX, |
+ REG_RCX, |
+ REG_RSP, |
+ REG_RIP, |
+ REG_EFL, |
+ REG_CSGSFS, |
+ REG_ERR, |
+ REG_TRAPNO, |
+ REG_OLDMASK, |
+ REG_CR2, |
+ NGREG, |
+}; |
+ |
+typedef struct ucontext { |
+ unsigned long 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; |
+ |
+#else |
+#include <sys/ucontext.h> |
+#endif // __BIONIC_HAVE_UCONTEXT_T |
+ |
+#endif // SANDBOX_LINUX_SYSTEM_HEADERS_ANDROID_X86_64_UCONTEXT_H_ |