xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp (revision dda2819751e49c83612958492e38917049128b41)
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