Eric Pouech : winedump: Added for dumping sstAlignSym and sstGlobalTypes COFF sections.

Alexandre Julliard julliard at wine.codeweavers.com
Sat Jan 6 05:12:52 CST 2007


Module: wine
Branch: master
Commit: fbb9d5f7d9f0768919701c2c63fac3ec166bf6d4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fbb9d5f7d9f0768919701c2c63fac3ec166bf6d4

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Fri Jan  5 21:43:06 2007 +0100

winedump: Added for dumping sstAlignSym and sstGlobalTypes COFF sections.

---

 tools/winedump/debug.c |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/tools/winedump/debug.c b/tools/winedump/debug.c
index 3202c25..3ca944b 100644
--- a/tools/winedump/debug.c
+++ b/tools/winedump/debug.c
@@ -173,7 +173,25 @@ static int dump_cv_sst_libraries(const O
 
 static int dump_cv_sst_global_types(const OMFDirEntry* omfde)
 {
-    /*** NOT YET IMPLEMENTED ***/
+    long	        fileoffset;
+    const OMFGlobalTypes*types;
+    const BYTE*         data;
+    unsigned            sz;
+
+    fileoffset = Offset(cv_base) + omfde->lfo;
+    printf ("    GlobalTypes section starts at file offset 0x%lx\n", fileoffset);
+
+    printf ("\n                           ----- Begin Global Types Table -----\n");
+
+    types = PRD(fileoffset, sizeof(OMFGlobalTypes));
+    if (!types) {printf("Can't get OMF-GlobalTypes, aborting\n");return FALSE;}
+
+    sz = omfde->cb - sizeof(OMFGlobalTypes) - sizeof(DWORD) * types->cTypes;
+    data = PRD(fileoffset + sizeof(OMFGlobalTypes) + sizeof(DWORD) * types->cTypes, sz);
+    if (!data) {printf("Can't OMF-SymHash details, aborting\n"); return FALSE;}
+
+    codeview_dump_types(data, sz);
+
     return TRUE;
 }
 
@@ -306,7 +324,11 @@ static int dump_cv_sst_src_module(const
 
 static int dump_cv_sst_align_sym(const OMFDirEntry* omfde)
 {
-    /*** NOT YET IMPLEMENTED ***/
+    const char* rawdata = PRD(Offset(cv_base) + omfde->lfo, omfde->cb);
+
+    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));
 
     return TRUE;
 }




More information about the wine-cvs mailing list