LLVM: include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_DEBUGINFO_DWARF_DWARFACCELERATORTABLE_H

10#define LLVM_DEBUGINFO_DWARF_DWARFACCELERATORTABLE_H

11

19#include

20#include

21

22namespace llvm {

23

26

27

28

29

30

31

32

34protected:

37

38public:

39

41 protected:

43

45

46

52

53

54 public:

55

56

57

58 virtual std::optional<uint64_t> getCUOffset() const = 0;

59

60

61

62

64

65 return std::nullopt;

66 }

67

68

69

70

72

73 return std::nullopt;

74 }

75

76

77

78

79 virtual std::optionaldwarf::Tag getTag() const = 0;

80

81

82

83

85 };

86

91

94

97};

98

99

100

102 struct Header {

109

111 };

112

113 struct HeaderData {

116

119

120 LLVM_ABI std::optional<uint64_t>

121 extractOffset(std::optional Value) const;

122 };

123

124 Header Hdr;

125 HeaderData HdrData;

127 uint32_t HashDataEntryLength;

128 bool IsValid = false;

129

130

131

134

135

136

137 std::optional<uint32_t> readU32FromAccel(uint64_t &Offset,

138 bool UseRelocation = false) const;

139

140

141 std::optional

142 readStringFromStrSection(uint64_t StringSectionOffset) const;

143

144

145 uint64_t getBucketBase() const { return sizeof(Hdr) + Hdr.HeaderDataLength; }

146

147

149 return getBucketBase() + I * 4;

150 }

151

152

154

155

156 std::optional<uint64_t> getIthHashBase(uint32_t I) const {

157 if (I < Hdr.HashCount)

158 return getHashBase() + I * 4;

159 return std::nullopt;

160 }

161

162

163 uint64_t getOffsetBase() const { return getHashBase() + getNumHashes() * 4; }

164

165

166 uint64_t getEntriesBase() const {

168 }

169

170

171 std::optional<uint64_t> getIthOffsetBase(uint32_t I) const {

172 if (I < Hdr.HashCount)

173 return getOffsetBase() + I * 4;

174 return std::nullopt;

175 }

176

177

180 }

181

182

183

184 bool wouldHashBeInBucket(uint32_t Hash, uint32_t BucketIdx) const {

185 return hashToBucketIdx(Hash) == BucketIdx;

186 }

187

188

189

190 std::optional<uint32_t> readIthBucket(uint32_t I) const {

192 return readU32FromAccel(Offset);

193 }

194

195

196 std::optional<uint32_t> readIthHash(uint32_t I) const {

197 std::optional<uint64_t> OptOffset = getIthHashBase(I);

198 if (OptOffset)

199 return readU32FromAccel(*OptOffset);

200 return std::nullopt;

201 }

202

203

204 std::optional<uint32_t> readIthOffset(uint32_t I) const {

205 std::optional<uint64_t> OptOffset = getIthOffsetBase(I);

206 if (OptOffset)

207 return readU32FromAccel(*OptOffset);

208 return std::nullopt;

209 }

210

211

212

213 std::optional<uint32_t> readStringOffsetAt(uint64_t &Offset) const {

214 return readU32FromAccel(Offset, true);

215 }

216

217

218

219 std::optional<uint32_t> idxOfHashInBucket(uint32_t HashToFind,

221

222public:

223

226

229

230 public:

231 std::optional<uint64_t> getCUOffset() const override;

232

233

234

235

236

238

239 std::optionaldwarf::Tag getTag() const override;

240

241

242

243 std::optional lookup(HeaderData::AtomType Atom) const;

244

247 };

248

249

252 Entry> {

255

256 public:

257

260

262 uint64_t OffsetCopy = Offset;

263 Current.extract(&OffsetCopy);

264 return Current;

265 }

267 Offset += Current.Table.getHashDataEntryLength();

268 return *this;

269 }

272 return A.Offset == B.Offset;

273 }

274 };

275

287

288

291 EntryWithName> {

292 constexpr static auto EndMarker = std::numeric_limits<uint64_t>::max();

293

297 uint32_t NumEntriesToCome = 0;

298

299 void setToEnd() { Offset = EndMarker; }

300 bool isEnd() const { return Offset == EndMarker; }

302 return Current.BaseEntry.Table;

303 }

304

305

306

307 LLVM_ABI void prepareNextEntryOrEnd();

308

309

310

311

312

313

314

