forked from Mirrors/wine-wine
winedump: Improved TLB custom data handling.
parent
33d697c001
commit
30def32b6f
|
@ -390,6 +390,15 @@ static int dump_msft_namehashtab(seg_t *seg)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dump_string(int len, int align_off)
|
||||||
|
{
|
||||||
|
printf("\"");
|
||||||
|
fwrite(tlb_read(len), len, 1, stdout);
|
||||||
|
printf("\" ");
|
||||||
|
while((len++ + align_off) & 3)
|
||||||
|
printf("\\%2.2x", tlb_read_byte());
|
||||||
|
}
|
||||||
|
|
||||||
static void dump_msft_name(int base, int n)
|
static void dump_msft_name(int base, int n)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
|
@ -401,11 +410,8 @@ static void dump_msft_name(int base, int n)
|
||||||
len = print_hex("namelen")&0xff;
|
len = print_hex("namelen")&0xff;
|
||||||
|
|
||||||
print_offset();
|
print_offset();
|
||||||
printf("name = \"");
|
printf("name = ");
|
||||||
fwrite(tlb_read(len), len, 1, stdout);
|
dump_string(len, 0);
|
||||||
printf("\" ");
|
|
||||||
while(len++ & 3)
|
|
||||||
printf("\\%2.2x", tlb_read_byte());
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
print_end_block();
|
print_end_block();
|
||||||
|
@ -470,9 +476,29 @@ static int dump_msft_arraydescs(seg_t *seg)
|
||||||
|
|
||||||
static int dump_msft_custdata(seg_t *seg)
|
static int dump_msft_custdata(seg_t *seg)
|
||||||
{
|
{
|
||||||
|
unsigned short vt;
|
||||||
|
unsigned i, n;
|
||||||
|
|
||||||
print_begin_block("CustData");
|
print_begin_block("CustData");
|
||||||
|
|
||||||
dump_binary(seg->length); /* FIXME */
|
for(i=0; offset < seg->offset+seg->length; i++) {
|
||||||
|
print_offset();
|
||||||
|
|
||||||
|
vt = tlb_read_short();
|
||||||
|
printf("vt %d", vt);
|
||||||
|
n = tlb_read_int();
|
||||||
|
|
||||||
|
switch(vt) {
|
||||||
|
case 8 /* VT_BSTR */:
|
||||||
|
printf(" len %d: ", n);
|
||||||
|
dump_string(n, 2);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf(": %x ", n);
|
||||||
|
printf("\\%2.2x \\%2.2x\n", tlb_read_byte(), tlb_read_byte());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print_end_block();
|
print_end_block();
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue