19#ifndef LLVM_BINARYFORMAT_DWARF_H
20#define LLVM_BINARYFORMAT_DWARF_H
105#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) DW_TAG_##NAME = ID,
106#include "llvm/BinaryFormat/Dwarf.def"
116#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \
117 case DW_TAG_##NAME: \
118 return (KIND == DW_KIND_TYPE);
119#include "llvm/BinaryFormat/Dwarf.def"
125#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) DW_AT_##NAME = ID,
126#include "llvm/BinaryFormat/Dwarf.def"
132#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) DW_FORM_##NAME = ID,
133#include "llvm/BinaryFormat/Dwarf.def"
138#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \
140#include "llvm/BinaryFormat/Dwarf.def"
154#define HANDLE_DW_OP_LLVM_USEROP(ID, NAME) DW_OP_LLVM_##NAME = ID,
155#include "llvm/BinaryFormat/Dwarf.def"
159#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) DW_ATE_##NAME = ID,
160#include "llvm/BinaryFormat/Dwarf.def"
176#define HANDLE_DW_END(ID, NAME) DW_END_##NAME = ID,
177#include "llvm/BinaryFormat/Dwarf.def"
197#define HANDLE_DW_VIRTUALITY(ID, NAME) DW_VIRTUALITY_##NAME = ID,
198#include "llvm/BinaryFormat/Dwarf.def"
203#define HANDLE_DW_APPLE_ENUM_KIND(ID, NAME) DW_APPLE_ENUM_KIND_##NAME = ID,
204#include "llvm/BinaryFormat/Dwarf.def"
209#define HANDLE_DW_DEFAULTED(ID, NAME) DW_DEFAULTED_##NAME = ID,
210#include "llvm/BinaryFormat/Dwarf.def"
215#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
217#include "llvm/BinaryFormat/Dwarf.def"
223#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) DW_LNAME_##NAME = ID,
224#include "llvm/BinaryFormat/Dwarf.def"
235 return DW_LANG_Ada83;
237 return DW_LANG_Ada95;
239 return DW_LANG_Ada2005;
241 return DW_LANG_Ada2012;
244 return DW_LANG_BLISS;
248 if (version <= 198912)
250 if (version <= 199901)
252 if (version <= 201112)
254 if (version <= 201710)
257 case DW_LNAME_C_plus_plus:
259 return DW_LANG_C_plus_plus;
260 if (version <= 199711)
261 return DW_LANG_C_plus_plus;
262 if (version <= 200310)
263 return DW_LANG_C_plus_plus_03;
264 if (version <= 201103)
265 return DW_LANG_C_plus_plus_11;
266 if (version <= 201402)
267 return DW_LANG_C_plus_plus_14;
268 if (version <= 201703)
269 return DW_LANG_C_plus_plus_17;
270 if (version <= 202002)
271 return DW_LANG_C_plus_plus_20;
275 return DW_LANG_Cobol74;
277 return DW_LANG_Cobol85;
279 case DW_LNAME_Crystal:
280 return DW_LANG_Crystal;
284 return DW_LANG_Dylan;
285 case DW_LNAME_Fortran:
287 return DW_LANG_Fortran77;
289 return DW_LANG_Fortran90;
291 return DW_LANG_Fortran95;
293 return DW_LANG_Fortran03;
295 return DW_LANG_Fortran08;
297 return DW_LANG_Fortran18;
301 case DW_LNAME_Haskell:
302 return DW_LANG_Haskell;
308 return DW_LANG_Julia;
309 case DW_LNAME_Kotlin:
310 return DW_LANG_Kotlin;
311 case DW_LNAME_Modula2:
312 return DW_LANG_Modula2;
313 case DW_LNAME_Modula3:
314 return DW_LANG_Modula3;
317 case DW_LNAME_ObjC_plus_plus:
318 return DW_LANG_ObjC_plus_plus;
320 return DW_LANG_OCaml;
321 case DW_LNAME_OpenCL_C:
322 return DW_LANG_OpenCL;
323 case DW_LNAME_Pascal:
324 return DW_LANG_Pascal83;
327 case DW_LNAME_Python:
328 return DW_LANG_Python;
329 case DW_LNAME_RenderScript:
330 return DW_LANG_RenderScript;
334 return DW_LANG_Swift;
339 case DW_LNAME_Assembly:
340 return DW_LANG_Assembly;
341 case DW_LNAME_C_sharp:
342 return DW_LANG_C_sharp;
347 case DW_LNAME_GLSL_ES:
348 return DW_LANG_GLSL_ES;
351 case DW_LNAME_OpenCL_CPP:
352 return DW_LANG_OpenCL_CPP;
353 case DW_LNAME_CPP_for_OpenCL:
364 return DW_LANG_Metal;
370inline std::optional<std::pair<SourceLanguageName, uint32_t>>
374 return {{DW_LNAME_Ada, 1983}};
376 return {{DW_LNAME_Ada, 1995}};
377 case DW_LANG_Ada2005:
378 return {{DW_LNAME_Ada, 2005}};
379 case DW_LANG_Ada2012:
380 return {{DW_LNAME_Ada, 2012}};
382 return {{DW_LNAME_BLISS, 0}};
384 return {{DW_LNAME_C, 0}};
386 return {{DW_LNAME_C, 198912}};
388 return {{DW_LNAME_C, 199901}};
390 return {{DW_LNAME_C, 201112}};
392 return {{DW_LNAME_C, 201712}};
393 case DW_LANG_C_plus_plus:
394 return {{DW_LNAME_C_plus_plus, 0}};
395 case DW_LANG_C_plus_plus_03:
396 return {{DW_LNAME_C_plus_plus, 200310}};
397 case DW_LANG_C_plus_plus_11:
398 return {{DW_LNAME_C_plus_plus, 201103}};
399 case DW_LANG_C_plus_plus_14:
400 return {{DW_LNAME_C_plus_plus, 201402}};
401 case DW_LANG_C_plus_plus_17:
402 return {{DW_LNAME_C_plus_plus, 201703}};
403 case DW_LANG_C_plus_plus_20:
404 return {{DW_LNAME_C_plus_plus, 202002}};
405 case DW_LANG_Cobol74:
406 return {{DW_LNAME_Cobol, 1974}};
407 case DW_LANG_Cobol85:
408 return {{DW_LNAME_Cobol, 1985}};
409 case DW_LANG_Crystal:
410 return {{DW_LNAME_Crystal, 0}};
412 return {{DW_LNAME_D, 0}};
414 return {{DW_LNAME_Dylan, 0}};
415 case DW_LANG_Fortran77:
416 return {{DW_LNAME_Fortran, 1977}};
417 case DW_LANG_Fortran90:
418 return {{DW_LNAME_Fortran, 1990}};
419 case DW_LANG_Fortran95:
420 return {{DW_LNAME_Fortran, 1995}};
421 case DW_LANG_Fortran03:
422 return {{DW_LNAME_Fortran, 2003}};
423 case DW_LANG_Fortran08:
424 return {{DW_LNAME_Fortran, 2008}};
425 case DW_LANG_Fortran18:
426 return {{DW_LNAME_Fortran, 2018}};
428 return {{DW_LNAME_Go, 0}};
429 case DW_LANG_Haskell:
430 return {{DW_LNAME_Haskell, 0}};
434 return {{DW_LNAME_Java, 0}};
436 return {{DW_LNAME_Julia, 0}};
438 return {{DW_LNAME_Kotlin, 0}};
439 case DW_LANG_Modula2:
440 return {{DW_LNAME_Modula2, 0}};
441 case DW_LANG_Modula3:
442 return {{DW_LNAME_Modula3, 0}};
444 return {{DW_LNAME_ObjC, 0}};
445 case DW_LANG_ObjC_plus_plus:
446 return {{DW_LNAME_ObjC_plus_plus, 0}};
448 return {{DW_LNAME_OCaml, 0}};
450 return {{DW_LNAME_OpenCL_C, 0}};
451 case DW_LANG_Pascal83:
452 return {{DW_LNAME_Pascal, 1983}};
454 return {{DW_LNAME_PLI, 0}};
456 return {{DW_LNAME_Python, 0}};
457 case DW_LANG_RenderScript:
458 case DW_LANG_GOOGLE_RenderScript:
459 return {{DW_LNAME_RenderScript, 0}};
461 return {{DW_LNAME_Rust, 0}};
463 return {{DW_LNAME_Swift, 0}};
465 return {{DW_LNAME_UPC, 0}};
467 return {{DW_LNAME_Zig, 0}};
468 case DW_LANG_Assembly:
469 case DW_LANG_Mips_Assembler:
470 return {{DW_LNAME_Assembly, 0}};
471 case DW_LANG_C_sharp:
472 return {{DW_LNAME_C_sharp, 0}};
474 return {{DW_LNAME_Mojo, 0}};
476 return {{DW_LNAME_GLSL, 0}};
477 case DW_LANG_GLSL_ES:
478 return {{DW_LNAME_GLSL_ES, 0}};
480 return {{DW_LNAME_HLSL, 0}};
481 case DW_LANG_OpenCL_CPP:
482 return {{DW_LNAME_OpenCL_CPP, 0}};
484 return {{DW_LNAME_SYCL, 0}};
486 return {{DW_LNAME_Ruby, 0}};
488 return {{DW_LNAME_Move, 0}};
490 return {{DW_LNAME_Hylo, 0}};
492 return {{DW_LNAME_Metal, 0}};
493 case DW_LANG_BORLAND_Delphi:
494 case DW_LANG_CPP_for_OpenCL:
510 case DW_LANG_C_plus_plus:
511 case DW_LANG_C_plus_plus_03:
512 case DW_LANG_C_plus_plus_11:
513 case DW_LANG_C_plus_plus_14:
514 case DW_LANG_C_plus_plus_17:
515 case DW_LANG_C_plus_plus_20:
521 case DW_LANG_Cobol74:
522 case DW_LANG_Cobol85:
523 case DW_LANG_Fortran77:
524 case DW_LANG_Fortran90:
525 case DW_LANG_Pascal83:
526 case DW_LANG_Modula2:
530 case DW_LANG_Fortran95:
533 case DW_LANG_ObjC_plus_plus:
539 case DW_LANG_Modula3:
540 case DW_LANG_Haskell:
547 case DW_LANG_Fortran03:
548 case DW_LANG_Fortran08:
549 case DW_LANG_RenderScript:
551 case DW_LANG_Mips_Assembler:
552 case DW_LANG_GOOGLE_RenderScript:
553 case DW_LANG_BORLAND_Delphi:
558 case DW_LANG_Crystal:
560 case DW_LANG_Fortran18:
561 case DW_LANG_Ada2005:
562 case DW_LANG_Ada2012:
564 case DW_LANG_Assembly:
565 case DW_LANG_C_sharp:
568 case DW_LANG_GLSL_ES:
570 case DW_LANG_OpenCL_CPP:
571 case DW_LANG_CPP_for_OpenCL:
590 case DW_LANG_Fortran77:
591 case DW_LANG_Fortran90:
592 case DW_LANG_Fortran95:
593 case DW_LANG_Fortran03:
594 case DW_LANG_Fortran08:
595 case DW_LANG_Fortran18:
601 case DW_LANG_C_plus_plus:
602 case DW_LANG_Cobol74:
603 case DW_LANG_Cobol85:
604 case DW_LANG_Pascal83:
605 case DW_LANG_Modula2:
611 case DW_LANG_ObjC_plus_plus:
617 case DW_LANG_Modula3:
618 case DW_LANG_Haskell:
619 case DW_LANG_C_plus_plus_03:
620 case DW_LANG_C_plus_plus_11:
627 case DW_LANG_C_plus_plus_14:
628 case DW_LANG_RenderScript:
630 case DW_LANG_Mips_Assembler:
631 case DW_LANG_GOOGLE_RenderScript:
632 case DW_LANG_BORLAND_Delphi:
637 case DW_LANG_Crystal:
638 case DW_LANG_C_plus_plus_17:
639 case DW_LANG_C_plus_plus_20:
641 case DW_LANG_Ada2005:
642 case DW_LANG_Ada2012:
644 case DW_LANG_Assembly:
645 case DW_LANG_C_sharp:
648 case DW_LANG_GLSL_ES:
650 case DW_LANG_OpenCL_CPP:
651 case DW_LANG_CPP_for_OpenCL:
676 case DW_LANG_C_plus_plus:
677 case DW_LANG_C_plus_plus_03:
678 case DW_LANG_C_plus_plus_11:
679 case DW_LANG_C_plus_plus_14:
680 case DW_LANG_C_plus_plus_17:
681 case DW_LANG_C_plus_plus_20:
683 case DW_LANG_Cobol74:
684 case DW_LANG_Cobol85:
685 case DW_LANG_Fortran77:
686 case DW_LANG_Fortran90:
687 case DW_LANG_Pascal83:
688 case DW_LANG_Modula2:
691 case DW_LANG_Fortran95:
693 case DW_LANG_ObjC_plus_plus:
699 case DW_LANG_Modula3:
700 case DW_LANG_Haskell:
706 case DW_LANG_Fortran03:
707 case DW_LANG_Fortran08:
708 case DW_LANG_RenderScript:
710 case DW_LANG_Mips_Assembler:
711 case DW_LANG_GOOGLE_RenderScript:
712 case DW_LANG_BORLAND_Delphi:
717 case DW_LANG_Crystal:
718 case DW_LANG_Fortran18:
719 case DW_LANG_Ada2005:
720 case DW_LANG_Ada2012:
722 case DW_LANG_Assembly:
723 case DW_LANG_C_sharp:
726 case DW_LANG_GLSL_ES:
728 case DW_LANG_OpenCL_CPP:
729 case DW_LANG_CPP_for_OpenCL:
741 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;
754#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,
755#include "llvm/BinaryFormat/Dwarf.def"
782#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,
783#include "llvm/BinaryFormat/Dwarf.def"
788#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,
789#include "llvm/BinaryFormat/Dwarf.def"
795#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,
796#include "llvm/BinaryFormat/Dwarf.def"
812#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,
813#include "llvm/BinaryFormat/Dwarf.def"
820#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,
821#include "llvm/BinaryFormat/Dwarf.def"
828#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,
829#include "llvm/BinaryFormat/Dwarf.def"
834#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,
835#include "llvm/BinaryFormat/Dwarf.def"
840#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
841#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
842#include "llvm/BinaryFormat/Dwarf.def"
877#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,
878#include "llvm/BinaryFormat/Dwarf.def"
883#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,
884#include "llvm/BinaryFormat/Dwarf.def"
890#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,
891#include "llvm/BinaryFormat/Dwarf.def"
902 case DW_UT_split_compile:
903 case DW_UT_split_type:
912 case DW_TAG_compile_unit:
913 case DW_TAG_type_unit:
914 case DW_TAG_partial_unit:
915 case DW_TAG_skeleton_unit:
949 if (UniqueHashCount > 1024)
950 return UniqueHashCount / 4;
951 if (UniqueHashCount > 16)
952 return UniqueHashCount / 2;
953 return std::max<uint32_t>(UniqueHashCount, 1);
983 unsigned SubOpEncoding);
1145 bool ExtensionsOk =
true);
1178 return Kind << KIND_OFFSET |
Linkage << LINKAGE_OFFSET;
1184 KIND_MASK = 7 << KIND_OFFSET,
1186 LINKAGE_MASK = 1 << LINKAGE_OFFSET
1190template <
typename Enum>
struct EnumTraits :
public std::false_type {};
1193 static constexpr char Type[3] =
"AT";
1198 static constexpr char Type[5] =
"FORM";
1203 static constexpr char Type[4] =
"IDX";
1208 static constexpr char Type[4] =
"TAG";
1213 static constexpr char Type[4] =
"LNS";
1218 static constexpr char Type[3] =
"OP";
1223 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;
1233template <
typename Enum>
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
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
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
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 CaseString(unsigned Case)
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 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 getSubOperationEncoding(unsigned OpEncoding, StringRef SubOperationEncodingString)
LLVM_ABI unsigned getOperationEncoding(StringRef OperationEncodingString)
LLVM_ABI unsigned getAttributeEncoding(StringRef EncodingString)
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.
@ 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.
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)
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)
@ 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.
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.
Describes an entry of the various gnu_pub* debug sections.
PubIndexEntryDescriptor(GDBIndexEntryKind Kind, GDBIndexEntryLinkage Linkage)
PubIndexEntryDescriptor(uint8_t Value)
PubIndexEntryDescriptor(GDBIndexEntryKind Kind)
GDBIndexEntryLinkage Linkage