315 void prepareNextStringOrEnd();

316

317 public:

319

321 prepareNextEntryOrEnd();

322 return *this;

323 }

326 assert(!isEnd() && "dereferencing end iterator");

327 return Current;

328 }

329 };

330

334

336 uint32_t getNumBuckets() const;

337 uint32_t getNumHashes() const;

339 uint32_t getHeaderDataLength() const;

340

341

343

344

345

347

348

349

353

354 bool validateForms();

355

356

357

358

359

360

361

362

363

364 std::pair<uint64_t, dwarf::Tag> readAtoms(uint64_t *HashDataOffset);

366

367

369

370

374};

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

398public:

402

403

420

421

425

428

431 return LHS.Index == RHS.Index && LHS.Form == RHS.Form;

432 }

433 };

434

435

449

450

454

456

457 public:

459 std::optional<uint64_t> getCUOffset() const override;

460 std::optional<uint64_t> getLocalTUOffset() const override;

461 std::optional<uint64_t> getForeignTUTypeSignature() const override;

462 std::optionaldwarf::Tag getTag() const override { return tag(); }

463

464

465

466

467 std::optional<uint64_t> getRelatedCUOffset() const;

468

469

470

471

472

473

474

475

476

477

478 std::optional<uint64_t> getCUIndex() const;

479

480

481

482

483 std::optional<uint64_t> getRelatedCUIndex() const;

484

485

486

487

488

489

490

491 std::optional<uint64_t> getTUIndex() const;

492

493

494

496

497

498 std::optional<uint64_t> getDIEUnitOffset() const;

499

500

501

502 bool hasParentInformation() const;

503

504

505

506

507

509

510

511

513

514

515

517

520

523 };

524

525

526

528 public:

530

532 std::error_code convertToErrorCode() const override;

533 };

534

535private:

536

537 struct AbbrevMapInfo {

538 LLVM_ABI static Abbrev getEmptyKey();

539 LLVM_ABI static Abbrev getTombstoneKey();

540 static unsigned getHashValue(uint32_t Code) {

542 }

543 static unsigned getHashValue(const Abbrev &Abbr) {

544 return getHashValue(Abbr.Code);

545 }

546 static bool isEqual(uint32_t LHS, const Abbrev &RHS) {

547 return LHS == RHS.Code;

548 }

549 static bool isEqual(const Abbrev &LHS, const Abbrev &RHS) {

550 return LHS.Code == RHS.Code;

551 }

552 };

553

554public:

555

556

559

563

564 public:

567 : StrData(StrData), Index(Index), StringOffset(StringOffset),

568 EntryOffset(EntryOffset) {}

569

570

572

573

575

576

577

580 return StrData.getCStr(&Off);

581 }

582

583

584

585

587

588

589

590 StringRef Data = StrData.getData().substr(StringOffset);

591 size_t TargetSize = Target.size();

592 return Data.size() > TargetSize && Data[TargetSize] &&

593 strncmp(Data.data(), Target.data(), TargetSize) == 0;

594 }

595

596

598 };

599

600

601

610

611

612

617

618

619

622

629 std::optional<uint32_t> Hash) const;

631

633

636

638

639 public:

641 : Section(Section), Base(Base) {}

642

643

645

646

648

649

652

653

656

657

660

661

662

663

666

667

668

670

671

672

673

674

676

678

680 return Abbrevs;

681 }

682

684

685

686

689 return getEntry(&OffsetFromSection);

690 }

691

692

694

697

702 Hdr.UnitLength;

703 }

705

707 };

708

710 public:

716

717 private:

718

719

720

721 const NameIndex *CurrentIndex = nullptr;

722

723

724

725 bool IsLocal;

726

727 std::optional CurrentEntry;

728 uint64_t DataOffset = 0;

729 std::string Key;

730 std::optional<uint32_t> Hash;

731

732 bool getEntryAtCurrentOffset();

733 std::optional<uint64_t> findEntryOffsetInCurrentIndex();

734 bool findInCurrentIndex();

735 void searchFromStartOfCurrentIndex();

737

738

740

741 public:

742

743

744

746

747

748

750

751

753

756 next();

757 return *this;

758 }

761 next();

762 return I;

763 }

764

766 return A.CurrentIndex == B.CurrentIndex && A.DataOffset == B.DataOffset;

767 }

769 return !(A == B);

770 }

771 };

772

774

775

777

778

780

