Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

/users/u3/mtikir/PMaCInstrumentor_v1601/include/CStructures.h

Go to the documentation of this file.
00001 #define _S_(name) name ## _64
00002 
00003 /*
00004  * Defines for the flags to identify characteristics of a collection
00005  * of object files link-edited together
00006  *    Bit-mapped field of the o_cpuflag field above
00007  */
00008 #define    TOBJ_SAME    0x80    /* All object files have same cputype field. */
00009 #define    TOBJ_COM     0x40    /* All object files are in a valid cputype */
00010                                 /*     subset. */
00011 #define    TOBJ_EMULATE 0x20    /* One or more object files are of a */
00012                                 /* cputype that would require emulated */
00013                                 /* instructions on the resultant cputype. */
00014                                 /* E.g., PWR objects promoted to PPC. */
00015 #define    TOBJ_COMPAT  0x10    /* One or more object files are TCPU_ANY. */
00016                                 /* They have been ignored in determining */
00017                                 /* the resultant o_cputype value. */
00018 /*
00019  * Defines for the POWER and PowerPC CPU Types 
00020  *    The o_cputype field above
00021  *    The n_cputype field of C_FILE symbol table entry
00022  */
00023 #define TCPU_INVALID  0    /* Invalid id - assumes POWER for old objects */
00024 #define TCPU_PPC      1    /* PowerPC common architecture 32 bit mode */
00025 #define TCPU_PPC64    2    /* PowerPC common architecture 64 bit mode */
00026 #define TCPU_COM      3    /* POWER and PowerPC architecture common */
00027 #define TCPU_PWR      4    /* POWER common architecture objects */
00028 #define TCPU_ANY      5    /* Mixture of any incompatable POWER */
00029                            /* and PowerPC architecture implementations */
00030 #define TCPU_601      6    /* 601 implementation of PowerPC architecture */
00031 #define TCPU_603      7    /* 603 implementation of PowerPC architecture */
00032 #define TCPU_604      8    /* 604 implementation of PowerPC architecture */
00033 #define TCPU_PWR1    10    /* RS1 implementation of POWER architecture */
00034 #define TCPU_620     16    /* 620 implementation of PowerPC 64-bit architecture */
00035 #define TCPU_A35     17    /* A35 implementation of PowerPC 64-bit architecture */
00036 #define TCPU_PWRX   224    /* RS2 implementation of POWER architecture */
00037 
00038 /* Define the auxiliary header of an XCOFF file.  In general, the auxiliary
00039    header can be any size, and the length of the auxiliary in any particular
00040    object file is specified in the f_opthdr field of the XCOFF header.
00041 
00042    Some AIX programs generate auxiliary headers for 32-bit object files that
00043    end after the data_start field.  The macro _AOUTHSZ_SHORT defines the
00044    length of such a header.  No auxiliary header is required for an object
00045    file that is not an executable.
00046 
00047    Executables, however, must have auxiliary headers that include the
00048    full structure definitions.  The macro _AOUTHSZ_EXEC defines the length
00049    the auxiliary header must have for an executable.
00050 */
00051 typedef struct aouthdr {
00052     uint16_t    o_mflag;        /* flags - how to execute */
00053                                 /* 0x010B: text & data may be paged */
00054     uint16_t    o_vstamp;       /* version stamp */
00055                                 /* 1 is only valid value */
00056     uint32_t    o_tsize;        /* text size in bytes */
00057     uint32_t    o_dsize;        /* data size in bytes */
00058     uint32_t    o_bsize;        /* bss size in bytes */
00059     uint32_t    o_entry;        /* entry point descriptor address */
00060     uint32_t    o_text_start;   /* virtual address of beginning of text */
00061     uint32_t    o_data_start;   /* virtual address of beginning of data */
00062                                 /* A short 32-bit auxiliary header can end here. */
00063 
00064     uint32_t    o_toc;          /* address of TOC */
00065     uint16_t    o_snentry;      /* section number for entry point */
00066     uint16_t    o_sntext;       /* section number for text */
00067     uint16_t    o_sndata;       /* section number for data */
00068     uint16_t    o_sntoc;        /* section number for toc */
00069     uint16_t    o_snloader;     /* section number for loader */
00070     uint16_t    o_snbss;        /* section number for bss */
00071     uint16_t    o_algntext;     /* log (base 2) of max text alignment */
00072     uint16_t    o_algndata;     /* log (base 2) of max data alignment */
00073     uint8_t     o_modtype[2];   /* Module type field, 1L, RE, RO */
00074     uint8_t     o_cpuflag;      /* bit flags - cputypes of objects */
00075     uint8_t     o_cputype;      /* executable cpu type identification */
00076     uint32_t    o_maxstack;     /* max stack size allowed (bytes) */
00077     uint32_t    o_maxdata;      /* max data size allowed (bytes) */
00078     uint32_t    o_debugger;     /* Reserved for use by debugger if it */
00079                                 /* needs a location for a breakpoint. */
00080     uint32_t    o_resv2[2];     /* reserved fields */
00081 } AOUTHDR;
00082 
00083 typedef struct aouthdr_64 {
00084     uint16_t    o_mflag;      /* flags - how to execute */
00085                               /* 0x010B: text & data may be paged */
00086     uint16_t    o_vstamp;     /* version stamp */
00087                               /* 1 is only valid value */
00088     uint32_t    o_debugger;   /* Reserved for use by debugger if it */
00089                               /* needs a location for a breakpoint. */
00090     uint64_t    o_text_start; /* virtual address of text */
00091     uint64_t    o_data_start; /* virtual address of data */
00092     uint64_t    o_toc;        /* TOC address */
00093     uint16_t    o_snentry;    /* section number for entry point */
00094     uint16_t    o_sntext;     /* section number for text */
00095     uint16_t    o_sndata;     /* section number for data */
00096     uint16_t    o_sntoc;      /* section number for toc */
00097     uint16_t    o_snloader;   /* section number for loader */
00098     uint16_t    o_snbss;      /* section number for bss */
00099     uint16_t    o_algntext;   /* log (base 2) of max text alignment */
00100     uint16_t    o_algndata;   /* log (base 2) of max data alignment */
00101     uint8_t     o_modtype[2]; /* Module type field, 1L, RE, RO */
00102     uint8_t     o_cpuflag;    /* bit flags - cputypes of objects */
00103     uint8_t     o_cputype;    /* executable cpu type identification */
00104     uint32_t    o_resv2[1];
00105     uint64_t    o_tsize;      /* text size in bytes */
00106     uint64_t    o_dsize;      /* data size in bytes */
00107     uint64_t    o_bsize;      /* bss size in bytes */
00108     uint64_t    o_entry;      /* entry point address */
00109     uint64_t    o_maxstack;   /* max stack size allowed */
00110     uint64_t    o_maxdata;    /* max data size allowed */
00111     uint32_t    o_resv3[4];   /* Reserved */
00112 } AOUTHDR_64;
00113 
00114 #define _AOUTHSZ_SHORT      (size_t)&(((AOUTHDR *)0)->o_toc)
00115 #define _AOUTHSZ_EXEC       sizeof(AOUTHDR)
00116 #define _AOUTHSZ_EXEC_64    sizeof(AOUTHDR_64)
00117 
00118 /*
00119  *      Bits for f_flags: (Most were defined for original COFF)
00120  *
00121  *      F_RELFLG    relocation info stripped from file
00122  *      F_EXEC      file is executable (i.e., it has a loader section)
00123  *      F_LNNO      line numbers stripped from file
00124  *      F_LSYMS     local symbols stripped from file
00125  *      F_FDPR_PROF File was profiled with FDPR
00126  *      F_FDPR_OPTI File was reordered with FDPR
00127  *      F_DSA       file uses Dynamic Segment Allocation (32-bit only)
00128  *      F_LPTEXT    executable requires large pages for text
00129  *      F_LPDATA    executable requires large pages for data
00130  *      F_DYNLOAD   file is dynamically loadable and executable
00131  *                  (equivalent to F_EXEC on AIX)
00132  *      F_SHROBJ    file is a shared object
00133  *      F_LOADONLY  file can be loaded by the system loader, but it is
00134  *                  ignored by the linker if it is a member of an archive.
00135  *
00136  *      F_AR16WR    this file has the byte ordering of an AR16WR machine
00137  *                  (e.g. 11/70)
00138  *      F_AR32WR    this file has the byte ordering of an AR32WR machine
00139  *                  (e.g. vax)
00140  *      F_AR32W     this file has the byte ordering of an AR32W machine
00141  *                  (e.g. S370,POWER,3b,maxi)
00142  *
00143  */
00144 
00145 #define F_RELFLG    0x0001
00146 #define F_EXEC      0x0002
00147 #define F_LNNO      0x0004
00148 #define F_LSYMS     0x0008
00149 #define F_FDPR_PROF     0x0010
00150 #define F_FDPR_OPTI     0x0020
00151 #define F_DSA       0x0040
00152 #define F_LPTEXT    0x0400
00153 #define F_LPDATA    0x0800
00154 #define F_DYNLOAD       0x1000
00155 #define F_SHROBJ    0x2000
00156 #define F_LOADONLY      0x4000
00157 
00158 /* Unused f_flags values */
00159 #define F_AR16WR    0x0080
00160 #define F_AR32WR    0x0100
00161 #define F_AR32W     0x0200
00162 
00163 /*
00164  *      Magic Numbers
00165  */
00166 
00167 /* IBM POWER and PowerPC */
00168 #define U802TOCMAGIC    0737    /* readonly text segments and TOC */
00169 #define U803TOCMAGIC    0747    /* Obsolete 64-bit XCOFF--not used */
00170 #define U803XTOCMAGIC   0757    /* Discontinued AIX 64-bit XCOFF */
00171 #define U64_TOCMAGIC    0767    /* AIX 64-bit XCOFF */
00172 
00173 /* Other magic numbers--not used on AIX */
00174 #define X386MAGIC       0514
00175 #define U802WRMAGIC     0730    /* writeable text segments */
00176 #define U802ROMAGIC     0735    /* readonly sharable text segments */
00177 
00178 /* IBM RT */
00179 #define U800TOCMAGIC    0637    /* readonly text segments and TOC */
00180 #define U800WRMAGIC     0630    /* writeable text segments */
00181 #define U800ROMAGIC     0635    /* readonly sharable text segments */
00182 
00183 typedef struct filehdr {
00184     uint16_t    f_magic;    /* Target machine on which the object file is executable */
00185     uint16_t    f_nscns;    /* number of sections */
00186     uint32_t    f_timdat;   /* time & date stamp:
00187                                A value of 0 indicates no timestamp.
00188                                Negative values are reserved for
00189                                future use and should be treated
00190                                as 0. */
00191     uint32_t    f_symptr;   /* File offset to symbol table. */
00192     uint32_t    f_nsyms;    /* Number of symbol table entries:
00193                                Negative values are reserved for
00194                                future use and should be treated
00195                                as 0. */
00196     uint16_t    f_opthdr;   /* Size of the auxiliary header */
00197     uint16_t    f_flags;    /* flags */
00198 } FILHDR;
00199 
00200 typedef struct _S_(filehdr) {
00201     uint16_t    f_magic;    /* Target machine on which the object file is executable */
00202     uint16_t    f_nscns;    /* number of sections */
00203     uint32_t    f_timdat;   /* time & date stamp:
00204                                A value of 0 indicates no timestamp.
00205                                Negative values are reserved for
00206                                future use and should be treated
00207                                as 0. */
00208     uint64_t    f_symptr;   /* File offset to symbol table. */
00209     uint16_t    f_opthdr;   /* Size of the auxiliary header */
00210     uint16_t    f_flags;    /* flags */
00211     uint32_t    f_nsyms;    /* Number of symbol table entries:
00212                                Negative values are reserved for
00213                                future use and should be treated
00214                                as 0. */
00215 } _S_(FILHDR);
00216 
00217 #define FILHSZ     sizeof(FILHDR)
00218 #define FILHSZ_64  sizeof(FILHDR_64)
00219 
00220 /* There is one line number entry for every
00221  * source file line that has associated code.
00222  * Line numbers are grouped by function.
00223  * The first entry in a function grouping
00224  * will have l_lnno == 0 and in place of physical
00225  * address will be the symbol table index of
00226  * the symbol for the function.
00227 */
00228 typedef struct lineno {
00229     union {
00230         uint32_t    l_symndx;   /* symbol table index of function if l_lnno == 0 */
00231         uint32_t    l_paddr;    /* address of instruction corresponding to line number */
00232     } l_addr;
00233     uint16_t    l_lnno;         /* line number */
00234 } LINENO;
00235 
00236 typedef struct _S_(lineno) {
00237     union  {
00238         uint32_t    l_symndx;   /* symbol table index of function if l_lnno == 0 */
00239         uint64_t    l_paddr;    /* address of instruction corresponding to line number */
00240     } l_addr;
00241     uint32_t    l_lnno;         /* line number */
00242 } _S_(LINENO);
00243 
00244 #define LINESZ       (6)        /* Do not use sizeof(LINENO) */
00245 #define LINESZ_64   (12)        /* Do not use sizeof(LINENO_64) */
00246 
00247 
00248 #define SYMNMLEN     8  /* Number of characters in a symbol name */
00249 #define FILNMLEN    14  /* Number of characters in a file name */
00250 #define DIMNUM       4  /* Number of array dimensions in auxiliary entry */
00251 
00252 #define LDHDRSZ     sizeof(LDHDR)
00253 #define LDHDRSZ_64  sizeof(LDHDR_64)
00254 
00255 #define LDSYMSZ     sizeof(LDSYM)
00256 #define LDSYMSZ_64  sizeof(LDSYM_64)
00257 
00258 #define LDRELSZ     sizeof(LDREL)
00259 #define LDRELSZ_64  sizeof(LDREL_64)
00260 
00261 typedef struct ldhdr {
00262 #define _CURRENT_LDR_VERSION    (1)
00263     uint32_t    l_version; /* Loader section version number */
00264     uint32_t    l_nsyms;   /* Qty of loader Symbol table entries */
00265     uint32_t    l_nreloc;  /* Qty of loader relocation table entries */
00266     uint32_t    l_istlen;  /* Length of loader import file id strings */
00267     uint32_t    l_nimpid;  /* Qty of loader import file ids. */
00268     uint32_t    l_impoff;  /* Offset to start of loader import file id strings */
00269     uint32_t    l_stlen;   /* Length of loader string table */
00270     uint32_t    l_stoff;   /* Offset to start of loader string table */
00271 } LDHDR;
00272 
00273 typedef struct _S_(ldhdr) {
00274 #define _CURRENT_LDR_VERSION_64    (2)
00275     uint32_t    l_version;  /* Loader section version number */
00276     uint32_t    l_nsyms;    /* Qty of loader Symbol table entries */
00277     uint32_t    l_nreloc;   /* Qty of loader relocation table entries */
00278     uint32_t    l_istlen;   /* Length of loader import file id strings */
00279     uint32_t    l_nimpid;   /* Qty of loader import file ids. */
00280     uint32_t    l_stlen;    /* Length of loader string table */
00281     uint64_t    l_impoff;   /* Offset to start of loader import file id strings */
00282     uint64_t    l_stoff;    /* Offset to start of loader string table */
00283     uint64_t    l_symoff;   /* Offset to start of loader symbol table */
00284     uint64_t    l_rldoff;   /* Offset to start of loader rlds */
00285 } _S_(LDHDR);
00286 
00287 #define    l_name      _l._l_name
00288 #define    l_zeroes    _l._l_l._l_zeroes
00289 #define    l_offset    _l._l_l._l_offset
00290 #define    l_nptr      _l._l_nptr
00291 
00292 typedef struct ldsym {
00293     union {
00294         char          _l_name[SYMNMLEN];    /* Symbol name */
00295         struct {
00296             uint32_t  _l_zeroes;            /* offset if 0 */
00297             uint32_t  _l_offset;            /* offset into loader string */
00298         } _l_l;
00299         uint32_t       _l_nptr[2];          /* allows for overlaying */
00300     } _l;
00301     uint32_t          l_value;              /* Address field */
00302     uint16_t          l_scnum;              /* Section number */
00303     uint8_t           l_smtype;             /* type and imp/exp/eps */
00304                                             /* 0    Unused */
00305                                             /* 1    Import */
00306                                             /* 2    Entry point */
00307                                             /* 3    Export */
00308                                             /* 4    Unused */
00309                                             /* 5-7    Symbol type */
00310     uint8_t           l_smclas;            /* storage class */
00311     uint32_t          l_ifile;             /* import file id  string offset */
00312     uint32_t          l_parm;              /* type check offset  into loader string */
00313 } LDSYM;
00314 
00315 typedef struct _S_(ldsym) {
00316     uint64_t          l_value;    /* Address field */
00317     union {
00318         struct {
00319             uint32_t  _l_offset;  /* offset into loader string */
00320         } _l_l;
00321         uint32_t       _l_nptr;   /* Allows for overlaying. */
00322     } _l;
00323     uint16_t          l_scnum;    /* Section number */
00324     uint8_t           l_smtype;   /* type and imp/exp/eps */
00325                                   /* 0    Unused */
00326                                   /* 1    Import */
00327                                   /* 2    Entry point */
00328                                   /* 3    Export */
00329                                   /* 4    Unused */
00330                                   /* 5-7    Symbol type */
00331     uint8_t           l_smclas;   /* storage class */
00332     uint32_t          l_ifile;    /* import file id string offset */
00333     uint32_t          l_parm;     /* type check offset into loader string */
00334 } _S_(LDSYM);
00335 
00336 
00337 #define    L_WEAK         0x08
00338 #define    L_EXPORT       0x10
00339 #define    L_ENTRY        0x20
00340 #define    L_IMPORT       0x40
00341 
00342 #define    LDR_WEAK(x)    ((x).l_smtype & L_WEAK)
00343 #define    LDR_EXPORT(x)  ((x).l_smtype & L_EXPORT)
00344 #define    LDR_ENTRY(x)   ((x).l_smtype & L_ENTRY)
00345 #define    LDR_IMPORT(x)  ((x).l_smtype & L_IMPORT)
00346 #define    LDR_TYPE(x)    ((x).l_smtype & 0x07)
00347 
00348 
00349 typedef struct ldrel
00350 {
00351     uint32_t    l_vaddr;    /* Address field */
00352     uint32_t    l_symndx;   /* Loader symbol table index of */
00353                             /* reloc value to apply. This field */
00354                             /* is zero-based where 0,1,2 are */
00355                             /* text,data,bss and 3 is the first */
00356                             /* symbol entry from above */
00357     uint16_t    l_rtype;    /* relocation type */
00358     uint16_t    l_rsecnm;   /* section number being relocated */
00359                             /* one-based index in scnhdr table */
00360 } LDREL;
00361 
00362 typedef struct _S_(ldrel)
00363 {
00364     uint64_t    l_vaddr;    /* Address field */
00365     uint16_t    l_rtype;    /* relocation type */
00366     uint16_t    l_rsecnm;   /* section number being relocated */
00367                             /* one-based index in scnhdr table */
00368     uint32_t    l_symndx;   /* Loader symbol table index of */
00369                             /* reloc value to apply. This field */
00370                             /* is zero-based where 0,1,2 are */
00371                             /* text,data,bss and 3 is the first */
00372                             /* symbol entry from above */
00373 } _S_(LDREL);
00374 
00375 
00376 /* When generated, there is one exception table entry for each
00377  * trap instruction in the executable code.
00378  * Exception entries are grouped by function.
00379  * The first entry in a function grouping
00380  * will have e_reason = 0 and in place of physical
00381  * address will be the symbol table index of
00382  * the symbol for the function.
00383 */
00384 typedef struct exceptab {
00385     union {
00386         uint32_t   e_symndx;   /* sym. table index of function if e_reason == 0 */
00387         uint32_t   e_paddr;    /* address of trap inst */
00388     } e_addr;
00389     uint8_t        e_lang;     /* compiler language id code */
00390     uint8_t        e_reason;   /* exception reason code */
00391 } EXCEPTAB;
00392 
00393 typedef struct _S_(exceptab) {
00394     union {
00395         uint32_t   e_symndx;   /* sym. table index of function if e_reason == 0 */
00396         uint64_t   e_paddr;    /* address of trap inst */
00397     } e_addr;
00398     uint8_t        e_lang;     /* compiler language id code */
00399     uint8_t        e_reason;   /* exception reason code */
00400 } _S_(EXCEPTAB);
00401 
00402 #define    EXCEPTSZ     (6)    /* Do not use sizeof(EXCEPTAB) */
00403 #define    EXCEPTSZ_64 (10)    /* Do not use sizeof(EXCEPTAB_64) */
00404 
00405 #define    RELSZ       (10)    /* Do not use sizeof(RELOC) */
00406 #define    RELSZ_64    (14)    /* Do not use sizeof(RELOC_64) */
00407 
00408 typedef struct reloc {
00409     uint32_t        r_vaddr;   /* (virtual) address of reference */
00410     uint32_t        r_symndx;  /* index into symbol table */
00411     union {
00412         uint16_t    _r_type;   /* old style coff relocation type */
00413         struct {
00414             uint8_t _r_rsize;  /* sign and reloc bit len */
00415             uint8_t _r_rtype;  /* toc relocation type */
00416         } _r_r;
00417     } _r;
00418 } RELOC;
00419 
00420 typedef struct _S_(reloc) {
00421     uint64_t        r_vaddr;   /* (virtual) address of reference */
00422     uint32_t        r_symndx;  /* index into symbol table */
00423     union {
00424         uint16_t    _r_type;   /* old style coff relocation type */
00425         struct {
00426             uint8_t _r_rsize;  /* sign and reloc bit len */
00427             uint8_t _r_rtype;  /* toc relocation type */
00428         } _r_r;
00429     } _r;
00430 } _S_(RELOC);
00431 
00432 #define r_type     _r._r_type        /* old style field name */
00433 #define r_rsize    _r._r_r._r_rsize  /* extract sign and bit len */
00434 #define r_rtype    _r._r_r._r_rtype  /* extract toc relocation type */
00435 
00436 #define R_LEN      0x3F   /* extract bit-length field */
00437 #define R_SIGN     0x80   /* extract sign of relocation */
00438 #define R_FIXUP    0x40   /* extract code-fixup bit */
00439 
00440 #define RELOC_RLEN(x)    ((x)._r._r_r._r_rsize & R_LEN)
00441 #define RELOC_RSIGN(x)   ((x)._r._r_r._r_rsize & R_SIGN)
00442 #define RELOC_RFIXUP(x)  ((x)._r._r_r._r_rsize & R_FIXUP)
00443 #define RELOC_RTYPE(x)   ((x)._r._r_r._r_rtype)
00444 
00445 /*
00446  *    POWER and PowerPC - relocation types
00447  */
00448 #define R_POS    0x00    /* A(sym) Positive Relocation */
00449 #define R_NEG    0x01    /* -A(sym) Negative Relocation */
00450 #define R_REL    0x02    /* A(sym-*) Relative to self */
00451 #define R_TOC    0x03    /* A(sym-TOC) Relative to TOC */
00452 #define R_TRL    0x12    /* A(sym-TOC) TOC Relative indirect load. */
00453 #define R_TRLA   0x13    /* A(sym-TOC) TOC Rel load address. modifiable inst */
00454 #define R_GL     0x05    /* A(external TOC of sym) Global Linkage */
00455 #define R_TCL    0x06    /* A(local TOC of sym) Local object TOC address */
00456 #define R_RL     0x0C    /* A(sym) Pos indirect load. modifiable instruction */
00457 #define R_RLA    0x0D    /* A(sym) Pos Load Address. modifiable instruction */
00458 #define R_REF    0x0F    /* AL0(sym) Non relocating ref. No garbage collect */
00459 #define R_BA     0x08    /* A(sym) Branch absolute. Cannot modify instruction */
00460 #define R_RBA    0x18    /* A(sym) Branch absolute. modifiable instruction */
00461 #define R_BR     0x0A    /* A(sym-*) Branch rel to self. non modifiable */
00462 #define R_RBR    0x1A    /* A(sym-*) Branch rel to self. modifiable instr */
00463 
00464 /* UNUSED */
00465 #define R_RBAC   0x19    /* A(sym) Branch absolute constant. modifiable instr */
00466 #define R_RBRC   0x1B    /* A(sym-*) Branch absolute const. */
00467 #define R_RTB    0x04    /* A((sym-*)/2) RT IAR Rel Branch. non modifiable */
00468 #define R_RRTBI  0x14    /* A((sym-*)/2) RT IAR Rel Br. modifiable to R_RRTBA */
00469 #define R_RRTBA  0x15    /* A((sym-*)/2) RT absolute br. modifiable to R_RRTBI */
00470 
00471 /*
00472  *    original style - relocation types from coff
00473  *    UNUSED: The #defines retained for compatability
00474  */
00475 #define R_ABS      0
00476 #define R_OFF8     07
00477 #define R_OFF16    010
00478 #define R_SEG12    011
00479 #define R_AUX      013
00480 #define R_DIR16    01
00481 #define R_REL16    02
00482 #define R_IND16    03
00483 #define R_DIR24    04
00484 #define R_REL24    05
00485 #define R_OPT16    014
00486 #define R_IND24    015
00487 #define R_IND32    016
00488 #define R_DIR10    025
00489 #define R_REL10    026
00490 #define R_REL32    027
00491 #define R_DIR32S   012
00492 #define R_RELBYTE  017
00493 #define R_RELWORD  020
00494 #define R_RELLONG  021
00495 #define R_PCRBYTE  022
00496 #define R_PCRWORD  023
00497 #define R_PCRLONG  024
00498 
00499 #define    SCNHSZ        sizeof(SCNHDR)
00500 #define    SCNHSZ_64     sizeof(SCNHDR_64)
00501 
00502 /* If both s_nreloc and s_nlnno fields are set to _OVERFLOW_MARKER,
00503    an overflow header contains the real values. */
00504 
00505 #define _OVERFLOW_MARKER       (65535)
00506 #define _OVERFLOW_MARKER_64    (4294967295)
00507 
00508 typedef struct scnhdr {
00509     char        s_name[8];  /* section name */
00510     uint32_t    s_paddr;    /* physical address */
00511     uint32_t    s_vaddr;    /* virtual address */
00512     uint32_t    s_size;     /* section size */
00513     uint32_t    s_scnptr;   /* file ptr to raw data for section */
00514     uint32_t    s_relptr;   /* file ptr to relocation for section */
00515     uint32_t    s_lnnoptr;  /* file ptr to line numbers for sect. */
00516     uint16_t    s_nreloc;   /* number of relocation entries */
00517     uint16_t    s_nlnno;    /* number of line number entries */
00518     uint32_t    s_flags;    /* flags */
00519 } SCNHDR;
00520 
00521 typedef struct _S_(scnhdr) {
00522     char        s_name[8];  /* section name */
00523     uint64_t    s_paddr;    /* physical address */
00524     uint64_t    s_vaddr;    /* virtual address */
00525     uint64_t    s_size;     /* section size */
00526     uint64_t    s_scnptr;   /* file ptr to raw data */
00527     uint64_t    s_relptr;   /* file ptr to relocation */
00528     uint64_t    s_lnnoptr;  /* file ptr to line numbers */
00529     uint32_t    s_nreloc;   /* # of relocation entries */
00530     uint32_t    s_nlnno;    /* # of line number entries */
00531     uint32_t    s_flags;    /* flags */
00532 } _S_(SCNHDR);
00533 
00534 /*
00535  * Define constants for names of "special" sections
00536  */
00537 
00538 #define _TEXT    ".text"
00539 #define _DATA    ".data"
00540 #define _BSS     ".bss"
00541 #define _PAD     ".pad"
00542 #define _INFO    ".info"
00543 #define _LOADER  ".loader"
00544 #define _TYPCHK  ".typchk"
00545 #define _DEBUG   ".debug"
00546 #define _EXCEPT  ".except"
00547 #define _OVRFLO  ".ovrflo"
00548 
00549 /*
00550  * The low order 16 bits of s_flags is used as section "type"
00551  */
00552 
00553 #define STYP_REG     0x00    /* "regular" section */
00554 #define STYP_PAD     0x08    /* "padding" section */
00555 #define STYP_TEXT    0x20    /* section contains text only */
00556 #define STYP_DATA    0x40    /* section contains data only */
00557 #define STYP_BSS     0x80    /* section contains bss only */
00558 #define STYP_EXCEPT  0x0100  /* Exception section */
00559 #define STYP_INFO    0x0200  /* Comment section */
00560 #define STYP_LOADER  0x1000  /* Loader section */
00561 #define STYP_DEBUG   0x2000  /* Debug section */
00562 #define STYP_TYPCHK  0x4000  /* Type check section */
00563 #define STYP_OVRFLO  0x8000  /* handling relocation and line number overflows */
00564 
00565 #define    SYMESZ    (18)    /* Do not use sizeof(SYMENT) */
00566 #define    SYMESZ_64 (18)    /* Do not use sizeof(SYMENT_64) */
00567 
00568 #define    SYMNMLEN    8     /* Number of characters in a symbol name */
00569 #define    FILNMLEN   14     /* Number of characters in a file name */
00570 #define    DIMNUM      4     /* Number of array dimensions in auxiliary entry */
00571 
00572 /*
00573  Note 2: For an XCOFF64 file, the n_type field may only have the values
00574     0 (if the symbol is not a function) or 0x0020 (if the symbol
00575     is a function).
00576 
00577  Note 3: All the fields containing "x_auxtype" refer to the same byte
00578     of the auxiliary symbol table entry.
00579 
00580  Note 4: The XCOFF64 equivalent for x_csect.x_scnlen is the concatenation
00581     of x_csect.x_scnlen_hi and x_csect.x_scnlen_lo.
00582 
00583  Note 5: When _AUX_EXCEPT and  _AUX_FCN    auxiliary symbol table entries 
00584     exist for the same primary symbol table entry, the x_fsize and
00585     x_endndx fields of the two entries should have the same values.
00586 
00587  Note 6: Field names not listed in the table above are obsolete and are
00588     not used in the current release of AIX.
00589 */
00590 
00591 typedef struct syment {
00592     union {
00593         char          _n_name[SYMNMLEN]; /* Symbol name (if 8 characters or less) */
00594         struct {
00595             uint32_t  _n_zeroes;       /* new == 0 */
00596             uint32_t  _n_offset;       /* offset into string table */
00597         } _n_n;
00598         uint32_t      _n_nptr[2];      /* allows for overlaying */
00599     } _n;
00600     uint32_t          n_value;         /* value of symbol */
00601     int16_t          n_scnum;         /* section number */
00602     union {
00603         uint16_t      _n_type;         /* type and derived type */
00604         struct {
00605             uint8_t   _n_lang;         /* source language id */
00606             uint8_t   _n_cpu;          /* cputype id */
00607         }_n_lc;
00608     } _n_tylc;
00609     uint8_t           n_sclass;        /* storage class */
00610     uint8_t           n_numaux;        /* number of aux. entries */
00611 } SYMENT;
00612 
00613 #define n_name        _n._n_name
00614 #define n_zeroes      _n._n_n._n_zeroes
00615 #define n_nptr        _n._n_nptr[1]
00616 
00617 typedef struct _S_(syment) {
00618     uint64_t          n_value;    /* value of symbol */
00619     union {
00620         struct {
00621             uint32_t  _n_offset;  /* offset into string table */
00622         } _n_n;
00623         uint32_t      _n_nptr;    /* Allows for overlaying */
00624     } _n;
00625     int16_t          n_scnum;    /* section number */
00626     union {
00627         uint16_t      _n_type;    /* type and derived type */
00628         struct {
00629             uint8_t   _n_lang;    /* source language id */
00630             uint8_t   _n_cpu;     /* cputype id */
00631         }_n_lc;
00632     } _n_tylc;
00633 
00634     uint8_t           n_sclass;    /* storage class */
00635     uint8_t           n_numaux;    /* number of aux. entries */
00636 } _S_(SYMENT);
00637 
00638 #define n_offset      _n._n_n._n_offset
00639 
00640 #ifndef n_type
00641 #define n_type        _n_tylc._n_type
00642 #endif  
00643 
00644 #define n_cputype     _n_tylc._n_lc._n_cpu
00645 #define n_lang        _n_tylc._n_lc._n_lang
00646 
00647 /* Structure size is the same for both XCOFF32 and XCOFF64 */
00648 /*
00649  * Relocatable symbols have a section number of the
00650  * section in which they are defined. Otherwise, section
00651  * numbers have the following meanings:
00652  */
00653 #define    N_UNDEF     0     /* undefined symbol */
00654 #define    N_ABS      -1     /* value of symbol is absolute */
00655 #define    N_DEBUG    -2     /* special debugging symbol */
00656 
00657 /* Obsolete definitions--not defined for XCOFF64. */
00658 /*
00659  * The fundamental type of a symbol packed into the low
00660  * 4 bits of the word.
00661  * Unused in xcoff.
00662  */
00663 #define    T_NULL     0
00664 #define    T_ARG      1    /* function argument (only used by compiler) */
00665 #define    T_CHAR     2    /* character */
00666 #define    T_SHORT    3    /* short integer */
00667 #define    T_INT      4    /* integer */
00668 #define    T_LONG     5    /* long integer */
00669 #define    T_FLOAT    6    /* floating point */
00670 #define    T_DOUBLE   7    /* double word */
00671 #define    T_STRUCT   8    /* structure */
00672 #define    T_UNION    9    /* union */
00673 #define    T_ENUM    10    /* enumeration */
00674 #define    T_MOE     11    /* member of enumeration */
00675 #define    T_UCHAR   12    /* unsigned character */
00676 #define    T_USHORT  13    /* unsigned short */
00677 #define    T_UINT    14    /* unsigned integer */
00678 #define    T_ULONG   15    /* unsigned long */
00679 
00680 /*
00681  * derived types are:
00682  */
00683 #define DT_NON    0    /* no derived type */
00684 #define DT_PTR    1    /* pointer */
00685 #define DT_FCN    2    /* function */
00686 #define DT_ARY    3    /* array */
00687 
00688 /*
00689  *    type packing constants
00690  */
00691 #define N_BTMASK     017
00692 #define N_TMASK      060
00693 #define N_TMASK1    0300
00694 #define N_TMASK2    0360
00695 #define N_BTSHFT       4
00696 #define N_TSHIFT       2
00697 
00698 #ifndef _COMPILER
00699 /*
00700  *    MACROS
00701  */
00702 #define BTYPE(x)  ((x) & N_BTMASK)                                /* Basic Type of x */
00703 #define ISPTR(x)  (((x) & N_TMASK) == (DT_PTR << N_BTSHFT))       /* Is x a pointer? */
00704 #define ISFCN(x)  (((x) & N_TMASK) == (DT_FCN << N_BTSHFT))       /* Is x a function? */
00705 #define ISARY(x)  (((x) & N_TMASK) == (DT_ARY << N_BTSHFT))       /* Is x an array? */
00706 #define ISTAG(x)  ((x)==C_STRTAG || (x)==C_UNTAG || (x)==C_ENTAG) /* Is x a structure, union, or enumeration TAG? */
00707 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(DT_PTR<<N_BTSHFT)|(x&N_BTMASK))
00708 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
00709 #endif 
00710 
00711 
00712 /*************************************************************************
00713  *
00714  *    AUXILIARY ENTRY FORMAT
00715  *
00716  *************************************************************************/
00717 
00718 /* Structure name and size are the same for both XCOFF32 and XCOFF64. */
00719 
00720 #define    AUXESZ      (18)    /* Do not use sizeof(AUXENT) */
00721 #define    AUXESZ_64   (18)    /* Do not use sizeof(AUXENT_64) */
00722 
00723 typedef union auxent {
00724  struct {
00725         uint32_t    x_tagndx;    /* str, un, or enum tag indx */
00726                                  /* exception table offset */
00727 #define x_exptr     x_tagndx
00728         union {
00729             struct {
00730                 uint16_t    x_lnno;    /* declaration line number */
00731                 uint16_t    x_size;    /* str, union, array size */
00732             } x_lnsz;
00733             uint32_t        x_fsize;   /* size of function */
00734         } x_misc;
00735         union {
00736             struct {                   /* if ISFCN, tag, or .bb */
00737                 uint32_t    x_lnnoptr; /* ptr to fcn line # */
00738                 uint32_t    x_endndx;  /* entry ndx past block end */
00739             } x_fcn;
00740             struct {                   /* if ISARY, up to 4 dimen. */
00741                 uint16_t    x_dimen[DIMNUM];
00742             } x_ary;
00743         } x_fcnary;
00744         uint16_t            x_tvndx;   /* tv index */
00745     } x_sym;
00746 
00747     union {
00748         char            x_fname[FILNMLEN];
00749         struct {
00750             uint32_t    x_zeroes;
00751             uint32_t    x_offset;
00752             char        x_pad[FILNMLEN-8];
00753             uint8_t     x_ftype;
00754         } _x;
00755     } x_file;
00756 
00757     struct {
00758         uint32_t    x_scnlen; /* section length */
00759         uint16_t    x_nreloc; /* number of relocation entries */
00760         uint16_t    x_nlinno; /* number of line numbers */
00761     } x_scn;
00762 
00763     /* CSECT auxiliary entry */
00764     struct {
00765         uint32_t    x_scnlen;    /* csect length */
00766         uint32_t    x_parmhash;  /* parm type hash index */
00767         uint16_t    x_snhash;    /* sect num with parm hash */
00768         uint8_t     x_smtyp;     /* symbol align and type */
00769                                  /* 0-4 - Log 2 of alignment */
00770                                  /* 5-7 - symbol type */
00771         uint8_t     x_smclas;           /* storage mapping class */
00772         uint32_t    x_stab;      /* dbx stab info index */
00773         uint16_t    x_snstab;    /* sect num with dbx stab */
00774     } x_csect;
00775 } AUXENT;
00776 
00777 typedef union _S_(auxent) {
00778     struct {
00779         struct {
00780             struct {
00781                 uint32_t  x_lnno;       /* declaration line number */
00782             } x_lnsz;
00783         } x_misc;
00784         char              pad[13];
00785         uint8_t           x_auxtype;    /* Auxiliary symbol type */
00786     } x_sym;
00787 
00788     union {
00789         char              x_fname[FILNMLEN];
00790         struct {
00791             uint32_t      x_zeroes;
00792             uint32_t      x_offset;
00793             char          x_pad[FILNMLEN-8];
00794             uint8_t       x_ftype;
00795             char          pad[2];
00796             uint8_t       x_auxtype; /* Auxiliary symbol type */
00797         } _x;
00798     } x_file;
00799 
00800     /* CSECT auxiliary entry */
00801     struct {
00802         uint32_t    x_scnlen_lo; /* csect length */
00803         uint32_t    x_parmhash;  /* parm type hash index */
00804         uint16_t    x_snhash;    /* sect num with parm hash */
00805         uint8_t     x_smtyp;     /* symbol align and type */
00806                                  /* 0-4 - Log 2 of alignment */
00807                                  /* 5-7 - symbol type */
00808         uint8_t     x_smclas;    /* storage mapping class */
00809         uint32_t    x_scnlen_hi; 
00810         char        pad;
00811         uint8_t     x_auxtype;   /* Auxiliary symbol type */
00812     } x_csect;
00813     struct {
00814         uint64_t    x_exptr;     /* exception table offset */
00815         uint32_t    x_fsize;     /* size of function */
00816         uint32_t    x_endndx;    /* entry ndx past block end */
00817         char        pad;
00818         uint8_t     x_auxtype;   /* Auxiliary symbol type */
00819     } x_except;
00820     struct {
00821         uint64_t    x_lnnoptr;   /* line number entry offset */
00822         uint32_t    x_fsize;     /* size of function */
00823         uint32_t    x_endndx;    /* entry ndx past block end */
00824         char        pad;
00825         uint8_t     x_auxtype;   /* Auxiliary symbol type */
00826     } x_fcn;
00827     struct {
00828         char        x_pad[AUXESZ-1];
00829         uint8_t     x_auxtype;
00830     } x_auxtype;
00831 } _S_(AUXENT);
00832 
00833 
00834 #define _AUX_EXCEPT    255
00835 #define _AUX_FCN       254
00836 #define _AUX_SYM       253
00837 #define _AUX_FILE      252
00838 #define _AUX_CSECT     251
00839 
00840 
00841 /* Defines for File auxiliary definitions: x_ftype field of x_file */
00842 #define    XFT_FN    0    /* Source File Name */
00843 #define    XFT_CT    1    /* Compile Time Stamp */
00844 #define    XFT_CV    2    /* Compiler Version Number */
00845 #define    XFT_CD  128    /* Compiler Defined Information */
00846 
00847 /* Defines for CSECT auxiliary definitions */
00848 /* Symbol Type (5-7 of x_smtyp field of x_csect) */
00849 #define XTY_ER    0    /* External Reference */
00850 #define XTY_SD    1    /* CSECT Section Definition */
00851 #define XTY_LD    2    /* Entry Point - Label Definition */
00852 #define XTY_CM    3    /* Common (BSS) */
00853 
00854 /* Following are unused but retained for source compatability when compiling for 32-bit . */
00855 #define XTY_HL    6    /* Hidden Label Definition */
00856 #define XTY_US    5    /* Unset */
00857 #define XTY_EM    4    /* Error Message - Linkedit usage */
00858 
00859 /* Storage Mapping Class definitions: x_smclas field of x_csect */
00860 /* READ ONLY CLASSES */
00861 #define XMC_PR      0    /* Program Code */
00862 #define XMC_RO      1    /* Read Only Constant */
00863 #define XMC_DB      2    /* Debug Dictionary Table */
00864 #define XMC_GL      6    /* Global Linkage (Interfile Interface Code) */
00865 #define XMC_XO      7    /* Extended Operation (Pseudo Machine Instruction */
00866 #define XMC_SV      8    /* Supervisor Call (32-bit process only) */
00867 #define XMC_SV64   17    /* Supervisor Call for 64-bit process */
00868 #define XMC_SV3264 18    /* Supervisor Call for both 32- and 64-bit processes. */
00869 #define XMC_TI     12    /* Traceback Index csect */
00870 #define XMC_TB     13    /* Traceback table csect */
00871 /* READ WRITE CLASSES */
00872 #define XMC_RW      5    /* Read Write Data */
00873 #define XMC_TC0    15    /* TOC Anchor for TOC Addressability */
00874 #define XMC_TC      3    /* General TOC item */
00875 #define XMC_TD     16    /* Scalar data item in the TOC */ 
00876 #define XMC_DS     10    /* Descriptor csect */
00877 #define XMC_UA      4    /* Unclassified - Treated as Read Write */
00878 #define XMC_BS      9    /* BSS class (uninitialized static internal) */
00879 #define XMC_UC     11    /* Un-named Fortran Common */
00880 
00881 /* Defines for "special" symbols */
00882 
00883 #define _ETEXT  "etext"
00884 #define _EDATA  "edata"
00885 #define _END    "end"
00886 #define _EF     ".ef"
00887 #define _START  "__start"
00888 
00889 /*
00890  *    STORAGE CLASSES - n_sclass field of syment
00891  */
00892 
00893 #define C_EFCN      255    /* physical end of function */
00894 #define C_NULL        0    /* logically deleted symbol table entry */
00895 #define C_AUTO        1    /* automatic variable */
00896 #define C_EXT         2    /* external symbol */
00897 #define C_STAT        3    /* static */
00898 #define C_REG         4    /* register variable */
00899 #define C_EXTDEF      5    /* external definition */
00900 #define C_LABEL       6    /* label */
00901 #define C_ULABEL      7    /* undefined label */
00902 #define C_MOS         8    /* member of structure */
00903 #define C_ARG         9    /* function argument */
00904 #define C_STRTAG     10    /* structure tag */
00905 #define C_MOU        11    /* member of union */
00906 #define C_UNTAG      12    /* union tag */
00907 #define C_TPDEF      13    /* type definition */
00908 #define C_USTATIC    14    /* undefined static */
00909 #define C_ENTAG      15    /* enumeration tag */
00910 #define C_MOE        16    /* member of enumeration */
00911 #define C_REGPARM    17    /* register parameter */
00912 #define C_FIELD      18    /* bit field */
00913 #define C_BLOCK     100    /* ".bb" or ".eb" */
00914 #define C_FCN       101    /* ".bf" or ".ef" */
00915 #define C_EOS       102    /* end of structure */
00916 #define C_FILE      103    /* file name */
00917 #define C_LINE      104
00918 #define C_ALIAS     105    /* duplicate tag */
00919 #define C_HIDDEN    106    /* special storage class for external */
00920 /* symbols in dmert public libraries */
00921 #define C_HIDEXT    107    /* Un-named external symbol */
00922 #define C_BINCL     108    /* Marks beginning of include file */
00923 #define C_EINCL     109    /* Marks ending of include file */
00924 #define C_INFO      110    /* Comment string in .info section */
00925 #define C_WEAKEXT   111    /* weak external symbol */
00926 
00927 
00928 /* Only valid n_value for a C_NULL (deletable) symbol table entry */
00929 #define C_NULL_VALUE    0x00DE1E00
00930 
00931 /* Source Language Identifiers */
00932 
00933 #ifndef TB_C
00934 /* Following are also defined in <sys/debug.h> */
00935 #define TB_C              0    /* C */
00936 #define TB_FORTRAN        1    /* Fortran */
00937 #define TB_PASCAL         2    /* Pascal */
00938 #define TB_ADA            3    /* Ada */
00939 #define TB_PLI            4    /* PL/I */
00940 #define TB_BASIC          5    /* BASIC */
00941 #define TB_LISP           6    /* LISP */
00942 #define TB_COBOL          7    /* COBOL */
00943 #define TB_MODULA2        8    /* Modula2 */
00944 #define TB_CPLUSPLUS      9    /* C++ */
00945 #define TB_RPG           10    /* RPG */
00946 #define TB_PL8           11    /* PL8, PLIX */
00947 #define TB_ASM           12    /* Assembly */
00948 #define TB_HPJ           13    /* Java */
00949 #define TB_RESERVED_1   251
00950 #define TB_RESERVED_2   252
00951 #define TB_RESERVED_3   253
00952 #define TB_RESERVED_4   254
00953 #define TB_RESERVED_5   255
00954 #endif
00955 
00956 #define TB_OBJECT       248    /* Object File */
00957 #define TB_FRONT        249    /* entries collected to start of symbol table */
00958 #define TB_BACK         250    /* entries collected to end of symbol table */
00959 
00960 /*
00961  *    XCOFF STORAGE CLASSES AND STABSTRINGS DESIGNED SPECIFICALLY FOR DBX
00962  */
00963 #define DBXMASK      0x80
00964 
00965 #define C_GSYM       0x80
00966 #define C_LSYM       0x81
00967 #define C_PSYM       0x82
00968 #define C_RSYM       0x83
00969 #define C_RPSYM      0x84
00970 #define C_STSYM      0x85
00971 #define C_TCSYM      0x86
00972 #define C_BCOMM      0x87
00973 #define C_ECOML      0x88
00974 #define C_ECOMM      0x89
00975 #define C_DECL       0x8c
00976 #define C_ENTRY      0x8d
00977 #define C_FUN        0x8e
00978 #define C_BSTAT      0x8f
00979 #define C_ESTAT      0x90
00980 
00981 #define TP_ARRAY {\
00982     "int:t-1=r-1;-2147483648;2147483647",\
00983     "char:t-2=@s8;r-2;0;255",\
00984     "short:t-3=@s16;r-3;-32768;32767",\
00985     "long:t-4=-1",\
00986     "unsigned char:t-5=@s8;r-5;0;255",\
00987     "signed char:t-6=@s8;r-6;-128;127",\
00988     "unsigned short:t-7=@s16;r-7;0;65535",\
00989     "unsigned int:t-8=r-8;0;4294967295",\
00990     "unsigned:t-9=-8",\
00991     "unsigned long:t-10=-8",\
00992     "void:t-11=r-11;0;0",\
00993     "float:t-12=g-12;4",\
00994     "double:t-13=g-12;8",\
00995     "long double:t-14=g-12;16",\
00996     "integer:t-15=-1",\
00997     "boolean:t-16=efalse:0,true:1,;",\
00998     "shortreal:t-17=g-12;4",\
00999     "real:t-18=g-12;8",\
01000     "stringptr:t-19=N-19",\
01001     "character:t-20=@s8;r-20;0;255",\
01002     "logical*1:t-21=@s8;r-21;0;255",\
01003     "logical*2:t-22=@s16;r-22;0;65535",\
01004     "logical*4:t-23=r-23;0;4294967295",\
01005     "logical:t-24=-23",\
01006     "complex:t-25=c-25;8",\
01007     "double complex:t-26=c-25;16",\
01008     "integer*1:t-27=-6",\
01009     "integer*2:t-28=-3",\
01010     "integer*4:t-29=-1",\
01011     "wchar:t-30=@s16;r-30;0;65535", \
01012     "long long:t-31=r-31;-9223372036854775808;9223372036854775807", \
01013     "unsigned long long:t-32=r-32;0;18446744073709551615", \
01014     "logical*8:t-33=r-33;0;18446744073709551615",\
01015     "integer*8:t-34=-31",\
01016     "long:t-35=r-35;-9223372036854775808;9223372036854775807", \
01017     "unsigned long:t-36=r-36;0;18446744073709551615", \
01018     }
01019 
01020 #define TP_INT         (-1)
01021 #define TP_CHAR        (-2)
01022 #define TP_SHORT       (-3)
01023 #define TP_LONG        (-4)
01024 #define TP_UCHAR       (-5)
01025 #define TP_SCHAR       (-6)
01026 #define TP_USHORT      (-7)
01027 #define TP_UINT        (-8)
01028 #define TP_UNSIGNED    (-9)
01029 #define TP_ULONG      (-10)
01030 #define TP_VOID       (-11)
01031 #define TP_FLOAT      (-12)
01032 #define TP_DOUBLE     (-13)
01033 #define TP_LDOUBLE    (-14)
01034 #define TP_PASINT     (-15)
01035 #define TP_BOOL       (-16)
01036 #define TP_SHRTREAL   (-17)
01037 #define TP_REAL       (-18)
01038 #define TP_STRNGPTR   (-19)
01039 #define TP_FCHAR      (-20)
01040 #define TP_LOGICAL1   (-21)
01041 #define TP_LOGICAL2   (-22)
01042 #define TP_LOGICAL4   (-23)
01043 #define TP_LOGICAL    (-24)
01044 #define TP_COMPLEX    (-25)
01045 #define TP_DCOMPLEX   (-26)
01046 #define TP_INTEGER1   (-27)
01047 #define TP_INTEGER2   (-28)
01048 #define TP_INTEGER4   (-29)
01049 #define TP_WCHAR      (-30)
01050 #define TP_LLONG      (-31)
01051 #define TP_ULLONG     (-32)
01052 #define TP_LOGICAL8   (-33)
01053 #define TP_INTEGER8   (-34)
01054 #define TP_LONG_64    (-35)
01055 #define TP_ULONG_64   (-36)
01056 #define TP_NTYPES     36

Generated on Mon Jan 28 11:08:31 2008 for PMaCInstrumentor by doxygen 1.3.5