9#ifndef LLVM_OBJECTYAML_MINIDUMPYAML_H
10#define LLVM_OBJECTYAML_MINIDUMPYAML_H
18namespace MinidumpYAML {
106 minidump::StreamType::Memory64List;
122 std::vector<detail::ParsedMemory64Descriptor>
Entries = {})
148 std::vector<minidump::MemoryInfo>
Infos;
209 :
Stream(StreamKind::TextContent,
Type), Text(Text) {}
212 return S->
Kind == StreamKind::TextContent;
228 std::vector<std::unique_ptr<Stream>>
Streams)
243template <>
struct BlockScalarTraits<MinidumpYAML::BlockStringRef> {
244 static void output(
const MinidumpYAML::BlockStringRef &Text,
void *,
250 MinidumpYAML::BlockStringRef &Text) {
257 static void mapping(IO &IO, std::unique_ptr<MinidumpYAML::Stream> &S);
258 static std::string
validate(IO &IO, std::unique_ptr<MinidumpYAML::Stream> &S);
261template <>
struct MappingContextTraits<minidump::MemoryDescriptor,
BinaryRef> {
267struct MappingContextTraits<minidump::MemoryDescriptor_64,
BinaryRef> {
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
#define LLVM_YAML_DECLARE_BITSET_TRAITS(Type)
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
#define LLVM_YAML_STRONG_TYPEDEF(_base, _type)
#define LLVM_YAML_DECLARE_MAPPING_TRAITS(Type)
#define LLVM_YAML_DECLARE_ENUM_TRAITS(Type)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Tagged union holding either a T or a Error.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
A range adaptor for a pair of iterators.
A class providing access to the contents of a minidump file.
This class implements an extremely fast bulk output stream that can only output to a stream.
This class provides various memory handling functions that manipulate MemoryBlock instances.
Specialized YAMLIO scalar type for representing a binary blob.
ProcessorArchitecture
The processor architecture of the system that generated this minidump.
StreamType
The type of a minidump stream identifies its contents.
OSPlatform
The OS Platform of the system that generated this minidump.
This is an optimization pass for GlobalISel generic memory operations.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
ExceptionStream minidump stream.
ExceptionStream(const minidump::ExceptionStream &MDExceptionStream, ArrayRef< uint8_t > ThreadContext)
minidump::ExceptionStream MDExceptionStream
static bool classof(const Stream *S)
yaml::BinaryRef ThreadContext
Memory64ListStream(std::vector< detail::ParsedMemory64Descriptor > Entries={})
minidump::Memory64ListHeader Header
A structure containing the list of MemoryInfo entries comprising a MemoryInfoList stream.
MemoryInfoListStream(iterator_range< object::MinidumpFile::MemoryInfoIterator > Range)
std::vector< minidump::MemoryInfo > Infos
static bool classof(const Stream *S)
The top level structure representing a minidump object, consisting of a minidump header,...
Object & operator=(Object &&)=default
std::vector< std::unique_ptr< Stream > > Streams
The list of streams in this minidump object.
Object(const Object &)=delete
static Expected< Object > create(const object::MinidumpFile &File)
Object(const minidump::Header &Header, std::vector< std::unique_ptr< Stream > > Streams)
minidump::Header Header
The minidump header.
Object & operator=(const Object &)=delete
Object(Object &&)=default
A minidump stream represented as a sequence of hex bytes.
RawContentStream(minidump::StreamType Type, ArrayRef< uint8_t > Content={})
static bool classof(const Stream *S)
The base class for all minidump streams.
static std::unique_ptr< Stream > create(minidump::StreamType Type)
Create an empty stream of the given Type.
Stream(StreamKind Kind, minidump::StreamType Type)
static StreamKind getKind(minidump::StreamType Type)
Get the stream Kind used for representing streams of a given Type.
const minidump::StreamType Type
SystemInfo minidump stream.
SystemInfoStream(const minidump::SystemInfo &Info, std::string CSDVersion)
static bool classof(const Stream *S)
minidump::SystemInfo Info
A StringRef, which is printed using YAML block notation.
static bool classof(const Stream *S)
TextContentStream(minidump::StreamType Type, StringRef Text={})
A stream representing a list of abstract entries in a minidump stream.
static bool classof(const Stream *S)
ListStream(std::vector< entry_type > Entries={})
std::vector< entry_type > Entries
static constexpr Stream::StreamKind Kind
minidump::MemoryDescriptor_64 Entry
A structure containing all data describing a single memory region.
static constexpr Stream::StreamKind Kind
minidump::MemoryDescriptor Entry
A structure containing all data belonging to a single minidump module.
static constexpr Stream::StreamKind Kind
yaml::BinaryRef MiscRecord
A structure containing all data belonging to a single minidump thread.
static constexpr Stream::StreamKind Kind
Specifies the location and type of a single stream in the minidump file.
Describes a single memory range (both its VM address and where to find it in the file) of the process...
The SystemInfo stream, containing various information about the system where this minidump was genera...
Describes a single thread in the minidump file.
static StringRef input(StringRef Scalar, void *, MinidumpYAML::BlockStringRef &Text)
static void output(const MinidumpYAML::BlockStringRef &Text, void *, raw_ostream &OS)
static void mapping(IO &IO, minidump::MemoryDescriptor &Memory, BinaryRef &Content)
static void mapping(IO &IO, minidump::MemoryDescriptor_64 &Memory, BinaryRef &Content)
static std::string validate(IO &IO, std::unique_ptr< MinidumpYAML::Stream > &S)
static void mapping(IO &IO, std::unique_ptr< MinidumpYAML::Stream > &S)