781 void next() {

782 assert(CurrentName <= CurrentIndex->getNameCount());

783 ++CurrentName;

784 }

785

786 public:

793

794

795

797 : CurrentIndex(CurrentIndex), CurrentName(CurrentName) {}

798

800 return CurrentIndex->getNameTableEntry(CurrentName);

801 }

803 next();

804 return *this;

805 }

808 next();

809 return I;

810 }

811

812

814 return CurrentIndex->getNameTableEntry(idx + 1);

815 }

816

818 assert(CurrentIndex == other.CurrentIndex);

819 return this->CurrentName - other.CurrentName;

820 }

821

823 return A.CurrentIndex == B.CurrentIndex && A.CurrentName == B.CurrentName;

824 }

826 return !(A == B);

827 }

828 };

829

830private:

833

834public:

838

841

842

844

848

849

850

851 const NameIndex *getCUOrTUNameIndex(uint64_t UnitOffset);

852};

853

854

855

856namespace dwarf {

857LLVM_ABI DWARFDebugNames::DWARFDebugNamesOffsets

859 const DWARFDebugNames::Header &Hdr);

860}

861

862

863

864

865

867

878

879

880

881

882LLVM_ABI std::optional

884

885}

886

887#endif

static std::optional< unsigned > getTag(const TargetRegisterInfo *TRI, const MachineInstr &MI, const LoadInfo &LI)

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

static bool isEqual(const Function &Caller, const Function &Callee)

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")

This file defines the DenseSet and SmallDenseSet classes.

This file contains constants used for implementing Dwarf debug support.

static bool lookup(const GsymReader &GR, DataExtractor &Data, uint64_t &Offset, uint64_t BaseAddr, uint64_t Addr, SourceLocations &SrcLocs, llvm::Error &Err)

A Lookup helper functions.

This file defines the SmallString class.

This file defines the SmallVector class.

This class holds an abstract representation of an Accelerator Table, consisting of a sequence of buck...

Apple-specific implementation of an Accelerator Entry.

Definition DWARFAcceleratorTable.h:224

friend class AppleAcceleratorTable

Definition DWARFAcceleratorTable.h:245

std::optional< uint64_t > getDIESectionOffset() const

Returns the Section Offset of the Debug Info Entry associated with this Accelerator Entry or std::nul...

std::optional< uint64_t > getCUOffset() const override

Returns the Offset of the Compilation Unit associated with this Accelerator Entry or std::nullopt if ...

friend class ValueIterator

Definition DWARFAcceleratorTable.h:246

An iterator for all entries in the table.

Definition DWARFAcceleratorTable.h:291

bool operator==(const Iterator &It) const

Definition DWARFAcceleratorTable.h:324

const EntryWithName & operator*() const

Definition DWARFAcceleratorTable.h:325

Iterator & operator++()

Definition DWARFAcceleratorTable.h:320

LLVM_ABI Iterator(const AppleAcceleratorTable &Table, bool SetEnd=false)

const Entry & operator*()

Definition DWARFAcceleratorTable.h:261

LLVM_ABI SameNameIterator(const AppleAcceleratorTable &AccelTable, uint64_t DataOffset)

Construct a new iterator for the entries at DataOffset.

SameNameIterator & operator++()

Definition DWARFAcceleratorTable.h:266

friend bool operator==(const SameNameIterator &A, const SameNameIterator &B)

Definition DWARFAcceleratorTable.h:270

AppleAcceleratorTable(const DWARFDataExtractor &AccelSection, DataExtractor StringSection)

Definition DWARFAcceleratorTable.h:331

uint32_t getNumBuckets() const

bool containsAtomType(HeaderData::AtomType AtomTy) const

Returns true iff AtomTy is one of the atoms available in Entries of this table.

Definition DWARFAcceleratorTable.h:350

uint32_t getNumHashes() const

uint32_t getHashDataEntryLength() const

Returns the size of one HashData entry.

Definition DWARFAcceleratorTable.h:342

void dump(raw_ostream &OS) const override

auto entries() const

Lookup all entries in the accelerator table.

Definition DWARFAcceleratorTable.h:371

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

An abstract class representing a single entry in the accelerator tables.

Definition DWARFAcceleratorTable.h:40

Entry & operator=(Entry &&)=default

ArrayRef< DWARFFormValue > getValues() const

Returns the raw values of fields in the Accelerator Entry.

Definition DWARFAcceleratorTable.h:84

SmallVector< DWARFFormValue, 3 > Values

