home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / os2sdk / os2sdk11 / tk4 / spy / symbol.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-20  |  4.0 KB  |  90 lines

  1. /***************************************************************************\
  2.  
  3. Module Name: SYMBOL.H
  4.  
  5. This header file contains the definitions necessary to look up symbols
  6. in the .SYM files.
  7.  
  8. Created by Microsoft Corporation, 1989
  9.  
  10. \***************************************************************************/
  11.  
  12.  
  13. /* Debug Symbol Table Structures
  14.    -----------------------------
  15. For each symbol table (map): (MAPDEF)
  16. -------------------------------------------------------------------------------------------------
  17. | map_ptr | lsa | pgm_ent | abs_cnt | abs_ptr | seg_cnt | seg_ptr | nam_max | nam_len | name... |
  18. ------------------------------------------------------------------------------------------------- */
  19. typedef struct _MAPDEF {    /* mpdf */
  20.     unsigned    map_ptr;    /* 16 bit ptr to next map (0 if end)    */
  21.     unsigned    lsa    ;    /* 16 bit Load Segment address          */
  22.     unsigned    pgm_ent;    /* 16 bit entry point segment value     */
  23.     int         abs_cnt;    /* 16 bit count of constants in map     */
  24.     unsigned    abs_ptr;    /* 16 bit ptr to   constant chain       */
  25.     int         seg_cnt;    /* 16 bit count of segments in map      */
  26.     unsigned    seg_ptr;    /* 16 bit ptr to   segment chain        */
  27.     char        nam_max;    /*  8 bit Maximum Symbol name length    */
  28.     char        nam_len;    /*  8 bit Symbol table name length      */
  29. } MAPDEF;
  30.  
  31. typedef struct _MAPEND {    /* mped */
  32.     unsigned        chnend;         /* end of map chain (0) */
  33.     char            rel;            /* release              */
  34.     char            ver;            /* version              */
  35. } MAPEND;
  36.  
  37. /* For each segment/group within a symbol table: (SEGDEF)
  38. --------------------------------------------------------------
  39. | nxt_seg | sym_cnt | sym_ptr | seg_lsa | name_len | name... |
  40. -------------------------------------------------------------- */
  41. typedef struct _SEGDEF {    /* sgdf */
  42.     unsigned    nxt_seg;    /* 16 bit ptr to next segment(0 if end) */
  43.     int         sym_cnt;    /* 16 bit count of symbols in sym list  */
  44.     unsigned    sym_ptr;    /* 16 bit ptr to symbol list            */
  45.     unsigned    seg_lsa;    /* 16 bit Load Segment address          */
  46.     unsigned    seg_in0;    /* 16 bit instance 0 physical address   */
  47.     unsigned    seg_in1;    /* 16 bit instance 1 physical address   */
  48.     unsigned    seg_in2;    /* 16 bit instance 2 physical address   */
  49.     unsigned    seg_in3;    /* 16 bit instance 3 physical address   */
  50.     unsigned    seg_lin;    /* 16 bit ptr to line number record     */
  51.     char        seg_ldd;    /*  8 bit boolean 0 if seg not loaded   */
  52.     char        seg_cin;    /*  8 bit current instance              */
  53.     char        nam_len;    /*  8 bit Segment name length           */
  54. } SEGDEF;
  55.  
  56. /*  Followed by a list of SYMDEF's..
  57.     for each symbol within a segment/group: (SYMDEF)
  58. -------------------------------
  59. | sym_val | nam_len | name... |
  60. ------------------------------- */
  61. typedef struct _SYMDEF {    /* sydf */
  62.     unsigned    sym_val;    /* 16 bit symbol addr or const          */
  63.     char        nam_len;    /*  8 bit symbol name length            */
  64. } SYMDEF;
  65.  
  66. typedef struct _SEGINFO {   /* sinfo */
  67.     PID         pid;        /* Which process did we get selector for */
  68.     USHORT      selector;
  69.     char far   *lpModName;
  70.     char far   *lpPathName;
  71.     char far   *lpSegName;
  72.     char far   *lpSymName;
  73.     int         symfh;
  74.     int         segcnt;     /* 16 bit count of segment in seg list  */
  75.     int         segptr;     /* 16 bit file offset of segment  list  */
  76.     int         symcnt;     /* 16 bit count of symbols in sym list  */
  77.     long        symFPos;
  78.     WHOISINFO    whoIs;
  79. } SEGINFO;
  80. typedef SEGINFO     *PSEGINFO;
  81. typedef SEGINFO far *LPSEGINFO;
  82.  
  83. void    pascal near DebugBreakReturn( void );
  84.  
  85. long    pascal near DebugFileSeek( int, long, int );
  86. USHORT  pascal near DebugFileRead( int, PSZ, USHORT );
  87.  
  88. int     pascal near IdentifyCodeSegment( PSEGINFO, PID, USHORT );
  89. USHORT  pascal near FindSymbol( PSEGINFO, USHORT );
  90.