X-Git-Url: https://git.ucc.asn.au/?p=tpg%2Facess2.git;a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc%2B%2B.so_src%2Fexception_handling_acxx.h;fp=Usermode%2FLibraries%2Flibc%2B%2B.so_src%2Fexception_handling_acxx.h;h=536016effc5c526663e5ab6602d3b5627926e16b;hp=0000000000000000000000000000000000000000;hb=845b6f9d90bb87b5e760e4d49aa93b0e003ab750;hpb=67a7fe2bb79eceaf10c572a99bd8345c4e81cf5b diff --git a/Usermode/Libraries/libc++.so_src/exception_handling_acxx.h b/Usermode/Libraries/libc++.so_src/exception_handling_acxx.h new file mode 100644 index 00000000..536016ef --- /dev/null +++ b/Usermode/Libraries/libc++.so_src/exception_handling_acxx.h @@ -0,0 +1,59 @@ +/* + * Acess2 C++ Support Library + * - By John Hodge (thePowersGang) + * + * exception_handling_acxx.h + * - C++ Exception handling definions from HP's aC++ document + * + * Reference: http://mentorembedded.github.io/cxx-abi/exceptions.pdf + */ +#ifndef _EXCEPTION_HANLDING_ACXX_H_ +#define _EXCEPTION_HANLDING_ACXX_H_ + +/** + * \brief Language Specific Data Area + * \note Pointer obtained via _Unwind_GetLanguageSpecificData + */ +struct sLSDA_Header +{ + const void *Base; + uintptr_t LPStart; + uint8_t TTEncoding; + uintptr_t TypePtrBase; // base address for type pointers + uintptr_t TTBase; // Base address for type offsets + uint8_t CallSiteEncoding; + const void *CallSiteTable; + const void *ActionTable; +}; + +/* Pointer encodings, from dwarf2.h. */ +#define DW_EH_PE_absptr 0x00 +#define DW_EH_PE_omit 0xff + +// - Data format (mask with 0x0F) +#define DW_EH_PE_fmtmask 0x0F +#define DW_EH_PE_uleb128 0x01 +#define DW_EH_PE_udata2 0x02 +#define DW_EH_PE_udata4 0x03 +#define DW_EH_PE_udata8 0x04 +#define DW_EH_PE_sleb128 0x09 +#define DW_EH_PE_sdata2 0x0A +#define DW_EH_PE_sdata4 0x0B +#define DW_EH_PE_sdata8 0x0C +#define DW_EH_PE_signed 0x08 +// - Data maipulation (0x70) +#define DW_EH_PE_relmask 0x70 +#define DW_EH_PE_pcrel 0x10 +#define DW_EH_PE_textrel 0x20 +#define DW_EH_PE_datarel 0x30 +#define DW_EH_PE_funcrel 0x40 +#define DW_EH_PE_aligned 0x50 + +#define DW_EH_PE_indirect 0x80 + +typedef uint64_t leb128u_t; +typedef int64_t leb128s_t; + + +#endif +