Alexandre Julliard : winedump: Try to load the PDB string table from file number 4 too.
Alexandre Julliard
julliard at winehq.org
Wed Jan 12 13:16:50 CST 2011
Module: wine
Branch: master
Commit: 4f574ee942be99c7401a3bef472a81d0f2bb0b5b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4f574ee942be99c7401a3bef472a81d0f2bb0b5b
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Jan 12 10:45:54 2011 +0100
winedump: Try to load the PDB string table from file number 4 too.
---
tools/winedump/pdb.c | 32 ++++++++++++++++++--------------
1 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/tools/winedump/pdb.c b/tools/winedump/pdb.c
index 5720c40..1b7beeb 100644
--- a/tools/winedump/pdb.c
+++ b/tools/winedump/pdb.c
@@ -155,6 +155,21 @@ static void pdb_exit(struct pdb_reader* reader)
free((char*)reader->u.ds.toc);
}
+static void *read_string_table(struct pdb_reader* reader)
+{
+ void *ret;
+
+ /* FIXME: how to determine the correct file number? */
+ /* 4 and 12 have been observed, there may be others */
+ ret = reader->read_file(reader, 4);
+ if (ret && *(const DWORD*)ret == 0xeffeeffe) return ret;
+ free( ret );
+ ret = reader->read_file(reader, 12);
+ if (ret && *(const DWORD*)ret == 0xeffeeffe) return ret;
+ free( ret );
+ return NULL;
+}
+
static void pdb_dump_symbols(struct pdb_reader* reader)
{
PDB_SYMBOLS* symbols;
@@ -224,20 +239,8 @@ static void pdb_dump_symbols(struct pdb_reader* reader)
dump_data(src, symbols->offset_size, " ");
}
- filesimage = reader->read_file(reader, 12); /* FIXME: really fixed ??? */
- if (filesimage)
- {
- if (*(const DWORD*)filesimage == 0xeffeeffe)
- {
- filessize = *(const DWORD*)(filesimage + 8);
- }
- else
- {
- printf("wrong header %x expecting 0xeffeeffe\n", *(const DWORD*)filesimage);
- free(filesimage);
- filesimage = NULL;
- }
- }
+ if (!(filesimage = read_string_table(reader))) printf("string table not found\n");
+ else filessize = *(const DWORD*)(filesimage + 8);
if (symbols->srcmodule_size)
{
@@ -721,6 +724,7 @@ static void pdb_ds_dump(void)
* 1: root structure
* 2: types
* 3: modules
+ * 4: string table (FIXME: in which case?)
* 5: FPO data
* 8: segments
* 10: extended FPO data
More information about the wine-cvs
mailing list