1 //===-- lldb-enumerations.h -------------------------------------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef LLDB_lldb_enumerations_h_
10 #define LLDB_lldb_enumerations_h_
12 #include <type_traits>
15 // Macro to enable bitmask operations on an enum. Without this, Enum | Enum
16 // gets promoted to an int, so you have to say Enum a = Enum(eFoo | eBar). If
17 // you mark Enum with LLDB_MARK_AS_BITMASK_ENUM(Enum), however, you can simply
18 // write Enum a = eFoo | eBar.
19 // Unfortunately, swig<3.0 doesn't recognise the constexpr keyword, so remove
20 // this entire block, as it is not necessary for swig processing.
21 #define LLDB_MARK_AS_BITMASK_ENUM(Enum) \
22 constexpr Enum operator|(Enum a, Enum b) { \
23 return static_cast<Enum>( \
24 static_cast<std::underlying_type<Enum>::type>(a) | \
25 static_cast<std::underlying_type<Enum>::type>(b)); \
27 constexpr Enum operator&(Enum a, Enum b) { \
28 return static_cast<Enum>( \
29 static_cast<std::underlying_type<Enum>::type>(a) & \
30 static_cast<std::underlying_type<Enum>::type>(b)); \
32 constexpr Enum operator~(Enum a) { \
33 return static_cast<Enum>( \
34 ~static_cast<std::underlying_type<Enum>::type>(a)); \
36 inline Enum &operator|=(Enum &a, Enum b) { \
40 inline Enum &operator&=(Enum &a, Enum b) { \
45 #define LLDB_MARK_AS_BITMASK_ENUM(Enum)
49 // With MSVC, the default type of an enum is always signed, even if one of the
50 // enumerator values is too large to fit into a signed integer but would
51 // otherwise fit into an unsigned integer. As a result of this, all of LLDB's
52 // flag-style enumerations that specify something like eValueFoo = 1u << 31
53 // result in negative values. This usually just results in a benign warning,
54 // but in a few places we actually do comparisons on the enum values, which
55 // would cause a real bug. Furthermore, there's no way to silence only this
56 // warning, as it's part of -Wmicrosoft which also catches a whole slew of
57 // other useful issues.
59 // To make matters worse, early versions of SWIG don't recognize the syntax of
60 // specifying the underlying type of an enum (and Python doesn't care anyway)
61 // so we need a way to specify the underlying type when the enum is being used
62 // from C++ code, but just use a regular enum when swig is pre-processing.
63 #define FLAGS_ENUM(Name) enum Name : unsigned
64 #define FLAGS_ANONYMOUS_ENUM() enum : unsigned
66 #define FLAGS_ENUM(Name) enum Name
67 #define FLAGS_ANONYMOUS_ENUM() enum
72 // Process and Thread States
75 eStateUnloaded, ///< Process is object is valid, but not currently loaded
76 eStateConnected, ///< Process is connected to remote debug services, but not
77 ///launched or attached to anything yet
78 eStateAttaching, ///< Process is currently trying to attach
79 eStateLaunching, ///< Process is in the process of launching
80 // The state changes eStateAttaching and eStateLaunching are both sent while the
81 // private state thread is either not yet started or paused. For that reason, they
82 // should only be signaled as public state changes, and not private state changes.
83 eStateStopped, ///< Process or thread is stopped and can be examined.
84 eStateRunning, ///< Process or thread is running and can't be examined.
85 eStateStepping, ///< Process or thread is in the process of stepping and can
87 eStateCrashed, ///< Process or thread has crashed and can be examined.
88 eStateDetached, ///< Process has been detached and can't be examined.
89 eStateExited, ///< Process has exited and can't be examined.
90 eStateSuspended, ///< Process or thread is in a suspended state as far
91 ///< as the debugger is concerned while other processes
92 ///< or threads get the chance to run.
93 kLastStateType = eStateSuspended
97 FLAGS_ENUM(LaunchFlags){
99 eLaunchFlagExec = (1u << 0), ///< Exec when launching and turn the calling
100 ///process into a new process
101 eLaunchFlagDebug = (1u << 1), ///< Stop as soon as the process launches to
102 ///allow the process to be debugged
103 eLaunchFlagStopAtEntry = (1u << 2), ///< Stop at the program entry point
104 ///instead of auto-continuing when
105 ///launching or attaching at entry point
106 eLaunchFlagDisableASLR =
107 (1u << 3), ///< Disable Address Space Layout Randomization
108 eLaunchFlagDisableSTDIO =
109 (1u << 4), ///< Disable stdio for inferior process (e.g. for a GUI app)
110 eLaunchFlagLaunchInTTY =
111 (1u << 5), ///< Launch the process in a new TTY if supported by the host
112 eLaunchFlagLaunchInShell =
113 (1u << 6), ///< Launch the process inside a shell to get shell expansion
114 eLaunchFlagLaunchInSeparateProcessGroup =
115 (1u << 7), ///< Launch the process in a separate process group
116 eLaunchFlagDontSetExitStatus = (1u << 8), ///< If you are going to hand the
117 ///process off (e.g. to
119 ///< set this flag so lldb & the handee don't race to set its exit status.
120 eLaunchFlagDetachOnError = (1u << 9), ///< If set, then the client stub
121 ///should detach rather than killing
123 ///< if it loses connection with lldb.
124 eLaunchFlagShellExpandArguments =
125 (1u << 10), ///< Perform shell-style argument expansion
126 eLaunchFlagCloseTTYOnExit = (1u << 11), ///< Close the open TTY on exit
130 enum RunMode { eOnlyThisThread, eAllThreads, eOnlyDuringStepping };
132 // Byte ordering definitions
134 eByteOrderInvalid = 0,
140 // Register encoding definitions
142 eEncodingInvalid = 0,
143 eEncodingUint, // unsigned integer
144 eEncodingSint, // signed integer
145 eEncodingIEEE754, // float
146 eEncodingVector // vector registers
149 // Display format definitions
156 eFormatBytesWithASCII,
158 eFormatCharPrintable, // Only printable characters, space if not printable
159 eFormatComplex, // Floating point complex type
160 eFormatComplexFloat = eFormatComplex,
161 eFormatCString, // NULL terminated C strings
168 eFormatOSType, // OS character codes encoded into an integer 'PICT' 'text'
175 eFormatVectorOfSInt8,
176 eFormatVectorOfUInt8,
177 eFormatVectorOfSInt16,
178 eFormatVectorOfUInt16,
179 eFormatVectorOfSInt32,
180 eFormatVectorOfUInt32,
181 eFormatVectorOfSInt64,
182 eFormatVectorOfUInt64,
183 eFormatVectorOfFloat16,
184 eFormatVectorOfFloat32,
185 eFormatVectorOfFloat64,
186 eFormatVectorOfUInt128,
187 eFormatComplexInteger, // Integer complex type
188 eFormatCharArray, // Print characters with no single quotes, used for
189 // character arrays that can contain non printable
191 eFormatAddressInfo, // Describe what an address points to (func + offset with
192 // file/line, symbol + offset, data, etc)
193 eFormatHexFloat, // ISO C99 hex float string
194 eFormatInstruction, // Disassemble an opcode
195 eFormatVoid, // Do not print this
199 // Description levels for "void GetDescription(Stream *, DescriptionLevel)"
201 enum DescriptionLevel {
202 eDescriptionLevelBrief = 0,
203 eDescriptionLevelFull,
204 eDescriptionLevelVerbose,
205 eDescriptionLevelInitial,
206 kNumDescriptionLevels
209 // Script interpreter types
210 enum ScriptLanguage {
212 eScriptLanguagePython,
213 eScriptLanguageDefault = eScriptLanguagePython,
214 eScriptLanguageUnknown
217 // Register numbering types
218 // See RegisterContext::ConvertRegisterKindToRegisterNumber to convert any of
219 // these to the lldb internal register numbering scheme (eRegisterKindLLDB).
221 eRegisterKindEHFrame = 0, // the register numbers seen in eh_frame
222 eRegisterKindDWARF, // the register numbers seen DWARF
223 eRegisterKindGeneric, // insn ptr reg, stack ptr reg, etc not specific to any
225 eRegisterKindProcessPlugin, // num used by the process plugin - e.g. by the
226 // remote gdb-protocol stub program
227 eRegisterKindLLDB, // lldb's internal register numbers
231 // Thread stop reasons
233 eStopReasonInvalid = 0,
236 eStopReasonBreakpoint,
237 eStopReasonWatchpoint,
239 eStopReasonException,
240 eStopReasonExec, // Program was re-exec'ed
241 eStopReasonPlanComplete,
242 eStopReasonThreadExiting,
243 eStopReasonInstrumentation
246 // Command Return Status Types
248 eReturnStatusInvalid,
249 eReturnStatusSuccessFinishNoResult,
250 eReturnStatusSuccessFinishResult,
251 eReturnStatusSuccessContinuingNoResult,
252 eReturnStatusSuccessContinuingResult,
253 eReturnStatusStarted,
258 // The results of expression evaluation:
259 enum ExpressionResults {
260 eExpressionCompleted = 0,
261 eExpressionSetupError,
262 eExpressionParseError,
263 eExpressionDiscarded,
264 eExpressionInterrupted,
265 eExpressionHitBreakpoint,
267 eExpressionResultUnavailable,
268 eExpressionStoppedForDebug
272 eSearchDepthInvalid = 0,
275 eSearchDepthCompUnit,
276 eSearchDepthFunction,
279 kLastSearchDepthKind = eSearchDepthAddress
282 // Connection Status Types
283 enum ConnectionStatus {
284 eConnectionStatusSuccess, // Success
285 eConnectionStatusEndOfFile, // End-of-file encountered
286 eConnectionStatusError, // Check GetError() for details
287 eConnectionStatusTimedOut, // Request timed out
288 eConnectionStatusNoConnection, // No connection
289 eConnectionStatusLostConnection, // Lost connection while connected to a valid
291 eConnectionStatusInterrupted // Interrupted read
296 eErrorTypeGeneric, ///< Generic errors that can be any value.
297 eErrorTypeMachKernel, ///< Mach kernel error codes.
298 eErrorTypePOSIX, ///< POSIX error codes.
299 eErrorTypeExpression, ///< These are from the ExpressionResults enum.
300 eErrorTypeWin32 ///< Standard Win32 error codes.
304 eValueTypeInvalid = 0,
305 eValueTypeVariableGlobal = 1, // globals variable
306 eValueTypeVariableStatic = 2, // static variable
307 eValueTypeVariableArgument = 3, // function argument variables
308 eValueTypeVariableLocal = 4, // function local variables
309 eValueTypeRegister = 5, // stack frame register value
310 eValueTypeRegisterSet = 6, // A collection of stack frame register values
311 eValueTypeConstResult = 7, // constant result variables
312 eValueTypeVariableThreadLocal = 8 // thread local storage variable
315 // Token size/granularities for Input Readers
317 enum InputReaderGranularity {
318 eInputReaderGranularityInvalid = 0,
319 eInputReaderGranularityByte,
320 eInputReaderGranularityWord,
321 eInputReaderGranularityLine,
322 eInputReaderGranularityAll
325 /// These mask bits allow a common interface for queries that can
326 /// limit the amount of information that gets parsed to only the
327 /// information that is requested. These bits also can indicate what
328 /// actually did get resolved during query function calls.
330 /// Each definition corresponds to a one of the member variables
331 /// in this class, and requests that that item be resolved, or
332 /// indicates that the member did get resolved.
333 FLAGS_ENUM(SymbolContextItem){
334 eSymbolContextTarget = (1u << 0), ///< Set when \a target is requested from
335 /// a query, or was located in query
337 eSymbolContextModule = (1u << 1), ///< Set when \a module is requested from
338 /// a query, or was located in query
340 eSymbolContextCompUnit = (1u << 2), ///< Set when \a comp_unit is requested
341 /// from a query, or was located in
343 eSymbolContextFunction = (1u << 3), ///< Set when \a function is requested
344 /// from a query, or was located in
346 eSymbolContextBlock = (1u << 4), ///< Set when the deepest \a block is
347 /// requested from a query, or was located
349 eSymbolContextLineEntry = (1u << 5), ///< Set when \a line_entry is
350 /// requested from a query, or was
351 /// located in query results
352 eSymbolContextSymbol = (1u << 6), ///< Set when \a symbol is requested from
353 /// a query, or was located in query
355 eSymbolContextEverything = ((eSymbolContextSymbol << 1) -
356 1u), ///< Indicates to try and lookup everything
357 /// up during a routine symbol context
359 eSymbolContextVariable = (1u << 7), ///< Set when \a global or static
360 /// variable is requested from a query,
361 /// or was located in query results.
362 ///< eSymbolContextVariable is potentially expensive to lookup so it isn't
364 ///< eSymbolContextEverything which stops it from being used during frame PC
366 ///< many other potential address to symbol context lookups.
368 LLDB_MARK_AS_BITMASK_ENUM(SymbolContextItem)
370 FLAGS_ENUM(Permissions){ePermissionsWritable = (1u << 0),
371 ePermissionsReadable = (1u << 1),
372 ePermissionsExecutable = (1u << 2)};
373 LLDB_MARK_AS_BITMASK_ENUM(Permissions)
375 enum InputReaderAction {
376 eInputReaderActivate, // reader is newly pushed onto the reader stack
377 eInputReaderAsynchronousOutputWritten, // an async output event occurred; the
378 // reader may want to do something
379 eInputReaderReactivate, // reader is on top of the stack again after another
380 // reader was popped off
381 eInputReaderDeactivate, // another reader was pushed on the stack
382 eInputReaderGotToken, // reader got one of its tokens (granularity)
383 eInputReaderInterrupt, // reader received an interrupt signal (probably from a
385 eInputReaderEndOfFile, // reader received an EOF char (probably from a
387 eInputReaderDone // reader was just popped off the stack and is done
390 FLAGS_ENUM(BreakpointEventType){
391 eBreakpointEventTypeInvalidType = (1u << 0),
392 eBreakpointEventTypeAdded = (1u << 1),
393 eBreakpointEventTypeRemoved = (1u << 2),
394 eBreakpointEventTypeLocationsAdded = (1u << 3), // Locations added doesn't
396 // breakpoint is created
397 eBreakpointEventTypeLocationsRemoved = (1u << 4),
398 eBreakpointEventTypeLocationsResolved = (1u << 5),
399 eBreakpointEventTypeEnabled = (1u << 6),
400 eBreakpointEventTypeDisabled = (1u << 7),
401 eBreakpointEventTypeCommandChanged = (1u << 8),
402 eBreakpointEventTypeConditionChanged = (1u << 9),
403 eBreakpointEventTypeIgnoreChanged = (1u << 10),
404 eBreakpointEventTypeThreadChanged = (1u << 11),
405 eBreakpointEventTypeAutoContinueChanged = (1u << 12)};
407 FLAGS_ENUM(WatchpointEventType){
408 eWatchpointEventTypeInvalidType = (1u << 0),
409 eWatchpointEventTypeAdded = (1u << 1),
410 eWatchpointEventTypeRemoved = (1u << 2),
411 eWatchpointEventTypeEnabled = (1u << 6),
412 eWatchpointEventTypeDisabled = (1u << 7),
413 eWatchpointEventTypeCommandChanged = (1u << 8),
414 eWatchpointEventTypeConditionChanged = (1u << 9),
415 eWatchpointEventTypeIgnoreChanged = (1u << 10),
416 eWatchpointEventTypeThreadChanged = (1u << 11),
417 eWatchpointEventTypeTypeChanged = (1u << 12)};
419 /// Programming language type.
421 /// These enumerations use the same language enumerations as the DWARF
422 /// specification for ease of use and consistency.
423 /// The enum -> string code is in Language.cpp, don't change this
424 /// table without updating that code as well.
426 eLanguageTypeUnknown = 0x0000, ///< Unknown or invalid language value.
427 eLanguageTypeC89 = 0x0001, ///< ISO C:1989.
428 eLanguageTypeC = 0x0002, ///< Non-standardized C, such as K&R.
429 eLanguageTypeAda83 = 0x0003, ///< ISO Ada:1983.
430 eLanguageTypeC_plus_plus = 0x0004, ///< ISO C++:1998.
431 eLanguageTypeCobol74 = 0x0005, ///< ISO Cobol:1974.
432 eLanguageTypeCobol85 = 0x0006, ///< ISO Cobol:1985.
433 eLanguageTypeFortran77 = 0x0007, ///< ISO Fortran 77.
434 eLanguageTypeFortran90 = 0x0008, ///< ISO Fortran 90.
435 eLanguageTypePascal83 = 0x0009, ///< ISO Pascal:1983.
436 eLanguageTypeModula2 = 0x000a, ///< ISO Modula-2:1996.
437 eLanguageTypeJava = 0x000b, ///< Java.
438 eLanguageTypeC99 = 0x000c, ///< ISO C:1999.
439 eLanguageTypeAda95 = 0x000d, ///< ISO Ada:1995.
440 eLanguageTypeFortran95 = 0x000e, ///< ISO Fortran 95.
441 eLanguageTypePLI = 0x000f, ///< ANSI PL/I:1976.
442 eLanguageTypeObjC = 0x0010, ///< Objective-C.
443 eLanguageTypeObjC_plus_plus = 0x0011, ///< Objective-C++.
444 eLanguageTypeUPC = 0x0012, ///< Unified Parallel C.
445 eLanguageTypeD = 0x0013, ///< D.
446 eLanguageTypePython = 0x0014, ///< Python.
447 // NOTE: The below are DWARF5 constants, subject to change upon
448 // completion of the DWARF5 specification
449 eLanguageTypeOpenCL = 0x0015, ///< OpenCL.
450 eLanguageTypeGo = 0x0016, ///< Go.
451 eLanguageTypeModula3 = 0x0017, ///< Modula 3.
452 eLanguageTypeHaskell = 0x0018, ///< Haskell.
453 eLanguageTypeC_plus_plus_03 = 0x0019, ///< ISO C++:2003.
454 eLanguageTypeC_plus_plus_11 = 0x001a, ///< ISO C++:2011.
455 eLanguageTypeOCaml = 0x001b, ///< OCaml.
456 eLanguageTypeRust = 0x001c, ///< Rust.
457 eLanguageTypeC11 = 0x001d, ///< ISO C:2011.
458 eLanguageTypeSwift = 0x001e, ///< Swift.
459 eLanguageTypeJulia = 0x001f, ///< Julia.
460 eLanguageTypeDylan = 0x0020, ///< Dylan.
461 eLanguageTypeC_plus_plus_14 = 0x0021, ///< ISO C++:2014.
462 eLanguageTypeFortran03 = 0x0022, ///< ISO Fortran 2003.
463 eLanguageTypeFortran08 = 0x0023, ///< ISO Fortran 2008.
465 // Note: Language::GetNameForLanguageType
466 // assumes these can be used as indexes into array language_names, and
467 // Language::SetLanguageFromCString and Language::AsCString assume these can
468 // be used as indexes into array g_languages.
469 eLanguageTypeMipsAssembler = 0x0024, ///< Mips_Assembler.
470 eLanguageTypeExtRenderScript = 0x0025, ///< RenderScript.
474 enum InstrumentationRuntimeType {
475 eInstrumentationRuntimeTypeAddressSanitizer = 0x0000,
476 eInstrumentationRuntimeTypeThreadSanitizer = 0x0001,
477 eInstrumentationRuntimeTypeUndefinedBehaviorSanitizer = 0x0002,
478 eInstrumentationRuntimeTypeMainThreadChecker = 0x0003,
479 eInstrumentationRuntimeTypeSwiftRuntimeReporting = 0x0004,
480 eNumInstrumentationRuntimeTypes
483 enum DynamicValueType {
484 eNoDynamicValues = 0,
485 eDynamicCanRunTarget = 1,
486 eDynamicDontRunTarget = 2
489 enum StopShowColumn {
490 eStopShowColumnAnsiOrCaret = 0,
491 eStopShowColumnAnsi = 1,
492 eStopShowColumnCaret = 2,
493 eStopShowColumnNone = 3
504 enum CommandArgumentType {
506 eArgTypeAddressOrExpression,
508 eArgTypeAliasOptions,
509 eArgTypeArchitecture,
511 eArgTypeBreakpointID,
512 eArgTypeBreakpointIDRange,
513 eArgTypeBreakpointName,
518 eArgTypeDescriptionVerbosity,
519 eArgTypeDirectoryName,
520 eArgTypeDisassemblyFlavor,
523 eArgTypeExpressionPath,
529 eArgTypeFunctionName,
530 eArgTypeFunctionOrSymbol,
540 eArgTypeNewPathPrefix,
542 eArgTypeNumberPerLine,
544 eArgTypeOldPathPrefix,
547 eArgTypePermissionsNumber,
548 eArgTypePermissionsString,
553 eArgTypePythonFunction,
554 eArgTypePythonScript,
556 eArgTypeRegisterName,
557 eArgTypeRegularExpression,
560 eArgTypeScriptedCommandSynchronicity,
564 eArgTypeSettingIndex,
566 eArgTypeSettingPrefix,
567 eArgTypeSettingVariableName,
571 eArgTypeStartAddress,
572 eArgTypeSummaryString,
578 eArgTypeUnsignedInteger,
585 eArgTypeWatchpointID,
586 eArgTypeWatchpointIDRange,
590 eArgTypeLastArg // Always keep this entry as the last entry in this
595 // Symbol holds the SymbolType in a 6-bit field (m_type), so if you get over 63
596 // entries you will have to resize that field.
599 eSymbolTypeInvalid = 0,
604 eSymbolTypeTrampoline,
606 eSymbolTypeException,
607 eSymbolTypeSourceFile,
608 eSymbolTypeHeaderFile,
609 eSymbolTypeObjectFile,
610 eSymbolTypeCommonBlock,
615 eSymbolTypeVariableType,
616 eSymbolTypeLineEntry,
617 eSymbolTypeLineHeader,
618 eSymbolTypeScopeBegin,
620 eSymbolTypeAdditional, // When symbols take more than one entry, the extra
621 // entries get this type
623 eSymbolTypeInstrumentation,
624 eSymbolTypeUndefined,
625 eSymbolTypeObjCClass,
626 eSymbolTypeObjCMetaClass,
628 eSymbolTypeReExported
634 eSectionTypeContainer, // The section contains child sections
636 eSectionTypeDataCString, // Inlined C string data
637 eSectionTypeDataCStringPointers, // Pointers to C string data
638 eSectionTypeDataSymbolAddress, // Address of a symbol in the symbol table
642 eSectionTypeDataPointers,
644 eSectionTypeZeroFill,
645 eSectionTypeDataObjCMessageRefs, // Pointer to function pointer + selector
646 eSectionTypeDataObjCCFStrings, // Objective-C const CFString/NSString objects
647 eSectionTypeDWARFDebugAbbrev,
648 eSectionTypeDWARFDebugAddr,
649 eSectionTypeDWARFDebugAranges,
650 eSectionTypeDWARFDebugCuIndex,
651 eSectionTypeDWARFDebugFrame,
652 eSectionTypeDWARFDebugInfo,
653 eSectionTypeDWARFDebugLine,
654 eSectionTypeDWARFDebugLoc,
655 eSectionTypeDWARFDebugMacInfo,
656 eSectionTypeDWARFDebugMacro,
657 eSectionTypeDWARFDebugPubNames,
658 eSectionTypeDWARFDebugPubTypes,
659 eSectionTypeDWARFDebugRanges,
660 eSectionTypeDWARFDebugStr,
661 eSectionTypeDWARFDebugStrOffsets,
662 eSectionTypeDWARFAppleNames,
663 eSectionTypeDWARFAppleTypes,
664 eSectionTypeDWARFAppleNamespaces,
665 eSectionTypeDWARFAppleObjC,
666 eSectionTypeELFSymbolTable, // Elf SHT_SYMTAB section
667 eSectionTypeELFDynamicSymbols, // Elf SHT_DYNSYM section
668 eSectionTypeELFRelocationEntries, // Elf SHT_REL or SHT_REL section
669 eSectionTypeELFDynamicLinkInfo, // Elf SHT_DYNAMIC section
671 eSectionTypeARMexidx,
672 eSectionTypeARMextab,
673 eSectionTypeCompactUnwind, // compact unwind section in Mach-O,
674 // __TEXT,__unwind_info
675 eSectionTypeGoSymtab,
676 eSectionTypeAbsoluteAddress, // Dummy section for symbols with absolute
678 eSectionTypeDWARFGNUDebugAltLink,
679 eSectionTypeDWARFDebugTypes, // DWARF .debug_types section
680 eSectionTypeDWARFDebugNames, // DWARF v5 .debug_names
682 eSectionTypeDWARFDebugLineStr, // DWARF v5 .debug_line_str
683 eSectionTypeDWARFDebugRngLists, // DWARF v5 .debug_rnglists
684 eSectionTypeDWARFDebugLocLists, // DWARF v5 .debug_loclists
685 eSectionTypeDWARFDebugAbbrevDwo,
686 eSectionTypeDWARFDebugInfoDwo,
687 eSectionTypeDWARFDebugStrDwo,
688 eSectionTypeDWARFDebugStrOffsetsDwo,
689 eSectionTypeDWARFDebugTypesDwo,
692 FLAGS_ENUM(EmulateInstructionOptions){
693 eEmulateInstructionOptionNone = (0u),
694 eEmulateInstructionOptionAutoAdvancePC = (1u << 0),
695 eEmulateInstructionOptionIgnoreConditions = (1u << 1)};
697 FLAGS_ENUM(FunctionNameType){
698 eFunctionNameTypeNone = 0u,
699 eFunctionNameTypeAuto =
700 (1u << 1), // Automatically figure out which FunctionNameType
701 // bits to set based on the function name.
702 eFunctionNameTypeFull = (1u << 2), // The function name.
703 // For C this is the same as just the name of the function For C++ this is
704 // the mangled or demangled version of the mangled name. For ObjC this is
705 // the full function signature with the + or - and the square brackets and
706 // the class and selector
707 eFunctionNameTypeBase = (1u << 3), // The function name only, no namespaces
708 // or arguments and no class
709 // methods or selectors will be searched.
710 eFunctionNameTypeMethod = (1u << 4), // Find function by method name (C++)
711 // with no namespace or arguments
712 eFunctionNameTypeSelector =
713 (1u << 5), // Find function by selector name (ObjC) names
714 eFunctionNameTypeAny =
715 eFunctionNameTypeAuto // DEPRECATED: use eFunctionNameTypeAuto
717 LLDB_MARK_AS_BITMASK_ENUM(FunctionNameType)
719 // Basic types enumeration for the public API SBType::GetBasicType()
721 eBasicTypeInvalid = 0,
724 eBasicTypeSignedChar,
725 eBasicTypeUnsignedChar,
727 eBasicTypeSignedWChar,
728 eBasicTypeUnsignedWChar,
732 eBasicTypeUnsignedShort,
734 eBasicTypeUnsignedInt,
736 eBasicTypeUnsignedLong,
738 eBasicTypeUnsignedLongLong,
740 eBasicTypeUnsignedInt128,
745 eBasicTypeLongDouble,
746 eBasicTypeFloatComplex,
747 eBasicTypeDoubleComplex,
748 eBasicTypeLongDoubleComplex,
759 // Hardware Trace generated by the processor.
760 eTraceTypeProcessorTrace
763 enum StructuredDataType {
764 eStructuredDataTypeInvalid = -1,
765 eStructuredDataTypeNull = 0,
766 eStructuredDataTypeGeneric,
767 eStructuredDataTypeArray,
768 eStructuredDataTypeInteger,
769 eStructuredDataTypeFloat,
770 eStructuredDataTypeBoolean,
771 eStructuredDataTypeString,
772 eStructuredDataTypeDictionary
775 FLAGS_ENUM(TypeClass){
776 eTypeClassInvalid = (0u), eTypeClassArray = (1u << 0),
777 eTypeClassBlockPointer = (1u << 1), eTypeClassBuiltin = (1u << 2),
778 eTypeClassClass = (1u << 3), eTypeClassComplexFloat = (1u << 4),
779 eTypeClassComplexInteger = (1u << 5), eTypeClassEnumeration = (1u << 6),
780 eTypeClassFunction = (1u << 7), eTypeClassMemberPointer = (1u << 8),
781 eTypeClassObjCObject = (1u << 9), eTypeClassObjCInterface = (1u << 10),
782 eTypeClassObjCObjectPointer = (1u << 11), eTypeClassPointer = (1u << 12),
783 eTypeClassReference = (1u << 13), eTypeClassStruct = (1u << 14),
784 eTypeClassTypedef = (1u << 15), eTypeClassUnion = (1u << 16),
785 eTypeClassVector = (1u << 17),
786 // Define the last type class as the MSBit of a 32 bit value
787 eTypeClassOther = (1u << 31),
788 // Define a mask that can be used for any type when finding types
789 eTypeClassAny = (0xffffffffu)};
790 LLDB_MARK_AS_BITMASK_ENUM(TypeClass)
792 enum TemplateArgumentKind {
793 eTemplateArgumentKindNull = 0,
794 eTemplateArgumentKindType,
795 eTemplateArgumentKindDeclaration,
796 eTemplateArgumentKindIntegral,
797 eTemplateArgumentKindTemplate,
798 eTemplateArgumentKindTemplateExpansion,
799 eTemplateArgumentKindExpression,
800 eTemplateArgumentKindPack,
801 eTemplateArgumentKindNullPtr,
804 // Options that can be set for a formatter to alter its behavior Not all of
805 // these are applicable to all formatter types
806 FLAGS_ENUM(TypeOptions){eTypeOptionNone = (0u),
807 eTypeOptionCascade = (1u << 0),
808 eTypeOptionSkipPointers = (1u << 1),
809 eTypeOptionSkipReferences = (1u << 2),
810 eTypeOptionHideChildren = (1u << 3),
811 eTypeOptionHideValue = (1u << 4),
812 eTypeOptionShowOneLiner = (1u << 5),
813 eTypeOptionHideNames = (1u << 6),
814 eTypeOptionNonCacheable = (1u << 7),
815 eTypeOptionHideEmptyAggregates = (1u << 8),
816 eTypeOptionFrontEndWantsDereference = (1u << 9)
819 // This is the return value for frame comparisons. If you are comparing frame
820 // A to frame B the following cases arise: 1) When frame A pushes frame B (or a
821 // frame that ends up pushing B) A is Older than B. 2) When frame A pushed
822 // frame B (or if frame A is on the stack but B is not) A is Younger than B 3)
823 // When frame A and frame B have the same StackID, they are Equal. 4) When
824 // frame A and frame B have the same immediate parent frame, but are not equal,
825 // the comparison yields
827 // 5) If the two frames are on different threads or processes the comparison is
828 // Invalid 6) If for some reason we can't figure out what went on, we return
830 enum FrameComparison {
831 eFrameCompareInvalid,
832 eFrameCompareUnknown,
834 eFrameCompareSameParent,
835 eFrameCompareYounger,
841 // Designed to mimic the unix file permission bits so they can be used with
842 // functions that set 'mode_t' to certain values for permissions.
843 FLAGS_ENUM(FilePermissions){
844 eFilePermissionsUserRead = (1u << 8), eFilePermissionsUserWrite = (1u << 7),
845 eFilePermissionsUserExecute = (1u << 6),
846 eFilePermissionsGroupRead = (1u << 5),
847 eFilePermissionsGroupWrite = (1u << 4),
848 eFilePermissionsGroupExecute = (1u << 3),
849 eFilePermissionsWorldRead = (1u << 2),
850 eFilePermissionsWorldWrite = (1u << 1),
851 eFilePermissionsWorldExecute = (1u << 0),
853 eFilePermissionsUserRW = (eFilePermissionsUserRead |
854 eFilePermissionsUserWrite | 0),
855 eFileFilePermissionsUserRX = (eFilePermissionsUserRead | 0 |
856 eFilePermissionsUserExecute),
857 eFilePermissionsUserRWX = (eFilePermissionsUserRead |
858 eFilePermissionsUserWrite |
859 eFilePermissionsUserExecute),
861 eFilePermissionsGroupRW = (eFilePermissionsGroupRead |
862 eFilePermissionsGroupWrite | 0),
863 eFilePermissionsGroupRX = (eFilePermissionsGroupRead | 0 |
864 eFilePermissionsGroupExecute),
865 eFilePermissionsGroupRWX = (eFilePermissionsGroupRead |
866 eFilePermissionsGroupWrite |
867 eFilePermissionsGroupExecute),
869 eFilePermissionsWorldRW = (eFilePermissionsWorldRead |
870 eFilePermissionsWorldWrite | 0),
871 eFilePermissionsWorldRX = (eFilePermissionsWorldRead | 0 |
872 eFilePermissionsWorldExecute),
873 eFilePermissionsWorldRWX = (eFilePermissionsWorldRead |
874 eFilePermissionsWorldWrite |
875 eFilePermissionsWorldExecute),
877 eFilePermissionsEveryoneR = (eFilePermissionsUserRead |
878 eFilePermissionsGroupRead |
879 eFilePermissionsWorldRead),
880 eFilePermissionsEveryoneW = (eFilePermissionsUserWrite |
881 eFilePermissionsGroupWrite |
882 eFilePermissionsWorldWrite),
883 eFilePermissionsEveryoneX = (eFilePermissionsUserExecute |
884 eFilePermissionsGroupExecute |
885 eFilePermissionsWorldExecute),
887 eFilePermissionsEveryoneRW = (eFilePermissionsEveryoneR |
888 eFilePermissionsEveryoneW | 0),
889 eFilePermissionsEveryoneRX = (eFilePermissionsEveryoneR | 0 |
890 eFilePermissionsEveryoneX),
891 eFilePermissionsEveryoneRWX = (eFilePermissionsEveryoneR |
892 eFilePermissionsEveryoneW |
893 eFilePermissionsEveryoneX),
894 eFilePermissionsFileDefault = eFilePermissionsUserRW,
895 eFilePermissionsDirectoryDefault = eFilePermissionsUserRWX,
898 // Queue work item types
900 // The different types of work that can be enqueued on a libdispatch aka Grand
901 // Central Dispatch (GCD) queue.
903 eQueueItemKindUnknown = 0,
904 eQueueItemKindFunction,
909 // libdispatch aka Grand Central Dispatch (GCD) queues can be either serial
910 // (executing on one thread) or concurrent (executing on multiple threads).
912 eQueueKindUnknown = 0,
917 // Expression Evaluation Stages
918 // These are the cancellable stages of expression evaluation, passed to the
919 // expression evaluation callback, so that you can interrupt expression
920 // evaluation at the various points in its lifecycle.
921 enum ExpressionEvaluationPhase {
922 eExpressionEvaluationParse = 0,
923 eExpressionEvaluationIRGen,
924 eExpressionEvaluationExecution,
925 eExpressionEvaluationComplete
929 // Indicates what types of events cause the watchpoint to fire. Used by Native
930 // *Protocol-related classes.
931 FLAGS_ENUM(WatchpointKind){eWatchpointKindWrite = (1u << 0),
932 eWatchpointKindRead = (1u << 1)};
935 eGdbSignalBadAccess = 0x91,
936 eGdbSignalBadInstruction = 0x92,
937 eGdbSignalArithmetic = 0x93,
938 eGdbSignalEmulation = 0x94,
939 eGdbSignalSoftware = 0x95,
940 eGdbSignalBreakpoint = 0x96
943 // Used with SBHost::GetPath (lldb::PathType) to find files that are related to
944 // LLDB on the current host machine. Most files are relative to LLDB or are in
947 ePathTypeLLDBShlibDir, // The directory where the lldb.so (unix) or LLDB
948 // mach-o file in LLDB.framework (MacOSX) exists
949 ePathTypeSupportExecutableDir, // Find LLDB support executable directory
950 // (debugserver, etc)
951 ePathTypeHeaderDir, // Find LLDB header file directory
952 ePathTypePythonDir, // Find Python modules (PYTHONPATH) directory
953 ePathTypeLLDBSystemPlugins, // System plug-ins directory
954 ePathTypeLLDBUserPlugins, // User plug-ins directory
955 ePathTypeLLDBTempSystemDir, // The LLDB temp directory for this system that
956 // will be cleaned up on exit
957 ePathTypeGlobalLLDBTempSystemDir, // The LLDB temp directory for this system,
958 // NOT cleaned up on a process exit.
959 ePathTypeClangDir // Find path to Clang builtin headers
962 // Kind of member function
963 // Used by the type system
964 enum MemberFunctionKind {
965 eMemberFunctionKindUnknown = 0, // Not sure what the type of this is
966 eMemberFunctionKindConstructor, // A function used to create instances
967 eMemberFunctionKindDestructor, // A function used to tear down existing
969 eMemberFunctionKindInstanceMethod, // A function that applies to a specific
971 eMemberFunctionKindStaticMethod // A function that applies to a type rather
975 // String matching algorithm used by SBTarget
976 enum MatchType { eMatchTypeNormal, eMatchTypeRegex, eMatchTypeStartsWith };
978 // Bitmask that describes details about a type
979 FLAGS_ENUM(TypeFlags){
980 eTypeHasChildren = (1u << 0), eTypeHasValue = (1u << 1),
981 eTypeIsArray = (1u << 2), eTypeIsBlock = (1u << 3),
982 eTypeIsBuiltIn = (1u << 4), eTypeIsClass = (1u << 5),
983 eTypeIsCPlusPlus = (1u << 6), eTypeIsEnumeration = (1u << 7),
984 eTypeIsFuncPrototype = (1u << 8), eTypeIsMember = (1u << 9),
985 eTypeIsObjC = (1u << 10), eTypeIsPointer = (1u << 11),
986 eTypeIsReference = (1u << 12), eTypeIsStructUnion = (1u << 13),
987 eTypeIsTemplate = (1u << 14), eTypeIsTypedef = (1u << 15),
988 eTypeIsVector = (1u << 16), eTypeIsScalar = (1u << 17),
989 eTypeIsInteger = (1u << 18), eTypeIsFloat = (1u << 19),
990 eTypeIsComplex = (1u << 20), eTypeIsSigned = (1u << 21),
991 eTypeInstanceIsPointer = (1u << 22)};
993 FLAGS_ENUM(CommandFlags){
994 // eCommandRequiresTarget
996 // Ensures a valid target is contained in m_exe_ctx prior to executing the
997 // command. If a target doesn't exist or is invalid, the command will fail
998 // and CommandObject::GetInvalidTargetDescription() will be returned as the
999 // error. CommandObject subclasses can override the virtual function for
1000 // GetInvalidTargetDescription() to provide custom strings when needed.
1001 eCommandRequiresTarget = (1u << 0),
1002 // eCommandRequiresProcess
1004 // Ensures a valid process is contained in m_exe_ctx prior to executing the
1005 // command. If a process doesn't exist or is invalid, the command will fail
1006 // and CommandObject::GetInvalidProcessDescription() will be returned as
1007 // the error. CommandObject subclasses can override the virtual function
1008 // for GetInvalidProcessDescription() to provide custom strings when
1010 eCommandRequiresProcess = (1u << 1),
1011 // eCommandRequiresThread
1013 // Ensures a valid thread is contained in m_exe_ctx prior to executing the
1014 // command. If a thread doesn't exist or is invalid, the command will fail
1015 // and CommandObject::GetInvalidThreadDescription() will be returned as the
1016 // error. CommandObject subclasses can override the virtual function for
1017 // GetInvalidThreadDescription() to provide custom strings when needed.
1018 eCommandRequiresThread = (1u << 2),
1019 // eCommandRequiresFrame
1021 // Ensures a valid frame is contained in m_exe_ctx prior to executing the
1022 // command. If a frame doesn't exist or is invalid, the command will fail
1023 // and CommandObject::GetInvalidFrameDescription() will be returned as the
1024 // error. CommandObject subclasses can override the virtual function for
1025 // GetInvalidFrameDescription() to provide custom strings when needed.
1026 eCommandRequiresFrame = (1u << 3),
1027 // eCommandRequiresRegContext
1029 // Ensures a valid register context (from the selected frame if there is a
1030 // frame in m_exe_ctx, or from the selected thread from m_exe_ctx) is
1031 // available from m_exe_ctx prior to executing the command. If a target
1032 // doesn't exist or is invalid, the command will fail and
1033 // CommandObject::GetInvalidRegContextDescription() will be returned as the
1034 // error. CommandObject subclasses can override the virtual function for
1035 // GetInvalidRegContextDescription() to provide custom strings when needed.
1036 eCommandRequiresRegContext = (1u << 4),
1037 // eCommandTryTargetAPILock
1039 // Attempts to acquire the target lock if a target is selected in the
1040 // command interpreter. If the command object fails to acquire the API
1041 // lock, the command will fail with an appropriate error message.
1042 eCommandTryTargetAPILock = (1u << 5),
1043 // eCommandProcessMustBeLaunched
1045 // Verifies that there is a launched process in m_exe_ctx, if there isn't,
1046 // the command will fail with an appropriate error message.
1047 eCommandProcessMustBeLaunched = (1u << 6),
1048 // eCommandProcessMustBePaused
1050 // Verifies that there is a paused process in m_exe_ctx, if there isn't,
1051 // the command will fail with an appropriate error message.
1052 eCommandProcessMustBePaused = (1u << 7)};
1054 // Whether a summary should cap how much data it returns to users or not
1055 enum TypeSummaryCapping {
1056 eTypeSummaryCapped = true,
1057 eTypeSummaryUncapped = false
1061 #endif // LLDB_lldb_enumerations_h_