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)
263 if (version <= 202311)
266 case DW_LNAME_C_plus_plus:
268 return DW_LANG_C_plus_plus;
269 if (version <= 199711)
270 return DW_LANG_C_plus_plus;
271 if (version <= 200310)
272 return DW_LANG_C_plus_plus_03;
273 if (version <= 201103)
274 return DW_LANG_C_plus_plus_11;
275 if (version <= 201402)
276 return DW_LANG_C_plus_plus_14;
277 if (version <= 201703)
278 return DW_LANG_C_plus_plus_17;
279 if (version <= 202002)
280 return DW_LANG_C_plus_plus_20;
281 if (version <= 202302)
282 return DW_LANG_C_plus_plus_23;
286 return DW_LANG_Cobol74;
288 return DW_LANG_Cobol85;
290 case DW_LNAME_Crystal:
291 return DW_LANG_Crystal;
295 return DW_LANG_Dylan;
296 case DW_LNAME_Fortran:
298 return DW_LANG_Fortran77;
300 return DW_LANG_Fortran90;
302 return DW_LANG_Fortran95;
304 return DW_LANG_Fortran03;
306 return DW_LANG_Fortran08;
308 return DW_LANG_Fortran18;
310 return DW_LANG_Fortran23;
314 case DW_LNAME_Haskell:
315 return DW_LANG_Haskell;
325 return DW_LANG_Julia;
326 case DW_LNAME_Kotlin:
327 return DW_LANG_Kotlin;
328 case DW_LNAME_Modula2:
329 return DW_LANG_Modula2;
330 case DW_LNAME_Modula3:
331 return DW_LANG_Modula3;
334 case DW_LNAME_ObjC_plus_plus:
335 return DW_LANG_ObjC_plus_plus;
337 return DW_LANG_OCaml;
338 case DW_LNAME_OpenCL_C:
339 return DW_LANG_OpenCL;
340 case DW_LNAME_Pascal:
341 return DW_LANG_Pascal83;
344 case DW_LNAME_Python:
345 return DW_LANG_Python;
346 case DW_LNAME_RenderScript:
347 return DW_LANG_RenderScript;
351 return DW_LANG_Swift;
356 case DW_LNAME_Assembly:
357 return DW_LANG_Assembly;
358 case DW_LNAME_C_sharp:
359 return DW_LANG_C_sharp;
364 case DW_LNAME_GLSL_ES:
365 return DW_LANG_GLSL_ES;
368 case DW_LNAME_OpenCL_CPP:
369 return DW_LANG_OpenCL_CPP;
370 case DW_LNAME_CPP_for_OpenCL:
381 return DW_LANG_Metal;
384 case DW_LNAME_Algol68:
385 return DW_LANG_Algol68;
388 case DW_LNAME_Erlang:
389 return DW_LANG_Erlang;
390 case DW_LNAME_Elixir:
391 return DW_LANG_Elixir;
393 return DW_LANG_Gleam;
399inline std::optional<std::pair<SourceLanguageName, uint32_t>>
403 return {{DW_LNAME_Ada, 1983}};
405 return {{DW_LNAME_Ada, 1995}};
406 case DW_LANG_Ada2005:
407 return {{DW_LNAME_Ada, 2005}};
408 case DW_LANG_Ada2012:
409 return {{DW_LNAME_Ada, 2012}};
411 return {{DW_LNAME_BLISS, 0}};
413 return {{DW_LNAME_C, 0}};
415 return {{DW_LNAME_C, 198912}};
417 return {{DW_LNAME_C, 199901}};
419 return {{DW_LNAME_C, 201112}};
421 return {{DW_LNAME_C, 201710}};
423 return {{DW_LNAME_C, 202311}};
424 case DW_LANG_C_plus_plus:
425 return {{DW_LNAME_C_plus_plus, 0}};
426 case DW_LANG_C_plus_plus_03:
427 return {{DW_LNAME_C_plus_plus, 200310}};
428 case DW_LANG_C_plus_plus_11:
429 return {{DW_LNAME_C_plus_plus, 201103}};
430 case DW_LANG_C_plus_plus_14:
431 return {{DW_LNAME_C_plus_plus, 201402}};
432 case DW_LANG_C_plus_plus_17:
433 return {{DW_LNAME_C_plus_plus, 201703}};
434 case DW_LANG_C_plus_plus_20:
435 return {{DW_LNAME_C_plus_plus, 202002}};
436 case DW_LANG_C_plus_plus_23:
437 return {{DW_LNAME_C_plus_plus, 202302}};
438 case DW_LANG_Cobol74:
439 return {{DW_LNAME_Cobol, 1974}};
440 case DW_LANG_Cobol85:
441 return {{DW_LNAME_Cobol, 1985}};
442 case DW_LANG_Crystal:
443 return {{DW_LNAME_Crystal, 0}};
445 return {{DW_LNAME_D, 0}};
447 return {{DW_LNAME_Dylan, 0}};
448 case DW_LANG_Fortran77:
449 return {{DW_LNAME_Fortran, 1977}};
450 case DW_LANG_Fortran90:
451 return {{DW_LNAME_Fortran, 1990}};
452 case DW_LANG_Fortran95:
453 return {{DW_LNAME_Fortran, 1995}};
454 case DW_LANG_Fortran03:
455 return {{DW_LNAME_Fortran, 2003}};
456 case DW_LANG_Fortran08:
457 return {{DW_LNAME_Fortran, 2008}};
458 case DW_LANG_Fortran18:
459 return {{DW_LNAME_Fortran, 2018}};
460 case DW_LANG_Fortran23:
461 return {{DW_LNAME_Fortran, 2023}};
463 return {{DW_LNAME_Go, 0}};
464 case DW_LANG_Haskell:
465 return {{DW_LNAME_Haskell, 0}};
467 return {{DW_LNAME_HIP, 0}};
469 return {{DW_LNAME_Odin, 0}};
471 return {{DW_LNAME_P4, 0}};
473 return {{DW_LNAME_Java, 0}};
475 return {{DW_LNAME_Julia, 0}};
477 return {{DW_LNAME_Kotlin, 0}};
478 case DW_LANG_Modula2:
479 return {{DW_LNAME_Modula2, 0}};
480 case DW_LANG_Modula3:
481 return {{DW_LNAME_Modula3, 0}};
483 return {{DW_LNAME_ObjC, 0}};
484 case DW_LANG_ObjC_plus_plus:
485 return {{DW_LNAME_ObjC_plus_plus, 0}};
487 return {{DW_LNAME_OCaml, 0}};
489 return {{DW_LNAME_OpenCL_C, 0}};
490 case DW_LANG_Pascal83:
491 return {{DW_LNAME_Pascal, 1983}};
493 return {{DW_LNAME_PLI, 0}};
495 return {{DW_LNAME_Python, 0}};
496 case DW_LANG_RenderScript:
497 case DW_LANG_GOOGLE_RenderScript:
498 return {{DW_LNAME_RenderScript, 0}};
500 return {{DW_LNAME_Rust, 0}};
502 return {{DW_LNAME_Swift, 0}};
504 return {{DW_LNAME_UPC, 0}};
506 return {{DW_LNAME_Zig, 0}};
507 case DW_LANG_Assembly:
508 case DW_LANG_Mips_Assembler:
509 return {{DW_LNAME_Assembly, 0}};
510 case DW_LANG_C_sharp:
511 return {{DW_LNAME_C_sharp, 0}};
513 return {{DW_LNAME_Mojo, 0}};
515 return {{DW_LNAME_GLSL, 0}};
516 case DW_LANG_GLSL_ES:
517 return {{DW_LNAME_GLSL_ES, 0}};
519 return {{DW_LNAME_HLSL, 0}};
520 case DW_LANG_OpenCL_CPP:
521 return {{DW_LNAME_OpenCL_CPP, 0}};
523 return {{DW_LNAME_SYCL, 0}};
525 return {{DW_LNAME_Ruby, 0}};
527 return {{DW_LNAME_Move, 0}};
529 return {{DW_LNAME_Hylo, 0}};
531 return {{DW_LNAME_Metal, 0}};
533 return {{DW_LNAME_V, 0}};
534 case DW_LANG_Algol68:
535 return {{DW_LNAME_Algol68, 1968}};
537 return {{DW_LNAME_Nim, 0}};
539 return {{DW_LNAME_Erlang, 0}};
541 return {{DW_LNAME_Elixir, 0}};
543 return {{DW_LNAME_Gleam, 0}};
544 case DW_LANG_BORLAND_Delphi:
545 case DW_LANG_CPP_for_OpenCL:
568 case DW_LANG_C_plus_plus:
569 case DW_LANG_C_plus_plus_03:
570 case DW_LANG_C_plus_plus_11:
571 case DW_LANG_C_plus_plus_14:
572 case DW_LANG_C_plus_plus_17:
573 case DW_LANG_C_plus_plus_20:
574 case DW_LANG_C_plus_plus_23:
580 case DW_LANG_Cobol74:
581 case DW_LANG_Cobol85:
582 case DW_LANG_Fortran77:
583 case DW_LANG_Fortran90:
584 case DW_LANG_Pascal83:
585 case DW_LANG_Modula2:
589 case DW_LANG_Fortran95:
592 case DW_LANG_ObjC_plus_plus:
598 case DW_LANG_Modula3:
599 case DW_LANG_Haskell:
606 case DW_LANG_Fortran03:
607 case DW_LANG_Fortran08:
608 case DW_LANG_RenderScript:
610 case DW_LANG_Mips_Assembler:
611 case DW_LANG_GOOGLE_RenderScript:
612 case DW_LANG_BORLAND_Delphi:
617 case DW_LANG_Crystal:
619 case DW_LANG_Fortran18:
620 case DW_LANG_Ada2005:
621 case DW_LANG_Ada2012:
623 case DW_LANG_Assembly:
624 case DW_LANG_C_sharp:
627 case DW_LANG_GLSL_ES:
629 case DW_LANG_OpenCL_CPP:
630 case DW_LANG_CPP_for_OpenCL:
637 case DW_LANG_Fortran23:
641 case DW_LANG_Algol68:
659 case DW_LANG_Fortran77:
660 case DW_LANG_Fortran90:
661 case DW_LANG_Fortran95:
662 case DW_LANG_Fortran03:
663 case DW_LANG_Fortran08:
664 case DW_LANG_Fortran18:
665 case DW_LANG_Fortran23:
671 case DW_LANG_C_plus_plus:
672 case DW_LANG_Cobol74:
673 case DW_LANG_Cobol85:
674 case DW_LANG_Pascal83:
675 case DW_LANG_Modula2:
681 case DW_LANG_ObjC_plus_plus:
687 case DW_LANG_Modula3:
688 case DW_LANG_Haskell:
689 case DW_LANG_C_plus_plus_03:
690 case DW_LANG_C_plus_plus_11:
697 case DW_LANG_C_plus_plus_14:
698 case DW_LANG_RenderScript:
700 case DW_LANG_Mips_Assembler:
701 case DW_LANG_GOOGLE_RenderScript:
702 case DW_LANG_BORLAND_Delphi:
707 case DW_LANG_Crystal:
708 case DW_LANG_C_plus_plus_17:
709 case DW_LANG_C_plus_plus_20:
711 case DW_LANG_Ada2005:
712 case DW_LANG_Ada2012:
714 case DW_LANG_Assembly:
715 case DW_LANG_C_sharp:
718 case DW_LANG_GLSL_ES:
720 case DW_LANG_OpenCL_CPP:
721 case DW_LANG_CPP_for_OpenCL:
727 case DW_LANG_C_plus_plus_23:
732 case DW_LANG_Algol68:
757 case DW_LANG_C_plus_plus:
758 case DW_LANG_C_plus_plus_03:
759 case DW_LANG_C_plus_plus_11:
760 case DW_LANG_C_plus_plus_14:
761 case DW_LANG_C_plus_plus_17:
762 case DW_LANG_C_plus_plus_20:
764 case DW_LANG_Cobol74:
765 case DW_LANG_Cobol85:
766 case DW_LANG_Fortran77:
767 case DW_LANG_Fortran90:
768 case DW_LANG_Pascal83:
769 case DW_LANG_Modula2:
772 case DW_LANG_Fortran95:
774 case DW_LANG_ObjC_plus_plus:
780 case DW_LANG_Modula3:
781 case DW_LANG_Haskell:
787 case DW_LANG_Fortran03:
788 case DW_LANG_Fortran08:
789 case DW_LANG_RenderScript:
791 case DW_LANG_Mips_Assembler:
792 case DW_LANG_GOOGLE_RenderScript:
793 case DW_LANG_BORLAND_Delphi:
798 case DW_LANG_Crystal:
799 case DW_LANG_Fortran18:
800 case DW_LANG_Ada2005:
801 case DW_LANG_Ada2012:
803 case DW_LANG_Assembly:
804 case DW_LANG_C_sharp:
807 case DW_LANG_GLSL_ES:
809 case DW_LANG_OpenCL_CPP:
810 case DW_LANG_CPP_for_OpenCL:
816 case DW_LANG_C_plus_plus_23:
817 case DW_LANG_Fortran23:
821 case DW_LANG_Algol68:
832 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;
845#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,
846#include "llvm/BinaryFormat/Dwarf.def"
852#define HANDLE_DW_ASPACE(ID, NAME) DW_ASPACE_LLVM_##NAME = ID,
853#define HANDLE_DW_ASPACE_PRED(ID, NAME, PRED) DW_ASPACE_LLVM_##NAME = ID,
854#include "llvm/BinaryFormat/Dwarf.def"
879#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,
880#include "llvm/BinaryFormat/Dwarf.def"
885#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,
886#include "llvm/BinaryFormat/Dwarf.def"
892#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,
893#include "llvm/BinaryFormat/Dwarf.def"
909#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,
910#include "llvm/BinaryFormat/Dwarf.def"
917#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,
918#include "llvm/BinaryFormat/Dwarf.def"
925#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,
926#include "llvm/BinaryFormat/Dwarf.def"
931#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,
932#include "llvm/BinaryFormat/Dwarf.def"
937#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
938#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
939#include "llvm/BinaryFormat/Dwarf.def"
974#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,
975#include "llvm/BinaryFormat/Dwarf.def"
980#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,
981#include "llvm/BinaryFormat/Dwarf.def"
987#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,
988#include "llvm/BinaryFormat/Dwarf.def"
999 case DW_UT_split_compile:
1000 case DW_UT_split_type:
1009 case DW_TAG_compile_unit:
1010 case DW_TAG_type_unit:
1011 case DW_TAG_partial_unit:
1012 case DW_TAG_skeleton_unit:
1046 if (UniqueHashCount > 1024)
1047 return UniqueHashCount / 4;
1048 if (UniqueHashCount > 16)
1049 return UniqueHashCount / 2;
1050 return std::max<uint32_t>(UniqueHashCount, 1);
1080 unsigned SubOpEncoding);
1180 return O == DW_OP_form_tls_address || O == DW_OP_GNU_push_tls_address;
1254 bool ExtensionsOk =
true);
1287 return Kind << KIND_OFFSET |
Linkage << LINKAGE_OFFSET;
1293 KIND_MASK = 7 << KIND_OFFSET,
1295 LINKAGE_MASK = 1 << LINKAGE_OFFSET
1299template <
typename Enum>
struct EnumTraits :
public std::false_type {};
1302 static constexpr char Type[3] =
"AT";
1307 static constexpr char Type[5] =
"FORM";
1312 static constexpr char Type[4] =
"IDX";
1317 static constexpr char Type[4] =
"TAG";
1322 static constexpr char Type[4] =
"LNS";
1327 static constexpr char Type[3] =
"OP";
1332 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;
1342template <
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.
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