#include "comma/runtime/commart.h"
#include <assert.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
Go to the source code of this file.
Classes | |
struct | _Unwind_Exception |
struct | LSDA_Header |
struct | Call_Site |
struct | Action_Record |
struct | comma_exception |
Defines | |
#define | __STDC_FORMAT_MACROS |
Typedefs | |
typedef void(* | _Unwind_Exception_Cleanup_Fn )(_Unwind_Reason_Code reason, struct _Unwind_Exception *exc) |
typedef int | _Unwind_Action |
Enumerations | |
enum | _Unwind_Reason_Code { _URC_NO_REASON = 0, _URC_FOREIGN_EXCEPTION_CAUGHT = 1, _URC_FATAL_PHASE2_ERROR = 2, _URC_FATAL_PHASE1_ERROR = 3, _URC_NORMAL_STOP = 4, _URC_END_OF_STACK = 5, _URC_HANDLER_FOUND = 6, _URC_INSTALL_CONTEXT = 7, _URC_CONTINUE_UNWIND = 8 } |
enum | Dwarf_Encoding { DW_EH_PE_omit = 0xFF, DW_EH_PE_uleb128 = 0x01, DW_EH_PE_udata2 = 0x02, DW_EH_PE_udata4 = 0x03, DW_EH_PE_udata8 = 0x04, DW_EH_PE_sleb128 = 0x09, DW_EH_PE_sdata2 = 0x0A, DW_EH_PE_sdata4 = 0x0B, DW_EH_PE_sdata8 = 0x0C } |
enum | Dwarf_Application { DW_EH_PE_absptr = 0x00, DW_EH_PE_pcrel = 0x10, DW_EH_PE_datarel = 0x30 } |
enum | comma_exception_flag { COMMA_DYN_MESSAGE = 1 << 0 } |
Functions | |
_Unwind_Reason_Code | _Unwind_RaiseException (struct _Unwind_Exception *exception_object) |
void | _Unwind_Resume (struct _Unwind_Exception *exception_object) |
uintptr_t | _Unwind_GetLanguageSpecificData (struct _Unwind_Context *context) |
uintptr_t | _Unwind_GetRegionStart (struct _Unwind_Context *context) |
uintptr_t | _Unwind_GetIP (struct _Unwind_Context *context) |
void | _Unwind_SetGR (struct _Unwind_Context *context, int reg, uintptr_t value) |
void | _Unwind_SetIP (struct _Unwind_Context *context, uintptr_t IP) |
static unsigned char * | parse_uleb128 (unsigned char *start, uint64_t *value) |
static unsigned char * | parse_sleb128 (unsigned char *start, int64_t *value) |
static unsigned char * | parse_dwarf_value (Dwarf_Encoding ID, unsigned char *start, uint64_t *value) |
static void | fatal_error (const char *message) |
struct comma_exception * | to_comma_exception (struct _Unwind_Exception *header) |
struct _Unwind_Exception * | to_Unwind_Exception (struct comma_exception *exception) |
static int | parse_LSDA (struct _Unwind_Context *context, struct LSDA_Header *lsda) |
static void | dump_LSDA (struct LSDA_Header *lsda) |
static unsigned char * | parse_Call_Site (struct LSDA_Header *lsda, unsigned char *ptr, struct Call_Site *dst) |
static void | dump_Call_Site (struct Call_Site *site) |
static unsigned char * | parse_Action_Record (unsigned char *ptr, struct Action_Record *dst) |
static int | find_applicable_call_site (struct LSDA_Header *lsda, struct _Unwind_Context *context, struct Call_Site *dst) |
static int | match_exception (struct LSDA_Header *lsda, struct _Unwind_Exception *exceptionObject, uint64_t action_index, uint64_t *dst) |
static void | install_handler (struct _Unwind_Context *context, struct _Unwind_Exception *exceptionObject, int64_t landing_pad, uintptr_t id) |
static void | _comma_cleanup_exception (_Unwind_Reason_Code reason, struct _Unwind_Exception *exc) |
void | _comma_raise_exception (comma_exinfo_t info, const char *file_name, uint32_t line_number, const char *message) |
void | _comma_raise_nexception (comma_exinfo_t info, const char *file_name, uint32_t line_number, const char *message, uint32_t length) |
void | _comma_reraise_exception (struct comma_exception *exception) |
void | _comma_raise_system (uint32_t id, const char *file_name, uint32_t line_number, const char *message) |
_Unwind_Reason_Code | _comma_eh_personality (int version, _Unwind_Action actions, uint64_t exceptionClass, struct _Unwind_Exception *exceptionObject, struct _Unwind_Context *context) |
void | _comma_unhandled_exception (struct comma_exception *exception) |
comma_exinfo_t | _comma_get_exception (comma_exception_id id) |
Variables | |
static const _Unwind_Action | _UA_SEARCH_PHASE = 1 |
static const _Unwind_Action | _UA_CLEANUP_PHASE = 2 |
static const _Unwind_Action | _UA_HANDLER_FRAME = 4 |
static const _Unwind_Action | _UA_FORCE_UNWIND = 8 |
static const uint64_t | Comma_Exception_Class_ID = 0x534D570434D410Ull |
char * | _comma_exinfo_program_error = "PROGRAM_ERROR" |
char * | _comma_exinfo_constraint_error = "CONSTRAINT_ERROR" |
char * | _comma_exinfo_assertion_error = "ASSERTION_ERROR" |
#define __STDC_FORMAT_MACROS |
Definition at line 20 of file crt_exceptions.c.
typedef int _Unwind_Action |
Definition at line 106 of file crt_exceptions.c.
typedef void(* _Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code reason, struct _Unwind_Exception *exc) |
Definition at line 49 of file crt_exceptions.c.
enum _Unwind_Reason_Code |
_URC_NO_REASON | |
_URC_FOREIGN_EXCEPTION_CAUGHT | |
_URC_FATAL_PHASE2_ERROR | |
_URC_FATAL_PHASE1_ERROR | |
_URC_NORMAL_STOP | |
_URC_END_OF_STACK | |
_URC_HANDLER_FOUND | |
_URC_INSTALL_CONTEXT | |
_URC_CONTINUE_UNWIND |
Definition at line 33 of file crt_exceptions.c.
enum comma_exception_flag |
Definition at line 512 of file crt_exceptions.c.
enum Dwarf_Application |
Definition at line 139 of file crt_exceptions.c.
enum Dwarf_Encoding |
DW_EH_PE_omit | |
DW_EH_PE_uleb128 | |
DW_EH_PE_udata2 | |
DW_EH_PE_udata4 | |
DW_EH_PE_udata8 | |
DW_EH_PE_sleb128 | |
DW_EH_PE_sdata2 | |
DW_EH_PE_sdata4 | |
DW_EH_PE_sdata8 |
Definition at line 127 of file crt_exceptions.c.
static void _comma_cleanup_exception | ( | _Unwind_Reason_Code | reason, | |
struct _Unwind_Exception * | exc | |||
) | [static] |
Definition at line 912 of file crt_exceptions.c.
_Unwind_Reason_Code _comma_eh_personality | ( | int | version, | |
_Unwind_Action | actions, | |||
uint64_t | exceptionClass, | |||
struct _Unwind_Exception * | exceptionObject, | |||
struct _Unwind_Context * | context | |||
) |
Definition at line 1026 of file crt_exceptions.c.
comma_exinfo_t _comma_get_exception | ( | comma_exception_id | id | ) |
Definition at line 1151 of file crt_exceptions.c.
void _comma_raise_exception | ( | comma_exinfo_t | info, | |
const char * | file_name, | |||
uint32_t | line_number, | |||
const char * | message | |||
) |
Definition at line 925 of file crt_exceptions.c.
void _comma_raise_nexception | ( | comma_exinfo_t | info, | |
const char * | file_name, | |||
uint32_t | line_number, | |||
const char * | message, | |||
uint32_t | length | |||
) |
Definition at line 961 of file crt_exceptions.c.
void _comma_raise_system | ( | uint32_t | id, | |
const char * | file_name, | |||
uint32_t | line_number, | |||
const char * | message | |||
) |
Definition at line 1014 of file crt_exceptions.c.
void _comma_reraise_exception | ( | struct comma_exception * | exception | ) |
Definition at line 1005 of file crt_exceptions.c.
void _comma_unhandled_exception | ( | struct comma_exception * | exception | ) |
Definition at line 1124 of file crt_exceptions.c.
uintptr_t _Unwind_GetIP | ( | struct _Unwind_Context * | context | ) |
uintptr_t _Unwind_GetLanguageSpecificData | ( | struct _Unwind_Context * | context | ) |
uintptr_t _Unwind_GetRegionStart | ( | struct _Unwind_Context * | context | ) |
_Unwind_Reason_Code _Unwind_RaiseException | ( | struct _Unwind_Exception * | exception_object | ) |
void _Unwind_Resume | ( | struct _Unwind_Exception * | exception_object | ) |
void _Unwind_SetGR | ( | struct _Unwind_Context * | context, | |
int | reg, | |||
uintptr_t | value | |||
) |
void _Unwind_SetIP | ( | struct _Unwind_Context * | context, | |
uintptr_t | IP | |||
) |
static void dump_Call_Site | ( | struct Call_Site * | site | ) | [static] |
Definition at line 686 of file crt_exceptions.c.
static void dump_LSDA | ( | struct LSDA_Header * | lsda | ) | [static] |
Definition at line 625 of file crt_exceptions.c.
static void fatal_error | ( | const char * | message | ) | [static] |
Definition at line 501 of file crt_exceptions.c.
static int find_applicable_call_site | ( | struct LSDA_Header * | lsda, | |
struct _Unwind_Context * | context, | |||
struct Call_Site * | dst | |||
) | [static] |
Definition at line 736 of file crt_exceptions.c.
static void install_handler | ( | struct _Unwind_Context * | context, | |
struct _Unwind_Exception * | exceptionObject, | |||
int64_t | landing_pad, | |||
uintptr_t | id | |||
) | [static] |
Definition at line 874 of file crt_exceptions.c.
static int match_exception | ( | struct LSDA_Header * | lsda, | |
struct _Unwind_Exception * | exceptionObject, | |||
uint64_t | action_index, | |||
uint64_t * | dst | |||
) | [static] |
Definition at line 794 of file crt_exceptions.c.
static unsigned char* parse_Action_Record | ( | unsigned char * | ptr, | |
struct Action_Record * | dst | |||
) | [static] |
Definition at line 702 of file crt_exceptions.c.
static unsigned char* parse_Call_Site | ( | struct LSDA_Header * | lsda, | |
unsigned char * | ptr, | |||
struct Call_Site * | dst | |||
) | [static] |
Definition at line 654 of file crt_exceptions.c.
static unsigned char* parse_dwarf_value | ( | Dwarf_Encoding | ID, | |
unsigned char * | start, | |||
uint64_t * | value | |||
) | [static] |
Definition at line 227 of file crt_exceptions.c.
static int parse_LSDA | ( | struct _Unwind_Context * | context, | |
struct LSDA_Header * | lsda | |||
) | [static] |
Definition at line 553 of file crt_exceptions.c.
static unsigned char* parse_sleb128 | ( | unsigned char * | start, | |
int64_t * | value | |||
) | [static] |
Definition at line 183 of file crt_exceptions.c.
static unsigned char* parse_uleb128 | ( | unsigned char * | start, | |
uint64_t * | value | |||
) | [static] |
Definition at line 159 of file crt_exceptions.c.
struct comma_exception* to_comma_exception | ( | struct _Unwind_Exception * | header | ) | [read] |
Definition at line 536 of file crt_exceptions.c.
struct _Unwind_Exception* to_Unwind_Exception | ( | struct comma_exception * | exception | ) | [read] |
Definition at line 544 of file crt_exceptions.c.
char* _comma_exinfo_assertion_error = "ASSERTION_ERROR" |
Definition at line 1146 of file crt_exceptions.c.
char* _comma_exinfo_constraint_error = "CONSTRAINT_ERROR" |
Definition at line 1145 of file crt_exceptions.c.
char* _comma_exinfo_program_error = "PROGRAM_ERROR" |
Definition at line 1144 of file crt_exceptions.c.
const _Unwind_Action _UA_CLEANUP_PHASE = 2 [static] |
Definition at line 108 of file crt_exceptions.c.
const _Unwind_Action _UA_FORCE_UNWIND = 8 [static] |
Definition at line 110 of file crt_exceptions.c.
const _Unwind_Action _UA_HANDLER_FRAME = 4 [static] |
Definition at line 109 of file crt_exceptions.c.
const _Unwind_Action _UA_SEARCH_PHASE = 1 [static] |
Definition at line 107 of file crt_exceptions.c.
const uint64_t Comma_Exception_Class_ID = 0x534D570434D410Ull [static] |
Definition at line 907 of file crt_exceptions.c.