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) {

573 U.RIA = {R, O, AS};

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