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