From b316ac1897f427b16338af157c8d787fbb950137 Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Wed, 3 May 2017 23:16:40 -0700 Subject: [PATCH] dbghelp: Add support for char16_t type. Signed-off-by: Daniel Lehman Signed-off-by: Alexandre Julliard --- 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 f17d91eac52..5c474d86f16 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 83b529d7f82..5580258eb71 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 7e06a49f23d..d053b69f0a0 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 */