diff --git a/lldb/include/lldb/Core/dwarf.h b/lldb/include/lldb/Core/dwarf.h --- a/lldb/include/lldb/Core/dwarf.h +++ b/lldb/include/lldb/Core/dwarf.h @@ -22,7 +22,7 @@ } typedef uint16_t dw_attr_t; -typedef uint16_t dw_form_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 // any addresses in the compile units that get diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h @@ -28,7 +28,8 @@ bool HasChildren() const { return m_has_children; } size_t NumAttributes() const { return m_attributes.size(); } dw_form_t GetFormByIndex(uint32_t idx) const { - return m_attributes.size() > idx ? m_attributes[idx].get_form() : 0; + return m_attributes.size() > idx ? m_attributes[idx].get_form() + : dw_form_t(0); } // idx is assumed to be valid when calling GetAttrAndFormByIndex() diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp @@ -41,7 +41,7 @@ while (data.ValidOffset(*offset_ptr)) { dw_attr_t attr = data.GetULEB128(offset_ptr); - dw_form_t form = data.GetULEB128(offset_ptr); + auto form = static_cast(data.GetULEB128(offset_ptr)); // This is the last attribute for this abbrev decl, but there may still be // more abbrev decls, so return MoreItems to indicate to the caller that diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFAttribute.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFAttribute.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFAttribute.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFAttribute.h @@ -55,7 +55,7 @@ dw_attr_t AttributeAtIndex(uint32_t i) const { return m_infos[i].attr.get_attr(); } - dw_attr_t FormAtIndex(uint32_t i) const { return m_infos[i].attr.get_form(); } + dw_form_t FormAtIndex(uint32_t i) const { return m_infos[i].attr.get_form(); } DWARFFormValue::ValueType ValueAtIndex(uint32_t i) const { return m_infos[i].attr.get_value(); } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp @@ -177,7 +177,7 @@ case DW_FORM_indirect: form_is_indirect = true; - form = data.GetULEB128(&offset); + form = static_cast(data.GetULEB128(&offset)); break; case DW_FORM_strp: diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h @@ -45,7 +45,7 @@ const DWARFUnit *GetUnit() const { return m_unit; } void SetUnit(const DWARFUnit *unit) { m_unit = unit; } dw_form_t Form() const { return m_form; } - dw_form_t& FormRef() { return m_form; } + dw_form_t &FormRef() { return m_form; } void SetForm(dw_form_t form) { m_form = form; } const ValueType &Value() const { return m_value; } ValueType &ValueRef() { return m_value; } @@ -83,7 +83,7 @@ // Compile unit where m_value was located. // It may be different from compile unit where m_value refers to. const DWARFUnit *m_unit = nullptr; // Unit for this form - dw_form_t m_form = 0; // Form for this value + dw_form_t m_form = dw_form_t(0); // Form for this value ValueType m_value; // Contains all data for the form }; diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp @@ -25,7 +25,7 @@ void DWARFFormValue::Clear() { m_unit = nullptr; - m_form = 0; + m_form = dw_form_t(0); m_value = ValueTypeTag(); } @@ -127,7 +127,7 @@ m_value.value.uval = data.GetMaxU64(offset_ptr, ref_addr_size); break; case DW_FORM_indirect: - m_form = data.GetULEB128(offset_ptr); + m_form = static_cast(data.GetULEB128(offset_ptr)); indirect = true; break; case DW_FORM_flag_present: @@ -321,9 +321,10 @@ return true; case DW_FORM_indirect: { - dw_form_t indirect_form = debug_info_data.GetULEB128(offset_ptr); - return DWARFFormValue::SkipValue(indirect_form, debug_info_data, offset_ptr, - unit); + auto indirect_form = + static_cast(debug_info_data.GetULEB128(offset_ptr)); + return DWARFFormValue::SkipValue(indirect_form, debug_info_data, + offset_ptr, unit); } default: @@ -573,8 +574,10 @@ case DW_FORM_block2: case DW_FORM_block4: return true; + default: + return false; } - return false; + llvm_unreachable("All cases handled above!"); } bool DWARFFormValue::IsDataForm(const dw_form_t form) { @@ -586,8 +589,10 @@ case DW_FORM_data4: case DW_FORM_data8: return true; + default: + return false; } - return false; + llvm_unreachable("All cases handled above!"); } bool DWARFFormValue::FormIsSupported(dw_form_t form) { diff --git a/lldb/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.cpp b/lldb/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.cpp @@ -227,7 +227,7 @@ } else { for (uint32_t i = 0; i < atom_count; ++i) { AtomType type = (AtomType)data.GetU16(&offset); - dw_form_t form = (dw_form_t)data.GetU16(&offset); + auto form = static_cast(data.GetU16(&offset)); AppendAtom(type, form); } }