summaryrefslogtreecommitdiff
path: root/sandbox/linux/system_headers/x86_64_linux_ucontext.h
diff options
context:
space:
mode:
authorDaniel Erat <derat@google.com>2015-08-24 12:50:25 -0600
committerDaniel Erat <derat@google.com>2015-08-24 12:50:25 -0600
commit59c5f4b0fb104e8e4806e4934a3d5d112ad695ab (patch)
treea392cfe92bfebf2f2ee13d6bd8ca3e4a09cafa51 /sandbox/linux/system_headers/x86_64_linux_ucontext.h
parentdb7c5941371d7639578632d11f31fa6698198c36 (diff)
downloadlibchrome-59c5f4b0fb104e8e4806e4934a3d5d112ad695ab.tar.gz
Pull in upstream crypto/ and sandbox/ dirs at r334380.
Add code from https://chromium.googlesource.com/chromium/src/crypto at 3b5d1294 (r333554) and https://chromium.googlesource.com/chromium/src/sandbox at 50337f60 (r334108). These won't be built in AOSP, but they correspond to the versions checked out by Chrome OS. BUG=chromium:521005 Change-Id: Id82858f3a870d8ab9e3e8fe1c3bb598ba065dd14
Diffstat (limited to 'sandbox/linux/system_headers/x86_64_linux_ucontext.h')
-rw-r--r--sandbox/linux/system_headers/x86_64_linux_ucontext.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/sandbox/linux/system_headers/x86_64_linux_ucontext.h b/sandbox/linux/system_headers/x86_64_linux_ucontext.h
new file mode 100644
index 0000000000..57b8919a9c
--- /dev/null
+++ b/sandbox/linux/system_headers/x86_64_linux_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_X86_64_LINUX_UCONTEXT_H_
+#define SANDBOX_LINUX_SYSTEM_HEADERS_X86_64_LINUX_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_X86_64_LINUX_UCONTEXT_H_