diff options
Diffstat (limited to 'contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h')
-rw-r--r-- | contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h b/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h index 0c8f98aa62f9..de8ad4e5ef3c 100644 --- a/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h +++ b/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h @@ -15,6 +15,7 @@ #include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h" #include "llvm/DebugInfo/DWARF/DWARFFormValue.h" #include "llvm/DebugInfo/DWARF/DWARFRelocMap.h" +#include "llvm/Support/MD5.h" #include <cstdint> #include <map> #include <string> @@ -22,6 +23,7 @@ namespace llvm { +class DWARFUnit; class raw_ostream; class DWARFDebugLine { @@ -33,6 +35,7 @@ public: uint64_t DirIdx = 0; uint64_t ModTime = 0; uint64_t Length = 0; + MD5::MD5Result Checksum; }; struct Prologue { @@ -45,11 +48,11 @@ public: /// parameters affect interpretation of forms (used in the directory and /// file tables starting with v5). DWARFFormParams FormParams; - /// In v5, size in bytes of a segment selector. - uint8_t SegSelectorSize; /// The number of bytes following the prologue_length field to the beginning /// of the first byte of the statement program itself. uint64_t PrologueLength; + /// In v5, size in bytes of a segment selector. + uint8_t SegSelectorSize; /// The size in bytes of the smallest target machine instruction. Statement /// program opcodes that alter the address register first multiply their /// operands by this value. @@ -65,6 +68,8 @@ public: uint8_t LineRange; /// The number assigned to the first special opcode. uint8_t OpcodeBase; + /// For v5, whether filename entries provide an MD5 checksum. + bool HasMD5; std::vector<uint8_t> StandardOpcodeLengths; std::vector<StringRef> IncludeDirectories; std::vector<FileNameEntry> FileNames; @@ -95,7 +100,8 @@ public: void clear(); void dump(raw_ostream &OS) const; - bool parse(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr); + bool parse(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr, + const DWARFUnit *U = nullptr); }; /// Standard .debug_line state machine structure. @@ -217,7 +223,8 @@ public: void clear(); /// Parse prologue and all rows. - bool parse(const DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr); + bool parse(DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr, + const DWARFUnit *U, raw_ostream *OS = nullptr); using RowVector = std::vector<Row>; using RowIter = RowVector::const_iterator; @@ -234,8 +241,8 @@ public: }; const LineTable *getLineTable(uint32_t Offset) const; - const LineTable *getOrParseLineTable(const DWARFDataExtractor &DebugLineData, - uint32_t Offset); + const LineTable *getOrParseLineTable(DWARFDataExtractor &DebugLineData, + uint32_t Offset, const DWARFUnit *U); private: struct ParsingState { |