home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / except2x.zip / sym.h < prev    next >
Text File  |  1993-12-08  |  4KB  |  79 lines

  1. /* Pointer means offset from beginning of file or beginning of struct */
  2. #pragma pack(1)
  3. typedef struct {
  4.   unsigned short int ppNextMap;     /* paragraph pointer to next map         */
  5.   unsigned char      bFlags;        /* symbol types                          */
  6.   unsigned char      bReserved1;    /* reserved                              */
  7.   unsigned short int pSegEntry;     /* segment entry point value             */
  8.   unsigned short int cConsts;       /* count of constants in map             */
  9.   unsigned short int pConstDef;     /* pointer to constant chain             */
  10.   unsigned short int cSegs;         /* count of segments in map              */
  11.   unsigned short int ppSegDef;      /* paragraph pointer to first segment    */
  12.   unsigned char      cbMaxSym;      /* maximum symbol-name length            */
  13.   unsigned char      cbModName;     /* length of module name                 */
  14.   char               achModName[1]; /* cbModName Bytes of module-name member */
  15. } MAPDEF;
  16.  
  17. typedef struct {
  18.   unsigned short int ppNextMap;     /* always zero                           */
  19.   unsigned char      release;       /* release number (minor version number) */
  20.   unsigned char      version;       /* major version number                  */
  21. } LAST_MAPDEF;
  22.  
  23. typedef struct {
  24.   unsigned short int ppNextSeg;     /* paragraph pointer to next segment     */
  25.   unsigned short int cSymbols;      /* count of symbols in list              */
  26.   unsigned short int pSymDef;       /* offset of symbol chain                */
  27.   unsigned short int wReserved1;    /* reserved                              */
  28.   unsigned short int wReserved2;    /* reserved                              */
  29.   unsigned short int wReserved3;    /* reserved                              */
  30.   unsigned short int wReserved4;    /* reserved                              */
  31.   unsigned char      bFlags;        /* symbol types                          */
  32.   unsigned char      bReserved1;    /* reserved                              */
  33.   unsigned short int ppLineDef;     /* offset of line number record          */
  34.   unsigned char      bReserved2;    /* reserved                              */
  35.   unsigned char      bReserved3;    /* reserved                              */
  36.   unsigned char      cbSegName;     /* length of segment name                */
  37.   char               achSegName[1]; /* cbSegName Bytes of segment-name member*/
  38. } SEGDEF;
  39.  
  40. typedef struct {
  41.   unsigned short int wSymVal;       /* symbol address or constant            */
  42.   unsigned char      cbSymName;     /* length of symbol name                 */
  43.   char               achSymName[1]; /* cbSymName Bytes of symbol-name member */
  44. } SYMDEF16;
  45.  
  46. typedef struct {
  47.   unsigned       int wSymVal;       /* symbol address or constant            */
  48.   unsigned char      cbSymName;     /* length of symbol name                 */
  49.   char               achSymName[1]; /* cbSymName Bytes of symbol-name member */
  50. } SYMDEF32;
  51.  
  52. typedef struct {
  53.   unsigned short int ppNextLine;    /* ptr to next linedef (0 if last)       */
  54.   unsigned short int wReserved1;    /* reserved                              */
  55.   unsigned short int pLines;        /* pointer to line numbers               */
  56.   unsigned short int cLines;        /* reserved                              */
  57.   unsigned char      cbFileName;    /* length of filename                    */
  58.   char               achFileName[1];/* cbFileName Bytes of filename          */
  59. } LINEDEF;
  60.  
  61. typedef struct {
  62.   unsigned short int wCodeOffset;   /* executable offset                     */
  63.   unsigned short int dwFileOffset;  /* source offset                         */
  64. } LINEINF;
  65.  
  66. #define SEGDEFOFFSET(MapDef)     (MapDef.ppSegDef*16)
  67. #define NEXTSEGDEFOFFSET(SegDef)  (SegDef.ppNextSeg*16)
  68.  
  69. #define ASYMPTROFFSET(SegDefOffset,Segdef) (SegDefOffset+SegDef.pSymDef)
  70. #define SYMDEFOFFSET(SegDefOffset,SegDef,n) (ASYMPTROFFSET(SegDefOffset,SegDef)+(n)*(sizeof(unsigned short int)))
  71.  
  72. #define ACONSTPTROFFSET(MapDef) (MapDef.ppConstDef)
  73. #define CONSTDEFOFFSET(MapDef,n) ((MapDef.ppConstDef)+(n)*(sizeof(unsigned short int)))
  74.  
  75. #define LINEDEFOFFSET(SegDef) (SegDef.ppLineDef*16))
  76. #define NEXTLINEDEFOFFSET(LineDef) (LineDef.ppNextLine*16)
  77. #define LINESOFFSET(LinedefOffset,LineDef) ((LinedefOffset)+LineDef.pLines)
  78.  
  79.