Definition DWARFAcceleratorTable.h:42

Entry(const Entry &)=default

virtual std::optional< uint64_t > getForeignTUTypeSignature() const

Returns the type signature of the Type Unit associated with this Accelerator Entry or std::nullopt if...

Definition DWARFAcceleratorTable.h:71

virtual std::optional< uint64_t > getLocalTUOffset() const

Returns the Offset of the Type Unit associated with this Accelerator Entry or std::nullopt if the Typ...

Definition DWARFAcceleratorTable.h:63

Entry & operator=(const Entry &)=default

virtual std::optional< uint64_t > getCUOffset() const =0

Returns the Offset of the Compilation Unit associated with this Accelerator Entry or std::nullopt if ...

virtual std::optional< dwarf::Tag > getTag() const =0

Returns the Tag of the Debug Info Entry associated with this Accelerator Entry or std::nullopt if the...

DWARFAcceleratorTable(const DWARFDataExtractor &AccelSection, DataExtractor StringSection)

Definition DWARFAcceleratorTable.h:87

virtual Error extract()=0

virtual void dump(raw_ostream &OS) const =0

void operator=(const DWARFAcceleratorTable &)=delete

DataExtractor StringSection

Definition DWARFAcceleratorTable.h:36

virtual ~DWARFAcceleratorTable()

DWARFDataExtractor AccelSection

Definition DWARFAcceleratorTable.h:35

DWARFAcceleratorTable(const DWARFAcceleratorTable &)=delete

DWARF v5-specific implementation of an Accelerator Entry.

Definition DWARFAcceleratorTable.h:451

friend class NameIndex

Definition DWARFAcceleratorTable.h:521

const Abbrev & getAbbrev() const

Return the Abbreviation that can be used to interpret the raw values of this Accelerator Entry.

Definition DWARFAcceleratorTable.h:512

const NameIndex * getNameIndex() const

Definition DWARFAcceleratorTable.h:458

dwarf::Tag tag() const

.debug_names-specific getter, which always succeeds (DWARF v5 index entries always have a tag).

Definition DWARFAcceleratorTable.h:495

std::optional< dwarf::Tag > getTag() const override

Returns the Tag of the Debug Info Entry associated with this Accelerator Entry or std::nullopt if the...

Definition DWARFAcceleratorTable.h:462

friend class ValueIterator

Definition DWARFAcceleratorTable.h:522

Represents a single accelerator table within the DWARF v5 .debug_names section.

Definition DWARFAcceleratorTable.h:613

friend class DWARFDebugNames

Definition DWARFAcceleratorTable.h:706

uint64_t getNextUnitOffset() const

Definition DWARFAcceleratorTable.h:700

NameIterator begin() const

Definition DWARFAcceleratorTable.h:695

uint64_t getUnitOffset() const

Definition DWARFAcceleratorTable.h:699

uint32_t getCUCount() const

Definition DWARFAcceleratorTable.h:651

Header getHeader() const

Returns Hdr field.

Definition DWARFAcceleratorTable.h:644

LLVM_ABI Expected< Entry > getEntry(uint64_t *Offset) const

NameIterator end() const

Definition DWARFAcceleratorTable.h:696

NameIndex(const DWARFDebugNames &Section, uint64_t Base)

Definition DWARFAcceleratorTable.h:640

uint32_t getNameCount() const

Definition DWARFAcceleratorTable.h:677

const DenseSet< Abbrev, AbbrevMapInfo > & getAbbrevs() const

Definition DWARFAcceleratorTable.h:679

uint32_t getForeignTUCount() const

Definition DWARFAcceleratorTable.h:659

uint32_t getBucketCount() const

Definition DWARFAcceleratorTable.h:665

DWARFDebugNamesOffsets getOffsets() const

Returns Offsets field.

Definition DWARFAcceleratorTable.h:647

uint32_t getLocalTUCount() const

Definition DWARFAcceleratorTable.h:655

Expected< Entry > getEntryAtRelativeOffset(uint64_t Offset) const

Returns the Entry at the relative Offset from the start of the Entry pool.

Definition DWARFAcceleratorTable.h:687

NameTableEntry operator*() const

Definition DWARFAcceleratorTable.h:799

difference_type operator-(const NameIterator &other) const

Computes difference between iterators (used in parallelForEach).

Definition DWARFAcceleratorTable.h:817

size_t size_type

Definition DWARFAcceleratorTable.h:787

