Daniel Lehman : dbghelp: Add support for char16_t type.

Alexandre Julliard julliard at winehq.org
Thu May 4 18:06:27 CDT 2017


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

Author: Daniel Lehman <dlehman25 at gmail.com>
Date:   Wed May  3 23:16:40 2017 -0700

dbghelp: Add support for char16_t type.

Signed-off-by: Daniel Lehman <dlehman25 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dbghelp/msc.c     |  4 ++++
 include/cvconst.h      |  1 +
 include/wine/mscvpdb.h | 12 +++++++-----
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index f17d91e..5c474d8 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -169,6 +169,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_REAL80] = &symt_new_basic(module, btFloat, "long double", 10)->symt;
     cv_basic_types[T_RCHAR]  = &symt_new_basic(module, btInt,   "signed char", 1)->symt;
     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_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;
@@ -195,6 +196,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_32PREAL80] = &symt_new_pointer(module, cv_basic_types[T_REAL80], 4)->symt;
     cv_basic_types[T_32PRCHAR]  = &symt_new_pointer(module, cv_basic_types[T_RCHAR], 4)->symt;
     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_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;
@@ -221,6 +223,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_64PREAL80] = &symt_new_pointer(module, cv_basic_types[T_REAL80], 8)->symt;
     cv_basic_types[T_64PRCHAR]  = &symt_new_pointer(module, cv_basic_types[T_RCHAR], 8)->symt;
     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_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;
@@ -247,6 +250,7 @@ static void codeview_init_basic_types(struct module* module)
     cv_basic_types[T_PREAL80] = &symt_new_pointer(module, cv_basic_types[T_REAL80], sizeof(void*))->symt;
     cv_basic_types[T_PRCHAR]  = &symt_new_pointer(module, cv_basic_types[T_RCHAR],  sizeof(void*))->symt;
     cv_basic_types[T_PWCHAR]  = &symt_new_pointer(module, cv_basic_types[T_WCHAR],  sizeof(void*))->symt;
+    cv_basic_types[T_PCHAR16] = &symt_new_pointer(module, cv_basic_types[T_CHAR16], sizeof(void*))->symt;
     cv_basic_types[T_PINT2]   = &symt_new_pointer(module, cv_basic_types[T_INT2],   sizeof(void*))->symt;
     cv_basic_types[T_PUINT2]  = &symt_new_pointer(module, cv_basic_types[T_UINT2],  sizeof(void*))->symt;
     cv_basic_types[T_PINT4]   = &symt_new_pointer(module, cv_basic_types[T_INT4],   sizeof(void*))->symt;
diff --git a/include/cvconst.h b/include/cvconst.h
index 83b529d..5580258 100644
--- a/include/cvconst.h
+++ b/include/cvconst.h
@@ -78,6 +78,7 @@ enum BasicType
     btBit = 29,
     btBSTR = 30,
     btHresult = 31,
+    btChar16 = 32
 };
 
 /* kind of UDT */
diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index 7e06a49..d053b69 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -871,7 +871,7 @@ union codeview_fieldtype
 #define T_UINT4             0x0075  /* unsigned int */
 #define T_INT8              0x0076  /* 64-bit signed int */
 #define T_UINT8             0x0077  /* 64-bit unsigned int */
-
+#define T_CHAR16            0x007a  /* 16-bit unicode char */
 
 /* near pointers to basic types */
 #define T_PVOID             0x0103  /* near pointer to void */
@@ -904,7 +904,7 @@ union codeview_fieldtype
 #define T_PUINT4            0x0175  /* Near pointer to 32-bit unsigned int */
 #define T_PINT8             0x0176  /* Near pointer to 64-bit signed int */
 #define T_PUINT8            0x0177  /* Near pointer to 64-bit unsigned int */
-
+#define T_PCHAR16           0x017a  /* Near pointer to 16-bit unicode char */
 
 /* far pointers to basic types */
 #define T_PFVOID            0x0203  /* Far pointer to void */
@@ -937,7 +937,7 @@ union codeview_fieldtype
 #define T_PFUINT4           0x0275  /* Far pointer to 32-bit unsigned int */
 #define T_PFINT8            0x0276  /* Far pointer to 64-bit signed int */
 #define T_PFUINT8           0x0277  /* Far pointer to 64-bit unsigned int */
-
+#define T_PFCHAR16          0x027a  /* Far pointer to 16-bit unicode char */
 
 /* huge pointers to basic types */
 #define T_PHVOID            0x0303  /* Huge pointer to void */
@@ -970,7 +970,7 @@ union codeview_fieldtype
 #define T_PHUINT4           0x0375  /* Huge pointer to 32-bit unsigned int */
 #define T_PHINT8            0x0376  /* Huge pointer to 64-bit signed int */
 #define T_PHUINT8           0x0377  /* Huge pointer to 64-bit unsigned int */
-
+#define T_PHCHAR16          0x037a  /* Huge pointer to 16-bit unicode char */
 
 /* 32-bit near pointers to basic types */
 #define T_32PVOID           0x0403  /* 32-bit near pointer to void */
@@ -1004,7 +1004,7 @@ union codeview_fieldtype
 #define T_32PUINT4          0x0475  /* 16:32 near pointer to 32-bit unsigned int */
 #define T_32PINT8           0x0476  /* 16:32 near pointer to 64-bit signed int */
 #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 */
 
 /* 32-bit far pointers to basic types */
 #define T_32PFVOID          0x0503  /* 32-bit far pointer to void */
@@ -1038,6 +1038,7 @@ union codeview_fieldtype
 #define T_32PFUINT4         0x0575  /* 16:32 far pointer to 32-bit unsigned int */
 #define T_32PFINT8          0x0576  /* 16:32 far pointer to 64-bit signed int */
 #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 */
 
 /* 64-bit near pointers to basic types */
 #define T_64PVOID           0x0603  /* 64-bit near pointer to void */
@@ -1071,6 +1072,7 @@ union codeview_fieldtype
 #define T_64PUINT4          0x0675  /* 64 near pointer to 32-bit unsigned int */
 #define T_64PINT8           0x0676  /* 64 near pointer to 64-bit signed int */
 #define T_64PUINT8          0x0677  /* 64 near pointer to 64-bit unsigned int */
+#define T_64PCHAR16         0x067a  /* 64 near pointer to 16-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