LLVM: include/llvm/MC/MCDwarf.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_MC_MCDWARF_H
15#define LLVM_MC_MCDWARF_H
16
27#include
28#include
29#include
30#include
31#include
32#include
33
34namespace llvm {
35
36template class ArrayRef;
45
50
51
55 MCSymbol *LineStrLabel = nullptr;
57 bool UseRelocs = false;
58
59public:
60
61
63
65
66
68
69
71
72
74
75
76
78};
79
80
81
82
83
84
85
86
87
89
91
92
94
95
96
97 std::optionalMD5::MD5Result Checksum;
98
99
100
102};
103
104
105
106class MCDwarfLoc {
110
114
115
116#define DWARF2_LINE_DEFAULT_IS_STMT 1
117
118#define DWARF2_FLAG_IS_STMT (1 << 0)
119#define DWARF2_FLAG_BASIC_BLOCK (1 << 1)
120#define DWARF2_FLAG_PROLOGUE_END (1 << 2)
121#define DWARF2_FLAG_EPILOGUE_BEGIN (1 << 3)
122
123private:
126
127 MCDwarfLoc(unsigned fileNum, unsigned line, unsigned column, unsigned flags,
128 unsigned isa, unsigned discriminator)
129 : FileNum(fileNum), Line(line), Column(column), Flags(flags), Isa(isa),
130 Discriminator(discriminator) {}
131
132
133
134
135public:
136
138
139
140 unsigned getLine() const { return Line; }
141
142
143 unsigned getColumn() const { return Column; }
144
145
146 unsigned getFlags() const { return Flags; }
147
148
149 unsigned getIsa() const { return Isa; }
150
151
153
154
155 void setFileNum(unsigned fileNum) { FileNum = fileNum; }
156
157
158 void setLine(unsigned line) { Line = line; }
159
160
162 assert(column <= UINT16_MAX);
163 Column = column;
164 }
165
166
168 assert(flags <= UINT8_MAX);
169 Flags = flags;
170 }
171
172
177
178
180 Discriminator = discriminator;
181 }
182};
183
184
185
186
187
188
191
192private:
193
194
195
196public:
197
199 MCSymbol *lineStreamLabel = nullptr,
200 SMLoc streamLabelDefLoc = {})
203
205
206
207
208
210
211
212
214
215
217
218
220
221
223 Label = EndLabel;
225 }
226
227
228
229
231};
232
233
234
235
236
238public:
239
241 MCLineDivisions[Sec].push_back(LineEntry);
242 }
243
244
245
247
249 using iterator = MCDwarfLineEntryCollection::iterator;
250 using const_iterator = MCDwarfLineEntryCollection::const_iterator;
252
253private:
254
256
257public:
258
260 return MCLineDivisions;
261 }
262};
263
265
266
267
268
270
271
273
275};
276
285
286private:
287 bool HasAllMD5 = true;
288 bool HasAnyMD5 = false;
289
290public:
292
295 std::optionalMD5::MD5Result Checksum,
296 std::optional Source,
298 unsigned FileNumber = 0);
299 LLVM_ABI std::pair<MCSymbol *, MCSymbol *>
301 std::optional &LineStr) const;
302 LLVM_ABI std::pair<MCSymbol *, MCSymbol *>
305 std::optional &LineStr) const;
307 HasAllMD5 = true;
308 HasAnyMD5 = false;
309 }
311 HasAllMD5 &= MD5Used;
312 HasAnyMD5 |= MD5Used;
313 }
315 return MCDwarfFiles.empty() || (HasAllMD5 == HasAnyMD5);
316 }
317
319 std::optionalMD5::MD5Result Checksum,
320 std::optional Source) {
322 RootFile.Name = std::string(FileName);
324 RootFile.Checksum = Checksum;
328 }
329
337
338private:
339 void emitV2FileDirTables(MCStreamer *MCOS) const;
340 void emitV5FileDirTables(MCStreamer *MCOS,
341 std::optional &LineStr) const;
342};
343
346 bool HasSplitLineTable = false;
347
348public:
350 std::optionalMD5::MD5Result Checksum,
351 std::optional Source) {
352 if (!Header.RootFile.Name.empty())
353 return;
354 Header.setRootFile(Directory, FileName, Checksum, Source);
355 }
356
358 std::optionalMD5::MD5Result Checksum,
359 uint16_t DwarfVersion, std::optional Source) {
360 HasSplitLineTable = true;
361 return cantFail(Header.tryGetFile(Directory, FileName, Checksum, Source,
362 DwarfVersion));
363 }
364
367};
368
372
373public:
374
376
377
379 std::optional &LineStr) const;
380
381
385
389
392 std::optionalMD5::MD5Result Checksum,
393 std::optional Source,
395 unsigned FileNumber = 0);
397 std::optionalMD5::MD5Result Checksum,
398 std::optional Source, uint16_t DwarfVersion,
399 unsigned FileNumber = 0) {
401 DwarfVersion, FileNumber));
402 }
403
405 std::optionalMD5::MD5Result Checksum,
406 std::optional Source) {
407 Header.CompilationDir = std::string(Directory);
408 Header.RootFile.Name = std::string(FileName);
409 Header.RootFile.DirIndex = 0;
410 Header.RootFile.Checksum = Checksum;
411 Header.RootFile.Source = Source;
412 Header.trackMD5Usage(Checksum.has_value());
413 Header.HasAnySource |= Source.has_value();
414 }
415
417
418 bool hasRootFile() const { return !Header.RootFile.Name.empty(); }
419
422
423
425
427 return Header.Label;
428 }
429
431 Header.Label = Label;
432 }
433
435 return Header.MCDwarfDirs;
436 }
437
439 return Header.MCDwarfDirs;
440 }
441
443 return Header.MCDwarfFiles;
444 }
445
447 return Header.MCDwarfFiles;
448 }
449
451 return MCLineSections;
452 }
454 return MCLineSections;
455 }
456};
457
459public:
460
462 int64_t LineDelta, uint64_t AddrDelta,
464
465
467 int64_t LineDelta, uint64_t AddrDelta);
468};
469
471public:
472
473
474
475
477};
478
479
480
482private:
483
485
486 unsigned FileNumber;
487
488 unsigned LineNumber;
489
491
492public:
495 : Name(name), FileNumber(fileNumber), LineNumber(lineNumber),
496 Label(label) {}
497
502
503
504
507};
508
509class MCCFIInstruction {
510public:
533
534private:
536 union {
537 struct {
541 struct {
546 struct {
551 } U;
554 std::vector Values;
555 std::string Comment;
556
560 Comment(Comment) {
562 U.RI = {R, O};
563 }
564 MCCFIInstruction(OpType Op, MCSymbol *L, unsigned R1, unsigned R2, SMLoc Loc)
565 : Label(L), Operation(Op), Loc(Loc) {
567 U.RR = {R1, R2};
568 }
569 MCCFIInstruction(OpType Op, MCSymbol *L, unsigned R, int64_t O, unsigned AS,
570 SMLoc Loc)
571 : Label(L), Operation(Op), Loc(Loc) {
574 }
575
576 MCCFIInstruction(OpType Op, MCSymbol *L, MCSymbol *CfiLabel, SMLoc Loc)
577 : Label(L), Operation(Op), Loc(Loc) {
580 }
581
582public:
583
584
589
590
591
593 SMLoc Loc = {}) {
595 }
596
597
598
599
601 SMLoc Loc = {}) {
603 }
604
605
606
607
609 SMLoc Loc = {}) {
611 }
612
613
614
615
616
624
625
626
631
632
633
634
639
640
641
646
647
651
652
656
657
659 SMLoc Loc = {}) {
661 }
662
663
664
665
667 SMLoc Loc = {}) {
669 }
670
671
672
674 SMLoc Loc = {}) {
676 }
677
678
679
681 SMLoc Loc = {}) {
683 }
684
685
689
690
694
695
696
701
702
704 SMLoc Loc = {}) {
706 }
707
712
713
714
719
722
725 return U.RR.Register;
727 return U.RIA.Register;
732 return U.RI.Register;
733 }
734
737 return U.RR.Register2;
738 }
739
742 return U.RIA.AddressSpace;
743 }
744
747 return U.RIA.Offset;
752 return U.RI.Offset;
753 }
754
757 return U.CfiLabel;
758 }
759
762 return StringRef(&Values[0], Values.size());
763 }
764
767};
768
771
783 unsigned RAReg = static_cast<unsigned>(INT_MAX);
786};
787
789public:
790
791
792
794 bool isEH);
797};
798
799}
800
801#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file defines the StringMap class.
This file implements a map that provides insertion order iteration.
PowerPC Reduce CR logical Operation
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Tagged union holding either a T or a Error.
Generic interface to target specific assembler backends.
static MCCFIInstruction createDefCfaRegister(MCSymbol *L, unsigned Register, SMLoc Loc={})
.cfi_def_cfa_register modifies a rule for computing CFA.
Definition MCDwarf.h:592
MCSymbol * getLabel() const
Definition MCDwarf.h:721
static MCCFIInstruction createUndefined(MCSymbol *L, unsigned Register, SMLoc Loc={})
.cfi_undefined From now on the previous value of Register can't be restored anymore.
Definition MCDwarf.h:673
static MCCFIInstruction createGnuArgsSize(MCSymbol *L, int64_t Size, SMLoc Loc={})
A special wrapper for .cfi_escape that indicates GNU_ARGS_SIZE.
Definition MCDwarf.h:703
unsigned getAddressSpace() const
Definition MCDwarf.h:740
static MCCFIInstruction createRestore(MCSymbol *L, unsigned Register, SMLoc Loc={})
.cfi_restore says that the rule for Register is now the same as it was at the beginning of the functi...
Definition MCDwarf.h:666
unsigned getRegister2() const
Definition MCDwarf.h:735
unsigned Register2
Definition MCDwarf.h:548
static MCCFIInstruction createLLVMDefAspaceCfa(MCSymbol *L, unsigned Register, int64_t Offset, unsigned AddressSpace, SMLoc Loc)
.cfi_llvm_def_aspace_cfa defines the rule for computing the CFA to be the result of evaluating the DW...
Definition MCDwarf.h:617
unsigned getRegister() const
Definition MCDwarf.h:723
struct llvm::MCCFIInstruction::@200055141371270236052243057222063103004167154130::@047044346066244333130177035305252275001364321171 RIA
static MCCFIInstruction createRegister(MCSymbol *L, unsigned Register1, unsigned Register2, SMLoc Loc={})
.cfi_register Previous value of Register1 is saved in register Register2.
Definition MCDwarf.h:642
unsigned AddressSpace
Definition MCDwarf.h:544
static MCCFIInstruction cfiDefCfa(MCSymbol *L, unsigned Register, int64_t Offset, SMLoc Loc={})
.cfi_def_cfa defines a rule for computing CFA as: take address from Register and add Offset to it.
Definition MCDwarf.h:585
static MCCFIInstruction createOffset(MCSymbol *L, unsigned Register, int64_t Offset, SMLoc Loc={})
.cfi_offset Previous value of Register is saved at offset Offset from CFA.
Definition MCDwarf.h:627
SMLoc getLoc() const
Definition MCDwarf.h:766
struct llvm::MCCFIInstruction::@200055141371270236052243057222063103004167154130::@302110232020237054304305274237127145366003047031 RR
static MCCFIInstruction createValOffset(MCSymbol *L, unsigned Register, int64_t Offset, SMLoc Loc={})
.cfi_val_offset Previous value of Register is offset Offset from the current CFA register.
Definition MCDwarf.h:715
static MCCFIInstruction createNegateRAStateWithPC(MCSymbol *L, SMLoc Loc={})
.cfi_negate_ra_state_with_pc AArch64 negate RA state with PC.
Definition MCDwarf.h:658
static MCCFIInstruction createNegateRAState(MCSymbol *L, SMLoc Loc={})
.cfi_negate_ra_state AArch64 negate RA state.
Definition MCDwarf.h:653
static MCCFIInstruction createRememberState(MCSymbol *L, SMLoc Loc={})
.cfi_remember_state Save all current rules for all registers.
Definition MCDwarf.h:686
struct llvm::MCCFIInstruction::@200055141371270236052243057222063103004167154130::@264055117225055015257321077345210352011045362110 RI
OpType getOperation() const
Definition MCDwarf.h:720
int64_t Offset
Definition MCDwarf.h:539
StringRef getComment() const
Definition MCDwarf.h:765
OpType
Definition MCDwarf.h:511
@ OpDefCfaRegister
Definition MCDwarf.h:517
@ OpWindowSave
Definition MCDwarf.h:526
@ OpUndefined
Definition MCDwarf.h:524
@ OpGnuArgsSize
Definition MCDwarf.h:529
@ OpLLVMDefAspaceCfa
Definition MCDwarf.h:516
@ OpRegister
Definition MCDwarf.h:525
@ OpRestoreState
Definition MCDwarf.h:514
@ OpDefCfaOffset
Definition MCDwarf.h:518
@ OpNegateRAStateWithPC
Definition MCDwarf.h:528
@ OpOffset
Definition MCDwarf.h:515
@ OpRelOffset
Definition MCDwarf.h:520
@ OpRememberState
Definition MCDwarf.h:513
@ OpValOffset
Definition MCDwarf.h:531
@ OpNegateRAState
Definition MCDwarf.h:527
@ OpRestore
Definition MCDwarf.h:523
@ OpSameValue
Definition MCDwarf.h:512
@ OpDefCfa
Definition MCDwarf.h:519
@ OpLabel
Definition MCDwarf.h:530
@ OpAdjustCfaOffset
Definition MCDwarf.h:521
@ OpEscape
Definition MCDwarf.h:522
StringRef getValues() const
Definition MCDwarf.h:760
static MCCFIInstruction cfiDefCfaOffset(MCSymbol *L, int64_t Offset, SMLoc Loc={})
.cfi_def_cfa_offset modifies a rule for computing CFA.
Definition MCDwarf.h:600
static MCCFIInstruction createEscape(MCSymbol *L, StringRef Vals, SMLoc Loc={}, StringRef Comment="")
.cfi_escape Allows the user to add arbitrary bytes to the unwind info.
Definition MCDwarf.h:697
static MCCFIInstruction createWindowSave(MCSymbol *L, SMLoc Loc={})
.cfi_window_save SPARC register window is saved.
Definition MCDwarf.h:648
static MCCFIInstruction createAdjustCfaOffset(MCSymbol *L, int64_t Adjustment, SMLoc Loc={})
.cfi_adjust_cfa_offset Same as .cfi_def_cfa_offset, but Offset is a relative value that is added/subt...
Definition MCDwarf.h:608
MCSymbol * CfiLabel
Definition MCDwarf.h:550
MCSymbol * getCfiLabel() const
Definition MCDwarf.h:755
static MCCFIInstruction createRestoreState(MCSymbol *L, SMLoc Loc={})
.cfi_restore_state Restore the previously saved state.
Definition MCDwarf.h:691
static MCCFIInstruction createSameValue(MCSymbol *L, unsigned Register, SMLoc Loc={})
.cfi_same_value Current value of Register is the same as in the previous frame.
Definition MCDwarf.h:680
static MCCFIInstruction createRelOffset(MCSymbol *L, unsigned Register, int64_t Offset, SMLoc Loc={})
.cfi_rel_offset Previous value of Register is saved at offset Offset from the current CFA register.
Definition MCDwarf.h:635
unsigned Register
Definition MCDwarf.h:538
int64_t getOffset() const
Definition MCDwarf.h:745
static MCCFIInstruction createLabel(MCSymbol *L, MCSymbol *CfiLabel, SMLoc Loc)
Definition MCDwarf.h:708
Context object for machine code objects.
void maybeSetRootFile(StringRef Directory, StringRef FileName, std::optional< MD5::MD5Result > Checksum, std::optional< StringRef > Source)
Definition MCDwarf.h:349
unsigned getFile(StringRef Directory, StringRef FileName, std::optional< MD5::MD5Result > Checksum, uint16_t DwarfVersion, std::optional< StringRef > Source)
Definition MCDwarf.h:357
LLVM_ABI void Emit(MCStreamer &MCOS, MCDwarfLineTableParams Params, MCSection *Section) const
static LLVM_ABI void Emit(MCObjectStreamer &streamer, MCAsmBackend *MAB, bool isEH)
static LLVM_ABI void encodeAdvanceLoc(MCContext &Context, uint64_t AddrDelta, SmallVectorImpl< char > &OS)
static LLVM_ABI void Emit(MCStreamer *MCOS, MCDwarfLineTableParams Params, int64_t LineDelta, uint64_t AddrDelta)
Utility function to emit the encoding to a streamer.
static LLVM_ABI void encode(MCContext &Context, MCDwarfLineTableParams Params, int64_t LineDelta, uint64_t AddrDelta, SmallVectorImpl< char > &OS)
Utility function to encode a Dwarf pair of LineDelta and AddrDeltas.
Instances of this class represent the line information for the dwarf line table entries.
Definition MCDwarf.h:189
void setEndLabel(MCSymbol *EndLabel)
Definition MCDwarf.h:219
MCSymbol * getLabel() const
Definition MCDwarf.h:204
MCDwarfLineEntry(MCSymbol *label, const MCDwarfLoc loc, MCSymbol *lineStreamLabel=nullptr, SMLoc streamLabelDefLoc={})
Definition MCDwarf.h:198
bool IsEndEntry
Definition MCDwarf.h:216
MCSymbol * LineStreamLabel
Definition MCDwarf.h:209
static LLVM_ABI void make(MCStreamer *MCOS, MCSection *Section)
SMLoc StreamLabelDefLoc
Definition MCDwarf.h:213
StringSaver & getSaver()
Definition MCDwarf.h:64
LLVM_ABI void emitSection(MCStreamer *MCOS)
Emit the .debug_line_str section if appropriate.
LLVM_ABI MCDwarfLineStr(MCContext &Ctx)
Construct an instance that can emit .debug_line_str (for use in a normal v5 line table).
LLVM_ABI SmallString< 0 > getFinalizedData()
Returns finalized section.
LLVM_ABI void emitRef(MCStreamer *MCOS, StringRef Path)
Emit a reference to the string.
LLVM_ABI size_t addString(StringRef Path)
Adds path Path to the line string.
void resetFileTable()
Definition MCDwarf.h:416
bool isMD5UsageConsistent() const
Definition MCDwarf.h:424
const MCDwarfFile & getRootFile() const
Definition MCDwarf.h:421
void setLabel(MCSymbol *Label)
Definition MCDwarf.h:430
const SmallVectorImpl< std::string > & getMCDwarfDirs() const
Definition MCDwarf.h:434
LLVM_ABI void endCurrentSeqAndEmitLineStreamLabel(MCStreamer *MCOS, SMLoc DefLoc, StringRef Name)
void setRootFile(StringRef Directory, StringRef FileName, std::optional< MD5::MD5Result > Checksum, std::optional< StringRef > Source)
Definition MCDwarf.h:404
MCDwarfFile & getRootFile()
Definition MCDwarf.h:420
const MCLineSection & getMCLineSections() const
Definition MCDwarf.h:450
static LLVM_ABI void emit(MCStreamer *MCOS, MCDwarfLineTableParams Params)
bool hasRootFile() const
Definition MCDwarf.h:418
unsigned getFile(StringRef &Directory, StringRef &FileName, std::optional< MD5::MD5Result > Checksum, std::optional< StringRef > Source, uint16_t DwarfVersion, unsigned FileNumber=0)
Definition MCDwarf.h:396
SmallVectorImpl< std::string > & getMCDwarfDirs()
Definition MCDwarf.h:438
SmallVectorImpl< MCDwarfFile > & getMCDwarfFiles()
Definition MCDwarf.h:446
MCLineSection & getMCLineSections()
Definition MCDwarf.h:453
MCSymbol * getLabel() const
Definition MCDwarf.h:426
static LLVM_ABI void emitOne(MCStreamer *MCOS, MCSection *Section, const MCLineSection::MCDwarfLineEntryCollection &LineEntries)
LLVM_ABI Expected< unsigned > tryGetFile(StringRef &Directory, StringRef &FileName, std::optional< MD5::MD5Result > Checksum, std::optional< StringRef > Source, uint16_t DwarfVersion, unsigned FileNumber=0)
LLVM_ABI void emitCU(MCStreamer *MCOS, MCDwarfLineTableParams Params, std::optional< MCDwarfLineStr > &LineStr) const
const SmallVectorImpl< MCDwarfFile > & getMCDwarfFiles() const
Definition MCDwarf.h:442
Instances of this class represent the information from a dwarf .loc directive.
Definition MCDwarf.h:106
friend class MCDwarfLineEntry
Definition MCDwarf.h:125
unsigned getLine() const
Get the Line of this MCDwarfLoc.
Definition MCDwarf.h:140
void setLine(unsigned line)
Set the Line of this MCDwarfLoc.
Definition MCDwarf.h:158
unsigned getIsa() const
Get the Isa of this MCDwarfLoc.
Definition MCDwarf.h:149
void setIsa(unsigned isa)
Set the Isa of this MCDwarfLoc.
Definition MCDwarf.h:173
void setDiscriminator(unsigned discriminator)
Set the Discriminator of this MCDwarfLoc.
Definition MCDwarf.h:179
unsigned getFlags() const
Get the Flags of this MCDwarfLoc.
Definition MCDwarf.h:146
unsigned getColumn() const
Get the Column of this MCDwarfLoc.
Definition MCDwarf.h:143
friend class MCContext
Definition MCDwarf.h:124
void setFlags(unsigned flags)
Set the Flags of this MCDwarfLoc.
Definition MCDwarf.h:167
unsigned getDiscriminator() const
Get the Discriminator of this MCDwarfLoc.
Definition MCDwarf.h:152
void setColumn(unsigned column)
Set the Column of this MCDwarfLoc.
Definition MCDwarf.h:161
unsigned getFileNum() const
Get the FileNum of this MCDwarfLoc.
Definition MCDwarf.h:137
void setFileNum(unsigned fileNum)
Set the FileNum of this MCDwarfLoc.
Definition MCDwarf.h:155
static LLVM_ABI void Emit(MCStreamer *MCOS)
MCGenDwarfLabelEntry(StringRef name, unsigned fileNumber, unsigned lineNumber, MCSymbol *label)
Definition MCDwarf.h:493
StringRef getName() const
Definition MCDwarf.h:498
static LLVM_ABI void Make(MCSymbol *Symbol, MCStreamer *MCOS, SourceMgr &SrcMgr, SMLoc &Loc)
MCSymbol * getLabel() const
Definition MCDwarf.h:501
unsigned getLineNumber() const
Definition MCDwarf.h:500
unsigned getFileNumber() const
Definition MCDwarf.h:499
Instances of this class represent the line information for a compile unit where machine instructions ...
Definition MCDwarf.h:237
const MCLineDivisionMap & getMCLineEntries() const
Definition MCDwarf.h:259
LLVM_ABI void addEndEntry(MCSymbol *EndLabel)
MapVector< MCSection *, MCDwarfLineEntryCollection > MCLineDivisionMap
Definition MCDwarf.h:251
MCDwarfLineEntryCollection::const_iterator const_iterator
Definition MCDwarf.h:250
MCDwarfLineEntryCollection::iterator iterator
Definition MCDwarf.h:249
void addLineEntry(const MCDwarfLineEntry &LineEntry, MCSection *Sec)
Definition MCDwarf.h:240
std::vector< MCDwarfLineEntry > MCDwarfLineEntryCollection
Definition MCDwarf.h:248
Streaming object file generation interface.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Streaming machine code generation interface.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
This class implements a map that also provides access to all stored values in a deterministic order.
Wrapper class representing virtual and physical registers.
Represents a location in source code.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
This owns the files read by a parser, handles include stacks, and handles diagnostic wrangling.
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
StringRef - Represent a constant reference to a string, i.e.
Saves strings in the provided stable storage and returns a StringRef with a stable character pointer.
Utility for building string tables with deduplicated suffixes.
This class implements an extremely fast bulk output stream that can only output to a stream.
LLVM_ABI MCSymbol * emitListsTableHeaderStart(MCStreamer &S)
This is an optimization pass for GlobalISel generic memory operations.
bool isa(const From &Val)
isa - Return true if the parameter to the template is an instance of one of the template type argu...
void cantFail(Error Err, const char *Msg=nullptr)
Report a fatal error if Err is a failure value.
DWARFExpression::Operation Op
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.
Instances of this class represent the name of the dwarf .file directive and its associated dwarf file...
Definition MCDwarf.h:88
std::optional< MD5::MD5Result > Checksum
The MD5 checksum, if there is one.
Definition MCDwarf.h:97
std::string Name
Definition MCDwarf.h:90
std::optional< StringRef > Source
The source code of the file.
Definition MCDwarf.h:101
unsigned DirIndex
Definition MCDwarf.h:93
bool IsSimple
Definition MCDwarf.h:782
MCDwarfFrameInfo()=default
const MCSymbol * Personality
Definition MCDwarf.h:774
bool IsBKeyFrame
Definition MCDwarf.h:784
MCSymbol * End
Definition MCDwarf.h:773
bool IsSignalFrame
Definition MCDwarf.h:781
unsigned PersonalityEncoding
Definition MCDwarf.h:778
uint64_t CompactUnwindEncoding
Definition MCDwarf.h:780
unsigned RAReg
Definition MCDwarf.h:783
MCSymbol * Begin
Definition MCDwarf.h:772
std::vector< MCCFIInstruction > Instructions
Definition MCDwarf.h:776
bool IsMTETaggedFrame
Definition MCDwarf.h:785
unsigned LsdaEncoding
Definition MCDwarf.h:779
const MCSymbol * Lsda
Definition MCDwarf.h:775
unsigned CurrentCfaRegister
Definition MCDwarf.h:777
uint8_t DWARF2LineOpcodeBase
First special line opcode - leave room for the standard opcodes.
Definition MCDwarf.h:269
uint8_t DWARF2LineRange
Range of line offsets in a special line info. opcode.
Definition MCDwarf.h:274
int8_t DWARF2LineBase
Minimum line offset in a special line info.
Definition MCDwarf.h:272