Eric Pouech : winedump: Add support for dumping trampoline codeview records.

Alexandre Julliard julliard at winehq.org
Tue Aug 24 15:56:11 CDT 2021


Module: wine
Branch: master
Commit: 872c61ff9779257b71e2f9916d1ee9617229bdb7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=872c61ff9779257b71e2f9916d1ee9617229bdb7

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Tue Aug 24 11:12:08 2021 +0200

winedump: Add support for dumping trampoline codeview records.

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/wine/mscvpdb.h | 12 ++++++++++++
 tools/winedump/msc.c   | 10 ++++++++++
 2 files changed, 22 insertions(+)

diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index 3c3ef487b63..42455cbd0fe 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -1497,6 +1497,18 @@ union codeview_symbol
         char                    name[1];
     } block_v3;
 
+    struct
+    {
+        unsigned short int      len;
+        unsigned short int      id;
+        unsigned short          trampType; /* 0: incremental, 1: branchisland */
+        unsigned short          cbThunk;
+        unsigned int            offThunk;
+        unsigned int            offTarget;
+        unsigned short          sectThunk;
+        unsigned short          sectTarget;
+    } trampoline_v3;
+
     struct
     {
         unsigned short int      len;
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
index 0fa96205e20..f5d2d15774d 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -1566,6 +1566,16 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
                    sym->objname_v1.signature, p_string(&sym->objname_v1.p_name));
             break;
 
+        case S_TRAMPOLINE:
+            printf("Trampoline V3 kind:%u %04x:%08x#%x -> %04x:%08x\n",
+                   sym->trampoline_v3.trampType,
+                   sym->trampoline_v3.sectThunk,
+                   sym->trampoline_v3.offThunk,
+                   sym->trampoline_v3.cbThunk,
+                   sym->trampoline_v3.sectTarget,
+                   sym->trampoline_v3.offTarget);
+            break;
+
         case S_LABEL32_ST:
             printf("Label V1 '%s' in '%s' (%04x:%08x)\n",
                    p_string(&sym->label_v1.p_name),




More information about the wine-cvs mailing list