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) {
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 && [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 }
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 }
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...