include "../../include/lldb/Core/PropertiesBase.td"

let Definition = "experimental" in {
  def InjectLocalVars : Property<"inject-local-vars", "Boolean">,
    Global, DefaultTrue,
    Desc<"If true, inject local variables explicitly into the expression text. This will fix symbol resolution when there are name collisions between ivars and local variables. But it can make expressions run much more slowly.">;
}

let Definition = "target" in {
  def DefaultArch: Property<"default-arch", "Arch">,
    Global,
    DefaultStringValue<"">,
    Desc<"Default architecture to choose, when there's a choice.">;
  def MoveToNearestCode: Property<"move-to-nearest-code", "Boolean">,
    DefaultTrue,
    Desc<"Move breakpoints to nearest code.">;
  def Language: Property<"language", "Language">,
    DefaultEnumValue<"eLanguageTypeUnknown">,
    Desc<"The language to use when interpreting expressions entered in commands.">;
  def ExprPrefix: Property<"expr-prefix", "FileSpec">,
    DefaultStringValue<"">,
    Desc<"Path to a file containing expressions to be prepended to all expressions.">;
  def PreferDynamic: Property<"prefer-dynamic-value", "Enum">,
    DefaultEnumValue<"eDynamicDontRunTarget">,
    EnumValues<"OptionEnumValues(g_dynamic_value_types)">,
    Desc<"Should printed values be shown as their dynamic value.">;
  def EnableSynthetic: Property<"enable-synthetic-value", "Boolean">,
    DefaultTrue,
    Desc<"Should synthetic values be used by default whenever available.">;
  def SkipPrologue: Property<"skip-prologue", "Boolean">,
    DefaultTrue,
    Desc<"Skip function prologues when setting breakpoints by name.">;
  def SourceMap: Property<"source-map", "PathMap">,
    DefaultStringValue<"">,
    Desc<"Source path remappings are used to track the change of location between a source file when built, and where it exists on the current system.  It consists of an array of duples, the first element of each duple is some part (starting at the root) of the path to the file when it was built, and the second is where the remainder of the original build hierarchy is rooted on the local system.  Each element of the array is checked in order and the first one that results in a match wins.">;
  def ExecutableSearchPaths: Property<"exec-search-paths", "FileSpecList">,
    DefaultStringValue<"">,
    Desc<"Executable search paths to use when locating executable files whose paths don't match the local file system.">;
  def DebugFileSearchPaths: Property<"debug-file-search-paths", "FileSpecList">,
    DefaultStringValue<"">,
    Desc<"List of directories to be searched when locating debug symbol files. See also symbols.enable-external-lookup.">;
  def ClangModuleSearchPaths: Property<"clang-module-search-paths", "FileSpecList">,
    DefaultStringValue<"">,
    Desc<"List of directories to be searched when locating modules for Clang.">;
  def AutoImportClangModules: Property<"auto-import-clang-modules", "Boolean">,
    DefaultTrue,
    Desc<"Automatically load Clang modules referred to by the program.">;
  def ImportStdModule: Property<"import-std-module", "Boolean">,
    DefaultFalse,
    Desc<"Import the C++ std module to improve debugging STL containers.">;
  def AutoApplyFixIts: Property<"auto-apply-fixits", "Boolean">,
    DefaultTrue,
    Desc<"Automatically apply fix-it hints to expressions.">;
  def NotifyAboutFixIts: Property<"notify-about-fixits", "Boolean">,
    DefaultTrue,
    Desc<"Print the fixed expression text.">;
  def SaveObjects: Property<"save-jit-objects", "Boolean">,
    DefaultFalse,
    Desc<"Save intermediate object files generated by the LLVM JIT">;
  def MaxZeroPaddingInFloatFormat: Property<"max-zero-padding-in-float-format", "UInt64">,
    DefaultUnsignedValue<6>,
    Desc<"The maximum number of zeroes to insert when displaying a very small float before falling back to scientific notation.">;
  def MaxChildrenCount: Property<"max-children-count", "SInt64">,
    DefaultUnsignedValue<256>,
    Desc<"Maximum number of children to expand in any level of depth.">;
  def MaxSummaryLength: Property<"max-string-summary-length", "SInt64">,
    DefaultUnsignedValue<1024>,
    Desc<"Maximum number of characters to show when using %s in summary strings.">;
  def MaxMemReadSize: Property<"max-memory-read-size", "SInt64">,
    DefaultUnsignedValue<1024>,
    Desc<"Maximum number of bytes that 'memory read' will fetch before --force must be specified.">;
  def BreakpointUseAvoidList: Property<"breakpoints-use-platform-avoid-list", "Boolean">,
    DefaultTrue,
    Desc<"Consult the platform module avoid list when setting non-module specific breakpoints.">;
  def Arg0: Property<"arg0", "String">,
    DefaultStringValue<"">,
    Desc<"The first argument passed to the program in the argument array which can be different from the executable itself.">;
  def RunArgs: Property<"run-args", "Args">,
    DefaultStringValue<"">,
    Desc<"A list containing all the arguments to be passed to the executable when it is run. Note that this does NOT include the argv[0] which is in target.arg0.">;
  def EnvVars: Property<"env-vars", "Dictionary">,
    DefaultUnsignedValue<16>,
    Desc<"A list of all the environment variables to be passed to the executable's environment, and their values.">;
  def InheritEnv: Property<"inherit-env", "Boolean">,
    DefaultTrue,
    Desc<"Inherit the environment from the process that is running LLDB.">;
  def InputPath: Property<"input-path", "FileSpec">,
    DefaultStringValue<"">,
    Desc<"The file/path to be used by the executable program for reading its standard input.">;
  def OutputPath: Property<"output-path", "FileSpec">,
    DefaultStringValue<"">,
    Desc<"The file/path to be used by the executable program for writing its standard output.">;
  def ErrorPath: Property<"error-path", "FileSpec">,
    DefaultStringValue<"">,
    Desc<"The file/path to be used by the executable program for writing its standard error.">;
  def DetachOnError: Property<"detach-on-error", "Boolean">,
    DefaultTrue,
    Desc<"debugserver will detach (rather than killing) a process if it loses connection with lldb.">;
  def PreloadSymbols: Property<"preload-symbols", "Boolean">,
    DefaultTrue,
    Desc<"Enable loading of symbol tables before they are needed.">;
  def DisableASLR: Property<"disable-aslr", "Boolean">,
    DefaultTrue,
    Desc<"Disable Address Space Layout Randomization (ASLR)">;
  def DisableSTDIO: Property<"disable-stdio", "Boolean">,
    DefaultFalse,
    Desc<"Disable stdin/stdout for process (e.g. for a GUI application)">;
  def InlineStrategy: Property<"inline-breakpoint-strategy", "Enum">,
    DefaultEnumValue<"eInlineBreakpointsAlways">,
    EnumValues<"OptionEnumValues(g_inline_breakpoint_enums)">,
    Desc<"The strategy to use when settings breakpoints by file and line. Breakpoint locations can end up being inlined by the compiler, so that a compile unit 'a.c' might contain an inlined function from another source file. Usually this is limited to breakpoint locations from inlined functions from header or other include files, or more accurately non-implementation source files. Sometimes code might #include implementation files and cause inlined breakpoint locations in inlined implementation files. Always checking for inlined breakpoint locations can be expensive (memory and time), so if you have a project with many headers and find that setting breakpoints is slow, then you can change this setting to headers. This setting allows you to control exactly which strategy is used when setting file and line breakpoints.">;
  def DisassemblyFlavor: Property<"x86-disassembly-flavor", "Enum">,
    DefaultEnumValue<"eX86DisFlavorDefault">,
    EnumValues<"OptionEnumValues(g_x86_dis_flavor_value_types)">,
    Desc<"The default disassembly flavor to use for x86 or x86-64 targets.">;
  def UseHexImmediates: Property<"use-hex-immediates", "Boolean">,
    DefaultTrue,
    Desc<"Show immediates in disassembly as hexadecimal.">;
  def HexImmediateStyle: Property<"hex-immediate-style", "Enum">,
    DefaultEnumValue<"Disassembler::eHexStyleC">,
    EnumValues<"OptionEnumValues(g_hex_immediate_style_values)">,
    Desc<"Which style to use for printing hexadecimal disassembly values.">;
  def UseFastStepping: Property<"use-fast-stepping", "Boolean">,
    DefaultTrue,
    Desc<"Use a fast stepping algorithm based on running from branch to branch rather than instruction single-stepping.">;
  def LoadScriptFromSymbolFile: Property<"load-script-from-symbol-file", "Enum">,
    DefaultEnumValue<"eLoadScriptFromSymFileWarn">,
    EnumValues<"OptionEnumValues(g_load_script_from_sym_file_values)">,
    Desc<"Allow LLDB to load scripting resources embedded in symbol files when available.">;
  def LoadCWDlldbinitFile: Property<"load-cwd-lldbinit", "Enum">,
    DefaultEnumValue<"eLoadCWDlldbinitWarn">,
    EnumValues<"OptionEnumValues(g_load_cwd_lldbinit_values)">,
    Desc<"Allow LLDB to .lldbinit files from the current directory automatically.">;
  def MemoryModuleLoadLevel: Property<"memory-module-load-level", "Enum">,
    DefaultEnumValue<"eMemoryModuleLoadLevelComplete">,
    EnumValues<"OptionEnumValues(g_memory_module_load_level_values)">,
    Desc<"Loading modules from memory can be slow as reading the symbol tables and other data can take a long time depending on your connection to the debug target. This setting helps users control how much information gets loaded when loading modules from memory.'complete' is the default value for this setting which will load all sections and symbols by reading them from memory (slowest, most accurate). 'partial' will load sections and attempt to find function bounds without downloading the symbol table (faster, still accurate, missing symbol names). 'minimal' is the fastest setting and will load section data with no symbols, but should rarely be used as stack frames in these memory regions will be inaccurate and not provide any context (fastest). ">;
  def DisplayExpressionsInCrashlogs: Property<"display-expression-in-crashlogs", "Boolean">,
    DefaultFalse,
    Desc<"Expressions that crash will show up in crash logs if the host system supports executable specific crash log strings and this setting is set to true.">;
  def TrapHandlerNames: Property<"trap-handler-names", "Array">,
    Global,
    DefaultUnsignedValue<16>,
    Desc<"A list of trap handler function names, e.g. a common Unix user process one is _sigtramp.">;
  def DisplayRuntimeSupportValues: Property<"display-runtime-support-values", "Boolean">,
    DefaultFalse,
    Desc<"If true, LLDB will show variables that are meant to support the operation of a language's runtime support.">;
  def DisplayRecognizedArguments: Property<"display-recognized-arguments", "Boolean">,
    DefaultFalse,
    Desc<"Show recognized arguments in variable listings by default.">;
  def NonStopModeEnabled: Property<"non-stop-mode", "Boolean">,
    DefaultFalse,
    Desc<"Disable lock-step debugging, instead control threads independently.">;
  def RequireHardwareBreakpoints: Property<"require-hardware-breakpoint", "Boolean">,
    DefaultFalse,
    Desc<"Require all breakpoints to be hardware breakpoints.">;
}

