xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
15ffd83dbSDimitry Andric //===-- DWARFDefines.cpp --------------------------------------------------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #include "DWARFDefines.h"
100b57cec5SDimitry Andric #include "lldb/Utility/ConstString.h"
110b57cec5SDimitry Andric #include <cstdio>
120b57cec5SDimitry Andric #include <cstring>
130b57cec5SDimitry Andric #include <string>
140b57cec5SDimitry Andric 
155f757f3fSDimitry Andric namespace lldb_private::plugin {
165f757f3fSDimitry Andric namespace dwarf {
170b57cec5SDimitry Andric 
18*0fca6ea1SDimitry Andric llvm::StringRef DW_TAG_value_to_name(dw_tag_t tag) {
19*0fca6ea1SDimitry Andric   static constexpr llvm::StringLiteral s_unknown_tag_name("<unknown DW_TAG>");
20*0fca6ea1SDimitry Andric   if (llvm::StringRef tag_name = llvm::dwarf::TagString(tag); !tag_name.empty())
21*0fca6ea1SDimitry Andric     return tag_name;
220b57cec5SDimitry Andric 
23*0fca6ea1SDimitry Andric   return s_unknown_tag_name;
240b57cec5SDimitry Andric }
250b57cec5SDimitry Andric 
260b57cec5SDimitry Andric const char *DW_OP_value_to_name(uint32_t val) {
270b57cec5SDimitry Andric   static char invalid[100];
280b57cec5SDimitry Andric   llvm::StringRef llvmstr = llvm::dwarf::OperationEncodingString(val);
290b57cec5SDimitry Andric   if (llvmstr.empty()) {
300b57cec5SDimitry Andric     snprintf(invalid, sizeof(invalid), "Unknown DW_OP constant: 0x%x", val);
310b57cec5SDimitry Andric     return invalid;
320b57cec5SDimitry Andric   }
330b57cec5SDimitry Andric   return llvmstr.data();
340b57cec5SDimitry Andric }
350b57cec5SDimitry Andric 
365f757f3fSDimitry Andric } // namespace dwarf
375f757f3fSDimitry Andric } // namespace lldb_private::plugin
38