diff options
Diffstat (limited to 'source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h')
| -rw-r--r-- | source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h | 25 | 
1 files changed, 24 insertions, 1 deletions
| diff --git a/source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h b/source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h index 5d5cdb319c10..27bef975125d 100644 --- a/source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h +++ b/source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h @@ -20,7 +20,7 @@ namespace breakpad {  class Record {  public: -  enum Kind { Module, Info, File, Func, Line, Public, StackCFI }; +  enum Kind { Module, Info, File, Func, Line, Public, StackCFI, StackWin };    /// Attempt to guess the kind of the record present in the argument without    /// doing a full parse. The returned kind will always be correct for valid @@ -157,6 +157,29 @@ public:  bool operator==(const StackCFIRecord &L, const StackCFIRecord &R);  llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const StackCFIRecord &R); +class StackWinRecord : public Record { +public: +  static llvm::Optional<StackWinRecord> parse(llvm::StringRef Line); + +  StackWinRecord(lldb::addr_t RVA, lldb::addr_t CodeSize, +                 lldb::addr_t ParameterSize, lldb::addr_t SavedRegisterSize, +                 lldb::addr_t LocalSize, llvm::StringRef ProgramString) +      : Record(StackWin), RVA(RVA), CodeSize(CodeSize), +        ParameterSize(ParameterSize), SavedRegisterSize(SavedRegisterSize), +        LocalSize(LocalSize), ProgramString(ProgramString) {} + +  enum class FrameType : uint8_t { FPO = 0, FrameData = 4 }; +  lldb::addr_t RVA; +  lldb::addr_t CodeSize; +  lldb::addr_t ParameterSize; +  lldb::addr_t SavedRegisterSize; +  lldb::addr_t LocalSize; +  llvm::StringRef ProgramString; +}; + +bool operator==(const StackWinRecord &L, const StackWinRecord &R); +llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const StackWinRecord &R); +  } // namespace breakpad  } // namespace lldb_private | 
