1*dda28197Spatrick //===-- DWARFDefines.cpp --------------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick
9061da546Spatrick #include "DWARFDefines.h"
10061da546Spatrick #include "lldb/Utility/ConstString.h"
11061da546Spatrick #include <cstdio>
12061da546Spatrick #include <cstring>
13061da546Spatrick #include <string>
14061da546Spatrick
15061da546Spatrick namespace lldb_private {
16061da546Spatrick
DW_TAG_value_to_name(uint32_t val)17061da546Spatrick const char *DW_TAG_value_to_name(uint32_t val) {
18061da546Spatrick static char invalid[100];
19061da546Spatrick
20061da546Spatrick if (val == 0)
21061da546Spatrick return "NULL";
22061da546Spatrick
23061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::TagString(val);
24061da546Spatrick if (llvmstr.empty()) {
25061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_TAG constant: 0x%x", val);
26061da546Spatrick return invalid;
27061da546Spatrick }
28061da546Spatrick return llvmstr.data();
29061da546Spatrick }
30061da546Spatrick
DW_AT_value_to_name(uint32_t val)31061da546Spatrick const char *DW_AT_value_to_name(uint32_t val) {
32061da546Spatrick static char invalid[100];
33061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::AttributeString(val);
34061da546Spatrick if (llvmstr.empty()) {
35061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_AT constant: 0x%x", val);
36061da546Spatrick return invalid;
37061da546Spatrick }
38061da546Spatrick return llvmstr.data();
39061da546Spatrick }
40061da546Spatrick
DW_FORM_value_to_name(uint32_t val)41061da546Spatrick const char *DW_FORM_value_to_name(uint32_t val) {
42061da546Spatrick static char invalid[100];
43061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::FormEncodingString(val);
44061da546Spatrick if (llvmstr.empty()) {
45061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_FORM constant: 0x%x", val);
46061da546Spatrick return invalid;
47061da546Spatrick }
48061da546Spatrick return llvmstr.data();
49061da546Spatrick }
50061da546Spatrick
DW_OP_value_to_name(uint32_t val)51061da546Spatrick const char *DW_OP_value_to_name(uint32_t val) {
52061da546Spatrick static char invalid[100];
53061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::OperationEncodingString(val);
54061da546Spatrick if (llvmstr.empty()) {
55061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_OP constant: 0x%x", val);
56061da546Spatrick return invalid;
57061da546Spatrick }
58061da546Spatrick return llvmstr.data();
59061da546Spatrick }
60061da546Spatrick
DW_ATE_value_to_name(uint32_t val)61061da546Spatrick const char *DW_ATE_value_to_name(uint32_t val) {
62061da546Spatrick static char invalid[100];
63061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::AttributeEncodingString(val);
64061da546Spatrick if (llvmstr.empty()) {
65061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_ATE constant: 0x%x", val);
66061da546Spatrick return invalid;
67061da546Spatrick }
68061da546Spatrick return llvmstr.data();
69061da546Spatrick }
70061da546Spatrick
DW_LANG_value_to_name(uint32_t val)71061da546Spatrick const char *DW_LANG_value_to_name(uint32_t val) {
72061da546Spatrick static char invalid[100];
73061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::LanguageString(val);
74061da546Spatrick if (llvmstr.empty()) {
75061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_LANG constant: 0x%x", val);
76061da546Spatrick return invalid;
77061da546Spatrick }
78061da546Spatrick return llvmstr.data();
79061da546Spatrick }
80061da546Spatrick
DW_LNS_value_to_name(uint32_t val)81061da546Spatrick const char *DW_LNS_value_to_name(uint32_t val) {
82061da546Spatrick static char invalid[100];
83061da546Spatrick llvm::StringRef llvmstr = llvm::dwarf::LNStandardString(val);
84061da546Spatrick if (llvmstr.empty()) {
85061da546Spatrick snprintf(invalid, sizeof(invalid), "Unknown DW_LNS constant: 0x%x", val);
86061da546Spatrick return invalid;
87061da546Spatrick }
88061da546Spatrick return llvmstr.data();
89061da546Spatrick }
90061da546Spatrick
91061da546Spatrick } // namespace lldb_private
92