Eric Pouech : dbghelp/pdb: Add new basic type to represent char8_t introduced in C++20.

Alexandre Julliard julliard at winehq.org
Mon Nov 8 15:45:07 CST 2021


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

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Mon Nov  8 14:58:26 2021 +0100

dbghelp/pdb: Add new basic type to represent char8_t introduced in C++20.

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

---

 dlls/dbghelp/msc.c     | 4 ++++
 include/cvconst.h      | 3 ++-
 include/wine/mscvpdb.h | 7 +++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index a2d9f0bb368..3a62736e7ed 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -166,6 +166,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_WCHAR]  = &symt_new_basic(module, btWChar, "wchar_t", 2)->symt;
     cv_basic_types[T_CHAR16] = &symt_new_basic(module, btChar16,"char16_t", 2)->symt;
     cv_basic_types[T_CHAR32] = &symt_new_basic(module, btChar32,"char32_t", 4)->symt;
+    cv_basic_types[T_CHAR8]  = &symt_new_basic(module, btChar8, "char8_t", 1)->symt;
     cv_basic_types[T_INT2]   = &symt_new_basic(module, btInt,   "INT2", 2)->symt;
     cv_basic_types[T_UINT2]  = &symt_new_basic(module, btUInt,  "UINT2", 2)->symt;
     cv_basic_types[T_INT4]   = &symt_new_basic(module, btInt,   "INT4", 4)->symt;
@@ -194,6 +195,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_32PWCHAR]  = &symt_new_pointer(module, cv_basic_types[T_WCHAR], 4)->symt;
     cv_basic_types[T_32PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], 4)->symt;
     cv_basic_types[T_32PCHAR32] = &symt_new_pointer(module, cv_basic_types[T_CHAR32], 4)->symt;
+    cv_basic_types[T_32PCHAR8]  = &symt_new_pointer(module, cv_basic_types[T_CHAR8], 4)->symt;
     cv_basic_types[T_32PINT2]   = &symt_new_pointer(module, cv_basic_types[T_INT2], 4)->symt;
     cv_basic_types[T_32PUINT2]  = &symt_new_pointer(module, cv_basic_types[T_UINT2], 4)->symt;
     cv_basic_types[T_32PINT4]   = &symt_new_pointer(module, cv_basic_types[T_INT4], 4)->symt;
@@ -222,6 +224,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_64PWCHAR]  = &symt_new_pointer(module, cv_basic_types[T_WCHAR], 8)->symt;
     cv_basic_types[T_64PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], 8)->symt;
     cv_basic_types[T_64PCHAR32] = &symt_new_pointer(module, cv_basic_types[T_CHAR32], 8)->symt;
+    cv_basic_types[T_64PCHAR8]  = &symt_new_pointer(module, cv_basic_types[T_CHAR8], 8)->symt;
     cv_basic_types[T_64PINT2]   = &symt_new_pointer(module, cv_basic_types[T_INT2], 8)->symt;
     cv_basic_types[T_64PUINT2]  = &symt_new_pointer(module, cv_basic_types[T_UINT2], 8)->symt;
     cv_basic_types[T_64PINT4]   = &symt_new_pointer(module, cv_basic_types[T_INT4], 8)->symt;
@@ -250,6 +253,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_PWCHAR]  = &symt_new_pointer(module, cv_basic_types[T_WCHAR],  ptrsz)->symt;
     cv_basic_types[T_PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], ptrsz)->symt;
     cv_basic_types[T_PCHAR32] = &symt_new_pointer(module, cv_basic_types[T_CHAR32], ptrsz)->symt;
+    cv_basic_types[T_PCHAR8]  = &symt_new_pointer(module, cv_basic_types[T_CHAR8],  ptrsz)->symt;
     cv_basic_types[T_PINT2]   = &symt_new_pointer(module, cv_basic_types[T_INT2],   ptrsz)->symt;
     cv_basic_types[T_PUINT2]  = &symt_new_pointer(module, cv_basic_types[T_UINT2],  ptrsz)->symt;
     cv_basic_types[T_PINT4]   = &symt_new_pointer(module, cv_basic_types[T_INT4],   ptrsz)->symt;
diff --git a/include/cvconst.h b/include/cvconst.h
index 82929dda772..9536ee8202d 100644
--- a/include/cvconst.h
+++ b/include/cvconst.h
@@ -91,7 +91,8 @@ enum BasicType
     btBSTR = 30,
     btHresult = 31,
     btChar16 = 32,
