summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
diff options
context:
space:
mode:
authorDawn Perchik <dawn@burble.org>2015-06-17 22:30:24 +0000
committerDawn Perchik <dawn@burble.org>2015-06-17 22:30:24 +0000
commitd0e87eb07e07cf862e3ccb53a46eaab09a1e8ae9 (patch)
treed7986e738fc68199ee8fd06b848a4622401375ef /lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
parentfaf558224da50d43421c397235906f0985036138 (diff)
downloadbcm5719-llvm-d0e87eb07e07cf862e3ccb53a46eaab09a1e8ae9.tar.gz
bcm5719-llvm-d0e87eb07e07cf862e3ccb53a46eaab09a1e8ae9.zip
Fix enum LanguageType values and language string table lookups.
Summary: * Fix enum LanguageType values so that they can be used as indexes into array language_names and g_languages as assumed by LanguageRuntime::GetNameForLanguageType, Language::SetLanguageFromCString and Language::AsCString. * Add DWARFCompileUnit::LanguageTypeFromDWARF to convert from DWARF DW_LANG_* values to enum LanguageType values. Reviewed By: clayborg, abidh Differential Revision: http://reviews.llvm.org/D10484 llvm-svn: 239963
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
index 9264411c1dd..75934f966bc 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
@@ -1070,6 +1070,22 @@ DWARFCompileUnit::GetProducerVersionUpdate()
}
LanguageType
+DWARFCompileUnit::LanguageTypeFromDWARF(uint64_t val)
+{
+ // Note: user languages between lo_user and hi_user
+ // must be handled explicitly here.
+ switch (val)
+ {
+ case DW_LANG_Mips_Assembler:
+ return eLanguageTypeMipsAssembler;
+ case 0x8e57: // FIXME: needs to be added to llvm
+ return eLanguageTypeExtRenderScript;
+ default:
+ return static_cast<LanguageType>(val);
+ }
+}
+
+LanguageType
DWARFCompileUnit::GetLanguageType()
{
if (m_language_type != eLanguageTypeUnknown)
@@ -1077,8 +1093,8 @@ DWARFCompileUnit::GetLanguageType()
const DWARFDebugInfoEntry *die = GetCompileUnitDIEOnly();
if (die)
- m_language_type = static_cast<LanguageType>(
- die->GetAttributeValueAsUnsigned(m_dwarf2Data, this, DW_AT_language, eLanguageTypeUnknown));
+ m_language_type = LanguageTypeFromDWARF(
+ die->GetAttributeValueAsUnsigned(m_dwarf2Data, this, DW_AT_language, 0));
return m_language_type;
}
OpenPOWER on IntegriCloud