Index: lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp =================================================================== --- lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp +++ lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp @@ -35,6 +35,12 @@ enum struct EnumStruct { red, blue, black }; EnumStruct EnumStructVar; +typedef char16_t WChar16Typedef; +WChar16Typedef WC16Var; + +typedef char32_t WChar32Typedef; +WChar32Typedef WC32Var; + int main() { return 0; } Index: lldb/trunk/lit/SymbolFile/PDB/typedefs.test =================================================================== --- lldb/trunk/lit/SymbolFile/PDB/typedefs.test +++ lldb/trunk/lit/SymbolFile/PDB/typedefs.test @@ -14,6 +14,8 @@ CHECK: Module [[MOD:.*]] CHECK: {{^[0-9A-F]+}}: SymbolVendor ([[MOD]]) +CHECK-DAG: name = "char32_t", size = 4, compiler_type = {{.*}} char32_t +CHECK-DAG: name = "char16_t", size = 2, compiler_type = {{.*}} char16_t CHECK-DAG: Type{{.*}} , name = "unsigned long", size = 4, compiler_type = {{.*}} unsigned long CHECK-DAG: Type{{.*}} , size = 40, compiler_type = {{.*}} unsigned long [10] CHECK-DAG: Type{{.*}} , name = "ULongArrayTypedef", compiler_type = {{.*}} typedef ULongArrayTypedef Index: lldb/trunk/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp =================================================================== --- lldb/trunk/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp +++ lldb/trunk/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp @@ -59,6 +59,8 @@ case PDB_BuiltinType::Int: case PDB_BuiltinType::Long: case PDB_BuiltinType::Char: + case PDB_BuiltinType::Char16: + case PDB_BuiltinType::Char32: return lldb::eEncodingSint; case PDB_BuiltinType::Bool: case PDB_BuiltinType::UInt: @@ -126,6 +128,10 @@ if (width == ast->getTypeSize(ast->WCharTy)) return CompilerType(ast, ast->WCharTy); break; + case PDB_BuiltinType::Char16: + return CompilerType(ast, ast->Char16Ty); + case PDB_BuiltinType::Char32: + return CompilerType(ast, ast->Char32Ty); case PDB_BuiltinType::Float: // Note: types `long double` and `double` have same bit size in MSVC and there // is no information in the PDB to distinguish them. So when falling back @@ -162,6 +168,10 @@ return ConstString("HRESULT"); case PDB_BuiltinType::BCD: return ConstString("BCD"); + case PDB_BuiltinType::Char16: + return ConstString("char16_t"); + case PDB_BuiltinType::Char32: + return ConstString("char32_t"); case PDB_BuiltinType::None: return ConstString("..."); }