00001 #ifndef _Auxilary_h_ 00002 #define _Auxilary_h_ 00003 00004 #include <Base.h> 00005 #include <defines/Auxilary.d> 00006 00007 class Auxilary : public SymbolBase { 00008 private: 00009 public: 00010 Auxilary(uint32_t idx) : SymbolBase(idx) {} 00011 ~Auxilary() {} 00012 bool isAuxilary() { return true; } 00013 const char* getTypeName(); 00014 00015 AUXILARY_MACROS_BASIS("For the get_X field macros check the defines directory"); 00016 virtual uint8_t getAuxilaryType() { return Type__Auxilary_Symbol_No_Type; } 00017 00018 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00019 00020 }; 00021 00022 class AuxilarySection : public Auxilary { 00023 private: 00024 AUXENT entry; 00025 public: 00026 AuxilarySection(uint32_t idx) : Auxilary(idx) {} 00027 ~AuxilarySection() {} 00028 uint8_t getAuxilaryType() { return Type__Auxilary_Symbol_Section; } 00029 00030 char* charStream() { return (char*)&entry; } 00031 GET_FIELD_CLASS_A(uint32_t,x_scnlen,x_scn) { return entry.x_scn.x_scnlen; } 00032 GET_FIELD_CLASS_A(uint16_t,x_nreloc,x_scn) { return entry.x_scn.x_nreloc; } 00033 GET_FIELD_CLASS_A(uint16_t,x_nlinno,x_scn) { return entry.x_scn.x_nlinno; } 00034 00035 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00036 }; 00037 00038 class AuxilaryException : public Auxilary { 00039 private: 00040 AUXENT_64 entry; 00041 public: 00042 AuxilaryException(uint32_t idx) : Auxilary(idx) {} 00043 ~AuxilaryException() {} 00044 uint8_t getAuxilaryType() { return entry.x_auxtype.x_auxtype; } 00045 00046 char* charStream() { return (char*)&entry; } 00047 GET_FIELD_CLASS_A(uint64_t,x_exptr,x_except) { return entry.x_except.x_exptr; } 00048 GET_FIELD_CLASS_A(uint32_t,x_fsize,x_except) { return entry.x_except.x_fsize; } 00049 GET_FIELD_CLASS_A(uint32_t,x_endndx,x_except){ return entry.x_except.x_endndx; } 00050 00051 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00052 00053 void changeExptrCopy(uint64_t exptr,char* buff); 00054 }; 00055 00056 class AuxilaryFile : public Auxilary { 00057 public: 00058 AuxilaryFile(uint32_t idx) : Auxilary(idx) {} 00059 ~AuxilaryFile() {} 00060 00061 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00062 }; 00063 00064 class AuxilaryFile32 : public AuxilaryFile { 00065 private: 00066 AUXENT entry; 00067 public: 00068 AuxilaryFile32(uint32_t idx) : AuxilaryFile(idx) {} 00069 ~AuxilaryFile32() {} 00070 uint8_t getAuxilaryType() { return Type__Auxilary_Symbol_File; } 00071 00072 char* charStream() { return (char*)&entry; } 00073 GET_FIELD_CLASS_A(char*,x_fname,x_file) { return entry.x_file.x_fname; } 00074 GET_FIELD_CLASS_A(uint32_t,x_zeroes,x_file) { return entry.x_file._x.x_zeroes; } 00075 GET_FIELD_CLASS_A(uint32_t,x_offset,x_file) { return entry.x_file._x.x_offset; } 00076 GET_FIELD_CLASS_A(uint8_t,x_ftype,x_file) { return entry.x_file._x.x_ftype; } 00077 }; 00078 00079 class AuxilaryFile64 : public AuxilaryFile { 00080 private: 00081 AUXENT_64 entry; 00082 public: 00083 AuxilaryFile64(uint32_t idx) : AuxilaryFile(idx) {} 00084 ~AuxilaryFile64() {} 00085 uint8_t getAuxilaryType() { return entry.x_auxtype.x_auxtype; } 00086 00087 char* charStream() { return (char*)&entry; } 00088 GET_FIELD_CLASS_A(char*,x_fname,x_file) { return entry.x_file.x_fname; } 00089 GET_FIELD_CLASS_A(uint32_t,x_zeroes,x_file) { return entry.x_file._x.x_zeroes; } 00090 GET_FIELD_CLASS_A(uint32_t,x_offset,x_file) { return entry.x_file._x.x_offset; } 00091 GET_FIELD_CLASS_A(uint8_t,x_ftype,x_file) { return entry.x_file._x.x_ftype; } 00092 }; 00093 00094 class AuxilaryBlock : public Auxilary { 00095 public: 00096 AuxilaryBlock(uint32_t idx) : Auxilary(idx) {} 00097 ~AuxilaryBlock() {} 00098 00099 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00100 }; 00101 00102 class AuxilaryBlock32 : public AuxilaryBlock { 00103 private: 00104 AUXENT entry; 00105 public: 00106 AuxilaryBlock32(uint32_t idx) : AuxilaryBlock(idx) {} 00107 ~AuxilaryBlock32() {} 00108 uint8_t getAuxilaryType() { return Type__Auxilary_Symbol_Block; } 00109 00110 char* charStream() { return (char*)&entry; } 00111 GET_FIELD_CLASS_A(uint32_t,x_lnno,x_misc) { return entry.x_sym.x_misc.x_lnsz.x_lnno; } 00112 }; 00113 00114 class AuxilaryBlock64 : public AuxilaryBlock { 00115 private: 00116 AUXENT_64 entry; 00117 public: 00118 AuxilaryBlock64(uint32_t idx) : AuxilaryBlock(idx) {} 00119 ~AuxilaryBlock64() {} 00120 uint8_t getAuxilaryType() { return entry.x_auxtype.x_auxtype; } 00121 00122 char* charStream() { return (char*)&entry; } 00123 GET_FIELD_CLASS_A(uint32_t,x_lnno,x_misc) { return entry.x_sym.x_misc.x_lnsz.x_lnno; } 00124 }; 00125 00126 class AuxilaryFunction : public Auxilary { 00127 public: 00128 AuxilaryFunction(uint32_t idx) : Auxilary(idx) {} 00129 ~AuxilaryFunction() {} 00130 00131 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00132 virtual void changeExptrLnnoptrCopy(uint32_t exptr,uint64_t lnnoptr,char* buff) { __SHOULD_NOT_ARRIVE; } 00133 }; 00134 00135 class AuxilaryFunction32 : public AuxilaryFunction { 00136 private: 00137 AUXENT entry; 00138 public: 00139 AuxilaryFunction32(uint32_t idx) : AuxilaryFunction(idx) {} 00140 ~AuxilaryFunction32() {} 00141 uint8_t getAuxilaryType() { return Type__Auxilary_Symbol_Function; } 00142 00143 char* charStream() { return (char*)&entry; } 00144 GET_FIELD_CLASS_A(uint32_t,x_exptr,x_fcn) { return entry.x_sym.x_tagndx; } 00145 GET_FIELD_CLASS_A(uint32_t,x_fsize,x_fcn) { return entry.x_sym.x_misc.x_fsize; } 00146 GET_FIELD_CLASS_A(uint64_t,x_lnnoptr,x_fcn) { return entry.x_sym.x_fcnary.x_fcn.x_lnnoptr; } 00147 GET_FIELD_CLASS_A(uint32_t,x_endndx,x_fcn) { return entry.x_sym.x_fcnary.x_fcn.x_endndx; } 00148 void changeExptrLnnoptrCopy(uint32_t exptr,uint64_t lnnoptr,char* buff); 00149 }; 00150 00151 class AuxilaryFunction64 : public AuxilaryFunction { 00152 private: 00153 AUXENT_64 entry; 00154 public: 00155 AuxilaryFunction64(uint32_t idx) : AuxilaryFunction(idx) {} 00156 ~AuxilaryFunction64() {} 00157 uint8_t getAuxilaryType() { return entry.x_auxtype.x_auxtype; } 00158 00159 char* charStream() { return (char*)&entry; } 00160 GET_FIELD_CLASS_A(uint32_t,x_exptr,x_fcn) { return 0; } 00161 GET_FIELD_CLASS_A(uint32_t,x_fsize,x_fcn) { return entry.x_fcn.x_fsize; } 00162 GET_FIELD_CLASS_A(uint64_t,x_lnnoptr,x_fcn) { return entry.x_fcn.x_lnnoptr; } 00163 GET_FIELD_CLASS_A(uint32_t,x_endndx,x_fcn) { return entry.x_fcn.x_endndx; } 00164 void changeExptrLnnoptrCopy(uint32_t exptr,uint64_t lnnoptr,char* buff); 00165 }; 00166 00167 class AuxilaryCSect : public Auxilary { 00168 public: 00169 AuxilaryCSect(uint32_t idx) : Auxilary(idx) {} 00170 ~AuxilaryCSect() {} 00171 00172 void print(StringTable* stringTable,DebugSection* debugRawSect,bool followAux); 00173 virtual uint64_t getLength() { __SHOULD_NOT_ARRIVE; return 0; } 00174 00175 }; 00176 00177 class AuxilaryCSect32 : public AuxilaryCSect { 00178 private: 00179 AUXENT entry; 00180 public: 00181 AuxilaryCSect32(uint32_t idx) : AuxilaryCSect(idx) {} 00182 ~AuxilaryCSect32() {} 00183 uint8_t getAuxilaryType() { return Type__Auxilary_Symbol_CSect; } 00184 00185 char* charStream() { return (char*)&entry; } 00186 GET_FIELD_CLASS_A(uint32_t,x_scnlen,x_csect) { return entry.x_csect.x_scnlen; } 00187 GET_FIELD_CLASS_A(uint32_t,x_parmhash,x_csect) { return entry.x_csect.x_parmhash; } 00188 GET_FIELD_CLASS_A(uint16_t,x_snhash,x_csect) { return entry.x_csect.x_snhash; } 00189 GET_FIELD_CLASS_A(uint8_t,x_smtyp,x_csect) { return entry.x_csect.x_smtyp; } 00190 GET_FIELD_CLASS_A(uint8_t,x_smclas,x_csect) { return entry.x_csect.x_smclas; } 00191 GET_FIELD_CLASS_A(uint32_t,x_stab,x_csect) { return entry.x_csect.x_stab; } 00192 GET_FIELD_CLASS_A(uint16_t,x_snstab,x_csect) { return entry.x_csect.x_snstab; } 00193 00194 uint64_t getLength(); 00195 }; 00196 00197 class AuxilaryCSect64 : public AuxilaryCSect { 00198 private: 00199 AUXENT_64 entry; 00200 public: 00201 AuxilaryCSect64(uint32_t idx) : AuxilaryCSect(idx) {} 00202 ~AuxilaryCSect64() {} 00203 uint8_t getAuxilaryType() { return entry.x_auxtype.x_auxtype; } 00204 00205 char* charStream() { return (char*)&entry; } 00206 GET_FIELD_CLASS_A(uint32_t,x_scnlen_lo,x_csect) { return entry.x_csect.x_scnlen_lo; } 00207 GET_FIELD_CLASS_A(uint32_t,x_parmhash,x_csect) { return entry.x_csect.x_parmhash; } 00208 GET_FIELD_CLASS_A(uint16_t,x_snhash,x_csect) { return entry.x_csect.x_snhash; } 00209 GET_FIELD_CLASS_A(uint8_t,x_smtyp,x_csect) { return entry.x_csect.x_smtyp; } 00210 GET_FIELD_CLASS_A(uint8_t,x_smclas,x_csect) { return entry.x_csect.x_smclas; } 00211 GET_FIELD_CLASS_A(uint32_t,x_scnlen_hi,x_csect) { return entry.x_csect.x_scnlen_hi; } 00212 00213 uint64_t getLength(); 00214 }; 00215 00216 #endif