diff options
author | Dawn Perchik <dawn@burble.org> | 2015-06-17 22:30:24 +0000 |
---|---|---|
committer | Dawn Perchik <dawn@burble.org> | 2015-06-17 22:30:24 +0000 |
commit | d0e87eb07e07cf862e3ccb53a46eaab09a1e8ae9 (patch) | |
tree | d7986e738fc68199ee8fd06b848a4622401375ef /lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp | |
parent | faf558224da50d43421c397235906f0985036138 (diff) | |
download | bcm5719-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.cpp | 20 |
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; } |