📄 cvexefmt.h
字号:
unsigned short Seg; // linker segment index
unsigned short cLnOff; // count of line/offset pairs
unsigned long offset[1]; // array of offsets in segment
unsigned short lineNbr[1]; // array of line lumber in source
} OMFSourceLine;
typedef OMFSourceLine FAR * LPSL;
// Source file description
// This table is generated by the linker
typedef struct OMFSourceFile {
unsigned short cSeg; // number of segments from source file
unsigned short reserved; // reserved
unsigned long baseSrcLn[1]; // base of OMFSourceLine tables
// this array is followed by array
// of segment start/end pairs followed by
// an array of linker indices
// for each segment in the file
unsigned short cFName; // length of source file name
char Name; // name of file padded to long boundary
} OMFSourceFile;
typedef OMFSourceFile FAR * LPSF;
// Source line to address mapping header structure
// This structure describes the number and location of the
// OMFAddrLine tables for a module. The offSrcLine entries are
// relative to the beginning of this structure.
typedef struct OMFSourceModule {
unsigned short cFile; // number of OMFSourceTables
unsigned short cSeg; // number of segments in module
unsigned long baseSrcFile[1]; // base of OMFSourceFile table
// this array is followed by array
// of segment start/end pairs followed
// by an array of linker indices
// for each segment in the module
} OMFSourceModule;
typedef OMFSourceModule FAR * LPSM;
// sstLibraries
typedef struct OMFLibrary {
unsigned char cbLibs; // count of library names
char Libs[1]; // array of length prefixed lib names (first entry zero length)
} OMFLibrary;
// sstFileIndex - An index of all of the files contributing to an
// executable.
typedef struct OMFFileIndex {
unsigned short cmodules; // Number of modules
unsigned short cfilerefs; // Number of file references
unsigned short modulelist[1]; // Index to beginning of list of files
// for module i. (0 for module w/o files)
unsigned short cfiles[1]; // Number of file names associated
// with module i.
unsigned long ulNames[1]; // Offsets from the beginning of this
// table to the file names
char Names[]; // The length prefixed names of files
} OMFFileIndex;
// Offset mapping table
// This table provides a mapping from logical to physical offsets.
// This mapping is applied between the logical to physical mapping
// described by the seg map table.
typedef struct OMFOffsetMap16 {
unsigned long csegment; // Count of physical segments
// The next six items are repeated for each segment
unsigned long crangeLog; // Count of logical offset ranges
unsigned short rgoffLog[1]; // Array of logical offsets
short rgbiasLog[1]; // Array of logical->physical bias
unsigned long crangePhys; // Count of physical offset ranges
unsigned short rgoffPhys[1]; // Array of physical offsets
short rgbiasPhys[1]; // Array of physical->logical bias
} OMFOffsetMap16;
typedef struct OMFOffsetMap32 {
unsigned long csection; // Count of physical sections
// The next six items are repeated for each section
unsigned long crangeLog; // Count of logical offset ranges
unsigned long rgoffLog[1]; // Array of logical offsets
long rgbiasLog[1]; // Array of logical->physical bias
unsigned long crangePhys; // Count of physical offset ranges
unsigned long rgoffPhys[1]; // Array of physical offsets
long rgbiasPhys[1]; // Array of physical->logical bias
} OMFOffsetMap32;
// Pcode support. This subsection contains debug information generated
// by the MPC utility used to process Pcode executables. Currently
// it contains a mapping table from segment index (zero based) to
// frame paragraph. MPC converts segmented exe's to non-segmented
// exe's for DOS support. To avoid backpatching all CV info, this
// table is provided for the mapping. Additional info may be provided
// in the future for profiler support.
typedef struct OMFMpcDebugInfo {
unsigned short cSeg; // number of segments in module
unsigned short mpSegFrame[1]; // map seg (zero based) to frame
} OMFMpcDebugInfo;
// The following structures and constants describe the format of the
// CodeView Debug OMF for linkers that emit executables with the NB02
// signature. Current utilities with the exception of cvpack and cvdump
// will not accept or emit executables with the NB02 signature. Cvdump
// will dump an unpacked executable with the NB02 signature. Cvpack will
// read an executable with the NB02 signature but the packed executable
// will be written with the table format, contents and signature of NB08.
// subsection type constants
#define SSTMODULE 0x101 // Basic info. about object module
#define SSTPUBLIC 0x102 // Public symbols
#define SSTTYPES 0x103 // Type information
#define SSTSYMBOLS 0x104 // Symbol Data
#define SSTSRCLINES 0x105 // Source line information
#define SSTLIBRARIES 0x106 // Names of all library files used
#define SSTIMPORTS 0x107 // Symbols for DLL fixups
#define SSTCOMPACTED 0x108 // Compacted types section
#define SSTSRCLNSEG 0x109 // Same as source lines, contains segment
typedef struct DirEntry{
unsigned short SubSectionType;
unsigned short ModuleIndex;
long lfoStart;
unsigned short Size;
} DirEntry;
// information decribing each segment in a module
typedef struct oldnsg {
unsigned short Seg; // segment index
unsigned short Off; // offset of code in segment
unsigned short cbSeg; // number of bytes in segment
} oldnsg;
// old subsection module information
typedef struct oldsmd {
oldnsg SegInfo; // describes first segment in module
unsigned short ovlNbr; // overlay number
unsigned short iLib;
unsigned char cSeg; // Number of segments in module
char reserved;
unsigned char cbName[1]; // length prefixed name of module
oldnsg arnsg[]; // cSeg-1 structures exist for alloc text or comdat code
} oldsmd;
typedef struct{
unsigned short Seg;
unsigned long Off;
unsigned long cbSeg;
} oldnsg32;
typedef struct {
oldnsg32 SegInfo; // describes first segment in module
unsigned short ovlNbr; // overlay number
unsigned short iLib;
unsigned char cSeg; // Number of segments in module
char reserved;
unsigned char cbName[1]; // length prefixed name of module
oldnsg32 arnsg[]; // cSeg-1 structures exist for alloc text or comdat code
} oldsmd32;
// OMFSegMap - This table contains the mapping between the logical segment indices
// used in the symbol table and the physical segments where the program is loaded
typedef struct OMFSegMapDesc {
unsigned short flags; // descriptor flags bit field.
unsigned short ovl; // the logical overlay number
unsigned short group; // group index into the descriptor array
unsigned short frame; // logical segment index - interpreted via flags
unsigned short iSegName; // segment or group name - index into sstSegName
unsigned short iClassName; // class name - index into sstSegName
unsigned long offset; // byte offset of the logical within the physical segment
unsigned long cbSeg; // byte count of the logical segment or group
} OMFSegMapDesc;
typedef struct OMFSegMap {
unsigned short cSeg; // total number of segment descriptors
unsigned short cSegLog; // number of logical segment descriptors
OMFSegMapDesc rgDesc[1]; // array of segment descriptors
} OMFSegMap;
#ifdef __CCDL__
#pragma pack(0)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -