Go to the documentation of this file.
9 #ifndef LLVM_OBJECTYAML_MINIDUMPYAML_H
10 #define LLVM_OBJECTYAML_MINIDUMPYAML_H
18 namespace MinidumpYAML {
129 std::vector<minidump::MemoryInfo>
Infos;
190 :
Stream(StreamKind::TextContent,
Type), Text(Text) {}
193 return S->Kind == StreamKind::TextContent;
209 std::vector<std::unique_ptr<Stream>>
Streams)
224 template <>
struct BlockScalarTraits<MinidumpYAML::BlockStringRef> {
225 static void output(
const MinidumpYAML::BlockStringRef &Text,
void *,
231 MinidumpYAML::BlockStringRef &Text) {
238 static void mapping(IO &IO, std::unique_ptr<MinidumpYAML::Stream> &
S);
239 static std::string
validate(IO &IO, std::unique_ptr<MinidumpYAML::Stream> &
S);
242 template <>
struct MappingContextTraits<minidump::MemoryDescriptor,
BinaryRef> {
281 #endif // LLVM_OBJECTYAML_MINIDUMPYAML_H
Describes a single memory range (both its VM address and where to find it in the file) of the process...
#define LLVM_YAML_DECLARE_MAPPING_TRAITS(Type)
This is an optimization pass for GlobalISel generic memory operations.
#define LLVM_YAML_DECLARE_ENUM_TRAITS(Type)
static StringRef input(StringRef Scalar, void *, MinidumpYAML::BlockStringRef &Text)
The top level structure representing a minidump object, consisting of a minidump header,...
ProcessorArchitecture
The processor architecture of the system that generated this minidump.
minidump::ExceptionStream MDExceptionStream
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
static void output(const MinidumpYAML::BlockStringRef &Text, void *, raw_ostream &OS)
static std::unique_ptr< Stream > create(minidump::StreamType Type)
Create an empty stream of the given Type.
The instances of the Type class are immutable: once they are created, they are never changed.
RawContentStream(minidump::StreamType Type, ArrayRef< uint8_t > Content={})
const_iterator end(StringRef path)
Get end iterator over path.
const_iterator begin(StringRef path, Style style=Style::native)
Get begin iterator over path.
std::vector< entry_type > Entries
const minidump::StreamType Type
Tagged union holding either a T or a Error.
void validate(const Triple &TT, const FeatureBitset &FeatureBits)
static constexpr Stream::StreamKind Kind
SystemInfoStream(const minidump::SystemInfo &Info, std::string CSDVersion)
The SystemInfo stream, containing various information about the system where this minidump was genera...
A stream representing a list of abstract entries in a minidump stream.
static StreamKind getKind(minidump::StreamType Type)
Get the stream Kind used for representing streams of a given Type.
Object & operator=(const Object &)=delete
static bool classof(const Stream *S)
minidump::Header Header
The minidump header.
std::vector< std::unique_ptr< Stream > > Streams
The list of streams in this minidump object.
This class implements an extremely fast bulk output stream that can only output to a stream.
yaml::BinaryRef ThreadContext
static constexpr Stream::StreamKind Kind
A structure containing all data describing a single memory region.
StreamType
The type of a minidump stream identifies its contents.
static bool classof(const Stream *S)
ExceptionStream(const minidump::ExceptionStream &MDExceptionStream, ArrayRef< uint8_t > ThreadContext)
#define LLVM_YAML_STRONG_TYPEDEF(_base, _type)
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
#define LLVM_YAML_DECLARE_BITSET_TRAITS(Type)
A structure containing all data belonging to a single minidump module.
OSPlatform
The OS Platform of the system that generated this minidump.
static bool classof(const Stream *S)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
MemoryInfoListStream(iterator_range< object::MinidumpFile::MemoryInfoIterator > Range)
The base class for all minidump streams.
SystemInfo minidump stream.
A StringRef, which is printed using YAML block notation.
Object(const minidump::Header &Header, std::vector< std::unique_ptr< Stream >> Streams)
ListStream(std::vector< entry_type > Entries={})
std::vector< minidump::MemoryInfo > Infos
This class provides various memory handling functions that manipulate MemoryBlock instances.
StringRef - Represent a constant reference to a string, i.e.
Specialized YAMLIO scalar type for representing a binary blob.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
yaml::BinaryRef MiscRecord
static bool classof(const Stream *S)
TextContentStream(minidump::StreamType Type, StringRef Text={})
Specifies the location and type of a single stream in the minidump file.
static bool classof(const Stream *S)
minidump::SystemInfo Info
static Expected< Object > create(const object::MinidumpFile &File)
ExceptionStream minidump stream.
A minidump stream represented as a sequence of hex bytes.
A class providing access to the contents of a minidump file.
Describes a single thread in the minidump file.
A range adaptor for a pair of iterators.
Type
MessagePack types as defined in the standard, with the exception of Integer being divided into a sign...
A structure containing all data belonging to a single minidump thread.
Stream(StreamKind Kind, minidump::StreamType Type)
static constexpr Stream::StreamKind Kind
static bool classof(const Stream *S)
minidump::MemoryDescriptor Entry
A structure containing the list of MemoryInfo entries comprising a MemoryInfoList stream.