File:  [OS/2 SDKs] / pmsdk / samples / spy / symbol.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:28:22 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: pmsdk-1989, HEAD
Microsoft OS/2 SDK PM 02-24-1989

/***************************************************************************\

Module Name: SYMBOL.H

This header file contains the definitions necessary to look up symbols
in the .SYM files.

Created by Microsoft Corporation, 1989

\***************************************************************************/


/* Debug Symbol Table Structures
   -----------------------------
For each symbol table (map): (MAPDEF)
-------------------------------------------------------------------------------------------------
| map_ptr | lsa | pgm_ent | abs_cnt | abs_ptr | seg_cnt | seg_ptr | nam_max | nam_len | name... |
------------------------------------------------------------------------------------------------- */
typedef struct _MAPDEF {    /* mpdf */
    unsigned    map_ptr;    /* 16 bit ptr to next map (0 if end)    */
    unsigned    lsa    ;    /* 16 bit Load Segment address          */
    unsigned    pgm_ent;    /* 16 bit entry point segment value     */
    int         abs_cnt;    /* 16 bit count of constants in map     */
    unsigned    abs_ptr;    /* 16 bit ptr to   constant chain       */
    int         seg_cnt;    /* 16 bit count of segments in map      */
    unsigned    seg_ptr;    /* 16 bit ptr to   segment chain        */
    char        nam_max;    /*  8 bit Maximum Symbol name length    */
    char        nam_len;    /*  8 bit Symbol table name length      */
} MAPDEF;

typedef struct _MAPEND {    /* mped */
    unsigned        chnend;         /* end of map chain (0) */
    char            rel;            /* release              */
    char            ver;            /* version              */
} MAPEND;

/* For each segment/group within a symbol table: (SEGDEF)
--------------------------------------------------------------
| nxt_seg | sym_cnt | sym_ptr | seg_lsa | name_len | name... |
-------------------------------------------------------------- */
typedef struct _SEGDEF {    /* sgdf */
    unsigned    nxt_seg;    /* 16 bit ptr to next segment(0 if end) */
    int         sym_cnt;    /* 16 bit count of symbols in sym list  */
    unsigned    sym_ptr;    /* 16 bit ptr to symbol list            */
    unsigned    seg_lsa;    /* 16 bit Load Segment address          */
    unsigned    seg_in0;    /* 16 bit instance 0 physical address   */
    unsigned    seg_in1;    /* 16 bit instance 1 physical address   */
    unsigned    seg_in2;    /* 16 bit instance 2 physical address   */
    unsigned    seg_in3;    /* 16 bit instance 3 physical address   */
    unsigned    seg_lin;    /* 16 bit ptr to line number record     */
    char        seg_ldd;    /*  8 bit boolean 0 if seg not loaded   */
    char        seg_cin;    /*  8 bit current instance              */
    char        nam_len;    /*  8 bit Segment name length           */
} SEGDEF;

/*  Followed by a list of SYMDEF's..
    for each symbol within a segment/group: (SYMDEF)
-------------------------------
| sym_val | nam_len | name... |
------------------------------- */
typedef struct _SYMDEF {    /* sydf */
    unsigned    sym_val;    /* 16 bit symbol addr or const          */
    char        nam_len;    /*  8 bit symbol name length            */
} SYMDEF;

typedef struct _SEGINFO {   /* sinfo */
    PID         pid;        /* Which process did we get selector for */
    USHORT      selector;
    char far   *lpModName;
    char far   *lpPathName;
    char far   *lpSegName;
    char far   *lpSymName;
    int         symfh;
    int         segcnt;     /* 16 bit count of segment in seg list  */
    int         segptr;     /* 16 bit file offset of segment  list  */
    int         symcnt;     /* 16 bit count of symbols in sym list  */
    long        symFPos;
    WHOISINFO	whoIs;
} SEGINFO;
typedef SEGINFO     *PSEGINFO;
typedef SEGINFO far *LPSEGINFO;

void    pascal near DebugBreakReturn( void );

long    pascal near DebugFileSeek( int, long, int );
USHORT  pascal near DebugFileRead( int, PSZ, USHORT );

int     pascal near IdentifyCodeSegment( PSEGINFO, PID, USHORT );
USHORT  pascal near FindSymbol( PSEGINFO, USHORT );

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.