1 //===-- lldb-enumerations.h -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLDB_lldb_enumerations_h_
11 #define LLDB_lldb_enumerations_h_
14 // With MSVC, the default type of an enum is always signed, even if one of the
15 // enumerator values is too large to fit into a signed integer but would
16 // otherwise fit into an unsigned integer. As a result of this, all of LLDB's
17 // flag-style enumerations that specify something like eValueFoo = 1u << 31
18 // result in negative values. This usually just results in a benign warning,
19 // but in a few places we actually do comparisons on the enum values, which
20 // would cause a real bug. Furthermore, there's no way to silence only this
21 // warning, as it's part of -Wmicrosoft which also catches a whole slew of
22 // other useful issues.
24 // To make matters worse, early versions of SWIG don't recognize the syntax of
25 // specifying the underlying type of an enum (and Python doesn't care anyway)
26 // so we need a way to specify the underlying type when the enum is being used
27 // from C++ code, but just use a regular enum when swig is pre-processing.
28 #define FLAGS_ENUM(Name) enum Name : unsigned
29 #define FLAGS_ANONYMOUS_ENUM() enum : unsigned
31 #define FLAGS_ENUM(Name) enum Name
32 #define FLAGS_ANONYMOUS_ENUM() enum
37 //----------------------------------------------------------------------
38 // Process and Thread States
39 //----------------------------------------------------------------------
42 eStateUnloaded, ///< Process is object is valid, but not currently loaded
43 eStateConnected, ///< Process is connected to remote debug services, but not
44 ///launched or attached to anything yet
45 eStateAttaching, ///< Process is currently trying to attach
46 eStateLaunching, ///< Process is in the process of launching
47 // The state changes eStateAttaching and eStateLaunching are both sent while the
48 // private state thread is either not yet started or paused. For that reason, they
49 // should only be signaled as public state changes, and not private state changes.
50 eStateStopped, ///< Process or thread is stopped and can be examined.
51 eStateRunning, ///< Process or thread is running and can't be examined.
52 eStateStepping, ///< Process or thread is in the process of stepping and can
54 eStateCrashed, ///< Process or thread has crashed and can be examined.
55 eStateDetached, ///< Process has been detached and can't be examined.
56 eStateExited, ///< Process has exited and can't be examined.
57 eStateSuspended ///< Process or thread is in a suspended state as far
58 ///< as the debugger is concerned while other processes
59 ///< or threads get the chance to run.
62 //----------------------------------------------------------------------
64 //----------------------------------------------------------------------
65 FLAGS_ENUM(LaunchFlags){
67 eLaunchFlagExec = (1u << 0), ///< Exec when launching and turn the calling
68 ///process into a new process
69 eLaunchFlagDebug = (1u << 1), ///< Stop as soon as the process launches to
70 ///allow the process to be debugged
71 eLaunchFlagStopAtEntry = (1u << 2), ///< Stop at the program entry point
72 ///instead of auto-continuing when
73 ///launching or attaching at entry point
74 eLaunchFlagDisableASLR =
75 (1u << 3), ///< Disable Address Space Layout Randomization
76 eLaunchFlagDisableSTDIO =
77 (1u << 4), ///< Disable stdio for inferior process (e.g. for a GUI app)
78 eLaunchFlagLaunchInTTY =
79 (1u << 5), ///< Launch the process in a new TTY if supported by the host
80 eLaunchFlagLaunchInShell =
81 (1u << 6), ///< Launch the process inside a shell to get shell expansion
82 eLaunchFlagLaunchInSeparateProcessGroup =
83 (1u << 7), ///< Launch the process in a separate process group
84 eLaunchFlagDontSetExitStatus = (1u << 8), ///< If you are going to hand the
85 ///process off (e.g. to
87 ///< set this flag so lldb & the handee don't race to set its exit status.
88 eLaunchFlagDetachOnError = (1u << 9), ///< If set, then the client stub
89 ///should detach rather than killing
91 ///< if it loses connection with lldb.
92 eLaunchFlagShellExpandArguments =
93 (1u << 10), ///< Perform shell-style argument expansion
94 eLaunchFlagCloseTTYOnExit = (1u << 11), ///< Close the open TTY on exit
97 //----------------------------------------------------------------------
99 //----------------------------------------------------------------------
100 enum RunMode { eOnlyThisThread, eAllThreads, eOnlyDuringStepping };
102 //----------------------------------------------------------------------
103 // Byte ordering definitions
104 //----------------------------------------------------------------------
106 eByteOrderInvalid = 0,
112 //----------------------------------------------------------------------
113 // Register encoding definitions
114 //----------------------------------------------------------------------
116 eEncodingInvalid = 0,
117 eEncodingUint, // unsigned integer
118 eEncodingSint, // signed integer
119 eEncodingIEEE754, // float
120 eEncodingVector // vector registers
123 //----------------------------------------------------------------------
124 // Display format definitions
125 //----------------------------------------------------------------------
132 eFormatBytesWithASCII,
134 eFormatCharPrintable, // Only printable characters, space if not printable
135 eFormatComplex, // Floating point complex type
136 eFormatComplexFloat = eFormatComplex,
137 eFormatCString, // NULL terminated C strings
144 eFormatOSType, // OS character codes encoded into an integer 'PICT' 'text'
151 eFormatVectorOfSInt8,
152 eFormatVectorOfUInt8,
153 eFormatVectorOfSInt16,
154 eFormatVectorOfUInt16,
155 eFormatVectorOfSInt32,
156 eFormatVectorOfUInt32,
157 eFormatVectorOfSInt64,
158 eFormatVectorOfUInt64,
159 eFormatVectorOfFloat16,
160 eFormatVectorOfFloat32,
161 eFormatVectorOfFloat64,
162 eFormatVectorOfUInt128,
163 eFormatComplexInteger, // Integer complex type
164 eFormatCharArray, // Print characters with no single quotes, used for
165 // character arrays that can contain non printable
167 eFormatAddressInfo, // Describe what an address points to (func + offset with
168 // file/line, symbol + offset, data, etc)
169 eFormatHexFloat, // ISO C99 hex float string
170 eFormatInstruction, // Disassemble an opcode
171 eFormatVoid, // Do not print this
175 //----------------------------------------------------------------------
176 // Description levels for "void GetDescription(Stream *, DescriptionLevel)"
178 //----------------------------------------------------------------------
179 enum DescriptionLevel {
180 eDescriptionLevelBrief = 0,
181 eDescriptionLevelFull,
182 eDescriptionLevelVerbose,
183 eDescriptionLevelInitial,
184 kNumDescriptionLevels
187 //----------------------------------------------------------------------
188 // Script interpreter types
189 //----------------------------------------------------------------------
190 enum ScriptLanguage {
192 eScriptLanguagePython,
193 eScriptLanguageDefault = eScriptLanguagePython,
194 eScriptLanguageUnknown
197 //----------------------------------------------------------------------
198 // Register numbering types
199 // See RegisterContext::ConvertRegisterKindToRegisterNumber to convert any of
200 // these to the lldb internal register numbering scheme (eRegisterKindLLDB).
201 //----------------------------------------------------------------------
203 eRegisterKindEHFrame = 0, // the register numbers seen in eh_frame
204 eRegisterKindDWARF, // the register numbers seen DWARF
205 eRegisterKindGeneric, // insn ptr reg, stack ptr reg, etc not specific to any
207 eRegisterKindProcessPlugin, // num used by the process plugin - e.g. by the
208 // remote gdb-protocol stub program
209 eRegisterKindLLDB, // lldb's internal register numbers
213 //----------------------------------------------------------------------
214 // Thread stop reasons
215 //----------------------------------------------------------------------
217 eStopReasonInvalid = 0,
220 eStopReasonBreakpoint,
221 eStopReasonWatchpoint,
223 eStopReasonException,
224 eStopReasonExec, // Program was re-exec'ed
225 eStopReasonPlanComplete,
226 eStopReasonThreadExiting,
227 eStopReasonInstrumentation
230 //----------------------------------------------------------------------
231 // Command Return Status Types
232 //----------------------------------------------------------------------
234 eReturnStatusInvalid,
235 eReturnStatusSuccessFinishNoResult,
236 eReturnStatusSuccessFinishResult,
237 eReturnStatusSuccessContinuingNoResult,
238 eReturnStatusSuccessContinuingResult,
239 eReturnStatusStarted,
244 //----------------------------------------------------------------------
245 // The results of expression evaluation:
246 //----------------------------------------------------------------------
247 enum ExpressionResults {
248 eExpressionCompleted = 0,
249 eExpressionSetupError,
250 eExpressionParseError,
251 eExpressionDiscarded,
252 eExpressionInterrupted,
253 eExpressionHitBreakpoint,
255 eExpressionResultUnavailable,
256 eExpressionStoppedForDebug
259 //----------------------------------------------------------------------
260 // Connection Status Types
261 //----------------------------------------------------------------------
262 enum ConnectionStatus {
263 eConnectionStatusSuccess, // Success
264 eConnectionStatusEndOfFile, // End-of-file encountered
265 eConnectionStatusError, // Check GetError() for details
266 eConnectionStatusTimedOut, // Request timed out
267 eConnectionStatusNoConnection, // No connection
268 eConnectionStatusLostConnection, // Lost connection while connected to a valid
270 eConnectionStatusInterrupted // Interrupted read
275 eErrorTypeGeneric, ///< Generic errors that can be any value.
276 eErrorTypeMachKernel, ///< Mach kernel error codes.
277 eErrorTypePOSIX, ///< POSIX error codes.
278 eErrorTypeExpression, ///< These are from the ExpressionResults enum.
279 eErrorTypeWin32 ///< Standard Win32 error codes.
283 eValueTypeInvalid = 0,
284 eValueTypeVariableGlobal = 1, // globals variable
285 eValueTypeVariableStatic = 2, // static variable
286 eValueTypeVariableArgument = 3, // function argument variables
287 eValueTypeVariableLocal = 4, // function local variables
288 eValueTypeRegister = 5, // stack frame register value
289 eValueTypeRegisterSet = 6, // A collection of stack frame register values
290 eValueTypeConstResult = 7, // constant result variables
291 eValueTypeVariableThreadLocal = 8 // thread local storage variable
294 //----------------------------------------------------------------------
295 // Token size/granularities for Input Readers
296 //----------------------------------------------------------------------
298 enum InputReaderGranularity {
299 eInputReaderGranularityInvalid = 0,
300 eInputReaderGranularityByte,
301 eInputReaderGranularityWord,
302 eInputReaderGranularityLine,
303 eInputReaderGranularityAll
306 //------------------------------------------------------------------
307 /// These mask bits allow a common interface for queries that can
308 /// limit the amount of information that gets parsed to only the
309 /// information that is requested. These bits also can indicate what
310 /// actually did get resolved during query function calls.
312 /// Each definition corresponds to a one of the member variables
313 /// in this class, and requests that that item be resolved, or
314 /// indicates that the member did get resolved.
315 //------------------------------------------------------------------
316 FLAGS_ENUM(SymbolContextItem){
317 eSymbolContextTarget = (1u << 0), ///< Set when \a target is requested from
318 ///a query, or was located in query
320 eSymbolContextModule = (1u << 1), ///< Set when \a module is requested from
321 ///a query, or was located in query
323 eSymbolContextCompUnit = (1u << 2), ///< Set when \a comp_unit is requested
324 ///from a query, or was located in query
326 eSymbolContextFunction = (1u << 3), ///< Set when \a function is requested
327 ///from a query, or was located in query
329 eSymbolContextBlock = (1u << 4), ///< Set when the deepest \a block is
330 ///requested from a query, or was located
332 eSymbolContextLineEntry = (1u << 5), ///< Set when \a line_entry is
333 ///requested from a query, or was
334 ///located in query results
335 eSymbolContextSymbol = (1u << 6), ///< Set when \a symbol is requested from
336 ///a query, or was located in query
338 eSymbolContextEverything = ((eSymbolContextSymbol << 1) -
339 1u), ///< Indicates to try and lookup everything
340 ///up during a routine symbol context
342 eSymbolContextVariable = (1u << 7) ///< Set when \a global or static
343 ///variable is requested from a query, or
344 ///was located in query results.
345 ///< eSymbolContextVariable is potentially expensive to lookup so it isn't
347 ///< eSymbolContextEverything which stops it from being used during frame PC
349 ///< many other potential address to symbol context lookups.
352 FLAGS_ENUM(Permissions){ePermissionsWritable = (1u << 0),
353 ePermissionsReadable = (1u << 1),
354 ePermissionsExecutable = (1u << 2)};
356 enum InputReaderAction {
357 eInputReaderActivate, // reader is newly pushed onto the reader stack
358 eInputReaderAsynchronousOutputWritten, // an async output event occurred; the
359 // reader may want to do something
360 eInputReaderReactivate, // reader is on top of the stack again after another
361 // reader was popped off
362 eInputReaderDeactivate, // another reader was pushed on the stack
363 eInputReaderGotToken, // reader got one of its tokens (granularity)
364 eInputReaderInterrupt, // reader received an interrupt signal (probably from a
366 eInputReaderEndOfFile, // reader received an EOF char (probably from a
368 eInputReaderDone // reader was just popped off the stack and is done
371 FLAGS_ENUM(BreakpointEventType){
372 eBreakpointEventTypeInvalidType = (1u << 0),
373 eBreakpointEventTypeAdded = (1u << 1),
374 eBreakpointEventTypeRemoved = (1u << 2),
375 eBreakpointEventTypeLocationsAdded = (1u << 3), // Locations added doesn't
377 // breakpoint is created
378 eBreakpointEventTypeLocationsRemoved = (1u << 4),
379 eBreakpointEventTypeLocationsResolved = (1u << 5),
380 eBreakpointEventTypeEnabled = (1u << 6),
381 eBreakpointEventTypeDisabled = (1u << 7),
382 eBreakpointEventTypeCommandChanged = (1u << 8),
383 eBreakpointEventTypeConditionChanged = (1u << 9),
384 eBreakpointEventTypeIgnoreChanged = (1u << 10),
385 eBreakpointEventTypeThreadChanged = (1u << 11),
386 eBreakpointEventTypeAutoContinueChanged = (1u << 12)};
388 FLAGS_ENUM(WatchpointEventType){
389 eWatchpointEventTypeInvalidType = (1u << 0),
390 eWatchpointEventTypeAdded = (1u << 1),
391 eWatchpointEventTypeRemoved = (1u << 2),
392 eWatchpointEventTypeEnabled = (1u << 6),
393 eWatchpointEventTypeDisabled = (1u << 7),
394 eWatchpointEventTypeCommandChanged = (1u << 8),
395 eWatchpointEventTypeConditionChanged = (1u << 9),
396 eWatchpointEventTypeIgnoreChanged = (1u << 10),
397 eWatchpointEventTypeThreadChanged = (1u << 11),
398 eWatchpointEventTypeTypeChanged = (1u << 12)};
400 //----------------------------------------------------------------------
401 /// Programming language type.
403 /// These enumerations use the same language enumerations as the DWARF
404 /// specification for ease of use and consistency.
405 /// The enum -> string code is in Language.cpp, don't change this
406 /// table without updating that code as well.
407 //----------------------------------------------------------------------
409 eLanguageTypeUnknown = 0x0000, ///< Unknown or invalid language value.
410 eLanguageTypeC89 = 0x0001, ///< ISO C:1989.
411 eLanguageTypeC = 0x0002, ///< Non-standardized C, such as K&R.
412 eLanguageTypeAda83 = 0x0003, ///< ISO Ada:1983.
413 eLanguageTypeC_plus_plus = 0x0004, ///< ISO C++:1998.
414 eLanguageTypeCobol74 = 0x0005, ///< ISO Cobol:1974.
415 eLanguageTypeCobol85 = 0x0006, ///< ISO Cobol:1985.
416 eLanguageTypeFortran77 = 0x0007, ///< ISO Fortran 77.
417 eLanguageTypeFortran90 = 0x0008, ///< ISO Fortran 90.
418 eLanguageTypePascal83 = 0x0009, ///< ISO Pascal:1983.
419 eLanguageTypeModula2 = 0x000a, ///< ISO Modula-2:1996.
420 eLanguageTypeJava = 0x000b, ///< Java.
421 eLanguageTypeC99 = 0x000c, ///< ISO C:1999.
422 eLanguageTypeAda95 = 0x000d, ///< ISO Ada:1995.
423 eLanguageTypeFortran95 = 0x000e, ///< ISO Fortran 95.
424 eLanguageTypePLI = 0x000f, ///< ANSI PL/I:1976.
425 eLanguageTypeObjC = 0x0010, ///< Objective-C.
426 eLanguageTypeObjC_plus_plus = 0x0011, ///< Objective-C++.
427 eLanguageTypeUPC = 0x0012, ///< Unified Parallel C.
428 eLanguageTypeD = 0x0013, ///< D.
429 eLanguageTypePython = 0x0014, ///< Python.
430 // NOTE: The below are DWARF5 constants, subject to change upon
431 // completion of the DWARF5 specification
432 eLanguageTypeOpenCL = 0x0015, ///< OpenCL.
433 eLanguageTypeGo = 0x0016, ///< Go.
434 eLanguageTypeModula3 = 0x0017, ///< Modula 3.
435 eLanguageTypeHaskell = 0x0018, ///< Haskell.
436 eLanguageTypeC_plus_plus_03 = 0x0019, ///< ISO C++:2003.
437 eLanguageTypeC_plus_plus_11 = 0x001a, ///< ISO C++:2011.
438 eLanguageTypeOCaml = 0x001b, ///< OCaml.
439 eLanguageTypeRust = 0x001c, ///< Rust.
440 eLanguageTypeC11 = 0x001d, ///< ISO C:2011.
441 eLanguageTypeSwift = 0x001e, ///< Swift.
442 eLanguageTypeJulia = 0x001f, ///< Julia.
443 eLanguageTypeDylan = 0x0020, ///< Dylan.
444 eLanguageTypeC_plus_plus_14 = 0x0021, ///< ISO C++:2014.
445 eLanguageTypeFortran03 = 0x0022, ///< ISO Fortran 2003.
446 eLanguageTypeFortran08 = 0x0023, ///< ISO Fortran 2008.
448 // Note: Language::GetNameForLanguageType
449 // assumes these can be used as indexes into array language_names, and
450 // Language::SetLanguageFromCString and Language::AsCString assume these can
451 // be used as indexes into array g_languages.
452 eLanguageTypeMipsAssembler = 0x0024, ///< Mips_Assembler.
453 eLanguageTypeExtRenderScript = 0x0025, ///< RenderScript.
457 enum InstrumentationRuntimeType {
458 eInstrumentationRuntimeTypeAddressSanitizer = 0x0000,
459 eInstrumentationRuntimeTypeThreadSanitizer = 0x0001,
460 eInstrumentationRuntimeTypeUndefinedBehaviorSanitizer = 0x0002,
461 eInstrumentationRuntimeTypeMainThreadChecker = 0x0003,
462 eInstrumentationRuntimeTypeSwiftRuntimeReporting = 0x0004,
463 eNumInstrumentationRuntimeTypes
466 enum DynamicValueType {
467 eNoDynamicValues = 0,
468 eDynamicCanRunTarget = 1,
469 eDynamicDontRunTarget = 2
472 enum StopShowColumn {
473 eStopShowColumnAnsiOrCaret = 0,
474 eStopShowColumnAnsi = 1,
475 eStopShowColumnCaret = 2,
476 eStopShowColumnNone = 3
487 enum CommandArgumentType {
489 eArgTypeAddressOrExpression,
491 eArgTypeAliasOptions,
492 eArgTypeArchitecture,
494 eArgTypeBreakpointID,
495 eArgTypeBreakpointIDRange,
496 eArgTypeBreakpointName,
501 eArgTypeDescriptionVerbosity,
502 eArgTypeDirectoryName,
503 eArgTypeDisassemblyFlavor,
506 eArgTypeExpressionPath,
512 eArgTypeFunctionName,
513 eArgTypeFunctionOrSymbol,
523 eArgTypeNewPathPrefix,
525 eArgTypeNumberPerLine,
527 eArgTypeOldPathPrefix,
530 eArgTypePermissionsNumber,
531 eArgTypePermissionsString,
536 eArgTypePythonFunction,
537 eArgTypePythonScript,
539 eArgTypeRegisterName,
540 eArgTypeRegularExpression,
543 eArgTypeScriptedCommandSynchronicity,
547 eArgTypeSettingIndex,
549 eArgTypeSettingPrefix,
550 eArgTypeSettingVariableName,
554 eArgTypeStartAddress,
555 eArgTypeSummaryString,
561 eArgTypeUnsignedInteger,
568 eArgTypeWatchpointID,
569 eArgTypeWatchpointIDRange,
573 eArgTypeLastArg // Always keep this entry as the last entry in this
577 //----------------------------------------------------------------------
579 //----------------------------------------------------------------------
582 eSymbolTypeInvalid = 0,
587 eSymbolTypeTrampoline,
589 eSymbolTypeException,
590 eSymbolTypeSourceFile,
591 eSymbolTypeHeaderFile,
592 eSymbolTypeObjectFile,
593 eSymbolTypeCommonBlock,
598 eSymbolTypeVariableType,
599 eSymbolTypeLineEntry,
600 eSymbolTypeLineHeader,
601 eSymbolTypeScopeBegin,
603 eSymbolTypeAdditional, // When symbols take more than one entry, the extra
604 // entries get this type
606 eSymbolTypeInstrumentation,
607 eSymbolTypeUndefined,
608 eSymbolTypeObjCClass,
609 eSymbolTypeObjCMetaClass,
611 eSymbolTypeReExported
617 eSectionTypeContainer, // The section contains child sections
619 eSectionTypeDataCString, // Inlined C string data
620 eSectionTypeDataCStringPointers, // Pointers to C string data
621 eSectionTypeDataSymbolAddress, // Address of a symbol in the symbol table
625 eSectionTypeDataPointers,
627 eSectionTypeZeroFill,
628 eSectionTypeDataObjCMessageRefs, // Pointer to function pointer + selector
629 eSectionTypeDataObjCCFStrings, // Objective-C const CFString/NSString objects
630 eSectionTypeDWARFDebugAbbrev,
631 eSectionTypeDWARFDebugAddr,
632 eSectionTypeDWARFDebugAranges,
633 eSectionTypeDWARFDebugCuIndex,
634 eSectionTypeDWARFDebugFrame,
635 eSectionTypeDWARFDebugInfo,
636 eSectionTypeDWARFDebugLine,
637 eSectionTypeDWARFDebugLoc,
638 eSectionTypeDWARFDebugMacInfo,
639 eSectionTypeDWARFDebugMacro,
640 eSectionTypeDWARFDebugPubNames,
641 eSectionTypeDWARFDebugPubTypes,
642 eSectionTypeDWARFDebugRanges,
643 eSectionTypeDWARFDebugStr,
644 eSectionTypeDWARFDebugStrOffsets,
645 eSectionTypeDWARFAppleNames,
646 eSectionTypeDWARFAppleTypes,
647 eSectionTypeDWARFAppleNamespaces,
648 eSectionTypeDWARFAppleObjC,
649 eSectionTypeELFSymbolTable, // Elf SHT_SYMTAB section
650 eSectionTypeELFDynamicSymbols, // Elf SHT_DYNSYM section
651 eSectionTypeELFRelocationEntries, // Elf SHT_REL or SHT_REL section
652 eSectionTypeELFDynamicLinkInfo, // Elf SHT_DYNAMIC section
654 eSectionTypeARMexidx,
655 eSectionTypeARMextab,
656 eSectionTypeCompactUnwind, // compact unwind section in Mach-O,
657 // __TEXT,__unwind_info
658 eSectionTypeGoSymtab,
659 eSectionTypeAbsoluteAddress, // Dummy section for symbols with absolute
661 eSectionTypeDWARFGNUDebugAltLink,
662 eSectionTypeDWARFDebugTypes, // DWARF .debug_types section
663 eSectionTypeDWARFDebugNames, // DWARF v5 .debug_names
667 FLAGS_ENUM(EmulateInstructionOptions){
668 eEmulateInstructionOptionNone = (0u),
669 eEmulateInstructionOptionAutoAdvancePC = (1u << 0),
670 eEmulateInstructionOptionIgnoreConditions = (1u << 1)};
672 FLAGS_ENUM(FunctionNameType){
673 eFunctionNameTypeNone = 0u,
674 eFunctionNameTypeAuto =
675 (1u << 1), // Automatically figure out which FunctionNameType
676 // bits to set based on the function name.
677 eFunctionNameTypeFull = (1u << 2), // The function name.
678 // For C this is the same as just the name of the function For C++ this is
679 // the mangled or demangled version of the mangled name. For ObjC this is
680 // the full function signature with the + or - and the square brackets and
681 // the class and selector
682 eFunctionNameTypeBase = (1u << 3), // The function name only, no namespaces
683 // or arguments and no class
684 // methods or selectors will be searched.
685 eFunctionNameTypeMethod = (1u << 4), // Find function by method name (C++)
686 // with no namespace or arguments
687 eFunctionNameTypeSelector =
688 (1u << 5), // Find function by selector name (ObjC) names
689 eFunctionNameTypeAny =
690 eFunctionNameTypeAuto // DEPRECATED: use eFunctionNameTypeAuto
693 //----------------------------------------------------------------------
694 // Basic types enumeration for the public API SBType::GetBasicType()
695 //----------------------------------------------------------------------
697 eBasicTypeInvalid = 0,
700 eBasicTypeSignedChar,
701 eBasicTypeUnsignedChar,
703 eBasicTypeSignedWChar,
704 eBasicTypeUnsignedWChar,
708 eBasicTypeUnsignedShort,
710 eBasicTypeUnsignedInt,
712 eBasicTypeUnsignedLong,
714 eBasicTypeUnsignedLongLong,
716 eBasicTypeUnsignedInt128,
721 eBasicTypeLongDouble,
722 eBasicTypeFloatComplex,
723 eBasicTypeDoubleComplex,
724 eBasicTypeLongDoubleComplex,
735 // Hardware Trace generated by the processor.
736 eTraceTypeProcessorTrace
739 enum StructuredDataType {
740 eStructuredDataTypeInvalid = -1,
741 eStructuredDataTypeNull = 0,
742 eStructuredDataTypeGeneric,
743 eStructuredDataTypeArray,
744 eStructuredDataTypeInteger,
745 eStructuredDataTypeFloat,
746 eStructuredDataTypeBoolean,
747 eStructuredDataTypeString,
748 eStructuredDataTypeDictionary
751 FLAGS_ENUM(TypeClass){
752 eTypeClassInvalid = (0u), eTypeClassArray = (1u << 0),
753 eTypeClassBlockPointer = (1u << 1), eTypeClassBuiltin = (1u << 2),
754 eTypeClassClass = (1u << 3), eTypeClassComplexFloat = (1u << 4),
755 eTypeClassComplexInteger = (1u << 5), eTypeClassEnumeration = (1u << 6),
756 eTypeClassFunction = (1u << 7), eTypeClassMemberPointer = (1u << 8),
757 eTypeClassObjCObject = (1u << 9), eTypeClassObjCInterface = (1u << 10),
758 eTypeClassObjCObjectPointer = (1u << 11), eTypeClassPointer = (1u << 12),
759 eTypeClassReference = (1u << 13), eTypeClassStruct = (1u << 14),
760 eTypeClassTypedef = (1u << 15), eTypeClassUnion = (1u << 16),
761 eTypeClassVector = (1u << 17),
762 // Define the last type class as the MSBit of a 32 bit value
763 eTypeClassOther = (1u << 31),
764 // Define a mask that can be used for any type when finding types
765 eTypeClassAny = (0xffffffffu)};
767 enum TemplateArgumentKind {
768 eTemplateArgumentKindNull = 0,
769 eTemplateArgumentKindType,
770 eTemplateArgumentKindDeclaration,
771 eTemplateArgumentKindIntegral,
772 eTemplateArgumentKindTemplate,
773 eTemplateArgumentKindTemplateExpansion,
774 eTemplateArgumentKindExpression,
775 eTemplateArgumentKindPack,
776 eTemplateArgumentKindNullPtr,
779 //----------------------------------------------------------------------
780 // Options that can be set for a formatter to alter its behavior Not all of
781 // these are applicable to all formatter types
782 //----------------------------------------------------------------------
783 FLAGS_ENUM(TypeOptions){eTypeOptionNone = (0u),
784 eTypeOptionCascade = (1u << 0),
785 eTypeOptionSkipPointers = (1u << 1),
786 eTypeOptionSkipReferences = (1u << 2),
787 eTypeOptionHideChildren = (1u << 3),
788 eTypeOptionHideValue = (1u << 4),
789 eTypeOptionShowOneLiner = (1u << 5),
790 eTypeOptionHideNames = (1u << 6),
791 eTypeOptionNonCacheable = (1u << 7),
792 eTypeOptionHideEmptyAggregates = (1u << 8),
793 eTypeOptionFrontEndWantsDereference = (1u << 9)
796 //----------------------------------------------------------------------
797 // This is the return value for frame comparisons. If you are comparing frame
798 // A to frame B the following cases arise: 1) When frame A pushes frame B (or a
799 // frame that ends up pushing B) A is Older than B. 2) When frame A pushed
800 // frame B (or if frame A is on the stack but B is not) A is Younger than B 3)
801 // When frame A and frame B have the same StackID, they are Equal. 4) When
802 // frame A and frame B have the same immediate parent frame, but are not equal,
803 // the comparison yields
805 // 5) If the two frames are on different threads or processes the comparison is
806 // Invalid 6) If for some reason we can't figure out what went on, we return
808 //----------------------------------------------------------------------
809 enum FrameComparison {
810 eFrameCompareInvalid,
811 eFrameCompareUnknown,
813 eFrameCompareSameParent,
814 eFrameCompareYounger,
818 //----------------------------------------------------------------------
821 // Designed to mimic the unix file permission bits so they can be used with
822 // functions that set 'mode_t' to certain values for permissions.
823 //----------------------------------------------------------------------
824 FLAGS_ENUM(FilePermissions){
825 eFilePermissionsUserRead = (1u << 8), eFilePermissionsUserWrite = (1u << 7),
826 eFilePermissionsUserExecute = (1u << 6),
827 eFilePermissionsGroupRead = (1u << 5),
828 eFilePermissionsGroupWrite = (1u << 4),
829 eFilePermissionsGroupExecute = (1u << 3),
830 eFilePermissionsWorldRead = (1u << 2),
831 eFilePermissionsWorldWrite = (1u << 1),
832 eFilePermissionsWorldExecute = (1u << 0),
834 eFilePermissionsUserRW = (eFilePermissionsUserRead |
835 eFilePermissionsUserWrite | 0),
836 eFileFilePermissionsUserRX = (eFilePermissionsUserRead | 0 |
837 eFilePermissionsUserExecute),
838 eFilePermissionsUserRWX = (eFilePermissionsUserRead |
839 eFilePermissionsUserWrite |
840 eFilePermissionsUserExecute),
842 eFilePermissionsGroupRW = (eFilePermissionsGroupRead |
843 eFilePermissionsGroupWrite | 0),
844 eFilePermissionsGroupRX = (eFilePermissionsGroupRead | 0 |
845 eFilePermissionsGroupExecute),
846 eFilePermissionsGroupRWX = (eFilePermissionsGroupRead |
847 eFilePermissionsGroupWrite |
848 eFilePermissionsGroupExecute),
850 eFilePermissionsWorldRW = (eFilePermissionsWorldRead |
851 eFilePermissionsWorldWrite | 0),
852 eFilePermissionsWorldRX = (eFilePermissionsWorldRead | 0 |
853 eFilePermissionsWorldExecute),
854 eFilePermissionsWorldRWX = (eFilePermissionsWorldRead |
855 eFilePermissionsWorldWrite |
856 eFilePermissionsWorldExecute),
858 eFilePermissionsEveryoneR = (eFilePermissionsUserRead |
859 eFilePermissionsGroupRead |
860 eFilePermissionsWorldRead),
861 eFilePermissionsEveryoneW = (eFilePermissionsUserWrite |
862 eFilePermissionsGroupWrite |
863 eFilePermissionsWorldWrite),
864 eFilePermissionsEveryoneX = (eFilePermissionsUserExecute |
865 eFilePermissionsGroupExecute |
866 eFilePermissionsWorldExecute),
868 eFilePermissionsEveryoneRW = (eFilePermissionsEveryoneR |
869 eFilePermissionsEveryoneW | 0),
870 eFilePermissionsEveryoneRX = (eFilePermissionsEveryoneR | 0 |
871 eFilePermissionsEveryoneX),
872 eFilePermissionsEveryoneRWX = (eFilePermissionsEveryoneR |
873 eFilePermissionsEveryoneW |
874 eFilePermissionsEveryoneX),
875 eFilePermissionsFileDefault = eFilePermissionsUserRW,
876 eFilePermissionsDirectoryDefault = eFilePermissionsUserRWX,
879 //----------------------------------------------------------------------
880 // Queue work item types
882 // The different types of work that can be enqueued on a libdispatch aka Grand
883 // Central Dispatch (GCD) queue.
884 //----------------------------------------------------------------------
886 eQueueItemKindUnknown = 0,
887 eQueueItemKindFunction,
891 //----------------------------------------------------------------------
893 // libdispatch aka Grand Central Dispatch (GCD) queues can be either serial
894 // (executing on one thread) or concurrent (executing on multiple threads).
895 //----------------------------------------------------------------------
897 eQueueKindUnknown = 0,
902 //----------------------------------------------------------------------
903 // Expression Evaluation Stages
904 // These are the cancellable stages of expression evaluation, passed to the
905 // expression evaluation callback, so that you can interrupt expression
906 // evaluation at the various points in its lifecycle.
907 //----------------------------------------------------------------------
908 enum ExpressionEvaluationPhase {
909 eExpressionEvaluationParse = 0,
910 eExpressionEvaluationIRGen,
911 eExpressionEvaluationExecution,
912 eExpressionEvaluationComplete
915 //----------------------------------------------------------------------
917 // Indicates what types of events cause the watchpoint to fire. Used by Native
918 // *Protocol-related classes.
919 //----------------------------------------------------------------------
920 FLAGS_ENUM(WatchpointKind){eWatchpointKindWrite = (1u << 0),
921 eWatchpointKindRead = (1u << 1)};
924 eGdbSignalBadAccess = 0x91,
925 eGdbSignalBadInstruction = 0x92,
926 eGdbSignalArithmetic = 0x93,
927 eGdbSignalEmulation = 0x94,
928 eGdbSignalSoftware = 0x95,
929 eGdbSignalBreakpoint = 0x96
932 //----------------------------------------------------------------------
933 // Used with SBHost::GetPath (lldb::PathType) to find files that are related to
934 // LLDB on the current host machine. Most files are relative to LLDB or are in
936 //----------------------------------------------------------------------
938 ePathTypeLLDBShlibDir, // The directory where the lldb.so (unix) or LLDB
939 // mach-o file in LLDB.framework (MacOSX) exists
940 ePathTypeSupportExecutableDir, // Find LLDB support executable directory
941 // (debugserver, etc)
942 ePathTypeHeaderDir, // Find LLDB header file directory
943 ePathTypePythonDir, // Find Python modules (PYTHONPATH) directory
944 ePathTypeLLDBSystemPlugins, // System plug-ins directory
945 ePathTypeLLDBUserPlugins, // User plug-ins directory
946 ePathTypeLLDBTempSystemDir, // The LLDB temp directory for this system that
947 // will be cleaned up on exit
948 ePathTypeGlobalLLDBTempSystemDir, // The LLDB temp directory for this system,
949 // NOT cleaned up on a process exit.
950 ePathTypeClangDir // Find path to Clang builtin headers
953 //----------------------------------------------------------------------
954 // Kind of member function
955 // Used by the type system
956 //----------------------------------------------------------------------
957 enum MemberFunctionKind {
958 eMemberFunctionKindUnknown = 0, // Not sure what the type of this is
959 eMemberFunctionKindConstructor, // A function used to create instances
960 eMemberFunctionKindDestructor, // A function used to tear down existing
962 eMemberFunctionKindInstanceMethod, // A function that applies to a specific
964 eMemberFunctionKindStaticMethod // A function that applies to a type rather
968 //----------------------------------------------------------------------
969 // String matching algorithm used by SBTarget
970 //----------------------------------------------------------------------
971 enum MatchType { eMatchTypeNormal, eMatchTypeRegex, eMatchTypeStartsWith };
973 //----------------------------------------------------------------------
974 // Bitmask that describes details about a type
975 //----------------------------------------------------------------------
976 FLAGS_ENUM(TypeFlags){
977 eTypeHasChildren = (1u << 0), eTypeHasValue = (1u << 1),
978 eTypeIsArray = (1u << 2), eTypeIsBlock = (1u << 3),
979 eTypeIsBuiltIn = (1u << 4), eTypeIsClass = (1u << 5),
980 eTypeIsCPlusPlus = (1u << 6), eTypeIsEnumeration = (1u << 7),
981 eTypeIsFuncPrototype = (1u << 8), eTypeIsMember = (1u << 9),
982 eTypeIsObjC = (1u << 10), eTypeIsPointer = (1u << 11),
983 eTypeIsReference = (1u << 12), eTypeIsStructUnion = (1u << 13),
984 eTypeIsTemplate = (1u << 14), eTypeIsTypedef = (1u << 15),
985 eTypeIsVector = (1u << 16), eTypeIsScalar = (1u << 17),
986 eTypeIsInteger = (1u << 18), eTypeIsFloat = (1u << 19),
987 eTypeIsComplex = (1u << 20), eTypeIsSigned = (1u << 21),
988 eTypeInstanceIsPointer = (1u << 22)};
990 FLAGS_ENUM(CommandFlags){
991 //----------------------------------------------------------------------
992 // eCommandRequiresTarget
994 // Ensures a valid target is contained in m_exe_ctx prior to executing the
995 // command. If a target doesn't exist or is invalid, the command will fail
996 // and CommandObject::GetInvalidTargetDescription() will be returned as the
997 // error. CommandObject subclasses can override the virtual function for
998 // GetInvalidTargetDescription() to provide custom strings when needed.
999 //----------------------------------------------------------------------
1000 eCommandRequiresTarget = (1u << 0),
1001 //----------------------------------------------------------------------
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 //----------------------------------------------------------------------
1011 eCommandRequiresProcess = (1u << 1),
1012 //----------------------------------------------------------------------
1013 // eCommandRequiresThread
1015 // Ensures a valid thread is contained in m_exe_ctx prior to executing the
1016 // command. If a thread doesn't exist or is invalid, the command will fail
1017 // and CommandObject::GetInvalidThreadDescription() will be returned as the
1018 // error. CommandObject subclasses can override the virtual function for
1019 // GetInvalidThreadDescription() to provide custom strings when needed.
1020 //----------------------------------------------------------------------
1021 eCommandRequiresThread = (1u << 2),
1022 //----------------------------------------------------------------------
1023 // eCommandRequiresFrame
1025 // Ensures a valid frame is contained in m_exe_ctx prior to executing the
1026 // command. If a frame doesn't exist or is invalid, the command will fail
1027 // and CommandObject::GetInvalidFrameDescription() will be returned as the
1028 // error. CommandObject subclasses can override the virtual function for
1029 // GetInvalidFrameDescription() to provide custom strings when needed.
1030 //----------------------------------------------------------------------
1031 eCommandRequiresFrame = (1u << 3),
1032 //----------------------------------------------------------------------
1033 // eCommandRequiresRegContext
1035 // Ensures a valid register context (from the selected frame if there is a
1036 // frame in m_exe_ctx, or from the selected thread from m_exe_ctx) is
1037 // available from m_exe_ctx prior to executing the command. If a target
1038 // doesn't exist or is invalid, the command will fail and
1039 // CommandObject::GetInvalidRegContextDescription() will be returned as the
1040 // error. CommandObject subclasses can override the virtual function for
1041 // GetInvalidRegContextDescription() to provide custom strings when needed.
1042 //----------------------------------------------------------------------
1043 eCommandRequiresRegContext = (1u << 4),
1044 //----------------------------------------------------------------------
1045 // eCommandTryTargetAPILock
1047 // Attempts to acquire the target lock if a target is selected in the
1048 // command interpreter. If the command object fails to acquire the API
1049 // lock, the command will fail with an appropriate error message.
1050 //----------------------------------------------------------------------
1051 eCommandTryTargetAPILock = (1u << 5),
1052 //----------------------------------------------------------------------
1053 // eCommandProcessMustBeLaunched
1055 // Verifies that there is a launched process in m_exe_ctx, if there isn't,
1056 // the command will fail with an appropriate error message.
1057 //----------------------------------------------------------------------
1058 eCommandProcessMustBeLaunched = (1u << 6),
1059 //----------------------------------------------------------------------
1060 // eCommandProcessMustBePaused
1062 // Verifies that there is a paused process in m_exe_ctx, if there isn't,
1063 // the command will fail with an appropriate error message.
1064 //----------------------------------------------------------------------
1065 eCommandProcessMustBePaused = (1u << 7)};
1067 //----------------------------------------------------------------------
1068 // Whether a summary should cap how much data it returns to users or not
1069 //----------------------------------------------------------------------
1070 enum TypeSummaryCapping {
1071 eTypeSummaryCapped = true,
1072 eTypeSummaryUncapped = false
1077 #endif // LLDB_lldb_enumerations_h_