friend bool operator==(const NameIterator &A, const NameIterator &B)

Definition DWARFAcceleratorTable.h:822

NameIterator operator++(int)

Definition DWARFAcceleratorTable.h:806

NameIterator & operator++()

Definition DWARFAcceleratorTable.h:802

NameTableEntry reference

Definition DWARFAcceleratorTable.h:792

NameIterator(const NameIndex *CurrentIndex, uint32_t CurrentName)

Creates an iterator whose initial position is name CurrentName in CurrentIndex.

Definition DWARFAcceleratorTable.h:796

NameTableEntry * pointer

Definition DWARFAcceleratorTable.h:791

std::input_iterator_tag iterator_category

Definition DWARFAcceleratorTable.h:788

reference operator[](size_type idx)

Accesses entry at specific index (1-based internally, 0-based externally).

Definition DWARFAcceleratorTable.h:813

uint32_t difference_type

Definition DWARFAcceleratorTable.h:790

NameTableEntry value_type

Definition DWARFAcceleratorTable.h:789

friend bool operator!=(const NameIterator &A, const NameIterator &B)

Definition DWARFAcceleratorTable.h:825

A single entry in the Name Table (DWARF v5 sect.

Definition DWARFAcceleratorTable.h:557

uint64_t getStringOffset() const

Returns the offset of the name of the described entities.

Definition DWARFAcceleratorTable.h:574

uint64_t getEntryOffset() const

Returns the offset of the first Entry in the list.

Definition DWARFAcceleratorTable.h:597

bool sameNameAs(StringRef Target) const

Compares the name of this entry against Target, returning true if they are equal.

Definition DWARFAcceleratorTable.h:586

NameTableEntry(const DataExtractor &StrData, uint32_t Index, uint64_t StringOffset, uint64_t EntryOffset)

Definition DWARFAcceleratorTable.h:565

const char * getString() const

Return the string referenced by this name table entry or nullptr if the string offset is not valid.

Definition DWARFAcceleratorTable.h:578

uint32_t getIndex() const

Return the index of this name in the parent Name Index.

Definition DWARFAcceleratorTable.h:571

Error returned by NameIndex::getEntry to report it has reached the end of the entry list.

Definition DWARFAcceleratorTable.h:527

void log(raw_ostream &OS) const override

Print an error message to an output stream.

Definition DWARFAcceleratorTable.h:531

static char ID

Definition DWARFAcceleratorTable.h:529

value_type & reference

Definition DWARFAcceleratorTable.h:715

friend bool operator==(const ValueIterator &A, const ValueIterator &B)

Definition DWARFAcceleratorTable.h:765

friend bool operator!=(const ValueIterator &A, const ValueIterator &B)

Definition DWARFAcceleratorTable.h:768

Entry value_type

Definition DWARFAcceleratorTable.h:712

std::ptrdiff_t difference_type

Definition DWARFAcceleratorTable.h:713

ValueIterator operator++(int)

Definition DWARFAcceleratorTable.h:759

ValueIterator()=default

End marker.

LLVM_ABI ValueIterator(const DWARFDebugNames &AccelTable, StringRef Key)

Create a "begin" iterator for looping over all entries in the accelerator table matching Key.

const Entry & operator*() const

Definition DWARFAcceleratorTable.h:754

value_type * pointer

Definition DWARFAcceleratorTable.h:714

std::input_iterator_tag iterator_category

Definition DWARFAcceleratorTable.h:711

ValueIterator & operator++()

Definition DWARFAcceleratorTable.h:755

const_iterator end() const

Definition DWARFAcceleratorTable.h:847

SmallVector< NameIndex, 0 >::const_iterator const_iterator

Definition DWARFAcceleratorTable.h:845

const_iterator begin() const

Definition DWARFAcceleratorTable.h:846

DWARFDebugNames(const DWARFDataExtractor &AccelSection, DataExtractor StringSection)

Definition DWARFAcceleratorTable.h:835

iterator_range< ValueIterator > equal_range(StringRef Key) const

Look up all entries in the accelerator table matching Key.

void dump(raw_ostream &OS) const override

Implements a dense probed hash-table based set.

Base class for user error types.

Lightweight error class with error context and mandatory checking.

Tagged union holding either a T or a Error.

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.

StringRef - Represent a constant reference to a string, i.e.

Target - Wrapper for Target specific information.

LLVM Value Representation.

CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...

A range adaptor for a pair of iterators.

This class implements an extremely fast bulk output stream that can only output to a stream.

uint8_t getUnitLengthFieldByteSize(DwarfFormat Format)

Get the byte size of the unit length field depending on the DWARF format.

LLVM_ABI DWARFDebugNames::DWARFDebugNamesOffsets findDebugNamesOffsets(uint64_t EndOfHeaderOffset, const DWARFDebugNames::Header &Hdr)

DwarfFormat

Constants that define the DWARF format as 32 or 64 bit.

This is an optimization pass for GlobalISel generic memory operations.

void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)

