diff options
Diffstat (limited to 'llvm/tools/llvm-cfi-verify/lib/FileAnalysis.h')
| -rw-r--r-- | llvm/tools/llvm-cfi-verify/lib/FileAnalysis.h | 19 | 
1 files changed, 18 insertions, 1 deletions
| diff --git a/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.h b/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.h index 1ed575bb9e4..9945a2110a2 100644 --- a/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.h +++ b/llvm/tools/llvm-cfi-verify/lib/FileAnalysis.h @@ -12,6 +12,7 @@  #include "llvm/ADT/DenseMap.h"  #include "llvm/BinaryFormat/ELF.h" +#include "llvm/DebugInfo/DWARF/DWARFContext.h"  #include "llvm/MC/MCAsmInfo.h"  #include "llvm/MC/MCContext.h"  #include "llvm/MC/MCDisassembler/MCDisassembler.h" @@ -120,6 +121,18 @@ public:    const MCInstrInfo *getMCInstrInfo() const;    const MCInstrAnalysis *getMCInstrAnalysis() const; +  // Returns true if this class is using DWARF line tables for elimination. +  bool hasLineTableInfo() const; + +  // Returns the line table information for the range {Address +- +  // DWARFSearchRange}. Returns an empty table if the address has no valid line +  // table information, or this analysis object has DWARF handling disabled. +  DILineInfoTable getLineInfoForAddressRange(uint64_t Address); + +  // Returns whether the provided address has valid line information for +  // instructions in the range of Address +- DWARFSearchRange. +  bool hasValidLineInfoForAddressRange(uint64_t Address); +  protected:    // Construct a blank object with the provided triple and features. Used in    // testing, where a sub class will dependency inject protected methods to @@ -162,8 +175,12 @@ private:    std::unique_ptr<const MCInstrAnalysis> MIA;    std::unique_ptr<MCInstPrinter> Printer; +  // DWARF debug information. +  std::unique_ptr<DWARFContext> DWARF; +    // A mapping between the virtual memory address to the instruction metadata -  // struct. +  // struct. TODO(hctim): Reimplement this as a sorted vector to avoid per- +  // insertion allocation.    std::map<uint64_t, Instr> Instructions;    // Contains a mapping between a specific address, and a list of instructions | 

