summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/DWARFAcceleratorTable.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/DebugInfo/DWARFAcceleratorTable.h')
-rw-r--r--llvm/lib/DebugInfo/DWARFAcceleratorTable.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/llvm/lib/DebugInfo/DWARFAcceleratorTable.h b/llvm/lib/DebugInfo/DWARFAcceleratorTable.h
new file mode 100644
index 00000000000..bb25917b47d
--- /dev/null
+++ b/llvm/lib/DebugInfo/DWARFAcceleratorTable.h
@@ -0,0 +1,38 @@
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/DebugInfo/DWARFFormValue.h"
+
+#include <cstdint>
+
+namespace llvm {
+
+class DWARFAcceleratorTable {
+
+ struct Header {
+ uint32_t Magic;
+ uint16_t Version;
+ uint16_t HashFunction;
+ uint32_t NumBuckets;
+ uint32_t NumHashes;
+ uint32_t HeaderDataLength;
+ };
+
+ struct HeaderData {
+ typedef uint16_t AtomType;
+ uint32_t DIEOffsetBase;
+ SmallVector<std::pair<AtomType, DWARFFormValue>, 1> Atoms;
+ };
+
+ struct Header Hdr;
+ struct HeaderData HdrData;
+ DataExtractor AccelSection;
+ DataExtractor StringSection;
+public:
+ DWARFAcceleratorTable(DataExtractor AccelSection, DataExtractor StringSection)
+ : AccelSection(AccelSection), StringSection(StringSection) {}
+
+ bool extract();
+ void dump(raw_ostream &OS);
+};
+
+}
OpenPOWER on IntegriCloud