|
|
1.1 ! root 1: /*++ ! 2: ! 3: ! 4: Copyright (c) 1992 Microsoft Corporation ! 5: ! 6: Module Name: ! 7: ! 8: cv.h ! 9: ! 10: Abstract: ! 11: ! 12: This file contains all of the type definitions for accessing ! 13: CODEVIEW data. ! 14: ! 15: Author: ! 16: ! 17: Wesley A. Witt (wesw) 26-March-1992 ! 18: ! 19: Environment: ! 20: ! 21: Win32, User Mode ! 22: ! 23: --*/ ! 24: ! 25: ! 26: // Global Segment Info table ! 27: typedef struct _sgf { ! 28: unsigned short fRead :1; ! 29: unsigned short fWrite :1; ! 30: unsigned short fExecute:1; ! 31: unsigned short f32Bit :1; ! 32: unsigned short res1 :4; ! 33: unsigned short fSel :1; ! 34: unsigned short fAbs :1; ! 35: unsigned short res2 :2; ! 36: unsigned short fGroup :1; ! 37: unsigned short res3 :3; ! 38: } SGF; ! 39: ! 40: typedef struct _sgi { ! 41: SGF sgf; // Segment flags ! 42: unsigned short iovl; // Overlay number ! 43: unsigned short igr; // Group index ! 44: unsigned short isgPhy; // Physical segment index ! 45: unsigned short isegName; // Index to segment name ! 46: unsigned short iclassName; // Index to segment class name ! 47: unsigned long doffseg; // Starting offset inside physical segment ! 48: unsigned long cbSeg; // Logical segment size ! 49: } SGI; ! 50: ! 51: typedef struct _sgm { ! 52: unsigned short cSeg; // number of segment descriptors ! 53: unsigned short cSegLog; // number of logical segment descriptors ! 54: } SGM; ! 55: ! 56: typedef struct OMFSignature { ! 57: char Signature[4]; // "NB08" ! 58: long filepos; // offset in file ! 59: } OMFSignature; ! 60: ! 61: typedef struct OMFDirHeader { ! 62: unsigned short cbDirHeader; // length of this structure ! 63: unsigned short cbDirEntry; // number of bytes in each directory entry ! 64: unsigned long cDir; // number of directorie entries ! 65: long lfoNextDir; // offset from base of next directory ! 66: unsigned long flags; // status flags ! 67: } OMFDirHeader; ! 68: ! 69: typedef struct OMFDirEntry { ! 70: unsigned short SubSection; // subsection type (sst...) ! 71: unsigned short iMod; // module index ! 72: long lfo; // large file offset of subsection ! 73: unsigned long cb; // number of bytes in subsection ! 74: } OMFDirEntry; ! 75: ! 76: typedef struct OMFSegDesc { ! 77: unsigned short Seg; // segment index ! 78: unsigned short pad; // pad to maintain alignment ! 79: unsigned long Off; // offset of code in segment ! 80: unsigned long cbSeg; // number of bytes in segment ! 81: } OMFSegDesc; ! 82: ! 83: typedef struct OMFModule { ! 84: unsigned short ovlNumber; // overlay number ! 85: unsigned short iLib; // library that the module was linked from ! 86: unsigned short cSeg; // count of number of segments in module ! 87: char Style[2]; // debugging style "CV" ! 88: OMFSegDesc SegInfo[1]; // describes segments in module ! 89: char Name[]; // length prefixed module name padded to ! 90: // long word boundary ! 91: } OMFModule; ! 92: ! 93: typedef struct OMFSymHash { ! 94: unsigned short symhash; // symbol hash function index ! 95: unsigned short addrhash; // address hash function index ! 96: unsigned long cbSymbol; // length of symbol information ! 97: unsigned long cbHSym; // length of symbol hash data ! 98: unsigned long cbHAddr; // length of address hashdata ! 99: } OMFSymHash; ! 100: ! 101: typedef unsigned long CV_uoff32_t; ! 102: typedef unsigned short CV_typ_t; ! 103: ! 104: typedef struct DATASYM32 { ! 105: unsigned short reclen; /* Record length */ ! 106: unsigned short rectyp; /* S_LDATA32, S_GDATA32, S_LTHREAD32, ! 107: S_GTHREAD32 or S_PUB32 */ ! 108: CV_uoff32_t off; ! 109: unsigned short seg; ! 110: CV_typ_t typind; /* Type index */ ! 111: unsigned char name[1]; /* Length-prefixed name */ ! 112: } DATASYM32; ! 113: ! 114: #define FileAlign(x) ((x & (p->optrs.optHdr->FileAlignment-1)) ? ((x & ~(p->optrs.optHdr->FileAlignment-1)) + p->optrs.optHdr->FileAlignment) : x) ! 115: #define SectionAlign(x) ((x & (p->optrs.optHdr->SectionAlignment-1)) ? ((x & ~(p->optrs.optHdr->SectionAlignment-1)) + p->optrs.optHdr->SectionAlignment) : x) ! 116: #define DWB(p) ((PBYTE)(p) + (-((long)(p)) & 3)) ! 117: #define NextMod(m) (OMFModule *)DWB((PUCHAR)((PUCHAR)m+sizeof(OMFModule)+m->Name[0]+1)) ! 118: #define NextSym(m) (DATASYM32 *)DWB((PUCHAR)((PUCHAR)m+sizeof(DATASYM32)+m->name[0]+1)) ! 119: #define S_PUB32 0x0203 ! 120: #define sstModule 0x120 ! 121: #define sstGlobalPub 0x12a ! 122: #define sstSegName 0x12e ! 123: #define sstSegMap 0x12d
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.