lldb-private-enumerations.h revision 263363
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} ExecutionResults; 138 139typedef enum ObjCRuntimeVersions { 140 eObjC_VersionUnknown = 0, 141 eAppleObjC_V1 = 1, 142 eAppleObjC_V2 = 2 143} ObjCRuntimeVersions; 144 145 146//---------------------------------------------------------------------- 147// LazyBool is for boolean values that need to be calculated lazily. 148// Values start off set to eLazyBoolCalculate, and then they can be 149// calculated once and set to eLazyBoolNo or eLazyBoolYes. 150//---------------------------------------------------------------------- 151typedef enum LazyBool { 152 eLazyBoolCalculate = -1, 153 eLazyBoolNo = 0, 154 eLazyBoolYes = 1 155} LazyBool; 156 157//------------------------------------------------------------------ 158/// Name matching 159//------------------------------------------------------------------ 160typedef enum NameMatchType 161{ 162 eNameMatchIgnore, 163 eNameMatchEquals, 164 eNameMatchContains, 165 eNameMatchStartsWith, 166 eNameMatchEndsWith, 167 eNameMatchRegularExpression 168 169} NameMatchType; 170 171 172//------------------------------------------------------------------ 173/// Instruction types 174//------------------------------------------------------------------ 175typedef enum InstructionType 176{ 177 eInstructionTypeAny, // Support for any instructions at all (at least one) 178 eInstructionTypePrologueEpilogue, // All prologue and epilogue instructons that push and pop register values and modify sp/fp 179 eInstructionTypePCModifying, // Any instruction that modifies the program counter/instruction pointer 180 eInstructionTypeAll // All instructions of any kind 181 182} InstructionType; 183 184 185//------------------------------------------------------------------ 186/// Format category entry types 187//------------------------------------------------------------------ 188typedef enum FormatCategoryItem 189{ 190 eFormatCategoryItemSummary = 0x0001, 191 eFormatCategoryItemRegexSummary = 0x0002, 192 eFormatCategoryItemFilter = 0x0004, 193 eFormatCategoryItemRegexFilter = 0x0008, 194 eFormatCategoryItemSynth = 0x0010, 195 eFormatCategoryItemRegexSynth = 0x0020, 196 eFormatCategoryItemValue = 0x0040, 197 eFormatCategoryItemRegexValue = 0x0080 198} FormatCategoryItem; 199 200//------------------------------------------------------------------ 201/// Expression execution policies 202//------------------------------------------------------------------ 203typedef enum { 204 eExecutionPolicyOnlyWhenNeeded, 205 eExecutionPolicyNever, 206 eExecutionPolicyAlways 207} ExecutionPolicy; 208 209//---------------------------------------------------------------------- 210// Ways that the FormatManager picks a particular format for a type 211//---------------------------------------------------------------------- 212typedef enum FormatterChoiceCriterion 213{ 214 eFormatterChoiceCriterionDirectChoice = 0x00000000, 215 eFormatterChoiceCriterionStrippedPointerReference = 0x00000001, 216 eFormatterChoiceCriterionNavigatedTypedefs = 0x00000002, 217 eFormatterChoiceCriterionRegularExpressionSummary = 0x00000004, 218 eFormatterChoiceCriterionRegularExpressionFilter = 0x00000004, 219 eFormatterChoiceCriterionDynamicObjCDiscovery = 0x00000008, 220 eFormatterChoiceCriterionStrippedBitField = 0x00000010, 221 eFormatterChoiceCriterionWentToStaticValue = 0x00000020 222} FormatterChoiceCriterion; 223 224//---------------------------------------------------------------------- 225// Synchronicity behavior of scripted commands 226//---------------------------------------------------------------------- 227typedef enum ScriptedCommandSynchronicity 228{ 229 eScriptedCommandSynchronicitySynchronous, 230 eScriptedCommandSynchronicityAsynchronous, 231 eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is 232} ScriptedCommandSynchronicity; 233 234//---------------------------------------------------------------------- 235// Verbosity mode of "po" output 236//---------------------------------------------------------------------- 237typedef enum LanguageRuntimeDescriptionDisplayVerbosity 238{ 239 eLanguageRuntimeDescriptionDisplayVerbosityCompact, // only print the description string, if any 240 eLanguageRuntimeDescriptionDisplayVerbosityFull, // print the full-blown output 241} LanguageRuntimeDescriptionDisplayVerbosity; 242 243//---------------------------------------------------------------------- 244// Loading modules from memory 245//---------------------------------------------------------------------- 246typedef enum MemoryModuleLoadLevel { 247 eMemoryModuleLoadLevelMinimal, // Load sections only 248 eMemoryModuleLoadLevelPartial, // Load function bounds but no symbols 249 eMemoryModuleLoadLevelComplete, // Load sections and all symbols 250} MemoryModuleLoadLevel; 251 252 253} // namespace lldb_private 254 255 256#endif // LLDB_lldb_private_enumerations_h_ 257