lldb-private-enumerations.h revision 263367
1//===-- lldb-private-enumerations.h -----------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef LLDB_lldb_private_enumerations_h_ 11#define LLDB_lldb_private_enumerations_h_ 12 13namespace lldb_private { 14 15//---------------------------------------------------------------------- 16// Thread Step Types 17//---------------------------------------------------------------------- 18typedef enum StepType 19{ 20 eStepTypeNone, 21 eStepTypeTrace, ///< Single step one instruction. 22 eStepTypeTraceOver, ///< Single step one instruction, stepping over. 23 eStepTypeInto, ///< Single step into a specified context. 24 eStepTypeOver, ///< Single step over a specified context. 25 eStepTypeOut ///< Single step out a specified context. 26} StepType; 27 28//---------------------------------------------------------------------- 29// Address Types 30//---------------------------------------------------------------------- 31typedef enum AddressType 32{ 33 eAddressTypeInvalid = 0, 34 eAddressTypeFile, ///< Address is an address as found in an object or symbol file 35 eAddressTypeLoad, ///< Address is an address as in the current target inferior process 36 eAddressTypeHost ///< Address is an address in the process that is running this code 37} AddressType; 38 39//---------------------------------------------------------------------- 40// Votes - Need a tri-state, yes, no, no opinion... 41//---------------------------------------------------------------------- 42typedef enum Vote 43{ 44 eVoteNo = -1, 45 eVoteNoOpinion = 0, 46 eVoteYes = 1 47} Vote; 48 49typedef enum ArchitectureType 50{ 51 eArchTypeInvalid, 52 eArchTypeMachO, 53 eArchTypeELF, 54 eArchTypeCOFF, 55 kNumArchTypes 56} ArchitectureType; 57 58//---------------------------------------------------------------------- 59/// Settable state variable types. 60/// 61//---------------------------------------------------------------------- 62 63//typedef enum SettableVariableType 64//{ 65// eSetVarTypeInt, 66// eSetVarTypeBoolean, 67// eSetVarTypeString, 68// eSetVarTypeArray, 69// eSetVarTypeDictionary, 70// eSetVarTypeEnum, 71// eSetVarTypeNone 72//} SettableVariableType; 73 74typedef enum VarSetOperationType 75{ 76 eVarSetOperationReplace, 77 eVarSetOperationInsertBefore, 78 eVarSetOperationInsertAfter, 79 eVarSetOperationRemove, 80 eVarSetOperationAppend, 81 eVarSetOperationClear, 82 eVarSetOperationAssign, 83 eVarSetOperationInvalid 84} VarSetOperationType; 85 86typedef enum ArgumentRepetitionType 87{ 88 eArgRepeatPlain, // Exactly one occurrence 89 eArgRepeatOptional, // At most one occurrence, but it's optional 90 eArgRepeatPlus, // One or more occurrences 91 eArgRepeatStar, // Zero or more occurrences 92 eArgRepeatRange, // Repetition of same argument, from 1 to n 93 eArgRepeatPairPlain, // A pair of arguments that must always go together ([arg-type arg-value]), occurs exactly once 94 eArgRepeatPairOptional, // A pair that occurs at most once (optional) 95 eArgRepeatPairPlus, // One or more occurrences of a pair 96 eArgRepeatPairStar, // Zero or more occurrences of a pair 97 eArgRepeatPairRange, // A pair that repeats from 1 to n 98 eArgRepeatPairRangeOptional // A pair that repeats from 1 to n, but is optional 99} ArgumentRepetitionType; 100 101typedef enum SortOrder 102{ 103 eSortOrderNone, 104 eSortOrderByAddress, 105 eSortOrderByName 106} SortOrder; 107 108 109//---------------------------------------------------------------------- 110// Used in conjunction with Host::GetLLDBPath () to find files that 111// are related to 112//---------------------------------------------------------------------- 113typedef enum PathType 114{ 115 ePathTypeLLDBShlibDir, // The directory where the lldb.so (unix) or LLDB mach-o file in LLDB.framework (MacOSX) exists 116 ePathTypeSupportExecutableDir, // Find LLDB support executable directory (debugserver, etc) 117 ePathTypeHeaderDir, // Find LLDB header file directory 118 ePathTypePythonDir, // Find Python modules (PYTHONPATH) directory 119 ePathTypeLLDBSystemPlugins, // System plug-ins directory 120 ePathTypeLLDBUserPlugins // User plug-ins directory 121} PathType; 122 123 124//---------------------------------------------------------------------- 125// We can execute ThreadPlans on one thread with various fall-back modes 126// (try other threads after timeout, etc.) This enum gives the result of 127// thread plan executions. 128//---------------------------------------------------------------------- 129typedef enum ExecutionResults 130{ 131 eExecutionSetupError, 132 eExecutionCompleted, 133 eExecutionDiscarded, 134 eExecutionInterrupted, 135 eExecutionHitBreakpoint, 136 eExecutionTimedOut, 137 eExecutionStoppedForDebug 138} ExecutionResults; 139 140typedef enum ObjCRuntimeVersions { 141 eObjC_VersionUnknown = 0, 142 eAppleObjC_V1 = 1, 143 eAppleObjC_V2 = 2 144} ObjCRuntimeVersions; 145 146 147//---------------------------------------------------------------------- 148// LazyBool is for boolean values that need to be calculated lazily. 149// Values start off set to eLazyBoolCalculate, and then they can be 150// calculated once and set to eLazyBoolNo or eLazyBoolYes. 151//---------------------------------------------------------------------- 152typedef enum LazyBool { 153 eLazyBoolCalculate = -1, 154 eLazyBoolNo = 0, 155 eLazyBoolYes = 1 156} LazyBool; 157 158//------------------------------------------------------------------ 159/// Name matching 160//------------------------------------------------------------------ 161typedef enum NameMatchType 162{ 163 eNameMatchIgnore, 164 eNameMatchEquals, 165 eNameMatchContains, 166 eNameMatchStartsWith, 167 eNameMatchEndsWith, 168 eNameMatchRegularExpression 169 170} NameMatchType; 171 172 173//------------------------------------------------------------------ 174/// Instruction types 175//------------------------------------------------------------------ 176typedef enum InstructionType 177{ 178 eInstructionTypeAny, // Support for any instructions at all (at least one) 179 eInstructionTypePrologueEpilogue, // All prologue and epilogue instructons that push and pop register values and modify sp/fp 180 eInstructionTypePCModifying, // Any instruction that modifies the program counter/instruction pointer 181 eInstructionTypeAll // All instructions of any kind 182 183} InstructionType; 184 185 186//------------------------------------------------------------------ 187/// Format category entry types 188//------------------------------------------------------------------ 189typedef enum FormatCategoryItem 190{ 191 eFormatCategoryItemSummary = 0x0001, 192 eFormatCategoryItemRegexSummary = 0x0002, 193 eFormatCategoryItemFilter = 0x0004, 194 eFormatCategoryItemRegexFilter = 0x0008, 195 eFormatCategoryItemSynth = 0x0010, 196 eFormatCategoryItemRegexSynth = 0x0020, 197 eFormatCategoryItemValue = 0x0040, 198 eFormatCategoryItemRegexValue = 0x0080 199} FormatCategoryItem; 200 201//------------------------------------------------------------------ 202/// Expression execution policies 203//------------------------------------------------------------------ 204typedef enum { 205 eExecutionPolicyOnlyWhenNeeded, 206 eExecutionPolicyNever, 207 eExecutionPolicyAlways 208} ExecutionPolicy; 209 210//---------------------------------------------------------------------- 211// Ways that the FormatManager picks a particular format for a type 212//---------------------------------------------------------------------- 213typedef enum FormatterChoiceCriterion 214{ 215 eFormatterChoiceCriterionDirectChoice = 0x00000000, 216 eFormatterChoiceCriterionStrippedPointerReference = 0x00000001, 217 eFormatterChoiceCriterionNavigatedTypedefs = 0x00000002, 218 eFormatterChoiceCriterionRegularExpressionSummary = 0x00000004, 219 eFormatterChoiceCriterionRegularExpressionFilter = 0x00000004, 220 eFormatterChoiceCriterionDynamicObjCDiscovery = 0x00000008, 221 eFormatterChoiceCriterionStrippedBitField = 0x00000010, 222 eFormatterChoiceCriterionWentToStaticValue = 0x00000020 223} FormatterChoiceCriterion; 224 225//---------------------------------------------------------------------- 226// Synchronicity behavior of scripted commands 227//---------------------------------------------------------------------- 228typedef enum ScriptedCommandSynchronicity 229{ 230 eScriptedCommandSynchronicitySynchronous, 231 eScriptedCommandSynchronicityAsynchronous, 232 eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is 233} ScriptedCommandSynchronicity; 234 235//---------------------------------------------------------------------- 236// Verbosity mode of "po" output 237//---------------------------------------------------------------------- 238typedef enum LanguageRuntimeDescriptionDisplayVerbosity 239{ 240 eLanguageRuntimeDescriptionDisplayVerbosityCompact, // only print the description string, if any 241 eLanguageRuntimeDescriptionDisplayVerbosityFull, // print the full-blown output 242} LanguageRuntimeDescriptionDisplayVerbosity; 243 244//---------------------------------------------------------------------- 245// Loading modules from memory 246//---------------------------------------------------------------------- 247typedef enum MemoryModuleLoadLevel { 248 eMemoryModuleLoadLevelMinimal, // Load sections only 249 eMemoryModuleLoadLevelPartial, // Load function bounds but no symbols 250 eMemoryModuleLoadLevelComplete, // Load sections and all symbols 251} MemoryModuleLoadLevel; 252 253 254} // namespace lldb_private 255 256 257#endif // LLDB_lldb_private_enumerations_h_ 258