LLVM: include/llvm/ObjectYAML/ELFYAML.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_OBJECTYAML_ELFYAML_H
16#define LLVM_OBJECTYAML_ELFYAML_H
17
24#include
25#include
26#include
27#include
28
29namespace llvm {
31
34
35
36
37
38
39
40
41
42
43
44
51
53
59
65
72
75
76template
81
85 return sizeof(typename ELFT::Sym);
87 return sizeof(typename ELFT::Word);
89 return sizeof(typename ELFT::Rel);
91 return sizeof(typename ELFT::Rela);
93 return sizeof(typename ELFT::Relr);
95 return sizeof(typename ELFT::Dyn);
97 return sizeof(typename ELFT::Word);
99 return sizeof(typename ELFT::Word);
101 return sizeof(typename ELFT::Half);
104 default:
105 if (SecName == ".debug_str")
106 return 1;
107 return 0;
108 }
109}
110
111
112
123
124 std::optionalllvm::yaml::Hex64 EPhOff;
126 std::optionalllvm::yaml::Hex16 EPhNum;
128 std::optionalllvm::yaml::Hex64 EShOff;
129 std::optionalllvm::yaml::Hex16 EShNum;
131};
132
136
141 std::optional<ELF_SHN> Index;
143 std::optionalllvm::yaml::Hex64 Value;
144 std::optionalllvm::yaml::Hex64 Size;
145 std::optional<uint8_t> Other;
146
148};
149
153
157};
158
166 std::optionalllvm::yaml::Hex64 Hash;
167 };
170
176
178 std::optional<std::vector> BBRanges;
179
182 return 0;
183 return BBRanges->front().BaseAddress;
184 }
185
186
189 return false;
191 if (!BBR.BBEntries)
192 continue;
195 return true;
196 }
197 return false;
198 }
199};
200
210 std::optional<std::vector> Successors;
211 };
214};
215
220
226
256
259 std::optionalllvm::yaml::Hex64 Offset;
260
261
262
264
267};
268
271 std::optional<ELF_SHF> Flags;
272 std::optionalllvm::yaml::Hex64 Address;
275 std::optionalllvm::yaml::Hex64 EntSize;
276
277 std::optionalyaml::BinaryRef Content;
278 std::optionalllvm::yaml::Hex64 Size;
279
280
282
284
288
289
290
291
292 virtual std::vector<std::pair<StringRef, bool>> getEntries() const {
293 return {};
294 };
295
296
297
298
299
301
302
303
304 std::optionalllvm::yaml::Hex64 ShName;
305
306
307
308 std::optionalllvm::yaml::Hex64 ShOffset;
309
310
311
312 std::optionalllvm::yaml::Hex64 ShSize;
313
314
315 std::optionalllvm::yaml::Hex64 ShFlags;
316
317
318
319
320
322};
323
324
325
326
328 std::optionalyaml::BinaryRef Pattern;
330
332
334};
335
339
343
344 std::optional<std::vector> Sections;
345 std::optional<std::vector> Excluded;
347
355
357
359};
360
362 std::optional<std::vector> Entries;
363 std::optional<std::vector> PGOAnalyses;
364
366
367 std::vector<std::pair<StringRef, bool>> getEntries() const override {
368 return {{"Entries", Entries.has_value()}};
369 };
370
374};
375
377 std::optional<std::vector> Entries;
378
380
381 std::vector<std::pair<StringRef, bool>> getEntries() const override {
382 return {{"Entries", Entries.has_value()}};
383 };
384
388
390 return Name == ".stack_sizes";
391 }
392};
393
395 std::optional<std::vector> Entries;
396
398
399 std::vector<std::pair<StringRef, bool>> getEntries() const override {
400 return {{"Entries", Entries.has_value()}};
401 };
402
404};
405
407 std::optionalllvm::yaml::Hex64 Info;
408
410
414
415
417};
418
424
426 std::optional<std::vectorELFYAML::NoteEntry> Notes;
427
429
430 std::vector<std::pair<StringRef, bool>> getEntries() const override {
431 return {{"Notes", Notes.has_value()}};
432 };
433
435};
436
438 std::optional<std::vector<uint32_t>> Bucket;
439 std::optional<std::vector<uint32_t>> Chain;
440
441 std::vector<std::pair<StringRef, bool>> getEntries() const override {
442 return {{"Bucket", Bucket.has_value()}, {"Chain", Chain.has_value()}};
443 };
444
445
446
447 std::optionalllvm::yaml::Hex64 NBucket;
448 std::optionalllvm::yaml::Hex64 NChain;
449
451
453};
454
456
457
458
459 std::optionalllvm::yaml::Hex32 NBuckets;
460
461
462
464
465
466
467
468
470
471
473};
474
477 std::optional<std::vectorllvm::yaml::Hex64> BloomFilter;
478 std::optional<std::vectorllvm::yaml::Hex32> HashBuckets;
479 std::optional<std::vectorllvm::yaml::Hex32> HashValues;
480
482
483 std::vector<std::pair<StringRef, bool>> getEntries() const override {
484 return {{"Header", Header.has_value()},
485 {"BloomFilter", BloomFilter.has_value()},
486 {"HashBuckets", HashBuckets.has_value()},
487 {"HashValues", HashValues.has_value()}};
488 };
489
491};
492
499
504};
505
507 std::optional<std::vector> VerneedV;
508 std::optionalllvm::yaml::Hex64 Info;
509
511
512 std::vector<std::pair<StringRef, bool>> getEntries() const override {
513 return {{"Dependencies", VerneedV.has_value()}};
514 };
515
519};
520
522 std::optional<std::vector> Symbols;
523
525
526 std::vector<std::pair<StringRef, bool>> getEntries() const override {
527 return {{"Symbols", Symbols.has_value()}};
528 };
529
531};
532
537
539 std::optional<std::vector> Options;
540
542
543 std::vector<std::pair<StringRef, bool>> getEntries() const override {
544 return {{"Options", Options.has_value()}};
545 };
546
550};
551
553 std::optional<std::vector> Libs;
554
556
557 std::vector<std::pair<StringRef, bool>> getEntries() const override {
558 return {{"Libraries", Libs.has_value()}};
559 };
560
564};
565
566
571
573 std::optional<std::vector> Entries;
574
576
577 std::vector<std::pair<StringRef, bool>> getEntries() const override {
578 return {{"Entries", Entries.has_value()}};
579 };
580
584};
585
587 std::optional<std::vector<uint16_t>> Entries;
588
590
591 std::vector<std::pair<StringRef, bool>> getEntries() const override {
592 return {{"Entries", Entries.has_value()}};
593 };
594
596};
597
606
608 std::optional<std::vector> Entries;
609 std::optionalllvm::yaml::Hex64 Info;
610
612
613 std::vector<std::pair<StringRef, bool>> getEntries() const override {
614 return {{"Entries", Entries.has_value()}};
615 };
616
618};
619
621
622
623 std::optional<std::vector> Members;
625
627
628 std::vector<std::pair<StringRef, bool>> getEntries() const override {
629 return {{"Members", Members.has_value()}};
630 };
631
633};
634
641
645
647
648 std::vector<std::pair<StringRef, bool>> getEntries() const override {
649 return {{"Relocations", Relocations.has_value()}};
650 };
651
655};
656
658 std::optional<std::vectorllvm::yaml::Hex64> Entries;
659
661
662 std::vector<std::pair<StringRef, bool>> getEntries() const override {
663 return {{"Entries", Entries.has_value()}};
664 };
665
669};
670
672 std::optional<std::vector<uint32_t>> Entries;
673
675
676 std::vector<std::pair<StringRef, bool>> getEntries() const override {
677 return {{"Entries", Entries.has_value()}};
678 };
679
683};
684
689
691 std::optional<std::vector> Entries;
692
694
695 std::vector<std::pair<StringRef, bool>> getEntries() const override {
696 return {{"Entries", Entries.has_value()}};
697 };
698
702};
703
704
724
730 std::optionalllvm::yaml::Hex64 Align;
731 std::optionalllvm::yaml::Hex64 FileSize;
732 std::optionalllvm::yaml::Hex64 MemSize;
733 std::optionalllvm::yaml::Hex64 Offset;
736
737
739};
740
744
745
746
747 std::vector<std::unique_ptr> Chunks;
748
749
750
751
752
753 std::optional<std::vector> Symbols;
755 std::optionalDWARFYAML::Data DWARF;
756
758 std::vector<Section *> Ret;
759 for (const std::unique_ptr &Sec : Chunks)
761 Ret.push_back(S);
762 return Ret;
763 }
764
766 for (const std::unique_ptr &C : Chunks)
768 return *S;
769 llvm_unreachable("the section header table chunk must always be present");
770 }
771
772 ELF_ELFOSABI getOSAbi() const;
774};
775
777 const NoBitsSection &S);
778
779}
780}
781
789 llvm::ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry)
804
805namespace llvm {
806namespace yaml {
807
808template <> struct ScalarTraitsELFYAML::YAMLIntUInt {
809 static void output(const ELFYAML::YAMLIntUInt &Val, void *Ctx,
810 raw_ostream &Out);
811 static StringRef input(StringRef Scalar, void *Ctx,
812 ELFYAML::YAMLIntUInt &Val);
813 static QuotingType mustQuote(StringRef) { return QuotingType::None; }
814};
815
816template <>
817struct ScalarEnumerationTraitsELFYAML::ELF\_ET {
818 static void enumeration(IO &IO, ELFYAML::ELF_ET &Value);
819};
820
821template <> struct ScalarEnumerationTraitsELFYAML::ELF\_PT {
822 static void enumeration(IO &IO, ELFYAML::ELF_PT &Value);
823};
824
825template <> struct ScalarEnumerationTraitsELFYAML::ELF\_NT {
826 static void enumeration(IO &IO, ELFYAML::ELF_NT &Value);
827};
828
829template <>
830struct ScalarEnumerationTraitsELFYAML::ELF\_EM {
831 static void enumeration(IO &IO, ELFYAML::ELF_EM &Value);
832};
833
834template <>
835struct ScalarEnumerationTraitsELFYAML::ELF\_ELFCLASS {
836 static void enumeration(IO &IO, ELFYAML::ELF_ELFCLASS &Value);
837};
838
839template <>
840struct ScalarEnumerationTraitsELFYAML::ELF\_ELFDATA {
841 static void enumeration(IO &IO, ELFYAML::ELF_ELFDATA &Value);
842};
843
844template <>
845struct ScalarEnumerationTraitsELFYAML::ELF\_ELFOSABI {
846 static void enumeration(IO &IO, ELFYAML::ELF_ELFOSABI &Value);
847};
848
849template <>
850struct ScalarBitSetTraitsELFYAML::ELF\_EF {
851 static void bitset(IO &IO, ELFYAML::ELF_EF &Value);
852};
853
854template <> struct ScalarBitSetTraitsELFYAML::ELF\_PF {
855 static void bitset(IO &IO, ELFYAML::ELF_PF &Value);
856};
857
858template <>
859struct ScalarEnumerationTraitsELFYAML::ELF\_SHT {
860 static void enumeration(IO &IO, ELFYAML::ELF_SHT &Value);
861};
862
863template <>
864struct ScalarBitSetTraitsELFYAML::ELF\_SHF {
865 static void bitset(IO &IO, ELFYAML::ELF_SHF &Value);
866};
867
868template <> struct ScalarEnumerationTraitsELFYAML::ELF\_SHN {
869 static void enumeration(IO &IO, ELFYAML::ELF_SHN &Value);
870};
871
872template <> struct ScalarEnumerationTraitsELFYAML::ELF\_STB {
873 static void enumeration(IO &IO, ELFYAML::ELF_STB &Value);
874};
875
876template <>
877struct ScalarEnumerationTraitsELFYAML::ELF\_STT {
878 static void enumeration(IO &IO, ELFYAML::ELF_STT &Value);
879};
880
881template <>
882struct ScalarEnumerationTraitsELFYAML::ELF\_REL {
883 static void enumeration(IO &IO, ELFYAML::ELF_REL &Value);
884};
885
886template <>
887struct ScalarEnumerationTraitsELFYAML::ELF\_DYNTAG {
888 static void enumeration(IO &IO, ELFYAML::ELF_DYNTAG &Value);
889};
890
891template <>
892struct ScalarEnumerationTraitsELFYAML::ELF\_RSS {
893 static void enumeration(IO &IO, ELFYAML::ELF_RSS &Value);
894};
895
896template <>
897struct ScalarEnumerationTraitsELFYAML::MIPS\_AFL\_REG {
898 static void enumeration(IO &IO, ELFYAML::MIPS_AFL_REG &Value);
899};
900
901template <>
902struct ScalarEnumerationTraitsELFYAML::MIPS\_ABI\_FP {
903 static void enumeration(IO &IO, ELFYAML::MIPS_ABI_FP &Value);
904};
905
906template <>
907struct ScalarEnumerationTraitsELFYAML::MIPS\_AFL\_EXT {
908 static void enumeration(IO &IO, ELFYAML::MIPS_AFL_EXT &Value);
909};
910
911template <>
912struct ScalarEnumerationTraitsELFYAML::MIPS\_ISA {
913 static void enumeration(IO &IO, ELFYAML::MIPS_ISA &Value);
914};
915
916template <>
917struct ScalarBitSetTraitsELFYAML::MIPS\_AFL\_ASE {
918 static void bitset(IO &IO, ELFYAML::MIPS_AFL_ASE &Value);
919};
920
921template <>
922struct ScalarBitSetTraitsELFYAML::MIPS\_AFL\_FLAGS1 {
923 static void bitset(IO &IO, ELFYAML::MIPS_AFL_FLAGS1 &Value);
924};
925
926template <>
927struct MappingTraitsELFYAML::FileHeader {
928 static void mapping(IO &IO, ELFYAML::FileHeader &FileHdr);
929};
930
931template <> struct MappingTraitsELFYAML::SectionHeader {
932 static void mapping(IO &IO, ELFYAML::SectionHeader &SHdr);
933};
934
935template <> struct MappingTraitsELFYAML::ProgramHeader {
936 static void mapping(IO &IO, ELFYAML::ProgramHeader &FileHdr);
937 static std::string validate(IO &IO, ELFYAML::ProgramHeader &FileHdr);
938};
939
940template <>
941struct MappingTraitsELFYAML::Symbol {
942 static void mapping(IO &IO, ELFYAML::Symbol &Symbol);
943 static std::string validate(IO &IO, ELFYAML::Symbol &Symbol);
944};
945
946template <> struct MappingTraitsELFYAML::StackSizeEntry {
947 static void mapping(IO &IO, ELFYAML::StackSizeEntry &Rel);
948};
949
950template <> struct MappingTraitsELFYAML::BBAddrMapEntry {
951 static void mapping(IO &IO, ELFYAML::BBAddrMapEntry &E);
952};
953
954template <> struct MappingTraitsELFYAML::BBAddrMapEntry::BBRangeEntry {
955 static void mapping(IO &IO, ELFYAML::BBAddrMapEntry::BBRangeEntry &E);
956};
957
958template <> struct MappingTraitsELFYAML::BBAddrMapEntry::BBEntry {
959 static void mapping(IO &IO, ELFYAML::BBAddrMapEntry::BBEntry &E);
960};
961
962template <> struct MappingTraitsELFYAML::PGOAnalysisMapEntry {
963 static void mapping(IO &IO, ELFYAML::PGOAnalysisMapEntry &Rel);
964};
965
966template <> struct MappingTraitsELFYAML::PGOAnalysisMapEntry::PGOBBEntry {
967 static void mapping(IO &IO, ELFYAML::PGOAnalysisMapEntry::PGOBBEntry &Rel);
968};
969
970template <>
971struct MappingTraitsELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry {
972 static void
973 mapping(IO &IO,
974 ELFYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry &Rel);
975};
976
977template <> struct MappingTraitsELFYAML::GnuHashHeader {
978 static void mapping(IO &IO, ELFYAML::GnuHashHeader &Rel);
979};
980
981template <> struct MappingTraitsELFYAML::DynamicEntry {
982 static void mapping(IO &IO, ELFYAML::DynamicEntry &Rel);
983};
984
985template <> struct MappingTraitsELFYAML::NoteEntry {
986 static void mapping(IO &IO, ELFYAML::NoteEntry &N);
987};
988
989template <> struct MappingTraitsELFYAML::VerdefEntry {
990 static void mapping(IO &IO, ELFYAML::VerdefEntry &E);
991};
992
993template <> struct MappingTraitsELFYAML::VerneedEntry {
994 static void mapping(IO &IO, ELFYAML::VerneedEntry &E);
995};
996
997template <> struct MappingTraitsELFYAML::VernauxEntry {
998 static void mapping(IO &IO, ELFYAML::VernauxEntry &E);
999};
1000
1001template <> struct MappingTraitsELFYAML::LinkerOption {
1002 static void mapping(IO &IO, ELFYAML::LinkerOption &Sym);
1003};
1004
1005template <> struct MappingTraitsELFYAML::CallGraphEntryWeight {
1006 static void mapping(IO &IO, ELFYAML::CallGraphEntryWeight &E);
1007};
1008
1009template <> struct MappingTraitsELFYAML::Relocation {
1010 static void mapping(IO &IO, ELFYAML::Relocation &Rel);
1011};
1012
1013template <> struct MappingTraitsELFYAML::ARMIndexTableEntry {
1014 static void mapping(IO &IO, ELFYAML::ARMIndexTableEntry &E);
1015};
1016
1017template <> struct MappingTraits<std::unique_ptrELFYAML::Chunk> {
1018 static void mapping(IO &IO, std::unique_ptrELFYAML::Chunk &C);
1019 static std::string validate(IO &io, std::unique_ptrELFYAML::Chunk &C);
1020};
1021
1022template <>
1023struct MappingTraitsELFYAML::Object {
1024 static void mapping(IO &IO, ELFYAML::Object &Object);
1025};
1026
1027template <> struct MappingTraitsELFYAML::SectionOrType {
1028 static void mapping(IO &IO, ELFYAML::SectionOrType §ionOrType);
1029};
1030
1031}
1032}
1033
1034#endif
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
This file declares classes for handling the YAML representation of DWARF Debug Info.
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
#define LLVM_YAML_STRONG_TYPEDEF(_base, _type)
YAML I/O does conversion based on types. But often native data types are just a typedef of built in i...
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
StringRef - Represent a constant reference to a string, i.e.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Specialized YAMLIO scalar type for representing a binary blob.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ C
The default llvm calling convention, compatible with C.
std::string appendUniqueSuffix(StringRef Name, const Twine &Msg)
unsigned getDefaultShEntSize(unsigned EMachine, ELF_SHT SecType, StringRef SecName)
Definition ELFYAML.h:77
StringRef dropUniqueSuffix(StringRef S)
bool shouldAllocateFileSpace(ArrayRef< ProgramHeader > Phdrs, const NoBitsSection &S)
@ SHT_LLVM_CALL_GRAPH_PROFILE
This is an optimization pass for GlobalISel generic memory operations.
decltype(auto) dyn_cast(const From &Val)
dyn_cast - Return the argument parameter cast to the specified type.
Implement std::hash so that hash_code can be used in STL containers.
llvm::yaml::Hex32 Value
Definition ELFYAML.h:687
llvm::yaml::Hex32 Offset
Definition ELFYAML.h:686
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:695
ARMIndexTableSection()
Definition ELFYAML.h:693
static bool classof(const Chunk *S)
Definition ELFYAML.h:699
std::optional< std::vector< ARMIndexTableEntry > > Entries
Definition ELFYAML.h:691
std::optional< std::vector< YAMLFlowString > > Symbols
Definition ELFYAML.h:522
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:526
AddrsigSection()
Definition ELFYAML.h:524
static bool classof(const Chunk *S)
Definition ELFYAML.h:530
std::optional< llvm::yaml::Hex64 > Hash
Definition ELFYAML.h:166
llvm::yaml::Hex64 Metadata
Definition ELFYAML.h:164
std::optional< std::vector< llvm::yaml::Hex64 > > CallsiteEndOffsets
Definition ELFYAML.h:165
uint32_t ID
Definition ELFYAML.h:161
llvm::yaml::Hex64 AddressOffset
Definition ELFYAML.h:162
llvm::yaml::Hex64 Size
Definition ELFYAML.h:163
std::optional< uint64_t > NumBlocks
Definition ELFYAML.h:173
llvm::yaml::Hex64 BaseAddress
Definition ELFYAML.h:172
std::optional< std::vector< BBEntry > > BBEntries
Definition ELFYAML.h:174
uint8_t Version
Definition ELFYAML.h:168
llvm::yaml::Hex64 getFunctionAddress() const
Definition ELFYAML.h:180
std::optional< uint64_t > NumBBRanges
Definition ELFYAML.h:177
llvm::yaml::Hex16 Feature
Definition ELFYAML.h:169
bool hasAnyCallsiteEndOffsets() const
Definition ELFYAML.h:187
std::optional< std::vector< BBRangeEntry > > BBRanges
Definition ELFYAML.h:178
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:367
static bool classof(const Chunk *S)
Definition ELFYAML.h:371
BBAddrMapSection()
Definition ELFYAML.h:365
std::optional< std::vector< BBAddrMapEntry > > Entries
Definition ELFYAML.h:362
std::optional< std::vector< PGOAnalysisMapEntry > > PGOAnalyses
Definition ELFYAML.h:363
uint64_t Weight
Definition ELFYAML.h:569
std::optional< std::vector< CallGraphEntryWeight > > Entries
Definition ELFYAML.h:573
CallGraphProfileSection()
Definition ELFYAML.h:575
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:577
static bool classof(const Chunk *S)
Definition ELFYAML.h:581
Chunk(ChunkKind K, bool Implicit)
Definition ELFYAML.h:265
StringRef Name
Definition ELFYAML.h:258
std::optional< llvm::yaml::Hex64 > Offset
Definition ELFYAML.h:259
ChunkKind
Definition ELFYAML.h:228
@ NoBits
Definition ELFYAML.h:234
@ Group
Definition ELFYAML.h:230
@ GnuHash
Definition ELFYAML.h:237
@ Verdef
Definition ELFYAML.h:238
@ Relr
Definition ELFYAML.h:233
@ Addrsig
Definition ELFYAML.h:245
@ Verneed
Definition ELFYAML.h:239
@ Symver
Definition ELFYAML.h:242
@ Note
Definition ELFYAML.h:235
@ ARMIndexTable
Definition ELFYAML.h:243
@ DependentLibraries
Definition ELFYAML.h:247
@ Relocation
Definition ELFYAML.h:232
@ StackSizes
Definition ELFYAML.h:240
@ BBAddrMap
Definition ELFYAML.h:249
@ Dynamic
Definition ELFYAML.h:229
@ LinkerOptions
Definition ELFYAML.h:246
@ SymtabShndxSection
Definition ELFYAML.h:241
@ RawContent
Definition ELFYAML.h:231
@ MipsABIFlags
Definition ELFYAML.h:244
@ Fill
Definition ELFYAML.h:253
@ SpecialChunksStart
Definition ELFYAML.h:252
@ SectionHeaderTable
Definition ELFYAML.h:254
@ CallGraphProfile
Definition ELFYAML.h:248
@ Hash
Definition ELFYAML.h:236
ChunkKind Kind
Definition ELFYAML.h:257
bool IsImplicit
Definition ELFYAML.h:263
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:557
DependentLibrariesSection()
Definition ELFYAML.h:555
static bool classof(const Chunk *S)
Definition ELFYAML.h:561
std::optional< std::vector< YAMLFlowString > > Libs
Definition ELFYAML.h:553
llvm::yaml::Hex64 Val
Definition ELFYAML.h:156
ELF_DYNTAG Tag
Definition ELFYAML.h:155
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:399
static bool classof(const Chunk *S)
Definition ELFYAML.h:403
std::optional< std::vector< DynamicEntry > > Entries
Definition ELFYAML.h:395
DynamicSection()
Definition ELFYAML.h:397
llvm::yaml::Hex64 Size
Definition ELFYAML.h:329
std::optional< yaml::BinaryRef > Pattern
Definition ELFYAML.h:328
static bool classof(const Chunk *S)
Definition ELFYAML.h:333
Fill()
Definition ELFYAML.h:331
GnuHashSection()
Definition ELFYAML.h:481
std::optional< std::vector< llvm::yaml::Hex64 > > BloomFilter
Definition ELFYAML.h:477
std::optional< std::vector< llvm::yaml::Hex32 > > HashBuckets
Definition ELFYAML.h:478
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:483
static bool classof(const Chunk *S)
Definition ELFYAML.h:490
std::optional< GnuHashHeader > Header
Definition ELFYAML.h:476
std::optional< std::vector< llvm::yaml::Hex32 > > HashValues
Definition ELFYAML.h:479
static bool classof(const Chunk *S)
Definition ELFYAML.h:632
std::optional< std::vector< SectionOrType > > Members
Definition ELFYAML.h:623
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:628
GroupSection()
Definition ELFYAML.h:626
std::optional< StringRef > Signature
Definition ELFYAML.h:624
std::optional< std::vector< uint32_t > > Chain
Definition ELFYAML.h:439
HashSection()
Definition ELFYAML.h:450
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:441
std::optional< llvm::yaml::Hex64 > NChain
Definition ELFYAML.h:448
static bool classof(const Chunk *S)
Definition ELFYAML.h:452
std::optional< std::vector< uint32_t > > Bucket
Definition ELFYAML.h:438
std::optional< llvm::yaml::Hex64 > NBucket
Definition ELFYAML.h:447
StringRef Key
Definition ELFYAML.h:534
StringRef Value
Definition ELFYAML.h:535
std::optional< std::vector< LinkerOption > > Options
Definition ELFYAML.h:539
static bool classof(const Chunk *S)
Definition ELFYAML.h:547
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:543
LinkerOptionsSection()
Definition ELFYAML.h:541
MipsABIFlags()
Definition ELFYAML.h:718
llvm::yaml::Hex16 Version
Definition ELFYAML.h:706
static bool classof(const Chunk *S)
Definition ELFYAML.h:720
MIPS_AFL_REG GPRSize
Definition ELFYAML.h:709
MIPS_AFL_FLAGS1 Flags1
Definition ELFYAML.h:715
MIPS_AFL_REG CPR2Size
Definition ELFYAML.h:711
llvm::yaml::Hex8 ISARevision
Definition ELFYAML.h:708
MIPS_ABI_FP FpABI
Definition ELFYAML.h:712
MIPS_AFL_ASE ASEs
Definition ELFYAML.h:714
MIPS_AFL_REG CPR1Size
Definition ELFYAML.h:710
MIPS_ISA ISALevel
Definition ELFYAML.h:707
MIPS_AFL_EXT ISAExtension
Definition ELFYAML.h:713
llvm::yaml::Hex32 Flags2
Definition ELFYAML.h:716
static bool classof(const Chunk *S)
Definition ELFYAML.h:422
NoBitsSection()
Definition ELFYAML.h:420
yaml::BinaryRef Desc
Definition ELFYAML.h:223
ELF_NT Type
Definition ELFYAML.h:224
StringRef Name
Definition ELFYAML.h:222
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:430
std::optional< std::vector< ELFYAML::NoteEntry > > Notes
Definition ELFYAML.h:426
static bool classof(const Chunk *S)
Definition ELFYAML.h:434
NoteSection()
Definition ELFYAML.h:428
std::optional< std::vector< Symbol > > DynamicSymbols
Definition ELFYAML.h:754
unsigned getMachine() const
std::optional< DWARFYAML::Data > DWARF
Definition ELFYAML.h:755
const SectionHeaderTable & getSectionHeaderTable() const
Definition ELFYAML.h:765
FileHeader Header
Definition ELFYAML.h:742
std::vector< std::unique_ptr< Chunk > > Chunks
Definition ELFYAML.h:747
ELF_ELFOSABI getOSAbi() const
std::vector< ProgramHeader > ProgramHeaders
Definition ELFYAML.h:743
std::optional< std::vector< Symbol > > Symbols
Definition ELFYAML.h:753
std::vector< Section * > getSections()
Definition ELFYAML.h:757
llvm::yaml::Hex32 BrProb
Definition ELFYAML.h:205
uint32_t ID
Definition ELFYAML.h:204
std::optional< uint32_t > PostLinkBrFreq
Definition ELFYAML.h:206
std::optional< std::vector< SuccessorEntry > > Successors
Definition ELFYAML.h:210
std::optional< uint64_t > BBFreq
Definition ELFYAML.h:208
std::optional< uint32_t > PostLinkBBFreq
Definition ELFYAML.h:209
std::optional< std::vector< PGOBBEntry > > PGOBBEntries
Definition ELFYAML.h:213
std::optional< uint64_t > FuncEntryCount
Definition ELFYAML.h:212
static bool classof(const Chunk *S)
Definition ELFYAML.h:411
std::optional< llvm::yaml::Hex64 > Info
Definition ELFYAML.h:407
RawContentSection()
Definition ELFYAML.h:409
std::optional< std::vector< uint8_t > > ContentBuf
Definition ELFYAML.h:416
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:648
std::optional< std::vector< Relocation > > Relocations
Definition ELFYAML.h:643
StringRef RelocatableSec
Definition ELFYAML.h:644
RelocationSection()
Definition ELFYAML.h:646
static bool classof(const Chunk *S)
Definition ELFYAML.h:652
YAMLIntUInt Addend
Definition ELFYAML.h:637
std::optional< StringRef > Symbol
Definition ELFYAML.h:639
ELF_REL Type
Definition ELFYAML.h:638
llvm::yaml::Hex64 Offset
Definition ELFYAML.h:636
static bool classof(const Chunk *S)
Definition ELFYAML.h:666
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:662
RelrSection()
Definition ELFYAML.h:660
std::optional< std::vector< llvm::yaml::Hex64 > > Entries
Definition ELFYAML.h:658
StringRef sectionNameOrType
Definition ELFYAML.h:151
std::optional< llvm::yaml::Hex64 > Address
Definition ELFYAML.h:272
std::optional< StringRef > Link
Definition ELFYAML.h:273
Section(ChunkKind Kind, bool IsImplicit=false)
Definition ELFYAML.h:283
std::optional< llvm::yaml::Hex64 > Size
Definition ELFYAML.h:278
static bool classof(const Chunk *S)
Definition ELFYAML.h:285
std::optional< llvm::yaml::Hex64 > ShAddrAlign
Definition ELFYAML.h:300
llvm::yaml::Hex64 AddressAlign
Definition ELFYAML.h:274
unsigned OriginalSecNdx
Definition ELFYAML.h:281
std::optional< ELF_SHF > Flags
Definition ELFYAML.h:271
std::optional< ELF_SHT > ShType
Definition ELFYAML.h:321
std::optional< llvm::yaml::Hex64 > ShOffset
Definition ELFYAML.h:308
virtual std::vector< std::pair< StringRef, bool > > getEntries() const
Definition ELFYAML.h:292
std::optional< llvm::yaml::Hex64 > ShFlags
Definition ELFYAML.h:315
std::optional< llvm::yaml::Hex64 > ShName
Definition ELFYAML.h:304
std::optional< yaml::BinaryRef > Content
Definition ELFYAML.h:277
std::optional< llvm::yaml::Hex64 > EntSize
Definition ELFYAML.h:275
std::optional< llvm::yaml::Hex64 > ShSize
Definition ELFYAML.h:312
ELF_SHT Type
Definition ELFYAML.h:270
llvm::yaml::Hex64 Size
Definition ELFYAML.h:218
llvm::yaml::Hex64 Address
Definition ELFYAML.h:217
static bool classof(const Chunk *S)
Definition ELFYAML.h:385
static bool nameMatches(StringRef Name)
Definition ELFYAML.h:389
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:381
StackSizesSection()
Definition ELFYAML.h:379
std::optional< std::vector< StackSizeEntry > > Entries
Definition ELFYAML.h:377
ELF_STB Binding
Definition ELFYAML.h:142
std::optional< ELF_SHN > Index
Definition ELFYAML.h:141
std::optional< StringRef > Section
Definition ELFYAML.h:140
ELF_STT Type
Definition ELFYAML.h:139
std::optional< uint8_t > Other
Definition ELFYAML.h:145
std::optional< uint32_t > StName
Definition ELFYAML.h:147
StringRef Name
Definition ELFYAML.h:138
std::optional< llvm::yaml::Hex64 > Value
Definition ELFYAML.h:143
std::optional< llvm::yaml::Hex64 > Size
Definition ELFYAML.h:144
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:676
static bool classof(const Chunk *S)
Definition ELFYAML.h:680
std::optional< std::vector< uint32_t > > Entries
Definition ELFYAML.h:672
SymtabShndxSection()
Definition ELFYAML.h:674
std::optional< std::vector< uint16_t > > Entries
Definition ELFYAML.h:587
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:591
static bool classof(const Chunk *S)
Definition ELFYAML.h:595
SymverSection()
Definition ELFYAML.h:589
std::optional< uint16_t > Flags
Definition ELFYAML.h:600
std::optional< uint16_t > VDAux
Definition ELFYAML.h:603
std::vector< StringRef > VerNames
Definition ELFYAML.h:604
std::optional< uint16_t > VersionNdx
Definition ELFYAML.h:601
std::optional< uint16_t > Version
Definition ELFYAML.h:599
std::optional< uint32_t > Hash
Definition ELFYAML.h:602
VerdefSection()
Definition ELFYAML.h:611
static bool classof(const Chunk *S)
Definition ELFYAML.h:617
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:613
std::optional< llvm::yaml::Hex64 > Info
Definition ELFYAML.h:609
std::optional< std::vector< VerdefEntry > > Entries
Definition ELFYAML.h:608
uint16_t Flags
Definition ELFYAML.h:495
uint32_t Hash
Definition ELFYAML.h:494
uint16_t Other
Definition ELFYAML.h:496
StringRef Name
Definition ELFYAML.h:497
std::vector< VernauxEntry > AuxV
Definition ELFYAML.h:503
StringRef File
Definition ELFYAML.h:502
uint16_t Version
Definition ELFYAML.h:501
std::vector< std::pair< StringRef, bool > > getEntries() const override
Definition ELFYAML.h:512
std::optional< llvm::yaml::Hex64 > Info
Definition ELFYAML.h:508
static bool classof(const Chunk *S)
Definition ELFYAML.h:516
std::optional< std::vector< VerneedEntry > > VerneedV
Definition ELFYAML.h:507
VerneedSection()
Definition ELFYAML.h:510