lldb-enumerations.h revision b7b2532bf23c852ea3e43d10f2377338be5b464f
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- lldb-enumerations.h -------------------------------------*- C++ -*-===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef LLDB_lldb_enumerations_h_
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLDB_lldb_enumerations_h_
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace lldb {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Process and Thread States
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum StateType
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateInvalid = 0,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateUnloaded,     ///< Process is object is valid, but not currently loaded
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateConnected,    ///< Process is connected to remote debug services, but not launched or attached to anything yet
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateAttaching,    ///< Process is currently trying to attach
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateLaunching,    ///< Process is in the process of launching
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateStopped,      ///< Process or thread is stopped and can be examined.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateRunning,      ///< Process or thread is running and can't be examined.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateStepping,     ///< Process or thread is in the process of stepping and can not be examined.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateCrashed,      ///< Process or thread has crashed and can be examined.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateDetached,     ///< Process has been detached and can't be examined.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateExited,       ///< Process has exited and can't be examined.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStateSuspended     ///< Process or thread is in a suspended state as far
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ///< as the debugger is concerned while other processes
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            ///< or threads get the chance to run.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } StateType;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Launch Flags
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum LaunchFlags
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagNone         = 0u,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagExec         = (1u << 0),  ///< Exec when launching and turn the calling process into a new process
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagDebug        = (1u << 1),  ///< Stop as soon as the process launches to allow the process to be debugged
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagStopAtEntry  = (1u << 2),  ///< Stop at the program entry point instead of auto-continuing when launching or attaching at entry point
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagDisableASLR  = (1u << 3),  ///< Disable Address Space Layout Randomization
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagDisableSTDIO = (1u << 4),  ///< Disable stdio for inferior process (e.g. for a GUI app)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagLaunchInTTY  = (1u << 5),  ///< Launch the process in a new TTY if supported by the host
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagLaunchInShell= (1u << 6),   ///< Launch the process inside a shell to get shell expansion
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eLaunchFlagLaunchInSeparateProcessGroup = (1u << 7) ///< Launch the process in a separate process group
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } LaunchFlags;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Thread Run Modes
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum RunMode {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eOnlyThisThread,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eAllThreads,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eOnlyDuringStepping
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } RunMode;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Byte ordering definitions
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum ByteOrder
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eByteOrderInvalid   = 0,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eByteOrderBig       = 1,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eByteOrderPDP       = 2,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eByteOrderLittle    = 4
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } ByteOrder;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Register encoding definitions
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum Encoding
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eEncodingInvalid = 0,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eEncodingUint,               // unsigned integer
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eEncodingSint,               // signed integer
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eEncodingIEEE754,            // float
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eEncodingVector              // vector registers
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } Encoding;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Display format definitions
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum Format
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatDefault = 0,
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatInvalid = 0,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatBoolean,
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatBinary,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatBytes,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatBytesWithASCII,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatChar,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatCharPrintable,   // Only printable characters, space if not printable
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatComplex,         // Floating point complex type
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatComplexFloat = eFormatComplex,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatCString,         // NULL terminated C strings
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatDecimal,
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatEnum,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatHex,
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatFloat,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatOctal,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatOSType,          // OS character codes encoded into an integer 'PICT' 'text' etc...
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatUnicode16,
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatUnicode32,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatUnsigned,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatPointer,
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfChar,
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfSInt8,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfUInt8,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfSInt16,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfUInt16,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfSInt32,
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfUInt32,
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfSInt64,
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfUInt64,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfFloat32,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfFloat64,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatVectorOfUInt128,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatComplexInteger,      // Integer complex type
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatCharArray,           // Print characters with no single quotes, used for character arrays that can contain non printable characters
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatAddressInfo,         // Describe what an address points to (func + offset with file/line, symbol + offset, data, etc)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatHexFloat,            // ISO C99 hex float string
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eFormatInstruction,         // Disassemble an opcode
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        kNumFormats
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } Format;
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum DescriptionLevel
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eDescriptionLevelBrief = 0,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eDescriptionLevelFull,
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eDescriptionLevelVerbose,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        kNumDescriptionLevels
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } DescriptionLevel;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Script interpreter types
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum ScriptLanguage
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eScriptLanguageNone,
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eScriptLanguagePython,
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eScriptLanguageDefault = eScriptLanguagePython
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } ScriptLanguage;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Register numbering types
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum RegisterKind
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eRegisterKindGCC = 0,    // the register numbers seen in eh_frame
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eRegisterKindDWARF,      // the register numbers seen DWARF
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eRegisterKindGeneric,    // insn ptr reg, stack ptr reg, etc not specific to any particular target
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eRegisterKindGDB,        // the register numbers gdb uses (matches stabs numbers?)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eRegisterKindLLDB,       // lldb's internal register numbers
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        kNumRegisterKinds
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } RegisterKind;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Thread stop reasons
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum StopReason
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonInvalid = 0,
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonNone,
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonTrace,
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonBreakpoint,
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonWatchpoint,
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonSignal,
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonException,
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eStopReasonPlanComplete
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } StopReason;
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Command Return Status Types
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum ReturnStatus
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusInvalid,
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusSuccessFinishNoResult,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusSuccessFinishResult,
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusSuccessContinuingNoResult,
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusSuccessContinuingResult,
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusStarted,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusFailed,
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eReturnStatusQuit
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } ReturnStatus;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Connection Status Types
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    //----------------------------------------------------------------------
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum ConnectionStatus
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eConnectionStatusSuccess,         // Success
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eConnectionStatusEndOfFile,       // End-of-file encountered
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eConnectionStatusError,           // Check GetError() for details
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eConnectionStatusTimedOut,        // Request timed out
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eConnectionStatusNoConnection,    // No connection
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eConnectionStatusLostConnection   // Lost connection while connected to a valid connection
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } ConnectionStatus;
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum ErrorType
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eErrorTypeInvalid,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eErrorTypeGeneric,      ///< Generic errors that can be any value.
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eErrorTypeMachKernel,   ///< Mach kernel error codes.
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eErrorTypePOSIX         ///< POSIX error codes.
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } ErrorType;
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef enum ValueType
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eValueTypeInvalid           = 0,
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        eValueTypeVariableGlobal    = 1,    // globals variable
221        eValueTypeVariableStatic    = 2,    // static variable
222        eValueTypeVariableArgument  = 3,    // function argument variables
223        eValueTypeVariableLocal     = 4,    // function local variables
224        eValueTypeRegister          = 5,    // stack frame register value
225        eValueTypeRegisterSet       = 6,    // A collection of stack frame register values
226        eValueTypeConstResult       = 7     // constant result variables
227    } ValueType;
228
229    //----------------------------------------------------------------------
230    // Token size/granularities for Input Readers
231    //----------------------------------------------------------------------
232
233    typedef enum InputReaderGranularity
234    {
235        eInputReaderGranularityInvalid = 0,
236        eInputReaderGranularityByte,
237        eInputReaderGranularityWord,
238        eInputReaderGranularityLine,
239        eInputReaderGranularityAll
240    } InputReaderGranularity;
241
242    //------------------------------------------------------------------
243    /// These mask bits allow a common interface for queries that can
244    /// limit the amount of information that gets parsed to only the
245    /// information that is requested. These bits also can indicate what
246    /// actually did get resolved during query function calls.
247    ///
248    /// Each definition corresponds to a one of the member variables
249    /// in this class, and requests that that item be resolved, or
250    /// indicates that the member did get resolved.
251    //------------------------------------------------------------------
252    typedef enum SymbolContextItem
253    {
254        eSymbolContextTarget     = (1u << 0), ///< Set when \a target is requested from a query, or was located in query results
255        eSymbolContextModule     = (1u << 1), ///< Set when \a module is requested from a query, or was located in query results
256        eSymbolContextCompUnit   = (1u << 2), ///< Set when \a comp_unit is requested from a query, or was located in query results
257        eSymbolContextFunction   = (1u << 3), ///< Set when \a function is requested from a query, or was located in query results
258        eSymbolContextBlock      = (1u << 4), ///< Set when the deepest \a block is requested from a query, or was located in query results
259        eSymbolContextLineEntry  = (1u << 5), ///< Set when \a line_entry is requested from a query, or was located in query results
260        eSymbolContextSymbol     = (1u << 6), ///< Set when \a symbol is requested from a query, or was located in query results
261        eSymbolContextEverything = ((eSymbolContextSymbol << 1) - 1u)  ///< Indicates to try and lookup everything up during a query.
262    } SymbolContextItem;
263
264    typedef enum Permissions
265    {
266        ePermissionsWritable    = (1u << 0),
267        ePermissionsReadable    = (1u << 1),
268        ePermissionsExecutable  = (1u << 2)
269    } Permissions;
270
271    typedef enum InputReaderAction
272    {
273        eInputReaderActivate,   // reader is newly pushed onto the reader stack
274        eInputReaderAsynchronousOutputWritten, // an async output event occurred; the reader may want to do something
275        eInputReaderReactivate, // reader is on top of the stack again after another reader was popped off
276        eInputReaderDeactivate, // another reader was pushed on the stack
277        eInputReaderGotToken,   // reader got one of its tokens (granularity)
278        eInputReaderInterrupt,  // reader received an interrupt signal (probably from a control-c)
279        eInputReaderEndOfFile,  // reader received an EOF char (probably from a control-d)
280        eInputReaderDone        // reader was just popped off the stack and is done
281    } InputReaderAction;
282
283    typedef enum BreakpointEventType
284    {
285        eBreakpointEventTypeInvalidType         = (1u << 0),
286        eBreakpointEventTypeAdded               = (1u << 1),
287        eBreakpointEventTypeRemoved             = (1u << 2),
288        eBreakpointEventTypeLocationsAdded      = (1u << 3),  // Locations added doesn't get sent when the breakpoint is created
289        eBreakpointEventTypeLocationsRemoved    = (1u << 4),
290        eBreakpointEventTypeLocationsResolved   = (1u << 5),
291        eBreakpointEventTypeEnabled             = (1u << 6),
292        eBreakpointEventTypeDisabled            = (1u << 7),
293        eBreakpointEventTypeCommandChanged      = (1u << 8),
294        eBreakpointEventTypeConditionChanged    = (1u << 9),
295        eBreakpointEventTypeIgnoreChanged       = (1u << 10),
296        eBreakpointEventTypeThreadChanged       = (1u << 11)
297    } BreakpointEventType;
298
299
300    //----------------------------------------------------------------------
301    /// Programming language type.
302    ///
303    /// These enumerations use the same language enumerations as the DWARF
304    /// specification for ease of use and consistency.
305    /// The enum -> string code is in LanguageRuntime.cpp, don't change this
306    /// table without updating that code as well.
307    //----------------------------------------------------------------------
308    typedef enum LanguageType
309    {
310        eLanguageTypeUnknown         = 0x0000,   ///< Unknown or invalid language value.
311        eLanguageTypeC89             = 0x0001,   ///< ISO C:1989.
312        eLanguageTypeC               = 0x0002,   ///< Non-standardized C, such as K&R.
313        eLanguageTypeAda83           = 0x0003,   ///< ISO Ada:1983.
314        eLanguageTypeC_plus_plus     = 0x0004,   ///< ISO C++:1998.
315        eLanguageTypeCobol74         = 0x0005,   ///< ISO Cobol:1974.
316        eLanguageTypeCobol85         = 0x0006,   ///< ISO Cobol:1985.
317        eLanguageTypeFortran77       = 0x0007,   ///< ISO Fortran 77.
318        eLanguageTypeFortran90       = 0x0008,   ///< ISO Fortran 90.
319        eLanguageTypePascal83        = 0x0009,   ///< ISO Pascal:1983.
320        eLanguageTypeModula2         = 0x000a,   ///< ISO Modula-2:1996.
321        eLanguageTypeJava            = 0x000b,   ///< Java.
322        eLanguageTypeC99             = 0x000c,   ///< ISO C:1999.
323        eLanguageTypeAda95           = 0x000d,   ///< ISO Ada:1995.
324        eLanguageTypeFortran95       = 0x000e,   ///< ISO Fortran 95.
325        eLanguageTypePLI             = 0x000f,   ///< ANSI PL/I:1976.
326        eLanguageTypeObjC            = 0x0010,   ///< Objective-C.
327        eLanguageTypeObjC_plus_plus  = 0x0011,   ///< Objective-C++.
328        eLanguageTypeUPC             = 0x0012,   ///< Unified Parallel C.
329        eLanguageTypeD               = 0x0013,   ///< D.
330        eLanguageTypePython          = 0x0014    ///< Python.
331    } LanguageType;
332
333    typedef enum DynamicValueType
334    {
335        eNoDynamicValues = 0,
336        eDynamicCanRunTarget    = 1,
337        eDynamicDontRunTarget   = 2
338    } DynamicValueType;
339
340    typedef enum AccessType
341    {
342        eAccessNone,
343        eAccessPublic,
344        eAccessPrivate,
345        eAccessProtected,
346        eAccessPackage
347    } AccessType;
348
349    typedef enum CommandArgumentType
350    {
351        eArgTypeAddress = 0,
352        eArgTypeAliasName,
353        eArgTypeAliasOptions,
354        eArgTypeArchitecture,
355        eArgTypeBoolean,
356        eArgTypeBreakpointID,
357        eArgTypeBreakpointIDRange,
358        eArgTypeByteSize,
359        eArgTypeClassName,
360        eArgTypeCommandName,
361        eArgTypeCount,
362        eArgTypeEndAddress,
363        eArgTypeExpression,
364        eArgTypeExpressionPath,
365        eArgTypeExprFormat,
366        eArgTypeFilename,
367        eArgTypeFormat,
368        eArgTypeFrameIndex,
369        eArgTypeFullName,
370        eArgTypeFunctionName,
371        eArgTypeGDBFormat,
372        eArgTypeIndex,
373        eArgTypeLanguage,
374        eArgTypeLineNum,
375        eArgTypeLogCategory,
376        eArgTypeLogChannel,
377        eArgTypeMethod,
378        eArgTypeName,
379        eArgTypeNewPathPrefix,
380        eArgTypeNumLines,
381        eArgTypeNumberPerLine,
382        eArgTypeOffset,
383        eArgTypeOldPathPrefix,
384        eArgTypeOneLiner,
385        eArgTypePath,
386        eArgTypePid,
387        eArgTypePlugin,
388        eArgTypeProcessName,
389        eArgTypePythonClass,
390        eArgTypePythonFunction,
391        eArgTypePythonScript,
392        eArgTypeQueueName,
393        eArgTypeRegisterName,
394        eArgTypeRegularExpression,
395        eArgTypeRunArgs,
396        eArgTypeRunMode,
397        eArgTypeScriptedCommandSynchronicity,
398        eArgTypeScriptLang,
399        eArgTypeSearchWord,
400        eArgTypeSelector,
401        eArgTypeSettingIndex,
402        eArgTypeSettingKey,
403        eArgTypeSettingPrefix,
404        eArgTypeSettingVariableName,
405        eArgTypeShlibName,
406        eArgTypeSourceFile,
407        eArgTypeSortOrder,
408        eArgTypeStartAddress,
409        eArgTypeSummaryString,
410        eArgTypeSymbol,
411        eArgTypeThreadID,
412        eArgTypeThreadIndex,
413        eArgTypeThreadName,
414        eArgTypeUnsignedInteger,
415        eArgTypeUnixSignal,
416        eArgTypeVarName,
417        eArgTypeValue,
418        eArgTypeWidth,
419        eArgTypeNone,
420        eArgTypePlatform,
421        eArgTypeWatchpointID,
422        eArgTypeWatchpointIDRange,
423        eArgTypeWatchType,
424        eArgTypeLastArg  // Always keep this entry as the last entry in this enumeration!!
425    } CommandArgumentType;
426
427    //----------------------------------------------------------------------
428    // Symbol types
429    //----------------------------------------------------------------------
430    typedef enum SymbolType
431    {
432        eSymbolTypeAny = 0,
433        eSymbolTypeInvalid = 0,
434        eSymbolTypeAbsolute,
435        eSymbolTypeCode,
436        eSymbolTypeData,
437        eSymbolTypeTrampoline,
438        eSymbolTypeRuntime,
439        eSymbolTypeException,
440        eSymbolTypeSourceFile,
441        eSymbolTypeHeaderFile,
442        eSymbolTypeObjectFile,
443        eSymbolTypeCommonBlock,
444        eSymbolTypeBlock,
445        eSymbolTypeLocal,
446        eSymbolTypeParam,
447        eSymbolTypeVariable,
448        eSymbolTypeVariableType,
449        eSymbolTypeLineEntry,
450        eSymbolTypeLineHeader,
451        eSymbolTypeScopeBegin,
452        eSymbolTypeScopeEnd,
453        eSymbolTypeAdditional, // When symbols take more than one entry, the extra entries get this type
454        eSymbolTypeCompiler,
455        eSymbolTypeInstrumentation,
456        eSymbolTypeUndefined,
457        eSymbolTypeObjCClass,
458        eSymbolTypeObjCMetaClass,
459        eSymbolTypeObjCIVar
460    } SymbolType;
461
462    typedef enum SectionType
463    {
464        eSectionTypeInvalid,
465        eSectionTypeCode,
466        eSectionTypeContainer,              // The section contains child sections
467        eSectionTypeData,
468        eSectionTypeDataCString,            // Inlined C string data
469        eSectionTypeDataCStringPointers,    // Pointers to C string data
470        eSectionTypeDataSymbolAddress,      // Address of a symbol in the symbol table
471        eSectionTypeData4,
472        eSectionTypeData8,
473        eSectionTypeData16,
474        eSectionTypeDataPointers,
475        eSectionTypeDebug,
476        eSectionTypeZeroFill,
477        eSectionTypeDataObjCMessageRefs,    // Pointer to function pointer + selector
478        eSectionTypeDataObjCCFStrings,      // Objective C const CFString/NSString objects
479        eSectionTypeDWARFDebugAbbrev,
480        eSectionTypeDWARFDebugAranges,
481        eSectionTypeDWARFDebugFrame,
482        eSectionTypeDWARFDebugInfo,
483        eSectionTypeDWARFDebugLine,
484        eSectionTypeDWARFDebugLoc,
485        eSectionTypeDWARFDebugMacInfo,
486        eSectionTypeDWARFDebugPubNames,
487        eSectionTypeDWARFDebugPubTypes,
488        eSectionTypeDWARFDebugRanges,
489        eSectionTypeDWARFDebugStr,
490        eSectionTypeDWARFAppleNames,
491        eSectionTypeDWARFAppleTypes,
492        eSectionTypeDWARFAppleNamespaces,
493        eSectionTypeDWARFAppleObjC,
494        eSectionTypeEHFrame,
495        eSectionTypeOther
496
497    } SectionType;
498
499    typedef enum EmulateInstructionOptions
500    {
501        eEmulateInstructionOptionNone               = (0u),
502        eEmulateInstructionOptionAutoAdvancePC      = (1u << 0),
503        eEmulateInstructionOptionIgnoreConditions   = (1u << 1)
504    } EmulateInstructionOptions;
505
506    typedef enum FunctionNameType
507    {
508        eFunctionNameTypeNone       = 0u,
509        eFunctionNameTypeAuto       = (1u << 1),    // Automatically figure out which FunctionNameType
510                                                    // bits to set based on the function name.
511        eFunctionNameTypeFull       = (1u << 2),    // The function name.
512                                                    // For C this is the same as just the name of the function
513                                                    // For C++ this is the mangled or demangled version of the mangled name.
514                                                    // For ObjC this is the full function signature with the + or
515                                                    // - and the square brackets and the class and selector
516        eFunctionNameTypeBase       = (1u << 3),    // The function name only, no namespaces or arguments and no class
517                                                    // methods or selectors will be searched.
518        eFunctionNameTypeMethod     = (1u << 4),    // Find function by method name (C++) with no namespace or arguments
519        eFunctionNameTypeSelector   = (1u << 5),    // Find function by selector name (ObjC) names
520        eFunctionNameTypeAny        = (eFunctionNameTypeFull     |
521                                       eFunctionNameTypeBase     |
522                                       eFunctionNameTypeMethod   |
523                                       eFunctionNameTypeSelector )
524    } FunctionNameType;
525
526
527    //----------------------------------------------------------------------
528    // Basic types enumeration for the public API SBType::GetBasicType()
529    //----------------------------------------------------------------------
530    typedef enum BasicType
531    {
532		eBasicTypeInvalid = 0,
533        eBasicTypeVoid = 1,
534        eBasicTypeChar,
535        eBasicTypeSignedChar,
536        eBasicTypeWChar,
537        eBasicTypeChar16,
538        eBasicTypeChar32,
539        eBasicTypeShort,
540        eBasicTypeUnsignedShort,
541        eBasicTypeInt,
542        eBasicTypeUnsignedInt,
543        eBasicTypeLong,
544        eBasicTypeUnsignedLong,
545        eBasicTypeLongLong,
546        eBasicTypeUnsignedLongLong,
547        eBasicTypeInt128,
548        eBasicTypeUnsignedInt128,
549        eBasicTypeBool,
550        eBasicTypeFloat,
551        eBasicTypeDouble,
552        eBasicTypeLongDouble,
553        eBasicTypeFloatComplex,
554        eBasicTypeDoubleComplex,
555        eBasicTypeLongDoubleComplex,
556        eBasicTypeObjCID,
557        eBasicTypeObjCClass,
558        eBasicTypeObjCSel
559    } BasicType;
560
561    typedef enum TypeClass
562    {
563        eTypeClassInvalid           = (0u),
564        eTypeClassArray             = (1u << 0),
565        eTypeClassBlockPointer      = (1u << 1),
566        eTypeClassBuiltin           = (1u << 2),
567        eTypeClassClass             = (1u << 3),
568        eTypeClassComplexFloat      = (1u << 4),
569        eTypeClassComplexInteger    = (1u << 5),
570        eTypeClassEnumeration       = (1u << 6),
571        eTypeClassFunction          = (1u << 7),
572        eTypeClassMemberPointer     = (1u << 8),
573        eTypeClassObjCObject        = (1u << 9),
574        eTypeClassObjCInterface     = (1u << 10),
575        eTypeClassObjCObjectPointer = (1u << 11),
576        eTypeClassPointer           = (1u << 12),
577        eTypeClassReference         = (1u << 13),
578        eTypeClassStruct            = (1u << 14),
579        eTypeClassTypedef           = (1u << 15),
580        eTypeClassUnion             = (1u << 16),
581        eTypeClassVector            = (1u << 17),
582        // Define the last type class as the MSBit of a 32 bit value
583        eTypeClassOther             = (1u << 31),
584        // Define a mask that can be used for any type when finding types
585        eTypeClassAny               = (0xffffffffu)
586    }TypeClass;
587
588    typedef enum TemplateArgumentKind
589    {
590        eTemplateArgumentKindNull = 0,
591        eTemplateArgumentKindType,
592        eTemplateArgumentKindDeclaration,
593        eTemplateArgumentKindIntegral,
594        eTemplateArgumentKindTemplate,
595        eTemplateArgumentKindTemplateExpansion,
596        eTemplateArgumentKindExpression,
597        eTemplateArgumentKindPack
598
599    } TemplateArgumentKind;
600
601    //----------------------------------------------------------------------
602    // Options that can be set for a formatter to alter its behavior
603    // Not all of these are applicable to all formatter types
604    //----------------------------------------------------------------------
605    typedef enum TypeOptions
606    {
607        eTypeOptionNone            = (0u),
608        eTypeOptionCascade         = (1u << 0),
609        eTypeOptionSkipPointers    = (1u << 1),
610        eTypeOptionSkipReferences  = (1u << 2),
611        eTypeOptionHideChildren    = (1u << 3),
612        eTypeOptionHideValue       = (1u << 4),
613        eTypeOptionShowOneLiner    = (1u << 5),
614        eTypeOptionHideNames       = (1u << 6)
615    } TypeOptions;
616
617   //----------------------------------------------------------------------
618   // This is the return value for frame comparisons.  When frame A pushes
619   // frame B onto the stack, frame A is OLDER than frame B.
620   //----------------------------------------------------------------------
621   typedef enum FrameComparison
622   {
623       eFrameCompareInvalid,
624       eFrameCompareUnknown,
625       eFrameCompareEqual,
626       eFrameCompareYounger,
627       eFrameCompareOlder
628   } FrameComparison;
629
630    //----------------------------------------------------------------------
631    // Address Class
632    //
633    // A way of classifying an address used for disassembling and setting
634    // breakpoints. Many object files can track exactly what parts of their
635    // object files are code, data and other information. This is of course
636    // above and beyond just looking at the section types. For example, code
637    // might contain PC relative data and the object file might be able to
638    // tell us that an address in code is data.
639    //----------------------------------------------------------------------
640    typedef enum AddressClass
641    {
642        eAddressClassInvalid,
643        eAddressClassUnknown,
644        eAddressClassCode,
645        eAddressClassCodeAlternateISA,
646        eAddressClassData,
647        eAddressClassDebug,
648        eAddressClassRuntime
649    } AddressClass;
650
651} // namespace lldb
652
653
654#endif  // LLDB_lldb_enumerations_h_
655