|
|
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.