diff options
Diffstat (limited to 'contrib/llvm-project/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp')
| -rw-r--r-- | contrib/llvm-project/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp | 402 |
1 files changed, 402 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp b/contrib/llvm-project/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp new file mode 100644 index 000000000000..3bf0bb088227 --- /dev/null +++ b/contrib/llvm-project/lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp @@ -0,0 +1,402 @@ +//===-- DWARFDefines.cpp ----------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "DWARFDefines.h" +#include "lldb/Utility/ConstString.h" +#include <cstdio> +#include <cstring> +#include <string> + +namespace lldb_private { + +const char *DW_TAG_value_to_name(uint32_t val) { + static char invalid[100]; + + if (val == 0) + return "NULL"; + + llvm::StringRef llvmstr = llvm::dwarf::TagString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_TAG constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +const char *DW_AT_value_to_name(uint32_t val) { + static char invalid[100]; + llvm::StringRef llvmstr = llvm::dwarf::AttributeString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_AT constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +const char *DW_FORM_value_to_name(uint32_t val) { + static char invalid[100]; + llvm::StringRef llvmstr = llvm::dwarf::FormEncodingString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_FORM constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +const char *DW_OP_value_to_name(uint32_t val) { + static char invalid[100]; + llvm::StringRef llvmstr = llvm::dwarf::OperationEncodingString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_OP constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +DRC_class DW_OP_value_to_class(uint32_t val) { + switch (val) { + case 0x03: + return DRC_ONEOPERAND; + case 0x06: + return DRC_ZEROOPERANDS; + case 0x08: + return DRC_ONEOPERAND; + case 0x09: + return DRC_ONEOPERAND; + case 0x0a: + return DRC_ONEOPERAND; + case 0x0b: + return DRC_ONEOPERAND; + case 0x0c: + return DRC_ONEOPERAND; + case 0x0d: + return DRC_ONEOPERAND; + case 0x0e: + return DRC_ONEOPERAND; + case 0x0f: + return DRC_ONEOPERAND; + case 0x10: + return DRC_ONEOPERAND; + case 0x11: + return DRC_ONEOPERAND; + case 0x12: + return DRC_ZEROOPERANDS; + case 0x13: + return DRC_ZEROOPERANDS; + case 0x14: + return DRC_ZEROOPERANDS; + case 0x15: + return DRC_ONEOPERAND; + case 0x16: + return DRC_ZEROOPERANDS; + case 0x17: + return DRC_ZEROOPERANDS; + case 0x18: + return DRC_ZEROOPERANDS; + case 0x19: + return DRC_ZEROOPERANDS; + case 0x1a: + return DRC_ZEROOPERANDS; + case 0x1b: + return DRC_ZEROOPERANDS; + case 0x1c: + return DRC_ZEROOPERANDS; + case 0x1d: + return DRC_ZEROOPERANDS; + case 0x1e: + return DRC_ZEROOPERANDS; + case 0x1f: + return DRC_ZEROOPERANDS; + case 0x20: + return DRC_ZEROOPERANDS; + case 0x21: + return DRC_ZEROOPERANDS; + case 0x22: + return DRC_ZEROOPERANDS; + case 0x23: + return DRC_ONEOPERAND; + case 0x24: + return DRC_ZEROOPERANDS; + case 0x25: + return DRC_ZEROOPERANDS; + case 0x26: + return DRC_ZEROOPERANDS; + case 0x27: + return DRC_ZEROOPERANDS; + case 0x2f: + return DRC_ONEOPERAND; + case 0x28: + return DRC_ONEOPERAND; + case 0x29: + return DRC_ZEROOPERANDS; + case 0x2a: + return DRC_ZEROOPERANDS; + case 0x2b: + return DRC_ZEROOPERANDS; + case 0x2c: + return DRC_ZEROOPERANDS; + case 0x2d: + return DRC_ZEROOPERANDS; + case 0x2e: + return DRC_ZEROOPERANDS; + case 0x30: + return DRC_ZEROOPERANDS; + case 0x31: + return DRC_ZEROOPERANDS; + case 0x32: + return DRC_ZEROOPERANDS; + case 0x33: + return DRC_ZEROOPERANDS; + case 0x34: + return DRC_ZEROOPERANDS; + case 0x35: + return DRC_ZEROOPERANDS; + case 0x36: + return DRC_ZEROOPERANDS; + case 0x37: + return DRC_ZEROOPERANDS; + case 0x38: + return DRC_ZEROOPERANDS; + case 0x39: + return DRC_ZEROOPERANDS; + case 0x3a: + return DRC_ZEROOPERANDS; + case 0x3b: + return DRC_ZEROOPERANDS; + case 0x3c: + return DRC_ZEROOPERANDS; + case 0x3d: + return DRC_ZEROOPERANDS; + case 0x3e: + return DRC_ZEROOPERANDS; + case 0x3f: + return DRC_ZEROOPERANDS; + case 0x40: + return DRC_ZEROOPERANDS; + case 0x41: + return DRC_ZEROOPERANDS; + case 0x42: + return DRC_ZEROOPERANDS; + case 0x43: + return DRC_ZEROOPERANDS; + case 0x44: + return DRC_ZEROOPERANDS; + case 0x45: + return DRC_ZEROOPERANDS; + case 0x46: + return DRC_ZEROOPERANDS; + case 0x47: + return DRC_ZEROOPERANDS; + case 0x48: + return DRC_ZEROOPERANDS; + case 0x49: + return DRC_ZEROOPERANDS; + case 0x4a: + return DRC_ZEROOPERANDS; + case 0x4b: + return DRC_ZEROOPERANDS; + case 0x4c: + return DRC_ZEROOPERANDS; + case 0x4d: + return DRC_ZEROOPERANDS; + case 0x4e: + return DRC_ZEROOPERANDS; + case 0x4f: + return DRC_ZEROOPERANDS; + case 0x50: + return DRC_ZEROOPERANDS; + case 0x51: + return DRC_ZEROOPERANDS; + case 0x52: + return DRC_ZEROOPERANDS; + case 0x53: + return DRC_ZEROOPERANDS; + case 0x54: + return DRC_ZEROOPERANDS; + case 0x55: + return DRC_ZEROOPERANDS; + case 0x56: + return DRC_ZEROOPERANDS; + case 0x57: + return DRC_ZEROOPERANDS; + case 0x58: + return DRC_ZEROOPERANDS; + case 0x59: + return DRC_ZEROOPERANDS; + case 0x5a: + return DRC_ZEROOPERANDS; + case 0x5b: + return DRC_ZEROOPERANDS; + case 0x5c: + return DRC_ZEROOPERANDS; + case 0x5d: + return DRC_ZEROOPERANDS; + case 0x5e: + return DRC_ZEROOPERANDS; + case 0x5f: + return DRC_ZEROOPERANDS; + case 0x60: + return DRC_ZEROOPERANDS; + case 0x61: + return DRC_ZEROOPERANDS; + case 0x62: + return DRC_ZEROOPERANDS; + case 0x63: + return DRC_ZEROOPERANDS; + case 0x64: + return DRC_ZEROOPERANDS; + case 0x65: + return DRC_ZEROOPERANDS; + case 0x66: + return DRC_ZEROOPERANDS; + case 0x67: + return DRC_ZEROOPERANDS; + case 0x68: + return DRC_ZEROOPERANDS; + case 0x69: + return DRC_ZEROOPERANDS; + case 0x6a: + return DRC_ZEROOPERANDS; + case 0x6b: + return DRC_ZEROOPERANDS; + case 0x6c: + return DRC_ZEROOPERANDS; + case 0x6d: + return DRC_ZEROOPERANDS; + case 0x6e: + return DRC_ZEROOPERANDS; + case 0x6f: + return DRC_ZEROOPERANDS; + case 0x70: + return DRC_ONEOPERAND; + case 0x71: + return DRC_ONEOPERAND; + case 0x72: + return DRC_ONEOPERAND; + case 0x73: + return DRC_ONEOPERAND; + case 0x74: + return DRC_ONEOPERAND; + case 0x75: + return DRC_ONEOPERAND; + case 0x76: + return DRC_ONEOPERAND; + case 0x77: + return DRC_ONEOPERAND; + case 0x78: + return DRC_ONEOPERAND; + case 0x79: + return DRC_ONEOPERAND; + case 0x7a: + return DRC_ONEOPERAND; + case 0x7b: + return DRC_ONEOPERAND; + case 0x7c: + return DRC_ONEOPERAND; + case 0x7d: + return DRC_ONEOPERAND; + case 0x7e: + return DRC_ONEOPERAND; + case 0x7f: + return DRC_ONEOPERAND; + case 0x80: + return DRC_ONEOPERAND; + case 0x81: + return DRC_ONEOPERAND; + case 0x82: + return DRC_ONEOPERAND; + case 0x83: + return DRC_ONEOPERAND; + case 0x84: + return DRC_ONEOPERAND; + case 0x85: + return DRC_ONEOPERAND; + case 0x86: + return DRC_ONEOPERAND; + case 0x87: + return DRC_ONEOPERAND; + case 0x88: + return DRC_ONEOPERAND; + case 0x89: + return DRC_ONEOPERAND; + case 0x8a: + return DRC_ONEOPERAND; + case 0x8b: + return DRC_ONEOPERAND; + case 0x8c: + return DRC_ONEOPERAND; + case 0x8d: + return DRC_ONEOPERAND; + case 0x8e: + return DRC_ONEOPERAND; + case 0x8f: + return DRC_ONEOPERAND; + case 0x90: + return DRC_ONEOPERAND; + case 0x91: + return DRC_ONEOPERAND; + case 0x92: + return DRC_TWOOPERANDS; + case 0x93: + return DRC_ONEOPERAND; + case 0x94: + return DRC_ONEOPERAND; + case 0x95: + return DRC_ONEOPERAND; + case 0x96: + return DRC_ZEROOPERANDS; + case 0x97: + return DRC_DWARFv3 | DRC_ZEROOPERANDS; + case 0x98: + return DRC_DWARFv3 | DRC_ONEOPERAND; + case 0x99: + return DRC_DWARFv3 | DRC_ONEOPERAND; + case 0x9a: + return DRC_DWARFv3 | DRC_ONEOPERAND; + case 0xf0: + return DRC_ZEROOPERANDS; /* DW_OP_APPLE_uninit */ + case 0xe0: + return 0; + case 0xff: + return 0; + default: + return 0; + } +} + +const char *DW_ATE_value_to_name(uint32_t val) { + static char invalid[100]; + llvm::StringRef llvmstr = llvm::dwarf::AttributeEncodingString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_ATE constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +const char *DW_LANG_value_to_name(uint32_t val) { + static char invalid[100]; + llvm::StringRef llvmstr = llvm::dwarf::LanguageString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_LANG constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +const char *DW_LNS_value_to_name(uint32_t val) { + static char invalid[100]; + llvm::StringRef llvmstr = llvm::dwarf::LNStandardString(val); + if (llvmstr.empty()) { + snprintf(invalid, sizeof(invalid), "Unknown DW_LNS constant: 0x%x", val); + return invalid; + } + return llvmstr.data(); +} + +} // namespace lldb_private |
