bulbazord created this revision. bulbazord added reviewers: aprantl, jingham, clayborg, rastogishubham, fdeazeve. Herald added a subscriber: arphaman. Herald added a reviewer: shafik. Herald added a project: All. bulbazord requested review of this revision. Herald added a project: LLDB. Herald added a subscriber: lldb-commits.
Similar to dw_form_t, dw_attr_t is typedef'd to be a uint16_t. LLVM defines their type `llvm::dwarf::Attribute` as an enum backed by a uint16_t. Switching to the LLVM type buys us type checking and the requirement of explicit casts. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D150299 Files: lldb/include/lldb/Core/dwarf.h lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp Index: lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp @@ -239,6 +239,8 @@ dw_attr_t attr = attributes.AttributeAtIndex(i); DWARFFormValue form_value; switch (attr) { + default: + break; case DW_AT_name: if (attributes.ExtractFormValueAtIndex(i, form_value)) name = form_value.AsCString(); Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -391,6 +391,8 @@ if (!attributes.ExtractFormValueAtIndex(i, form_value)) continue; switch (attr) { + default: + break; case DW_AT_loclists_base: SetLoclistsBase(form_value.Unsigned()); break; Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp @@ -40,7 +40,7 @@ m_has_children = data.GetU8(offset_ptr); while (data.ValidOffset(*offset_ptr)) { - dw_attr_t attr = data.GetULEB128(offset_ptr); + auto attr = static_cast<dw_attr_t>(data.GetULEB128(offset_ptr)); auto form = static_cast<dw_form_t>(data.GetULEB128(offset_ptr)); // This is the last attribute for this abbrev decl, but there may still be Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -274,6 +274,8 @@ if (!attributes.ExtractFormValueAtIndex(i, form_value)) continue; switch (attr) { + default: + break; case DW_AT_abstract_origin: abstract_origin = form_value; break; Index: lldb/include/lldb/Core/dwarf.h =================================================================== --- lldb/include/lldb/Core/dwarf.h +++ lldb/include/lldb/Core/dwarf.h @@ -21,7 +21,7 @@ } } -typedef uint16_t dw_attr_t; +typedef llvm::dwarf::Attribute dw_attr_t; typedef llvm::dwarf::Form dw_form_t; typedef llvm::dwarf::Tag dw_tag_t; typedef uint64_t dw_addr_t; // Dwarf address define that must be big enough for
Index: lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp @@ -239,6 +239,8 @@ dw_attr_t attr = attributes.AttributeAtIndex(i); DWARFFormValue form_value; switch (attr) { + default: + break; case DW_AT_name: if (attributes.ExtractFormValueAtIndex(i, form_value)) name = form_value.AsCString(); Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -391,6 +391,8 @@ if (!attributes.ExtractFormValueAtIndex(i, form_value)) continue; switch (attr) { + default: + break; case DW_AT_loclists_base: SetLoclistsBase(form_value.Unsigned()); break; Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp @@ -40,7 +40,7 @@ m_has_children = data.GetU8(offset_ptr); while (data.ValidOffset(*offset_ptr)) { - dw_attr_t attr = data.GetULEB128(offset_ptr); + auto attr = static_cast<dw_attr_t>(data.GetULEB128(offset_ptr)); auto form = static_cast<dw_form_t>(data.GetULEB128(offset_ptr)); // This is the last attribute for this abbrev decl, but there may still be Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -274,6 +274,8 @@ if (!attributes.ExtractFormValueAtIndex(i, form_value)) continue; switch (attr) { + default: + break; case DW_AT_abstract_origin: abstract_origin = form_value; break; Index: lldb/include/lldb/Core/dwarf.h =================================================================== --- lldb/include/lldb/Core/dwarf.h +++ lldb/include/lldb/Core/dwarf.h @@ -21,7 +21,7 @@ } } -typedef uint16_t dw_attr_t; +typedef llvm::dwarf::Attribute dw_attr_t; typedef llvm::dwarf::Form dw_form_t; typedef llvm::dwarf::Tag dw_tag_t; typedef uint64_t dw_addr_t; // Dwarf address define that must be big enough for
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits