|
|
1.1 root 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 );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.