summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/DWARFContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/DebugInfo/DWARFContext.h')
-rw-r--r--llvm/lib/DebugInfo/DWARFContext.h84
1 files changed, 48 insertions, 36 deletions
diff --git a/llvm/lib/DebugInfo/DWARFContext.h b/llvm/lib/DebugInfo/DWARFContext.h
index 96eaa70bd56..42d34b18f46 100644
--- a/llvm/lib/DebugInfo/DWARFContext.h
+++ b/llvm/lib/DebugInfo/DWARFContext.h
@@ -28,33 +28,38 @@ namespace llvm {
/// information parsing. The actual data is supplied through pure virtual
/// methods that a concrete implementation provides.
class DWARFContext : public DIContext {
- SmallVector<DWARFCompileUnit *, 1> CUs;
- SmallVector<DWARFTypeUnit *, 1> TUs;
+ typedef SmallVector<DWARFCompileUnit *, 1> CUVector;
+ typedef SmallVector<DWARFTypeUnit *, 1> TUVector;
+
+ CUVector CUs;
+ TUVector TUs;
std::unique_ptr<DWARFDebugAbbrev> Abbrev;
std::unique_ptr<DWARFDebugLoc> Loc;
std::unique_ptr<DWARFDebugAranges> Aranges;
std::unique_ptr<DWARFDebugLine> Line;
std::unique_ptr<DWARFDebugFrame> DebugFrame;
- SmallVector<DWARFCompileUnit *, 1> DWOCUs;
- SmallVector<DWARFTypeUnit *, 1> DWOTUs;
+ CUVector DWOCUs;
+ TUVector DWOTUs;
std::unique_ptr<DWARFDebugAbbrev> AbbrevDWO;
DWARFContext(DWARFContext &) LLVM_DELETED_FUNCTION;
DWARFContext &operator=(DWARFContext &) LLVM_DELETED_FUNCTION;
- /// Read compile units from the debug_info section and store them in CUs.
+ /// Read compile units from the debug_info section (if necessary)
+ /// and store them in CUs.
void parseCompileUnits();
- /// Read type units from the debug_types sections and store them in CUs.
+ /// Read type units from the debug_types sections (if necessary)
+ /// and store them in TUs.
void parseTypeUnits();
- /// Read compile units from the debug_info.dwo section and store them in
- /// DWOCUs.
+ /// Read compile units from the debug_info.dwo section (if necessary)
+ /// and store them in DWOCUs.
void parseDWOCompileUnits();
- /// Read type units from the debug_types.dwo section and store them in
- /// DWOTUs.
+ /// Read type units from the debug_types.dwo section (if necessary)
+ /// and store them in DWOTUs.
void parseDWOTypeUnits();
public:
@@ -72,62 +77,69 @@ public:
void dump(raw_ostream &OS, DIDumpType DumpType = DIDT_All) override;
+ typedef iterator_range<CUVector::iterator> cu_iterator_range;
+ typedef iterator_range<TUVector::iterator> tu_iterator_range;
+
+ /// Get compile units in this context.
+ cu_iterator_range compile_units() {
+ parseCompileUnits();
+ return cu_iterator_range(CUs.begin(), CUs.end());
+ }
+
+ /// Get type units in this context.
+ tu_iterator_range type_units() {
+ parseTypeUnits();
+ return tu_iterator_range(TUs.begin(), TUs.end());
+ }
+
+ /// Get compile units in the DWO context.
+ cu_iterator_range dwo_compile_units() {
+ parseDWOCompileUnits();
+ return cu_iterator_range(DWOCUs.begin(), DWOCUs.end());
+ }
+
+ /// Get type units in the DWO context.
+ tu_iterator_range dwo_type_units() {
+ parseDWOTypeUnits();
+ return tu_iterator_range(DWOTUs.begin(), DWOTUs.end());
+ }
+
/// Get the number of compile units in this context.
unsigned getNumCompileUnits() {
- if (CUs.empty())
- parseCompileUnits();
+ parseCompileUnits();
return CUs.size();
}
/// Get the number of compile units in this context.
unsigned getNumTypeUnits() {
- if (TUs.empty())
- parseTypeUnits();
+ parseTypeUnits();
return TUs.size();
}
/// Get the number of compile units in the DWO context.
unsigned getNumDWOCompileUnits() {
- if (DWOCUs.empty())
- parseDWOCompileUnits();
+ parseDWOCompileUnits();
return DWOCUs.size();
}
/// Get the number of compile units in the DWO context.
unsigned getNumDWOTypeUnits() {
- if (DWOTUs.empty())
- parseDWOTypeUnits();
+ parseDWOTypeUnits();
return DWOTUs.size();
}
/// Get the compile unit at the specified index for this compile unit.
DWARFCompileUnit *getCompileUnitAtIndex(unsigned index) {
- if (CUs.empty())
- parseCompileUnits();
+ parseCompileUnits();
return CUs[index];
}
- /// Get the type unit at the specified index for this compile unit.
- DWARFTypeUnit *getTypeUnitAtIndex(unsigned index) {
- if (TUs.empty())
- parseTypeUnits();
- return TUs[index];
- }
-
/// Get the compile unit at the specified index for the DWO compile units.
DWARFCompileUnit *getDWOCompileUnitAtIndex(unsigned index) {
- if (DWOCUs.empty())
- parseDWOCompileUnits();
+ parseDWOCompileUnits();
return DWOCUs[index];
}
- /// Get the type unit at the specified index for the DWO type units.
- DWARFTypeUnit *getDWOTypeUnitAtIndex(unsigned index) {
- if (DWOTUs.empty())
- parseDWOTypeUnits();
- return DWOTUs[index];
- }
-
/// Get a pointer to the parsed DebugAbbrev object.
const DWARFDebugAbbrev *getDebugAbbrev();
OpenPOWER on IntegriCloud