Author: labath Date: Fri Jun 14 07:12:25 2019 New Revision: 363400 URL: http://llvm.org/viewvc/llvm-project?rev=363400&view=rev Log: DWARF: port debug_ranges/rnglists over to DWARFContext
Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.h lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp?rev=363400&r1=363399&r2=363400&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp Fri Jun 14 07:12:25 2019 @@ -75,6 +75,16 @@ const DWARFDataExtractor &DWARFContext:: m_data_debug_macro); } +const DWARFDataExtractor &DWARFContext::getOrLoadRangesData() { + return LoadOrGetSection(eSectionTypeDWARFDebugRanges, llvm::None, + m_data_debug_ranges); +} + +const DWARFDataExtractor &DWARFContext::getOrLoadRngListsData() { + return LoadOrGetSection(eSectionTypeDWARFDebugRngLists, llvm::None, + m_data_debug_rnglists); +} + const DWARFDataExtractor &DWARFContext::getOrLoadStrData() { return LoadOrGetSection(eSectionTypeDWARFDebugStr, eSectionTypeDWARFDebugStrDwo, m_data_debug_str); Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.h?rev=363400&r1=363399&r2=363400&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.h (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFContext.h Fri Jun 14 07:12:25 2019 @@ -33,6 +33,8 @@ private: SectionData m_data_debug_line; SectionData m_data_debug_line_str; SectionData m_data_debug_macro; + SectionData m_data_debug_ranges; + SectionData m_data_debug_rnglists; SectionData m_data_debug_str; SectionData m_data_debug_str_offsets; SectionData m_data_debug_types; @@ -57,6 +59,8 @@ public: const DWARFDataExtractor &getOrLoadLineData(); const DWARFDataExtractor &getOrLoadLineStrData(); const DWARFDataExtractor &getOrLoadMacroData(); + const DWARFDataExtractor &getOrLoadRangesData(); + const DWARFDataExtractor &getOrLoadRngListsData(); const DWARFDataExtractor &getOrLoadStrData(); const DWARFDataExtractor &getOrLoadStrOffsetsData(); const DWARFDataExtractor &getOrLoadDebugTypesData(); Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp?rev=363400&r1=363399&r2=363400&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp Fri Jun 14 07:12:25 2019 @@ -8,12 +8,9 @@ #include "DWARFDebugRanges.h" #include "DWARFUnit.h" -#include "SymbolFileDWARF.h" #include "lldb/Utility/Stream.h" -#include <assert.h> using namespace lldb_private; -using namespace std; static dw_addr_t GetBaseAddressMarker(uint32_t addr_size) { switch(addr_size) { @@ -29,25 +26,24 @@ static dw_addr_t GetBaseAddressMarker(ui DWARFDebugRanges::DWARFDebugRanges() : m_range_map() {} -void DWARFDebugRanges::Extract(SymbolFileDWARF *dwarf2Data) { +void DWARFDebugRanges::Extract(DWARFContext &context) { DWARFRangeList range_list; lldb::offset_t offset = 0; dw_offset_t debug_ranges_offset = offset; - while (Extract(dwarf2Data, &offset, range_list)) { + while (Extract(context, &offset, range_list)) { range_list.Sort(); m_range_map[debug_ranges_offset] = range_list; debug_ranges_offset = offset; } } -bool DWARFDebugRanges::Extract(SymbolFileDWARF *dwarf2Data, +bool DWARFDebugRanges::Extract(DWARFContext &context, lldb::offset_t *offset_ptr, DWARFRangeList &range_list) { range_list.Clear(); lldb::offset_t range_offset = *offset_ptr; - const DWARFDataExtractor &debug_ranges_data = - dwarf2Data->get_debug_ranges_data(); + const DWARFDataExtractor &debug_ranges_data = context.getOrLoadRangesData(); uint32_t addr_size = debug_ranges_data.GetAddressByteSize(); dw_addr_t base_addr = 0; dw_addr_t base_addr_marker = GetBaseAddressMarker(addr_size); @@ -257,8 +253,8 @@ bool DWARFDebugRngLists::FindRanges(cons return false; } -void DWARFDebugRngLists::Extract(SymbolFileDWARF *dwarf2Data) { - const DWARFDataExtractor &data = dwarf2Data->get_debug_rnglists_data(); +void DWARFDebugRngLists::Extract(DWARFContext &context) { + const DWARFDataExtractor &data = context.getOrLoadRngListsData(); lldb::offset_t offset = 0; uint64_t length = data.GetU32(&offset); Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h?rev=363400&r1=363399&r2=363400&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h Fri Jun 14 07:12:25 2019 @@ -9,16 +9,19 @@ #ifndef SymbolFileDWARF_DWARFDebugRanges_h_ #define SymbolFileDWARF_DWARFDebugRanges_h_ -#include "DWARFDIE.h" -#include "SymbolFileDWARF.h" - +#include "lldb/Core/dwarf.h" #include <map> +class DWARFUnit; +namespace lldb_private { +class DWARFContext; +} + class DWARFDebugRangesBase { public: virtual ~DWARFDebugRangesBase(){}; - virtual void Extract(SymbolFileDWARF *dwarf2Data) = 0; + virtual void Extract(lldb_private::DWARFContext &context) = 0; virtual bool FindRanges(const DWARFUnit *cu, dw_offset_t debug_ranges_offset, DWARFRangeList &range_list) const = 0; virtual uint64_t GetOffset(size_t Index) const = 0; @@ -28,7 +31,7 @@ class DWARFDebugRanges final : public DW public: DWARFDebugRanges(); - void Extract(SymbolFileDWARF *dwarf2Data) override; + void Extract(lldb_private::DWARFContext &context) override; bool FindRanges(const DWARFUnit *cu, dw_offset_t debug_ranges_offset, DWARFRangeList &range_list) const override; uint64_t GetOffset(size_t Index) const override; @@ -38,7 +41,7 @@ public: lldb::offset_t *offset_ptr, dw_addr_t cu_base_addr); protected: - bool Extract(SymbolFileDWARF *dwarf2Data, lldb::offset_t *offset_ptr, + bool Extract(lldb_private::DWARFContext &context, lldb::offset_t *offset_ptr, DWARFRangeList &range_list); typedef std::map<dw_offset_t, DWARFRangeList> range_map; @@ -56,7 +59,7 @@ class DWARFDebugRngLists final : public }; public: - void Extract(SymbolFileDWARF *dwarf2Data) override; + void Extract(lldb_private::DWARFContext &context) override; bool FindRanges(const DWARFUnit *cu, dw_offset_t debug_ranges_offset, DWARFRangeList &range_list) const override; uint64_t GetOffset(size_t Index) const override; Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=363400&r1=363399&r2=363400&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Fri Jun 14 07:12:25 2019 @@ -355,8 +355,7 @@ SymbolFileDWARF::SymbolFileDWARF(ObjectF // contain the .o file index/ID m_debug_map_module_wp(), m_debug_map_symfile(nullptr), m_context(objfile->GetModule()->GetSectionList(), dwo_section_list), - m_data_debug_loc(), m_data_debug_ranges(), m_data_debug_rnglists(), - m_abbr(), m_info(), m_fetched_external_modules(false), + m_data_debug_loc(), m_abbr(), m_info(), m_fetched_external_modules(false), m_supports_DW_AT_APPLE_objc_complete_type(eLazyBoolCalculate), m_unique_ast_type_map() {} @@ -549,16 +548,6 @@ const DWARFDataExtractor &SymbolFileDWAR m_data_debug_loclists); } -const DWARFDataExtractor &SymbolFileDWARF::get_debug_ranges_data() { - return GetCachedSectionData(eSectionTypeDWARFDebugRanges, - m_data_debug_ranges); -} - -const DWARFDataExtractor &SymbolFileDWARF::get_debug_rnglists_data() { - return GetCachedSectionData(eSectionTypeDWARFDebugRngLists, - m_data_debug_rnglists); -} - DWARFDebugAbbrev *SymbolFileDWARF::DebugAbbrev() { if (m_abbr) return m_abbr.get(); @@ -621,11 +610,11 @@ DWARFDebugRangesBase *SymbolFileDWARF::G Timer scoped_timer(func_cat, "%s this = %p", LLVM_PRETTY_FUNCTION, static_cast<void *>(this)); - if (get_debug_ranges_data().GetByteSize() > 0) + if (m_context.getOrLoadRangesData().GetByteSize() > 0) m_ranges.reset(new DWARFDebugRanges()); if (m_ranges) - m_ranges->Extract(this); + m_ranges->Extract(m_context); } return m_ranges.get(); } @@ -636,11 +625,11 @@ DWARFDebugRangesBase *SymbolFileDWARF::G Timer scoped_timer(func_cat, "%s this = %p", LLVM_PRETTY_FUNCTION, static_cast<void *>(this)); - if (get_debug_rnglists_data().GetByteSize() > 0) + if (m_context.getOrLoadRngListsData().GetByteSize() > 0) m_rnglists.reset(new DWARFDebugRngLists()); if (m_rnglists) - m_rnglists->Extract(this); + m_rnglists->Extract(m_context); } return m_rnglists.get(); } Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h?rev=363400&r1=363399&r2=363400&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h Fri Jun 14 07:12:25 2019 @@ -215,8 +215,6 @@ public: const lldb_private::DWARFDataExtractor &get_debug_loc_data(); const lldb_private::DWARFDataExtractor &get_debug_loclists_data(); - const lldb_private::DWARFDataExtractor &get_debug_ranges_data(); - const lldb_private::DWARFDataExtractor &get_debug_rnglists_data(); DWARFDebugAbbrev *DebugAbbrev(); @@ -457,8 +455,6 @@ protected: DWARFDataSegment m_data_debug_loc; DWARFDataSegment m_data_debug_loclists; - DWARFDataSegment m_data_debug_ranges; - DWARFDataSegment m_data_debug_rnglists; // The unique pointer items below are generated on demand if and when someone // accesses them through a non const version of this class. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits