25#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
27 return "DW_TAG_" #NAME;
28#include "llvm/BinaryFormat/Dwarf.def"
34#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
35 .Case("DW_TAG_" #NAME, DW_TAG_##NAME)
36#include "llvm/BinaryFormat/Dwarf.def"
44#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
47#include "llvm/BinaryFormat/Dwarf.def"
55#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
57 return DWARF_VENDOR_##VENDOR;
58#include "llvm/BinaryFormat/Dwarf.def"
65 return "DW_CHILDREN_no";
67 return "DW_CHILDREN_yes";
76#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) \
78 return "DW_AT_" #NAME;
79#include "llvm/BinaryFormat/Dwarf.def"
87#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) \
90#include "llvm/BinaryFormat/Dwarf.def"
98#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) \
100 return DWARF_VENDOR_##VENDOR;
101#include "llvm/BinaryFormat/Dwarf.def"
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"
120#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) \
121 case DW_FORM_##NAME: \
123#include "llvm/BinaryFormat/Dwarf.def"
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"
142#define HANDLE_DW_OP(ID, NAME, VERSION, VENDOR) \
144 return "DW_OP_" #NAME;
145#include "llvm/BinaryFormat/Dwarf.def"
147 return "DW_OP_LLVM_convert";
149 return "DW_OP_LLVM_fragment";
151 return "DW_OP_LLVM_tag_offset";
153 return "DW_OP_LLVM_entry_value";
155 return "DW_OP_LLVM_implicit_pointer";
157 return "DW_OP_LLVM_arg";
163#define HANDLE_DW_OP(ID, NAME, VERSION, VENDOR) \
164 .Case("DW_OP_" #NAME, DW_OP_##NAME)
165#include "llvm/BinaryFormat/Dwarf.def"
179#define HANDLE_DW_OP(ID, NAME, VERSION, VENDOR) \
182#include "llvm/BinaryFormat/Dwarf.def"
190#define HANDLE_DW_OP(ID, NAME, VERSION, VENDOR) \
192 return DWARF_VENDOR_##VENDOR;
193#include "llvm/BinaryFormat/Dwarf.def"
201#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
202 case DW_ATE_##NAME: \
203 return "DW_ATE_" #NAME;
204#include "llvm/BinaryFormat/Dwarf.def"
210#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
211 .Case("DW_ATE_" #NAME, DW_ATE_##NAME)
212#include "llvm/BinaryFormat/Dwarf.def"
220#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
221 case DW_ATE_##NAME: \
223#include "llvm/BinaryFormat/Dwarf.def"
231#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) \
232 case DW_ATE_##NAME: \
233 return DWARF_VENDOR_##VENDOR;
234#include "llvm/BinaryFormat/Dwarf.def"
241 return "DW_DS_unsigned";
243 return "DW_DS_leading_overpunch";
245 return "DW_DS_trailing_overpunch";
247 return "DW_DS_leading_separate";
249 return "DW_DS_trailing_separate";
257 return "DW_END_default";
261 return "DW_END_little";
263 return "DW_END_lo_user";
265 return "DW_END_hi_user";
274 return "DW_ACCESS_public";
276 return "DW_ACCESS_protected";
278 return "DW_ACCESS_private";
284 switch (DefaultedEncodings) {
286 case DW_DEFAULTED_no:
287 return "DW_DEFAULTED_no";
288 case DW_DEFAULTED_in_class:
289 return "DW_DEFAULTED_in_class";
290 case DW_DEFAULTED_out_of_class:
291 return "DW_DEFAULTED_out_of_class";
297 switch (Visibility) {
299 return "DW_VIS_local";
301 return "DW_VIS_exported";
303 return "DW_VIS_qualified";
309 switch (Virtuality) {
312#define HANDLE_DW_VIRTUALITY(ID, NAME) \
313 case DW_VIRTUALITY_##NAME: \
314 return "DW_VIRTUALITY_" #NAME;
315#include "llvm/BinaryFormat/Dwarf.def"
321#define HANDLE_DW_VIRTUALITY(ID, NAME) \
322 .Case("DW_VIRTUALITY_" #NAME, DW_VIRTUALITY_##NAME)
323#include "llvm/BinaryFormat/Dwarf.def"
331#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
332 case DW_LANG_##NAME: \
333 return "DW_LANG_" #NAME;
334#include "llvm/BinaryFormat/Dwarf.def"
340#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
341 .Case("DW_LANG_" #NAME, DW_LANG_##NAME)
342#include "llvm/BinaryFormat/Dwarf.def"
350#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
351 case DW_LANG_##NAME: \
353#include "llvm/BinaryFormat/Dwarf.def"
361#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
362 case DW_LANG_##NAME: \
363 return DWARF_VENDOR_##VENDOR;
364#include "llvm/BinaryFormat/Dwarf.def"
368std::optional<unsigned>
373#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
374 case DW_LANG_##NAME: \
376#include "llvm/BinaryFormat/Dwarf.def"
383 return "DW_ID_case_sensitive";
385 return "DW_ID_up_case";
387 return "DW_ID_down_case";
389 return "DW_ID_case_insensitive";
398#define HANDLE_DW_CC(ID, NAME) \
400 return "DW_CC_" #NAME;
401#include "llvm/BinaryFormat/Dwarf.def"
407#define HANDLE_DW_CC(ID, NAME) .Case("DW_CC_" #NAME, DW_CC_##NAME)
408#include "llvm/BinaryFormat/Dwarf.def"
415 return "DW_INL_not_inlined";
417 return "DW_INL_inlined";
419 return "DW_INL_declared_not_inlined";
421 return "DW_INL_declared_inlined";
429 return "DW_ORD_row_major";
431 return "DW_ORD_col_major";
440#define HANDLE_DW_LNS(ID, NAME) \
441 case DW_LNS_##NAME: \
442 return "DW_LNS_" #NAME;
443#include "llvm/BinaryFormat/Dwarf.def"
451#define HANDLE_DW_LNE(ID, NAME) \
452 case DW_LNE_##NAME: \
453 return "DW_LNE_" #NAME;
454#include "llvm/BinaryFormat/Dwarf.def"
462 return "DW_MACINFO_define";
464 return "DW_MACINFO_undef";
466 return "DW_MACINFO_start_file";
468 return "DW_MACINFO_end_file";
470 return "DW_MACINFO_vendor_ext";
472 return "DW_MACINFO_invalid";
491#define HANDLE_DW_MACRO(ID, NAME) \
492 case DW_MACRO_##NAME: \
493 return "DW_MACRO_" #NAME;
494#include "llvm/BinaryFormat/Dwarf.def"
502#define HANDLE_DW_MACRO_GNU(ID, NAME) \
503 case DW_MACRO_GNU_##NAME: \
504 return "DW_MACRO_GNU_" #NAME;
505#include "llvm/BinaryFormat/Dwarf.def"
511#define HANDLE_DW_MACRO(ID, NAME) .Case("DW_MACRO_" #NAME, ID)
512#include "llvm/BinaryFormat/Dwarf.def"
519#define HANDLE_DW_RLE(ID, NAME) \
520 case DW_RLE_##NAME: \
521 return "DW_RLE_" #NAME;
522#include "llvm/BinaryFormat/Dwarf.def"
530#define HANDLE_DW_LLE(ID, NAME) \
531 case DW_LLE_##NAME: \
532 return "DW_LLE_" #NAME;
533#include "llvm/BinaryFormat/Dwarf.def"
540#define SELECT_AARCH64 (Arch == llvm::Triple::aarch64_be || Arch == llvm::Triple::aarch64)
541#define SELECT_MIPS64 Arch == llvm::Triple::mips64
542#define SELECT_SPARC (Arch == llvm::Triple::sparc || Arch == llvm::Triple::sparcv9)
543#define SELECT_X86 (Arch == llvm::Triple::x86 || Arch == llvm::Triple::x86_64)
544#define HANDLE_DW_CFA(ID, NAME)
545#define HANDLE_DW_CFA_PRED(ID, NAME, PRED) \
546 if (ID == Encoding && PRED) \
547 return "DW_CFA_" #NAME;
548#include "llvm/BinaryFormat/Dwarf.def"
553#define HANDLE_DW_CFA_PRED(ID, NAME, PRED)
554#define HANDLE_DW_CFA(ID, NAME) \
555 case DW_CFA_##NAME: \
556 return "DW_CFA_" #NAME;
557#include "llvm/BinaryFormat/Dwarf.def"
570#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) \
571 case DW_APPLE_PROPERTY_##NAME: \
572 return "DW_APPLE_PROPERTY_" #NAME;
573#include "llvm/BinaryFormat/Dwarf.def"
581#define HANDLE_DW_UT(ID, NAME) \
583 return "DW_UT_" #NAME;
584#include "llvm/BinaryFormat/Dwarf.def"
591 return "DW_ATOM_null";
593 return "DW_ATOM_die_offset";
595 return "DW_ATOM_cu_offset";
597 return "DW_ATOM_die_tag";
600 return "DW_ATOM_type_flags";
602 return "DW_ATOM_qual_name_hash";
642 case DW_AT_accessibility:
644 case DW_AT_virtuality:
650 case DW_AT_decimal_sign:
652 case DW_AT_endianity:
654 case DW_AT_visibility:
656 case DW_AT_identifier_case:
658 case DW_AT_calling_convention:
664 case DW_AT_APPLE_runtime_class:
666 case DW_AT_defaulted:
688#define HANDLE_DW_IDX(ID, NAME) \
689 case DW_IDX_##NAME: \
690 return "DW_IDX_" #NAME;
691#include "llvm/BinaryFormat/Dwarf.def"
710 case DW_FORM_ref_udata:
711 case DW_FORM_indirect:
712 case DW_FORM_exprloc:
715 case DW_FORM_loclistx:
716 case DW_FORM_rnglistx:
717 case DW_FORM_GNU_addr_index:
718 case DW_FORM_GNU_str_index:
721 case DW_FORM_ref_addr:
745 case DW_FORM_ref_sup4:
751 case DW_FORM_GNU_ref_alt:
752 case DW_FORM_GNU_strp_alt:
753 case DW_FORM_line_strp:
754 case DW_FORM_sec_offset:
755 case DW_FORM_strp_sup:
762 case DW_FORM_ref_sig8:
763 case DW_FORM_ref_sup8:
766 case DW_FORM_flag_present:
772 case DW_FORM_implicit_const:
787 return FV > 0 && FV <= Version;
810#define HANDLE_DW_RLE(ID, NAME) \
811 case DW_RLE_##NAME: \
812 return "DW_RLE_" #NAME;
813#include "llvm/BinaryFormat/Dwarf.def"
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
This file contains constants used for implementing Dwarf debug support.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
StringRef - Represent a constant reference to a string, i.e.
A switch()-like statement whose cases are string literals.
StringSwitch & Case(StringLiteral S, T Value)
StringRef LNExtendedString(unsigned Encoding)
StringRef RangeListEncodingString(unsigned Encoding)
StringRef CaseString(unsigned Case)
StringRef VisibilityString(unsigned Visibility)
StringRef GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage)
StringRef AttributeString(unsigned Attribute)
StringRef CallFrameString(unsigned Encoding, Triple::ArchType Arch)
StringRef FormEncodingString(unsigned Encoding)
StringRef ArrayOrderString(unsigned Order)
StringRef MacroString(unsigned Encoding)
StringRef LocListEncodingString(unsigned Encoding)
StringRef IndexString(unsigned Idx)
StringRef RLEString(unsigned RLE)
StringRef LanguageString(unsigned Language)
StringRef DecimalSignString(unsigned Sign)
StringRef VirtualityString(unsigned Virtuality)
StringRef AttributeEncodingString(unsigned Encoding)
StringRef ChildrenString(unsigned Children)
StringRef ApplePropertyString(unsigned)
StringRef AtomTypeString(unsigned Atom)
StringRef FormatString(DwarfFormat Format)
StringRef GnuMacroString(unsigned Encoding)
StringRef EndianityString(unsigned Endian)
StringRef ConventionString(unsigned Convention)
StringRef MacinfoString(unsigned Encoding)
StringRef OperationEncodingString(unsigned Encoding)
StringRef UnitTypeString(unsigned)
StringRef InlineCodeString(unsigned Code)
StringRef GDBIndexEntryKindString(GDBIndexEntryKind Kind)
StringRef TagString(unsigned Tag)
StringRef LNStandardString(unsigned Standard)
StringRef AccessibilityString(unsigned Access)
StringRef DefaultedMemberString(unsigned DefaultedEncodings)
unsigned getOperationEncoding(StringRef OperationEncodingString)
unsigned getAttributeEncoding(StringRef EncodingString)
unsigned getTag(StringRef TagString)
unsigned getCallingConvention(StringRef LanguageString)
unsigned getLanguage(StringRef LanguageString)
unsigned getVirtuality(StringRef VirtualityString)
unsigned getMacro(StringRef MacroString)
unsigned getMacinfo(StringRef MacinfoString)
unsigned AttributeEncodingVendor(TypeKind E)
unsigned FormVendor(Form F)
unsigned AttributeVendor(Attribute A)
unsigned OperationVendor(LocationAtom O)
unsigned TagVendor(Tag T)
unsigned LanguageVendor(SourceLanguage L)
unsigned OperationVersion(LocationAtom O)
unsigned AttributeVersion(Attribute A)
unsigned LanguageVersion(SourceLanguage L)
unsigned AttributeEncodingVersion(TypeKind E)
unsigned TagVersion(Tag T)
unsigned FormVersion(Form F)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ DW_INL_declared_not_inlined
@ DW_INL_declared_inlined
std::optional< unsigned > LanguageLowerBound(SourceLanguage L)
StringRef AtomValueString(uint16_t Atom, unsigned Val)
Returns the symbolic string representing Val when used as a value for atom Atom.
@ DW_OP_LLVM_entry_value
Only used in LLVM metadata.
@ DW_OP_LLVM_implicit_pointer
Only used in LLVM metadata.
@ DW_OP_LLVM_tag_offset
Only used in LLVM metadata.
@ DW_OP_LLVM_fragment
Only used in LLVM metadata.
@ DW_OP_LLVM_arg
Only used in LLVM metadata.
@ DW_OP_LLVM_convert
Only used in LLVM metadata.
DwarfFormat
Constants that define the DWARF format as 32 or 64 bit.
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...
std::optional< uint8_t > getFixedFormByteSize(dwarf::Form Form, FormParams Params)
Get the fixed byte size for a given form.
StringRef AttributeValueString(uint16_t Attr, unsigned Val)
Returns the symbolic string representing Val when used as a value for attribute Attr.
@ DW_DS_trailing_separate
@ DW_DS_trailing_overpunch
@ DW_DS_leading_overpunch
@ DW_ATOM_die_offset
Marker as the end of a list of atoms.
@ DW_ATOM_type_type_flags
@ DW_TAG_invalid
LLVM mock tags (see also llvm/BinaryFormat/Dwarf.def).
@ DW_MACINFO_invalid
Macinfo type for invalid results.
@ DW_VIRTUALITY_invalid
Virtuality for invalid results.
@ DWARF_VENDOR_DWARF
Identifiers we use to distinguish vendor extensions.
This is an optimization pass for GlobalISel generic memory operations.