19#ifndef LLVM_BINARYFORMAT_DWARF_H
20#define LLVM_BINARYFORMAT_DWARF_H
106#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) DW_TAG_##NAME = ID,
107#include "llvm/BinaryFormat/Dwarf.def"
117#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
118 case DW_TAG_##NAME: \
119 return (KIND == DW_KIND_TYPE);
120#include "llvm/BinaryFormat/Dwarf.def"
126#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) DW_AT_##NAME = ID,
127#include "llvm/BinaryFormat/Dwarf.def"
133#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) DW_FORM_##NAME = ID,
134#include "llvm/BinaryFormat/Dwarf.def"
139#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
141#include "llvm/BinaryFormat/Dwarf.def"
155#define HANDLE_DW_OP_LLVM_USEROP(ID, NAME) DW_OP_LLVM_##NAME = ID,
156#include "llvm/BinaryFormat/Dwarf.def"
160#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) DW_ATE_##NAME = ID,
161#include "llvm/BinaryFormat/Dwarf.def"
177#define HANDLE_DW_END(ID, NAME) DW_END_##NAME = ID,
178#include "llvm/BinaryFormat/Dwarf.def"
198#define HANDLE_DW_VIRTUALITY(ID, NAME) DW_VIRTUALITY_##NAME = ID,
199#include "llvm/BinaryFormat/Dwarf.def"
204#define HANDLE_DW_APPLE_ENUM_KIND(ID, NAME) DW_APPLE_ENUM_KIND_##NAME = ID,
205#include "llvm/BinaryFormat/Dwarf.def"
210#define HANDLE_DW_LLVM_LANG_DIALECT(ID, NAME) DW_LLVM_LANG_DIALECT_##NAME = ID,
211#include "llvm/BinaryFormat/Dwarf.def"
216#define HANDLE_DW_DEFAULTED(ID, NAME) DW_DEFAULTED_##NAME = ID,
217#include "llvm/BinaryFormat/Dwarf.def"
222#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
224#include "llvm/BinaryFormat/Dwarf.def"
230#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) DW_LNAME_##NAME = ID,
231#include "llvm/BinaryFormat/Dwarf.def"
242 return DW_LANG_Ada83;
244 return DW_LANG_Ada95;
246 return DW_LANG_Ada2005;
248 return DW_LANG_Ada2012;
251 return DW_LANG_BLISS;
255 if (version <= 198912)
257 if (version <= 199901)
259 if (version <= 201112)
261 if (version <= 201710)
264 case DW_LNAME_C_plus_plus:
266 return DW_LANG_C_plus_plus;
267 if (version <= 199711)
268 return DW_LANG_C_plus_plus;
269 if (version <= 200310)
270 return DW_LANG_C_plus_plus_03;
271 if (version <= 201103)
272 return DW_LANG_C_plus_plus_11;
273 if (version <= 201402)
274 return DW_LANG_C_plus_plus_14;
275 if (version <= 201703)
276 return DW_LANG_C_plus_plus_17;
277 if (version <= 202002)
278 return DW_LANG_C_plus_plus_20;
282 return DW_LANG_Cobol74;
284 return DW_LANG_Cobol85;
286 case DW_LNAME_Crystal:
287 return DW_LANG_Crystal;
291 return DW_LANG_Dylan;
292 case DW_LNAME_Fortran:
294 return DW_LANG_Fortran77;
296 return DW_LANG_Fortran90;
298 return DW_LANG_Fortran95;
300 return DW_LANG_Fortran03;
302 return DW_LANG_Fortran08;
304 return DW_LANG_Fortran18;
308 case DW_LNAME_Haskell:
309 return DW_LANG_Haskell;
315 return DW_LANG_Julia;
316 case DW_LNAME_Kotlin:
317 return DW_LANG_Kotlin;
318 case DW_LNAME_Modula2:
319 return DW_LANG_Modula2;
320 case DW_LNAME_Modula3:
321 return DW_LANG_Modula3;
324 case DW_LNAME_ObjC_plus_plus:
325 return DW_LANG_ObjC_plus_plus;
327 return DW_LANG_OCaml;
328 case DW_LNAME_OpenCL_C:
329 return DW_LANG_OpenCL;
330 case DW_LNAME_Pascal:
331 return DW_LANG_Pascal83;
334 case DW_LNAME_Python:
335 return DW_LANG_Python;
336 case DW_LNAME_RenderScript:
337 return DW_LANG_RenderScript;
341 return DW_LANG_Swift;
346 case DW_LNAME_Assembly:
347 return DW_LANG_Assembly;
348 case DW_LNAME_C_sharp:
349 return DW_LANG_C_sharp;
354 case DW_LNAME_GLSL_ES:
355 return DW_LANG_GLSL_ES;
358 case DW_LNAME_OpenCL_CPP:
359 return DW_LANG_OpenCL_CPP;
360 case DW_LNAME_CPP_for_OpenCL:
371 return DW_LANG_Metal;
377inline std::optional<std::pair<SourceLanguageName, uint32_t>>
381 return {{DW_LNAME_Ada, 1983}};
383 return {{DW_LNAME_Ada, 1995}};
384 case DW_LANG_Ada2005:
385 return {{DW_LNAME_Ada, 2005}};
386 case DW_LANG_Ada2012:
387 return {{DW_LNAME_Ada, 2012}};
389 return {{DW_LNAME_BLISS, 0}};
391 return {{DW_LNAME_C, 0}};
393 return {{DW_LNAME_C, 198912}};
395 return {{DW_LNAME_C, 199901}};
397 return {{DW_LNAME_C, 201112}};
399 return {{DW_LNAME_C, 201710}};
400 case DW_LANG_C_plus_plus:
401 return {{DW_LNAME_C_plus_plus, 0}};
402 case DW_LANG_C_plus_plus_03:
403 return {{DW_LNAME_C_plus_plus, 200310}};
404 case DW_LANG_C_plus_plus_11:
405 return {{DW_LNAME_C_plus_plus, 201103}};
406 case DW_LANG_C_plus_plus_14:
407 return {{DW_LNAME_C_plus_plus, 201402}};
408 case DW_LANG_C_plus_plus_17:
409 return {{DW_LNAME_C_plus_plus, 201703}};
410 case DW_LANG_C_plus_plus_20:
411 return {{DW_LNAME_C_plus_plus, 202002}};
412 case DW_LANG_Cobol74:
413 return {{DW_LNAME_Cobol, 1974}};
414 case DW_LANG_Cobol85:
415 return {{DW_LNAME_Cobol, 1985}};
416 case DW_LANG_Crystal:
417 return {{DW_LNAME_Crystal, 0}};
419 return {{DW_LNAME_D, 0}};
421 return {{DW_LNAME_Dylan, 0}};
422 case DW_LANG_Fortran77:
423 return {{DW_LNAME_Fortran, 1977}};
424 case DW_LANG_Fortran90:
425 return {{DW_LNAME_Fortran, 1990}};
426 case DW_LANG_Fortran95:
427 return {{DW_LNAME_Fortran, 1995}};
428 case DW_LANG_Fortran03:
429 return {{DW_LNAME_Fortran, 2003}};
430 case DW_LANG_Fortran08:
431 return {{DW_LNAME_Fortran, 2008}};
432 case DW_LANG_Fortran18:
433 return {{DW_LNAME_Fortran, 2018}};
435 return {{DW_LNAME_Go, 0}};
436 case DW_LANG_Haskell:
437 return {{DW_LNAME_Haskell, 0}};
439 return {{DW_LNAME_HIP, 0}};
441 return {{DW_LNAME_Java, 0}};
443 return {{DW_LNAME_Julia, 0}};
445 return {{DW_LNAME_Kotlin, 0}};
446 case DW_LANG_Modula2:
447 return {{DW_LNAME_Modula2, 0}};
448 case DW_LANG_Modula3:
449 return {{DW_LNAME_Modula3, 0}};
451 return {{DW_LNAME_ObjC, 0}};
452 case DW_LANG_ObjC_plus_plus:
453 return {{DW_LNAME_ObjC_plus_plus, 0}};
455 return {{DW_LNAME_OCaml, 0}};
457 return {{DW_LNAME_OpenCL_C, 0}};
458 case DW_LANG_Pascal83:
459 return {{DW_LNAME_Pascal, 1983}};
461 return {{DW_LNAME_PLI, 0}};
463 return {{DW_LNAME_Python, 0}};
464 case DW_LANG_RenderScript:
465 case DW_LANG_GOOGLE_RenderScript:
466 return {{DW_LNAME_RenderScript, 0}};
468 return {{DW_LNAME_Rust, 0}};
470 return {{DW_LNAME_Swift, 0}};
472 return {{DW_LNAME_UPC, 0}};
474 return {{DW_LNAME_Zig, 0}};
475 case DW_LANG_Assembly:
476 case DW_LANG_Mips_Assembler:
477 return {{DW_LNAME_Assembly, 0}};
478 case DW_LANG_C_sharp:
479 return {{DW_LNAME_C_sharp, 0}};
481 return {{DW_LNAME_Mojo, 0}};
483 return {{DW_LNAME_GLSL, 0}};
484 case DW_LANG_GLSL_ES:
485 return {{DW_LNAME_GLSL_ES, 0}};
487 return {{DW_LNAME_HLSL, 0}};
488 case DW_LANG_OpenCL_CPP:
489 return {{DW_LNAME_OpenCL_CPP, 0}};
491 return {{DW_LNAME_SYCL, 0}};
493 return {{DW_LNAME_Ruby, 0}};
495 return {{DW_LNAME_Move, 0}};
497 return {{DW_LNAME_Hylo, 0}};
499 return {{DW_LNAME_Metal, 0}};
500 case DW_LANG_BORLAND_Delphi:
501 case DW_LANG_CPP_for_OpenCL:
524 case DW_LANG_C_plus_plus:
525 case DW_LANG_C_plus_plus_03:
526 case DW_LANG_C_plus_plus_11:
527 case DW_LANG_C_plus_plus_14:
528 case DW_LANG_C_plus_plus_17:
529 case DW_LANG_C_plus_plus_20:
535 case DW_LANG_Cobol74:
536 case DW_LANG_Cobol85:
537 case DW_LANG_Fortran77:
538 case DW_LANG_Fortran90:
539 case DW_LANG_Pascal83:
540 case DW_LANG_Modula2:
544 case DW_LANG_Fortran95:
547 case DW_LANG_ObjC_plus_plus:
553 case DW_LANG_Modula3:
554 case DW_LANG_Haskell:
561 case DW_LANG_Fortran03:
562 case DW_LANG_Fortran08:
563 case DW_LANG_RenderScript:
565 case DW_LANG_Mips_Assembler:
566 case DW_LANG_GOOGLE_RenderScript:
567 case DW_LANG_BORLAND_Delphi:
572 case DW_LANG_Crystal:
574 case DW_LANG_Fortran18:
575 case DW_LANG_Ada2005:
576 case DW_LANG_Ada2012:
578 case DW_LANG_Assembly:
579 case DW_LANG_C_sharp:
582 case DW_LANG_GLSL_ES:
584 case DW_LANG_OpenCL_CPP:
585 case DW_LANG_CPP_for_OpenCL:
604 case DW_LANG_Fortran77:
605 case DW_LANG_Fortran90:
606 case DW_LANG_Fortran95:
607 case DW_LANG_Fortran03:
608 case DW_LANG_Fortran08:
609 case DW_LANG_Fortran18:
615 case DW_LANG_C_plus_plus:
616 case DW_LANG_Cobol74:
617 case DW_LANG_Cobol85:
618 case DW_LANG_Pascal83:
619 case DW_LANG_Modula2:
625 case DW_LANG_ObjC_plus_plus:
631 case DW_LANG_Modula3:
632 case DW_LANG_Haskell:
633 case DW_LANG_C_plus_plus_03:
634 case DW_LANG_C_plus_plus_11:
641 case DW_LANG_C_plus_plus_14:
642 case DW_LANG_RenderScript:
644 case DW_LANG_Mips_Assembler:
645 case DW_LANG_GOOGLE_RenderScript:
646 case DW_LANG_BORLAND_Delphi:
651 case DW_LANG_Crystal:
652 case DW_LANG_C_plus_plus_17:
653 case DW_LANG_C_plus_plus_20:
655 case DW_LANG_Ada2005:
656 case DW_LANG_Ada2012:
658 case DW_LANG_Assembly:
659 case DW_LANG_C_sharp:
662 case DW_LANG_GLSL_ES:
664 case DW_LANG_OpenCL_CPP:
665 case DW_LANG_CPP_for_OpenCL:
690 case DW_LANG_C_plus_plus:
691 case DW_LANG_C_plus_plus_03:
692 case DW_LANG_C_plus_plus_11:
693 case DW_LANG_C_plus_plus_14:
694 case DW_LANG_C_plus_plus_17:
695 case DW_LANG_C_plus_plus_20:
697 case DW_LANG_Cobol74:
698 case DW_LANG_Cobol85:
699 case DW_LANG_Fortran77:
700 case DW_LANG_Fortran90:
701 case DW_LANG_Pascal83:
702 case DW_LANG_Modula2:
705 case DW_LANG_Fortran95:
707 case DW_LANG_ObjC_plus_plus:
713 case DW_LANG_Modula3:
714 case DW_LANG_Haskell:
720 case DW_LANG_Fortran03:
721 case DW_LANG_Fortran08:
722 case DW_LANG_RenderScript:
724 case DW_LANG_Mips_Assembler:
725 case DW_LANG_GOOGLE_RenderScript:
726 case DW_LANG_BORLAND_Delphi:
731 case DW_LANG_Crystal:
732 case DW_LANG_Fortran18:
733 case DW_LANG_Ada2005:
734 case DW_LANG_Ada2012:
736 case DW_LANG_Assembly:
737 case DW_LANG_C_sharp:
740 case DW_LANG_GLSL_ES:
742 case DW_LANG_OpenCL_CPP:
743 case DW_LANG_CPP_for_OpenCL:
755 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;
768#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,
769#include "llvm/BinaryFormat/Dwarf.def"
775#define HANDLE_DW_ASPACE(ID, NAME) DW_ASPACE_LLVM_##NAME = ID,
776#define HANDLE_DW_ASPACE_PRED(ID, NAME, PRED) DW_ASPACE_LLVM_##NAME = ID,
777#include "llvm/BinaryFormat/Dwarf.def"
802#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,
803#include "llvm/BinaryFormat/Dwarf.def"
808#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,
809#include "llvm/BinaryFormat/Dwarf.def"
815#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,
816#include "llvm/BinaryFormat/Dwarf.def"
832#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,
833#include "llvm/BinaryFormat/Dwarf.def"
840#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,
841#include "llvm/BinaryFormat/Dwarf.def"
848#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,
849#include "llvm/BinaryFormat/Dwarf.def"
854#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,
855#include "llvm/BinaryFormat/Dwarf.def"
860#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
861#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
862#include "llvm/BinaryFormat/Dwarf.def"
897#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,
898#include "llvm/BinaryFormat/Dwarf.def"
903#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,
904#include "llvm/BinaryFormat/Dwarf.def"
910#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,
911#include "llvm/BinaryFormat/Dwarf.def"
922 case DW_UT_split_compile:
923 case DW_UT_split_type:
932 case DW_TAG_compile_unit:
933 case DW_TAG_type_unit:
934 case DW_TAG_partial_unit:
935 case DW_TAG_skeleton_unit:
969 if (UniqueHashCount > 1024)
970 return UniqueHashCount / 4;
971 if (UniqueHashCount > 16)
972 return UniqueHashCount / 2;
973 return std::max<uint32_t>(UniqueHashCount, 1);
1003 unsigned SubOpEncoding);
1103 return O == DW_OP_form_tls_address || O == DW_OP_GNU_push_tls_address;
1177 bool ExtensionsOk =
true);
1210 return Kind << KIND_OFFSET |
Linkage << LINKAGE_OFFSET;
1216 KIND_MASK = 7 << KIND_OFFSET,
1218 LINKAGE_MASK = 1 << LINKAGE_OFFSET
1222template <
typename Enum>
struct EnumTraits :
public std::false_type {};
1225 static constexpr char Type[3] =
"AT";
1230 static constexpr char Type[5] =
"FORM";
1235 static constexpr char Type[4] =
"IDX";
1240 static constexpr char Type[4] =
"TAG";
1245 static constexpr char Type[4] =
"LNS";
1250 static constexpr char Type[3] =
"OP";
1255 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;
1265template <
typename Enum>
AMDGPU address space definition.
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
Functions, function parameters, and return types can have attributes to indicate how they should be t...
Represent a constant reference to a string, i.e.
Triple - Helper class for working with autoconf configuration names.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
LLVM_ABI StringRef LNExtendedString(unsigned Encoding)
LLVM_ABI StringRef RangeListEncodingString(unsigned Encoding)
LLVM_ABI StringRef LanguageDialectString(unsigned LanguageDialect)
LLVM_ABI StringRef CaseString(unsigned Case)
LLVM_ABI StringRef SourceLanguageNameString(SourceLanguageName Lang)
LLVM_ABI StringRef VisibilityString(unsigned Visibility)
LLVM_ABI StringRef GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage)
LLVM_ABI StringRef AttributeString(unsigned Attribute)
LLVM_ABI StringRef CallFrameString(unsigned Encoding, Triple::ArchType Arch)
LLVM_ABI StringRef FormEncodingString(unsigned Encoding)
LLVM_ABI StringRef ArrayOrderString(unsigned Order)
LLVM_ABI StringRef MacroString(unsigned Encoding)
LLVM_ABI StringRef EnumKindString(unsigned EnumKind)
LLVM_ABI StringRef LocListEncodingString(unsigned Encoding)
LLVM_ABI StringRef IndexString(unsigned Idx)
LLVM_ABI StringRef RLEString(unsigned RLE)
LLVM_ABI StringRef SubOperationEncodingString(unsigned OpEncoding, unsigned SubOpEncoding)
LLVM_ABI StringRef LanguageString(unsigned Language)
LLVM_ABI StringRef DecimalSignString(unsigned Sign)
LLVM_ABI StringRef VirtualityString(unsigned Virtuality)
LLVM_ABI StringRef AttributeEncodingString(unsigned Encoding)
LLVM_ABI StringRef AddressSpaceString(unsigned AS, const llvm::Triple &TT)
LLVM_ABI StringRef ChildrenString(unsigned Children)
LLVM_ABI StringRef ApplePropertyString(unsigned)
LLVM_ABI StringRef AtomTypeString(unsigned Atom)
LLVM_ABI StringRef FormatString(DwarfFormat Format)
LLVM_ABI StringRef GnuMacroString(unsigned Encoding)
LLVM_ABI StringRef EndianityString(unsigned Endian)
LLVM_ABI StringRef ConventionString(unsigned Convention)
LLVM_ABI StringRef MacinfoString(unsigned Encoding)
LLVM_ABI StringRef OperationEncodingString(unsigned Encoding)
LLVM_ABI StringRef UnitTypeString(unsigned)
LLVM_ABI StringRef InlineCodeString(unsigned Code)
LLVM_ABI StringRef GDBIndexEntryKindString(GDBIndexEntryKind Kind)
LLVM_ABI StringRef TagString(unsigned Tag)
LLVM_ABI StringRef LNStandardString(unsigned Standard)
LLVM_ABI StringRef AccessibilityString(unsigned Access)
LLVM_ABI StringRef DefaultedMemberString(unsigned DefaultedEncodings)
LLVM_ABI unsigned getSourceLanguageName(StringRef SourceLanguageNameString)
LLVM_ABI unsigned getSubOperationEncoding(unsigned OpEncoding, StringRef SubOperationEncodingString)
LLVM_ABI unsigned getOperationEncoding(StringRef OperationEncodingString)
LLVM_ABI unsigned getAttributeEncoding(StringRef EncodingString)
LLVM_ABI unsigned getLanguageDialect(StringRef LanguageDialectString)
LLVM_ABI unsigned getTag(StringRef TagString)
LLVM_ABI unsigned getCallingConvention(StringRef LanguageString)
LLVM_ABI unsigned getLanguage(StringRef LanguageString)
LLVM_ABI unsigned getVirtuality(StringRef VirtualityString)
LLVM_ABI unsigned getEnumKind(StringRef EnumKindString)
LLVM_ABI unsigned getMacro(StringRef MacroString)
LLVM_ABI unsigned getMacinfo(StringRef MacinfoString)
LLVM_ABI unsigned AttributeEncodingVendor(TypeKind E)
LLVM_ABI unsigned FormVendor(Form F)
LLVM_ABI unsigned AttributeVendor(Attribute A)
LLVM_ABI unsigned OperationVendor(LocationAtom O)
LLVM_ABI unsigned TagVendor(Tag T)
LLVM_ABI unsigned LanguageVendor(SourceLanguage L)
LLVM_ABI unsigned OperationVersion(LocationAtom O)
LLVM_ABI unsigned AttributeVersion(Attribute A)
LLVM_ABI unsigned LanguageVersion(SourceLanguage L)
LLVM_ABI unsigned AttributeEncodingVersion(TypeKind E)
LLVM_ABI unsigned TagVersion(Tag T)
LLVM_ABI unsigned FormVersion(Form F)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Calculates the starting offsets for various sections within the .debug_names section.
@ DW_INL_declared_not_inlined
@ DW_INL_declared_inlined
const uint32_t DW_CIE_ID
Special ID values that distinguish a CIE from a FDE in DWARF CFI.
bool isTlsAddressOp(uint8_t O)
uint8_t getUnitLengthFieldByteSize(DwarfFormat Format)
Get the byte size of the unit length field depending on the DWARF format.
MacroEntryType
DWARF v5 macro information entry type encodings.
LLVM_ABI std::optional< unsigned > LanguageLowerBound(SourceLanguage L)
LLVM_ABI StringRef AtomValueString(uint16_t Atom, unsigned Val)
Returns the symbolic string representing Val when used as a value for atom Atom.
const uint64_t DW64_CIE_ID
LLVM_ABI std::optional< unsigned > OperationArity(LocationAtom O)
The arity of the given LocationAtom.
LineNumberOps
Line Number Standard Opcode Encodings.
ApplePropertyAttributes
Constants for the DW_APPLE_PROPERTY_attributes attribute.
LoclistEntries
DWARF v5 loc list entry encoding values.
bool isFortran(SourceLanguage S)
bool isUnitType(uint8_t UnitType)
@ DW_LLVM_LANG_DIALECT_max
GnuMacroEntryType
GNU .debug_macro macro information entry type encodings.
UnitType
Constants for unit types in DWARF v5.
@ DW_FORM_lo_user
Not specified by DWARF.
@ DW_OP_LLVM_entry_value
Only used in LLVM metadata.
@ DW_OP_LLVM_implicit_pointer
Only used in LLVM metadata.
@ DW_OP_LLVM_extract_bits_zext
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.
@ DW_OP_LLVM_extract_bits_sext
Only used in LLVM metadata.
DwarfFormat
Constants that define the DWARF format as 32 or 64 bit.
LLVM_ABI 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< SourceLanguage > toDW_LANG(SourceLanguageName name, uint32_t version)
Convert a DWARF 6 pair of language name and version to a DWARF 5 DW_LANG.
const uint32_t DW_INVALID_OFFSET
Identifier of an invalid DIE offset in the .debug_info section.
RnglistEntries
DWARF v5 range list entry encoding values.
LLVM_ABI std::optional< uint8_t > getFixedFormByteSize(dwarf::Form Form, FormParams Params)
Get the fixed byte size for a given form.
uint8_t getDwarfOffsetByteSize(DwarfFormat Format)
The size of a reference determined by the DWARF 32/64-bit format.
LineNumberExtendedOps
Line Number Extended Opcode Encodings.
bool isCPlusPlus(SourceLanguage S)
TypeKind getArrayIndexTypeEncoding(SourceLanguage S)
LLVM_ABI StringRef AttributeValueString(uint16_t Attr, unsigned Val)
Returns the symbolic string representing Val when used as a value for attribute Attr.
LLVM_ABI std::optional< unsigned > OperationOperands(LocationAtom O)
The number of operands for the given LocationAtom.
@ DW_TAG_user_base
Recommended base for user tags.
CallFrameInfo
Call frame instruction encodings.
@ DW_DS_trailing_separate
@ DW_DS_trailing_overpunch
@ DW_DS_leading_overpunch
uint32_t getDebugNamesBucketCount(uint32_t UniqueHashCount)
uint64_t computeTombstoneAddress(uint8_t AddressByteSize)
LLVM_ABI llvm::StringRef LanguageDescription(SourceLanguageName name)
Returns a version-independent language name.
@ DW_FLAG_type_implementation
@ DW_ATOM_die_offset
Marker as the end of a list of atoms.
@ DW_ATOM_type_type_flags
bool isC(SourceLanguage S)
@ DW_ARANGES_VERSION
Section version number for .debug_aranges.
@ DW_PUBNAMES_VERSION
Section version number for .debug_pubnames.
@ DWARF_VERSION
Other constants.
@ DW_TAG_invalid
LLVM mock tags (see also llvm/BinaryFormat/Dwarf.def).
@ DW_LENGTH_lo_reserved
Special values for an initial length field.
@ DW_MACINFO_invalid
Macinfo type for invalid results.
@ DW_APPLE_ENUM_KIND_invalid
Enum kind for invalid results.
@ DW_VIRTUALITY_invalid
Virtuality for invalid results.
@ DW_LENGTH_hi_reserved
Upper bound of the reserved range.
@ DW_PUBTYPES_VERSION
Section version number for .debug_pubtypes.
@ DW_LENGTH_DWARF64
Indicator of 64-bit DWARF format.
@ DWARF_VENDOR_DWARF
Identifiers we use to distinguish vendor extensions.
std::optional< std::pair< SourceLanguageName, uint32_t > > toDW_LNAME(SourceLanguage language)
Convert a DWARF 5 DW_LANG to a DWARF 6 pair of language name and version.
This is an optimization pass for GlobalISel generic memory operations.
FunctionAddr VTableAddr uintptr_t uintptr_t Version
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
Implement std::hash so that hash_code can be used in STL containers.
static constexpr char Type[3]
static LLVM_ABI StringRef(*const StringFn)(unsigned)
static constexpr char Type[4]
static LLVM_ABI StringRef(*const StringFn)(unsigned)
static constexpr char Type[4]
static LLVM_ABI StringRef(*const StringFn)(unsigned)
static constexpr char Type[3]
static LLVM_ABI StringRef(*const StringFn)(unsigned)
static LLVM_ABI StringRef(*const StringFn)(unsigned)
static constexpr char Type[4]
PubIndexEntryDescriptor(GDBIndexEntryKind Kind, GDBIndexEntryLinkage Linkage)
PubIndexEntryDescriptor(uint8_t Value)
PubIndexEntryDescriptor(GDBIndexEntryKind Kind)
GDBIndexEntryLinkage Linkage