iterator_range< T > make_range(T x, T y)

Convenience function for iterating over sub-ranges.

FunctionAddr VTableAddr uintptr_t uintptr_t Version

auto make_first_range(ContainerTy &&c)

Given a container of pairs, return a range over the first elements.

LLVM_ABI std::optional< StringRef > StripTemplateParameters(StringRef Name)

If Name is the name of a templated function that includes template parameters, returns a substring of...

LLVM_ATTRIBUTE_VISIBILITY_DEFAULT AnalysisKey InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key

FunctionAddr VTableAddr uintptr_t uintptr_t Data

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

LLVM_ABI std::optional< ObjCSelectorNames > getObjCNamesIfSelector(StringRef Name)

If Name is the AT_name of a DIE which refers to an Objective-C selector, returns an instance of ObjCS...

bool is_contained(R &&Range, const E &Element)

Returns true if Element is found in Range.

Implement std::hash so that hash_code can be used in STL containers.

Definition DWARFAcceleratorTable.h:276

EntryWithName(const AppleAcceleratorTable &Table)

Definition DWARFAcceleratorTable.h:277

uint32_t StrOffset

Definition DWARFAcceleratorTable.h:285

std::optional< StringRef > readName() const

Definition DWARFAcceleratorTable.h:280

Entry BaseEntry

Definition DWARFAcceleratorTable.h:284

Abbreviation describing the encoding of Name Index entries.

Definition DWARFAcceleratorTable.h:436

uint32_t Code

< Abbreviation offset in the .debug_names section

Definition DWARFAcceleratorTable.h:438

Abbrev(uint32_t Code, dwarf::Tag Tag, uint64_t AbbrevOffset, std::vector< AttributeEncoding > Attributes)

Definition DWARFAcceleratorTable.h:442

uint64_t AbbrevOffset

Definition DWARFAcceleratorTable.h:437

std::vector< AttributeEncoding > Attributes

List of index attributes.

Definition DWARFAcceleratorTable.h:440

dwarf::Tag Tag

Dwarf Tag of the described entity.

Definition DWARFAcceleratorTable.h:439

friend bool operator==(const AttributeEncoding &LHS, const AttributeEncoding &RHS)

Definition DWARFAcceleratorTable.h:429

dwarf::Index Index

Definition DWARFAcceleratorTable.h:423

dwarf::Form Form

Definition DWARFAcceleratorTable.h:424

constexpr AttributeEncoding(dwarf::Index Index, dwarf::Form Form)

Definition DWARFAcceleratorTable.h:426

Offsets for the start of various important tables from the start of the section.

Definition DWARFAcceleratorTable.h:602

uint64_t EntryOffsetsBase

Definition DWARFAcceleratorTable.h:607

uint64_t HashesBase

Definition DWARFAcceleratorTable.h:605

uint64_t BucketsBase

Definition DWARFAcceleratorTable.h:604

uint64_t StringOffsetsBase

Definition DWARFAcceleratorTable.h:606

uint64_t EntriesBase

Definition DWARFAcceleratorTable.h:608

uint64_t CUsBase

Definition DWARFAcceleratorTable.h:603

An information struct used to provide DenseMap with the various necessary components for a given valu...

StringRef ClassName

For "-[A(Category) method:]", this would be "A(category)".

Definition DWARFAcceleratorTable.h:872

std::optional< std::string > MethodNameNoCategory

For "-[A(Category) method:]", this would be "A method:".

Definition DWARFAcceleratorTable.h:876

StringRef Selector

For "-[A(Category) method:]", this would be "method:".

Definition DWARFAcceleratorTable.h:870

std::optional< StringRef > ClassNameNoCategory

For "-[A(Category) method:]", this would be "A".

Definition DWARFAcceleratorTable.h:874

A helper struct providing information about the byte size of DW_FORM values that vary in size dependi...