X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FDebugInfo%2FDWARFDebugLine.h;h=a336f49b29b24f706ce5928c17c49c1a2b102f8e;hb=ef953d6399f396b129417e1cdadcd6dc53b9a0ec;hp=586dd7e8784fcf9dccb58740e9dac44d466033ec;hpb=38a6381c0a58e013577b1957199128af9573fc20;p=oota-llvm.git diff --git a/lib/DebugInfo/DWARFDebugLine.h b/lib/DebugInfo/DWARFDebugLine.h index 586dd7e8784..a336f49b29b 100644 --- a/lib/DebugInfo/DWARFDebugLine.h +++ b/lib/DebugInfo/DWARFDebugLine.h @@ -10,6 +10,7 @@ #ifndef LLVM_DEBUGINFO_DWARFDEBUGLINE_H #define LLVM_DEBUGINFO_DWARFDEBUGLINE_H +#include "DWARFRelocMap.h" #include "llvm/Support/DataExtractor.h" #include #include @@ -21,6 +22,7 @@ class raw_ostream; class DWARFDebugLine { public: + DWARFDebugLine(const RelocAddrMap* LineInfoRelocMap) : RelocMap(LineInfoRelocMap) {} struct FileNameEntry { FileNameEntry() : Name(0), DirIdx(0), ModTime(0), Length(0) {} @@ -32,8 +34,9 @@ public: struct Prologue { Prologue() - : TotalLength(0), Version(0), PrologueLength(0), MinInstLength(0), - DefaultIsStmt(0), LineBase(0), LineRange(0), OpcodeBase(0) {} + : TotalLength(0), Version(0), PrologueLength(0), MinInstLength(0), + MaxOpsPerInst(0), DefaultIsStmt(0), LineBase(0), LineRange(0), + OpcodeBase(0) {} // The size in bytes of the statement information for this compilation unit // (not including the total_length field itself). @@ -47,6 +50,9 @@ public: // program opcodes that alter the address register first multiply their // operands by this value. uint8_t MinInstLength; + // The maximum number of individual operations that may be encoded in an + // instruction. + uint8_t MaxOpsPerInst; // The initial value of theis_stmtregister. uint8_t DefaultIsStmt; // This parameter affects the meaning of the special opcodes. See below. @@ -110,6 +116,9 @@ public: // An unsigned integer whose value encodes the applicable instruction set // architecture for the current instruction. uint8_t Isa; + // An unsigned integer representing the DWARF path discriminator value + // for this location. + uint32_t Discriminator; // A boolean indicating that the current instruction is the beginning of a // statement. uint8_t IsStmt:1, @@ -176,6 +185,10 @@ public: // or -1 if there is no such row. uint32_t lookupAddress(uint64_t address) const; + bool lookupAddressRange(uint64_t address, + uint64_t size, + std::vector& result) const; + // Extracts filename by its index in filename table in prologue. // Returns true on success. bool getFileNameByIndex(uint64_t FileIndex, @@ -218,7 +231,7 @@ public: struct DumpingState : public State { DumpingState(raw_ostream &OS) : OS(OS) {} virtual ~DumpingState(); - virtual void finalize(); + void finalize() override; private: raw_ostream &OS; }; @@ -227,6 +240,7 @@ public: Prologue *prologue); /// Parse a single line table (prologue and all rows). static bool parseStatementTable(DataExtractor debug_line_data, + const RelocAddrMap *RMap, uint32_t *offset_ptr, State &state); const LineTable *getLineTable(uint32_t offset) const; @@ -238,6 +252,7 @@ private: typedef LineTableMapTy::iterator LineTableIter; typedef LineTableMapTy::const_iterator LineTableConstIter; + const RelocAddrMap *RelocMap; LineTableMapTy LineTableMap; };