1 //===-- DWARFDefines.cpp ----------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "DWARFDefines.h"
11 #include "lldb/Utility/ConstString.h"
16 namespace lldb_private {
18 const char *DW_TAG_value_to_name(uint32_t val) {
19 static char invalid[100];
24 llvm::StringRef llvmstr = llvm::dwarf::TagString(val);
25 if (llvmstr.empty()) {
26 snprintf(invalid, sizeof(invalid), "Unknown DW_TAG constant: 0x%x", val);
29 return llvmstr.data();
32 const char *DW_CHILDREN_value_to_name(uint8_t val) {
33 static char invalid[100];
34 llvm::StringRef llvmstr = llvm::dwarf::ChildrenString(val);
35 if (llvmstr.empty()) {
36 snprintf(invalid, sizeof(invalid), "Unknown DW_CHILDREN constant: 0x%x",
40 return llvmstr.data();
43 const char *DW_AT_value_to_name(uint32_t val) {
44 static char invalid[100];
45 llvm::StringRef llvmstr = llvm::dwarf::AttributeString(val);
46 if (llvmstr.empty()) {
47 snprintf(invalid, sizeof(invalid), "Unknown DW_AT constant: 0x%x", val);
50 return llvmstr.data();
53 const char *DW_FORM_value_to_name(uint32_t val) {
54 static char invalid[100];
55 llvm::StringRef llvmstr = llvm::dwarf::FormEncodingString(val);
56 if (llvmstr.empty()) {
57 snprintf(invalid, sizeof(invalid), "Unknown DW_FORM constant: 0x%x", val);
60 return llvmstr.data();
63 const char *DW_OP_value_to_name(uint32_t val) {
64 static char invalid[100];
65 llvm::StringRef llvmstr = llvm::dwarf::OperationEncodingString(val);
66 if (llvmstr.empty()) {
67 snprintf(invalid, sizeof(invalid), "Unknown DW_OP constant: 0x%x", val);
70 return llvmstr.data();
73 DRC_class DW_OP_value_to_class(uint32_t val) {
76 return DRC_ONEOPERAND;
78 return DRC_ZEROOPERANDS;
80 return DRC_ONEOPERAND;
82 return DRC_ONEOPERAND;
84 return DRC_ONEOPERAND;
86 return DRC_ONEOPERAND;
88 return DRC_ONEOPERAND;
90 return DRC_ONEOPERAND;
92 return DRC_ONEOPERAND;
94 return DRC_ONEOPERAND;
96 return DRC_ONEOPERAND;
98 return DRC_ONEOPERAND;
100 return DRC_ZEROOPERANDS;
102 return DRC_ZEROOPERANDS;
104 return DRC_ZEROOPERANDS;
106 return DRC_ONEOPERAND;
108 return DRC_ZEROOPERANDS;
110 return DRC_ZEROOPERANDS;
112 return DRC_ZEROOPERANDS;
114 return DRC_ZEROOPERANDS;
116 return DRC_ZEROOPERANDS;
118 return DRC_ZEROOPERANDS;
120 return DRC_ZEROOPERANDS;
122 return DRC_ZEROOPERANDS;
124 return DRC_ZEROOPERANDS;
126 return DRC_ZEROOPERANDS;
128 return DRC_ZEROOPERANDS;
130 return DRC_ZEROOPERANDS;
132 return DRC_ZEROOPERANDS;
134 return DRC_ONEOPERAND;
136 return DRC_ZEROOPERANDS;
138 return DRC_ZEROOPERANDS;
140 return DRC_ZEROOPERANDS;
142 return DRC_ZEROOPERANDS;
144 return DRC_ONEOPERAND;
146 return DRC_ONEOPERAND;
148 return DRC_ZEROOPERANDS;
150 return DRC_ZEROOPERANDS;
152 return DRC_ZEROOPERANDS;
154 return DRC_ZEROOPERANDS;
156 return DRC_ZEROOPERANDS;
158 return DRC_ZEROOPERANDS;
160 return DRC_ZEROOPERANDS;
162 return DRC_ZEROOPERANDS;
164 return DRC_ZEROOPERANDS;
166 return DRC_ZEROOPERANDS;
168 return DRC_ZEROOPERANDS;
170 return DRC_ZEROOPERANDS;
172 return DRC_ZEROOPERANDS;
174 return DRC_ZEROOPERANDS;
176 return DRC_ZEROOPERANDS;
178 return DRC_ZEROOPERANDS;
180 return DRC_ZEROOPERANDS;
182 return DRC_ZEROOPERANDS;
184 return DRC_ZEROOPERANDS;
186 return DRC_ZEROOPERANDS;
188 return DRC_ZEROOPERANDS;
190 return DRC_ZEROOPERANDS;
192 return DRC_ZEROOPERANDS;
194 return DRC_ZEROOPERANDS;
196 return DRC_ZEROOPERANDS;
198 return DRC_ZEROOPERANDS;
200 return DRC_ZEROOPERANDS;
202 return DRC_ZEROOPERANDS;
204 return DRC_ZEROOPERANDS;
206 return DRC_ZEROOPERANDS;
208 return DRC_ZEROOPERANDS;
210 return DRC_ZEROOPERANDS;
212 return DRC_ZEROOPERANDS;
214 return DRC_ZEROOPERANDS;
216 return DRC_ZEROOPERANDS;
218 return DRC_ZEROOPERANDS;
220 return DRC_ZEROOPERANDS;
222 return DRC_ZEROOPERANDS;
224 return DRC_ZEROOPERANDS;
226 return DRC_ZEROOPERANDS;
228 return DRC_ZEROOPERANDS;
230 return DRC_ZEROOPERANDS;
232 return DRC_ZEROOPERANDS;
234 return DRC_ZEROOPERANDS;
236 return DRC_ZEROOPERANDS;
238 return DRC_ZEROOPERANDS;
240 return DRC_ZEROOPERANDS;
242 return DRC_ZEROOPERANDS;
244 return DRC_ZEROOPERANDS;
246 return DRC_ZEROOPERANDS;
248 return DRC_ZEROOPERANDS;
250 return DRC_ZEROOPERANDS;
252 return DRC_ZEROOPERANDS;
254 return DRC_ZEROOPERANDS;
256 return DRC_ZEROOPERANDS;
258 return DRC_ZEROOPERANDS;
260 return DRC_ZEROOPERANDS;
262 return DRC_ZEROOPERANDS;
264 return DRC_ZEROOPERANDS;
266 return DRC_ZEROOPERANDS;
268 return DRC_ZEROOPERANDS;
270 return DRC_ZEROOPERANDS;
272 return DRC_ZEROOPERANDS;
274 return DRC_ZEROOPERANDS;
276 return DRC_ZEROOPERANDS;
278 return DRC_ZEROOPERANDS;
280 return DRC_ZEROOPERANDS;
282 return DRC_ZEROOPERANDS;
284 return DRC_ZEROOPERANDS;
286 return DRC_ZEROOPERANDS;
288 return DRC_ONEOPERAND;
290 return DRC_ONEOPERAND;
292 return DRC_ONEOPERAND;
294 return DRC_ONEOPERAND;
296 return DRC_ONEOPERAND;
298 return DRC_ONEOPERAND;
300 return DRC_ONEOPERAND;
302 return DRC_ONEOPERAND;
304 return DRC_ONEOPERAND;
306 return DRC_ONEOPERAND;
308 return DRC_ONEOPERAND;
310 return DRC_ONEOPERAND;
312 return DRC_ONEOPERAND;
314 return DRC_ONEOPERAND;
316 return DRC_ONEOPERAND;
318 return DRC_ONEOPERAND;
320 return DRC_ONEOPERAND;
322 return DRC_ONEOPERAND;
324 return DRC_ONEOPERAND;
326 return DRC_ONEOPERAND;
328 return DRC_ONEOPERAND;
330 return DRC_ONEOPERAND;
332 return DRC_ONEOPERAND;
334 return DRC_ONEOPERAND;
336 return DRC_ONEOPERAND;
338 return DRC_ONEOPERAND;
340 return DRC_ONEOPERAND;
342 return DRC_ONEOPERAND;
344 return DRC_ONEOPERAND;
346 return DRC_ONEOPERAND;
348 return DRC_ONEOPERAND;
350 return DRC_ONEOPERAND;
352 return DRC_ONEOPERAND;
354 return DRC_ONEOPERAND;
356 return DRC_TWOOPERANDS;
358 return DRC_ONEOPERAND;
360 return DRC_ONEOPERAND;
362 return DRC_ONEOPERAND;
364 return DRC_ZEROOPERANDS;
366 return DRC_DWARFv3 | DRC_ZEROOPERANDS;
368 return DRC_DWARFv3 | DRC_ONEOPERAND;
370 return DRC_DWARFv3 | DRC_ONEOPERAND;
372 return DRC_DWARFv3 | DRC_ONEOPERAND;
374 return DRC_ZEROOPERANDS; /* DW_OP_APPLE_uninit */
384 const char *DW_ATE_value_to_name(uint32_t val) {
385 static char invalid[100];
386 llvm::StringRef llvmstr = llvm::dwarf::AttributeEncodingString(val);
387 if (llvmstr.empty()) {
388 snprintf(invalid, sizeof(invalid), "Unknown DW_ATE constant: 0x%x", val);
391 return llvmstr.data();
394 const char *DW_ACCESS_value_to_name(uint32_t val) {
395 static char invalid[100];
397 llvm::StringRef llvmstr = llvm::dwarf::AccessibilityString(val);
398 if (llvmstr.empty()) {
399 snprintf(invalid, sizeof(invalid), "Unknown DW_ACCESS constant: 0x%x", val);
402 return llvmstr.data();
405 const char *DW_VIS_value_to_name(uint32_t val) {
406 static char invalid[100];
407 llvm::StringRef llvmstr = llvm::dwarf::VisibilityString(val);
408 if (llvmstr.empty()) {
409 snprintf(invalid, sizeof(invalid), "Unknown DW_VIS constant: 0x%x", val);
412 return llvmstr.data();
415 const char *DW_VIRTUALITY_value_to_name(uint32_t val) {
416 static char invalid[100];
417 llvm::StringRef llvmstr = llvm::dwarf::VirtualityString(val);
418 if (llvmstr.empty()) {
419 snprintf(invalid, sizeof(invalid), "Unknown DW_VIRTUALITY constant: 0x%x",
423 return llvmstr.data();
426 const char *DW_LANG_value_to_name(uint32_t val) {
427 static char invalid[100];
428 llvm::StringRef llvmstr = llvm::dwarf::LanguageString(val);
429 if (llvmstr.empty()) {
430 snprintf(invalid, sizeof(invalid), "Unknown DW_LANG constant: 0x%x", val);
433 return llvmstr.data();
436 const char *DW_ID_value_to_name(uint32_t val) {
437 static char invalid[100];
438 llvm::StringRef llvmstr = llvm::dwarf::CaseString(val);
439 if (llvmstr.empty()) {
440 snprintf(invalid, sizeof(invalid), "Unknown DW_ID constant: 0x%x", val);
443 return llvmstr.data();
446 const char *DW_CC_value_to_name(uint32_t val) {
447 static char invalid[100];
448 llvm::StringRef llvmstr = llvm::dwarf::ConventionString(val);
449 if (llvmstr.empty()) {
450 snprintf(invalid, sizeof(invalid), "Unknown DW_CC constant: 0x%x", val);
453 return llvmstr.data();
456 const char *DW_INL_value_to_name(uint32_t val) {
457 static char invalid[100];
458 llvm::StringRef llvmstr = llvm::dwarf::InlineCodeString(val);
459 if (llvmstr.empty()) {
460 snprintf(invalid, sizeof(invalid), "Unknown DW_INL constant: 0x%x", val);
463 return llvmstr.data();
466 const char *DW_ORD_value_to_name(uint32_t val) {
467 static char invalid[100];
468 llvm::StringRef llvmstr = llvm::dwarf::ArrayOrderString(val);
469 if (llvmstr.empty()) {
470 snprintf(invalid, sizeof(invalid), "Unknown DW_ORD constant: 0x%x", val);
473 return llvmstr.data();
476 const char *DW_DSC_value_to_name(uint32_t val) {
477 static char invalid[100];
478 llvm::StringRef llvmstr = llvm::dwarf::DiscriminantString(val);
479 if (llvmstr.empty()) {
480 snprintf(invalid, sizeof(invalid), "Unknown DW_DSC constant: 0x%x", val);
483 return llvmstr.data();
486 const char *DW_LNS_value_to_name(uint32_t val) {
487 static char invalid[100];
488 llvm::StringRef llvmstr = llvm::dwarf::LNStandardString(val);
489 if (llvmstr.empty()) {
490 snprintf(invalid, sizeof(invalid), "Unknown DW_LNS constant: 0x%x", val);
493 return llvmstr.data();
496 const char *DW_LNE_value_to_name(uint32_t val) {
497 static char invalid[100];
498 llvm::StringRef llvmstr = llvm::dwarf::LNExtendedString(val);
499 if (llvmstr.empty()) {
500 snprintf(invalid, sizeof(invalid), "Unknown DW_LNE constant: 0x%x", val);
503 return llvmstr.data();
506 const char *DW_MACINFO_value_to_name(uint32_t val) {
507 static char invalid[100];
508 llvm::StringRef llvmstr = llvm::dwarf::MacinfoString(val);
509 if (llvmstr.empty()) {
510 snprintf(invalid, sizeof(invalid), "Unknown DW_MACINFO constant: 0x%x",
514 return llvmstr.data();
517 const char *DW_CFA_value_to_name(uint32_t val) {
518 static char invalid[100];
519 llvm::StringRef llvmstr = llvm::dwarf::CallFrameString(val);
520 if (llvmstr.empty()) {
521 snprintf(invalid, sizeof(invalid), "Unknown DW_CFA constant: 0x%x", val);
524 return llvmstr.data();
527 DW_TAG_CategoryEnum get_tag_category(uint16_t tag) {
529 case DW_TAG_array_type:
530 return TagCategoryType;
531 case DW_TAG_class_type:
532 return TagCategoryType;
533 case DW_TAG_entry_point:
534 return TagCategoryProgram;
535 case DW_TAG_enumeration_type:
536 return TagCategoryType;
537 case DW_TAG_formal_parameter:
538 return TagCategoryVariable;
539 case DW_TAG_imported_declaration:
540 return TagCategoryProgram;
542 return TagCategoryProgram;
543 case DW_TAG_lexical_block:
544 return TagCategoryProgram;
546 return TagCategoryType;
547 case DW_TAG_pointer_type:
548 return TagCategoryType;
549 case DW_TAG_reference_type:
550 return TagCategoryType;
551 case DW_TAG_compile_unit:
552 return TagCategoryProgram;
553 case DW_TAG_string_type:
554 return TagCategoryType;
555 case DW_TAG_structure_type:
556 return TagCategoryType;
557 case DW_TAG_subroutine_type:
558 return TagCategoryType;
560 return TagCategoryType;
561 case DW_TAG_union_type:
562 return TagCategoryType;
563 case DW_TAG_unspecified_parameters:
564 return TagCategoryVariable;
566 return TagCategoryType;
567 case DW_TAG_common_block:
568 return TagCategoryProgram;
569 case DW_TAG_common_inclusion:
570 return TagCategoryProgram;
571 case DW_TAG_inheritance:
572 return TagCategoryType;
573 case DW_TAG_inlined_subroutine:
574 return TagCategoryProgram;
576 return TagCategoryProgram;
577 case DW_TAG_ptr_to_member_type:
578 return TagCategoryType;
579 case DW_TAG_set_type:
580 return TagCategoryType;
581 case DW_TAG_subrange_type:
582 return TagCategoryType;
583 case DW_TAG_with_stmt:
584 return TagCategoryProgram;
585 case DW_TAG_access_declaration:
586 return TagCategoryProgram;
587 case DW_TAG_base_type:
588 return TagCategoryType;
589 case DW_TAG_catch_block:
590 return TagCategoryProgram;
591 case DW_TAG_const_type:
592 return TagCategoryType;
593 case DW_TAG_constant:
594 return TagCategoryVariable;
595 case DW_TAG_enumerator:
596 return TagCategoryType;
597 case DW_TAG_file_type:
598 return TagCategoryType;
600 return TagCategoryType;
601 case DW_TAG_namelist:
602 return TagCategoryVariable;
603 case DW_TAG_namelist_item:
604 return TagCategoryVariable;
605 case DW_TAG_packed_type:
606 return TagCategoryType;
607 case DW_TAG_subprogram:
608 return TagCategoryProgram;
609 case DW_TAG_template_type_parameter:
610 return TagCategoryType;
611 case DW_TAG_template_value_parameter:
612 return TagCategoryType;
613 case DW_TAG_GNU_template_parameter_pack:
614 return TagCategoryType;
615 case DW_TAG_thrown_type:
616 return TagCategoryType;
617 case DW_TAG_try_block:
618 return TagCategoryProgram;
619 case DW_TAG_variant_part:
620 return TagCategoryType;
621 case DW_TAG_variable:
622 return TagCategoryVariable;
623 case DW_TAG_volatile_type:
624 return TagCategoryType;
625 case DW_TAG_dwarf_procedure:
626 return TagCategoryProgram;
627 case DW_TAG_restrict_type:
628 return TagCategoryType;
629 case DW_TAG_interface_type:
630 return TagCategoryType;
631 case DW_TAG_namespace:
632 return TagCategoryProgram;
633 case DW_TAG_imported_module:
634 return TagCategoryProgram;
635 case DW_TAG_unspecified_type:
636 return TagCategoryType;
637 case DW_TAG_partial_unit:
638 return TagCategoryProgram;
639 case DW_TAG_imported_unit:
640 return TagCategoryProgram;
641 case DW_TAG_shared_type:
642 return TagCategoryType;
646 return TagCategoryProgram;
649 } // namespace lldb_private