LCOV - code coverage report
Current view: directory - src/trusted/service_runtime/osx - nacl_signal_64.c (source / functions) Found Hit Coverage
Test: coverage.lcov Lines: 66 56 84.8 %
Date: 2014-06-18 Functions: 0 0 -

       1                 : /*
       2                 :  * Copyright (c) 2012 The Native Client Authors. All rights reserved.
       3                 :  * Use of this source code is governed by a BSD-style license that can be
       4                 :  * found in the LICENSE file.
       5                 :  */
       6                 : 
       7                 : #include <signal.h>
       8                 : #include <sys/ucontext.h>
       9                 : 
      10                 : #include "native_client/src/trusted/service_runtime/nacl_signal.h"
      11                 : 
      12                 : /*
      13                 :  * Definition of the POSIX ucontext_t for Mac OS X can be found in:
      14                 :  * /usr/include/mach/i386/_structs.h
      15                 :  */
      16                 : 
      17           26597 : static void SignalContextFromRegs(struct NaClSignalContext *dest,
      18           26597 :                                   const x86_thread_state64_t *src) {
      19           26597 :   dest->prog_ctr = src->__rip;
      20           26597 :   dest->stack_ptr = src->__rsp;
      21                 : 
      22           26597 :   dest->rax = src->__rax;
      23           26597 :   dest->rbx = src->__rbx;
      24           26597 :   dest->rcx = src->__rcx;
      25           26597 :   dest->rdx = src->__rdx;
      26           26597 :   dest->rsi = src->__rsi;
      27           26597 :   dest->rdi = src->__rdi;
      28           26597 :   dest->rbp = src->__rbp;
      29           26597 :   dest->r8  = src->__r8;
      30           26597 :   dest->r9  = src->__r9;
      31           26597 :   dest->r10 = src->__r10;
      32           26597 :   dest->r11 = src->__r11;
      33           26597 :   dest->r12 = src->__r12;
      34           26597 :   dest->r13 = src->__r13;
      35           26597 :   dest->r14 = src->__r14;
      36           26597 :   dest->r15 = src->__r15;
      37           26597 :   dest->flags = (uint32_t) src->__rflags;
      38           26597 :   dest->cs = (uint32_t) src->__cs;
      39           26597 :   dest->fs = (uint32_t) src->__fs;
      40           26597 :   dest->gs = (uint32_t) src->__gs;
      41           26597 : }
      42                 : 
      43              78 : static void SignalContextToRegs(x86_thread_state64_t *dest,
      44              78 :                                 const struct NaClSignalContext *src) {
      45              78 :   dest->__rip = src->prog_ctr;
      46              78 :   dest->__rsp = src->stack_ptr;
      47                 : 
      48              78 :   dest->__rax = src->rax;
      49              78 :   dest->__rbx = src->rbx;
      50              78 :   dest->__rcx = src->rcx;
      51              78 :   dest->__rdx = src->rdx;
      52              78 :   dest->__rsi = src->rsi;
      53              78 :   dest->__rdi = src->rdi;
      54              78 :   dest->__rbp = src->rbp;
      55              78 :   dest->__r8  = src->r8;
      56              78 :   dest->__r9  = src->r9;
      57              78 :   dest->__r10 = src->r10;
      58              78 :   dest->__r11 = src->r11;
      59              78 :   dest->__r12 = src->r12;
      60              78 :   dest->__r13 = src->r13;
      61              78 :   dest->__r14 = src->r14;
      62              78 :   dest->__r15 = src->r15;
      63              78 :   dest->__rflags = src->flags;
      64              78 :   dest->__cs = src->cs;
      65              78 :   dest->__fs = src->fs;
      66              78 :   dest->__gs = src->gs;
      67              78 : }
      68                 : 
      69           26597 : void NaClSignalContextFromMacThreadState(struct NaClSignalContext *dest,
      70           26597 :                                          const x86_thread_state_t *src) {
      71           26597 :   SignalContextFromRegs(dest, &src->uts.ts64);
      72           26597 : }
      73                 : 
      74              78 : void NaClSignalContextToMacThreadState(x86_thread_state_t *dest,
      75              78 :                                        const struct NaClSignalContext *src) {
      76              78 :   SignalContextToRegs(&dest->uts.ts64, src);
      77              78 : }
      78                 : 
      79                 : /*
      80                 :  * Fill a signal context structure from the raw platform dependent
      81                 :  * signal information.
      82                 :  */
      83               0 : void NaClSignalContextFromHandler(struct NaClSignalContext *sig_ctx,
      84               0 :                                   const void *raw_ctx) {
      85               0 :   ucontext_t *uctx = (ucontext_t *) raw_ctx;
      86               0 :   SignalContextFromRegs(sig_ctx, &uctx->uc_mcontext->__ss);
      87               0 : }
      88                 : 
      89                 : /*
      90                 :  * Update the raw platform dependent signal information from the
      91                 :  * signal context structure.
      92                 :  */
      93               0 : void NaClSignalContextToHandler(void *raw_ctx,
      94               0 :                                 const struct NaClSignalContext *sig_ctx) {
      95               0 :   ucontext_t *uctx = (ucontext_t *) raw_ctx;
      96               0 :   SignalContextToRegs(&uctx->uc_mcontext->__ss, sig_ctx);
      97               0 : }

Generated by: LCOV version 1.7