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_DEFAULTED(ID, NAME) DW_DEFAULTED_##NAME = ID,
211#include "llvm/BinaryFormat/Dwarf.def"
216#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \
218#include "llvm/BinaryFormat/Dwarf.def"
224#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) DW_LNAME_##NAME = ID,
225#include "llvm/BinaryFormat/Dwarf.def"
236 return DW_LANG_Ada83;
238 return DW_LANG_Ada95;
240 return DW_LANG_Ada2005;
242 return DW_LANG_Ada2012;
245 return DW_LANG_BLISS;
249 if (version <= 198912)
251 if (version <= 199901)
253 if (version <= 201112)
255 if (version <= 201710)
258 case DW_LNAME_C_plus_plus:
260 return DW_LANG_C_plus_plus;
261 if (version <= 199711)
262 return DW_LANG_C_plus_plus;
263 if (version <= 200310)
264 return DW_LANG_C_plus_plus_03;
265 if (version <= 201103)
266 return DW_LANG_C_plus_plus_11;
267 if (version <= 201402)
268 return DW_LANG_C_plus_plus_14;
269 if (version <= 201703)
270 return DW_LANG_C_plus_plus_17;
271 if (version <= 202002)
272 return DW_LANG_C_plus_plus_20;
276 return DW_LANG_Cobol74;
278 return DW_LANG_Cobol85;
280 case DW_LNAME_Crystal:
281 return DW_LANG_Crystal;
285 return DW_LANG_Dylan;
286 case DW_LNAME_Fortran:
288 return DW_LANG_Fortran77;
290 return DW_LANG_Fortran90;
292 return DW_LANG_Fortran95;
294 return DW_LANG_Fortran03;
296 return DW_LANG_Fortran08;
298 return DW_LANG_Fortran18;
302 case DW_LNAME_Haskell:
303 return DW_LANG_Haskell;
309 return DW_LANG_Julia;
310 case DW_LNAME_Kotlin:
311 return DW_LANG_Kotlin;
312 case DW_LNAME_Modula2:
313 return DW_LANG_Modula2;
314 case DW_LNAME_Modula3:
315 return DW_LANG_Modula3;
318 case DW_LNAME_ObjC_plus_plus:
319 return DW_LANG_ObjC_plus_plus;
321 return DW_LANG_OCaml;
322 case DW_LNAME_OpenCL_C:
323 return DW_LANG_OpenCL;
324 case DW_LNAME_Pascal:
325 return DW_LANG_Pascal83;
328 case DW_LNAME_Python:
329 return DW_LANG_Python;
330 case DW_LNAME_RenderScript:
331 return DW_LANG_RenderScript;
335 return DW_LANG_Swift;
340 case DW_LNAME_Assembly:
341 return DW_LANG_Assembly;
342 case DW_LNAME_C_sharp:
343 return DW_LANG_C_sharp;
348 case DW_LNAME_GLSL_ES:
349 return DW_LANG_GLSL_ES;
352 case DW_LNAME_OpenCL_CPP:
353 return DW_LANG_OpenCL_CPP;
354 case DW_LNAME_CPP_for_OpenCL:
365 return DW_LANG_Metal;
371inline std::optional<std::pair<SourceLanguageName, uint32_t>>
375 return {{DW_LNAME_Ada, 1983}};
377 return {{DW_LNAME_Ada, 1995}};
378 case DW_LANG_Ada2005:
379 return {{DW_LNAME_Ada, 2005}};
380 case DW_LANG_Ada2012:
381 return {{DW_LNAME_Ada, 2012}};
383 return {{DW_LNAME_BLISS, 0}};
385 return {{DW_LNAME_C, 0}};
387 return {{DW_LNAME_C, 198912}};
389 return {{DW_LNAME_C, 199901}};
391 return {{DW_LNAME_C, 201112}};
393 return {{DW_LNAME_C, 201712}};
394 case DW_LANG_C_plus_plus:
395 return {{DW_LNAME_C_plus_plus, 0}};
396 case DW_LANG_C_plus_plus_03:
397 return {{DW_LNAME_C_plus_plus, 200310}};
398 case DW_LANG_C_plus_plus_11:
399 return {{DW_LNAME_C_plus_plus, 201103}};
400 case DW_LANG_C_plus_plus_14:
401 return {{DW_LNAME_C_plus_plus, 201402}};
402 case DW_LANG_C_plus_plus_17:
403 return {{DW_LNAME_C_plus_plus, 201703}};
404 case DW_LANG_C_plus_plus_20:
405 return {{DW_LNAME_C_plus_plus, 202002}};
406 case DW_LANG_Cobol74:
407 return {{DW_LNAME_Cobol, 1974}};
408 case DW_LANG_Cobol85:
409 return {{DW_LNAME_Cobol, 1985}};
410 case DW_LANG_Crystal:
411 return {{DW_LNAME_Crystal, 0}};
413 return {{DW_LNAME_D, 0}};
415 return {{DW_LNAME_Dylan, 0}};
416 case DW_LANG_Fortran77:
417 return {{DW_LNAME_Fortran, 1977}};
418 case DW_LANG_Fortran90:
419 return {{DW_LNAME_Fortran, 1990}};
420 case DW_LANG_Fortran95:
421 return {{DW_LNAME_Fortran, 1995}};
422 case DW_LANG_Fortran03:
423 return {{DW_LNAME_Fortran, 2003}};
424 case DW_LANG_Fortran08:
425 return {{DW_LNAME_Fortran, 2008}};
426 case DW_LANG_Fortran18:
427 return {{DW_LNAME_Fortran, 2018}};
429 return {{DW_LNAME_Go, 0}};
430 case DW_LANG_Haskell:
431 return {{DW_LNAME_Haskell, 0}};
435 return {{DW_LNAME_Java, 0}};
437 return {{DW_LNAME_Julia, 0}};
439 return {{DW_LNAME_Kotlin, 0}};
440 case DW_LANG_Modula2:
441 return {{DW_LNAME_Modula2, 0}};
442 case DW_LANG_Modula3:
443 return {{DW_LNAME_Modula3, 0}};
445 return {{DW_LNAME_ObjC, 0}};
446 case DW_LANG_ObjC_plus_plus:
447 return {{DW_LNAME_ObjC_plus_plus, 0}};
449 return {{DW_LNAME_OCaml, 0}};
451 return {{DW_LNAME_OpenCL_C, 0}};
452 case DW_LANG_Pascal83:
453 return {{DW_LNAME_Pascal, 1983}};
455 return {{DW_LNAME_PLI, 0}};
457 return {{DW_LNAME_Python, 0}};
458 case DW_LANG_RenderScript:
459 case DW_LANG_GOOGLE_RenderScript:
460 return {{DW_LNAME_RenderScript, 0}};
462 return {{DW_LNAME_Rust, 0}};
464 return {{DW_LNAME_Swift, 0}};
466 return {{DW_LNAME_UPC, 0}};
468 return {{DW_LNAME_Zig, 0}};
469 case DW_LANG_Assembly:
470 case DW_LANG_Mips_Assembler:
471 return {{DW_LNAME_Assembly, 0}};
472 case DW_LANG_C_sharp:
473 return {{DW_LNAME_C_sharp, 0}};
475 return {{DW_LNAME_Mojo, 0}};
477 return {{DW_LNAME_GLSL, 0}};
478 case DW_LANG_GLSL_ES:
479 return {{DW_LNAME_GLSL_ES, 0}};
481 return {{DW_LNAME_HLSL, 0}};
482 case DW_LANG_OpenCL_CPP:
483 return {{DW_LNAME_OpenCL_CPP, 0}};
485 return {{DW_LNAME_SYCL, 0}};
487 return {{DW_LNAME_Ruby, 0}};
489 return {{DW_LNAME_Move, 0}};
491 return {{DW_LNAME_Hylo, 0}};
493 return {{DW_LNAME_Metal, 0}};
494 case DW_LANG_BORLAND_Delphi:
495 case DW_LANG_CPP_for_OpenCL:
511 case DW_LANG_C_plus_plus:
512 case DW_LANG_C_plus_plus_03:
513 case DW_LANG_C_plus_plus_11:
514 case DW_LANG_C_plus_plus_14:
515 case DW_LANG_C_plus_plus_17:
516 case DW_LANG_C_plus_plus_20:
522 case DW_LANG_Cobol74:
523 case DW_LANG_Cobol85:
524 case DW_LANG_Fortran77:
525 case DW_LANG_Fortran90:
526 case DW_LANG_Pascal83:
527 case DW_LANG_Modula2:
531 case DW_LANG_Fortran95:
534 case DW_LANG_ObjC_plus_plus:
540 case DW_LANG_Modula3:
541 case DW_LANG_Haskell:
548 case DW_LANG_Fortran03:
549 case DW_LANG_Fortran08:
550 case DW_LANG_RenderScript:
552 case DW_LANG_Mips_Assembler:
553 case DW_LANG_GOOGLE_RenderScript:
554 case DW_LANG_BORLAND_Delphi:
559 case DW_LANG_Crystal:
561 case DW_LANG_Fortran18:
562 case DW_LANG_Ada2005:
563 case DW_LANG_Ada2012:
565 case DW_LANG_Assembly:
566 case DW_LANG_C_sharp:
569 case DW_LANG_GLSL_ES:
571 case DW_LANG_OpenCL_CPP:
572 case DW_LANG_CPP_for_OpenCL:
591 case DW_LANG_Fortran77:
592 case DW_LANG_Fortran90:
593 case DW_LANG_Fortran95:
594 case DW_LANG_Fortran03:
595 case DW_LANG_Fortran08:
596 case DW_LANG_Fortran18:
602 case DW_LANG_C_plus_plus:
603 case DW_LANG_Cobol74:
604 case DW_LANG_Cobol85:
605 case DW_LANG_Pascal83:
606 case DW_LANG_Modula2:
612 case DW_LANG_ObjC_plus_plus:
618 case DW_LANG_Modula3:
619 case DW_LANG_Haskell:
620 case DW_LANG_C_plus_plus_03:
621 case DW_LANG_C_plus_plus_11:
628 case DW_LANG_C_plus_plus_14:
629 case DW_LANG_RenderScript:
631 case DW_LANG_Mips_Assembler:
632 case DW_LANG_GOOGLE_RenderScript:
633 case DW_LANG_BORLAND_Delphi:
638 case DW_LANG_Crystal:
639 case DW_LANG_C_plus_plus_17:
640 case DW_LANG_C_plus_plus_20:
642 case DW_LANG_Ada2005:
643 case DW_LANG_Ada2012:
645 case DW_LANG_Assembly:
646 case DW_LANG_C_sharp:
649 case DW_LANG_GLSL_ES:
651 case DW_LANG_OpenCL_CPP:
652 case DW_LANG_CPP_for_OpenCL:
677 case DW_LANG_C_plus_plus:
678 case DW_LANG_C_plus_plus_03:
679 case DW_LANG_C_plus_plus_11:
680 case DW_LANG_C_plus_plus_14:
681 case DW_LANG_C_plus_plus_17:
682 case DW_LANG_C_plus_plus_20:
684 case DW_LANG_Cobol74:
685 case DW_LANG_Cobol85:
686 case DW_LANG_Fortran77:
687 case DW_LANG_Fortran90:
688 case DW_LANG_Pascal83:
689 case DW_LANG_Modula2:
692 case DW_LANG_Fortran95:
694 case DW_LANG_ObjC_plus_plus:
700 case DW_LANG_Modula3:
701 case DW_LANG_Haskell:
707 case DW_LANG_Fortran03:
708 case DW_LANG_Fortran08:
709 case DW_LANG_RenderScript:
711 case DW_LANG_Mips_Assembler:
712 case DW_LANG_GOOGLE_RenderScript:
713 case DW_LANG_BORLAND_Delphi:
718 case DW_LANG_Crystal:
719 case DW_LANG_Fortran18:
720 case DW_LANG_Ada2005:
721 case DW_LANG_Ada2012:
723 case DW_LANG_Assembly:
724 case DW_LANG_C_sharp:
727 case DW_LANG_GLSL_ES:
729 case DW_LANG_OpenCL_CPP:
730 case DW_LANG_CPP_for_OpenCL:
742 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;
755#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,
756#include "llvm/BinaryFormat/Dwarf.def"
762#define HANDLE_DW_ASPACE(ID, NAME) DW_ASPACE_LLVM_##NAME = ID,
763#define HANDLE_DW_ASPACE_PRED(ID, NAME, PRED) DW_ASPACE_LLVM_##NAME = ID,
764#include "llvm/BinaryFormat/Dwarf.def"
789#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,
790#include "llvm/BinaryFormat/Dwarf.def"
795#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,
796#include "llvm/BinaryFormat/Dwarf.def"
802#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,
803#include "llvm/BinaryFormat/Dwarf.def"
819#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,
820#include "llvm/BinaryFormat/Dwarf.def"
827#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,
828#include "llvm/BinaryFormat/Dwarf.def"
835#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,
836#include "llvm/BinaryFormat/Dwarf.def"
841#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,
842#include "llvm/BinaryFormat/Dwarf.def"
847#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
848#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
849#include "llvm/BinaryFormat/Dwarf.def"
884#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,
885#include "llvm/BinaryFormat/Dwarf.def"
890#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,
891#include "llvm/BinaryFormat/Dwarf.def"
897#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,
898#include "llvm/BinaryFormat/Dwarf.def"
909 case DW_UT_split_compile:
910 case DW_UT_split_type:
919 case DW_TAG_compile_unit:
920 case DW_TAG_type_unit:
921 case DW_TAG_partial_unit:
922 case DW_TAG_skeleton_unit:
956 if (UniqueHashCount > 1024)
957 return UniqueHashCount / 4;
958 if (UniqueHashCount > 16)
959 return UniqueHashCount / 2;
960 return std::max<uint32_t>(UniqueHashCount, 1);
990 unsigned SubOpEncoding);
1153 bool ExtensionsOk =
true);
1186 return Kind << KIND_OFFSET |
Linkage << LINKAGE_OFFSET;
1192 KIND_MASK = 7 << KIND_OFFSET,
1194 LINKAGE_MASK = 1 << LINKAGE_OFFSET
1198template <
typename Enum>
struct EnumTraits :
public std::false_type {};
1201 static constexpr char Type[3] =
"AT";
1206 static constexpr char Type[5] =
"FORM";
1211 static constexpr char Type[4] =
"IDX";
1216 static constexpr char Type[4] =
"TAG";
1221 static constexpr char Type[4] =
"LNS";
1226 static constexpr char Type[3] =
"OP";
1231 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;
1241template <
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...
StringRef - 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 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 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 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.
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.
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.
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