9#ifndef LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_BREAKPADRECORDS_H
10#define LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_BREAKPADRECORDS_H
14#include "llvm/ADT/StringRef.h"
15#include "llvm/Support/FormatProviders.h"
16#include "llvm/TargetParser/Triple.h"
40 static std::optional<Kind>
classify(llvm::StringRef
Line);
62 static std::optional<ModuleRecord>
parse(llvm::StringRef
Line);
66 llvm::Triple::OSType
OS;
67 llvm::Triple::ArchType
Arch;
74llvm::raw_ostream &
operator<<(llvm::raw_ostream &
OS,
const ModuleRecord &R);
78 static std::optional<InfoRecord>
parse(llvm::StringRef
Line);
87llvm::raw_ostream &
operator<<(llvm::raw_ostream &
OS,
const InfoRecord &R);
91 static std::optional<FileRecord>
parse(llvm::StringRef
Line);
102llvm::raw_ostream &
operator<<(llvm::raw_ostream &
OS,
const FileRecord &R);
106 static std::optional<InlineOriginRecord>
parse(llvm::StringRef
Line);
119 const InlineOriginRecord &R);
123 static std::optional<FuncRecord>
parse(llvm::StringRef
Line);
141 static std::optional<InlineRecord>
parse(llvm::StringRef
Line);
153 std::vector<std::pair<lldb::addr_t, lldb::addr_t>>
Ranges;
161 static std::optional<LineRecord>
parse(llvm::StringRef
Line);
178 static std::optional<PublicRecord>
parse(llvm::StringRef
Line);
180 llvm::StringRef
Name)
195 static std::optional<StackCFIRecord>
parse(llvm::StringRef
Line);
202 std::optional<lldb::addr_t>
Size;
211 static std::optional<StackWinRecord>
parse(llvm::StringRef
Line);
A section + offset based address class.
An abstract base class for files.
A class that describes an executable image and its associated object and symbol files.
FileRecord(size_t Number, llvm::StringRef Name)
static std::optional< FileRecord > parse(llvm::StringRef Line)
static std::optional< FuncRecord > parse(llvm::StringRef Line)
FuncRecord(bool Multiple, lldb::addr_t Address, lldb::addr_t Size, lldb::addr_t ParamSize, llvm::StringRef Name)
static std::optional< InfoRecord > parse(llvm::StringRef Line)
static std::optional< InlineOriginRecord > parse(llvm::StringRef Line)
InlineOriginRecord(size_t Number, llvm::StringRef Name)
static std::optional< InlineRecord > parse(llvm::StringRef Line)
InlineRecord(size_t InlineNestLevel, uint32_t CallSiteLineNum, size_t CallSiteFileNum, size_t OriginNum)
std::vector< std::pair< lldb::addr_t, lldb::addr_t > > Ranges
static std::optional< LineRecord > parse(llvm::StringRef Line)
LineRecord(lldb::addr_t Address, lldb::addr_t Size, uint32_t LineNum, size_t FileNum)
static std::optional< ModuleRecord > parse(llvm::StringRef Line)
ModuleRecord(llvm::Triple::OSType OS, llvm::Triple::ArchType Arch, UUID ID)
llvm::Triple::ArchType Arch
static std::optional< PublicRecord > parse(llvm::StringRef Line)
PublicRecord(bool Multiple, lldb::addr_t Address, lldb::addr_t ParamSize, llvm::StringRef Name)
static std::optional< Kind > classify(llvm::StringRef Line)
Attempt to guess the kind of the record present in the argument without doing a full parse.
llvm::StringRef UnwindRules
StackCFIRecord(lldb::addr_t Address, std::optional< lldb::addr_t > Size, llvm::StringRef UnwindRules)
std::optional< lldb::addr_t > Size
static std::optional< StackCFIRecord > parse(llvm::StringRef Line)
llvm::StringRef ProgramString
static std::optional< StackWinRecord > parse(llvm::StringRef Line)
lldb::addr_t ParameterSize
lldb::addr_t SavedRegisterSize
StackWinRecord(lldb::addr_t RVA, lldb::addr_t CodeSize, lldb::addr_t ParameterSize, lldb::addr_t SavedRegisterSize, lldb::addr_t LocalSize, llvm::StringRef ProgramString)
llvm::raw_ostream & operator<<(llvm::raw_ostream &OS, Record::Kind K)
bool operator==(const ModuleRecord &L, const ModuleRecord &R)
llvm::StringRef toString(Record::Kind K)
A class that represents a running process on the host machine.