diff options
Diffstat (limited to 'llvm/lib/DebugInfo/DWARFAcceleratorTable.h')
-rw-r--r-- | llvm/lib/DebugInfo/DWARFAcceleratorTable.h | 38 |
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); +}; + +} |