[PATCH 05/10] tools/winedump: pass start offset when dumping symbols

Eric Pouech eric.pouech at gmail.com
Wed Nov 10 09:42:55 CST 2021


Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 tools/winedump/debug.c    |    4 ++--
 tools/winedump/lib.c      |    2 +-
 tools/winedump/msc.c      |    6 +++---
 tools/winedump/pdb.c      |    4 ++--
 tools/winedump/winedump.h |    2 +-
 5 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/tools/winedump/debug.c b/tools/winedump/debug.c
index c2efeb24340..b49c6337494 100644
--- a/tools/winedump/debug.c
+++ b/tools/winedump/debug.c
@@ -135,7 +135,7 @@ static BOOL dump_cv_sst_global_pub(const OMFDirEntry* omfde)
     symbols = PRD(fileoffset + sizeof(OMFSymHash), header->cbSymbol);
     if (!symbols) {printf("Can't OMF-SymHash details, aborting\n"); return FALSE;}
 
-    codeview_dump_symbols(symbols, header->cbSymbol);
+    codeview_dump_symbols(symbols, 0, header->cbSymbol);
 
     return TRUE;
 }
@@ -320,7 +320,7 @@ static BOOL dump_cv_sst_align_sym(const OMFDirEntry* omfde)
 
     if (!rawdata) {printf("Can't get srcAlignSym subsection details, aborting\n");return FALSE;}
     if (omfde->cb < sizeof(DWORD)) return TRUE;
-    codeview_dump_symbols(rawdata + sizeof(DWORD), omfde->cb - sizeof(DWORD));
+    codeview_dump_symbols(rawdata, sizeof(DWORD), omfde->cb);
 
     return TRUE;
 }
diff --git a/tools/winedump/lib.c b/tools/winedump/lib.c
index 430ec2d4de7..4000e8679cf 100644
--- a/tools/winedump/lib.c
+++ b/tools/winedump/lib.c
@@ -97,7 +97,7 @@ static void dump_long_import(const void *base, const IMAGE_SECTION_HEADER *ish,
         {
             const char *imp_debugS = (const char *)base + ish[i].PointerToRawData;
 
-            codeview_dump_symbols(imp_debugS, ish[i].SizeOfRawData);
+            codeview_dump_symbols(imp_debugS, 0, ish[i].SizeOfRawData);
             printf("\n");
         }
     }
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
index cd91ea63634..f058eaf0b36 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -1303,7 +1303,7 @@ static void dump_binannot(const unsigned char* ba, const char* last, const char*
     }
 }
 
-BOOL codeview_dump_symbols(const void* root, unsigned long size)
+BOOL codeview_dump_symbols(const void* root, unsigned long start, unsigned long size)
 {
     unsigned int i;
     int          length;
@@ -1313,12 +1313,12 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
      * Loop over the different types of records and whenever we
      * find something we are interested in, record it and move on.
      */
-    for (i = 0; i < size; i += length)
+    for (i = start; i < size; i += length)
     {
         const union codeview_symbol* sym = (const union codeview_symbol*)((const char*)root + i);
         length = sym->generic.len + 2;
         if (!sym->generic.id || length < 4) break;
-        printf("\t%04x => ", i + 4); /* ref is made after id and len */
+        printf("\t%04x => ", i);
 
         switch (sym->generic.id)
         {
diff --git a/tools/winedump/pdb.c b/tools/winedump/pdb.c
index 958a13f5e1c..7badc8a32e2 100644
--- a/tools/winedump/pdb.c
+++ b/tools/winedump/pdb.c
@@ -473,7 +473,7 @@ static void pdb_dump_symbols(struct pdb_reader* reader, PDB_STREAM_INDEXES* sidx
     if (modimage)
     {
         printf("\t------------globals-------------\n"); 
-        codeview_dump_symbols(modimage, pdb_get_file_size(reader, symbols->gsym_file));
+        codeview_dump_symbols(modimage, 0, pdb_get_file_size(reader, symbols->gsym_file));
         free(modimage);
     }
 
@@ -588,7 +588,7 @@ static void pdb_dump_symbols(struct pdb_reader* reader, PDB_STREAM_INDEXES* sidx
             int total_size = pdb_get_file_size(reader, file_nr);
 
             if (symbol_size)
-                codeview_dump_symbols((const char*)modimage + sizeof(DWORD), symbol_size);
+                codeview_dump_symbols((const char*)modimage, sizeof(DWORD), symbol_size);
 
             /* line number info */
             if (lineno_size)
diff --git a/tools/winedump/winedump.h b/tools/winedump/winedump.h
index 236ce6dede3..6013d3caae6 100644
--- a/tools/winedump/winedump.h
+++ b/tools/winedump/winedump.h
@@ -259,7 +259,7 @@ void            tlb_dump(void);
 enum FileSig    get_kind_nls(void);
 void            nls_dump(void);
 
-BOOL            codeview_dump_symbols(const void* root, unsigned long size);
+BOOL            codeview_dump_symbols(const void* root, unsigned long start, unsigned long size);
 BOOL            codeview_dump_types_from_offsets(const void* table, const DWORD* offsets, unsigned num_types);
 BOOL            codeview_dump_types_from_block(const void* table, unsigned long len);
 void            codeview_dump_linetab(const char* linetab, BOOL pascal_str, const char* pfx);




More information about the wine-devel mailing list