LLVM  3.7.0
DWARFDebugArangeSet.h
Go to the documentation of this file.
1 //===-- DWARFDebugArangeSet.h -----------------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_LIB_DEBUGINFO_DWARFDEBUGARANGESET_H
11 #define LLVM_LIB_DEBUGINFO_DWARFDEBUGARANGESET_H
12 
15 #include <vector>
16 
17 namespace llvm {
18 
19 class raw_ostream;
20 
22 public:
23  struct Header {
24  // The total length of the entries for that set, not including the length
25  // field itself.
26  uint32_t Length;
27  // The offset from the beginning of the .debug_info section of the
28  // compilation unit entry referenced by the table.
29  uint32_t CuOffset;
30  // The DWARF version number.
31  uint16_t Version;
32  // The size in bytes of an address on the target architecture. For segmented
33  // addressing, this is the size of the offset portion of the address.
34  uint8_t AddrSize;
35  // The size in bytes of a segment descriptor on the target architecture.
36  // If the target system uses a flat address space, this value is 0.
37  uint8_t SegSize;
38  };
39 
40  struct Descriptor {
41  uint64_t Address;
42  uint64_t Length;
43  uint64_t getEndAddress() const { return Address + Length; }
44  };
45 
46 private:
47  typedef std::vector<Descriptor> DescriptorColl;
48  typedef iterator_range<DescriptorColl::const_iterator> desc_iterator_range;
49 
50  uint32_t Offset;
51  Header HeaderData;
52  DescriptorColl ArangeDescriptors;
53 
54 public:
56  void clear();
57  bool extract(DataExtractor data, uint32_t *offset_ptr);
58  void dump(raw_ostream &OS) const;
59 
60  uint32_t getCompileUnitDIEOffset() const { return HeaderData.CuOffset; }
61 
63  return desc_iterator_range(ArangeDescriptors.begin(),
64  ArangeDescriptors.end());
65  }
66 };
67 
68 }
69 
70 #endif
desc_iterator_range descriptors() const
This provides a very simple, boring adaptor for a begin and end iterator into a range type...
void dump(raw_ostream &OS) const
bool extract(DataExtractor data, uint32_t *offset_ptr)
A range adaptor for a pair of iterators.
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:38
uint32_t getCompileUnitDIEOffset() const