[PATCH 3/9] include/wine/mscvpdb.h: add definition for friend function V3

Eric Pouech eric.pouech at gmail.com
Tue Nov 2 09:31:43 CDT 2021


Update tools/winedump accordingly

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

---
 include/wine/mscvpdb.h |    9 +++++++++
 tools/winedump/msc.c   |    3 +--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index 53eeec96916..ca5422c3a65 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -566,6 +566,14 @@ union codeview_fieldtype
         struct p_string         p_name;
     } friendfcn_v2;
 
+    struct
+    {
+        unsigned short int      id;
+        short int               _pad0;
+        cv_typ_t                type;
+        char                    name[1];
+    } friendfcn_v3;
+
     struct
     {
         unsigned short int      id;
@@ -1266,6 +1274,7 @@ union codeview_fieldtype
 #define LF_STRUCTURE_V3         0x1505
 #define LF_UNION_V3             0x1506
 #define LF_ENUM_V3              0x1507
+#define LF_FRIENDFCN_V3         0x150c
 #define LF_MEMBER_V3            0x150d
 #define LF_STMEMBER_V3          0x150e
 #define LF_METHOD_V3            0x150f
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
index 18c591f44ef..dca8bcf9560 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -685,13 +685,12 @@ static void do_field(const unsigned char* start, const unsigned char* end)
             ptr += 2 + 2 + 4 + (1 + fieldtype->stmember_v2.p_name.namelen);
             break;
 
-#if 0
         case LF_FRIENDFCN_V3:
             printf("\t\tFriend function V3: '%s' type:%x\n",
                    fieldtype->friendfcn_v3.name,
                    fieldtype->friendfcn_v3.type);
+            ptr += 2 + 2 + 4 + (strlen(fieldtype->stmember_v3.name) + 1);
             break;
-#endif
 
         case LF_BCLASS_V1:
             leaf_len = numeric_leaf(&value, &fieldtype->bclass_v1.offset);




More information about the wine-devel mailing list