let Definition = "process" in {
  def DisableMemCache: Property<"disable-memory-cache", "Boolean">,
    DefaultFalse,
    Desc<"Disable reading and caching of memory in fixed-size units.">;
  def ExtraStartCommand: Property<"extra-startup-command", "Array">,
    DefaultUnsignedValue<16>,
    Desc<"A list containing extra commands understood by the particular process plugin used.  For instance, to turn on debugserver logging set this to 'QSetLogging:bitmask=LOG_DEFAULT;'">;
  def IgnoreBreakpointsInExpressions: Property<"ignore-breakpoints-in-expressions", "Boolean">,
    Global,
    DefaultTrue,
    Desc<"If true, breakpoints will be ignored during expression evaluation.">;
  def UnwindOnErrorInExpressions: Property<"unwind-on-error-in-expressions", "Boolean">,
    Global,
    DefaultTrue,
    Desc<"If true, errors in expression evaluation will unwind the stack back to the state before the call.">;
  def PythonOSPluginPath: Property<"python-os-plugin-path", "FileSpec">,
    DefaultUnsignedValue<1>,
    Desc<"A path to a python OS plug-in module file that contains a OperatingSystemPlugIn class.">;
  def StopOnSharedLibraryEvents: Property<"stop-on-sharedlibrary-events", "Boolean">,
    Global,
    DefaultFalse,
    Desc<"If true, stop when a shared library is loaded or unloaded.">;
  def DetachKeepsStopped: Property<"detach-keeps-stopped", "Boolean">,
    Global,
    DefaultFalse,
    Desc<"If true, detach will attempt to keep the process stopped.">;
  def MemCacheLineSize: Property<"memory-cache-line-size", "UInt64">,
    DefaultUnsignedValue<512>,
    Desc<"The memory cache line size">;
  def WarningOptimization: Property<"optimization-warnings", "Boolean">,
    DefaultTrue,
    Desc<"If true, warn when stopped in code that is optimized where stepping and variable availability may not behave as expected.">;
  def StopOnExec: Property<"stop-on-exec", "Boolean">,
    Global,
    DefaultTrue,
    Desc<"If true, stop when a shared library is loaded or unloaded.">;
  def UtilityExpressionTimeout: Property<"utility-expression-timeout", "UInt64">,
    DefaultUnsignedValue<15>,
    Desc<"The time in seconds to wait for LLDB-internal utility expressions.">;
}

