diff options
author | Daniel Erat <derat@google.com> | 2015-08-24 12:50:25 -0600 |
---|---|---|
committer | Daniel Erat <derat@google.com> | 2015-08-24 12:50:25 -0600 |
commit | 59c5f4b0fb104e8e4806e4934a3d5d112ad695ab (patch) | |
tree | a392cfe92bfebf2f2ee13d6bd8ca3e4a09cafa51 /sandbox/linux/system_headers/x86_64_linux_ucontext.h | |
parent | db7c5941371d7639578632d11f31fa6698198c36 (diff) | |
download | libchrome-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.h | 88 |
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_ |