LLVM: include/llvm/DebugInfo/LogicalView/Readers/LVDWARFReader.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_READERS_LVDWARFREADER_H
15#define LLVM_DEBUGINFO_LOGICALVIEW_READERS_LVDWARFREADER_H
16
20#include <unordered_set>
21
22namespace llvm {
24
30
32
35
36
37
38 bool RangesDataAvailable = false;
41
42 LVOffset CurrentEndOffset = 0;
43
44
45
46
47 bool IncrementFileIndex = false;
48
49
51
52
54
55
58 bool FoundLowPC = false;
59 bool FoundHighPC = false;
60
61
62 std::optional TombstoneAddress;
63
64
65 using LVElementSet = std::unordered_set<LVElement *>;
66 struct LVElementEntry {
68 LVElementSet References;
69 LVElementSet Types;
70 LVElementEntry(LVElement *Element = nullptr) : Element(Element) {}
71 };
72 using LVElementReference = std::unordered_map<LVOffset, LVElementEntry>;
73 LVElementReference ElementTable;
74
76
78
81
84 void processOneAttribute(const DWARFDie &Die, LVOffset *OffsetPtr,
87 void processLocationGaps();
88
89
91 if (GlobalOffsets.find(Offset) == GlobalOffsets.end())
92
93
94 GlobalOffsets.emplace(Offset, nullptr);
95 }
96
97
99
100
107 bool CallSiteLocation = false);
109
110
112 bool IsType);
113
114protected:
117
118public:
127
132
135 assert(TombstoneAddress && "Unset tombstone value");
136 return TombstoneAddress.value();
137 }
138
140 return SymbolsWithLocations;
141 }
142
145
147
148#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
150#endif
151};
152
153}
154}
155
156#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
A structured debug information entry.
Utility class that carries the DWARF compile/type unit and the debug info entry in an object.
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
LVDWARFReader(const LVDWARFReader &)=delete
LVAddress getTombstoneAddress() const
Definition LVDWARFReader.h:134
void setCUHighAddress(LVAddress Address)
Definition LVDWARFReader.h:131
void setTombstoneAddress(LVAddress Address)
Definition LVDWARFReader.h:133
void print(raw_ostream &OS) const
LVDWARFReader & operator=(const LVDWARFReader &)=delete
std::string getRegisterName(LVSmall Opcode, ArrayRef< uint64_t > Operands) override
void sortScopes() override
LVAddress getCUBaseAddress() const
Definition LVDWARFReader.h:128
void setCUBaseAddress(LVAddress Address)
Definition LVDWARFReader.h:129
~LVDWARFReader() override=default
LVAddress getCUHighAddress() const
Definition LVDWARFReader.h:130
LVDWARFReader(StringRef Filename, StringRef FileFormatName, object::ObjectFile &Obj, ScopedPrinter &W)
Definition LVDWARFReader.h:120
Error createScopes() override
const LVSymbols & GetSymbolsWithLocations() const
Definition LVDWARFReader.h:139
void dump() const
Definition LVDWARFReader.h:149
std::string FileFormatName
This class is the base class for all object file types.
This class implements an extremely fast bulk output stream that can only output to a stream.
std::map< LVOffset, LVElement * > LVOffsetElementMap
SmallVector< LVSymbol *, 8 > LVSymbols
DWARFAbbreviationDeclaration::AttributeSpec AttributeSpec
Definition LVDWARFReader.h:31
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.