-    btChar32 = 33
+    btChar32 = 33,
+    btChar8 = 34,
 };
 
 /* kind of UDT */
diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index e199aff785f..1a173c097d7 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -945,6 +945,7 @@ union codeview_fieldtype
 #define T_UINT8             0x0077  /* 64-bit unsigned int */
 #define T_CHAR16            0x007a  /* 16-bit unicode char */
 #define T_CHAR32            0x007b  /* 32-bit unicode char */
+#define T_CHAR8             0x007c  /* 8-bit unicode char (C++ 20) */
 
 /* near pointers to basic types */
 #define T_PVOID             0x0103  /* near pointer to void */
@@ -979,6 +980,7 @@ union codeview_fieldtype
 #define T_PUINT8            0x0177  /* Near pointer to 64-bit unsigned int */
 #define T_PCHAR16           0x017a  /* Near pointer to 16-bit unicode char */
 #define T_PCHAR32           0x017b  /* Near pointer to 32-bit unicode char */
+#define T_PCHAR8            0x017c  /* Near pointer to 8-bit unicode char */
 
 /* far pointers to basic types */
 #define T_PFVOID            0x0203  /* Far pointer to void */
@@ -1013,6 +1015,7 @@ union codeview_fieldtype
 #define T_PFUINT8           0x0277  /* Far pointer to 64-bit unsigned int */
 #define T_PFCHAR16          0x027a  /* Far pointer to 16-bit unicode char */
 #define T_PFCHAR32          0x027b  /* Far pointer to 32-bit unicode char */
+#define T_PFCHAR8           0x027c  /* Far pointer to 8-bit unicode char */
 
 /* huge pointers to basic types */
 #define T_PHVOID            0x0303  /* Huge pointer to void */
@@ -1047,6 +1050,7 @@ union codeview_fieldtype
 #define T_PHUINT8           0x0377  /* Huge pointer to 64-bit unsigned int */
 #define T_PHCHAR16          0x037a  /* Huge pointer to 16-bit unicode char */
 #define T_PHCHAR32          0x037b  /* Huge pointer to 32-bit unicode char */
+#define T_PHCHAR8           0x037c  /* Huge pointer to 8-bit unicode char */
 
 /* 32-bit near pointers to basic types */
 #define T_32PVOID           0x0403  /* 32-bit near pointer to void */
@@ -1082,6 +1086,7 @@ union codeview_fieldtype
 #define T_32PUINT8          0x0477  /* 16:32 near pointer to 64-bit unsigned int */
 #define T_32PCHAR16         0x047a  /* 16:32 near pointer to 16-bit unicode char */
 #define T_32PCHAR32         0x047b  /* 16:32 near pointer to 32-bit unicode char */
+#define T_32PCHAR8          0x047c  /* 16:32 near pointer to 8-bit unicode char */
 
 /* 32-bit far pointers to basic types */
 #define T_32PFVOID          0x0503  /* 32-bit far pointer to void */
@@ -1117,6 +1122,7 @@ union codeview_fieldtype
 #define T_32PFUINT8         0x0577  /* 16:32 far pointer to 64-bit unsigned int */
 #define T_32PFCHAR16        0x057a  /* 16:32 far pointer to 16-bit unicode char */
 #define T_32PFCHAR32        0x057b  /* 16:32 far pointer to 32-bit unicode char */
+#define T_32PFCHAR8         0x057c  /* 16:32 far pointer to 8-bit unicode char */
 
 /* 64-bit near pointers to basic types */
 #define T_64PVOID           0x0603  /* 64-bit near pointer to void */
@@ -1152,6 +1158,7 @@ union codeview_fieldtype
 #define T_64PUINT8          0x0677  /* 64 near pointer to 64-bit unsigned int */
 #define T_64PCHAR16         0x067a  /* 64 near pointer to 16-bit unicode char */
 #define T_64PCHAR32         0x067b  /* 64 near pointer to 32-bit unicode char */
+#define T_64PCHAR8          0x067c  /* 64 near pointer to 8-bit unicode char */
 
 /* counts, bit masks, and shift values needed to access various parts of the built-in type numbers */
 #define T_MAXPREDEFINEDTYPE 0x0580  /* maximum type index for all built-in types */




More information about the wine-cvs mailing list