1 //===-- DWARFDefines.cpp ----------------------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #include "DWARFDefines.h"
10 #include "lldb/Utility/ConstString.h"
15 namespace lldb_private {
17 const char *DW_TAG_value_to_name(uint32_t val) {
18 static char invalid[100];
23 llvm::StringRef llvmstr = llvm::dwarf::TagString(val);
24 if (llvmstr.empty()) {
25 snprintf(invalid, sizeof(invalid), "Unknown DW_TAG constant: 0x%x", val);
28 return llvmstr.data();
31 const char *DW_AT_value_to_name(uint32_t val) {
32 static char invalid[100];
33 llvm::StringRef llvmstr = llvm::dwarf::AttributeString(val);
34 if (llvmstr.empty()) {
35 snprintf(invalid, sizeof(invalid), "Unknown DW_AT constant: 0x%x", val);
38 return llvmstr.data();
41 const char *DW_FORM_value_to_name(uint32_t val) {
42 static char invalid[100];
43 llvm::StringRef llvmstr = llvm::dwarf::FormEncodingString(val);
44 if (llvmstr.empty()) {
45 snprintf(invalid, sizeof(invalid), "Unknown DW_FORM constant: 0x%x", val);
48 return llvmstr.data();
51 const char *DW_OP_value_to_name(uint32_t val) {
52 static char invalid[100];
53 llvm::StringRef llvmstr = llvm::dwarf::OperationEncodingString(val);
54 if (llvmstr.empty()) {
55 snprintf(invalid, sizeof(invalid), "Unknown DW_OP constant: 0x%x", val);
58 return llvmstr.data();
61 DRC_class DW_OP_value_to_class(uint32_t val) {
62 // FIXME: If we just used llvm's DWARFExpression printer, we could delete
63 // all this code (and more in lldb's DWARFExpression.cpp).
66 return DRC_ONEOPERAND;
68 return DRC_ZEROOPERANDS;
70 return DRC_ONEOPERAND;
72 return DRC_ONEOPERAND;
74 return DRC_ONEOPERAND;
76 return DRC_ONEOPERAND;
78 return DRC_ONEOPERAND;
80 return DRC_ONEOPERAND;
82 return DRC_ONEOPERAND;
84 return DRC_ONEOPERAND;
86 return DRC_ONEOPERAND;
88 return DRC_ONEOPERAND;
90 return DRC_ZEROOPERANDS;
92 return DRC_ZEROOPERANDS;
94 return DRC_ZEROOPERANDS;
96 return DRC_ONEOPERAND;
98 return DRC_ZEROOPERANDS;
100 return DRC_ZEROOPERANDS;
102 return DRC_ZEROOPERANDS;
104 return DRC_ZEROOPERANDS;
106 return DRC_ZEROOPERANDS;
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_ONEOPERAND;
126 return DRC_ZEROOPERANDS;
128 return DRC_ZEROOPERANDS;
130 return DRC_ZEROOPERANDS;
132 return DRC_ZEROOPERANDS;
134 return DRC_ONEOPERAND;
136 return DRC_ONEOPERAND;
138 return DRC_ZEROOPERANDS;
140 return DRC_ZEROOPERANDS;
142 return DRC_ZEROOPERANDS;
144 return DRC_ZEROOPERANDS;
146 return DRC_ZEROOPERANDS;
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_ONEOPERAND;
280 return DRC_ONEOPERAND;
282 return DRC_ONEOPERAND;
284 return DRC_ONEOPERAND;
286 return DRC_ONEOPERAND;
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_TWOOPERANDS;
348 return DRC_ONEOPERAND;
350 return DRC_ONEOPERAND;
352 return DRC_ONEOPERAND;
354 return DRC_ZEROOPERANDS;
356 return DRC_DWARFv3 | DRC_ZEROOPERANDS;
358 return DRC_DWARFv3 | DRC_ONEOPERAND;
360 return DRC_DWARFv3 | DRC_ONEOPERAND;
362 return DRC_DWARFv3 | DRC_ONEOPERAND;
363 case 0xa3: /* DW_OP_entry_value */
364 return DRC_TWOOPERANDS;
366 return DRC_ZEROOPERANDS; /* DW_OP_APPLE_uninit */
376 const char *DW_ATE_value_to_name(uint32_t val) {
377 static char invalid[100];
378 llvm::StringRef llvmstr = llvm::dwarf::AttributeEncodingString(val);
379 if (llvmstr.empty()) {
380 snprintf(invalid, sizeof(invalid), "Unknown DW_ATE constant: 0x%x", val);
383 return llvmstr.data();
386 const char *DW_LANG_value_to_name(uint32_t val) {
387 static char invalid[100];
388 llvm::StringRef llvmstr = llvm::dwarf::LanguageString(val);
389 if (llvmstr.empty()) {
390 snprintf(invalid, sizeof(invalid), "Unknown DW_LANG constant: 0x%x", val);
393 return llvmstr.data();
396 const char *DW_LNS_value_to_name(uint32_t val) {
397 static char invalid[100];
398 llvm::StringRef llvmstr = llvm::dwarf::LNStandardString(val);
399 if (llvmstr.empty()) {
400 snprintf(invalid, sizeof(invalid), "Unknown DW_LNS constant: 0x%x", val);
403 return llvmstr.data();
406 } // namespace lldb_private