From 0301a492f43efc3a2c1fa1bddd16e46aac8ab77e Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Wed, 1 Feb 2023 03:58:05 +0000 Subject: [PATCH] [lldb][Language] Add more language types Adds more languages to the `language_names` list in preparation for adding support for C++20 expression evaluation. The language constants were taken from the DWARFv5 constants defined in LLVM's `Dwarf.def`. Two vendor constants overlap with the DWARFv5 constants so bump their values. Their actual value is not important, whereas keeping the enum values consecutive is (since they are used for array lookups). Differential Revision: https://reviews.llvm.org/D143061 --- lldb/include/lldb/lldb-enumerations.h | 14 +++++++++++++- lldb/source/Target/Language.cpp | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h index 0781c62..af65684 100644 --- a/lldb/include/lldb/lldb-enumerations.h +++ b/lldb/include/lldb/lldb-enumerations.h @@ -479,12 +479,24 @@ enum LanguageType { eLanguageTypeC_plus_plus_14 = 0x0021, ///< ISO C++:2014. eLanguageTypeFortran03 = 0x0022, ///< ISO Fortran 2003. eLanguageTypeFortran08 = 0x0023, ///< ISO Fortran 2008. + eLanguageTypeRenderScript = 0x0024, + eLanguageTypeBLISS = 0x0025, + eLanguageTypeKotlin = 0x0026, + eLanguageTypeZig = 0x0027, + eLanguageTypeCrystal = 0x0028, + eLanguageTypeC_plus_plus_17 = 0x002a, ///< ISO C++:2017. + eLanguageTypeC_plus_plus_20 = 0x002b, ///< ISO C++:2020. + eLanguageTypeC17 = 0x002c, + eLanguageTypeFortran18 = 0x002d, + eLanguageTypeAda2005 = 0x002e, + eLanguageTypeAda2012 = 0x002f, + // Vendor Extensions // Note: Language::GetNameForLanguageType // assumes these can be used as indexes into array language_names, and // Language::SetLanguageFromCString and Language::AsCString assume these can // be used as indexes into array g_languages. - eLanguageTypeMipsAssembler = 0x0024, ///< Mips_Assembler. + eLanguageTypeMipsAssembler, ///< Mips_Assembler. eNumLanguageTypes }; diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp index 61fcbb7..9f38990 100644 --- a/lldb/source/Target/Language.cpp +++ b/lldb/source/Target/Language.cpp @@ -194,6 +194,21 @@ struct language_name_pair language_names[] = { {"c++14", eLanguageTypeC_plus_plus_14}, {"fortran03", eLanguageTypeFortran03}, {"fortran08", eLanguageTypeFortran08}, + {"renderscript", eLanguageTypeRenderScript}, + {"bliss", eLanguageTypeBLISS}, + {"kotlin", eLanguageTypeKotlin}, + {"zig", eLanguageTypeZig}, + {"crystal", eLanguageTypeCrystal}, + {"", + static_cast( + 0x0029)}, // Not yet taken by any language in the DWARF spec + // and thus has no entry in LanguageType + {"c++17", eLanguageTypeC_plus_plus_17}, + {"c++20", eLanguageTypeC_plus_plus_20}, + {"c17", eLanguageTypeC17}, + {"fortran18", eLanguageTypeFortran18}, + {"ada2005", eLanguageTypeAda2005}, + {"ada2012", eLanguageTypeAda2012}, // Vendor Extensions {"assembler", eLanguageTypeMipsAssembler}, // Now synonyms, in arbitrary order -- 2.7.4