File indexing completed on 2026-05-10 08:43:00
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLDB_LLDB_PRIVATE_TYPES_H
0010 #define LLDB_LLDB_PRIVATE_TYPES_H
0011
0012 #include "lldb/lldb-private.h"
0013
0014 #include "llvm/ADT/ArrayRef.h"
0015 #include "llvm/ADT/SmallString.h"
0016
0017 #include <type_traits>
0018
0019 namespace llvm {
0020 namespace sys {
0021 class DynamicLibrary;
0022 }
0023 }
0024
0025 namespace lldb_private {
0026 class Platform;
0027 class ExecutionContext;
0028 class RegisterFlags;
0029
0030 typedef llvm::SmallString<256> PathSmallString;
0031
0032 typedef llvm::sys::DynamicLibrary (*LoadPluginCallbackType)(
0033 const lldb::DebuggerSP &debugger_sp, const FileSpec &spec, Status &error);
0034
0035
0036
0037 struct RegisterInfo {
0038
0039 const char *name;
0040
0041 const char *alt_name;
0042
0043 uint32_t byte_size;
0044
0045
0046
0047
0048 uint32_t byte_offset;
0049
0050 lldb::Encoding encoding;
0051
0052 lldb::Format format;
0053
0054 uint32_t kinds[lldb::kNumRegisterKinds];
0055
0056
0057
0058
0059
0060
0061 uint32_t *value_regs;
0062
0063
0064
0065
0066 uint32_t *invalidate_regs;
0067
0068
0069
0070
0071
0072 mutable const RegisterFlags *flags_type;
0073
0074 llvm::ArrayRef<uint8_t> data(const uint8_t *context_base) const {
0075 return llvm::ArrayRef<uint8_t>(context_base + byte_offset, byte_size);
0076 }
0077
0078 llvm::MutableArrayRef<uint8_t> mutable_data(uint8_t *context_base) const {
0079 return llvm::MutableArrayRef<uint8_t>(context_base + byte_offset,
0080 byte_size);
0081 }
0082 };
0083 static_assert(std::is_trivial<RegisterInfo>::value,
0084 "RegisterInfo must be trivial.");
0085
0086
0087 struct RegisterSet {
0088
0089 const char *name;
0090
0091 const char *short_name;
0092
0093 size_t num_registers;
0094
0095
0096
0097
0098
0099 const uint32_t *registers;
0100 };
0101
0102
0103 struct SourceLanguage {
0104 SourceLanguage() = default;
0105 SourceLanguage(lldb::LanguageType language_type);
0106 SourceLanguage(uint16_t name, uint32_t version)
0107 : name(name), version(version) {}
0108 SourceLanguage(std::optional<std::pair<uint16_t, uint32_t>> name_vers)
0109 : name(name_vers ? name_vers->first : 0),
0110 version(name_vers ? name_vers->second : 0) {}
0111 operator bool() const { return name > 0; }
0112 lldb::LanguageType AsLanguageType() const;
0113 llvm::StringRef GetDescription() const;
0114 bool IsC() const;
0115 bool IsObjC() const;
0116 bool IsCPlusPlus() const;
0117 uint16_t name = 0;
0118 uint32_t version = 0;
0119 };
0120
0121 struct OptionEnumValueElement {
0122 int64_t value;
0123 const char *string_value;
0124 const char *usage;
0125 };
0126
0127 using OptionEnumValues = llvm::ArrayRef<OptionEnumValueElement>;
0128
0129 struct OptionValidator {
0130 virtual ~OptionValidator() = default;
0131 virtual bool IsValid(Platform &platform,
0132 const ExecutionContext &target) const = 0;
0133 virtual const char *ShortConditionString() const = 0;
0134 virtual const char *LongConditionString() const = 0;
0135 };
0136
0137 typedef struct type128 { uint64_t x[2]; } type128;
0138 typedef struct type256 { uint64_t x[4]; } type256;
0139
0140
0141
0142
0143 using ValueObjectProviderTy =
0144 std::function<lldb::ValueObjectSP(ConstString, StackFrame *)>;
0145
0146 typedef void (*DebuggerDestroyCallback)(lldb::user_id_t debugger_id,
0147 void *baton);
0148 typedef bool (*CommandOverrideCallbackWithResult)(
0149 void *baton, const char **argv, lldb_private::CommandReturnObject &result);
0150 }
0151
0152 #endif