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;
401inline std::optional<std::pair<SourceLanguageName, uint32_t>>
405 return {{DW_LNAME_Ada, 1983}};
407 return {{DW_LNAME_Ada, 1995}};
408 case DW_LANG_Ada2005:
409 return {{DW_LNAME_Ada, 2005}};
410 case DW_LANG_Ada2012:
411 return {{DW_LNAME_Ada, 2012}};
413 return {{DW_LNAME_BLISS, 0}};
415 return {{DW_LNAME_C, 0}};
417 return {{DW_LNAME_C, 198912}};
419 return {{DW_LNAME_C, 199901}};
421 return {{DW_LNAME_C, 201112}};
423 return {{DW_LNAME_C, 201710}};
425 return {{DW_LNAME_C, 202311}};
426 case DW_LANG_C_plus_plus:
427 return {{DW_LNAME_C_plus_plus, 0}};
428 case DW_LANG_C_plus_plus_03:
429 return {{DW_LNAME_C_plus_plus, 200310}};
430 case DW_LANG_C_plus_plus_11:
431 return {{DW_LNAME_C_plus_plus, 201103}};
432 case DW_LANG_C_plus_plus_14:
433 return {{DW_LNAME_C_plus_plus, 201402}};
434 case DW_LANG_C_plus_plus_17:
435 return {{DW_LNAME_C_plus_plus, 201703}};
436 case DW_LANG_C_plus_plus_20:
437 return {{DW_LNAME_C_plus_plus, 202002}};
438 case DW_LANG_C_plus_plus_23:
439 return {{DW_LNAME_C_plus_plus, 202302}};
440 case DW_LANG_Cobol74:
441 return {{DW_LNAME_Cobol, 1974}};
442 case DW_LANG_Cobol85:
443 return {{DW_LNAME_Cobol, 1985}};
444 case DW_LANG_Crystal:
445 return {{DW_LNAME_Crystal, 0}};
447 return {{DW_LNAME_D, 0}};
449 return {{DW_LNAME_Dylan, 0}};
450 case DW_LANG_Fortran77:
451 return {{DW_LNAME_Fortran, 1977}};
452 case DW_LANG_Fortran90:
453 return {{DW_LNAME_Fortran, 1990}};
454 case DW_LANG_Fortran95:
455 return {{DW_LNAME_Fortran, 1995}};
456 case DW_LANG_Fortran03:
457 return {{DW_LNAME_Fortran, 2003}};
458 case DW_LANG_Fortran08:
459 return {{DW_LNAME_Fortran, 2008}};
460 case DW_LANG_Fortran18:
461 return {{DW_LNAME_Fortran, 2018}};
462 case DW_LANG_Fortran23:
463 return {{DW_LNAME_Fortran, 2023}};
465 return {{DW_LNAME_Go, 0}};
466 case DW_LANG_Haskell:
467 return {{DW_LNAME_Haskell, 0}};
469 return {{DW_LNAME_HIP, 0}};
471 return {{DW_LNAME_Odin, 0}};
473 return {{DW_LNAME_P4, 0}};
475 return {{DW_LNAME_Java, 0}};
477 return {{DW_LNAME_Julia, 0}};
479 return {{DW_LNAME_Kotlin, 0}};
480 case DW_LANG_Modula2:
481 return {{DW_LNAME_Modula2, 0}};
482 case DW_LANG_Modula3:
483 return {{DW_LNAME_Modula3, 0}};
485 return {{DW_LNAME_ObjC, 0}};
486 case DW_LANG_ObjC_plus_plus:
487 return {{DW_LNAME_ObjC_plus_plus, 0}};
489 return {{DW_LNAME_OCaml, 0}};
491 return {{DW_LNAME_OpenCL_C, 0}};
492 case DW_LANG_Pascal83:
493 return {{DW_LNAME_Pascal, 1983}};
495 return {{DW_LNAME_PLI, 0}};
497 return {{DW_LNAME_Python, 0}};
498 case DW_LANG_RenderScript:
499 case DW_LANG_GOOGLE_RenderScript:
500 return {{DW_LNAME_RenderScript, 0}};
502 return {{DW_LNAME_Rust, 0}};
504 return {{DW_LNAME_Swift, 0}};
506 return {{DW_LNAME_UPC, 0}};
508 return {{DW_LNAME_Zig, 0}};
509 case DW_LANG_Assembly:
510 case DW_LANG_Mips_Assembler:
511 return {{DW_LNAME_Assembly, 0}};
512 case DW_LANG_C_sharp:
513 return {{DW_LNAME_C_sharp, 0}};
515 return {{DW_LNAME_Mojo, 0}};
517 return {{DW_LNAME_GLSL, 0}};
518 case DW_LANG_GLSL_ES:
519 return {{DW_LNAME_GLSL_ES, 0}};
521 return {{DW_LNAME_HLSL, 0}};
522 case DW_LANG_OpenCL_CPP:
523 return {{DW_LNAME_OpenCL_CPP, 0}};
525 return {{DW_LNAME_SYCL, 0}};
527 return {{DW_LNAME_Ruby, 0}};
529 return {{DW_LNAME_Move, 0}};
531 return {{DW_LNAME_Hylo, 0}};
533 return {{DW_LNAME_Metal, 0}};
535 return {{DW_LNAME_V, 0}};
536 case DW_LANG_Algol68:
537 return {{DW_LNAME_Algol68, 1968}};
539 return {{DW_LNAME_Nim, 0}};
541 return {{DW_LNAME_Erlang, 0}};
543 return {{DW_LNAME_Elixir, 0}};
545 return {{DW_LNAME_Gleam, 0}};
547 return {{DW_LNAME_Roc, 0}};
548 case DW_LANG_BORLAND_Delphi:
549 case DW_LANG_CPP_for_OpenCL:
572 case DW_LANG_C_plus_plus:
573 case DW_LANG_C_plus_plus_03:
574 case DW_LANG_C_plus_plus_11:
575 case DW_LANG_C_plus_plus_14:
576 case DW_LANG_C_plus_plus_17:
577 case DW_LANG_C_plus_plus_20:
578 case DW_LANG_C_plus_plus_23:
584 case DW_LANG_Cobol74:
585 case DW_LANG_Cobol85:
586 case DW_LANG_Fortran77:
587 case DW_LANG_Fortran90:
588 case DW_LANG_Pascal83:
589 case DW_LANG_Modula2:
593 case DW_LANG_Fortran95:
596 case DW_LANG_ObjC_plus_plus:
602 case DW_LANG_Modula3:
603 case DW_LANG_Haskell:
610 case DW_LANG_Fortran03:
611 case DW_LANG_Fortran08:
612 case DW_LANG_RenderScript:
614 case DW_LANG_Mips_Assembler:
615 case DW_LANG_GOOGLE_RenderScript:
616 case DW_LANG_BORLAND_Delphi:
621 case DW_LANG_Crystal:
623 case DW_LANG_Fortran18:
624 case DW_LANG_Ada2005:
625 case DW_LANG_Ada2012:
627 case DW_LANG_Assembly:
628 case DW_LANG_C_sharp:
631 case DW_LANG_GLSL_ES:
633 case DW_LANG_OpenCL_CPP:
634 case DW_LANG_CPP_for_OpenCL:
641 case DW_LANG_Fortran23:
645 case DW_LANG_Algol68:
664 case DW_LANG_Fortran77:
665 case DW_LANG_Fortran90:
666 case DW_LANG_Fortran95:
667 case DW_LANG_Fortran03:
668 case DW_LANG_Fortran08:
669 case DW_LANG_Fortran18:
670 case DW_LANG_Fortran23:
676 case DW_LANG_C_plus_plus:
677 case DW_LANG_Cobol74:
678 case DW_LANG_Cobol85:
679 case DW_LANG_Pascal83:
680 case DW_LANG_Modula2:
686 case DW_LANG_ObjC_plus_plus:
692 case DW_LANG_Modula3:
693 case DW_LANG_Haskell:
694 case DW_LANG_C_plus_plus_03:
695 case DW_LANG_C_plus_plus_11:
702 case DW_LANG_C_plus_plus_14:
703 case DW_LANG_RenderScript:
705 case DW_LANG_Mips_Assembler:
706 case DW_LANG_GOOGLE_RenderScript:
707 case DW_LANG_BORLAND_Delphi:
712 case DW_LANG_Crystal:
713 case DW_LANG_C_plus_plus_17:
714 case DW_LANG_C_plus_plus_20:
716 case DW_LANG_Ada2005:
717 case DW_LANG_Ada2012:
719 case DW_LANG_Assembly:
720 case DW_LANG_C_sharp:
723 case DW_LANG_GLSL_ES:
725 case DW_LANG_OpenCL_CPP:
726 case DW_LANG_CPP_for_OpenCL:
732 case DW_LANG_C_plus_plus_23:
737 case DW_LANG_Algol68:
763 case DW_LANG_C_plus_plus:
764 case DW_LANG_C_plus_plus_03:
765 case DW_LANG_C_plus_plus_11:
766 case DW_LANG_C_plus_plus_14:
767 case DW_LANG_C_plus_plus_17:
768 case DW_LANG_C_plus_plus_20:
770 case DW_LANG_Cobol74:
771 case DW_LANG_Cobol85:
772 case DW_LANG_Fortran77:
773 case DW_LANG_Fortran90:
774 case DW_LANG_Pascal83:
775 case DW_LANG_Modula2:
778 case DW_LANG_Fortran95:
780 case DW_LANG_ObjC_plus_plus:
786 case DW_LANG_Modula3:
787 case DW_LANG_Haskell:
793 case DW_LANG_Fortran03:
794 case DW_LANG_Fortran08:
795 case DW_LANG_RenderScript:
797 case DW_LANG_Mips_Assembler:
798 case DW_LANG_GOOGLE_RenderScript:
799 case DW_LANG_BORLAND_Delphi:
804 case DW_LANG_Crystal:
805 case DW_LANG_Fortran18:
806 case DW_LANG_Ada2005:
807 case DW_LANG_Ada2012:
809 case DW_LANG_Assembly:
810 case DW_LANG_C_sharp:
813 case DW_LANG_GLSL_ES:
815 case DW_LANG_OpenCL_CPP:
816 case DW_LANG_CPP_for_OpenCL:
822 case DW_LANG_C_plus_plus_23:
823 case DW_LANG_Fortran23:
827 case DW_LANG_Algol68:
840 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;
853#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,
854#include "llvm/BinaryFormat/Dwarf.def"
860#define HANDLE_DW_MSPACE(ID, NAME) DW_MSPACE_LLVM_##NAME = ID,
861#include "llvm/BinaryFormat/Dwarf.def"
867#define HANDLE_DW_ASPACE(ID, NAME) DW_ASPACE_LLVM_##NAME = ID,
868#define HANDLE_DW_ASPACE_PRED(ID, NAME, PRED) DW_ASPACE_LLVM_##NAME = ID,
869#include "llvm/BinaryFormat/Dwarf.def"
894#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,
895#include "llvm/BinaryFormat/Dwarf.def"
900#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,
901#include "llvm/BinaryFormat/Dwarf.def"
907#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,
908#include "llvm/BinaryFormat/Dwarf.def"
924#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,
925#include "llvm/BinaryFormat/Dwarf.def"
932#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,
933#include "llvm/BinaryFormat/Dwarf.def"
940#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,
941#include "llvm/BinaryFormat/Dwarf.def"
946#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,
947#include "llvm/BinaryFormat/Dwarf.def"
952#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,
953#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,
954#include "llvm/BinaryFormat/Dwarf.def"
989#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,
990#include "llvm/BinaryFormat/Dwarf.def"
995#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,
996#include "llvm/BinaryFormat/Dwarf.def"
1002#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,
1003#include "llvm/BinaryFormat/Dwarf.def"
1013 case DW_UT_skeleton:
1014 case DW_UT_split_compile:
1015 case DW_UT_split_type:
1024 case DW_TAG_compile_unit:
1025 case DW_TAG_type_unit:
1026 case DW_TAG_partial_unit:
1027 case DW_TAG_skeleton_unit:
1061 if (UniqueHashCount > 1024)
1062 return UniqueHashCount / 4;
1063 if (UniqueHashCount > 16)
1064 return UniqueHashCount / 2;
1065 return std::max<uint32_t>(UniqueHashCount, 1);
1095 unsigned SubOpEncoding);
1197 return O == DW_OP_form_tls_address || O == DW_OP_GNU_push_tls_address;
1271 bool ExtensionsOk =
true);
1304 return Kind << KIND_OFFSET |
Linkage << LINKAGE_OFFSET;
1310 KIND_MASK = 7 << KIND_OFFSET,
1312 LINKAGE_MASK = 1 << LINKAGE_OFFSET
1316template <
typename Enum>
struct EnumTraits :
public std::false_type {};
1319 static constexpr char Type[3] =
"AT";
1324 static constexpr char Type[5] =
"FORM";
1329 static constexpr char Type[4] =
"IDX";
1334 static constexpr char Type[4] =
"TAG";
1339 static constexpr char Type[4] =
"LNS";
1344 static constexpr char Type[3] =
"OP";
1349 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;
1359template <
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 MemorySpaceString(unsigned MS)
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 getMemorySpace(StringRef MSString)
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