Open Enclave  0.17.0
Data Structures | Macros | Typedefs
exception.h File Reference

This file defines data structures to set up vectored exception handlers in the enclave. More...

#include <openenclave/bits/defs.h>
#include <openenclave/bits/types.h>
Include dependency graph for exception.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _oe_basic_xstate
 Blob that contains X87 and SSE data. More...
 
struct  _oe_context
 Register state to be saved before an exception and restored after the exception has been handled in the enclave. More...
 
struct  _oe_exception_record
 Exception context structure with the exception code, flags, address and calling context of the exception. More...
 

Macros

#define OE_EXCEPTION_CONTINUE_SEARCH   0x0
 Return value used by an enclave vectored exception handler to indicate to the dispatcher that it should continue searching for the next handler. More...
 
#define OE_EXCEPTION_CONTINUE_EXECUTION   0xFFFFFFFF
 Return value used by an enclave vectored exception handler to indicate to the dispatcher that it should stop searching and continue execution. More...
 
#define OE_EXCEPTION_DIVIDE_BY_ZERO   0x0
 Divider exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_BREAKPOINT   0x1
 Debug exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_BOUND_OUT_OF_RANGE   0x2
 Bound range exceeded exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_ILLEGAL_INSTRUCTION   0x3
 Illegal instruction exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_ACCESS_VIOLATION   0x4
 Access violation exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_PAGE_FAULT   0x5
 Page fault exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_X87_FLOAT_POINT   0x6
 x87 floating point exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_MISALIGNMENT   0x7
 Alignment check exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_SIMD_FLOAT_POINT   0x8
 SIMD floating point exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_UNKNOWN   0xFFFFFFFF
 Unknown exception code, used by vectored exception handler.
 
#define OE_EXCEPTION_FLAGS_HARDWARE   0x1
 Hardware exception flag, set when enclave software exited due to hardware exception.
 
#define OE_EXCEPTION_FLAGS_SOFTWARE   0x2
 Software exception flag, set when enclave software exited due to software exception.
 
#define OE_SGX_PAGE_FAULT_P_FLAG   0x1
 The following flags are used to interpret the error_code of the oe_exception_record_t struct when a PF or GP exception occurs. More...
 
#define OE_SGX_PAGE_FAULT_WR_FLAG   0x2
 Read/Write flag 0 - The fault was caused by a read. More...
 
#define OE_SGX_PAGE_FAULT_US_FLAG   0x4
 U/S flag 0 - The fault was caused by a supervisor-mode access. More...
 
#define OE_SGX_PAGE_FAULT_RSVD   0x8
 RSVD flag 0 - The fault was not caused by a reserved bit violation. More...
 
#define OE_SGX_PAGE_FAULT_ID_FLAG   0x10
 I/D flag 0 - The fault was not caused by an instruction fetch. More...
 
#define OE_SGX_PAGE_FAULT_PK_FLAG   0x20
 Protection Key flag 0 - The fault was not caused by protection keys. More...
 
#define OE_SGX_PAGE_FAULT_SGX_FLAG   0x8000
 SGX flag 0 - The fault was not related to SGX. More...
 

Typedefs

typedef struct _oe_basic_xstate oe_basic_xstate_t
 Blob that contains X87 and SSE data. More...
 
typedef struct _oe_context oe_context_t
 Register state to be saved before an exception and restored after the exception has been handled in the enclave. More...
 
typedef struct _oe_exception_record oe_exception_record_t
 Exception context structure with the exception code, flags, address and calling context of the exception. More...
 
typedef uint64_t(* oe_vectored_exception_handler_t) (oe_exception_record_t *exception_context)
 oe_vectored_exception_handler_t - Function pointer for a vectored exception handler in an enclave. More...
 

Detailed Description

This file defines data structures to set up vectored exception handlers in the enclave.