1*80814287SRaphael Isemann //===-- DWARFDefines.cpp --------------------------------------------------===//
2ea84e764SJason Molenda //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6ea84e764SJason Molenda //
7ea84e764SJason Molenda //===----------------------------------------------------------------------===//
8ea84e764SJason Molenda
9ea84e764SJason Molenda #include "DWARFDefines.h"
10bf9a7730SZachary Turner #include "lldb/Utility/ConstString.h"
113f3ff5ccSBenjamin Kramer #include <cstdio>
123f3ff5ccSBenjamin Kramer #include <cstring>
13ea84e764SJason Molenda #include <string>
14ea84e764SJason Molenda
15ea84e764SJason Molenda namespace lldb_private {
16ea84e764SJason Molenda
DW_TAG_value_to_name(uint32_t val)17b9c1b51eSKate Stone const char *DW_TAG_value_to_name(uint32_t val) {
18ea84e764SJason Molenda static char invalid[100];
19ea84e764SJason Molenda
20ea84e764SJason Molenda if (val == 0)
21ea84e764SJason Molenda return "NULL";
22ea84e764SJason Molenda
23149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::TagString(val);
24149f6eaeSMehdi Amini if (llvmstr.empty()) {
25ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_TAG constant: 0x%x", val);
26ea84e764SJason Molenda return invalid;
27ea84e764SJason Molenda }
28149f6eaeSMehdi Amini return llvmstr.data();
29ea84e764SJason Molenda }
30ea84e764SJason Molenda
DW_AT_value_to_name(uint32_t val)31b9c1b51eSKate Stone const char *DW_AT_value_to_name(uint32_t val) {
32ea84e764SJason Molenda static char invalid[100];
33149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::AttributeString(val);
34149f6eaeSMehdi Amini if (llvmstr.empty()) {
35ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_AT constant: 0x%x", val);
36ea84e764SJason Molenda return invalid;
37ea84e764SJason Molenda }
38149f6eaeSMehdi Amini return llvmstr.data();
39ea84e764SJason Molenda }
40ea84e764SJason Molenda
DW_FORM_value_to_name(uint32_t val)41b9c1b51eSKate Stone const char *DW_FORM_value_to_name(uint32_t val) {
42ea84e764SJason Molenda static char invalid[100];
43149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::FormEncodingString(val);
44149f6eaeSMehdi Amini if (llvmstr.empty()) {
45ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_FORM constant: 0x%x", val);
46ea84e764SJason Molenda return invalid;
47ea84e764SJason Molenda }
48149f6eaeSMehdi Amini return llvmstr.data();
49ea84e764SJason Molenda }
50ea84e764SJason Molenda
DW_OP_value_to_name(uint32_t val)51b9c1b51eSKate Stone const char *DW_OP_value_to_name(uint32_t val) {
52ea84e764SJason Molenda static char invalid[100];
53149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::OperationEncodingString(val);
54149f6eaeSMehdi Amini if (llvmstr.empty()) {
55ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_OP constant: 0x%x", val);
56ea84e764SJason Molenda return invalid;
57ea84e764SJason Molenda }
58149f6eaeSMehdi Amini return llvmstr.data();
59ea84e764SJason Molenda }
60ea84e764SJason Molenda
DW_ATE_value_to_name(uint32_t val)61b9c1b51eSKate Stone const char *DW_ATE_value_to_name(uint32_t val) {
62ea84e764SJason Molenda static char invalid[100];
63149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::AttributeEncodingString(val);
64149f6eaeSMehdi Amini if (llvmstr.empty()) {
65ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_ATE constant: 0x%x", val);
66ea84e764SJason Molenda return invalid;
67ea84e764SJason Molenda }
68149f6eaeSMehdi Amini return llvmstr.data();
69ea84e764SJason Molenda }
70ea84e764SJason Molenda
DW_LANG_value_to_name(uint32_t val)71b9c1b51eSKate Stone const char *DW_LANG_value_to_name(uint32_t val) {
72ea84e764SJason Molenda static char invalid[100];
73149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::LanguageString(val);
74149f6eaeSMehdi Amini if (llvmstr.empty()) {
75ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_LANG constant: 0x%x", val);
76ea84e764SJason Molenda return invalid;
77ea84e764SJason Molenda }
78149f6eaeSMehdi Amini return llvmstr.data();
79ea84e764SJason Molenda }
80ea84e764SJason Molenda
DW_LNS_value_to_name(uint32_t val)81b9c1b51eSKate Stone const char *DW_LNS_value_to_name(uint32_t val) {
82ea84e764SJason Molenda static char invalid[100];
83149f6eaeSMehdi Amini llvm::StringRef llvmstr = llvm::dwarf::LNStandardString(val);
84149f6eaeSMehdi Amini if (llvmstr.empty()) {
85ea84e764SJason Molenda snprintf(invalid, sizeof(invalid), "Unknown DW_LNS constant: 0x%x", val);
86ea84e764SJason Molenda return invalid;
87ea84e764SJason Molenda }
88149f6eaeSMehdi Amini return llvmstr.data();
89ea84e764SJason Molenda }
90ea84e764SJason Molenda
91ea84e764SJason Molenda } // namespace lldb_private
92