LLVM: include/llvm/ObjectYAML/MinidumpYAML.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_OBJECTYAML_MINIDUMPYAML_H
10#define LLVM_OBJECTYAML_MINIDUMPYAML_H
11
16
17namespace llvm {
19
20
21
22
23
24
25
26
39
42
45
46
48
49
51
52
56};
57
59
60
61
72
73
83
84
93
94
102
106 minidump::StreamType::Memory64List;
107
110};
111}
112
116
120
122 std::vectordetail::ParsedMemory64Descriptor Entries = {})
124};
125
126
144
145
146
148 std::vectorminidump::MemoryInfo Infos;
149
153
159
163};
164
165
166
179
180
184
187 memset(&Info, 0, sizeof(Info));
188 }
189
194
198};
199
200
202
203
204
207
209 : Stream(StreamKind::TextContent, Type), Text(Text) {}
210
214};
215
216
217
218
219
226
228 std::vector<std::unique_ptr> Streams)
230
231
233
234
235 std::vector<std::unique_ptr> Streams;
236
238};
239
240}
241
242namespace yaml {
244 static void output(const MinidumpYAML::BlockStringRef &Text, void *,
246 OS << Text;
247 }
248
250 MinidumpYAML::BlockStringRef &Text) {
252 return "";
253 }
254};
255
257 static void mapping(IO &IO, std::unique_ptrMinidumpYAML::Stream &S);
258 static std::string validate(IO &IO, std::unique_ptrMinidumpYAML::Stream &S);
259};
260
265
266template <>
271
272}
273
274}
275
279
283
290
299
306
308
309#endif
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.
Definition MinidumpYAML.h:18
detail::ListStream< detail::ParsedModule > ModuleListStream
Definition MinidumpYAML.h:113
detail::ListStream< detail::ParsedMemoryDescriptor > MemoryListStream
Definition MinidumpYAML.h:115
detail::ListStream< detail::ParsedThread > ThreadListStream
Definition MinidumpYAML.h:114
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)
Definition MinidumpYAML.h:135
minidump::ExceptionStream MDExceptionStream
Definition MinidumpYAML.h:128
ExceptionStream()
Definition MinidumpYAML.h:131
static bool classof(const Stream *S)
Definition MinidumpYAML.h:140
yaml::BinaryRef ThreadContext
Definition MinidumpYAML.h:129
Memory64ListStream(std::vector< detail::ParsedMemory64Descriptor > Entries={})
Definition MinidumpYAML.h:121
minidump::Memory64ListHeader Header
Definition MinidumpYAML.h:119
MemoryInfoListStream()
Definition MinidumpYAML.h:150
MemoryInfoListStream(iterator_range< object::MinidumpFile::MemoryInfoIterator > Range)
Definition MinidumpYAML.h:154
std::vector< minidump::MemoryInfo > Infos
Definition MinidumpYAML.h:148
static bool classof(const Stream *S)
Definition MinidumpYAML.h:160
The top level structure representing a minidump object, consisting of a minidump header,...
Definition MinidumpYAML.h:220
Object & operator=(Object &&)=default
std::vector< std::unique_ptr< Stream > > Streams
The list of streams in this minidump object.
Definition MinidumpYAML.h:235
Object(const Object &)=delete
static Expected< Object > create(const object::MinidumpFile &File)
Object(const minidump::Header &Header, std::vector< std::unique_ptr< Stream > > Streams)
Definition MinidumpYAML.h:227
minidump::Header Header
The minidump header.
Definition MinidumpYAML.h:232
Object & operator=(const Object &)=delete
Object(Object &&)=default
RawContentStream(minidump::StreamType Type, ArrayRef< uint8_t > Content={})
Definition MinidumpYAML.h:171
static bool classof(const Stream *S)
Definition MinidumpYAML.h:175
yaml::BinaryRef Content
Definition MinidumpYAML.h:168
yaml::Hex32 Size
Definition MinidumpYAML.h:169
The base class for all minidump streams.
Definition MinidumpYAML.h:27
static std::unique_ptr< Stream > create(minidump::StreamType Type)
Create an empty stream of the given Type.
const StreamKind Kind
Definition MinidumpYAML.h:43
Stream(StreamKind Kind, minidump::StreamType Type)
Definition MinidumpYAML.h:40
static StreamKind getKind(minidump::StreamType Type)
Get the stream Kind used for representing streams of a given Type.
const minidump::StreamType Type
Definition MinidumpYAML.h:44
StreamKind
Definition MinidumpYAML.h:28
@ ModuleList
Definition MinidumpYAML.h:33
@ MemoryList
Definition MinidumpYAML.h:31
@ ThreadList
Definition MinidumpYAML.h:37
@ SystemInfo
Definition MinidumpYAML.h:35
@ Memory64List
Definition MinidumpYAML.h:32
@ MemoryInfoList
Definition MinidumpYAML.h:30
@ Exception
Definition MinidumpYAML.h:29
@ RawContent
Definition MinidumpYAML.h:34
@ TextContent
Definition MinidumpYAML.h:36
std::string CSDVersion
Definition MinidumpYAML.h:183
SystemInfoStream(const minidump::SystemInfo &Info, std::string CSDVersion)
Definition MinidumpYAML.h:190
SystemInfoStream()
Definition MinidumpYAML.h:185
static bool classof(const Stream *S)
Definition MinidumpYAML.h:195
minidump::SystemInfo Info
Definition MinidumpYAML.h:182
static bool classof(const Stream *S)
Definition MinidumpYAML.h:211
BlockStringRef Text
Definition MinidumpYAML.h:206
TextContentStream(minidump::StreamType Type, StringRef Text={})
Definition MinidumpYAML.h:208
A stream representing a list of abstract entries in a minidump stream.
Definition MinidumpYAML.h:62
static bool classof(const Stream *S)
Definition MinidumpYAML.h:70
ListStream(std::vector< entry_type > Entries={})
Definition MinidumpYAML.h:67
EntryT entry_type
Definition MinidumpYAML.h:63
std::vector< entry_type > Entries
Definition MinidumpYAML.h:65
Definition MinidumpYAML.h:103
static constexpr Stream::StreamKind Kind
Definition MinidumpYAML.h:104
minidump::MemoryDescriptor_64 Entry
Definition MinidumpYAML.h:108
static constexpr minidump::StreamType Type
Definition MinidumpYAML.h:105
yaml::BinaryRef Content
Definition MinidumpYAML.h:109
A structure containing all data describing a single memory region.
Definition MinidumpYAML.h:95
yaml::BinaryRef Content
Definition MinidumpYAML.h:100
static constexpr minidump::StreamType Type
Definition MinidumpYAML.h:97
static constexpr Stream::StreamKind Kind
Definition MinidumpYAML.h:96
minidump::MemoryDescriptor Entry
Definition MinidumpYAML.h:99
A structure containing all data belonging to a single minidump module.
Definition MinidumpYAML.h:74
std::string Name
Definition MinidumpYAML.h:79
static constexpr Stream::StreamKind Kind
Definition MinidumpYAML.h:75
yaml::BinaryRef MiscRecord
Definition MinidumpYAML.h:81
minidump::Module Entry
Definition MinidumpYAML.h:78
static constexpr minidump::StreamType Type
Definition MinidumpYAML.h:76
yaml::BinaryRef CvRecord
Definition MinidumpYAML.h:80
A structure containing all data belonging to a single minidump thread.
Definition MinidumpYAML.h:85
yaml::BinaryRef Stack
Definition MinidumpYAML.h:90
minidump::Thread Entry
Definition MinidumpYAML.h:89
yaml::BinaryRef Context
Definition MinidumpYAML.h:91
static constexpr Stream::StreamKind Kind
Definition MinidumpYAML.h:86
static constexpr minidump::StreamType Type
Definition MinidumpYAML.h:87
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)
Definition MinidumpYAML.h:249
static void output(const MinidumpYAML::BlockStringRef &Text, void *, raw_ostream &OS)
Definition MinidumpYAML.h:244
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 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.