mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-01 07:37:02 +00:00
winedump: Add some more codeview entries.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
a15e1e8150
commit
f1e0753cdd
2 changed files with 69 additions and 0 deletions
|
@ -482,6 +482,17 @@ union codeview_reftype
|
|||
unsigned num;
|
||||
cv_typ_t drvdcls[1];
|
||||
} derived_v2;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned short int len;
|
||||
unsigned short int id;
|
||||
cv_typ_t type;
|
||||
cv_typ_t baseVftable;
|
||||
unsigned offsetInObjectLayout;
|
||||
unsigned cbstr;
|
||||
char names[1]; /* array of len 0-terminated strings (size of cbstr in char:s) */
|
||||
} vftable_v3;
|
||||
};
|
||||
|
||||
union codeview_fieldtype
|
||||
|
@ -1287,6 +1298,7 @@ union codeview_fieldtype
|
|||
#define LF_METHOD_V3 0x150f
|
||||
#define LF_NESTTYPE_V3 0x1510
|
||||
#define LF_ONEMETHOD_V3 0x1511
|
||||
#define LF_VFTABLE_V3 0x151d
|
||||
|
||||
/* leaves found in second type type (aka IPI)
|
||||
* for simplicity, stored in the same union as other TPI leaves
|
||||
|
@ -1988,6 +2000,30 @@ union codeview_symbol
|
|||
unsigned short int id;
|
||||
char name[1];
|
||||
} unamespace_v3;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned short int len;
|
||||
unsigned short int id;
|
||||
unsigned int pParent;
|
||||
unsigned int pEnd;
|
||||
unsigned int length;
|
||||
unsigned int scf; /* CV_SEPCODEFLAGS */
|
||||
unsigned int off;
|
||||
unsigned int offParent;
|
||||
unsigned short int sect;
|
||||
unsigned short int sectParent;
|
||||
} sepcode_v3;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned short int len;
|
||||
unsigned short int id;
|
||||
unsigned int off;
|
||||
unsigned short int seg;
|
||||
unsigned short int csz; /* number of bytes in following array */
|
||||
char rgsz[1]; /* array of null terminated strings (bounded by csz) */
|
||||
} annotation_v3;
|
||||
};
|
||||
|
||||
enum BinaryAnnotationOpcode
|
||||
|
@ -2061,6 +2097,7 @@ enum BinaryAnnotationOpcode
|
|||
#define S_GTHREAD32_ST 0x100f
|
||||
#define S_FRAMEPROC 0x1012
|
||||
#define S_COMPILE2_ST 0x1013
|
||||
#define S_ANNOTATION 0x1019
|
||||
#define S_UNAMESPACE_ST 0x1029
|
||||
|
||||
#define S_OBJNAME 0x1101
|
||||
|
|
|
@ -1102,6 +1102,20 @@ static void codeview_dump_one_type(unsigned curr_type, const union codeview_type
|
|||
printf("\n");
|
||||
break;
|
||||
|
||||
case LF_VFTABLE_V3:
|
||||
printf("\t%x => VFTable V3 base:%x baseVfTable:%x offset%u\n",
|
||||
curr_type, reftype->vftable_v3.type, reftype->vftable_v3.baseVftable, reftype->vftable_v3.offsetInObjectLayout);
|
||||
{
|
||||
const char* str = reftype->vftable_v3.names;
|
||||
const char* last = str + reftype->vftable_v3.cbstr;
|
||||
while (str < last)
|
||||
{
|
||||
printf("\t\t%s\n", str);
|
||||
str += strlen(str) + 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/* types from IPI (aka #4) stream */
|
||||
case LF_FUNC_ID:
|
||||
printf("\t%x => FuncId %s scopeId:%04x type:%04x\n",
|
||||
|
@ -1867,6 +1881,24 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
printf("UNameSpace V3 '%s'\n", sym->unamespace_v3.name);
|
||||
break;
|
||||
|
||||
case S_SEPCODE:
|
||||
printf("SepCode V3 pParent:%x pEnd:%x separated:%04x:%08x (#%u) from %04x:%08x\n",
|
||||
sym->sepcode_v3.pParent, sym->sepcode_v3.pEnd,
|
||||
sym->sepcode_v3.sect, sym->sepcode_v3.off, sym->sepcode_v3.length,
|
||||
sym->sepcode_v3.sectParent, sym->sepcode_v3.offParent);
|
||||
break;
|
||||
|
||||
case S_ANNOTATION:
|
||||
printf("Annotation V3 %04x:%08x\n",
|
||||
sym->annotation_v3.seg, sym->annotation_v3.off);
|
||||
{
|
||||
const char* ptr = sym->annotation_v3.rgsz;
|
||||
const char* last = ptr + sym->annotation_v3.csz;
|
||||
for (; ptr < last; ptr += strlen(ptr) + 1)
|
||||
printf("\t%s\n", ptr);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("\n\t\t>>> Unsupported symbol-id %x sz=%d\n", sym->generic.id, sym->generic.len + 2);
|
||||
dump_data((const void*)sym, sym->generic.len + 2, " ");
|
||||
|
|
Loading…
Reference in a new issue