[Lldb-commits] [lldb] r372891 - [Dwarf] Make dw_tag_t a typedef for llvm::dwarf::Tag instead of uint16_t.
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Wed Sep 25 14:02:11 PDT 2019
Thanks, fixed in r372920.
On Wed, Sep 25, 2019 at 11:51 AM Rumeet Dhindsa <rdhindsa at google.com> wrote:
>
> Hi Jonas,
>
> Since dw_tag_t is an enum now, in the switch statement at following mentioned location, default case needs to be added as well. It generates a warning that some enumeration values are not handled in switch. https://github.com/llvm-mirror/lldb/blob/master/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp#L35
>
> On Wed, Sep 25, 2019 at 9:02 AM Jonas Devlieghere via lldb-commits <lldb-commits at lists.llvm.org> wrote:
>>
>> Author: jdevlieghere
>> Date: Wed Sep 25 09:04:38 2019
>> New Revision: 372891
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=372891&view=rev
>> Log:
>> [Dwarf] Make dw_tag_t a typedef for llvm::dwarf::Tag instead of uint16_t.
>>
>> Currently dw_tag_t is a typedef for uint16_t. This patch changes makes
>> dw_tag_t a typedef for llvm::dwarf::Tag. This enables us to use the full
>> power of the DWARF utilities in LLVM without having to do the cast every
>> time. With this approach, we only have to do the cast when reading the
>> ULEB value.
>>
>> Differential revision: https://reviews.llvm.org/D68005
>>
>> Modified:
>> lldb/trunk/include/lldb/Core/dwarf.h
>> lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp
>> lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp
>> lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
>> lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
>> lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.h
>> lldb/trunk/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.h
>>
>> Modified: lldb/trunk/include/lldb/Core/dwarf.h
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/dwarf.h?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/include/lldb/Core/dwarf.h (original)
>> +++ lldb/trunk/include/lldb/Core/dwarf.h Wed Sep 25 09:04:38 2019
>> @@ -22,7 +22,7 @@ typedef uint32_t dw_uleb128_t;
>> typedef int32_t dw_sleb128_t;
>> typedef uint16_t dw_attr_t;
>> typedef uint16_t dw_form_t;
>> -typedef uint16_t dw_tag_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
>> // parsed
>>
>> Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp (original)
>> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp Wed Sep 25 09:04:38 2019
>> @@ -18,7 +18,8 @@
>> using namespace lldb_private;
>>
>> DWARFAbbreviationDeclaration::DWARFAbbreviationDeclaration()
>> - : m_code(InvalidCode), m_tag(0), m_has_children(0), m_attributes() {}
>> + : m_code(InvalidCode), m_tag(llvm::dwarf::DW_TAG_null), m_has_children(0),
>> + m_attributes() {}
>>
>> DWARFAbbreviationDeclaration::DWARFAbbreviationDeclaration(dw_tag_t tag,
>> uint8_t has_children)
>> @@ -33,7 +34,7 @@ DWARFAbbreviationDeclaration::extract(co
>> return DWARFEnumState::Complete;
>>
>> m_attributes.clear();
>> - m_tag = data.GetULEB128(offset_ptr);
>> + m_tag = static_cast<dw_tag_t>(data.GetULEB128(offset_ptr));
>> if (m_tag == DW_TAG_null)
>> return llvm::make_error<llvm::object::GenericBinaryError>(
>> "abbrev decl requires non-null tag.");
>> @@ -68,7 +69,7 @@ DWARFAbbreviationDeclaration::extract(co
>> }
>>
>> bool DWARFAbbreviationDeclaration::IsValid() {
>> - return m_code != 0 && m_tag != 0;
>> + return m_code != 0 && m_tag != llvm::dwarf::DW_TAG_null;
>> }
>>
>> uint32_t
>>
>> Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp (original)
>> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp Wed Sep 25 09:04:38 2019
>> @@ -30,7 +30,7 @@ dw_tag_t DWARFBaseDIE::Tag() const {
>> if (m_die)
>> return m_die->Tag();
>> else
>> - return 0;
>> + return llvm::dwarf::DW_TAG_null;
>> }
>>
>> const char *DWARFBaseDIE::GetTagAsCString() const {
>>
>> Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp (original)
>> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp Wed Sep 25 09:04:38 2019
>> @@ -192,7 +192,7 @@ bool DWARFDebugInfoEntry::Extract(const
>> *offset_ptr = offset;
>> return true;
>> } else {
>> - m_tag = 0;
>> + m_tag = llvm::dwarf::DW_TAG_null;
>> m_has_children = false;
>> return true; // NULL debug tag entry
>> }
>>
>> Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h (original)
>> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h Wed Sep 25 09:04:38 2019
>> @@ -31,7 +31,7 @@ public:
>>
>> DWARFDebugInfoEntry()
>> : m_offset(DW_INVALID_OFFSET), m_parent_idx(0), m_sibling_idx(0),
>> - m_has_children(false), m_abbr_idx(0), m_tag(0) {}
>> + m_has_children(false), m_abbr_idx(0), m_tag(llvm::dwarf::DW_TAG_null) {}
>>
>> explicit operator bool() const { return m_offset != DW_INVALID_OFFSET; }
>> bool operator==(const DWARFDebugInfoEntry &rhs) const;
>> @@ -178,8 +178,9 @@ protected:
>> // a single NULL terminating child.
>> m_has_children : 1;
>> uint16_t m_abbr_idx;
>> - uint16_t m_tag; // A copy of the DW_TAG value so we don't have to go through
>> - // the compile unit abbrev table
>> + /// A copy of the DW_TAG value so we don't have to go through the compile
>> + /// unit abbrev table
>> + dw_tag_t m_tag = llvm::dwarf::DW_TAG_null;
>> };
>>
>> #endif // SymbolFileDWARF_DWARFDebugInfoEntry_h_
>>
>> Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.h
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.h?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.h (original)
>> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.h Wed Sep 25 09:04:38 2019
>> @@ -23,7 +23,7 @@
>> class DWARFDeclContext {
>> public:
>> struct Entry {
>> - Entry() : tag(0), name(nullptr) {}
>> + Entry() : tag(llvm::dwarf::DW_TAG_null), name(nullptr) {}
>> Entry(dw_tag_t t, const char *n) : tag(t), name(n) {}
>>
>> bool NameMatches(const Entry &rhs) const {
>>
>> Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.h
>> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.h?rev=372891&r1=372890&r2=372891&view=diff
>> ==============================================================================
>> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.h (original)
>> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.h Wed Sep 25 09:04:38 2019
>> @@ -53,7 +53,7 @@ public:
>>
>> struct DIEInfo {
>> dw_offset_t die_offset = DW_INVALID_OFFSET;
>> - dw_tag_t tag = 0;
>> + dw_tag_t tag = llvm::dwarf::DW_TAG_null;
>>
>> /// Any flags for this DIEInfo.
>> uint32_t type_flags = 0;
>>
>>
>> _______________________________________________
>> lldb-commits mailing list
>> lldb-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list