Skip to content

Commit

Permalink
[SymbolFilePDB] Add missing Char16 and Char32 types in a few places
Browse files Browse the repository at this point in the history
Reviewers: zturner, rnk, lldb-commits

Subscribers: clayborg, llvm-commits

Differential Revision: https://reviews.llvm.org/D44166

llvm-svn: 326875
  • Loading branch information
aaronsm committed Mar 7, 2018
1 parent 8e0bc89 commit 2a989f3
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lldb/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp
Expand Up @@ -35,6 +35,12 @@ EnumClass EnumClassVar;
enum struct EnumStruct { red, blue, black };
EnumStruct EnumStructVar;

typedef char16_t WChar16Typedef;
WChar16Typedef WC16Var;

typedef char32_t WChar32Typedef;
WChar32Typedef WC32Var;

int main() {
return 0;
}
2 changes: 2 additions & 0 deletions lldb/lit/SymbolFile/PDB/typedefs.test
Expand Up @@ -14,6 +14,8 @@ RUN: lldb-test symbols %T/SimpleTypesTest.cpp.typedefs.exe | FileCheck %s

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
Expand Down
10 changes: 10 additions & 0 deletions lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp
Expand Up @@ -59,6 +59,8 @@ lldb::Encoding TranslateBuiltinEncoding(PDB_BuiltinType type) {
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:
Expand Down Expand Up @@ -126,6 +128,10 @@ CompilerType GetBuiltinTypeForPDBEncodingAndBitSize(
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
Expand Down Expand Up @@ -162,6 +168,10 @@ ConstString GetPDBBuiltinTypeName(const PDBSymbolTypeBuiltin *pdb_type,
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("...");
}
Expand Down

0 comments on commit 2a989f3

Please sign in to comment.