/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* bos720 src/bos/usr/include/exceptab.h 1.3.1.1 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 1989,1993 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* @(#)65 1.3.1.1 src/bos/usr/include/exceptab.h, cmdld, bos720 3/26/12 11:15:26 */ #ifndef _H_EXCEPTAB #define _H_EXCEPTAB /* * COMPONENT_NAME: cmdld * * STRUCTURES: exceptab, exceptab_64 (Exception table structure) * * ORIGINS: 27 * */ /********************************************************************** * * Structure used to define the .except section of the object file. * **********************************************************************/ /* When generated, there is one exception table entry for each * trap instruction in the executable code. * Exception entries are grouped by function. * The first entry in a function grouping * will have e_reason = 0 and in place of physical * address will be the symbol table index of * the symbol for the function. In hybrid mode, the following names should be used: ============================================================================ | Basic field or macro name | 32-bit name | 64-bit name | ============================================================================ | e_addr.e_symndx | e_addr32.e_symndx | e_addr64.e_symndx | | e_addr.e_paddr | e_addr32.e_paddr | e_addr64.e_paddr | | e_lang | e_lang32 | e_lang64 | | e_reason | e_reason32 | e_reason64 | | EXCEPTSZ | EXCEPTSZ_32 | EXCEPTSZ_64 | ============================================================================ */ #include #ifdef __cplusplus extern "C" { #endif #ifndef __XCOFF_HYBRID__ #ifdef __XCOFF32__ typedef struct exceptab { union { _LONG32 e_symndx; /* sym. table index of function if e_reason == 0 */ _OFFSET32 e_paddr; /* address of trap inst */ } e_addr; char e_lang; /* compiler language id code */ char e_reason; /* exception reason code */ } EXCEPTAB; #define EXCEPTSZ (6) /* Do not use sizeof(EXCEPTAB) */ #endif /* __XCOFF32__ */ #ifdef __XCOFF64__ typedef struct _S_(exceptab) { union { _INT32 e_symndx; /* sym. table index of function if e_reason == 0 */ _OFFSET64 e_paddr; /* address of trap inst */ } e_addr; char e_lang; /* compiler language id code */ char e_reason; /* exception reason code */ } _S_(EXCEPTAB); #ifdef __XCOFF_32_64__ #define EXCEPTSZ_64 (10) /* Do not use sizeof(EXCEPTAB_64) */ #else #define EXCEPTSZ (10) /* Do not use sizeof(EXCEPTAB) */ #endif #endif /* __XCOFF64__ */ #else /* __XCOFF_HYBRID__ */ typedef struct exceptab { union { struct { union { _LONG32 e_symndx; /* symbol table index of function if e_reason==0 */ _OFFSET32 e_paddr; /* address of trap inst */ } _addr32; char _lang32; /* compiler language id code */ char _reason32; /* exception reason code */ } _s32; struct { union { _INT32 e_symndx; /* sym. table index of function name if e_reason == 0 */ _OFFSET64 e_paddr; /* address of trap inst */ } _addr64; char _lang64; /* compiler language id code */ char _reason64; /* exception reason code */ } _s64; } _u; } EXCEPTAB; #define EXCEPTSZ_32 (6) #define EXCEPTSZ_64 (10) /* Do not use sizeof(EXCEPTAB) */ #define e_addr32 _u._s32._addr32 #define e_lang32 _u._s32._lang32 #define e_reason32 _u._s32._reason32 #define e_addr64 _u._s64._addr64 #define e_lang64 _u._s64._lang64 #define e_reason64 _u._s64._reason64 #endif /* __XCOFF_HYBRID__ */ #ifdef __cplusplus } #endif #endif /* _H_EXCEPTAB */