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