📄 mscvpdb.h
字号:
} stack_v2;
struct
{
short int len; /* Total length of this entry */
short int id; /* Always S_BPREL_V3 */
int offset; /* Stack offset relative to BP */
unsigned int symtype;
char name[1];
} stack_v3;
struct
{
short int len; /* Total length of this entry */
short int id; /* Always S_REGISTER */
unsigned short type;
unsigned short reg;
struct p_string p_name;
/* don't handle register tracking */
} register_v1;
struct
{
short int len; /* Total length of this entry */
short int id; /* Always S_REGISTER_V2 */
unsigned int type; /* check whether type & reg are correct */
unsigned int reg;
struct p_string p_name;
/* don't handle register tracking */
} register_v2;
struct
{
short int len;
short int id;
unsigned int parent;
unsigned int end;
unsigned int length;
unsigned int offset;
unsigned short segment;
struct p_string p_name;
} block_v1;
struct
{
short int len;
short int id;
unsigned int parent;
unsigned int end;
unsigned int length;
unsigned int offset;
unsigned short segment;
char name[1];
} block_v3;
struct
{
short int len;
short int id;
unsigned int offset;
unsigned short segment;
unsigned char flags;
struct p_string p_name;
} label_v1;
struct
{
short int len;
short int id;
unsigned int offset;
unsigned short segment;
unsigned char flags;
char name[1];
} label_v3;
struct
{
short int len;
short int id;
unsigned short type;
unsigned short cvalue; /* numeric leaf */
#if 0
struct p_string p_name;
#endif
} constant_v1;
struct
{
short int len;
short int id;
unsigned type;
unsigned short cvalue; /* numeric leaf */
#if 0
struct p_string p_name;
#endif
} constant_v2;
struct
{
short int len;
short int id;
unsigned type;
unsigned short cvalue;
#if 0
char name[1];
#endif
} constant_v3;
struct
{
short int len;
short int id;
unsigned short type;
struct p_string p_name;
} udt_v1;
struct
{
short int len;
short int id;
unsigned type;
struct p_string p_name;
} udt_v2;
struct
{
short int len;
short int id;
unsigned int type;
char name[1];
} udt_v3;
struct
{
short int len;
short int id;
unsigned int unknown;
struct p_string p_name;
} compiland_v1;
struct
{
short int len;
short int id;
unsigned unknown1[4];
unsigned short unknown2;
struct p_string p_name;
} compiland_v2;
struct
{
short int len;
short int id;
unsigned int unknown;
char name[1];
} compiland_v3;
};
#define S_COMPILAND_V1 0x0001
#define S_REGISTER_V1 0x0002
#define S_CONSTANT_V1 0x0003
#define S_UDT_V1 0x0004
#define S_SSEARCH_V1 0x0005
#define S_END_V1 0x0006
#define S_SKIP_V1 0x0007
#define S_CVRESERVE_V1 0x0008
#define S_OBJNAME_V1 0x0009
#define S_ENDARG_V1 0x000a
#define S_COBOLUDT_V1 0x000b
#define S_MANYREG_V1 0x000c
#define S_RETURN_V1 0x000d
#define S_ENTRYTHIS_V1 0x000e
#define S_BPREL_V1 0x0200
#define S_LDATA_V1 0x0201
#define S_GDATA_V1 0x0202
#define S_PUB_V1 0x0203
#define S_LPROC_V1 0x0204
#define S_GPROC_V1 0x0205
#define S_THUNK_V1 0x0206
#define S_BLOCK_V1 0x0207
#define S_WITH_V1 0x0208
#define S_LABEL_V1 0x0209
#define S_CEXMODEL_V1 0x020a
#define S_VFTPATH_V1 0x020b
#define S_REGREL_V1 0x020c
#define S_LTHREAD_V1 0x020d
#define S_GTHREAD_V1 0x020e
#define S_PROCREF_V1 0x0400
#define S_DATAREF_V1 0x0401
#define S_ALIGN_V1 0x0402
#define S_LPROCREF_V1 0x0403
#define S_REGISTER_V2 0x1001 /* Variants with new 32-bit type indices */
#define S_CONSTANT_V2 0x1002
#define S_UDT_V2 0x1003
#define S_COBOLUDT_V2 0x1004
#define S_MANYREG_V2 0x1005
#define S_BPREL_V2 0x1006
#define S_LDATA_V2 0x1007
#define S_GDATA_V2 0x1008
#define S_PUB_V2 0x1009
#define S_LPROC_V2 0x100a
#define S_GPROC_V2 0x100b
#define S_VFTTABLE_V2 0x100c
#define S_REGREL_V2 0x100d
#define S_LTHREAD_V2 0x100e
#define S_GTHREAD_V2 0x100f
#if 0
#define S_XXXXXXXXX_32 0x1012 /* seems linked to a function, content unknown */
#endif
#define S_COMPILAND_V2 0x1013
#define S_COMPILAND_V3 0x1101
#define S_THUNK_V3 0x1102
#define S_BLOCK_V3 0x1103
#define S_LABEL_V3 0x1105
#define S_CONSTANT_V3 0x1107
#define S_UDT_V3 0x1108
#define S_BPREL_V3 0x110B
#define S_LDATA_V3 0x110C
#define S_GDATA_V3 0x110D
#define S_PUB_DATA_V3 0x110E
#define S_LPROC_V3 0x110F
#define S_GPROC_V3 0x1110
#define S_MSTOOL_V3 0x1116 /* not really understood */
#define S_PUB_FUNC1_V3 0x1125 /* didn't get the difference between the two */
#define S_PUB_FUNC2_V3 0x1127
/* ======================================== *
* Line number information
* ======================================== */
union any_size
{
const char* c;
const short* s;
const int* i;
const unsigned int* ui;
};
struct startend
{
unsigned int start;
unsigned int end;
};
struct codeview_linetab
{
unsigned int nline;
unsigned int segno;
unsigned int start;
unsigned int end;
struct symt_compiland* compiland;
const unsigned short* linetab;
const unsigned int* offtab;
};
/* ======================================== *
* PDB file information
* ======================================== */
struct PDB_FILE
{
DWORD size;
DWORD unknown;
};
struct PDB_JG_HEADER
{
CHAR ident[40];
DWORD signature;
DWORD block_size;
WORD free_list;
WORD total_alloc;
struct PDB_FILE toc;
WORD toc_block[1];
};
struct PDB_DS_HEADER
{
char signature[32];
DWORD block_size;
DWORD unknown1;
DWORD num_pages;
DWORD toc_size;
DWORD unknown2;
DWORD toc_page;
};
struct PDB_JG_TOC
{
DWORD num_files;
struct PDB_FILE file[1];
};
struct PDB_DS_TOC
{
DWORD num_files;
DWORD file_size[1];
};
struct PDB_JG_ROOT
{
DWORD Version;
DWORD TimeDateStamp;
DWORD unknown;
DWORD cbNames;
CHAR names[1];
};
struct PDB_DS_ROOT
{
DWORD Version;
DWORD TimeDateStamp;
DWORD unknown;
GUID guid;
DWORD cbNames;
CHAR names[1];
};
typedef struct _PDB_TYPES_OLD
{
DWORD version;
WORD first_index;
WORD last_index;
DWORD type_size;
WORD file;
WORD pad;
} PDB_TYPES_OLD, *PPDB_TYPES_OLD;
typedef struct _PDB_TYPES
{
DWORD version;
DWORD type_offset;
DWORD first_index;
DWORD last_index;
DWORD type_size;
WORD file;
WORD pad;
DWORD hash_size;
DWORD hash_base;
DWORD hash_offset;
DWORD hash_len;
DWORD search_offset;
DWORD search_len;
DWORD unknown_offset;
DWORD unknown_len;
} PDB_TYPES, *PPDB_TYPES;
typedef struct _PDB_SYMBOL_RANGE
{
WORD segment;
WORD pad1;
DWORD offset;
DWORD size;
DWORD characteristics;
WORD index;
WORD pad2;
} PDB_SYMBOL_RANGE, *PPDB_SYMBOL_RANGE;
typedef struct _PDB_SYMBOL_RANGE_EX
{
WORD segment;
WORD pad1;
DWORD offset;
DWORD size;
DWORD characteristics;
WORD index;
WORD pad2;
DWORD timestamp;
DWORD unknown;
} PDB_SYMBOL_RANGE_EX, *PPDB_SYMBOL_RANGE_EX;
typedef struct _PDB_SYMBOL_FILE
{
DWORD unknown1;
PDB_SYMBOL_RANGE range;
WORD flag;
WORD file;
DWORD symbol_size;
DWORD lineno_size;
DWORD unknown2;
DWORD nSrcFiles;
DWORD attribute;
CHAR filename[1];
} PDB_SYMBOL_FILE, *PPDB_SYMBOL_FILE;
typedef struct _PDB_SYMBOL_FILE_EX
{
DWORD unknown1;
PDB_SYMBOL_RANGE_EX range;
WORD flag;
WORD file;
DWORD symbol_size;
DWORD lineno_size;
DWORD unknown2;
DWORD nSrcFiles;
DWORD attribute;
DWORD reserved[2];
CHAR filename[1];
} PDB_SYMBOL_FILE_EX, *PPDB_SYMBOL_FILE_EX;
typedef struct _PDB_SYMBOL_SOURCE
{
WORD nModules;
WORD nSrcFiles;
WORD table[1];
} PDB_SYMBOL_SOURCE, *PPDB_SYMBOL_SOURCE;
typedef struct _PDB_SYMBOL_IMPORT
{
DWORD unknown1;
DWORD unknown2;
DWORD TimeDateStamp;
DWORD nRequests;
CHAR filename[1];
} PDB_SYMBOL_IMPORT, *PPDB_SYMBOL_IMPORT;
typedef struct _PDB_SYMBOLS_OLD
{
WORD hash1_file;
WORD hash2_file;
WORD gsym_file;
WORD pad;
DWORD module_size;
DWORD offset_size;
DWORD hash_size;
DWORD srcmodule_size;
} PDB_SYMBOLS_OLD, *PPDB_SYMBOLS_OLD;
typedef struct _PDB_SYMBOLS
{
DWORD signature;
DWORD version;
DWORD unknown;
DWORD hash1_file;
DWORD hash2_file;
DWORD gsym_file;
DWORD module_size;
DWORD offset_size;
DWORD hash_size;
DWORD srcmodule_size;
DWORD pdbimport_size;
DWORD resvd[5];
} PDB_SYMBOLS, *PPDB_SYMBOLS;
#include "poppack.h"
/* ----------------------------------------------
* Information used for parsing
* ---------------------------------------------- */
typedef struct
{
DWORD from;
DWORD to;
} OMAP_DATA;
struct msc_debug_info
{
struct module* module;
int nsect;
const IMAGE_SECTION_HEADER* sectp;
int nomap;
const OMAP_DATA* omapp;
const BYTE* root;
};
/* coff.c */
extern BOOL coff_process_info(const struct msc_debug_info* msc_dbg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -