LLVM  6.0.0svn
DWARFGdbIndex.h
Go to the documentation of this file.
1 //===- DWARFGdbIndex.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_DEBUGINFO_DWARF_DWARFGDBINDEX_H
11 #define LLVM_DEBUGINFO_DWARF_DWARFGDBINDEX_H
12 
13 #include "llvm/ADT/SmallVector.h"
14 #include "llvm/ADT/StringRef.h"
16 #include <cstdint>
17 #include <utility>
18 
19 namespace llvm {
20 
21 class raw_ostream;
22 
24  uint32_t Version;
25 
26  uint32_t CuListOffset;
27  uint32_t AddressAreaOffset;
28  uint32_t SymbolTableOffset;
29  uint32_t ConstantPoolOffset;
30 
31  struct CompUnitEntry {
32  uint64_t Offset; /// Offset of a CU in the .debug_info section.
33  uint64_t Length; /// Length of that CU.
34  };
36 
37  struct AddressEntry {
38  uint64_t LowAddress; /// The low address.
39  uint64_t HighAddress; /// The high address.
40  uint32_t CuIndex; /// The CU index.
41  };
42  SmallVector<AddressEntry, 0> AddressArea;
43 
44  struct SymTableEntry {
45  uint32_t NameOffset; /// Offset of the symbol's name in the constant pool.
46  uint32_t VecOffset; /// Offset of the CU vector in the constant pool.
47  };
49 
50  /// Each value is CU index + attributes.
52  ConstantPoolVectors;
53 
54  StringRef ConstantPoolStrings;
55  uint32_t StringPoolOffset;
56 
57  void dumpCUList(raw_ostream &OS) const;
58  void dumpAddressArea(raw_ostream &OS) const;
59  void dumpSymbolTable(raw_ostream &OS) const;
60  void dumpConstantPool(raw_ostream &OS) const;
61 
62  bool parseImpl(DataExtractor Data);
63 
64 public:
65  void dump(raw_ostream &OS);
66  void parse(DataExtractor Data);
67 
68  bool HasContent = false;
69  bool HasError = false;
70 };
71 
72 } // end namespace llvm
73 
74 #endif // LLVM_DEBUGINFO_DWARF_DWARFGDBINDEX_H
Compute iterated dominance frontiers using a linear time algorithm.
Definition: AllocatorList.h:24
void dump(raw_ostream &OS)
void parse(DataExtractor Data)
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:44
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49