9#ifndef LLVM_OBJECTYAML_MINIDUMPYAML_H
10#define LLVM_OBJECTYAML_MINIDUMPYAML_H
106 minidump::StreamType::Memory64List;
122 std::vector<detail::ParsedMemory64Descriptor>
Entries = {})
148 std::vector<minidump::MemoryInfo>
Infos;
209 :
Stream(StreamKind::TextContent,
Type), Text(Text) {}
228 std::vector<std::unique_ptr<Stream>>
Streams)
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);
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
#define LLVM_YAML_DECLARE_BITSET_TRAITS(Type)
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
#define LLVM_YAML_STRONG_TYPEDEF(_base, _type)
YAML I/O does conversion based on types. But often native data types are just a typedef of built in i...
#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.
detail::ListStream< detail::ParsedModule > ModuleListStream
detail::ListStream< detail::ParsedMemoryDescriptor > MemoryListStream
detail::ListStream< detail::ParsedThread > ThreadListStream
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.
auto size(R &&Range, std::enable_if_t< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< decltype(Range.begin())>::iterator_category >::value, void > *=nullptr)
Get the size of a range.
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(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
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
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
SystemInfoStream(const minidump::SystemInfo &Info, std::string CSDVersion)
static bool classof(const Stream *S)
minidump::SystemInfo Info
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
static constexpr minidump::StreamType Type
A structure containing all data describing a single memory region.
static constexpr minidump::StreamType Type
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
static constexpr minidump::StreamType Type
A structure containing all data belonging to a single minidump thread.
static constexpr Stream::StreamKind Kind
static constexpr minidump::StreamType Type
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)
This class should be specialized by type that requires custom conversion to/from a YAML literal block...
static void mapping(IO &IO, minidump::MemoryDescriptor &Memory, BinaryRef &Content)
static void mapping(IO &IO, minidump::MemoryDescriptor_64 &Memory, BinaryRef &Content)
This class is similar to MappingTraits<T> but allows you to pass in additional context for each map o...
static std::string validate(IO &IO, std::unique_ptr< MinidumpYAML::Stream > &S)
static void mapping(IO &IO, std::unique_ptr< MinidumpYAML::Stream > &S)
This class should be specialized by any type that needs to be converted to/from a YAML mapping.