124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- DWARFDebugRanges.h --------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10d996d0c32b483c2190e1eb288cd3bbbd259c2960Greg Clayton#ifndef SymbolFileDWARF_DWARFDebugRanges_h_ 11d996d0c32b483c2190e1eb288cd3bbbd259c2960Greg Clayton#define SymbolFileDWARF_DWARFDebugRanges_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "SymbolFileDWARF.h" 14bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <map> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <vector> 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton#include "lldb/Core/RangeMap.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DWARFDebugRanges 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 23be42123fa214b039b86ad152bd21d910db7a7af2Greg Clayton typedef lldb_private::RangeArray<dw_addr_t, dw_addr_t, 2> RangeList; 24bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton typedef RangeList::Entry Range; 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DWARFDebugRanges(); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~DWARFDebugRanges(); 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void Extract(SymbolFileDWARF* dwarf2Data); 2936da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton static void Dump(lldb_private::Stream &s, const lldb_private::DataExtractor& debug_ranges_data, lldb::offset_t *offset_ptr, dw_addr_t cu_base_addr); 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool FindRanges(dw_offset_t debug_ranges_offset, DWARFDebugRanges::RangeList& range_list) const; 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 33bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton 34bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton bool 35bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton Extract (SymbolFileDWARF* dwarf2Data, 3636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton lldb::offset_t *offset_ptr, 37bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton RangeList &range_list); 38bc36a861b8e0b2f2dde34f27c9fa9629a357d598Greg Clayton 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::map<dw_offset_t, RangeList> range_map; 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef range_map::iterator range_map_iterator; 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef range_map::const_iterator range_map_const_iterator; 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner range_map m_range_map; 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 46d996d0c32b483c2190e1eb288cd3bbbd259c2960Greg Clayton#endif // SymbolFileDWARF_DWARFDebugRanges_h_ 47