let Definition = "platform" in {
  def UseModuleCache: Property<"use-module-cache", "Boolean">,
    Global,
    DefaultTrue,
    Desc<"Use module cache.">;
  def ModuleCacheDirectory: Property<"module-cache-directory", "FileSpec">,
    Global,
    DefaultStringValue<"">,
    Desc<"Root directory for cached modules.">;
}

let Definition = "thread" in {
  def StepInAvoidsNoDebug: Property<"step-in-avoid-nodebug", "Boolean">,
    Global,
    DefaultTrue,
    Desc<"If true, step-in will not stop in functions with no debug information.">;
  def StepOutAvoidsNoDebug: Property<"step-out-avoid-nodebug", "Boolean">,
    Global,
    DefaultFalse,
    Desc<"If true, when step-in/step-out/step-over leave the current frame, they will continue to step out till they come to a function with debug information. Passing a frame argument to step-out will override this option.">;
  def StepAvoidRegex: Property<"step-avoid-regexp", "Regex">,
    Global,
    DefaultStringValue<"^std::">,
    Desc<"A regular expression defining functions step-in won't stop in.">;
  def StepAvoidLibraries: Property<"step-avoid-libraries", "FileSpecList">,
    Global,
    DefaultStringValue<"">,
    Desc<"A list of libraries that source stepping won't stop in.">;
  def EnableThreadTrace: Property<"trace-thread", "Boolean">,
    DefaultFalse,
    Desc<"If true, this thread will single-step and log execution.">;
  def MaxBacktraceDepth: Property<"max-backtrace-depth", "UInt64">,
    DefaultUnsignedValue<300000>,
    Desc<"Maximum number of frames to backtrace.">;
}
