Module: wine Branch: master Commit: 0bee33e1952dd38c770523765ec8be8ef9936fa8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0bee33e1952dd38c770523765e...
Author: Eric Pouech eric.pouech@wanadoo.fr Date: Wed Nov 29 21:40:43 2006 +0100
mscvpdb.h: Update some definitions (constants, structures) with latest information we have.
---
dlls/dbghelp/msc.c | 20 ++++---- include/wine/mscvpdb.h | 108 ++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 102 insertions(+), 26 deletions(-)
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 7599917..b7209b1 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -1454,16 +1454,16 @@ static int codeview_snarf(const struct m } break;
- case S_COMPILE_V1: - TRACE("S-Compile-V1 %x %s\n", - sym->compile_v1.unknown, terminate_string(&sym->compile_v1.p_name)); + case S_COMPILAND_V1: + TRACE("S-Compiland-V1 %x %s\n", + sym->compiland_v1.unknown, terminate_string(&sym->compiland_v1.p_name)); break;
- case S_COMPILE_V2: - TRACE("S-Compile-V2 %s\n", terminate_string(&sym->compile_v2.p_name)); + case S_COMPILAND_V2: + TRACE("S-Compiland-V2 %s\n", terminate_string(&sym->compiland_v2.p_name)); if (TRACE_ON(dbghelp_msc)) { - const char* ptr1 = sym->compile_v2.p_name.name + sym->compile_v2.p_name.namelen; + const char* ptr1 = sym->compiland_v2.p_name.name + sym->compiland_v2.p_name.namelen; const char* ptr2; while (*ptr1) { @@ -1473,11 +1473,11 @@ static int codeview_snarf(const struct m } } break; - case S_COMPILE_V3: - TRACE("S-Compile-V3 %s\n", sym->compile_v3.name); + case S_COMPILAND_V3: + TRACE("S-Compiland-V3 %s\n", sym->compiland_v3.name); if (TRACE_ON(dbghelp_msc)) { - const char* ptr1 = sym->compile_v3.name + strlen(sym->compile_v3.name); + const char* ptr1 = sym->compiland_v3.name + strlen(sym->compiland_v3.name); const char* ptr2; while (*ptr1) { @@ -1622,7 +1622,7 @@ static int codeview_snarf(const struct m length += (*name + 1 + 3) & ~3; break;
- case S_PUB_DATA_V3: + case S_PUB_V3: if (!(dbghelp_options & SYMOPT_NO_PUBLICS)) { symt_new_public(msc_dbg->module, compiland, diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index e59d79e..08366d9 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -343,7 +343,7 @@ union codeview_type { unsigned short int len; short int id; - unsigned unknown1; /* could be this_type ??? */ + unsigned this_type; unsigned int class_type; unsigned int rvtype; unsigned char call; @@ -540,6 +540,14 @@ union codeview_fieldtype struct { short int id; + short int attribute; + unsigned int type; + char name[1]; + } stmember_v3; + + struct + { + short int id; short int count; short int mlist; struct p_string p_name; @@ -556,7 +564,15 @@ union codeview_fieldtype struct { short int id; - short int index; + short int count; + unsigned int mlist; + char name[1]; + } method_v3; + + struct + { + short int id; + short int type; struct p_string p_name; } nesttype_v1;
@@ -564,13 +580,21 @@ union codeview_fieldtype { short int id; short int _pad0; - unsigned int index; + unsigned int type; struct p_string p_name; } nesttype_v2;
struct { short int id; + short int _pad0; + unsigned int type; + char name[1]; + } nesttype_v3; + + struct + { + short int id; short int type; } vfunctab_v1;
@@ -606,18 +630,26 @@ union codeview_fieldtype { short int id; short int attribute; - short int type; - unsigned int vtab_offset; + unsigned int type; struct p_string p_name; - } onemethod_virt_v1; + } onemethod_v2;
struct { short int id; short int attribute; unsigned int type; + char name[1]; + } onemethod_v3; + + struct + { + short int id; + short int attribute; + short int type; + unsigned int vtab_offset; struct p_string p_name; - } onemethod_v2; + } onemethod_virt_v1;
struct { @@ -631,6 +663,15 @@ union codeview_fieldtype struct { short int id; + short int attribute; + unsigned int type; + unsigned int vtab_offset; + char name[1]; + } onemethod_virt_v3; + + struct + { + short int id; short int type; unsigned int offset; } vfuncoff_v1; @@ -647,7 +688,7 @@ union codeview_fieldtype { short int id; short int attribute; - short int index; + short int type; struct p_string p_name; } nesttypeex_v1;
@@ -655,7 +696,7 @@ union codeview_fieldtype { short int id; short int attribute; - unsigned int index; + unsigned int type; struct p_string p_name; } nesttypeex_v2;
@@ -817,6 +858,10 @@ union codeview_fieldtype #define LF_UNION_V3 0x1506 #define LF_ENUM_V3 0x1507 #define LF_MEMBER_V3 0x150d +#define LF_STMEMBER_V3 0x150e +#define LF_METHOD_V3 0x150f +#define LF_NESTTYPE_V3 0x1510 +#define LF_ONEMETHOD_V3 0x1511
#define LF_NUMERIC 0x8000 /* numeric leaf types */ #define LF_CHAR 0x8000 @@ -960,6 +1005,26 @@ union codeview_symbol
struct { + short int len; + short int id; + unsigned int symtype; + unsigned int offset; + unsigned short segment; + struct p_string p_name; + } public_v2; + + struct + { + short int len; + short int id; + unsigned int symtype; + unsigned int offset; + unsigned short segment; + char name[1]; + } public_v3; + + struct + { short int len; /* Total length of this entry */ short int id; /* Always S_BPREL_V1 */ unsigned int offset; /* Stack offset relative to BP */ @@ -1007,6 +1072,16 @@ union codeview_symbol
struct { + short int len; /* Total length of this entry */ + short int id; /* Always S_REGISTER_V3 */ + unsigned int type; /* check whether type & reg are correct */ + unsigned short reg; + char name[1]; + /* don't handle register tracking */ + } register_v3; + + struct + { short int len; short int id; unsigned int parent; @@ -1120,7 +1195,7 @@ union codeview_symbol short int id; unsigned int unknown; struct p_string p_name; - } compile_v1; + } compiland_v1;
struct { @@ -1129,7 +1204,7 @@ union codeview_symbol unsigned unknown1[4]; unsigned short unknown2; struct p_string p_name; - } compile_v2; + } compiland_v2;
struct { @@ -1137,7 +1212,7 @@ union codeview_symbol short int id; unsigned int unknown; char name[1]; - } compile_v3; + } compiland_v3;
struct { @@ -1148,7 +1223,7 @@ union codeview_symbol } ssearch_v1; };
-#define S_COMPILE_V1 0x0001 +#define S_COMPILAND_V1 0x0001 #define S_REGISTER_V1 0x0002 #define S_CONSTANT_V1 0x0003 #define S_UDT_V1 0x0004 @@ -1202,18 +1277,19 @@ union codeview_symbol #if 0 #define S_XXXXXXXXX_32 0x1012 /* seems linked to a function, content unknown */ #endif -#define S_COMPILE_V2 0x1013 +#define S_COMPILAND_V2 0x1013
-#define S_COMPILE_V3 0x1101 +#define S_COMPILAND_V3 0x1101 #define S_THUNK_V3 0x1102 #define S_BLOCK_V3 0x1103 #define S_LABEL_V3 0x1105 +#define S_REGISTER_V3 0x1106 #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_PUB_V3 0x110E #define S_LPROC_V3 0x110F #define S_GPROC_V3 0x1110 #define S_MSTOOL_V3 0x1116 /* not really understood */