aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/include/lldb/lldb-enumerations.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/include/lldb/lldb-enumerations.h')
-rw-r--r--contrib/llvm-project/lldb/include/lldb/lldb-enumerations.h1365
1 files changed, 1365 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/include/lldb/lldb-enumerations.h b/contrib/llvm-project/lldb/include/lldb/lldb-enumerations.h
new file mode 100644
index 000000000000..b2ef1f0edf57
--- /dev/null
+++ b/contrib/llvm-project/lldb/include/lldb/lldb-enumerations.h
@@ -0,0 +1,1365 @@
+//===-- lldb-enumerations.h -------------------------------------*- 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_LLDB_ENUMERATIONS_H
+#define LLDB_LLDB_ENUMERATIONS_H
+
+#include <cstdint>
+#include <type_traits>
+
+#ifndef SWIG
+// Macro to enable bitmask operations on an enum. Without this, Enum | Enum
+// gets promoted to an int, so you have to say Enum a = Enum(eFoo | eBar). If
+// you mark Enum with LLDB_MARK_AS_BITMASK_ENUM(Enum), however, you can simply
+// write Enum a = eFoo | eBar.
+// Unfortunately, swig<3.0 doesn't recognise the constexpr keyword, so remove
+// this entire block, as it is not necessary for swig processing.
+#define LLDB_MARK_AS_BITMASK_ENUM(Enum) \
+ constexpr Enum operator|(Enum a, Enum b) { \
+ return static_cast<Enum>( \
+ static_cast<std::underlying_type<Enum>::type>(a) | \
+ static_cast<std::underlying_type<Enum>::type>(b)); \
+ } \
+ constexpr Enum operator&(Enum a, Enum b) { \
+ return static_cast<Enum>( \
+ static_cast<std::underlying_type<Enum>::type>(a) & \
+ static_cast<std::underlying_type<Enum>::type>(b)); \
+ } \
+ constexpr Enum operator~(Enum a) { \
+ return static_cast<Enum>( \
+ ~static_cast<std::underlying_type<Enum>::type>(a)); \
+ } \
+ inline Enum &operator|=(Enum &a, Enum b) { \
+ a = a | b; \
+ return a; \
+ } \
+ inline Enum &operator&=(Enum &a, Enum b) { \
+ a = a & b; \
+ return a; \
+ }
+#else
+#define LLDB_MARK_AS_BITMASK_ENUM(Enum)
+#endif
+
+#ifndef SWIG
+// With MSVC, the default type of an enum is always signed, even if one of the
+// enumerator values is too large to fit into a signed integer but would
+// otherwise fit into an unsigned integer. As a result of this, all of LLDB's
+// flag-style enumerations that specify something like eValueFoo = 1u << 31
+// result in negative values. This usually just results in a benign warning,
+// but in a few places we actually do comparisons on the enum values, which
+// would cause a real bug. Furthermore, there's no way to silence only this
+// warning, as it's part of -Wmicrosoft which also catches a whole slew of
+// other useful issues.
+//
+// To make matters worse, early versions of SWIG don't recognize the syntax of
+// specifying the underlying type of an enum (and Python doesn't care anyway)
+// so we need a way to specify the underlying type when the enum is being used
+// from C++ code, but just use a regular enum when swig is pre-processing.
+#define FLAGS_ENUM(Name) enum Name : unsigned
+#define FLAGS_ANONYMOUS_ENUM() enum : unsigned
+#else
+#define FLAGS_ENUM(Name) enum Name
+#define FLAGS_ANONYMOUS_ENUM() enum
+#endif
+
+namespace lldb {
+
+/// Process and Thread States.
+enum StateType {
+ eStateInvalid = 0,
+ eStateUnloaded, ///< Process is object is valid, but not currently loaded
+ eStateConnected, ///< Process is connected to remote debug services, but not
+ /// launched or attached to anything yet
+ eStateAttaching, ///< Process is currently trying to attach
+ eStateLaunching, ///< Process is in the process of launching
+ // The state changes eStateAttaching and eStateLaunching are both sent while
+ // the private state thread is either not yet started or paused. For that
+ // reason, they should only be signaled as public state changes, and not
+ // private state changes.
+ eStateStopped, ///< Process or thread is stopped and can be examined.
+ eStateRunning, ///< Process or thread is running and can't be examined.
+ eStateStepping, ///< Process or thread is in the process of stepping and can
+ /// not be examined.
+ eStateCrashed, ///< Process or thread has crashed and can be examined.
+ eStateDetached, ///< Process has been detached and can't be examined.
+ eStateExited, ///< Process has exited and can't be examined.
+ eStateSuspended, ///< Process or thread is in a suspended state as far
+ ///< as the debugger is concerned while other processes
+ ///< or threads get the chance to run.
+ kLastStateType = eStateSuspended
+};
+
+/// Launch Flags.
+FLAGS_ENUM(LaunchFlags){
+ eLaunchFlagNone = 0u,
+ eLaunchFlagExec = (1u << 0), ///< Exec when launching and turn the calling
+ /// process into a new process
+ eLaunchFlagDebug = (1u << 1), ///< Stop as soon as the process launches to
+ /// allow the process to be debugged
+ eLaunchFlagStopAtEntry = (1u
+ << 2), ///< Stop at the program entry point
+ /// instead of auto-continuing when
+ /// launching or attaching at entry point
+ eLaunchFlagDisableASLR =
+ (1u << 3), ///< Disable Address Space Layout Randomization
+ eLaunchFlagDisableSTDIO =
+ (1u << 4), ///< Disable stdio for inferior process (e.g. for a GUI app)
+ eLaunchFlagLaunchInTTY =
+ (1u << 5), ///< Launch the process in a new TTY if supported by the host
+ eLaunchFlagLaunchInShell =
+ (1u << 6), ///< Launch the process inside a shell to get shell expansion
+ eLaunchFlagLaunchInSeparateProcessGroup =
+ (1u << 7), ///< Launch the process in a separate process group
+ ///< If you are going to hand the process off (e.g. to
+ ///< debugserver)
+ eLaunchFlagDontSetExitStatus = (1u << 8),
+ ///< set this flag so lldb & the handee don't race to set its exit status.
+ eLaunchFlagDetachOnError = (1u << 9), ///< If set, then the client stub
+ ///< should detach rather than killing
+ ///< the debugee
+ ///< if it loses connection with lldb.
+ eLaunchFlagShellExpandArguments =
+ (1u << 10), ///< Perform shell-style argument expansion
+ eLaunchFlagCloseTTYOnExit = (1u << 11), ///< Close the open TTY on exit
+ eLaunchFlagInheritTCCFromParent =
+ (1u << 12), ///< Don't make the inferior responsible for its own TCC
+ ///< permissions but instead inherit them from its parent.
+};
+
+/// Thread Run Modes.
+enum RunMode { eOnlyThisThread, eAllThreads, eOnlyDuringStepping };
+
+/// Byte ordering definitions.
+enum ByteOrder {
+ eByteOrderInvalid = 0,
+ eByteOrderBig = 1,
+ eByteOrderPDP = 2,
+ eByteOrderLittle = 4
+};
+
+/// Register encoding definitions.
+enum Encoding {
+ eEncodingInvalid = 0,
+ eEncodingUint, ///< unsigned integer
+ eEncodingSint, ///< signed integer
+ eEncodingIEEE754, ///< float
+ eEncodingVector ///< vector registers
+};
+
+/// Display format definitions.
+enum Format {
+ eFormatDefault = 0,
+ eFormatInvalid = 0,
+ eFormatBoolean,
+ eFormatBinary,
+ eFormatBytes,
+ eFormatBytesWithASCII,
+ eFormatChar,
+ eFormatCharPrintable, ///< Only printable characters, '.' if not printable
+ eFormatComplex, ///< Floating point complex type
+ eFormatComplexFloat = eFormatComplex,
+ eFormatCString, ///< NULL terminated C strings
+ eFormatDecimal,
+ eFormatEnum,
+ eFormatHex,
+ eFormatHexUppercase,
+ eFormatFloat,
+ eFormatOctal,
+ eFormatOSType, ///< OS character codes encoded into an integer 'PICT' 'text'
+ ///< etc...
+ eFormatUnicode16,
+ eFormatUnicode32,
+ eFormatUnsigned,
+ eFormatPointer,
+ eFormatVectorOfChar,
+ eFormatVectorOfSInt8,
+ eFormatVectorOfUInt8,
+ eFormatVectorOfSInt16,
+ eFormatVectorOfUInt16,
+ eFormatVectorOfSInt32,
+ eFormatVectorOfUInt32,
+ eFormatVectorOfSInt64,
+ eFormatVectorOfUInt64,
+ eFormatVectorOfFloat16,
+ eFormatVectorOfFloat32,
+ eFormatVectorOfFloat64,
+ eFormatVectorOfUInt128,
+ eFormatComplexInteger, ///< Integer complex type
+ eFormatCharArray, ///< Print characters with no single quotes, used for
+ ///< character arrays that can contain non printable
+ ///< characters
+ eFormatAddressInfo, ///< Describe what an address points to (func + offset
+ ///< with file/line, symbol + offset, data, etc)
+ eFormatHexFloat, ///< ISO C99 hex float string
+ eFormatInstruction, ///< Disassemble an opcode
+ eFormatVoid, ///< Do not print this
+ eFormatUnicode8,
+ kNumFormats
+};
+
+/// Description levels for "void GetDescription(Stream *, DescriptionLevel)"
+/// calls.
+enum DescriptionLevel {
+ eDescriptionLevelBrief = 0,
+ eDescriptionLevelFull,
+ eDescriptionLevelVerbose,
+ eDescriptionLevelInitial,
+ kNumDescriptionLevels
+};
+
+/// Script interpreter types.
+enum ScriptLanguage {
+ eScriptLanguageNone = 0,
+ eScriptLanguagePython,
+ eScriptLanguageLua,
+ eScriptLanguageUnknown,
+ eScriptLanguageDefault = eScriptLanguageLua
+};
+
+/// Register numbering types.
+// See RegisterContext::ConvertRegisterKindToRegisterNumber to convert any of
+// these to the lldb internal register numbering scheme (eRegisterKindLLDB).
+enum RegisterKind {
+ eRegisterKindEHFrame = 0, ///< the register numbers seen in eh_frame
+ eRegisterKindDWARF, ///< the register numbers seen DWARF
+ eRegisterKindGeneric, ///< insn ptr reg, stack ptr reg, etc not specific to
+ ///< any particular target
+ eRegisterKindProcessPlugin, ///< num used by the process plugin - e.g. by the
+ ///< remote gdb-protocol stub program
+ eRegisterKindLLDB, ///< lldb's internal register numbers
+ kNumRegisterKinds
+};
+
+/// Thread stop reasons.
+enum StopReason {
+ eStopReasonInvalid = 0,
+ eStopReasonNone,
+ eStopReasonTrace,
+ eStopReasonBreakpoint,
+ eStopReasonWatchpoint,
+ eStopReasonSignal,
+ eStopReasonException,
+ eStopReasonExec, ///< Program was re-exec'ed
+ eStopReasonPlanComplete,
+ eStopReasonThreadExiting,
+ eStopReasonInstrumentation,
+ eStopReasonProcessorTrace,
+ eStopReasonFork,
+ eStopReasonVFork,
+ eStopReasonVForkDone,
+};
+
+/// Command Return Status Types.
+enum ReturnStatus {
+ eReturnStatusInvalid,
+ eReturnStatusSuccessFinishNoResult,
+ eReturnStatusSuccessFinishResult,
+ eReturnStatusSuccessContinuingNoResult,
+ eReturnStatusSuccessContinuingResult,
+ eReturnStatusStarted,
+ eReturnStatusFailed,
+ eReturnStatusQuit
+};
+
+/// The results of expression evaluation.
+enum ExpressionResults {
+ eExpressionCompleted = 0,
+ eExpressionSetupError,
+ eExpressionParseError,
+ eExpressionDiscarded,
+ eExpressionInterrupted,
+ eExpressionHitBreakpoint,
+ eExpressionTimedOut,
+ eExpressionResultUnavailable,
+ eExpressionStoppedForDebug,
+ eExpressionThreadVanished
+};
+
+enum SearchDepth {
+ eSearchDepthInvalid = 0,
+ eSearchDepthTarget,
+ eSearchDepthModule,
+ eSearchDepthCompUnit,
+ eSearchDepthFunction,
+ eSearchDepthBlock,
+ eSearchDepthAddress,
+ kLastSearchDepthKind = eSearchDepthAddress
+};
+
+/// Connection Status Types.
+enum ConnectionStatus {
+ eConnectionStatusSuccess, ///< Success
+ eConnectionStatusEndOfFile, ///< End-of-file encountered
+ eConnectionStatusError, ///< Check GetError() for details
+ eConnectionStatusTimedOut, ///< Request timed out
+ eConnectionStatusNoConnection, ///< No connection
+ eConnectionStatusLostConnection, ///< Lost connection while connected to a
+ ///< valid connection
+ eConnectionStatusInterrupted ///< Interrupted read
+};
+
+enum ErrorType {
+ eErrorTypeInvalid,
+ eErrorTypeGeneric, ///< Generic errors that can be any value.
+ eErrorTypeMachKernel, ///< Mach kernel error codes.
+ eErrorTypePOSIX, ///< POSIX error codes.
+ eErrorTypeExpression, ///< These are from the ExpressionResults enum.
+ eErrorTypeWin32 ///< Standard Win32 error codes.
+};
+
+enum ValueType {
+ eValueTypeInvalid = 0,
+ eValueTypeVariableGlobal = 1, ///< globals variable
+ eValueTypeVariableStatic = 2, ///< static variable
+ eValueTypeVariableArgument = 3, ///< function argument variables
+ eValueTypeVariableLocal = 4, ///< function local variables
+ eValueTypeRegister = 5, ///< stack frame register value
+ eValueTypeRegisterSet = 6, ///< A collection of stack frame register values
+ eValueTypeConstResult = 7, ///< constant result variables
+ eValueTypeVariableThreadLocal = 8, ///< thread local storage variable
+ eValueTypeVTable = 9, ///< virtual function table
+ eValueTypeVTableEntry = 10, ///< function pointer in virtual function table
+};
+
+/// Token size/granularities for Input Readers.
+
+enum InputReaderGranularity {
+ eInputReaderGranularityInvalid = 0,
+ eInputReaderGranularityByte,
+ eInputReaderGranularityWord,
+ eInputReaderGranularityLine,
+ eInputReaderGranularityAll
+};
+
+/// These mask bits allow a common interface for queries that can
+/// limit the amount of information that gets parsed to only the
+/// information that is requested. These bits also can indicate what
+/// actually did get resolved during query function calls.
+///
+/// Each definition corresponds to a one of the member variables
+/// in this class, and requests that that item be resolved, or
+/// indicates that the member did get resolved.
+FLAGS_ENUM(SymbolContextItem){
+ /// Set when \a target is requested from a query, or was located
+ /// in query results
+ eSymbolContextTarget = (1u << 0),
+ /// Set when \a module is requested from a query, or was located
+ /// in query results
+ eSymbolContextModule = (1u << 1),
+ /// Set when \a comp_unit is requested from a query, or was
+ /// located in query results
+ eSymbolContextCompUnit = (1u << 2),
+ /// Set when \a function is requested from a query, or was located
+ /// in query results
+ eSymbolContextFunction = (1u << 3),
+ /// Set when the deepest \a block is requested from a query, or
+ /// was located in query results
+ eSymbolContextBlock = (1u << 4),
+ /// Set when \a line_entry is requested from a query, or was
+ /// located in query results
+ eSymbolContextLineEntry = (1u << 5),
+ /// Set when \a symbol is requested from a query, or was located
+ /// in query results
+ eSymbolContextSymbol = (1u << 6),
+ /// Indicates to try and lookup everything up during a routine
+ /// symbol context query.
+ eSymbolContextEverything = ((eSymbolContextSymbol << 1) - 1u),
+ /// Set when \a global or static variable is requested from a
+ /// query, or was located in query results.
+ /// eSymbolContextVariable is potentially expensive to lookup so
+ /// it isn't included in eSymbolContextEverything which stops it
+ /// from being used during frame PC lookups and many other
+ /// potential address to symbol context lookups.
+ eSymbolContextVariable = (1u << 7),
+
+ // Keep this last and up-to-date for what the last enum value is.
+ eSymbolContextLastItem = eSymbolContextVariable,
+};
+LLDB_MARK_AS_BITMASK_ENUM(SymbolContextItem)
+
+FLAGS_ENUM(Permissions){ePermissionsWritable = (1u << 0),
+ ePermissionsReadable = (1u << 1),
+ ePermissionsExecutable = (1u << 2)};
+LLDB_MARK_AS_BITMASK_ENUM(Permissions)
+
+enum InputReaderAction {
+ eInputReaderActivate, ///< reader is newly pushed onto the reader stack
+ eInputReaderAsynchronousOutputWritten, ///< an async output event occurred;
+ ///< the reader may want to do
+ ///< something
+ eInputReaderReactivate, ///< reader is on top of the stack again after another
+ ///< reader was popped off
+ eInputReaderDeactivate, ///< another reader was pushed on the stack
+ eInputReaderGotToken, ///< reader got one of its tokens (granularity)
+ eInputReaderInterrupt, ///< reader received an interrupt signal (probably from
+ ///< a control-c)
+ eInputReaderEndOfFile, ///< reader received an EOF char (probably from a
+ ///< control-d)
+ eInputReaderDone ///< reader was just popped off the stack and is done
+};
+
+FLAGS_ENUM(BreakpointEventType){
+ eBreakpointEventTypeInvalidType = (1u << 0),
+ eBreakpointEventTypeAdded = (1u << 1),
+ eBreakpointEventTypeRemoved = (1u << 2),
+ eBreakpointEventTypeLocationsAdded = (1u << 3), ///< Locations added doesn't
+ ///< get sent when the
+ ///< breakpoint is created
+ eBreakpointEventTypeLocationsRemoved = (1u << 4),
+ eBreakpointEventTypeLocationsResolved = (1u << 5),
+ eBreakpointEventTypeEnabled = (1u << 6),
+ eBreakpointEventTypeDisabled = (1u << 7),
+ eBreakpointEventTypeCommandChanged = (1u << 8),
+ eBreakpointEventTypeConditionChanged = (1u << 9),
+ eBreakpointEventTypeIgnoreChanged = (1u << 10),
+ eBreakpointEventTypeThreadChanged = (1u << 11),
+ eBreakpointEventTypeAutoContinueChanged = (1u << 12)};
+
+FLAGS_ENUM(WatchpointEventType){
+ eWatchpointEventTypeInvalidType = (1u << 0),
+ eWatchpointEventTypeAdded = (1u << 1),
+ eWatchpointEventTypeRemoved = (1u << 2),
+ eWatchpointEventTypeEnabled = (1u << 6),
+ eWatchpointEventTypeDisabled = (1u << 7),
+ eWatchpointEventTypeCommandChanged = (1u << 8),
+ eWatchpointEventTypeConditionChanged = (1u << 9),
+ eWatchpointEventTypeIgnoreChanged = (1u << 10),
+ eWatchpointEventTypeThreadChanged = (1u << 11),
+ eWatchpointEventTypeTypeChanged = (1u << 12)};
+
+enum WatchpointWriteType {
+ /// Don't stop when the watched memory region is written to.
+ eWatchpointWriteTypeDisabled,
+ /// Stop on any write access to the memory region, even if
+ /// the value doesn't change. On some architectures, a write
+ /// near the memory region may be falsely reported as a match,
+ /// and notify this spurious stop as a watchpoint trap.
+ eWatchpointWriteTypeAlways,
+ /// Stop on a write to the memory region that changes its value.
+ /// This is most likely the behavior a user expects, and is the
+ /// behavior in gdb. lldb can silently ignore writes near the
+ /// watched memory region that are reported as accesses to lldb.
+ eWatchpointWriteTypeOnModify
+};
+
+/// Programming language type.
+///
+/// These enumerations use the same language enumerations as the DWARF
+/// specification for ease of use and consistency.
+/// The enum -> string code is in Language.cpp, don't change this
+/// table without updating that code as well.
+///
+/// This datatype is used in SBExpressionOptions::SetLanguage() which
+/// makes this type API. Do not change its underlying storage type!
+enum LanguageType {
+ eLanguageTypeUnknown = 0x0000, ///< Unknown or invalid language value.
+ eLanguageTypeC89 = 0x0001, ///< ISO C:1989.
+ eLanguageTypeC = 0x0002, ///< Non-standardized C, such as K&R.
+ eLanguageTypeAda83 = 0x0003, ///< ISO Ada:1983.
+ eLanguageTypeC_plus_plus = 0x0004, ///< ISO C++:1998.
+ eLanguageTypeCobol74 = 0x0005, ///< ISO Cobol:1974.
+ eLanguageTypeCobol85 = 0x0006, ///< ISO Cobol:1985.
+ eLanguageTypeFortran77 = 0x0007, ///< ISO Fortran 77.
+ eLanguageTypeFortran90 = 0x0008, ///< ISO Fortran 90.
+ eLanguageTypePascal83 = 0x0009, ///< ISO Pascal:1983.
+ eLanguageTypeModula2 = 0x000a, ///< ISO Modula-2:1996.
+ eLanguageTypeJava = 0x000b, ///< Java.
+ eLanguageTypeC99 = 0x000c, ///< ISO C:1999.
+ eLanguageTypeAda95 = 0x000d, ///< ISO Ada:1995.
+ eLanguageTypeFortran95 = 0x000e, ///< ISO Fortran 95.
+ eLanguageTypePLI = 0x000f, ///< ANSI PL/I:1976.
+ eLanguageTypeObjC = 0x0010, ///< Objective-C.
+ eLanguageTypeObjC_plus_plus = 0x0011, ///< Objective-C++.
+ eLanguageTypeUPC = 0x0012, ///< Unified Parallel C.
+ eLanguageTypeD = 0x0013, ///< D.
+ eLanguageTypePython = 0x0014, ///< Python.
+ // NOTE: The below are DWARF5 constants, subject to change upon
+ // completion of the DWARF5 specification
+ eLanguageTypeOpenCL = 0x0015, ///< OpenCL.
+ eLanguageTypeGo = 0x0016, ///< Go.
+ eLanguageTypeModula3 = 0x0017, ///< Modula 3.
+ eLanguageTypeHaskell = 0x0018, ///< Haskell.
+ eLanguageTypeC_plus_plus_03 = 0x0019, ///< ISO C++:2003.
+ eLanguageTypeC_plus_plus_11 = 0x001a, ///< ISO C++:2011.
+ eLanguageTypeOCaml = 0x001b, ///< OCaml.
+ eLanguageTypeRust = 0x001c, ///< Rust.
+ eLanguageTypeC11 = 0x001d, ///< ISO C:2011.
+ eLanguageTypeSwift = 0x001e, ///< Swift.
+ eLanguageTypeJulia = 0x001f, ///< Julia.
+ eLanguageTypeDylan = 0x0020, ///< Dylan.
+ eLanguageTypeC_plus_plus_14 = 0x0021, ///< ISO C++:2014.
+ eLanguageTypeFortran03 = 0x0022, ///< ISO Fortran 2003.
+ eLanguageTypeFortran08 = 0x0023, ///< ISO Fortran 2008.
+ eLanguageTypeRenderScript = 0x0024,
+ eLanguageTypeBLISS = 0x0025,
+ eLanguageTypeKotlin = 0x0026,
+ eLanguageTypeZig = 0x0027,
+ eLanguageTypeCrystal = 0x0028,
+ eLanguageTypeC_plus_plus_17 = 0x002a, ///< ISO C++:2017.
+ eLanguageTypeC_plus_plus_20 = 0x002b, ///< ISO C++:2020.
+ eLanguageTypeC17 = 0x002c,
+ eLanguageTypeFortran18 = 0x002d,
+ eLanguageTypeAda2005 = 0x002e,
+ eLanguageTypeAda2012 = 0x002f,
+ eLanguageTypeHIP = 0x0030,
+ eLanguageTypeAssembly = 0x0031,
+ eLanguageTypeC_sharp = 0x0032,
+ eLanguageTypeMojo = 0x0033,
+
+ // Vendor Extensions
+ // Note: Language::GetNameForLanguageType
+ // assumes these can be used as indexes into array language_names, and
+ // Language::SetLanguageFromCString and Language::AsCString assume these can
+ // be used as indexes into array g_languages.
+ eLanguageTypeMipsAssembler, ///< Mips_Assembler.
+ // Mojo will move to the common list of languages once the DWARF committee
+ // creates a language code for it.
+ eNumLanguageTypes
+};
+
+enum InstrumentationRuntimeType {
+ eInstrumentationRuntimeTypeAddressSanitizer = 0x0000,
+ eInstrumentationRuntimeTypeThreadSanitizer = 0x0001,
+ eInstrumentationRuntimeTypeUndefinedBehaviorSanitizer = 0x0002,
+ eInstrumentationRuntimeTypeMainThreadChecker = 0x0003,
+ eInstrumentationRuntimeTypeSwiftRuntimeReporting = 0x0004,
+ eInstrumentationRuntimeTypeLibsanitizersAsan = 0x0005,
+ eNumInstrumentationRuntimeTypes
+};
+
+enum DynamicValueType {
+ eNoDynamicValues = 0,
+ eDynamicCanRunTarget = 1,
+ eDynamicDontRunTarget = 2
+};
+
+enum StopShowColumn {
+ eStopShowColumnAnsiOrCaret = 0,
+ eStopShowColumnAnsi = 1,
+ eStopShowColumnCaret = 2,
+ eStopShowColumnNone = 3
+};
+
+enum AccessType {
+ eAccessNone,
+ eAccessPublic,
+ eAccessPrivate,
+ eAccessProtected,
+ eAccessPackage
+};
+
+enum CommandArgumentType {
+ eArgTypeAddress = 0,
+ eArgTypeAddressOrExpression,
+ eArgTypeAliasName,
+ eArgTypeAliasOptions,
+ eArgTypeArchitecture,
+ eArgTypeBoolean,
+ eArgTypeBreakpointID,
+ eArgTypeBreakpointIDRange,
+ eArgTypeBreakpointName,
+ eArgTypeByteSize,
+ eArgTypeClassName,
+ eArgTypeCommandName,
+ eArgTypeCount,
+ eArgTypeDescriptionVerbosity,
+ eArgTypeDirectoryName,
+ eArgTypeDisassemblyFlavor,
+ eArgTypeEndAddress,
+ eArgTypeExpression,
+ eArgTypeExpressionPath,
+ eArgTypeExprFormat,
+ eArgTypeFileLineColumn,
+ eArgTypeFilename,
+ eArgTypeFormat,
+ eArgTypeFrameIndex,
+ eArgTypeFullName,
+ eArgTypeFunctionName,
+ eArgTypeFunctionOrSymbol,
+ eArgTypeGDBFormat,
+ eArgTypeHelpText,
+ eArgTypeIndex,
+ eArgTypeLanguage,
+ eArgTypeLineNum,
+ eArgTypeLogCategory,
+ eArgTypeLogChannel,
+ eArgTypeMethod,
+ eArgTypeName,
+ eArgTypeNewPathPrefix,
+ eArgTypeNumLines,
+ eArgTypeNumberPerLine,
+ eArgTypeOffset,
+ eArgTypeOldPathPrefix,
+ eArgTypeOneLiner,
+ eArgTypePath,
+ eArgTypePermissionsNumber,
+ eArgTypePermissionsString,
+ eArgTypePid,
+ eArgTypePlugin,
+ eArgTypeProcessName,
+ eArgTypePythonClass,
+ eArgTypePythonFunction,
+ eArgTypePythonScript,
+ eArgTypeQueueName,
+ eArgTypeRegisterName,
+ eArgTypeRegularExpression,
+ eArgTypeRunArgs,
+ eArgTypeRunMode,
+ eArgTypeScriptedCommandSynchronicity,
+ eArgTypeScriptLang,
+ eArgTypeSearchWord,
+ eArgTypeSelector,
+ eArgTypeSettingIndex,
+ eArgTypeSettingKey,
+ eArgTypeSettingPrefix,
+ eArgTypeSettingVariableName,
+ eArgTypeShlibName,
+ eArgTypeSourceFile,
+ eArgTypeSortOrder,
+ eArgTypeStartAddress,
+ eArgTypeSummaryString,
+ eArgTypeSymbol,
+ eArgTypeThreadID,
+ eArgTypeThreadIndex,
+ eArgTypeThreadName,
+ eArgTypeTypeName,
+ eArgTypeUnsignedInteger,
+ eArgTypeUnixSignal,
+ eArgTypeVarName,
+ eArgTypeValue,
+ eArgTypeWidth,
+ eArgTypeNone,
+ eArgTypePlatform,
+ eArgTypeWatchpointID,
+ eArgTypeWatchpointIDRange,
+ eArgTypeWatchType,
+ eArgRawInput,
+ eArgTypeCommand,
+ eArgTypeColumnNum,
+ eArgTypeModuleUUID,
+ eArgTypeSaveCoreStyle,
+ eArgTypeLogHandler,
+ eArgTypeSEDStylePair,
+ eArgTypeRecognizerID,
+ eArgTypeConnectURL,
+ eArgTypeTargetID,
+ eArgTypeStopHookID,
+ eArgTypeCompletionType,
+ eArgTypeRemotePath,
+ eArgTypeRemoteFilename,
+ eArgTypeModule,
+ eArgTypeLastArg // Always keep this entry as the last entry in this
+ // enumeration!!
+};
+
+/// Symbol types.
+// Symbol holds the SymbolType in a 6-bit field (m_type), so if you get over 63
+// entries you will have to resize that field.
+enum SymbolType {
+ eSymbolTypeAny = 0,
+ eSymbolTypeInvalid = 0,
+ eSymbolTypeAbsolute,
+ eSymbolTypeCode,
+ eSymbolTypeResolver,
+ eSymbolTypeData,
+ eSymbolTypeTrampoline,
+ eSymbolTypeRuntime,
+ eSymbolTypeException,
+ eSymbolTypeSourceFile,
+ eSymbolTypeHeaderFile,
+ eSymbolTypeObjectFile,
+ eSymbolTypeCommonBlock,
+ eSymbolTypeBlock,
+ eSymbolTypeLocal,
+ eSymbolTypeParam,
+ eSymbolTypeVariable,
+ eSymbolTypeVariableType,
+ eSymbolTypeLineEntry,
+ eSymbolTypeLineHeader,
+ eSymbolTypeScopeBegin,
+ eSymbolTypeScopeEnd,
+ eSymbolTypeAdditional, ///< When symbols take more than one entry, the extra
+ ///< entries get this type
+ eSymbolTypeCompiler,
+ eSymbolTypeInstrumentation,
+ eSymbolTypeUndefined,
+ eSymbolTypeObjCClass,
+ eSymbolTypeObjCMetaClass,
+ eSymbolTypeObjCIVar,
+ eSymbolTypeReExported
+};
+
+enum SectionType {
+ eSectionTypeInvalid,
+ eSectionTypeCode,
+ eSectionTypeContainer, ///< The section contains child sections
+ eSectionTypeData,
+ eSectionTypeDataCString, ///< Inlined C string data
+ eSectionTypeDataCStringPointers, ///< Pointers to C string data
+ eSectionTypeDataSymbolAddress, ///< Address of a symbol in the symbol table
+ eSectionTypeData4,
+ eSectionTypeData8,
+ eSectionTypeData16,
+ eSectionTypeDataPointers,
+ eSectionTypeDebug,
+ eSectionTypeZeroFill,
+ eSectionTypeDataObjCMessageRefs, ///< Pointer to function pointer + selector
+ eSectionTypeDataObjCCFStrings, ///< Objective-C const CFString/NSString
+ ///< objects
+ eSectionTypeDWARFDebugAbbrev,
+ eSectionTypeDWARFDebugAddr,
+ eSectionTypeDWARFDebugAranges,
+ eSectionTypeDWARFDebugCuIndex,
+ eSectionTypeDWARFDebugFrame,
+ eSectionTypeDWARFDebugInfo,
+ eSectionTypeDWARFDebugLine,
+ eSectionTypeDWARFDebugLoc,
+ eSectionTypeDWARFDebugMacInfo,
+ eSectionTypeDWARFDebugMacro,
+ eSectionTypeDWARFDebugPubNames,
+ eSectionTypeDWARFDebugPubTypes,
+ eSectionTypeDWARFDebugRanges,
+ eSectionTypeDWARFDebugStr,
+ eSectionTypeDWARFDebugStrOffsets,
+ eSectionTypeDWARFAppleNames,
+ eSectionTypeDWARFAppleTypes,
+ eSectionTypeDWARFAppleNamespaces,
+ eSectionTypeDWARFAppleObjC,
+ eSectionTypeELFSymbolTable, ///< Elf SHT_SYMTAB section
+ eSectionTypeELFDynamicSymbols, ///< Elf SHT_DYNSYM section
+ eSectionTypeELFRelocationEntries, ///< Elf SHT_REL or SHT_REL section
+ eSectionTypeELFDynamicLinkInfo, ///< Elf SHT_DYNAMIC section
+ eSectionTypeEHFrame,
+ eSectionTypeARMexidx,
+ eSectionTypeARMextab,
+ eSectionTypeCompactUnwind, ///< compact unwind section in Mach-O,
+ ///< __TEXT,__unwind_info
+ eSectionTypeGoSymtab,
+ eSectionTypeAbsoluteAddress, ///< Dummy section for symbols with absolute
+ ///< address
+ eSectionTypeDWARFGNUDebugAltLink,
+ eSectionTypeDWARFDebugTypes, ///< DWARF .debug_types section
+ eSectionTypeDWARFDebugNames, ///< DWARF v5 .debug_names
+ eSectionTypeOther,
+ eSectionTypeDWARFDebugLineStr, ///< DWARF v5 .debug_line_str
+ eSectionTypeDWARFDebugRngLists, ///< DWARF v5 .debug_rnglists
+ eSectionTypeDWARFDebugLocLists, ///< DWARF v5 .debug_loclists
+ eSectionTypeDWARFDebugAbbrevDwo,
+ eSectionTypeDWARFDebugInfoDwo,
+ eSectionTypeDWARFDebugStrDwo,
+ eSectionTypeDWARFDebugStrOffsetsDwo,
+ eSectionTypeDWARFDebugTypesDwo,
+ eSectionTypeDWARFDebugRngListsDwo,
+ eSectionTypeDWARFDebugLocDwo,
+ eSectionTypeDWARFDebugLocListsDwo,
+ eSectionTypeDWARFDebugTuIndex,
+ eSectionTypeCTF,
+ eSectionTypeSwiftModules,
+};
+
+FLAGS_ENUM(EmulateInstructionOptions){
+ eEmulateInstructionOptionNone = (0u),
+ eEmulateInstructionOptionAutoAdvancePC = (1u << 0),
+ eEmulateInstructionOptionIgnoreConditions = (1u << 1)};
+
+FLAGS_ENUM(FunctionNameType){
+ eFunctionNameTypeNone = 0u,
+ eFunctionNameTypeAuto =
+ (1u << 1), ///< Automatically figure out which FunctionNameType
+ ///< bits to set based on the function name.
+ eFunctionNameTypeFull = (1u << 2), ///< The function name.
+ ///< For C this is the same as just the name of the function For C++ this is
+ ///< the mangled or demangled version of the mangled name. For ObjC this is
+ ///< the full function signature with the + or - and the square brackets and
+ ///< the class and selector
+ eFunctionNameTypeBase = (1u
+ << 3), ///< The function name only, no namespaces
+ ///< or arguments and no class
+ ///< methods or selectors will be searched.
+ eFunctionNameTypeMethod = (1u << 4), ///< Find function by method name (C++)
+ ///< with no namespace or arguments
+ eFunctionNameTypeSelector =
+ (1u << 5), ///< Find function by selector name (ObjC) names
+ eFunctionNameTypeAny =
+ eFunctionNameTypeAuto ///< DEPRECATED: use eFunctionNameTypeAuto
+};
+LLDB_MARK_AS_BITMASK_ENUM(FunctionNameType)
+
+/// Basic types enumeration for the public API SBType::GetBasicType().
+enum BasicType {
+ eBasicTypeInvalid = 0,
+ eBasicTypeVoid = 1,
+ eBasicTypeChar,
+ eBasicTypeSignedChar,
+ eBasicTypeUnsignedChar,
+ eBasicTypeWChar,
+ eBasicTypeSignedWChar,
+ eBasicTypeUnsignedWChar,
+ eBasicTypeChar16,
+ eBasicTypeChar32,
+ eBasicTypeChar8,
+ eBasicTypeShort,
+ eBasicTypeUnsignedShort,
+ eBasicTypeInt,
+ eBasicTypeUnsignedInt,
+ eBasicTypeLong,
+ eBasicTypeUnsignedLong,
+ eBasicTypeLongLong,
+ eBasicTypeUnsignedLongLong,
+ eBasicTypeInt128,
+ eBasicTypeUnsignedInt128,
+ eBasicTypeBool,
+ eBasicTypeHalf,
+ eBasicTypeFloat,
+ eBasicTypeDouble,
+ eBasicTypeLongDouble,
+ eBasicTypeFloatComplex,
+ eBasicTypeDoubleComplex,
+ eBasicTypeLongDoubleComplex,
+ eBasicTypeObjCID,
+ eBasicTypeObjCClass,
+ eBasicTypeObjCSel,
+ eBasicTypeNullPtr,
+ eBasicTypeOther
+};
+
+/// Deprecated
+enum TraceType {
+ eTraceTypeNone = 0,
+
+ /// Intel Processor Trace
+ eTraceTypeProcessorTrace
+};
+
+enum StructuredDataType {
+ eStructuredDataTypeInvalid = -1,
+ eStructuredDataTypeNull = 0,
+ eStructuredDataTypeGeneric,
+ eStructuredDataTypeArray,
+ eStructuredDataTypeInteger,
+ eStructuredDataTypeFloat,
+ eStructuredDataTypeBoolean,
+ eStructuredDataTypeString,
+ eStructuredDataTypeDictionary,
+ eStructuredDataTypeSignedInteger,
+ eStructuredDataTypeUnsignedInteger = eStructuredDataTypeInteger,
+};
+
+FLAGS_ENUM(TypeClass){
+ eTypeClassInvalid = (0u), eTypeClassArray = (1u << 0),
+ eTypeClassBlockPointer = (1u << 1), eTypeClassBuiltin = (1u << 2),
+ eTypeClassClass = (1u << 3), eTypeClassComplexFloat = (1u << 4),
+ eTypeClassComplexInteger = (1u << 5), eTypeClassEnumeration = (1u << 6),
+ eTypeClassFunction = (1u << 7), eTypeClassMemberPointer = (1u << 8),
+ eTypeClassObjCObject = (1u << 9), eTypeClassObjCInterface = (1u << 10),
+ eTypeClassObjCObjectPointer = (1u << 11), eTypeClassPointer = (1u << 12),
+ eTypeClassReference = (1u << 13), eTypeClassStruct = (1u << 14),
+ eTypeClassTypedef = (1u << 15), eTypeClassUnion = (1u << 16),
+ eTypeClassVector = (1u << 17),
+ // Define the last type class as the MSBit of a 32 bit value
+ eTypeClassOther = (1u << 31),
+ // Define a mask that can be used for any type when finding types
+ eTypeClassAny = (0xffffffffu)};
+LLDB_MARK_AS_BITMASK_ENUM(TypeClass)
+
+enum TemplateArgumentKind {
+ eTemplateArgumentKindNull = 0,
+ eTemplateArgumentKindType,
+ eTemplateArgumentKindDeclaration,
+ eTemplateArgumentKindIntegral,
+ eTemplateArgumentKindTemplate,
+ eTemplateArgumentKindTemplateExpansion,
+ eTemplateArgumentKindExpression,
+ eTemplateArgumentKindPack,
+ eTemplateArgumentKindNullPtr,
+ eTemplateArgumentKindStructuralValue,
+};
+
+/// Type of match to be performed when looking for a formatter for a data type.
+/// Used by classes like SBTypeNameSpecifier or lldb_private::TypeMatcher.
+enum FormatterMatchType {
+ eFormatterMatchExact,
+ eFormatterMatchRegex,
+ eFormatterMatchCallback,
+
+ eLastFormatterMatchType = eFormatterMatchCallback,
+};
+
+/// Options that can be set for a formatter to alter its behavior. Not
+/// all of these are applicable to all formatter types.
+FLAGS_ENUM(TypeOptions){eTypeOptionNone = (0u),
+ eTypeOptionCascade = (1u << 0),
+ eTypeOptionSkipPointers = (1u << 1),
+ eTypeOptionSkipReferences = (1u << 2),
+ eTypeOptionHideChildren = (1u << 3),
+ eTypeOptionHideValue = (1u << 4),
+ eTypeOptionShowOneLiner = (1u << 5),
+ eTypeOptionHideNames = (1u << 6),
+ eTypeOptionNonCacheable = (1u << 7),
+ eTypeOptionHideEmptyAggregates = (1u << 8),
+ eTypeOptionFrontEndWantsDereference = (1u << 9)};
+
+/// This is the return value for frame comparisons. If you are comparing frame
+/// A to frame B the following cases arise:
+///
+/// 1) When frame A pushes frame B (or a frame that ends up pushing
+/// B) A is Older than B.
+///
+/// 2) When frame A pushed frame B (or if frameA is on the stack
+/// but B is not) A is Younger than B.
+///
+/// 3) When frame A and frame B have the same StackID, they are
+/// Equal.
+///
+/// 4) When frame A and frame B have the same immediate parent
+/// frame, but are not equal, the comparison yields SameParent.
+///
+/// 5) If the two frames are on different threads or processes the
+/// comparison is Invalid.
+///
+/// 6) If for some reason we can't figure out what went on, we
+/// return Unknown.
+enum FrameComparison {
+ eFrameCompareInvalid,
+ eFrameCompareUnknown,
+ eFrameCompareEqual,
+ eFrameCompareSameParent,
+ eFrameCompareYounger,
+ eFrameCompareOlder
+};
+
+/// File Permissions.
+///
+/// Designed to mimic the unix file permission bits so they can be used with
+/// functions that set 'mode_t' to certain values for permissions.
+FLAGS_ENUM(FilePermissions){
+ eFilePermissionsUserRead = (1u << 8),
+ eFilePermissionsUserWrite = (1u << 7),
+ eFilePermissionsUserExecute = (1u << 6),
+ eFilePermissionsGroupRead = (1u << 5),
+ eFilePermissionsGroupWrite = (1u << 4),
+ eFilePermissionsGroupExecute = (1u << 3),
+ eFilePermissionsWorldRead = (1u << 2),
+ eFilePermissionsWorldWrite = (1u << 1),
+ eFilePermissionsWorldExecute = (1u << 0),
+
+ eFilePermissionsUserRW = (eFilePermissionsUserRead |
+ eFilePermissionsUserWrite | 0),
+ eFileFilePermissionsUserRX = (eFilePermissionsUserRead | 0 |
+ eFilePermissionsUserExecute),
+ eFilePermissionsUserRWX = (eFilePermissionsUserRead |
+ eFilePermissionsUserWrite |
+ eFilePermissionsUserExecute),
+
+ eFilePermissionsGroupRW = (eFilePermissionsGroupRead |
+ eFilePermissionsGroupWrite | 0),
+ eFilePermissionsGroupRX = (eFilePermissionsGroupRead | 0 |
+ eFilePermissionsGroupExecute),
+ eFilePermissionsGroupRWX = (eFilePermissionsGroupRead |
+ eFilePermissionsGroupWrite |
+ eFilePermissionsGroupExecute),
+
+ eFilePermissionsWorldRW = (eFilePermissionsWorldRead |
+ eFilePermissionsWorldWrite | 0),
+ eFilePermissionsWorldRX = (eFilePermissionsWorldRead | 0 |
+ eFilePermissionsWorldExecute),
+ eFilePermissionsWorldRWX = (eFilePermissionsWorldRead |
+ eFilePermissionsWorldWrite |
+ eFilePermissionsWorldExecute),
+
+ eFilePermissionsEveryoneR = (eFilePermissionsUserRead |
+ eFilePermissionsGroupRead |
+ eFilePermissionsWorldRead),
+ eFilePermissionsEveryoneW = (eFilePermissionsUserWrite |
+ eFilePermissionsGroupWrite |
+ eFilePermissionsWorldWrite),
+ eFilePermissionsEveryoneX = (eFilePermissionsUserExecute |
+ eFilePermissionsGroupExecute |
+ eFilePermissionsWorldExecute),
+
+ eFilePermissionsEveryoneRW = (eFilePermissionsEveryoneR |
+ eFilePermissionsEveryoneW | 0),
+ eFilePermissionsEveryoneRX = (eFilePermissionsEveryoneR | 0 |
+ eFilePermissionsEveryoneX),
+ eFilePermissionsEveryoneRWX = (eFilePermissionsEveryoneR |
+ eFilePermissionsEveryoneW |
+ eFilePermissionsEveryoneX),
+ eFilePermissionsFileDefault = eFilePermissionsUserRW,
+ eFilePermissionsDirectoryDefault = eFilePermissionsUserRWX,
+};
+
+/// Queue work item types.
+///
+/// The different types of work that can be enqueued on a libdispatch aka Grand
+/// Central Dispatch (GCD) queue.
+enum QueueItemKind {
+ eQueueItemKindUnknown = 0,
+ eQueueItemKindFunction,
+ eQueueItemKindBlock
+};
+
+/// Queue type.
+///
+/// libdispatch aka Grand Central Dispatch (GCD) queues can be either
+/// serial (executing on one thread) or concurrent (executing on
+/// multiple threads).
+enum QueueKind {
+ eQueueKindUnknown = 0,
+ eQueueKindSerial,
+ eQueueKindConcurrent
+};
+
+/// Expression Evaluation Stages.
+///
+/// These are the cancellable stages of expression evaluation, passed
+/// to the expression evaluation callback, so that you can interrupt
+/// expression evaluation at the various points in its lifecycle.
+enum ExpressionEvaluationPhase {
+ eExpressionEvaluationParse = 0,
+ eExpressionEvaluationIRGen,
+ eExpressionEvaluationExecution,
+ eExpressionEvaluationComplete
+};
+
+/// Architecture-agnostic categorization of instructions for traversing the
+/// control flow of a trace.
+///
+/// A single instruction can match one or more of these categories.
+enum InstructionControlFlowKind {
+ /// The instruction could not be classified.
+ eInstructionControlFlowKindUnknown = 0,
+ /// The instruction is something not listed below, i.e. it's a sequential
+ /// instruction that doesn't affect the control flow of the program.
+ eInstructionControlFlowKindOther,
+ /// The instruction is a near (function) call.
+ eInstructionControlFlowKindCall,
+ /// The instruction is a near (function) return.
+ eInstructionControlFlowKindReturn,
+ /// The instruction is a near unconditional jump.
+ eInstructionControlFlowKindJump,
+ /// The instruction is a near conditional jump.
+ eInstructionControlFlowKindCondJump,
+ /// The instruction is a call-like far transfer.
+ /// E.g. SYSCALL, SYSENTER, or FAR CALL.
+ eInstructionControlFlowKindFarCall,
+ /// The instruction is a return-like far transfer.
+ /// E.g. SYSRET, SYSEXIT, IRET, or FAR RET.
+ eInstructionControlFlowKindFarReturn,
+ /// The instruction is a jump-like far transfer.
+ /// E.g. FAR JMP.
+ eInstructionControlFlowKindFarJump
+};
+
+/// Watchpoint Kind.
+///
+/// Indicates what types of events cause the watchpoint to fire. Used by Native
+/// *Protocol-related classes.
+FLAGS_ENUM(WatchpointKind){eWatchpointKindWrite = (1u << 0),
+ eWatchpointKindRead = (1u << 1)};
+
+enum GdbSignal {
+ eGdbSignalBadAccess = 0x91,
+ eGdbSignalBadInstruction = 0x92,
+ eGdbSignalArithmetic = 0x93,
+ eGdbSignalEmulation = 0x94,
+ eGdbSignalSoftware = 0x95,
+ eGdbSignalBreakpoint = 0x96
+};
+
+/// Used with SBHostOS::GetLLDBPath (lldb::PathType) to find files that are
+/// related to LLDB on the current host machine. Most files are
+/// relative to LLDB or are in known locations.
+enum PathType {
+ ePathTypeLLDBShlibDir, ///< The directory where the lldb.so (unix) or LLDB
+ ///< mach-o file in LLDB.framework (MacOSX) exists
+ ePathTypeSupportExecutableDir, ///< Find LLDB support executable directory
+ ///< (debugserver, etc)
+ ePathTypeHeaderDir, ///< Find LLDB header file directory
+ ePathTypePythonDir, ///< Find Python modules (PYTHONPATH) directory
+ ePathTypeLLDBSystemPlugins, ///< System plug-ins directory
+ ePathTypeLLDBUserPlugins, ///< User plug-ins directory
+ ePathTypeLLDBTempSystemDir, ///< The LLDB temp directory for this system that
+ ///< will be cleaned up on exit
+ ePathTypeGlobalLLDBTempSystemDir, ///< The LLDB temp directory for this
+ ///< system, NOT cleaned up on a process
+ ///< exit.
+ ePathTypeClangDir ///< Find path to Clang builtin headers
+};
+
+/// Kind of member function.
+///
+/// Used by the type system.
+enum MemberFunctionKind {
+ eMemberFunctionKindUnknown = 0, ///< Not sure what the type of this is
+ eMemberFunctionKindConstructor, ///< A function used to create instances
+ eMemberFunctionKindDestructor, ///< A function used to tear down existing
+ ///< instances
+ eMemberFunctionKindInstanceMethod, ///< A function that applies to a specific
+ ///< instance
+ eMemberFunctionKindStaticMethod ///< A function that applies to a type rather
+ ///< than any instance
+};
+
+/// String matching algorithm used by SBTarget.
+enum MatchType {
+ eMatchTypeNormal,
+ eMatchTypeRegex,
+ eMatchTypeStartsWith,
+ eMatchTypeRegexInsensitive
+};
+
+/// Bitmask that describes details about a type.
+FLAGS_ENUM(TypeFlags){
+ eTypeHasChildren = (1u << 0), eTypeHasValue = (1u << 1),
+ eTypeIsArray = (1u << 2), eTypeIsBlock = (1u << 3),
+ eTypeIsBuiltIn = (1u << 4), eTypeIsClass = (1u << 5),
+ eTypeIsCPlusPlus = (1u << 6), eTypeIsEnumeration = (1u << 7),
+ eTypeIsFuncPrototype = (1u << 8), eTypeIsMember = (1u << 9),
+ eTypeIsObjC = (1u << 10), eTypeIsPointer = (1u << 11),
+ eTypeIsReference = (1u << 12), eTypeIsStructUnion = (1u << 13),
+ eTypeIsTemplate = (1u << 14), eTypeIsTypedef = (1u << 15),
+ eTypeIsVector = (1u << 16), eTypeIsScalar = (1u << 17),
+ eTypeIsInteger = (1u << 18), eTypeIsFloat = (1u << 19),
+ eTypeIsComplex = (1u << 20), eTypeIsSigned = (1u << 21),
+ eTypeInstanceIsPointer = (1u << 22)};
+
+FLAGS_ENUM(CommandFlags){
+ /// eCommandRequiresTarget
+ ///
+ /// Ensures a valid target is contained in m_exe_ctx prior to executing the
+ /// command. If a target doesn't exist or is invalid, the command will fail
+ /// and CommandObject::GetInvalidTargetDescription() will be returned as the
+ /// error. CommandObject subclasses can override the virtual function for
+ /// GetInvalidTargetDescription() to provide custom strings when needed.
+ eCommandRequiresTarget = (1u << 0),
+ /// eCommandRequiresProcess
+ ///
+ /// Ensures a valid process is contained in m_exe_ctx prior to executing the
+ /// command. If a process doesn't exist or is invalid, the command will fail
+ /// and CommandObject::GetInvalidProcessDescription() will be returned as
+ /// the error. CommandObject subclasses can override the virtual function
+ /// for GetInvalidProcessDescription() to provide custom strings when
+ /// needed.
+ eCommandRequiresProcess = (1u << 1),
+ /// eCommandRequiresThread
+ ///
+ /// Ensures a valid thread is contained in m_exe_ctx prior to executing the
+ /// command. If a thread doesn't exist or is invalid, the command will fail
+ /// and CommandObject::GetInvalidThreadDescription() will be returned as the
+ /// error. CommandObject subclasses can override the virtual function for
+ /// GetInvalidThreadDescription() to provide custom strings when needed.
+ eCommandRequiresThread = (1u << 2),
+ /// eCommandRequiresFrame
+ ///
+ /// Ensures a valid frame is contained in m_exe_ctx prior to executing the
+ /// command. If a frame doesn't exist or is invalid, the command will fail
+ /// and CommandObject::GetInvalidFrameDescription() will be returned as the
+ /// error. CommandObject subclasses can override the virtual function for
+ /// GetInvalidFrameDescription() to provide custom strings when needed.
+ eCommandRequiresFrame = (1u << 3),
+ /// eCommandRequiresRegContext
+ ///
+ /// Ensures a valid register context (from the selected frame if there is a
+ /// frame in m_exe_ctx, or from the selected thread from m_exe_ctx) is
+ /// available from m_exe_ctx prior to executing the command. If a target
+ /// doesn't exist or is invalid, the command will fail and
+ /// CommandObject::GetInvalidRegContextDescription() will be returned as the
+ /// error. CommandObject subclasses can override the virtual function for
+ /// GetInvalidRegContextDescription() to provide custom strings when needed.
+ eCommandRequiresRegContext = (1u << 4),
+ /// eCommandTryTargetAPILock
+ ///
+ /// Attempts to acquire the target lock if a target is selected in the
+ /// command interpreter. If the command object fails to acquire the API
+ /// lock, the command will fail with an appropriate error message.
+ eCommandTryTargetAPILock = (1u << 5),
+ /// eCommandProcessMustBeLaunched
+ ///
+ /// Verifies that there is a launched process in m_exe_ctx, if there isn't,
+ /// the command will fail with an appropriate error message.
+ eCommandProcessMustBeLaunched = (1u << 6),
+ /// eCommandProcessMustBePaused
+ ///
+ /// Verifies that there is a paused process in m_exe_ctx, if there isn't,
+ /// the command will fail with an appropriate error message.
+ eCommandProcessMustBePaused = (1u << 7),
+ /// eCommandProcessMustBeTraced
+ ///
+ /// Verifies that the process is being traced by a Trace plug-in, if it
+ /// isn't the command will fail with an appropriate error message.
+ eCommandProcessMustBeTraced = (1u << 8)};
+
+/// Whether a summary should cap how much data it returns to users or not.
+enum TypeSummaryCapping {
+ eTypeSummaryCapped = true,
+ eTypeSummaryUncapped = false
+};
+
+/// The result from a command interpreter run.
+enum CommandInterpreterResult {
+ /// Command interpreter finished successfully.
+ eCommandInterpreterResultSuccess,
+ /// Stopped because the corresponding option was set and the inferior
+ /// crashed.
+ eCommandInterpreterResultInferiorCrash,
+ /// Stopped because the corresponding option was set and a command returned
+ /// an error.
+ eCommandInterpreterResultCommandError,
+ /// Stopped because quit was requested.
+ eCommandInterpreterResultQuitRequested,
+};
+
+// Style of core file to create when calling SaveCore.
+enum SaveCoreStyle {
+ eSaveCoreUnspecified = 0,
+ eSaveCoreFull = 1,
+ eSaveCoreDirtyOnly = 2,
+ eSaveCoreStackOnly = 3,
+};
+
+/// Events that might happen during a trace session.
+enum TraceEvent {
+ /// Tracing was disabled for some time due to a software trigger.
+ eTraceEventDisabledSW,
+ /// Tracing was disable for some time due to a hardware trigger.
+ eTraceEventDisabledHW,
+ /// Event due to CPU change for a thread. This event is also fired when
+ /// suddenly it's not possible to identify the cpu of a given thread.
+ eTraceEventCPUChanged,
+ /// Event due to a CPU HW clock tick.
+ eTraceEventHWClockTick,
+ /// The underlying tracing technology emitted a synchronization event used by
+ /// trace processors.
+ eTraceEventSyncPoint,
+};
+
+// Enum used to identify which kind of item a \a TraceCursor is pointing at
+enum TraceItemKind {
+ eTraceItemKindError = 0,
+ eTraceItemKindEvent,
+ eTraceItemKindInstruction,
+};
+
+/// Enum to indicate the reference point when invoking
+/// \a TraceCursor::Seek().
+/// The following values are inspired by \a std::istream::seekg.
+enum TraceCursorSeekType {
+ /// The beginning of the trace, i.e the oldest item.
+ eTraceCursorSeekTypeBeginning = 0,
+ /// The current position in the trace.
+ eTraceCursorSeekTypeCurrent,
+ /// The end of the trace, i.e the most recent item.
+ eTraceCursorSeekTypeEnd
+};
+
+/// Enum to control the verbosity level of `dwim-print` execution.
+enum DWIMPrintVerbosity {
+ /// Run `dwim-print` with no verbosity.
+ eDWIMPrintVerbosityNone,
+ /// Print a message when `dwim-print` uses `expression` evaluation.
+ eDWIMPrintVerbosityExpression,
+ /// Always print a message indicating how `dwim-print` is evaluating its
+ /// expression.
+ eDWIMPrintVerbosityFull,
+};
+
+enum WatchpointValueKind {
+ eWatchPointValueKindInvalid = 0,
+ ///< Watchpoint was created watching a variable
+ eWatchPointValueKindVariable = 1,
+ ///< Watchpoint was created watching the result of an expression that was
+ ///< evaluated at creation time.
+ eWatchPointValueKindExpression = 2,
+};
+
+enum CompletionType {
+ eNoCompletion = 0ul,
+ eSourceFileCompletion = (1ul << 0),
+ eDiskFileCompletion = (1ul << 1),
+ eDiskDirectoryCompletion = (1ul << 2),
+ eSymbolCompletion = (1ul << 3),
+ eModuleCompletion = (1ul << 4),
+ eSettingsNameCompletion = (1ul << 5),
+ ePlatformPluginCompletion = (1ul << 6),
+ eArchitectureCompletion = (1ul << 7),
+ eVariablePathCompletion = (1ul << 8),
+ eRegisterCompletion = (1ul << 9),
+ eBreakpointCompletion = (1ul << 10),
+ eProcessPluginCompletion = (1ul << 11),
+ eDisassemblyFlavorCompletion = (1ul << 12),
+ eTypeLanguageCompletion = (1ul << 13),
+ eFrameIndexCompletion = (1ul << 14),
+ eModuleUUIDCompletion = (1ul << 15),
+ eStopHookIDCompletion = (1ul << 16),
+ eThreadIndexCompletion = (1ul << 17),
+ eWatchpointIDCompletion = (1ul << 18),
+ eBreakpointNameCompletion = (1ul << 19),
+ eProcessIDCompletion = (1ul << 20),
+ eProcessNameCompletion = (1ul << 21),
+ eRemoteDiskFileCompletion = (1ul << 22),
+ eRemoteDiskDirectoryCompletion = (1ul << 23),
+ eTypeCategoryNameCompletion = (1ul << 24),
+ eCustomCompletion = (1ul << 25),
+ eThreadIDCompletion = (1ul << 26),
+ // This last enum element is just for input validation.
+ // Add new completions before this element,
+ // and then increment eTerminatorCompletion's shift value
+ eTerminatorCompletion = (1ul << 27)
+};
+
+/// Specifies if children need to be re-computed
+/// after a call to \ref SyntheticChildrenFrontEnd::Update.
+enum ChildCacheState {
+ eRefetch = 0, ///< Children need to be recomputed dynamically.
+
+ eReuse = 1, ///< Children did not change and don't need to be recomputed;
+ ///< re-use what we computed the last time we called Update.
+};
+
+enum SymbolDownload {
+ eSymbolDownloadOff = 0,
+ eSymbolDownloadBackground = 1,
+ eSymbolDownloadForeground = 2,
+};
+
+/// Used in the SBProcess AddressMask/FixAddress methods.
+enum AddressMaskType {
+ eAddressMaskTypeCode = 0,
+ eAddressMaskTypeData,
+ eAddressMaskTypeAny,
+ eAddressMaskTypeAll = eAddressMaskTypeAny
+};
+
+/// Used in the SBProcess AddressMask/FixAddress methods.
+enum AddressMaskRange {
+ eAddressMaskRangeLow = 0,
+ eAddressMaskRangeHigh,
+ eAddressMaskRangeAny,
+ eAddressMaskRangeAll = eAddressMaskRangeAny,
+};
+
+/// Used by the debugger to indicate which events are being broadcasted.
+enum DebuggerBroadcastBit {
+ eBroadcastBitProgress = (1 << 0),
+ eBroadcastBitWarning = (1 << 1),
+ eBroadcastBitError = (1 << 2),
+ eBroadcastSymbolChange = (1 << 3),
+ eBroadcastBitProgressCategory = (1 << 4),
+};
+
+/// Used for expressing severity in logs and diagnostics.
+enum Severity {
+ eSeverityError,
+ eSeverityWarning,
+ eSeverityInfo, // Equivalent to Remark used in clang.
+};
+
+} // namespace lldb
+
+#endif // LLDB_LLDB_ENUMERATIONS_H