Movatterモバイル変換


[0]ホーム

URL:


LLVM 20.0.0git
Dwarf.cpp
Go to the documentation of this file.
1//===-- llvm/BinaryFormat/Dwarf.cpp - Dwarf Framework ------------*- C++-*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file contains support for generic dwarf information.
10//
11//===----------------------------------------------------------------------===//
12
13#include "llvm/BinaryFormat/Dwarf.h"
14#include "llvm/ADT/StringSwitch.h"
15#include "llvm/Support/ErrorHandling.h"
16#include "llvm/TargetParser/Triple.h"
17
18using namespacellvm;
19using namespacedwarf;
20
21StringRefllvm::dwarf::TagString(unsignedTag) {
22switch (Tag) {
23default:
24returnStringRef();
25#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
26 case DW_TAG_##NAME: \
27 return "DW_TAG_" #NAME;
28#include "llvm/BinaryFormat/Dwarf.def"
29 }
30}
31
32unsignedllvm::dwarf::getTag(StringRefTagString) {
33returnStringSwitch<unsigned>(TagString)
34#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
35 .Case("DW_TAG_" #NAME, DW_TAG_##NAME)
36#include "llvm/BinaryFormat/Dwarf.def"
37 .Default(DW_TAG_invalid);
38}
39
40unsignedllvm::dwarf::TagVersion(dwarf::TagTag) {
41switch (Tag) {
42default:
43return 0;
44#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
45 case DW_TAG_##NAME: \
46 return VERSION;
47#include "llvm/BinaryFormat/Dwarf.def"
48 }
49}
50
51unsignedllvm::dwarf::TagVendor(dwarf::TagTag) {
52switch (Tag) {
53default:
54return 0;
55#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
56 case DW_TAG_##NAME: \
57 return DWARF_VENDOR_##VENDOR;
58#include "llvm/BinaryFormat/Dwarf.def"
59 }
60}
61
62StringRefllvm::dwarf::ChildrenString(unsigned Children) {
63switch (Children) {
64caseDW_CHILDREN_no:
65return"DW_CHILDREN_no";
66caseDW_CHILDREN_yes:
67return"DW_CHILDREN_yes";
68 }
69returnStringRef();
70}
71
72StringRefllvm::dwarf::AttributeString(unsignedAttribute) {
73switch (Attribute) {
74default:
75returnStringRef();
76#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) \
77 case DW_AT_##NAME: \
78 return "DW_AT_" #NAME;
79#include "llvm/BinaryFormat/Dwarf.def"
80 }
81}
82
83unsignedllvm::dwarf::AttributeVersion(dwarf::AttributeAttribute) {
84switch (Attribute) {
85default:
86return 0;
87#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) \
88 case DW_AT_##NAME: \
89 return VERSION;
90#include "llvm/BinaryFormat/Dwarf.def"
91 }
92}
93
94unsignedllvm::dwarf::AttributeVendor(dwarf::AttributeAttribute) {
95switch (Attribute) {
96default:
97return 0;
98#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) \
99 case DW_AT_##NAME: \
100 return DWARF_VENDOR_##VENDOR;
101#include "llvm/BinaryFormat/Dwarf.def"
102 }
103}
104
105StringRefllvm::dwarf::FormEncodingString(unsigned Encoding) {
106switch (Encoding) {
107default:
108returnStringRef();
109#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) \
110 case DW_FORM_##NAME: \
111 return "DW_FORM_" #NAME;
112#include "llvm/BinaryFormat/Dwarf.def"
113 }
114}
115
116unsignedllvm::dwarf::FormVersion(dwarf::FormForm) {
117switch (Form) {
118default:
119return 0;
120#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) \
121 case DW_FORM_##NAME: \
122 return VERSION;
123#include "llvm/BinaryFormat/Dwarf.def"
124 }
125}
126
127unsignedllvm::dwarf::FormVendor(dwarf::FormForm) {
128switch (Form) {
129default:
130return 0;
131#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) \
132 case DW_FORM_##NAME: \
133 return DWARF_VENDOR_##VENDOR;
134#include "llvm/BinaryFormat/Dwarf.def"
135 }
136}
137
138StringRefllvm::dwarf::OperationEncodingString(unsigned Encoding) {
139switch (Encoding) {
140default:
141returnStringRef();
142#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
143 case DW_OP_##NAME: \
144 return "DW_OP_" #NAME;
145#include "llvm/BinaryFormat/Dwarf.def"
146caseDW_OP_LLVM_convert:
147return"DW_OP_LLVM_convert";
148caseDW_OP_LLVM_fragment:
149return"DW_OP_LLVM_fragment";
150caseDW_OP_LLVM_tag_offset:
151return"DW_OP_LLVM_tag_offset";
152caseDW_OP_LLVM_entry_value:
153return"DW_OP_LLVM_entry_value";
154caseDW_OP_LLVM_implicit_pointer:
155return"DW_OP_LLVM_implicit_pointer";
156caseDW_OP_LLVM_arg:
157return"DW_OP_LLVM_arg";
158caseDW_OP_LLVM_extract_bits_sext:
159return"DW_OP_LLVM_extract_bits_sext";
160caseDW_OP_LLVM_extract_bits_zext:
161return"DW_OP_LLVM_extract_bits_zext";
162 }
163}
164
165unsignedllvm::dwarf::getOperationEncoding(StringRefOperationEncodingString) {
166returnStringSwitch<unsigned>(OperationEncodingString)
167#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
168 .Case("DW_OP_" #NAME, DW_OP_##NAME)
169#include "llvm/BinaryFormat/Dwarf.def"
170 .Case("DW_OP_LLVM_convert",DW_OP_LLVM_convert)
171 .Case("DW_OP_LLVM_fragment",DW_OP_LLVM_fragment)
172 .Case("DW_OP_LLVM_tag_offset",DW_OP_LLVM_tag_offset)
173 .Case("DW_OP_LLVM_entry_value",DW_OP_LLVM_entry_value)
174 .Case("DW_OP_LLVM_implicit_pointer",DW_OP_LLVM_implicit_pointer)
175 .Case("DW_OP_LLVM_arg",DW_OP_LLVM_arg)
176 .Case("DW_OP_LLVM_extract_bits_sext",DW_OP_LLVM_extract_bits_sext)
177 .Case("DW_OP_LLVM_extract_bits_zext",DW_OP_LLVM_extract_bits_zext)
178 .Default(0);
179}
180
181staticStringRefLlvmUserOperationEncodingString(unsigned Encoding) {
182switch (Encoding) {
183default:
184llvm_unreachable("unhandled DWARF operation with LLVM user op");
185#define HANDLE_DW_OP_LLVM_USEROP(ID, NAME) \
186 case DW_OP_LLVM_##NAME: \
187 return "DW_OP_LLVM_" #NAME;
188#include "llvm/BinaryFormat/Dwarf.def"
189 }
190}
191
192staticunsigned
193getLlvmUserOperationEncoding(StringRefLlvmUserOperationEncodingString) {
194unsigned E =StringSwitch<unsigned>(LlvmUserOperationEncodingString)
195#define HANDLE_DW_OP_LLVM_USEROP(ID, NAME) .Case(#NAME, DW_OP_LLVM_##NAME)
196#include "llvm/BinaryFormat/Dwarf.def"
197 .Default(0);
198assert(E &&"unhandled DWARF operation string with LLVM user op");
199return E;
200}
201
202StringRefllvm::dwarf::SubOperationEncodingString(unsigned OpEncoding,
203unsigned SubOpEncoding) {
204assert(OpEncoding == DW_OP_LLVM_user);
205returnLlvmUserOperationEncodingString(SubOpEncoding);
206}
207
208unsigned
209llvm::dwarf::getSubOperationEncoding(unsigned OpEncoding,
210StringRefSubOperationEncodingString) {
211assert(OpEncoding == DW_OP_LLVM_user);
212returngetLlvmUserOperationEncoding(SubOperationEncodingString);
213}
214
215unsignedllvm::dwarf::OperationVersion(dwarf::LocationAtomOp) {
216switch (Op) {
217default:
218return 0;
219#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
220 case DW_OP_##NAME: \
221 return VERSION;
222#include "llvm/BinaryFormat/Dwarf.def"
223 }
224}
225
226std::optional<unsigned>llvm::dwarf::OperationOperands(dwarf::LocationAtomOp) {
227switch (Op) {
228default:
229return std::nullopt;
230#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
231 case DW_OP_##NAME: \
232 if (OPERANDS == -1) \
233 return std::nullopt; \
234 return OPERANDS;
235#include "llvm/BinaryFormat/Dwarf.def"
236 }
237}
238
239std::optional<unsigned>llvm::dwarf::OperationArity(dwarf::LocationAtomOp) {
240switch (Op) {
241default:
242return std::nullopt;
243#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
244 case DW_OP_##NAME: \
245 if (ARITY == -1) \
246 return std::nullopt; \
247 return ARITY;
248#include "llvm/BinaryFormat/Dwarf.def"
249 }
250}
251
252unsignedllvm::dwarf::OperationVendor(dwarf::LocationAtomOp) {
253switch (Op) {
254default:
255return 0;
256#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
257 case DW_OP_##NAME: \
258 return DWARF_VENDOR_##VENDOR;
259#include "llvm/BinaryFormat/Dwarf.def"
260 }
261}
262
263StringRefllvm::dwarf::AttributeEncodingString(unsigned Encoding) {
264switch (Encoding) {
265default:
266returnStringRef();
267#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
268 case DW_ATE_##NAME: \
269 return "DW_ATE_" #NAME;
270#include "llvm/BinaryFormat/Dwarf.def"
271 }
272}
273
274unsignedllvm::dwarf::getAttributeEncoding(StringRef EncodingString) {
275returnStringSwitch<unsigned>(EncodingString)
276#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
277 .Case("DW_ATE_" #NAME, DW_ATE_##NAME)
278#include "llvm/BinaryFormat/Dwarf.def"
279 .Default(0);
280}
281
282unsignedllvm::dwarf::AttributeEncodingVersion(dwarf::TypeKind ATE) {
283switch (ATE) {
284default:
285return 0;
286#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
287 case DW_ATE_##NAME: \
288 return VERSION;
289#include "llvm/BinaryFormat/Dwarf.def"
290 }
291}
292
293unsignedllvm::dwarf::AttributeEncodingVendor(dwarf::TypeKind ATE) {
294switch (ATE) {
295default:
296return 0;
297#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
298 case DW_ATE_##NAME: \
299 return DWARF_VENDOR_##VENDOR;
300#include "llvm/BinaryFormat/Dwarf.def"
301 }
302}
303
304StringRefllvm::dwarf::DecimalSignString(unsigned Sign) {
305switch (Sign) {
306caseDW_DS_unsigned:
307return"DW_DS_unsigned";
308caseDW_DS_leading_overpunch:
309return"DW_DS_leading_overpunch";
310caseDW_DS_trailing_overpunch:
311return"DW_DS_trailing_overpunch";
312caseDW_DS_leading_separate:
313return"DW_DS_leading_separate";
314caseDW_DS_trailing_separate:
315return"DW_DS_trailing_separate";
316 }
317returnStringRef();
318}
319
320StringRefllvm::dwarf::EndianityString(unsigned Endian) {
321switch (Endian) {
322case DW_END_default:
323return"DW_END_default";
324case DW_END_big:
325return"DW_END_big";
326case DW_END_little:
327return"DW_END_little";
328caseDW_END_lo_user:
329return"DW_END_lo_user";
330caseDW_END_hi_user:
331return"DW_END_hi_user";
332 }
333returnStringRef();
334}
335
336StringRefllvm::dwarf::AccessibilityString(unsignedAccess) {
337switch (Access) {
338// Accessibility codes
339caseDW_ACCESS_public:
340return"DW_ACCESS_public";
341caseDW_ACCESS_protected:
342return"DW_ACCESS_protected";
343caseDW_ACCESS_private:
344return"DW_ACCESS_private";
345 }
346returnStringRef();
347}
348
349StringRefllvm::dwarf::DefaultedMemberString(unsigned DefaultedEncodings) {
350switch (DefaultedEncodings) {
351// Defaulted Member Encodings codes
352case DW_DEFAULTED_no:
353return"DW_DEFAULTED_no";
354case DW_DEFAULTED_in_class:
355return"DW_DEFAULTED_in_class";
356case DW_DEFAULTED_out_of_class:
357return"DW_DEFAULTED_out_of_class";
358 }
359returnStringRef();
360}
361
362StringRefllvm::dwarf::VisibilityString(unsigned Visibility) {
363switch (Visibility) {
364caseDW_VIS_local:
365return"DW_VIS_local";
366caseDW_VIS_exported:
367return"DW_VIS_exported";
368caseDW_VIS_qualified:
369return"DW_VIS_qualified";
370 }
371returnStringRef();
372}
373
374StringRefllvm::dwarf::VirtualityString(unsigned Virtuality) {
375switch (Virtuality) {
376default:
377returnStringRef();
378#define HANDLE_DW_VIRTUALITY(ID, NAME) \
379 case DW_VIRTUALITY_##NAME: \
380 return "DW_VIRTUALITY_" #NAME;
381#include "llvm/BinaryFormat/Dwarf.def"
382 }
383}
384
385unsignedllvm::dwarf::getVirtuality(StringRefVirtualityString) {
386returnStringSwitch<unsigned>(VirtualityString)
387#define HANDLE_DW_VIRTUALITY(ID, NAME) \
388 .Case("DW_VIRTUALITY_" #NAME, DW_VIRTUALITY_##NAME)
389#include "llvm/BinaryFormat/Dwarf.def"
390 .Default(DW_VIRTUALITY_invalid);
391}
392
393StringRefllvm::dwarf::LanguageString(unsigned Language) {
394switch (Language) {
395default:
396returnStringRef();
397#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
398 case DW_LANG_##NAME: \
399 return "DW_LANG_" #NAME;
400#include "llvm/BinaryFormat/Dwarf.def"
401 }
402}
403
404unsignedllvm::dwarf::getLanguage(StringRefLanguageString) {
405returnStringSwitch<unsigned>(LanguageString)
406#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
407 .Case("DW_LANG_" #NAME, DW_LANG_##NAME)
408#include "llvm/BinaryFormat/Dwarf.def"
409 .Default(0);
410}
411
412unsignedllvm::dwarf::LanguageVersion(dwarf::SourceLanguage Lang) {
413switch (Lang) {
414default:
415return 0;
416#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
417 case DW_LANG_##NAME: \
418 return VERSION;
419#include "llvm/BinaryFormat/Dwarf.def"
420 }
421}
422
423unsignedllvm::dwarf::LanguageVendor(dwarf::SourceLanguage Lang) {
424switch (Lang) {
425default:
426return 0;
427#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
428 case DW_LANG_##NAME: \
429 return DWARF_VENDOR_##VENDOR;
430#include "llvm/BinaryFormat/Dwarf.def"
431 }
432}
433
434std::optional<unsigned>
435llvm::dwarf::LanguageLowerBound(dwarf::SourceLanguage Lang) {
436switch (Lang) {
437default:
438return std::nullopt;
439#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
440 case DW_LANG_##NAME: \
441 return LOWER_BOUND;
442#include "llvm/BinaryFormat/Dwarf.def"
443 }
444}
445
446StringRefllvm::dwarf::LanguageDescription(dwarf::SourceLanguageName lname) {
447switch (lname) {
448#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) \
449 case DW_LNAME_##NAME: \
450 return DESC;
451#include "llvm/BinaryFormat/Dwarf.def"
452 }
453return"Unknown";
454}
455
456StringRefllvm::dwarf::CaseString(unsigned Case) {
457switch (Case) {
458caseDW_ID_case_sensitive:
459return"DW_ID_case_sensitive";
460caseDW_ID_up_case:
461return"DW_ID_up_case";
462caseDW_ID_down_case:
463return"DW_ID_down_case";
464caseDW_ID_case_insensitive:
465return"DW_ID_case_insensitive";
466 }
467returnStringRef();
468}
469
470StringRefllvm::dwarf::ConventionString(unsignedCC) {
471switch (CC) {
472default:
473returnStringRef();
474#define HANDLE_DW_CC(ID, NAME) \
475 case DW_CC_##NAME: \
476 return "DW_CC_" #NAME;
477#include "llvm/BinaryFormat/Dwarf.def"
478 }
479}
480
481unsignedllvm::dwarf::getCallingConvention(StringRef CCString) {
482returnStringSwitch<unsigned>(CCString)
483#define HANDLE_DW_CC(ID, NAME) .Case("DW_CC_" #NAME, DW_CC_##NAME)
484#include "llvm/BinaryFormat/Dwarf.def"
485 .Default(0);
486}
487
488StringRefllvm::dwarf::InlineCodeString(unsigned Code) {
489switch (Code) {
490caseDW_INL_not_inlined:
491return"DW_INL_not_inlined";
492caseDW_INL_inlined:
493return"DW_INL_inlined";
494caseDW_INL_declared_not_inlined:
495return"DW_INL_declared_not_inlined";
496caseDW_INL_declared_inlined:
497return"DW_INL_declared_inlined";
498 }
499returnStringRef();
500}
501
502StringRefllvm::dwarf::ArrayOrderString(unsigned Order) {
503switch (Order) {
504caseDW_ORD_row_major:
505return"DW_ORD_row_major";
506caseDW_ORD_col_major:
507return"DW_ORD_col_major";
508 }
509returnStringRef();
510}
511
512StringRefllvm::dwarf::LNStandardString(unsigned Standard) {
513switch (Standard) {
514default:
515returnStringRef();
516#define HANDLE_DW_LNS(ID, NAME) \
517 case DW_LNS_##NAME: \
518 return "DW_LNS_" #NAME;
519#include "llvm/BinaryFormat/Dwarf.def"
520 }
521}
522
523StringRefllvm::dwarf::LNExtendedString(unsigned Encoding) {
524switch (Encoding) {
525default:
526returnStringRef();
527#define HANDLE_DW_LNE(ID, NAME) \
528 case DW_LNE_##NAME: \
529 return "DW_LNE_" #NAME;
530#include "llvm/BinaryFormat/Dwarf.def"
531 }
532}
533
534StringRefllvm::dwarf::MacinfoString(unsigned Encoding) {
535switch (Encoding) {
536// Macinfo Type Encodings
537caseDW_MACINFO_define:
538return"DW_MACINFO_define";
539caseDW_MACINFO_undef:
540return"DW_MACINFO_undef";
541caseDW_MACINFO_start_file:
542return"DW_MACINFO_start_file";
543caseDW_MACINFO_end_file:
544return"DW_MACINFO_end_file";
545caseDW_MACINFO_vendor_ext:
546return"DW_MACINFO_vendor_ext";
547caseDW_MACINFO_invalid:
548return"DW_MACINFO_invalid";
549 }
550returnStringRef();
551}
552
553unsignedllvm::dwarf::getMacinfo(StringRefMacinfoString) {
554returnStringSwitch<unsigned>(MacinfoString)
555 .Case("DW_MACINFO_define",DW_MACINFO_define)
556 .Case("DW_MACINFO_undef",DW_MACINFO_undef)
557 .Case("DW_MACINFO_start_file",DW_MACINFO_start_file)
558 .Case("DW_MACINFO_end_file",DW_MACINFO_end_file)
559 .Case("DW_MACINFO_vendor_ext",DW_MACINFO_vendor_ext)
560 .Default(DW_MACINFO_invalid);
561}
562
563StringRefllvm::dwarf::MacroString(unsigned Encoding) {
564switch (Encoding) {
565default:
566returnStringRef();
567#define HANDLE_DW_MACRO(ID, NAME) \
568 case DW_MACRO_##NAME: \
569 return "DW_MACRO_" #NAME;
570#include "llvm/BinaryFormat/Dwarf.def"
571 }
572}
573
574StringRefllvm::dwarf::GnuMacroString(unsigned Encoding) {
575switch (Encoding) {
576default:
577returnStringRef();
578#define HANDLE_DW_MACRO_GNU(ID, NAME) \
579 case DW_MACRO_GNU_##NAME: \
580 return "DW_MACRO_GNU_" #NAME;
581#include "llvm/BinaryFormat/Dwarf.def"
582 }
583}
584
585unsignedllvm::dwarf::getMacro(StringRefMacroString) {
586returnStringSwitch<unsigned>(MacroString)
587#define HANDLE_DW_MACRO(ID, NAME) .Case("DW_MACRO_" #NAME, ID)
588#include "llvm/BinaryFormat/Dwarf.def"
589 .Default(DW_MACINFO_invalid);
590}
591StringRefllvm::dwarf::RangeListEncodingString(unsigned Encoding) {
592switch (Encoding) {
593default:
594returnStringRef();
595#define HANDLE_DW_RLE(ID, NAME) \
596 case DW_RLE_##NAME: \
597 return "DW_RLE_" #NAME;
598#include "llvm/BinaryFormat/Dwarf.def"
599 }
600}
601
602StringRefllvm::dwarf::LocListEncodingString(unsigned Encoding) {
603switch (Encoding) {
604default:
605returnStringRef();
606#define HANDLE_DW_LLE(ID, NAME) \
607 case DW_LLE_##NAME: \
608 return "DW_LLE_" #NAME;
609#include "llvm/BinaryFormat/Dwarf.def"
610 }
611}
612
613StringRefllvm::dwarf::CallFrameString(unsigned Encoding,
614Triple::ArchType Arch) {
615assert(Arch !=llvm::Triple::ArchType::UnknownArch);
616#define SELECT_AARCH64 (Arch == llvm::Triple::aarch64_be || Arch == llvm::Triple::aarch64)
617#define SELECT_MIPS64 Arch == llvm::Triple::mips64
618#define SELECT_SPARC (Arch == llvm::Triple::sparc || Arch == llvm::Triple::sparcv9)
619#define SELECT_X86 (Arch == llvm::Triple::x86 || Arch == llvm::Triple::x86_64)
620#define HANDLE_DW_CFA(ID, NAME)
621#define HANDLE_DW_CFA_PRED(ID, NAME, PRED) \
622 if (ID == Encoding && PRED) \
623 return "DW_CFA_" #NAME;
624#include "llvm/BinaryFormat/Dwarf.def"
625
626switch (Encoding) {
627default:
628returnStringRef();
629#define HANDLE_DW_CFA_PRED(ID, NAME, PRED)
630#define HANDLE_DW_CFA(ID, NAME) \
631 case DW_CFA_##NAME: \
632 return "DW_CFA_" #NAME;
633#include "llvm/BinaryFormat/Dwarf.def"
634
635#undef SELECT_X86
636#undef SELECT_SPARC
637#undef SELECT_MIPS64
638#undef SELECT_AARCH64
639 }
640}
641
642StringRefllvm::dwarf::ApplePropertyString(unsigned Prop) {
643switch (Prop) {
644default:
645returnStringRef();
646#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) \
647 case DW_APPLE_PROPERTY_##NAME: \
648 return "DW_APPLE_PROPERTY_" #NAME;
649#include "llvm/BinaryFormat/Dwarf.def"
650 }
651}
652
653StringRefllvm::dwarf::UnitTypeString(unsigned UT) {
654switch (UT) {
655default:
656returnStringRef();
657#define HANDLE_DW_UT(ID, NAME) \
658 case DW_UT_##NAME: \
659 return "DW_UT_" #NAME;
660#include "llvm/BinaryFormat/Dwarf.def"
661 }
662}
663
664StringRefllvm::dwarf::AtomTypeString(unsigned AT) {
665switch (AT) {
666casedwarf::DW_ATOM_null:
667return"DW_ATOM_null";
668casedwarf::DW_ATOM_die_offset:
669return"DW_ATOM_die_offset";
670caseDW_ATOM_cu_offset:
671return"DW_ATOM_cu_offset";
672caseDW_ATOM_die_tag:
673return"DW_ATOM_die_tag";
674caseDW_ATOM_type_flags:
675caseDW_ATOM_type_type_flags:
676return"DW_ATOM_type_flags";
677caseDW_ATOM_qual_name_hash:
678return"DW_ATOM_qual_name_hash";
679 }
680returnStringRef();
681}
682
683StringRefllvm::dwarf::GDBIndexEntryKindString(GDBIndexEntryKind Kind) {
684switch (Kind) {
685caseGIEK_NONE:
686return"NONE";
687caseGIEK_TYPE:
688return"TYPE";
689caseGIEK_VARIABLE:
690return"VARIABLE";
691caseGIEK_FUNCTION:
692return"FUNCTION";
693caseGIEK_OTHER:
694return"OTHER";
695caseGIEK_UNUSED5:
696return"UNUSED5";
697caseGIEK_UNUSED6:
698return"UNUSED6";
699caseGIEK_UNUSED7:
700return"UNUSED7";
701 }
702llvm_unreachable("Unknown GDBIndexEntryKind value");
703}
704
705StringRef
706llvm::dwarf::GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage) {
707switch (Linkage) {
708caseGIEL_EXTERNAL:
709return"EXTERNAL";
710caseGIEL_STATIC:
711return"STATIC";
712 }
713llvm_unreachable("Unknown GDBIndexEntryLinkage value");
714}
715
716StringRefllvm::dwarf::AttributeValueString(uint16_t Attr,unsigned Val) {
717switch (Attr) {
718case DW_AT_accessibility:
719returnAccessibilityString(Val);
720case DW_AT_virtuality:
721returnVirtualityString(Val);
722case DW_AT_language:
723returnLanguageString(Val);
724case DW_AT_encoding:
725returnAttributeEncodingString(Val);
726case DW_AT_decimal_sign:
727returnDecimalSignString(Val);
728case DW_AT_endianity:
729returnEndianityString(Val);
730case DW_AT_visibility:
731returnVisibilityString(Val);
732case DW_AT_identifier_case:
733returnCaseString(Val);
734case DW_AT_calling_convention:
735returnConventionString(Val);
736case DW_AT_inline:
737returnInlineCodeString(Val);
738case DW_AT_ordering:
739returnArrayOrderString(Val);
740case DW_AT_APPLE_runtime_class:
741returnLanguageString(Val);
742case DW_AT_defaulted:
743returnDefaultedMemberString(Val);
744 }
745
746returnStringRef();
747}
748
749StringRefllvm::dwarf::AtomValueString(uint16_t Atom,unsigned Val) {
750switch (Atom) {
751caseDW_ATOM_null:
752return"NULL";
753caseDW_ATOM_die_tag:
754returnTagString(Val);
755 }
756
757returnStringRef();
758}
759
760StringRefllvm::dwarf::IndexString(unsignedIdx) {
761switch (Idx) {
762default:
763returnStringRef();
764#define HANDLE_DW_IDX(ID, NAME) \
765 case DW_IDX_##NAME: \
766 return "DW_IDX_" #NAME;
767#include "llvm/BinaryFormat/Dwarf.def"
768 }
769}
770
771std::optional<uint8_t>llvm::dwarf::getFixedFormByteSize(dwarf::FormForm,
772FormParams Params) {
773switch (Form) {
774case DW_FORM_addr:
775if (Params)
776return Params.AddrSize;
777return std::nullopt;
778
779case DW_FORM_block:// ULEB128 length L followed by L bytes.
780case DW_FORM_block1:// 1 byte length L followed by L bytes.
781case DW_FORM_block2:// 2 byte length L followed by L bytes.
782case DW_FORM_block4:// 4 byte length L followed by L bytes.
783case DW_FORM_string:// C-string with null terminator.
784case DW_FORM_sdata:// SLEB128.
785case DW_FORM_udata:// ULEB128.
786case DW_FORM_ref_udata:// ULEB128.
787case DW_FORM_indirect:// ULEB128.
788case DW_FORM_exprloc:// ULEB128 length L followed by L bytes.
789case DW_FORM_strx:// ULEB128.
790case DW_FORM_addrx:// ULEB128.
791case DW_FORM_loclistx:// ULEB128.
792case DW_FORM_rnglistx:// ULEB128.
793case DW_FORM_GNU_addr_index:// ULEB128.
794case DW_FORM_GNU_str_index:// ULEB128.
795return std::nullopt;
796
797case DW_FORM_ref_addr:
798if (Params)
799return Params.getRefAddrByteSize();
800return std::nullopt;
801
802case DW_FORM_flag:
803case DW_FORM_data1:
804case DW_FORM_ref1:
805case DW_FORM_strx1:
806case DW_FORM_addrx1:
807return 1;
808
809case DW_FORM_data2:
810case DW_FORM_ref2:
811case DW_FORM_strx2:
812case DW_FORM_addrx2:
813return 2;
814
815case DW_FORM_strx3:
816case DW_FORM_addrx3:
817return 3;
818
819case DW_FORM_data4:
820case DW_FORM_ref4:
821case DW_FORM_ref_sup4:
822case DW_FORM_strx4:
823case DW_FORM_addrx4:
824return 4;
825
826case DW_FORM_strp:
827case DW_FORM_GNU_ref_alt:
828case DW_FORM_GNU_strp_alt:
829case DW_FORM_line_strp:
830case DW_FORM_sec_offset:
831case DW_FORM_strp_sup:
832if (Params)
833return Params.getDwarfOffsetByteSize();
834return std::nullopt;
835
836case DW_FORM_data8:
837case DW_FORM_ref8:
838case DW_FORM_ref_sig8:
839case DW_FORM_ref_sup8:
840return 8;
841
842case DW_FORM_flag_present:
843return 0;
844
845case DW_FORM_data16:
846return 16;
847
848case DW_FORM_implicit_const:
849// The implicit value is stored in the abbreviation as a SLEB128, and
850// there no data in debug info.
851return 0;
852
853default:
854break;
855 }
856return std::nullopt;
857}
858
859boolllvm::dwarf::isValidFormForVersion(FormF,unsigned Version,
860bool ExtensionsOk) {
861if (FormVendor(F) ==DWARF_VENDOR_DWARF) {
862unsigned FV =FormVersion(F);
863return FV > 0 && FV <= Version;
864 }
865return ExtensionsOk;
866}
867
868StringRefllvm::dwarf::FormatString(DwarfFormat Format) {
869switch (Format) {
870caseDWARF32:
871return"DWARF32";
872caseDWARF64:
873return"DWARF64";
874 }
875returnStringRef();
876}
877
878StringRefllvm::dwarf::FormatString(bool IsDWARF64) {
879returnFormatString(IsDWARF64 ?DWARF64 :DWARF32);
880}
881
882StringRefllvm::dwarf::RLEString(unsigned RLE) {
883switch (RLE) {
884default:
885returnStringRef();
886#define HANDLE_DW_RLE(ID, NAME) \
887 case DW_RLE_##NAME: \
888 return "DW_RLE_" #NAME;
889#include "llvm/BinaryFormat/Dwarf.def"
890 }
891}
892
893constexprcharllvm::dwarf::EnumTraits<Attribute>::Type[];
894constexprcharllvm::dwarf::EnumTraits<Form>::Type[];
895constexprcharllvm::dwarf::EnumTraits<Index>::Type[];
896constexprcharllvm::dwarf::EnumTraits<Tag>::Type[];
897constexprcharllvm::dwarf::EnumTraits<LineNumberOps>::Type[];
898constexprcharllvm::dwarf::EnumTraits<LocationAtom>::Type[];
Access
DXIL Resource Access
Definition:DXILResourceAccess.cpp:296
Idx
Returns the sub type a function will return at a given Idx Should correspond to the result type of an ExtractValue instruction executed with just that one unsigned Idx
Definition:DeadArgumentElimination.cpp:353
getLlvmUserOperationEncoding
static unsigned getLlvmUserOperationEncoding(StringRef LlvmUserOperationEncodingString)
Definition:Dwarf.cpp:193
LlvmUserOperationEncodingString
static StringRef LlvmUserOperationEncodingString(unsigned Encoding)
Definition:Dwarf.cpp:181
Dwarf.h
This file contains constants used for implementing Dwarf debug support.
F
#define F(x, y, z)
Definition:MD5.cpp:55
CC
auto CC
Definition:RISCVRedundantCopyElimination.cpp:79
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Endian
endianness Endian
Definition:SampleProfWriter.cpp:52
StringSwitch.h
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
Triple.h
llvm::DWARFExpression::Operation
This class represents an Operation in the Expression.
Definition:DWARFExpression.h:32
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:StringRef.h:51
llvm::StringSwitch
A switch()-like statement whose cases are string literals.
Definition:StringSwitch.h:44
llvm::StringSwitch::Case
StringSwitch & Case(StringLiteral S, T Value)
Definition:StringSwitch.h:69
llvm::StringSwitch::Default
R Default(T Value)
Definition:StringSwitch.h:182
llvm::Triple::ArchType
ArchType
Definition:Triple.h:46
llvm::Triple::UnknownArch
@ UnknownArch
Definition:Triple.h:47
uint16_t
llvm::dwarf::LNExtendedString
StringRef LNExtendedString(unsigned Encoding)
Definition:Dwarf.cpp:523
llvm::dwarf::RangeListEncodingString
StringRef RangeListEncodingString(unsigned Encoding)
Definition:Dwarf.cpp:591
llvm::dwarf::CaseString
StringRef CaseString(unsigned Case)
Definition:Dwarf.cpp:456
llvm::dwarf::VisibilityString
StringRef VisibilityString(unsigned Visibility)
Definition:Dwarf.cpp:362
llvm::dwarf::GDBIndexEntryLinkageString
StringRef GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage)
Definition:Dwarf.cpp:706
llvm::dwarf::AttributeString
StringRef AttributeString(unsigned Attribute)
Definition:Dwarf.cpp:72
llvm::dwarf::CallFrameString
StringRef CallFrameString(unsigned Encoding, Triple::ArchType Arch)
Definition:Dwarf.cpp:613
llvm::dwarf::FormEncodingString
StringRef FormEncodingString(unsigned Encoding)
Definition:Dwarf.cpp:105
llvm::dwarf::ArrayOrderString
StringRef ArrayOrderString(unsigned Order)
Definition:Dwarf.cpp:502
llvm::dwarf::MacroString
StringRef MacroString(unsigned Encoding)
Definition:Dwarf.cpp:563
llvm::dwarf::LocListEncodingString
StringRef LocListEncodingString(unsigned Encoding)
Definition:Dwarf.cpp:602
llvm::dwarf::IndexString
StringRef IndexString(unsigned Idx)
Definition:Dwarf.cpp:760
llvm::dwarf::RLEString
StringRef RLEString(unsigned RLE)
Definition:Dwarf.cpp:882
llvm::dwarf::SubOperationEncodingString
StringRef SubOperationEncodingString(unsigned OpEncoding, unsigned SubOpEncoding)
Definition:Dwarf.cpp:202
llvm::dwarf::LanguageString
StringRef LanguageString(unsigned Language)
Definition:Dwarf.cpp:393
llvm::dwarf::DecimalSignString
StringRef DecimalSignString(unsigned Sign)
Definition:Dwarf.cpp:304
llvm::dwarf::VirtualityString
StringRef VirtualityString(unsigned Virtuality)
Definition:Dwarf.cpp:374
llvm::dwarf::AttributeEncodingString
StringRef AttributeEncodingString(unsigned Encoding)
Definition:Dwarf.cpp:263
llvm::dwarf::ChildrenString
StringRef ChildrenString(unsigned Children)
Definition:Dwarf.cpp:62
llvm::dwarf::ApplePropertyString
StringRef ApplePropertyString(unsigned)
Definition:Dwarf.cpp:642
llvm::dwarf::AtomTypeString
StringRef AtomTypeString(unsigned Atom)
Definition:Dwarf.cpp:664
llvm::dwarf::FormatString
StringRef FormatString(DwarfFormat Format)
Definition:Dwarf.cpp:868
llvm::dwarf::GnuMacroString
StringRef GnuMacroString(unsigned Encoding)
Definition:Dwarf.cpp:574
llvm::dwarf::EndianityString
StringRef EndianityString(unsigned Endian)
Definition:Dwarf.cpp:320
llvm::dwarf::ConventionString
StringRef ConventionString(unsigned Convention)
Definition:Dwarf.cpp:470
llvm::dwarf::MacinfoString
StringRef MacinfoString(unsigned Encoding)
Definition:Dwarf.cpp:534
llvm::dwarf::OperationEncodingString
StringRef OperationEncodingString(unsigned Encoding)
Definition:Dwarf.cpp:138
llvm::dwarf::UnitTypeString
StringRef UnitTypeString(unsigned)
Definition:Dwarf.cpp:653
llvm::dwarf::InlineCodeString
StringRef InlineCodeString(unsigned Code)
Definition:Dwarf.cpp:488
llvm::dwarf::GDBIndexEntryKindString
StringRef GDBIndexEntryKindString(GDBIndexEntryKind Kind)
Definition:Dwarf.cpp:683
llvm::dwarf::TagString
StringRef TagString(unsigned Tag)
Definition:Dwarf.cpp:21
llvm::dwarf::LNStandardString
StringRef LNStandardString(unsigned Standard)
Definition:Dwarf.cpp:512
llvm::dwarf::AccessibilityString
StringRef AccessibilityString(unsigned Access)
Definition:Dwarf.cpp:336
llvm::dwarf::DefaultedMemberString
StringRef DefaultedMemberString(unsigned DefaultedEncodings)
Definition:Dwarf.cpp:349
llvm::dwarf::getSubOperationEncoding
unsigned getSubOperationEncoding(unsigned OpEncoding, StringRef SubOperationEncodingString)
Definition:Dwarf.cpp:209
llvm::dwarf::getOperationEncoding
unsigned getOperationEncoding(StringRef OperationEncodingString)
Definition:Dwarf.cpp:165
llvm::dwarf::getAttributeEncoding
unsigned getAttributeEncoding(StringRef EncodingString)
Definition:Dwarf.cpp:274
llvm::dwarf::getTag
unsigned getTag(StringRef TagString)
Definition:Dwarf.cpp:32
llvm::dwarf::getCallingConvention
unsigned getCallingConvention(StringRef LanguageString)
Definition:Dwarf.cpp:481
llvm::dwarf::getLanguage
unsigned getLanguage(StringRef LanguageString)
Definition:Dwarf.cpp:404
llvm::dwarf::getVirtuality
unsigned getVirtuality(StringRef VirtualityString)
Definition:Dwarf.cpp:385
llvm::dwarf::getMacro
unsigned getMacro(StringRef MacroString)
Definition:Dwarf.cpp:585
llvm::dwarf::getMacinfo
unsigned getMacinfo(StringRef MacinfoString)
Definition:Dwarf.cpp:553
llvm::dwarf::AttributeEncodingVendor
unsigned AttributeEncodingVendor(TypeKind E)
Definition:Dwarf.cpp:293
llvm::dwarf::FormVendor
unsigned FormVendor(Form F)
Definition:Dwarf.cpp:127
llvm::dwarf::AttributeVendor
unsigned AttributeVendor(Attribute A)
Definition:Dwarf.cpp:94
llvm::dwarf::OperationVendor
unsigned OperationVendor(LocationAtom O)
Definition:Dwarf.cpp:252
llvm::dwarf::TagVendor
unsigned TagVendor(Tag T)
Definition:Dwarf.cpp:51
llvm::dwarf::LanguageVendor
unsigned LanguageVendor(SourceLanguage L)
Definition:Dwarf.cpp:423
llvm::dwarf::OperationVersion
unsigned OperationVersion(LocationAtom O)
Definition:Dwarf.cpp:215
llvm::dwarf::AttributeVersion
unsigned AttributeVersion(Attribute A)
Definition:Dwarf.cpp:83
llvm::dwarf::LanguageVersion
unsigned LanguageVersion(SourceLanguage L)
Definition:Dwarf.cpp:412
llvm::dwarf::AttributeEncodingVersion
unsigned AttributeEncodingVersion(TypeKind E)
Definition:Dwarf.cpp:282
llvm::dwarf::TagVersion
unsigned TagVersion(Tag T)
Definition:Dwarf.cpp:40
llvm::dwarf::FormVersion
unsigned FormVersion(Form F)
Definition:Dwarf.cpp:116
ErrorHandling.h
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:ErrorHandling.h:143
llvm::dwarf::DW_INL_not_inlined
@ DW_INL_not_inlined
Definition:Dwarf.h:755
llvm::dwarf::DW_INL_declared_not_inlined
@ DW_INL_declared_not_inlined
Definition:Dwarf.h:757
llvm::dwarf::DW_INL_inlined
@ DW_INL_inlined
Definition:Dwarf.h:756
llvm::dwarf::DW_INL_declared_inlined
@ DW_INL_declared_inlined
Definition:Dwarf.h:758
llvm::dwarf::DW_ACCESS_private
@ DW_ACCESS_private
Definition:Dwarf.h:185
llvm::dwarf::DW_ACCESS_protected
@ DW_ACCESS_protected
Definition:Dwarf.h:184
llvm::dwarf::DW_ACCESS_public
@ DW_ACCESS_public
Definition:Dwarf.h:183
llvm::dwarf::Attribute
Attribute
Attributes.
Definition:Dwarf.h:123
llvm::dwarf::LanguageLowerBound
std::optional< unsigned > LanguageLowerBound(SourceLanguage L)
Definition:Dwarf.cpp:435
llvm::dwarf::AtomValueString
StringRef AtomValueString(uint16_t Atom, unsigned Val)
Returns the symbolic string representing Val when used as a value for atom Atom.
Definition:Dwarf.cpp:749
llvm::dwarf::SourceLanguageName
SourceLanguageName
Definition:Dwarf.h:215
llvm::dwarf::OperationArity
std::optional< unsigned > OperationArity(LocationAtom O)
The arity of the given LocationAtom.
Definition:Dwarf.cpp:239
llvm::dwarf::DW_VIS_local
@ DW_VIS_local
Definition:Dwarf.h:190
llvm::dwarf::DW_VIS_exported
@ DW_VIS_exported
Definition:Dwarf.h:191
llvm::dwarf::DW_VIS_qualified
@ DW_VIS_qualified
Definition:Dwarf.h:192
llvm::dwarf::DW_ORD_row_major
@ DW_ORD_row_major
Definition:Dwarf.h:763
llvm::dwarf::DW_ORD_col_major
@ DW_ORD_col_major
Definition:Dwarf.h:764
llvm::dwarf::TypeKind
TypeKind
Definition:Dwarf.h:157
llvm::dwarf::Form
Form
Definition:Dwarf.h:130
llvm::dwarf::DW_END_lo_user
@ DW_END_lo_user
Definition:Dwarf.h:177
llvm::dwarf::DW_END_hi_user
@ DW_END_hi_user
Definition:Dwarf.h:178
llvm::dwarf::LocationAtom
LocationAtom
Definition:Dwarf.h:136
llvm::dwarf::DW_OP_LLVM_entry_value
@ DW_OP_LLVM_entry_value
Only used in LLVM metadata.
Definition:Dwarf.h:145
llvm::dwarf::DW_OP_LLVM_implicit_pointer
@ DW_OP_LLVM_implicit_pointer
Only used in LLVM metadata.
Definition:Dwarf.h:146
llvm::dwarf::DW_OP_LLVM_extract_bits_zext
@ DW_OP_LLVM_extract_bits_zext
Only used in LLVM metadata.
Definition:Dwarf.h:149
llvm::dwarf::DW_OP_LLVM_tag_offset
@ DW_OP_LLVM_tag_offset
Only used in LLVM metadata.
Definition:Dwarf.h:144
llvm::dwarf::DW_OP_LLVM_fragment
@ DW_OP_LLVM_fragment
Only used in LLVM metadata.
Definition:Dwarf.h:142
llvm::dwarf::DW_OP_LLVM_arg
@ DW_OP_LLVM_arg
Only used in LLVM metadata.
Definition:Dwarf.h:147
llvm::dwarf::DW_OP_LLVM_convert
@ DW_OP_LLVM_convert
Only used in LLVM metadata.
Definition:Dwarf.h:143
llvm::dwarf::DW_OP_LLVM_extract_bits_sext
@ DW_OP_LLVM_extract_bits_sext
Only used in LLVM metadata.
Definition:Dwarf.h:148
llvm::dwarf::SourceLanguage
SourceLanguage
Definition:Dwarf.h:207
llvm::dwarf::DW_ID_down_case
@ DW_ID_down_case
Definition:Dwarf.h:741
llvm::dwarf::DW_ID_case_insensitive
@ DW_ID_case_insensitive
Definition:Dwarf.h:742
llvm::dwarf::DW_ID_case_sensitive
@ DW_ID_case_sensitive
Definition:Dwarf.h:739
llvm::dwarf::DW_ID_up_case
@ DW_ID_up_case
Definition:Dwarf.h:740
llvm::dwarf::DwarfFormat
DwarfFormat
Constants that define the DWARF format as 32 or 64 bit.
Definition:Dwarf.h:91
llvm::dwarf::DWARF64
@ DWARF64
Definition:Dwarf.h:91
llvm::dwarf::DWARF32
@ DWARF32
Definition:Dwarf.h:91
llvm::dwarf::isValidFormForVersion
bool isValidFormForVersion(Form F, unsigned Version, bool ExtensionsOk=true)
Tells whether the specified form is defined in the specified version, or is an extension if extension...
Definition:Dwarf.cpp:859
llvm::dwarf::DW_MACINFO_undef
@ DW_MACINFO_undef
Definition:Dwarf.h:797
llvm::dwarf::DW_MACINFO_start_file
@ DW_MACINFO_start_file
Definition:Dwarf.h:798
llvm::dwarf::DW_MACINFO_end_file
@ DW_MACINFO_end_file
Definition:Dwarf.h:799
llvm::dwarf::DW_MACINFO_define
@ DW_MACINFO_define
Definition:Dwarf.h:796
llvm::dwarf::DW_MACINFO_vendor_ext
@ DW_MACINFO_vendor_ext
Definition:Dwarf.h:800
llvm::dwarf::getFixedFormByteSize
std::optional< uint8_t > getFixedFormByteSize(dwarf::Form Form, FormParams Params)
Get the fixed byte size for a given form.
Definition:Dwarf.cpp:771
llvm::dwarf::GDBIndexEntryKind
GDBIndexEntryKind
Definition:Dwarf.h:950
llvm::dwarf::GIEK_NONE
@ GIEK_NONE
Definition:Dwarf.h:951
llvm::dwarf::GIEK_UNUSED7
@ GIEK_UNUSED7
Definition:Dwarf.h:958
llvm::dwarf::GIEK_TYPE
@ GIEK_TYPE
Definition:Dwarf.h:952
llvm::dwarf::GIEK_UNUSED6
@ GIEK_UNUSED6
Definition:Dwarf.h:957
llvm::dwarf::GIEK_OTHER
@ GIEK_OTHER
Definition:Dwarf.h:955
llvm::dwarf::GIEK_FUNCTION
@ GIEK_FUNCTION
Definition:Dwarf.h:954
llvm::dwarf::GIEK_UNUSED5
@ GIEK_UNUSED5
Definition:Dwarf.h:956
llvm::dwarf::GIEK_VARIABLE
@ GIEK_VARIABLE
Definition:Dwarf.h:953
llvm::dwarf::DW_CHILDREN_no
@ DW_CHILDREN_no
Definition:Dwarf.h:844
llvm::dwarf::DW_CHILDREN_yes
@ DW_CHILDREN_yes
Definition:Dwarf.h:845
llvm::dwarf::AttributeValueString
StringRef AttributeValueString(uint16_t Attr, unsigned Val)
Returns the symbolic string representing Val when used as a value for attribute Attr.
Definition:Dwarf.cpp:716
llvm::dwarf::OperationOperands
std::optional< unsigned > OperationOperands(LocationAtom O)
The number of operands for the given LocationAtom.
Definition:Dwarf.cpp:226
llvm::dwarf::Tag
Tag
Definition:Dwarf.h:103
llvm::dwarf::DW_DS_leading_separate
@ DW_DS_leading_separate
Definition:Dwarf.h:169
llvm::dwarf::DW_DS_trailing_separate
@ DW_DS_trailing_separate
Definition:Dwarf.h:170
llvm::dwarf::DW_DS_trailing_overpunch
@ DW_DS_trailing_overpunch
Definition:Dwarf.h:168
llvm::dwarf::DW_DS_leading_overpunch
@ DW_DS_leading_overpunch
Definition:Dwarf.h:167
llvm::dwarf::DW_DS_unsigned
@ DW_DS_unsigned
Definition:Dwarf.h:166
llvm::dwarf::LanguageDescription
llvm::StringRef LanguageDescription(SourceLanguageName name)
Definition:Dwarf.cpp:446
llvm::dwarf::DW_ATOM_type_flags
@ DW_ATOM_type_flags
Definition:Dwarf.h:923
llvm::dwarf::DW_ATOM_null
@ DW_ATOM_null
Definition:Dwarf.h:918
llvm::dwarf::DW_ATOM_die_tag
@ DW_ATOM_die_tag
Definition:Dwarf.h:922
llvm::dwarf::DW_ATOM_qual_name_hash
@ DW_ATOM_qual_name_hash
Definition:Dwarf.h:926
llvm::dwarf::DW_ATOM_die_offset
@ DW_ATOM_die_offset
Marker as the end of a list of atoms.
Definition:Dwarf.h:919
llvm::dwarf::DW_ATOM_type_type_flags
@ DW_ATOM_type_type_flags
Definition:Dwarf.h:925
llvm::dwarf::DW_ATOM_cu_offset
@ DW_ATOM_cu_offset
Definition:Dwarf.h:920
llvm::dwarf::DW_TAG_invalid
@ DW_TAG_invalid
LLVM mock tags (see also llvm/BinaryFormat/Dwarf.def).
Definition:Dwarf.h:47
llvm::dwarf::DW_MACINFO_invalid
@ DW_MACINFO_invalid
Macinfo type for invalid results.
Definition:Dwarf.h:49
llvm::dwarf::DW_VIRTUALITY_invalid
@ DW_VIRTUALITY_invalid
Virtuality for invalid results.
Definition:Dwarf.h:48
llvm::dwarf::DWARF_VENDOR_DWARF
@ DWARF_VENDOR_DWARF
Identifiers we use to distinguish vendor extensions.
Definition:Dwarf.h:69
llvm::dwarf::GDBIndexEntryLinkage
GDBIndexEntryLinkage
Definition:Dwarf.h:961
llvm::dwarf::GIEL_EXTERNAL
@ GIEL_EXTERNAL
Definition:Dwarf.h:961
llvm::dwarf::GIEL_STATIC
@ GIEL_STATIC
Definition:Dwarf.h:961
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:AddressRanges.h:18
llvm::dwarf::EnumTraits
Definition:Dwarf.h:1180
llvm::dwarf::FormParams
A helper struct providing information about the byte size of DW_FORM values that vary in size dependi...
Definition:Dwarf.h:1084
llvm::dwarf::FormParams::getDwarfOffsetByteSize
uint8_t getDwarfOffsetByteSize() const
The size of a reference is determined by the DWARF 32/64-bit format.
Definition:Dwarf.h:1102
llvm::dwarf::FormParams::getRefAddrByteSize
uint8_t getRefAddrByteSize() const
The definition of the size of form DW_FORM_ref_addr depends on the version.
Definition:Dwarf.h:1095
llvm::dwarf::FormParams::AddrSize
uint8_t AddrSize
Definition:Dwarf.h:1086

Generated on Thu Jul 17 2025 11:07:25 for LLVM by doxygen 1.9.6
[8]ページ先頭

©2009-2025 Movatter.jp