winedump: Add support for dumping stream of fixed index 4.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Eric Pouech 2021-08-24 11:12:26 +02:00 committed by Alexandre Julliard
parent 36961eef16
commit 1d03a4febc
1 changed files with 10 additions and 5 deletions

View File

@ -562,11 +562,13 @@ static void pdb_dump_symbols(struct pdb_reader* reader, PDB_STREAM_INDEXES* sidx
free(filesimage); free(filesimage);
} }
static void pdb_dump_types(struct pdb_reader* reader) /* there are two 'type' related streams, but with different indexes... */
static void pdb_dump_types(struct pdb_reader* reader, unsigned strmidx, const char* strmname)
{ {
PDB_TYPES* types = NULL; PDB_TYPES* types = NULL;
types = reader->read_file(reader, 2); types = reader->read_file(reader, strmidx);
if (!types) return;
switch (types->version) switch (types->version)
{ {
@ -581,7 +583,7 @@ static void pdb_dump_types(struct pdb_reader* reader)
} }
/* Read type table */ /* Read type table */
printf("Types:\n" printf("Types (%s):\n"
"\tversion: %u\n" "\tversion: %u\n"
"\ttype_offset: %08x\n" "\ttype_offset: %08x\n"
"\tfirst_index: %x\n" "\tfirst_index: %x\n"
@ -597,6 +599,7 @@ static void pdb_dump_types(struct pdb_reader* reader)
"\tsearch_len: %x\n" "\tsearch_len: %x\n"
"\tunknown_offset: %x\n" "\tunknown_offset: %x\n"
"\tunknown_len: %x\n", "\tunknown_len: %x\n",
strmname,
types->version, types->version,
types->type_offset, types->type_offset,
types->first_index, types->first_index,
@ -782,7 +785,8 @@ static void pdb_jg_dump(void)
default: default:
printf("-Unknown root block version %d\n", reader.u.jg.root->Version); printf("-Unknown root block version %d\n", reader.u.jg.root->Version);
} }
pdb_dump_types(&reader); pdb_dump_types(&reader, 2, "TPI");
pdb_dump_types(&reader, 4, "IPI");
pdb_dump_symbols(&reader, &sidx); pdb_dump_symbols(&reader, &sidx);
pdb_dump_fpo(&reader, sidx.FPO); pdb_dump_fpo(&reader, sidx.FPO);
pdb_dump_segments(&reader, sidx.segments); pdb_dump_segments(&reader, sidx.segments);
@ -926,7 +930,8 @@ static void pdb_ds_dump(void)
} }
if (numok) printf(">>> unmatched present field with found\n"); if (numok) printf(">>> unmatched present field with found\n");
pdb_dump_types(&reader); pdb_dump_types(&reader, 2, "TPI");
pdb_dump_types(&reader, 4, "IPI");
pdb_dump_symbols(&reader, &sidx); pdb_dump_symbols(&reader, &sidx);
pdb_dump_fpo(&reader, sidx.FPO); pdb_dump_fpo(&reader, sidx.FPO);
pdb_dump_fpo_ext(&reader, sidx.FPO_EXT); pdb_dump_fpo_ext(&reader, sidx.FPO_EXT);