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.