https://github.com/augusto2112 created https://github.com/llvm/llvm-project/pull/69762
None >From 2cc3dc43d5ef705a016b8b7b3c23d99d5f01a5d8 Mon Sep 17 00:00:00 2001 From: Augusto Noronha <augusto2...@me.com> Date: Fri, 20 Oct 2023 12:42:52 -0700 Subject: [PATCH] [lldb][NFC] Implement llvm-style RTTI for DWARFASTParser --- lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h | 8 ++++++++ .../Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp | 3 ++- .../source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h index eaafbe169cc8cfc..99527fb83f1fa0a 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h @@ -29,6 +29,9 @@ class SymbolFileDWARF; class DWARFASTParser { public: + enum class Kind { DWARFASTParserClang, DWARFASTParserSwift }; + DWARFASTParser(Kind kind) : m_kind(kind) {} + virtual ~DWARFASTParser() = default; virtual lldb::TypeSP ParseTypeFromDWARF(const SymbolContext &sc, @@ -62,6 +65,11 @@ class DWARFASTParser { const ExecutionContext *exe_ctx = nullptr); static lldb::AccessType GetAccessTypeFromDWARF(uint32_t dwarf_accessibility); + + Kind GetKind() const { return m_kind; } + +private: + const Kind m_kind; }; } // namespace dwarf } // namespace lldb_private::plugin diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 545a5dcc7d0fd09..5d107ce63b8bc25 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -63,7 +63,8 @@ using namespace lldb_private::dwarf; using namespace lldb_private::plugin::dwarf; DWARFASTParserClang::DWARFASTParserClang(TypeSystemClang &ast) - : m_ast(ast), m_die_to_decl_ctx(), m_decl_ctx_to_die() {} + : DWARFASTParser(Kind::DWARFASTParserClang), m_ast(ast), + m_die_to_decl_ctx(), m_decl_ctx_to_die() {} DWARFASTParserClang::~DWARFASTParserClang() = default; diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h index 3d6912cf56c1779..d58fcf4a64dab3b 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h @@ -248,6 +248,10 @@ class DWARFASTParserClang : public lldb_private::plugin::dwarf::DWARFASTParser { lldb::ModuleSP GetModuleForType(const lldb_private::plugin::dwarf::DWARFDIE &die); + static bool classof(const DWARFASTParser *Parser) { + return Parser->GetKind() == Kind::DWARFASTParserClang; + } + private: struct FieldInfo { uint64_t bit_size = 0; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits