diff --git a/libcxx/utils/libcxx/util.py b/libcxx/utils/libcxx/util.py index 46c09bf666934e8..2fd95232abb499e 100644 --- a/libcxx/utils/libcxx/util.py +++ b/libcxx/utils/libcxx/util.py @@ -253,24 +253,27 @@ def killProcessAndChildren(pid): TODO: Reimplement this without using psutil so we can remove our dependency on it. """ - import psutil - try: - psutilProc = psutil.Process(pid) - # Handle the different psutil API versions + if platform.system() == 'AIX': + subprocess.call('kill -kill $(ps -o pid= -L{})'.format(pid), shell=True) + else: + import psutil try: - # psutil >= 2.x - children_iterator = psutilProc.children(recursive=True) - except AttributeError: - # psutil 1.x - children_iterator = psutilProc.get_children(recursive=True) - for child in children_iterator: + psutilProc = psutil.Process(pid) + # Handle the different psutil API versions try: - child.kill() - except psutil.NoSuchProcess: - pass - psutilProc.kill() - except psutil.NoSuchProcess: - pass + # psutil >= 2.x + children_iterator = psutilProc.children(recursive=True) + except AttributeError: + # psutil 1.x + children_iterator = psutilProc.get_children(recursive=True) + for child in children_iterator: + try: + child.kill() + except psutil.NoSuchProcess: + pass + psutilProc.kill() + except psutil.NoSuchProcess: + pass def executeCommandVerbose(cmd, *args, **kwargs): diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt index 280c3a29984a30c..0e54188720689dc 100644 --- a/lldb/CMakeLists.txt +++ b/lldb/CMakeLists.txt @@ -11,7 +11,13 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ) -include(LLDBStandalone) +# If we are not building as part of LLVM, build LLDB as a standalone project, +# using LLVM as an external library. +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + project(lldb) + include(LLDBStandalone) +endif() + include(LLDBConfig) include(AddLLDB) @@ -34,15 +40,38 @@ if (NOT LLDB_DISABLE_PYTHON) add_subdirectory(scripts) endif () +# We need the headers generated by instrinsics_gen before we can compile +# any source file in LLDB as the imported Clang modules might include +# some of these generated headers. This approach is copied from Clang's main +# CMakeLists.txt, so it should kept in sync the code in Clang which was added +# in llvm-svn 308844. +if(LLVM_ENABLE_MODULES AND NOT LLDB_BUILT_STANDALONE) + list(APPEND LLVM_COMMON_DEPENDS intrinsics_gen) +endif() + +if(CMAKE_CROSSCOMPILING AND LLDB_BUILT_STANDALONE) + set(LLVM_USE_HOST_TOOLS ON) + include(CrossCompile) + if (NOT NATIVE_LLVM_DIR OR NOT NATIVE_Clang_DIR) + message(FATAL_ERROR + "Crosscompiling standalone requires the variables NATIVE_{CLANG,LLVM}_DIR + for building the native lldb-tblgen used during the build process.") + endif() + llvm_create_cross_target(lldb NATIVE "" Release + -DLLVM_DIR=${NATIVE_LLVM_DIR} + -DClang_DIR=${NATIVE_Clang_DIR}) +endif() + +# TableGen add_subdirectory(utils/TableGen) + add_subdirectory(source) add_subdirectory(tools) add_subdirectory(docs) option(LLDB_INCLUDE_TESTS "Generate build targets for the LLDB unit tests." ${LLVM_INCLUDE_TESTS}) -option(LLDB_TEST_USE_CUSTOM_C_COMPILER "Use the C compiler provided via LLDB_TEST_C_COMPILER for building test inferiors (instead of the just-built compiler). Defaults to OFF." OFF) -option(LLDB_TEST_USE_CUSTOM_CXX_COMPILER "Use the C++ compiler provided via LLDB_TEST_CXX_COMPILER for building test inferiors (instead of the just-built compiler). Defaults to OFF." OFF) if(LLDB_INCLUDE_TESTS) + set(LLDB_TEST_BUILD_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lldb-test-build.noindex" CACHE PATH "The build root for building tests.") # Set the path to the default lldb test executable. set(LLDB_DEFAULT_TEST_EXECUTABLE "${LLVM_RUNTIME_OUTPUT_INTDIR}/lldb${CMAKE_EXECUTABLE_SUFFIX}") @@ -51,15 +80,11 @@ if(LLDB_INCLUDE_TESTS) set(LLDB_DEFAULT_TEST_DSYMUTIL "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/dsymutil${CMAKE_EXECUTABLE_SUFFIX}") set(LLDB_DEFAULT_TEST_FILECHECK "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/FileCheck${CMAKE_EXECUTABLE_SUFFIX}") - if (NOT LLDB_TEST_USE_CUSTOM_C_COMPILER AND TARGET clang) + if (TARGET clang) set(LLDB_DEFAULT_TEST_C_COMPILER "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/clang${CMAKE_EXECUTABLE_SUFFIX}") - else() - set(LLDB_DEFAULT_TEST_C_COMPILER "") - endif() - - if (NOT LLDB_TEST_USE_CUSTOM_CXX_COMPILER AND TARGET clang) set(LLDB_DEFAULT_TEST_CXX_COMPILER "${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/clang++${CMAKE_EXECUTABLE_SUFFIX}") else() + set(LLDB_DEFAULT_TEST_C_COMPILER "") set(LLDB_DEFAULT_TEST_CXX_COMPILER "") endif() @@ -71,7 +96,7 @@ if(LLDB_INCLUDE_TESTS) if (("${LLDB_TEST_C_COMPILER}" STREQUAL "") OR ("${LLDB_TEST_CXX_COMPILER}" STREQUAL "")) - message(FATAL_ERROR "LLDB test compilers not specified. Tests will not run") + message(FATAL_ERROR "LLDB test compilers not specified. Tests will not run.") endif() set(LLDB_TEST_DEPS lldb) @@ -88,14 +113,6 @@ if(LLDB_INCLUDE_TESTS) list(APPEND LLDB_TEST_DEPS lldb-server) endif() - if(TARGET debugserver) - list(APPEND LLDB_TEST_DEPS debugserver) - endif() - - if(TARGET lldb-mi) - list(APPEND LLDB_TEST_DEPS lldb-mi) - endif() - if(TARGET lldb-vscode) list(APPEND LLDB_TEST_DEPS lldb-vscode) endif() @@ -196,19 +213,12 @@ if (NOT LLDB_DISABLE_PYTHON) DEPENDS ${lldb_scripts_dir}/lldb.py COMMENT "Python script sym-linking LLDB Python API") - if (TARGET readline) - set(readline_dep readline) - endif() - add_dependencies(finish_swig swig_wrapper liblldb lldb-argdumper ${readline_dep}) + add_dependencies(finish_swig swig_wrapper liblldb lldb-argdumper) set_target_properties(finish_swig swig_wrapper PROPERTIES FOLDER "lldb misc") # Ensure we do the python post-build step when building lldb. add_dependencies(lldb finish_swig) - if(LLDB_BUILD_FRAMEWORK) - add_dependencies(lldb-framework finish_swig) - endif() - # Add a Post-Build Event to copy the custom Python DLL to the lldb binaries dir so that Windows can find it when launching # lldb.exe or any other executables that were linked with liblldb. if (WIN32 AND NOT "${PYTHON_DLL}" STREQUAL "") @@ -222,3 +232,7 @@ if (NOT LLDB_DISABLE_PYTHON) COMMENT "Copying Python DLL to LLDB binaries directory.") endif () endif () + +if(LLDB_BUILT_STANDALONE AND NOT LLVM_ENABLE_IDE) + llvm_distribution_add_targets() +endif() diff --git a/lldb/CODE_OWNERS.txt b/lldb/CODE_OWNERS.txt index 8ee04557af61829..1af1061c545a19f 100644 --- a/lldb/CODE_OWNERS.txt +++ b/lldb/CODE_OWNERS.txt @@ -21,10 +21,6 @@ D: Watchpoints, Trampolines, Target, Command Interpreter, C++ / Objective-C Lang D: Expression evaluator, IR interpreter, Clang integration D: Data Formatters -N: Ilia K -E: ki.stfu@gmail.com -D: lldb-mi - N: Ed Maste E: emaste@freebsd.org D: FreeBSD @@ -34,10 +30,6 @@ E: jmolenda@apple.com D: ABI, Disassembler, Unwinding, iOS, debugserver, Platform, ObjectFile, SymbolFile, D: SymbolVendor, DWARF, gdb-remote -N: Hafiz Abid Qadeer -E: abidh.haq@gmail.com -D: lldb-mi - N: Kamil Rytarowski E: kamil@netbsd.org D: NetBSD diff --git a/lldb/INSTALL.txt b/lldb/INSTALL.txt deleted file mode 100644 index 59294bd7f03ac94..000000000000000 --- a/lldb/INSTALL.txt +++ /dev/null @@ -1,18 +0,0 @@ -LLDB Installation Instructions -============================== - -LLDB builds on Mac OS X (with Xcode) and Linux (with GCC or Clang). - -On Mac OS X, in addition to using Xcode you'll need to enable code signing -on your system to either build lldb or debug using lldb. Please see the code -signing documentation in docs/code-signing.txt for more detailed directions. - -If you are building on Mac OS X and LLVM is not present in llvm/, then LLDB -will check it out automatically. The files in scripts/Xcode/repos determine -which branches of LLVM/Clang are checked out, depending on the current -LLDB branch, according to the algorithm in scripts/Xcode/repo.py. - -For instructions to build LLDB on Linux, or more details about supported -compiler versions, other dependencies, and build flags, see: - - https://lldb.llvm.org/resources/build.html diff --git a/lldb/cmake/XcodeHeaderGenerator/CMakeLists.txt b/lldb/cmake/XcodeHeaderGenerator/CMakeLists.txt deleted file mode 100644 index f515c5fb8c46bbd..000000000000000 --- a/lldb/cmake/XcodeHeaderGenerator/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -cmake_minimum_required(VERSION 3.4.3) - -project(XcodeConfig C CXX) - -set(CMAKE_MODULE_PATH - ${CMAKE_MODULE_PATH} - "${CMAKE_CURRENT_SOURCE_DIR}/.." - "${CMAKE_CURRENT_SOURCE_DIR}/../modules" - ) - -set(LLDB_CONFIG_HEADER_INPUT - ${CMAKE_CURRENT_SOURCE_DIR}/../../include/lldb/Host/Config.h.cmake) - -include(LLDBGenerateConfig) diff --git a/lldb/cmake/caches/Apple-lldb-Linux.cmake b/lldb/cmake/caches/Apple-lldb-Linux.cmake new file mode 100644 index 000000000000000..13d3839f852f611 --- /dev/null +++ b/lldb/cmake/caches/Apple-lldb-Linux.cmake @@ -0,0 +1,8 @@ +include(${CMAKE_CURRENT_LIST_DIR}/Apple-lldb-base.cmake) + +set(LLVM_DISTRIBUTION_COMPONENTS + lldb + liblldb + lldb-argdumper + lldb-server + CACHE STRING "") diff --git a/lldb/cmake/caches/Apple-lldb-Xcode.cmake b/lldb/cmake/caches/Apple-lldb-Xcode.cmake new file mode 100644 index 000000000000000..98d68b1605e2163 --- /dev/null +++ b/lldb/cmake/caches/Apple-lldb-Xcode.cmake @@ -0,0 +1,14 @@ +include(${CMAKE_CURRENT_LIST_DIR}/Apple-lldb-base.cmake) + +set(CMAKE_GENERATOR Xcode CACHE STRING "") +set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12 CACHE STRING "") +set(CMAKE_XCODE_GENERATE_SCHEME ON CACHE BOOL "") + +set(LLDB_BUILD_FRAMEWORK ON CACHE BOOL "") + +# Apparently, module-enabled builds clash with Xcode's analysis. +set(LLVM_ENABLE_MODULES OFF CACHE BOOL "" FORCE) + +# Print a warning with instructions, if we +# build with Xcode and didn't use this cache. +set(LLDB_EXPLICIT_XCODE_CACHE_USED ON CACHE INTERNAL "") diff --git a/lldb/cmake/caches/Apple-lldb-base.cmake b/lldb/cmake/caches/Apple-lldb-base.cmake index 03287b06285fc3e..76ab843c4b6b7ac 100644 --- a/lldb/cmake/caches/Apple-lldb-base.cmake +++ b/lldb/cmake/caches/Apple-lldb-base.cmake @@ -2,12 +2,8 @@ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "") set(LLVM_TARGETS_TO_BUILD X86;ARM;AArch64 CACHE STRING "") -set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") set(LLVM_ENABLE_ASSERTIONS ON CACHE BOOL "") set(LLVM_ENABLE_MODULES ON CACHE BOOL "") -# Release builds set these explicitly: -#set(LLDB_VERSION_MAJOR 9999 CACHE STRING "") -#set(LLDB_VERSION_MINOR 9 CACHE STRING "") -#set(LLDB_VERSION_PATCH 9 CACHE STRING "") -#set(LLDB_VERSION_SUFFIX git CACHE STRING "") +set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "") +set(LIBCXX_ENABLE_STATIC OFF CACHE BOOL "") diff --git a/lldb/cmake/caches/Apple-lldb-macOS.cmake b/lldb/cmake/caches/Apple-lldb-macOS.cmake index 81ff59385cf8292..50421d269c9e431 100644 --- a/lldb/cmake/caches/Apple-lldb-macOS.cmake +++ b/lldb/cmake/caches/Apple-lldb-macOS.cmake @@ -2,18 +2,25 @@ include(${CMAKE_CURRENT_LIST_DIR}/Apple-lldb-base.cmake) set(LLDB_BUILD_FRAMEWORK ON CACHE BOOL "") set(LLDB_NO_INSTALL_DEFAULT_RPATH ON CACHE BOOL "") +set(CMAKE_OSX_DEPLOYMENT_TARGET 10.11 CACHE STRING "") -# Set the install prefix to the default install location on the enduser machine. -# If the location is not writeable on the build machine, specify another prefix -# in the DESTDIR environment variable, e.g.: DESTDIR=/tmp ninja install +# Default install location on the enduser machine. On the build machine, use the +# DESTDIR environment variable in order to relocate the whole installation, e.g.: +# `DESTDIR=/tmp ninja install-distribution` set(CMAKE_INSTALL_PREFIX /Applications/Xcode.app/Contents/Developer/usr CACHE STRING "") -# Choose the install location for LLDB.framework so that it matches the -# INSTALL_RPATH of the lldb driver. It's either absolute or relative to -# CMAKE_INSTALL_PREFIX. In any case, DESTDIR will be an extra prefix. +# Install location for LLDB.framework on the enduser machine. +# DESTDIR will be an extra prefix. set(LLDB_FRAMEWORK_INSTALL_DIR /Applications/Xcode.app/Contents/SharedFrameworks CACHE STRING "") -# Release builds may change these: -set(CMAKE_OSX_DEPLOYMENT_TARGET 10.11 CACHE STRING "") -set(LLDB_USE_SYSTEM_DEBUGSERVER ON CACHE BOOL "") -set(LLVM_EXTERNALIZE_DEBUGINFO OFF CACHE BOOL "") +# Install location for externalized debug-info on the build machine. +# DESTDIR will be an extra prefix. +set(LLDB_DEBUGINFO_INSTALL_PREFIX /debuginfo CACHE STRING "") + +set(LLVM_DISTRIBUTION_COMPONENTS + lldb + liblldb + lldb-argdumper + darwin-debug + debugserver + CACHE STRING "") diff --git a/lldb/cmake/modules/AddLLDB.cmake b/lldb/cmake/modules/AddLLDB.cmake index 064b51f1a786a5f..a0b007c23d01f2f 100644 --- a/lldb/cmake/modules/AddLLDB.cmake +++ b/lldb/cmake/modules/AddLLDB.cmake @@ -36,7 +36,7 @@ function(add_lldb_library name) # MODULE;SHARED;STATIC library type and source files cmake_parse_arguments(PARAM "MODULE;SHARED;STATIC;OBJECT;PLUGIN" - "ENTITLEMENTS" + "INSTALL_PREFIX;ENTITLEMENTS" "EXTRA_CXXFLAGS;DEPENDS;LINK_LIBS;LINK_COMPONENTS" ${ARGN}) llvm_process_sources(srcs ${PARAM_UNPARSED_ARGUMENTS}) @@ -91,38 +91,26 @@ function(add_lldb_library name) ${pass_ENTITLEMENTS} ${pass_NO_INSTALL_RPATH} ) + endif() - if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "liblldb") - if (PARAM_SHARED) - if(${name} STREQUAL "liblldb" AND LLDB_BUILD_FRAMEWORK) - if(LLDB_FRAMEWORK_INSTALL_DIR) - set(install_dir ${LLDB_FRAMEWORK_INSTALL_DIR}) - else() - set(install_dir ".") - endif() - else() - set(install_dir lib${LLVM_LIBDIR_SUFFIX}) - endif() - install(TARGETS ${name} - COMPONENT ${name} - RUNTIME DESTINATION bin - LIBRARY DESTINATION ${install_dir} - ARCHIVE DESTINATION ${install_dir}) - else() - install(TARGETS ${name} - COMPONENT ${name} - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) - endif() - if (NOT CMAKE_CONFIGURATION_TYPES) - add_llvm_install_targets(install-${name} - DEPENDS ${name} - COMPONENT ${name}) - endif() + if(PARAM_SHARED) + set(install_dest lib${LLVM_LIBDIR_SUFFIX}) + if(PARAM_INSTALL_PREFIX) + set(install_dest ${PARAM_INSTALL_PREFIX}) + endif() + # RUNTIME is relevant for DLL platforms, FRAMEWORK for macOS + install(TARGETS ${name} COMPONENT ${name} + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${install_dest} + ARCHIVE DESTINATION ${install_dest} + FRAMEWORK DESTINATION ${install_dest}) + if (NOT CMAKE_CONFIGURATION_TYPES) + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT ${name}) endif() endif() - # Hack: only some LLDB libraries depend on the clang autogenerated headers, # but it is simple enough to make all of LLDB depend on some of those # headers without negatively impacting much of anything. @@ -134,7 +122,11 @@ function(add_lldb_library name) target_compile_options(${name} PRIVATE ${PARAM_EXTRA_CXXFLAGS}) if(PARAM_PLUGIN) - set_target_properties(${name} PROPERTIES FOLDER "lldb plugins") + get_property(parent_dir DIRECTORY PROPERTY PARENT_DIRECTORY) + if(EXISTS ${parent_dir}) + get_filename_component(category ${parent_dir} NAME) + set_target_properties(${name} PROPERTIES FOLDER "lldb plugins/${category}") + endif() else() set_target_properties(${name} PROPERTIES FOLDER "lldb libraries") endif() @@ -143,7 +135,7 @@ endfunction(add_lldb_library) function(add_lldb_executable name) cmake_parse_arguments(ARG "GENERATE_INSTALL" - "ENTITLEMENTS" + "INSTALL_PREFIX;ENTITLEMENTS" "LINK_LIBS;LINK_COMPONENTS" ${ARGN} ) @@ -167,16 +159,22 @@ function(add_lldb_executable name) set_target_properties(${name} PROPERTIES FOLDER "lldb executables") if(ARG_GENERATE_INSTALL) - install(TARGETS ${name} - COMPONENT ${name} - RUNTIME DESTINATION bin) + set(install_dest bin) + if(ARG_INSTALL_PREFIX) + set(install_dest ${ARG_INSTALL_PREFIX}) + endif() + install(TARGETS ${name} COMPONENT ${name} + RUNTIME DESTINATION ${install_dest}) if (NOT CMAKE_CONFIGURATION_TYPES) add_llvm_install_targets(install-${name} DEPENDS ${name} COMPONENT ${name}) endif() + if(APPLE AND ARG_INSTALL_PREFIX) + lldb_add_post_install_steps_darwin(${name} ${ARG_INSTALL_PREFIX}) + endif() endif() -endfunction(add_lldb_executable) +endfunction() macro(add_lldb_tool_subdirectory name) @@ -184,81 +182,93 @@ macro(add_lldb_tool_subdirectory name) endmacro() function(add_lldb_tool name) - add_lldb_executable(${name} GENERATE_INSTALL ${ARGN}) -endfunction() - -# Support appending linker flags to an existing target. -# This will preserve the existing linker flags on the -# target, if there are any. -function(lldb_append_link_flags target_name new_link_flags) - # Retrieve existing linker flags. - get_target_property(current_link_flags ${target_name} LINK_FLAGS) - - # If we had any linker flags, include them first in the new linker flags. - if(current_link_flags) - set(new_link_flags "${current_link_flags} ${new_link_flags}") + cmake_parse_arguments(ARG "ADD_TO_FRAMEWORK" "" "" ${ARGN}) + if(LLDB_BUILD_FRAMEWORK AND ARG_ADD_TO_FRAMEWORK) + set(subdir LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources) + add_lldb_executable(${name} + GENERATE_INSTALL + INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR}/${subdir} + ${ARG_UNPARSED_ARGUMENTS} + ) + lldb_add_to_buildtree_lldb_framework(${name} ${subdir}) + return() endif() - # Now set them onto the target. - set_target_properties(${target_name} PROPERTIES LINK_FLAGS ${new_link_flags}) + add_lldb_executable(${name} GENERATE_INSTALL ${ARG_UNPARSED_ARGUMENTS}) endfunction() -# For tools that depend on liblldb, account for varying directory structures in -# which LLDB.framework can be used and distributed: In the build-tree we find it -# by its absolute target path. This is only relevant for running the test suite. -# In the install step CMake will remove this entry and insert the final RPATHs. -# These are relative to the file path from where the tool will be loaded on the -# enduser system. -# -# Note that the LLVM install-tree doesn't match the enduser system structure -# for LLDB.framework, so by default dependent tools will not be functional in -# their install location. The LLDB_FRAMEWORK_INSTALL_DIR variable allows to fix -# this. If specified, it causes the install-tree location of the framework to be -# added as an extra RPATH below. -# -function(lldb_setup_framework_rpaths_in_tool name) - # The installed framework is relocatable and can be in different locations. - set(rpaths_install_tree) - - if(LLDB_FRAMEWORK_INSTALL_DIR) - list(APPEND rpaths_install_tree "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}") - endif() - - list(APPEND rpaths_install_tree "@loader_path/../../../SharedFrameworks") - list(APPEND rpaths_install_tree "@loader_path/../../System/Library/PrivateFrameworks") - list(APPEND rpaths_install_tree "@loader_path/../../Library/PrivateFrameworks") - - # In the build-tree, we know the exact path to the framework directory. - get_target_property(framework_target_dir liblldb LIBRARY_OUTPUT_DIRECTORY) - - # If LLDB_NO_INSTALL_DEFAULT_RPATH was NOT enabled (default), this overwrites - # the default settings from llvm_setup_rpath(). - set_target_properties(${name} PROPERTIES - BUILD_WITH_INSTALL_RPATH OFF - BUILD_RPATH "${framework_target_dir}" - INSTALL_RPATH "${rpaths_install_tree}" - ) - - add_dependencies(${name} lldb-framework) -endfunction() - -# Unified handling for executable LLDB.framework resources. Given the name of an -# executable target, this function adds a post-build step to copy it to the -# framework bundle in the build-tree. -function(lldb_add_to_framework name) - set(subdir "LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources") - +# The test suite relies on finding LLDB.framework binary resources in the +# build-tree. Remove them before installing to avoid collisions with their +# own install targets. +function(lldb_add_to_buildtree_lldb_framework name subdir) # Destination for the copy in the build-tree. While the framework target may # not exist yet, it will exist when the generator expression gets expanded. - set(copy_dest "$/../../../${subdir}") + get_target_property(framework_build_dir liblldb LIBRARY_OUTPUT_DIRECTORY) + set(copy_dest "${framework_build_dir}/${subdir}/$") - # Copy into the framework's Resources directory for testing. + # Copy into the given subdirectory for testing. add_custom_command(TARGET ${name} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ ${copy_dest} COMMENT "Copy ${name} to ${copy_dest}" ) endfunction() +# Add extra install steps for dSYM creation and stripping for the given target. +function(lldb_add_post_install_steps_darwin name install_prefix) + if(NOT APPLE) + message(WARNING "Darwin-specific functionality; not currently available on non-Apple platforms.") + return() + endif() + + get_target_property(output_name ${name} OUTPUT_NAME) + if(NOT output_name) + set(output_name ${name}) + endif() + + get_target_property(is_framework ${name} FRAMEWORK) + if(is_framework) + get_target_property(buildtree_dir ${name} LIBRARY_OUTPUT_DIRECTORY) + if(buildtree_dir) + set(bundle_subdir ${output_name}.framework/Versions/${LLDB_FRAMEWORK_VERSION}/) + else() + message(SEND_ERROR "Framework target ${name} missing property for output directory. Cannot generate post-install steps.") + return() + endif() + else() + get_target_property(target_type ${name} TYPE) + if(target_type STREQUAL "EXECUTABLE") + set(buildtree_dir ${LLVM_RUNTIME_OUTPUT_INTDIR}) + else() + # Only ever install shared libraries. + set(output_name "lib${output_name}.dylib") + set(buildtree_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}) + endif() + endif() + + # Generate dSYM + set(dsym_name ${output_name}.dSYM) + if(is_framework) + set(dsym_name ${output_name}.framework.dSYM) + endif() + if(LLDB_DEBUGINFO_INSTALL_PREFIX) + # This makes the path absolute, so we must respect DESTDIR. + set(dsym_name "\$ENV\{DESTDIR\}${LLDB_DEBUGINFO_INSTALL_PREFIX}/${dsym_name}") + endif() + + set(buildtree_name ${buildtree_dir}/${bundle_subdir}${output_name}) + install(CODE "message(STATUS \"Externalize debuginfo: ${dsym_name}\")" COMPONENT ${name}) + install(CODE "execute_process(COMMAND xcrun dsymutil -o=${dsym_name} ${buildtree_name})" + COMPONENT ${name}) + + # Strip distribution binary with -ST (removing debug symbol table entries and + # Swift symbols). Avoid CMAKE_INSTALL_DO_STRIP and llvm_externalize_debuginfo() + # as they can't be configured sufficiently. + set(installtree_name "\$ENV\{DESTDIR\}${install_prefix}/${bundle_subdir}${output_name}") + install(CODE "message(STATUS \"Stripping: ${installtree_name}\")" COMPONENT ${name}) + install(CODE "execute_process(COMMAND xcrun strip -ST ${installtree_name})" + COMPONENT ${name}) +endfunction() + # CMake's set_target_properties() doesn't allow to pass lists for RPATH # properties directly (error: "called with incorrect number of arguments"). # Instead of defining two list variables each time, use this helper function. @@ -270,3 +280,27 @@ function(lldb_setup_rpaths name) INSTALL_RPATH "${LIST_INSTALL_RPATH}" ) endfunction() + +function(lldb_find_system_debugserver path) + execute_process(COMMAND xcode-select -p + RESULT_VARIABLE exit_code + OUTPUT_VARIABLE xcode_dev_dir + ERROR_VARIABLE error_msg + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(exit_code) + message(WARNING "`xcode-select -p` failed:\n${error_msg}") + else() + set(subpath "LLDB.framework/Resources/debugserver") + set(path_shared "${xcode_dev_dir}/../SharedFrameworks/${subpath}") + set(path_private "${xcode_dev_dir}/Library/PrivateFrameworks/${subpath}") + + if(EXISTS ${path_shared}) + set(${path} ${path_shared} PARENT_SCOPE) + elseif(EXISTS ${path_private}) + set(${path} ${path_private} PARENT_SCOPE) + else() + message(WARNING "System debugserver requested, but not found. " + "Candidates don't exist: ${path_shared}\n${path_private}") + endif() + endif() +endfunction() diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake index 13b21a09166dac3..9f5c9ccc03ba28f 100644 --- a/lldb/cmake/modules/LLDBConfig.cmake +++ b/lldb/cmake/modules/LLDBConfig.cmake @@ -50,6 +50,7 @@ option(LLDB_USE_SYSTEM_SIX "Use six.py shipped with system and do not install a option(LLDB_USE_ENTITLEMENTS "When codesigning, use entitlements if available" ON) option(LLDB_BUILD_FRAMEWORK "Build LLDB.framework (Darwin only)" OFF) option(LLDB_NO_INSTALL_DEFAULT_RPATH "Disable default RPATH settings in binaries" OFF) +option(LLDB_USE_SYSTEM_DEBUGSERVER "Use the system's debugserver for testing (Darwin only)." OFF) if(LLDB_BUILD_FRAMEWORK) if(NOT APPLE) @@ -65,11 +66,18 @@ if(LLDB_BUILD_FRAMEWORK) set(LLDB_FRAMEWORK_BUILD_DIR bin CACHE STRING "Output directory for LLDB.framework") set(LLDB_FRAMEWORK_INSTALL_DIR Library/Frameworks CACHE STRING "Install directory for LLDB.framework") - # Set designated directory for all dSYMs. Essentially, this emits the - # framework's dSYM outside of the framework directory. - if(LLVM_EXTERNALIZE_DEBUGINFO) - set(LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin CACHE STRING - "Directory to emit dSYM files stripped from executables and libraries (Darwin Only)") + # Essentially, emit the framework's dSYM outside of the framework directory. + set(LLDB_DEBUGINFO_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin CACHE STRING + "Directory to emit dSYM files stripped from executables and libraries (Darwin Only)") +endif() + +if(APPLE AND CMAKE_GENERATOR STREQUAL Xcode) + if(NOT LLDB_EXPLICIT_XCODE_CACHE_USED) + message(WARNING + "When building with Xcode, we recommend using the corresponding cache script. " + "If this was a mistake, clean your build directory and re-run CMake with:\n" + " -C ${CMAKE_SOURCE_DIR}/cmake/caches/Apple-lldb-Xcode.cmake\n" + "See: https://lldb.llvm.org/resources/build.html#cmakegeneratedxcodeproject\n") endif() endif() @@ -140,7 +148,7 @@ function(find_python_libs_windows) REGEX "^#define[ \t]+PY_VERSION[ \t]+\"[^\"]+\"") string(REGEX REPLACE "^#define[ \t]+PY_VERSION[ \t]+\"([^\"+]+)[+]?\".*" "\\1" PYTHONLIBS_VERSION_STRING "${python_version_str}") - message(STATUS "Found Python version ${PYTHONLIBS_VERSION_STRING}") + message(STATUS "Found Python library version ${PYTHONLIBS_VERSION_STRING}") string(REGEX REPLACE "([0-9]+)[.]([0-9]+)[.][0-9]+" "python\\1\\2" PYTHONLIBS_BASE_NAME "${PYTHONLIBS_VERSION_STRING}") unset(python_version_str) else() @@ -176,19 +184,37 @@ function(find_python_libs_windows) return() endif() - set (PYTHON_EXECUTABLE ${PYTHON_EXE} PARENT_SCOPE) - set (PYTHON_LIBRARY ${PYTHON_LIB} PARENT_SCOPE) - set (PYTHON_DLL ${PYTHON_DLL} PARENT_SCOPE) - set (PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIR} PARENT_SCOPE) + # Find the version of the Python interpreter. + execute_process(COMMAND "${PYTHON_EXE}" -c + "import sys; sys.stdout.write(';'.join([str(x) for x in sys.version_info[:3]]))" + OUTPUT_VARIABLE PYTHON_VERSION_OUTPUT + RESULT_VARIABLE PYTHON_VERSION_RESULT + ERROR_QUIET) + if(NOT PYTHON_VERSION_RESULT) + string(REPLACE ";" "." PYTHON_VERSION_STRING "${PYTHON_VERSION_OUTPUT}") + list(GET PYTHON_VERSION_OUTPUT 0 PYTHON_VERSION_MAJOR) + list(GET PYTHON_VERSION_OUTPUT 1 PYTHON_VERSION_MINOR) + list(GET PYTHON_VERSION_OUTPUT 2 PYTHON_VERSION_PATCH) + endif() - message(STATUS "LLDB Found PythonExecutable: ${PYTHON_EXE}") - message(STATUS "LLDB Found PythonLibs: ${PYTHON_LIB}") + # Set the same variables as FindPythonInterp and FindPythonLibs. + set(PYTHON_EXECUTABLE ${PYTHON_EXE} PARENT_SCOPE) + set(PYTHON_LIBRARY ${PYTHON_LIB} PARENT_SCOPE) + set(PYTHON_DLL ${PYTHON_DLL} PARENT_SCOPE) + set(PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIR} PARENT_SCOPE) + set(PYTHONLIBS_VERSION_STRING "${PYTHONLIBS_VERSION_STRING}" PARENT_SCOPE) + set(PYTHON_VERSION_STRING ${PYTHON_VERSION_STRING} PARENT_SCOPE) + set(PYTHON_VERSION_MAJOR ${PYTHON_VERSION_MAJOR} PARENT_SCOPE) + set(PYTHON_VERSION_MINOR ${PYTHON_VERSION_MINOR} PARENT_SCOPE) + set(PYTHON_VERSION_PATCH ${PYTHON_VERSION_PATCH} PARENT_SCOPE) + + message(STATUS "LLDB Found PythonExecutable: ${PYTHON_EXECUTABLE} (${PYTHON_VERSION_STRING})") + message(STATUS "LLDB Found PythonLibs: ${PYTHON_LIB} (${PYTHONLIBS_VERSION_STRING})") message(STATUS "LLDB Found PythonDLL: ${PYTHON_DLL}") message(STATUS "LLDB Found PythonIncludeDirs: ${PYTHON_INCLUDE_DIR}") endfunction(find_python_libs_windows) if (NOT LLDB_DISABLE_PYTHON) - if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") find_python_libs_windows() @@ -197,8 +223,22 @@ if (NOT LLDB_DISABLE_PYTHON) add_definitions( -DLLDB_PYTHON_HOME="${LLDB_PYTHON_HOME}" ) endif() else() - find_package(PythonInterp) - find_package(PythonLibs) + find_package(PythonInterp REQUIRED) + find_package(PythonLibs REQUIRED) + endif() + + if (NOT CMAKE_CROSSCOMPILING) + string(REPLACE "." ";" pythonlibs_version_list ${PYTHONLIBS_VERSION_STRING}) + list(GET pythonlibs_version_list 0 pythonlibs_major) + list(GET pythonlibs_version_list 1 pythonlibs_minor) + + # Ignore the patch version. Some versions of macOS report a different patch + # version for the system provided interpreter and libraries. + if (NOT PYTHON_VERSION_MAJOR VERSION_EQUAL pythonlibs_major OR + NOT PYTHON_VERSION_MINOR VERSION_EQUAL pythonlibs_minor) + message(FATAL_ERROR "Found incompatible Python interpreter (${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})" + " and Python libraries (${pythonlibs_major}.${pythonlibs_minor})") + endif() endif() if (PYTHON_INCLUDE_DIR) @@ -293,8 +333,8 @@ set(LLDB_VERSION "${LLDB_VERSION_MAJOR}.${LLDB_VERSION_MINOR}.${LLDB_VERSION_PAT message(STATUS "LLDB version: ${LLDB_VERSION}") include_directories(BEFORE - ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/include ) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) @@ -305,7 +345,6 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN ".cmake" EXCLUDE - PATTERN "Config.h" EXCLUDE ) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/ @@ -335,7 +374,6 @@ if (APPLE) if(NOT IOS) find_library(CARBON_LIBRARY Carbon) find_library(CORE_SERVICES_LIBRARY CoreServices) - find_library(DEBUG_SYMBOLS_LIBRARY DebugSymbols PATHS "/System/Library/PrivateFrameworks") endif() find_library(FOUNDATION_LIBRARY Foundation) find_library(CORE_FOUNDATION_LIBRARY CoreFoundation) @@ -399,28 +437,6 @@ if (NOT LLDB_DISABLE_CURSES) include_directories(${CURSES_INCLUDE_DIR}) endif () -check_cxx_symbol_exists("__GLIBCXX__" "string" LLDB_USING_LIBSTDCXX) -if(LLDB_USING_LIBSTDCXX) - # There doesn't seem to be an easy way to check the library version. Instead, we rely on the - # fact that std::set did not have the allocator constructor available until version 4.9 - check_cxx_source_compiles(" - #include - std::set s = std::set(std::allocator()); - int main() { return 0; }" - LLDB_USING_LIBSTDCXX_4_9) - if (NOT LLDB_USING_LIBSTDCXX_4_9 AND NOT LLVM_ENABLE_EH) - message(WARNING - "You appear to be linking to libstdc++ version lesser than 4.9 without exceptions " - "enabled. These versions of the library have an issue, which causes occasional " - "lldb crashes. See for " - "details. Possible courses of action are:\n" - "- use libstdc++ version 4.9 or newer\n" - "- use libc++ (via LLVM_ENABLE_LIBCXX)\n" - "- enable exceptions (via LLVM_ENABLE_EH)\n" - "- ignore this warning and accept occasional instability") - endif() -endif() - if ((CMAKE_SYSTEM_NAME MATCHES "Android") AND LLVM_BUILD_STATIC AND ((ANDROID_ABI MATCHES "armeabi") OR (ANDROID_ABI MATCHES "mips"))) add_definitions(-DANDROID_USE_ACCEPT_WORKAROUND) diff --git a/lldb/cmake/modules/LLDBFramework.cmake b/lldb/cmake/modules/LLDBFramework.cmake index 04f35e1951d2a0a..7a00ec49fdedee0 100644 --- a/lldb/cmake/modules/LLDBFramework.cmake +++ b/lldb/cmake/modules/LLDBFramework.cmake @@ -26,12 +26,15 @@ set_target_properties(liblldb PROPERTIES MACOSX_FRAMEWORK_INFO_PLIST ${LLDB_SOURCE_DIR}/resources/LLDB-Info.plist.in ) -# Defined in AddLLVM.cmake; handles edge cases for multi-config generators +# Used in llvm_add_library() to set default output directories for multi-config +# generators. Overwrite to account for special framework output directory. set_output_directory(liblldb BINARY_DIR ${framework_target_dir} LIBRARY_DIR ${framework_target_dir} ) +lldb_add_post_install_steps_darwin(liblldb ${LLDB_FRAMEWORK_INSTALL_DIR}) + # Affects the layout of the framework bundle (default is macOS layout). if(IOS) set_target_properties(liblldb PROPERTIES @@ -41,12 +44,8 @@ else() XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") endif() -# Target to capture extra steps for a fully functional framework bundle. -add_custom_target(lldb-framework ALL) -add_dependencies(lldb-framework liblldb) - # Apart from this one, CMake creates all required symlinks in the framework bundle. -add_custom_command(TARGET lldb-framework POST_BUILD +add_custom_command(TARGET liblldb POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink Versions/Current/Headers ${framework_target_dir}/LLDB.framework/Headers @@ -78,12 +77,13 @@ foreach(header endforeach() # Wrap output in a target, so lldb-framework can depend on it. -add_custom_target(lldb-framework-headers DEPENDS ${lldb_staged_headers}) -add_dependencies(lldb-framework lldb-framework-headers) +add_custom_target(liblldb-resource-headers DEPENDS ${lldb_staged_headers}) +set_target_properties(liblldb-resource-headers PROPERTIES FOLDER "lldb misc") +add_dependencies(liblldb liblldb-resource-headers) # At build time, copy the staged headers into the framework bundle (and do # some post-processing in-place). -add_custom_command(TARGET lldb-framework-headers POST_BUILD +add_custom_command(TARGET liblldb POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${lldb_header_staging} $/Headers COMMAND ${LLDB_SOURCE_DIR}/scripts/framework-header-fix.sh $/Headers ${LLDB_VERSION} COMMENT "LLDB.framework: copy framework headers" @@ -92,7 +92,7 @@ add_custom_command(TARGET lldb-framework-headers POST_BUILD # Copy vendor-specific headers from clang (without staging). if(NOT IOS) if (TARGET clang-resource-headers) - add_dependencies(lldb-framework clang-resource-headers) + add_dependencies(liblldb clang-resource-headers) set(clang_resource_headers_dir $) else() # In standalone builds try the best possible guess @@ -114,7 +114,7 @@ if(NOT IOS) endif() endif() - add_custom_command(TARGET lldb-framework POST_BUILD + add_custom_command(TARGET liblldb POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${clang_resource_headers_dir} $/Resources/Clang/include diff --git a/lldb/cmake/modules/LLDBGenerateConfig.cmake b/lldb/cmake/modules/LLDBGenerateConfig.cmake index 33b7e98318e0ff4..119021c587b85cb 100644 --- a/lldb/cmake/modules/LLDBGenerateConfig.cmake +++ b/lldb/cmake/modules/LLDBGenerateConfig.cmake @@ -12,6 +12,7 @@ check_symbol_exists(sigaction signal.h HAVE_SIGACTION) check_cxx_symbol_exists(accept4 "sys/socket.h" HAVE_ACCEPT4) check_include_file(termios.h HAVE_TERMIOS_H) +check_include_file("sys/types.h" HAVE_SYS_TYPES_H) check_include_files("sys/types.h;sys/event.h" HAVE_SYS_EVENT_H) check_cxx_symbol_exists(process_vm_readv "sys/uio.h" HAVE_PROCESS_VM_READV) diff --git a/lldb/cmake/modules/LLDBStandalone.cmake b/lldb/cmake/modules/LLDBStandalone.cmake index 8c30f84f0704294..4b67d164d1c24f4 100644 --- a/lldb/cmake/modules/LLDBStandalone.cmake +++ b/lldb/cmake/modules/LLDBStandalone.cmake @@ -1,3 +1,20 @@ +option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF) + +find_package(LLVM REQUIRED CONFIG HINTS "${LLVM_DIR}" NO_CMAKE_FIND_ROOT_PATH) +find_package(Clang REQUIRED CONFIG HINTS "${Clang_DIR}" NO_CMAKE_FIND_ROOT_PATH) + +# We set LLVM_CMAKE_PATH so that GetSVN.cmake is found correctly when building SVNVersion.inc +set(LLVM_CMAKE_PATH ${LLVM_CMAKE_DIR} CACHE PATH "Path to LLVM CMake modules") + +set(LLVM_MAIN_SRC_DIR ${LLVM_BUILD_MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree") +set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_INCLUDE_DIR} CACHE PATH "Path to llvm/include") +set(LLVM_BINARY_DIR ${LLVM_BINARY_DIR} CACHE PATH "Path to LLVM build tree") + +set(lit_file_name "llvm-lit") +if(CMAKE_HOST_WIN32 AND NOT CYGWIN) + set(lit_file_name "${lit_file_name}.py") +endif() + function(append_configuration_directories input_dir output_dirs) set(dirs_list ${input_dir}) foreach(config_type ${LLVM_CONFIGURATION_TYPES}) @@ -7,42 +24,16 @@ function(append_configuration_directories input_dir output_dirs) set(${output_dirs} ${dirs_list} PARENT_SCOPE) endfunction() -# If we are not building as a part of LLVM, build LLDB as an -# standalone project, using LLVM as an external library: -if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - project(lldb) - - option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF) - - set(LLDB_PATH_TO_LLVM_BUILD "" CACHE PATH "Path to LLVM build tree") - set(LLDB_PATH_TO_CLANG_BUILD "${LLDB_PATH_TO_LLVM_BUILD}" CACHE PATH "Path to Clang build tree") - - file(TO_CMAKE_PATH "${LLDB_PATH_TO_LLVM_BUILD}" LLDB_PATH_TO_LLVM_BUILD) - file(TO_CMAKE_PATH "${LLDB_PATH_TO_CLANG_BUILD}" LLDB_PATH_TO_CLANG_BUILD) - - find_package(LLVM REQUIRED CONFIG - HINTS "${LLDB_PATH_TO_LLVM_BUILD}" NO_CMAKE_FIND_ROOT_PATH) - find_package(Clang REQUIRED CONFIG - HINTS "${LLDB_PATH_TO_CLANG_BUILD}" NO_CMAKE_FIND_ROOT_PATH) - - # We set LLVM_CMAKE_PATH so that GetSVN.cmake is found correctly when building SVNVersion.inc - set(LLVM_CMAKE_PATH ${LLVM_CMAKE_DIR} CACHE PATH "Path to LLVM CMake modules") - - set(LLVM_MAIN_SRC_DIR ${LLVM_BUILD_MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree") - set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_INCLUDE_DIR} CACHE PATH "Path to llvm/include") - set(LLVM_BINARY_DIR ${LLVM_BINARY_DIR} CACHE PATH "Path to LLVM build tree") - - set(lit_file_name "llvm-lit") - if(CMAKE_HOST_WIN32 AND NOT CYGWIN) - set(lit_file_name "${lit_file_name}.py") - endif() - append_configuration_directories(${LLVM_TOOLS_BINARY_DIR} config_dirs) - find_program(lit_full_path ${lit_file_name} ${config_dirs} NO_DEFAULT_PATH) - set(LLVM_DEFAULT_EXTERNAL_LIT ${lit_full_path} CACHE PATH "Path to llvm-lit") +append_configuration_directories(${LLVM_TOOLS_BINARY_DIR} config_dirs) +find_program(lit_full_path ${lit_file_name} ${config_dirs} NO_DEFAULT_PATH) +set(LLVM_DEFAULT_EXTERNAL_LIT ${lit_full_path} CACHE PATH "Path to llvm-lit") +if(LLVM_TABLEGEN) + set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN}) +else() if(CMAKE_CROSSCOMPILING) - set(LLVM_NATIVE_BUILD "${LLDB_PATH_TO_LLVM_BUILD}/NATIVE") + set(LLVM_NATIVE_BUILD "${LLVM_BINARY_DIR}/NATIVE") if (NOT EXISTS "${LLVM_NATIVE_BUILD}") message(FATAL_ERROR "Attempting to cross-compile LLDB standalone but no native LLVM build @@ -67,57 +58,46 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) append_configuration_directories(${LLVM_TOOLS_BINARY_DIR} config_dirs) find_program(LLVM_TABLEGEN_EXE ${tblgen_file_name} ${config_dirs} NO_DEFAULT_PATH) endif() +endif() - # They are used as destination of target generators. - set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) - set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) - if(WIN32 OR CYGWIN) - # DLL platform -- put DLLs into bin. - set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) - else() - set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) - endif() - - # We append the directory in which LLVMConfig.cmake lives. We expect LLVM's - # CMake modules to be in that directory as well. - list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}") - include(AddLLVM) - include(TableGen) - include(HandleLLVMOptions) - include(CheckAtomic) - - if (PYTHON_EXECUTABLE STREQUAL "") - set(Python_ADDITIONAL_VERSIONS 3.5 3.4 3.3 3.2 3.1 3.0 2.7 2.6 2.5) - include(FindPythonInterp) - if( NOT PYTHONINTERP_FOUND ) - message(FATAL_ERROR - "Unable to find Python interpreter, required for builds and testing. - Please install Python or specify the PYTHON_EXECUTABLE CMake variable.") - endif() - else() - message(STATUS "Found PythonInterp: ${PYTHON_EXECUTABLE}") - endif() - - set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") - set(LLVM_INCLUDE_TESTS ON CACHE INTERNAL "") +# They are used as destination of target generators. +set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin) +set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX}) +if(WIN32 OR CYGWIN) + # DLL platform -- put DLLs into bin. + set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) +else() + set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) +endif() - option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON) - if(LLVM_USE_FOLDERS) - set_property(GLOBAL PROPERTY USE_FOLDERS ON) - endif() +# We append the directory in which LLVMConfig.cmake lives. We expect LLVM's +# CMake modules to be in that directory as well. +list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}") +include(AddLLVM) +include(TableGen) +include(HandleLLVMOptions) +include(CheckAtomic) +include(LLVMDistributionSupport) + +set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") +set(LLVM_INCLUDE_TESTS ON CACHE INTERNAL "") + +option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON) +if(LLVM_USE_FOLDERS) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) +endif() - set_target_properties(clang-tablegen-targets PROPERTIES FOLDER "lldb misc") - set_target_properties(intrinsics_gen PROPERTIES FOLDER "lldb misc") +set_target_properties(clang-tablegen-targets PROPERTIES FOLDER "lldb misc") +set_target_properties(intrinsics_gen PROPERTIES FOLDER "lldb misc") - set(CMAKE_INCLUDE_CURRENT_DIR ON) - include_directories( - "${CMAKE_BINARY_DIR}/include" - "${LLVM_INCLUDE_DIRS}" - "${CLANG_INCLUDE_DIRS}") +set(CMAKE_INCLUDE_CURRENT_DIR ON) +include_directories( + "${CMAKE_BINARY_DIR}/include" + "${LLVM_INCLUDE_DIRS}" + "${CLANG_INCLUDE_DIRS}") - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}) - set(LLDB_BUILT_STANDALONE 1) -endif() +set(LLDB_BUILT_STANDALONE 1) diff --git a/lldb/docs/_static/lldb.css b/lldb/docs/_static/lldb.css index aef51a172602a20..53b725940831030 100644 --- a/lldb/docs/_static/lldb.css +++ b/lldb/docs/_static/lldb.css @@ -10,6 +10,14 @@ div.body { max-width: 90%; } +div.note { + padding: 20px 20px 10px 20px; +} + +div.note p.admonition-title { + font-size: 130%; +} + table.mapping { width: 100%; } diff --git a/lldb/docs/code-signing.txt b/lldb/docs/code-signing.txt deleted file mode 100644 index 3da3a8085e661e0..000000000000000 --- a/lldb/docs/code-signing.txt +++ /dev/null @@ -1,66 +0,0 @@ -To use the in-tree debug server on macOS, lldb needs to be code signed. The -Debug, DebugClang and Release builds are set to code sign using a code signing -certificate named "lldb_codesign". This document explains how to set up the -signing certificate. - -Note that it's possible to build and use lldb on macOS without setting up code -signing by using the system's debug server. To configure lldb in this way with -cmake, specify -DLLDB_CODESIGN_IDENTITY=''. - -If you have re-installed a new OS, please delete all old lldb_codesign items -from your keychain. There will be a code signing certification and a public -and private key. Reboot after deleting them. You will also need to delete and -build folders that contained old signed items. The darwin kernel will cache -code signing using the executable's file system node, so you will need to -delete the file so the kernel clears its cache. - -If you don't have one yet you will need to: -- Launch /Applications/Utilities/Keychain Access.app - -- In Keychain Access select the "login" keychain in the "Keychains" - list in the upper left hand corner of the window. - -- Select the following menu item: - - Keychain Access->Certificate Assistant->Create a Certificate... - -- Set the following settings - - Name = lldb_codesign - Identity Type = Self Signed Root - Certificate Type = Code Signing - -- Click Create -- Click Continue -- Click Done -- Click on the "My Certificates" -- Double click on your new lldb_codesign certificate -- Turn down the "Trust" disclosure triangle, scroll to the "Code Signing" trust - pulldown menu and select "Always Trust" and authenticate as needed using your - username and password. -- Drag the new "lldb_codesign" code signing certificate (not the public or private - keys of the same name) from the "login" keychain to the "System" keychain in the - Keychains pane on the left hand side of the main Keychain Access window. This will - move this certificate to the "System" keychain. You'll have to authorize a few - more times, set it to be "Always trusted" when asked. -- Remove "~/Desktop/lldb_codesign.cer" file on your desktop if there is one. -- In the Keychain Access GUI, click and drag "lldb_codesign" in the "System" keychain - onto the desktop. The drag will create a "~/Desktop/lldb_codesign.cer" file used in - the next step. -- Switch to Terminal, and run the following: - -sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer -rm -f ~/Desktop/lldb_codesign.cer - -- Drag the "lldb_codesign" certificate from the "System" keychain back into the - "login" keychain -- Quit Keychain Access -- Reboot -- Clean by removing all previously creating code signed binaries and rebuild - lldb and you should be able to debug. - -When you build your LLDB for the first time, the Xcode GUI will prompt you for permission -to use the "lldb_codesign" keychain. Be sure to click "Always Allow" on your first -build. From here on out, the "lldb_codesign" will be trusted and you can build from the -command line without having to authorize. Also the first time you debug using a LLDB that -was built with this code signing certificate, you will need to authenticate once. diff --git a/lldb/docs/doxygen.cfg.in b/lldb/docs/doxygen.cfg.in index c882b36bb084261..7228a1ea4a813c0 100644 --- a/lldb/docs/doxygen.cfg.in +++ b/lldb/docs/doxygen.cfg.in @@ -303,7 +303,7 @@ EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. -EXTRACT_PRIVATE = NO +EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. diff --git a/lldb/docs/index.rst b/lldb/docs/index.rst index 595a1214f37cb16..7e287b1d9ae4b3e 100644 --- a/lldb/docs/index.rst +++ b/lldb/docs/index.rst @@ -15,7 +15,7 @@ Objective-C and C++ on the desktop and iOS devices and simulator. All of the code in the LLDB project is available under the `"Apache 2.0 License with LLVM exceptions"`_. -.. _"Apache 2.0 License with LLVM exceptions": http://llvm.org/docs/DeveloperPolicy.html#new-llvm-project-license-framework +.. _"Apache 2.0 License with LLVM exceptions": https://llvm.org/docs/DeveloperPolicy.html#new-llvm-project-license-framework Why a New Debugger? ------------------- @@ -80,27 +80,31 @@ expected to work, with functionality improving rapidly. Get Involved ------------ -To check out the code, use: +Check out the LLVM source-tree with git and find the sources in the `lldb` +subdirectory: -svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb +:: -Note that LLDB generally builds from top-of-trunk + > git clone https://github.com/llvm/llvm-project.git -* On macOS with Xcode -* On Linux and FreeBSD (with clang and libstdc++/libc++) -* On NetBSD (with GCC and clang and libstdc++/libc++) -* On Windows with VS 2012 or higher using CMake +Note that LLDB generally builds from top-of-trunk using CMake and Ninja. +Additionally it builds: -See the LLDB Build Page for platform-specific build instructions. +* on macOS with a :ref:`generated Xcode project ` +* on Linux and FreeBSD with clang and libstdc++/libc++ +* on NetBSD with GCC/clang and libstdc++/libc++ +* on Windows with a generated project for VS 2017 or higher + +See the :doc:`LLDB Build Page ` for build instructions. Discussions about LLDB should go to the `lldb-dev `__ mailing list. Commit -messages for the lldb SVN module are automatically sent to the `lldb-commits +messages are automatically sent to the `lldb-commits `__ mailing list , and this is also the preferred mailing list for patch submissions. -See the Projects page if you are looking for some interesting areas to -contribute to lldb. +See the :doc:`Projects page ` if you are looking for some +interesting areas to contribute to lldb. .. toctree:: :hidden: @@ -155,6 +159,6 @@ contribute to lldb. :maxdepth: 1 :caption: External Links - Source Code + Source Code Code Reviews Bug Reports diff --git a/lldb/docs/lldb.1 b/lldb/docs/lldb.1 index a28cabe7acc09c7..a48b6d1b918f131 100644 --- a/lldb/docs/lldb.1 +++ b/lldb/docs/lldb.1 @@ -149,6 +149,6 @@ The LLDB project page http://lldb.llvm.org/ has many different resources for users -- the gdb/lldb command equivalence page http://lldb.llvm.org/lldb-gdb.html can be especially helpful for users coming from gdb. .Sh BUGS -To report bugs, please visit http://llvm.org/bugs/ +To report bugs, please visit https://bugs.llvm.org/ .Sh AUTHOR Maintained by the LLDB Team, http://lldb.llvm.org/ diff --git a/lldb/docs/resources/bots.rst b/lldb/docs/resources/bots.rst index 9bfe5f3f399e82d..20ce69cd552d0bc 100644 --- a/lldb/docs/resources/bots.rst +++ b/lldb/docs/resources/bots.rst @@ -9,7 +9,6 @@ build slaves. Everyone can `add a buildbot for LLDB `_. -* `lldb-amd64-ninja-freebsd11 `_ * `lldb-x64-windows-ninja `_ * `lldb-x86_64-debian `_ * `lldb-x86_64-fedora `_ diff --git a/lldb/docs/resources/build.rst b/lldb/docs/resources/build.rst index f71fb9e414b56fb..62981e0f233449f 100644 --- a/lldb/docs/resources/build.rst +++ b/lldb/docs/resources/build.rst @@ -4,35 +4,55 @@ Build .. contents:: :local: -Building LLDB on Windows ------------------------- +Preliminaries +------------- + +LLDB relies on many of the technologies developed by the larger LLVM project. +In particular, it requires both Clang and LLVM itself in order to build. Due to +this tight integration the Getting Started guides for both of these projects +come as prerequisite reading: -**Required Dependencies** +* `LLVM `_ +* `Clang `_ + +The following requirements are shared on all platforms. + +* `CMake `_ +* `Ninja `_ (strongly recommended) +* `Python `_ +* `SWIG `_ + +Depending on your platform and package manager, one might run any of the +commands below. + +:: + + > yum install libedit-devel libxml2-devel ncurses-devel python-devel swig + > sudo apt-get install build-essential subversion swig python2.7-dev libedit-dev libncurses5-dev + > pkg install swig python + > pkgin install swig python27 cmake ninja-build + > brew install swig cmake ninja + +Windows +******* * Visual Studio 2015 or greater -* Windows SDK 8.0 or higher. In general it is best to use the latest available version. +* Windows SDK 8.0 or higher. In general it is best to use the latest available + version. +* `GnuWin32 `_ * `Python 3.5 or higher `_ or higher. Earlier versions of Python can be made to work by compiling your own distribution from source, but this workflow is unsupported and you are own your own. -* `Ninja build tool `_ (strongly recommended) -* `GnuWin32 `_ -* `SWIG for Windows `_ (version 3+) - - -**Optional Dependencies** - * `Python Tools for Visual Studio `_. If you plan to debug test failures or even write new tests at all, PTVS is an indispensable debugging extension to VS that enables full editing and debugging support for Python (including mixed native/managed debugging) -**Preliminaries** - -This section describes how to set up your system and install the required -dependencies such that they can be found when needed during the build process. -The steps outlined here only need to be performed once. +The steps outlined here describes how to set up your system and install the +required dependencies such that they can be found when needed during the build +process. They only need to be performed once. #. Install Visual Studio and the Windows SDK. #. Install GnuWin32, making sure ``\bin`` is added to @@ -40,288 +60,307 @@ The steps outlined here only need to be performed once. #. Install SWIG for Windows, making sure ```` is added to your PATH environment variable. -**Building LLDB** - Any command prompt from which you build LLDB should have a valid Visual Studio environment setup. This means you should run ``vcvarsall.bat`` or open an appropriate Visual Studio Command Prompt corresponding to the version you wish to use. +Linux +***** -Finally, when you are ready to build LLDB, generate CMake with the following -command line: - -:: - - cmake -G Ninja - - -and run ``ninja`` to build LLDB. Information about running the LLDB test suite -can be found on the test page. +* `libedit `_ +macOS +***** -Following is a description of some of the most important CMake variables which -you are likely to encounter. A variable FOO is set by adding ``-DFOO=value`` to -the CMake command line. +* To use the in-tree debug server on macOS, lldb needs to be code signed. For + more information see :ref:`CodeSigning` below. +* If you are building both Clang and LLDB together, be sure to also check out + libc++, which is a required for testing on macOS. -* ``LLDB_TEST_DEBUG_TEST_CRASHES`` (Default=0): If set to 1, will cause Windows - to generate a crash dialog whenever lldb.exe or the python extension module - crashes while running the test suite. If set to 0, LLDB will silently crash. - Setting to 1 allows a developer to attach a JIT debugger at the time of a - crash, rather than having to reproduce a failure or use a crash dump. -* ``PYTHON_HOME`` (Required): Path to the folder where the Python distribution - is installed. For example, ``C:\Python35``. -* ``LLDB_RELOCATABLE_PYTHON`` (Default=0): When this is 0, LLDB will bind - statically to the location specified in the ``PYTHON_HOME`` CMake variable, - ignoring any value of ``PYTHONHOME`` set in the environment. This is most - useful for developers who simply want to run LLDB after they build it. If you - wish to move a build of LLDB to a different machine where Python will be in a - different location, setting ``LLDB_RELOCATABLE_PYTHON`` to 1 will cause - Python to use its default mechanism for finding the python installation at - runtime (looking for installed Pythons, or using the ``PYTHONHOME`` - environment variable if it is specified). -* ``LLDB_TEST_C_COMPILER`` or ``LLDB_TEST_CXX_COMPILER``: The test suite needs - to be able to find a copy of clang.exe that it can use to compile inferior - programs. Note that MSVC is not supported here, it must be a path to a clang - executable. Note that using a release clang.exe is strongly recommended here, - as it will make the test suite run much faster. This can be a path to any - recent clang.exe, including one you built yourself. These variables are - ignored unless the respective ``LLDB_TEST_USE_CUSTOM_C_COMPILER`` and - ``LLDB_TEST_USE_CUSTOM_CXX_COMPILER`` are set to ON. +Building LLDB with CMake +------------------------ -Sample command line: +The LLVM project is migrating to a single monolithic respository for LLVM and +its subprojects. This is the recommended way to build LLDB. Check out the +source-tree with git: :: - cmake -G Ninja -DLLDB_TEST_DEBUG_TEST_CRASHES=1 -DPYTHON_HOME=C:\Python35 -DLLDB_TEST_USE_CUSTOM_C_COMPILER=ON -DLLDB_TEST_C_COMPILER=d:\src\llvmbuild\ninja_release\bin\clang.exe ..\..\llvm + > git clone https://github.com/llvm/llvm-project.git +CMake is a cross-platform build-generator tool. CMake does not build the +project, it generates the files needed by your build tool. The recommended +build tool for LLVM is Ninja, but other generators like Xcode or Visual Studio +may be used as well. Please also read `Building LLVM with CMake +`_. -**Working with both Ninja and MSVC** +Regular in-tree builds +********************** -Compiling with ninja is both faster and simpler than compiling with MSVC, but -chances are you still want to debug LLDB with MSVC (at least until we can debug -LLDB on Windows with LLDB!). One solution to this is to run cmake twice and -generate the output into two different folders. One for compiling (the ninja -folder), and one for editing / browsing / debugging (the MSVC folder). +Create a new directory for your build-tree. From there run CMake and point it +to the ``llvm`` directory in the source-tree: -To do this, simply run ``cmake -G Ninja `` from one folder, and -``cmake -G "Visual Studio 14 2015" `` in another folder. Then you -can open the .sln file in Visual Studio, set lldb as the startup project, and -use F5 to run it. You need only edit the project settings to set the executable -and the working directory to point to binaries inside of the ninja tree. - -Building LLDB on macOS ----------------------- +:: -There are two ways to build LLDB on macOS: Using Xcode and using CMake + > cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang;lldb" [] path/to/llvm-project/llvm -**Preliminaries** +We used the ``LLVM_ENABLE_PROJECTS`` option here to tell the build-system which +subprojects to build in addition to LLVM (for more options see +:ref:`CommonCMakeOptions` and :ref:`CMakeCaches`). Parts of the LLDB test suite +require ``lld``. Add it to the list in order to run all tests. Once CMake is done, +run ninja to perform the actual build. We pass ``lldb`` here as the target, so +it only builds what is necessary to run the lldb driver: -In addition to any dependencies required by LLVM and Clang, LLDB needs a few -development packages that may also need to be installed depending on your -system. The current list of dependencies are: +:: -* Xcode 4.3 or newer requires the "Command Line Tools" component (XCode->Preferences->Downloads->Components) -* `Swig `_ + > ninja lldb -**Building LLDB with Xcode** +Standalone builds +***************** -Building on macOS with Xcode is as easy as downloading the code and building -the Xcode project or workspace: +This is another way to build LLDB. We can use the same source-tree as we +checked out above, but now we will have two build-trees: -* Download the lldb sources. -* Follow the code signing instructions in ``lldb/docs/code-signing.txt``. -* In Xcode, open ``lldb/lldb.xcworkspace``, select the lldb-tool scheme, and build. +* the main build-tree for LLDB in ``/path/to/lldb-build`` +* a provided build-tree for LLVM and Clang in ``/path/to/llvm-build`` -**Building LLDB with CMake** +Run CMake with ``-B`` pointing to a new directory for the provided +build-tree\ :sup:`1` and the positional argument pointing to the ``llvm`` +directory in the source-tree. Note that we leave out LLDB here and only include +Clang. Then we build the ``ALL`` target with ninja: -First download the LLVM, Clang, libc++ and LLDB sources. Refer to this page for -precise instructions on this step. +:: -Refer to the code signing instructions in ``lldb/docs/code-signing.txt`` for -info on codesigning debugserver during the build. + > cmake -B /path/to/llvm-build -G Ninja \ + -DLLVM_ENABLE_PROJECTS=clang \ + [] /path/to/llvm-project/llvm + > ninja -Using CMake is documented on the `Building LLVM with CMake -`_ page. Ninja is the recommended generator to -use when building LLDB with CMake. +Now run CMake a second time with ``-B`` pointing to a new directory for the +main build-tree and the positional argument pointing to the ``lldb`` directory +in the source-tree. In order to find the provided build-tree, the build-system +needs the options ``LLVM_DIR`` and ``Clang_DIR`` (CMake variables are +case-sensitive!): :: - > cmake $PATH_TO_LLVM -G Ninja + > cmake -B /path/to/lldb-build -G Ninja \ + -DLLVM_DIR=/path/to/llvm-build/lib/cmake/llvm \ + -DClang_DIR=/path/to/llvm-build/lib/cmake/clang \ + [] /path/to/llvm-project/lldb > ninja lldb -As noted in the "Building LLVM with CMake" page mentioned above, you can pass -variables to cmake to change build behavior. If LLDB is built as a part of -LLVM, then you can pass LLVM-specific CMake variables to cmake when building -LLDB. +.. note:: -If you are building both Clang and LLDB together, be sure to also add libc++, -which is currently required for testing on macOS: + #. The ``-B`` argument was undocumented for a while and is only officially + supported since `CMake version 3.14 + `_ -:: +.. _CommonCMakeOptions: - > cmake -D LLVM_ENABLE_PROJECTS='clang;lldb;libcxx' $PATH_TO_LLVM -G Ninja +Common CMake options +******************** -Here are some commonly used LLDB-specific CMake variables: - -* ``LLDB_EXPORT_ALL_SYMBOLS:BOOL`` : Exports all symbols. Useful in conjunction - with CMAKE_BUILD_TYPE=Debug. -* ``LLDB_BUILD_FRAMEWORK:BOOL`` : Builds LLDB.framework as Xcode would -* ``LLDB_CODESIGN_IDENTITY:STRING`` : Determines the codesign identity to use. - An empty string means skip building debugserver to avoid codesigning. - -Building LLDB on Linux, FreeBSD and NetBSD ------------------------------------------- - -This document describes the steps needed to compile LLDB on most Linux systems, -FreeBSD and NetBSD. +Following is a description of some of the most important CMake variables which +you are likely to encounter. A variable FOO is set by adding ``-DFOO=value`` to +the CMake command line. -**Preliminaries** +If you want to debug the lldb that you're building -- that is, build it with +debug info enabled -- pass two additional arguments to cmake before running +ninja: -LLDB relies on many of the technologies developed by the larger LLVM project. -In particular, it requires both Clang and LLVM itself in order to build. Due to -this tight integration the Getting Started guides for both of these projects -come as prerequisite reading: +:: -* `LLVM `_ -* `Clang `_ + > cmake -G Ninja \ + -DLLDB_EXPORT_ALL_SYMBOLS=1 \ + -DCMAKE_BUILD_TYPE=Debug + -Supported compilers for building LLDB on Linux include: +If you want to run the test suite, you will need a compiler to build the test +programs. If you have Clang checked out, that will be used by default. +Alternatively, you can specify a C and C++ compiler to be used by the test +suite. -* Clang 3.2 -* GCC 4.6.2 (later versions should work as well) +:: -It is recommended to use libstdc++ 4.6 (or higher) to build LLDB on Linux, but -using libc++ is also known to work. + > cmake -G Ninja \ + -DLLDB_TEST_C_COMPILER= \ + -DLLDB_TEST_CXX_COMPILER= \ + -On FreeBSD the base system Clang and libc++ may be used to build LLDB, or the -GCC port or package. +It is strongly recommend to use a release build for the compiler to speed up +test execution. -On NetBSD the base system GCC and libstdc++ are used to build LLDB, Clang/LLVM -and libc++ should also work. +Windows +^^^^^^^ -In addition to any dependencies required by LLVM and Clang, LLDB needs a few -development packages that may also need to be installed depending on your -system. The current list of dependencies are: +On Windows the LLDB test suite requires lld. Either add ``lld`` to +``LLVM_ENABLE_PROJECTS`` or disable the test suite with +``LLDB_ENABLE_TESTS=OFF``. -* `Swig `_ -* `libedit (Linux only) `_ -* `Python `_ +Although the following CMake variables are by no means Windows specific, they +are commonly used on Windows. +* ``LLDB_TEST_DEBUG_TEST_CRASHES`` (Default=0): If set to 1, will cause Windows + to generate a crash dialog whenever lldb.exe or the python extension module + crashes while running the test suite. If set to 0, LLDB will silently crash. + Setting to 1 allows a developer to attach a JIT debugger at the time of a + crash, rather than having to reproduce a failure or use a crash dump. +* ``PYTHON_HOME`` (Required): Path to the folder where the Python distribution + is installed. For example, ``C:\Python35``. +* ``LLDB_RELOCATABLE_PYTHON`` (Default=0): When this is 0, LLDB will bind + statically to the location specified in the ``PYTHON_HOME`` CMake variable, + ignoring any value of ``PYTHONHOME`` set in the environment. This is most + useful for developers who simply want to run LLDB after they build it. If you + wish to move a build of LLDB to a different machine where Python will be in a + different location, setting ``LLDB_RELOCATABLE_PYTHON`` to 1 will cause + Python to use its default mechanism for finding the python installation at + runtime (looking for installed Pythons, or using the ``PYTHONHOME`` + environment variable if it is specified). -So for example, on a Fedora system one might run: +Sample command line: :: - > yum install libedit-devel libxml2-devel ncurses-devel python-devel swig - -On a Debian or Ubuntu system one might run: + > cmake -G Ninja^ + -DLLDB_TEST_DEBUG_TEST_CRASHES=1^ + -DPYTHON_HOME=C:\Python35^ + -DLLDB_TEST_C_COMPILER=d:\src\llvmbuild\ninja_release\bin\clang.exe^ + -:: - > sudo apt-get install build-essential subversion swig python2.7-dev libedit-dev libncurses5-dev +Building with ninja is both faster and simpler than building with Visual Studio, +but chances are you still want to debug LLDB with an IDE. One solution is to run +cmake twice and generate the output into two different folders. One for +compiling (the ninja folder), and one for editing, browsing and debugging. -or +Follow the previous instructions in one directory, and generate a Visual Studio +project in another directory. :: - > sudo apt-get build-dep lldb-3.3 # or lldb-3.4 - - -On FreeBSD one might run: + > cmake -G "Visual Studio 15 2017 Win64" -Thost=x64 -:: - - > pkg install swig python +Then you can open the .sln file in Visual Studio, set lldb as the startup +project, and use F5 to run it. You need only edit the project settings to set +the executable and the working directory to point to binaries inside of the +ninja tree. -On NetBSD one might run: -:: +NetBSD +^^^^^^ - > pkgin install swig python27 cmake ninja-build +Current stable NetBSD release doesn't ship with libpanel(3), therefore it's +required to disable curses(3) support with the +``-DLLDB_DISABLE_CURSES:BOOL=TRUE`` option. To make sure check if +``/usr/include/panel.h`` exists in your system. -**To build with CMake** +macOS +^^^^^ -Using CMake is documented on the `Building LLVM with CMake -`_ page. Building LLDB is possible using one -of the following generators: +On macOS the LLDB test suite requires libc++. Either add ``libcxx`` to +``LLVM_ENABLE_PROJECTS`` or disable the test suite with +``LLDB_ENABLE_TESTS=OFF``. Further useful options: -* Ninja -* Unix Makefiles +* ``LLDB_BUILD_FRAMEWORK:BOOL``: Builds the LLDB.framework. +* ``LLDB_CODESIGN_IDENTITY:STRING``: Set the identity to use for code-signing + all executables. If not explicitly specified, only ``debugserver`` will be + code-signed with identity ``lldb_codesign`` (see :ref:`CodeSigning`). +* ``LLDB_USE_SYSTEM_DEBUGSERVER:BOOL``: Use the system's debugserver, so lldb is + functional without setting up code-signing. -**Using CMake + Ninja** -Ninja is the fastest way to build LLDB! In order to use ninja, you need to have -recent versions of CMake and ninja on your system. To build using ninja: +.. _CMakeCaches: -:: +CMake caches +************ - > cmake ../llvm -G Ninja - > ninja lldb - > ninja check-lldb +CMake caches allow to store common sets of configuration options in the form of +CMake scripts and can be useful to reproduce builds for particular use-cases +(see by analogy `usage in LLVM and Clang `_). +A cache is passed to CMake with the ``-C`` flag, following the absolute path to +the file on disk. Subsequent ``-D`` options are still allowed. Please find the +currently available caches in the `lldb/cmake/caches/ +`_ +directory. +Common configurations on macOS +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -If you want to debug the lldb that you're building -- that is, build it with -debug info enabled -- pass two additional arguments to cmake before running -ninja: +Build, test and install a distribution of LLDB from the `monorepo +`_ (see also `Building a Distribution of +LLVM `_): :: - > cmake ../llvm -G Ninja -DLLDB_EXPORT_ALL_SYMBOLS=1 -DCMAKE_BUILD_TYPE=Debug + > git clone https://github.com/llvm/llvm-project + + > cmake -B /path/to/lldb-build -G Ninja \ + -C /path/to/llvm-project/lldb/cmake/caches/Apple-lldb-macOS.cmake \ + -DLLVM_ENABLE_PROJECTS="clang;libcxx;lldb" \ + llvm-project/llvm + > DESTDIR=/path/to/lldb-install ninja -C /path/to/lldb-build check-lldb install-distribution -**Using CMake + Unix Makefiles** +.. _CMakeGeneratedXcodeProject: -If you do not have Ninja, you can still use CMake to generate Unix Makefiles that build LLDB: +Build LLDB standalone for development with Xcode: :: - > cmake .. - > make - > make check-lldb + > git clone https://github.com/llvm/llvm-project + > cmake -B /path/to/llvm-build -G Ninja \ + -C /path/to/llvm-project/lldb/cmake/caches/Apple-lldb-base.cmake \ + -DLLVM_ENABLE_PROJECTS="clang;libcxx" \ + llvm-project/llvm + > ninja -C /path/to/llvm-build -**Building API reference documentation** + > cmake -B /path/to/lldb-build \ + -C /path/to/llvm-project/lldb/cmake/caches/Apple-lldb-Xcode.cmake \ + -DLLVM_DIR=/path/to/llvm-build/lib/cmake/llvm \ + -DClang_DIR=/path/to/llvm-build/lib/cmake/clang \ + llvm-project/lldb + > open lldb.xcodeproj + > cmake --build /path/to/lldb-build --target check-lldb -LLDB exposes a C++ as well as a Python API. To build the reference -documentation for these two APIs, ensure you have the required dependencies -installed, and build the ``lldb-python-doc`` and ``lldb-cpp-doc`` CMake -targets. +.. note:: -The output HTML reference documentation can be found in -``/tools/lldb/docs/``. + The ``-B`` argument was undocumented for a while and is only officially + supported since `CMake version 3.14 + `_ -**Additional Notes** -LLDB has a Python scripting capability and supplies its own Python module named -lldb. If a script is run inside the command line lldb application, the Python -module is made available automatically. However, if a script is to be run by a -Python interpreter outside the command line application, the ``PYTHONPATH`` -environment variable can be used to let the Python interpreter find the lldb -module. +Building The Documentation +-------------------------- -Current stable NetBSD release doesn't ship with libpanel(3), therefore it's -required to disable curses(3) support with the -``-DLLDB_DISABLE_CURSES:BOOL=TRUE`` option. To make sure check if -``/usr/include/panel.h`` exists in your system. +If you wish to build the optional (reference) documentation, additional +dependencies are required: -The correct path can be obtained by invoking the command line lldb tool with -the -P flag: +* Sphinx (for the website) +* Graphviz (for the 'dot' tool) +* doxygen (if you wish to build the C++ API reference) +* epydoc (if you wish to build the Python API reference) + +To install the prerequisites for building the documentation (on Debian/Ubuntu) +do: :: - > export PYTHONPATH=`$llvm/build/Debug+Asserts/bin/lldb -P` + > sudo apt-get install doxygen graphviz python3-sphinx + > sudo pip install epydoc -If you used a different build directory or made a release build, you may need -to adjust the above to suit your needs. To test that the lldb Python module is -built correctly and is available to the default Python interpreter, run: +To build the documentation, configure with ``LLVM_ENABLE_SPHINX=ON`` and build the desired target(s). :: - > python -c 'import lldb' - -**Cross-compiling LLDB** + > ninja docs-lldb-html + > ninja lldb-cpp-doc + > ninja lldb-python-doc +Cross-compiling LLDB +-------------------- In order to debug remote targets running different architectures than your host, you will need to compile LLDB (or at least the server component) for the @@ -389,7 +428,8 @@ The most important cmake options here are: You can of course also specify the usual cmake options like ``CMAKE_BUILD_TYPE``, etc. -**Example 1: Cross-compiling for linux arm64 on Ubuntu host** +Example 1: Cross-compiling for linux arm64 on Ubuntu host +********************************************************* Ubuntu already provides the packages necessary to cross-compile LLDB for arm64. It is sufficient to install packages ``gcc-aarch64-linux-gnu``, @@ -429,7 +469,8 @@ qemu and chroot to simulate the target environment. Then you can install the necessary packages in this environment (python-dev, libedit-dev, etc.) and point your compiler to use them using the correct -I and -L arguments. -**Example 2: Cross-compiling for Android on Linux** +Example 2: Cross-compiling for Android on Linux +*********************************************** In the case of Android, the toolchain and all required headers and libraries are available in the Android NDK. @@ -458,29 +499,105 @@ arm64 build: Note that currently only lldb-server is functional on android. The lldb client is not supported and unlikely to work. -Building The Documentation --------------------------- +Verifying Python Support +------------------------ -If you wish to build the optional (reference) documentation, additional -dependencies are required: +LLDB has a Python scripting capability and supplies its own Python module named +lldb. If a script is run inside the command line lldb application, the Python +module is made available automatically. However, if a script is to be run by a +Python interpreter outside the command line application, the ``PYTHONPATH`` +environment variable can be used to let the Python interpreter find the lldb +module. -* Sphinx (for the website) -* Graphviz (for the 'dot' tool) -* doxygen (if you wish to build the C++ API reference) -* epydoc (if you wish to build the Python API reference) +The correct path can be obtained by invoking the command line lldb tool with +the -P flag: -To install the prerequisites for building the documentation (on Debian/Ubuntu) -do: +:: + + > export PYTHONPATH=`$llvm/build/Debug+Asserts/bin/lldb -P` + +If you used a different build directory or made a release build, you may need +to adjust the above to suit your needs. To test that the lldb Python module is +built correctly and is available to the default Python interpreter, run: :: - > sudo apt-get install doxygen graphviz python3-sphinx - > sudo pip install epydoc + > python -c 'import lldb' + +.. _CodeSigning: + +Code Signing on macOS +--------------------- + +To use the in-tree debug server on macOS, lldb needs to be code signed. The +Debug, DebugClang and Release builds are set to code sign using a code signing +certificate named ``lldb_codesign``. This document explains how to set up the +signing certificate. + +Note that it's possible to build and use lldb on macOS without setting up code +signing by using the system's debug server. To configure lldb in this way with +cmake, specify ``-DLLDB_USE_SYSTEM_DEBUGSERVER=ON``. + +If you have re-installed a new OS, please delete all old ``lldb_codesign`` items +from your keychain. There will be a code signing certification and a public +and private key. Reboot after deleting them. You will also need to delete and +build folders that contained old signed items. The darwin kernel will cache +code signing using the executable's file system node, so you will need to +delete the file so the kernel clears its cache. + +Automatic setup: + +* Run ``scripts/macos-setup-codesign.sh`` + +Manual setup steps: + +* Launch /Applications/Utilities/Keychain Access.app +* In Keychain Access select the ``login`` keychain in the ``Keychains`` list in + the upper left hand corner of the window. +* Select the following menu item: Keychain Access->Certificate Assistant->Create a Certificate... +* Set the following settings + +:: -To build the documentation, build the desired target(s). + Name = lldb_codesign + Identity Type = Self Signed Root + Certificate Type = Code Signing + +* Click Create +* Click Continue +* Click Done +* Click on the "My Certificates" +* Double click on your new ``lldb_codesign`` certificate +* Turn down the "Trust" disclosure triangle, scroll to the "Code Signing" trust + pulldown menu and select "Always Trust" and authenticate as needed using your + username and password. +* Drag the new ``lldb_codesign`` code signing certificate (not the public or + private keys of the same name) from the ``login`` keychain to the ``System`` + keychain in the Keychains pane on the left hand side of the main Keychain + Access window. This will move this certificate to the ``System`` keychain. + You'll have to authorize a few more times, set it to be "Always trusted" when + asked. +* Remove ``~/Desktop/lldb_codesign.cer`` file on your desktop if there is one. +* In the Keychain Access GUI, click and drag ``lldb_codesign`` in the + ``System`` keychain onto the desktop. The drag will create a + ``Desktop/lldb_codesign.cer`` file used in the next step. +* Switch to Terminal, and run the following: :: - > cmake --build . --target docs-lldb-html - > cmake --build . --target lldb-cpp-doc - > cmake --build . --target lldb-python-doc + sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer + rm -f ~/Desktop/lldb_codesign.cer + +* Drag the ``lldb_codesign`` certificate from the ``System`` keychain back into + the ``login`` keychain +* Quit Keychain Access +* Reboot +* Clean by removing all previously creating code signed binaries and rebuild + lldb and you should be able to debug. + +When you build your LLDB for the first time, the Xcode GUI will prompt you for +permission to use the ``lldb_codesign`` keychain. Be sure to click "Always +Allow" on your first build. From here on out, the ``lldb_codesign`` will be +trusted and you can build from the command line without having to authorize. +Also the first time you debug using a LLDB that was built with this code +signing certificate, you will need to authenticate once. diff --git a/lldb/docs/resources/download.rst b/lldb/docs/resources/download.rst index ccc0caa1b441034..de397f233c422e0 100644 --- a/lldb/docs/resources/download.rst +++ b/lldb/docs/resources/download.rst @@ -6,7 +6,7 @@ Nightly Builds Nightly builds of LLDB are packaged and tested from trunk: -Debian and Ubuntu: llvm.org/apt +Debian and Ubuntu: https://apt.llvm.org The pkgsrc framework offers a package with recent LLDB in the wip repository: @@ -18,17 +18,4 @@ The pkgsrc framework offers a package with recent LLDB in the wip repository: Releases -------- -Debian packages are available for LLDB 3.5 and later. - -* `Jessie - LLDB 3.5 `_ -* `Stretch - LLDB 3.8 `_ -* `Buster - LLDB 6.0 `_ -* `Sid - LLDB 6.0 `_ - -Ubuntu packages are available for LLDB 3.8 and later. - -* `Ubuntu 16.04LTS - LLDB 3.8 `_ -* `Ubuntu 18.04LTS - LLDB 6.0 `_ - -Arch Linux packages the latest `LLDB 6.0 -`_. +LLDB is packaged in most of the Debian & Ubuntu releases. diff --git a/lldb/docs/resources/source.rst b/lldb/docs/resources/source.rst index 11856380a981b84..0216d30d5c061e1 100644 --- a/lldb/docs/resources/source.rst +++ b/lldb/docs/resources/source.rst @@ -2,7 +2,7 @@ Getting the Sources =================== Refer to the `LLVM Getting Started Guide -`_ +`_ for general instructions on how to check out source. Note that LLDB depends on having a working checkout of LLVM and Clang, so the first step is to download and build as described at the above URL. The same @@ -10,33 +10,14 @@ repository also contains LLDB. Git browser: https://github.com/llvm/llvm-project/tree/master/lldb -For macOS building from Xcode, simply checkout LLDB and then build -from Xcode. The Xcode project will automatically detect that it is a -fresh checkout, and checkout LLVM and Clang automatically. Unlike -other platforms / build systems, it will use the following directory -structure. - - :: - - lldb - | - `-- llvm - | - +-- tools - | - `-- clang - - -So updating your checkout will consist of updating LLDB, LLV<, and -Clang in these locations. Refer to the `Build Instructions -`_ for more detailed instructions on how to build for a -particular platform / build system combination. +Refer to the `Build Instructions `_ for more detailed instructions +on how to build for a particular platform / build system combination. Contributing to LLDB -------------------- Please refer to the `LLVM Developer Policy -`_ for information about +`_ for information about authoring and uploading a patch. LLDB differs from the LLVM Developer Policy in the following respects. @@ -59,9 +40,9 @@ rules of thumb: * Invalid input. To deal with invalid input, such as malformed DWARF, missing object files, or otherwise inconsistent debug info, LLVM's error handling types such as `llvm::Expected - `_ or + `_ or `llvm::Optional - `_ should be + `_ should be used. Functions that may fail should return their result using these wrapper types instead of using a bool to indicate success. Returning a default value when an error occurred is also discouraged. @@ -93,7 +74,7 @@ rules of thumb: * Fatal errors. Aborting LLDB's process using `llvm::report_fatal_error()` or `abort()` should be avoided at all costs. It's acceptable to use `llvm_unreachable() - `_ for + `_ for actually unreachable code such as the default in an otherwise exhaustive switch statement. diff --git a/lldb/docs/resources/test.rst b/lldb/docs/resources/test.rst index d1089f26a788712..d77941a8b2b0c11 100644 --- a/lldb/docs/resources/test.rst +++ b/lldb/docs/resources/test.rst @@ -30,9 +30,7 @@ target. By default, the ``check-lldb`` target builds the test programs with the same compiler that was used to build LLDB. To build the tests with a different compiler, you can set the ``LLDB_TEST_C_COMPILER`` or the -``LLDB_TEST_CXX_COMPILER`` CMake variables. These variables are ignored unless -the respective ``LLDB_TEST_USE_CUSTOM_C_COMPILER`` and -``LLDB_TEST_USE_CUSTOM_CXX_COMPILER`` are set to ``ON``. +``LLDB_TEST_CXX_COMPILER`` CMake variables. It is possible to customize the architecture of the test binaries and compiler used by appending ``-A`` and ``-C`` options respectively to the CMake variable @@ -88,22 +86,6 @@ Many more options that are available. To see a list of all of them, run: > python dotest.py -h -The ``dotest.py`` script runs tests in parallel by default. To disable the -parallel test running feature, use the ``--no-multiprocess`` flag. The number -of concurrent tests is controlled by the ``LLDB_TEST_THREADS`` environment -variable or the ``--threads command`` line parameter. The default value is the -number of CPU cores on your system. - -The parallel test running feature will handle an additional ``--test-subdir -SUBDIR`` arg. When specified, ``SUBDIR`` is relative to the root test directory -and will limit all parallel test running to that subdirectory's tree of tests. - -The parallel test runner will run all tests within a given directory serially, -but will run multiple directories concurrently. Thus, as a test writer, we -provide serialized test run semantics within a directory. Note child -directories are considered entirely separate, so two child directories could be -running in parallel with a parent directory. - Running the Test Suite Remotely ------------------------------- @@ -157,13 +139,11 @@ A quick guide to getting started with PTVS is as follows: #. If you want to enabled mixed mode debugging, check Enable native code debugging (this slows down debugging, so enable it only on an as-needed basis.) #. Set the command line for the test suite to run. #. Right click the project in solution explorer and choose the Debug tab. - #. Enter the arguments to dotest.py. Note you must add --no-multiprocess + #. Enter the arguments to dotest.py. #. Example command options: :: - # quiet mode - -q --arch=i686 # Path to debug lldb.exe --executable D:/src/llvmbuild/ninja/bin/lldb.exe @@ -178,12 +158,10 @@ A quick guide to getting started with PTVS is as follows: -p TestPaths.py # Root of test tree D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test - # Required in order to be able to debug the test. - --no-multiprocess :: - -q --arch=i686 --executable D:/src/llvmbuild/ninja/bin/lldb.exe -s D:/src/llvmbuild/ninja/lldb-test-traces -u CXXFLAGS -u CFLAGS --enable-crash-dialog -C d:\src\llvmbuild\ninja_release\bin\clang.exe -p TestPaths.py D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test --no-multiprocess + --arch=i686 --executable D:/src/llvmbuild/ninja/bin/lldb.exe -s D:/src/llvmbuild/ninja/lldb-test-traces -u CXXFLAGS -u CFLAGS --enable-crash-dialog -C d:\src\llvmbuild\ninja_release\bin\clang.exe -p TestPaths.py D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test --no-multiprocess diff --git a/lldb/docs/status/projects.rst b/lldb/docs/status/projects.rst index e32b9b0fe482e7d..703a3c67d68ad6d 100644 --- a/lldb/docs/status/projects.rst +++ b/lldb/docs/status/projects.rst @@ -185,12 +185,6 @@ threads lazily but keep "unseen" threads in a holding area, and only retire them when we know we've fetched the whole thread list and ensured they are no longer alive. -Add an extension point in the breakpoint search machinery ---------------------------------------------------------- - -This would allow highly customizable, algorithmic breakpoint types, like "break -on every use of some particular instruction, or instruction pattern, etc." - Make Python-backed commands first class citizens ------------------------------------------------ @@ -297,21 +291,6 @@ state at StopPoint 0, StopPoint 1, etc. These could then be used for testing reactions to complex threading problems & the like, and also for simulating hard-to-test environments (like bare board debugging). -A Bug-Trapper infrastructure ----------------------------- - -We very often have bugs that can't be reproduced locally. So having a -bug-report-trapper that can gather enough information from the surroundings of -a bug so that we can replay the session locally would be a big help tracking -down issues in this situation. This is tricky because you can't necessarily -require folks to leak information about their code in order to file bug -reports. So not only will you have to figure out what state to gather, you're -also going to have to anonymize it somehow. But we very often have bugs from -people that can't reduce the problem to a simple test case and can't give us -our code, and we often just can't help them as things stand now. Note that -adding the ProcessMock would be a good first stage towards this, since you -could make a ProcessMock creator/serializer from the current lldb state. - Expression parser needs syntax for "{symbol,type} A in CU B.cpp" ---------------------------------------------------------------- @@ -399,19 +378,33 @@ Teach lldb to predict exception propagation at the throw site ------------------------------------------------------------- There are a bunch of places in lldb where we need to know at the point where an -exception is thrown, what frame will catch the exception. +exception is thrown, what frame will catch the exception. -For instance, if an expression throws an exception, we need to know whether the -exception will be caught in the course of the expression evaluation. If so it -would be safe to let the expression continue. But since we would destroy the -state of the thread if we let the exception escape the expression, we currently +For instance, if an expression throws an exception, we need to know whether the +exception will be caught in the course of the expression evaluation. If so it +would be safe to let the expression continue. But since we would destroy the +state of the thread if we let the exception escape the expression, we currently stop the expression evaluation if we see a throw. If we knew where it would be caught we could distinguish these two cases. -Similarly, when you step over a call that throws, you want to stop at the throw +Similarly, when you step over a call that throws, you want to stop at the throw point if you know the exception will unwind past the frame you were stepping in, but it would annoying to have the step abort every time an exception was thrown. If we could predict the catching frame, we could do this right. -And of course, this would be a useful piece of information to display when stopped +And of course, this would be a useful piece of information to display when stopped at a throw point. + +Add predicates to the nodes of settings +--------------------------------------- + +It would be very useful to be able to give values to settings that are dependent +on the triple, or executable name, for targets, or on whether a process is local +or remote, or on the name of a thread, etc. The original intent (and there is +a sketch of this in the settings parsing code) was to be able to say: + +:: + + (lldb) settings set target{arch=x86_64}.process.thread{name=foo}... + +The exact details are still to be worked out, however. diff --git a/lldb/docs/use/python-reference.rst b/lldb/docs/use/python-reference.rst index 2346947f74299bd..8c76ef1a0830787 100644 --- a/lldb/docs/use/python-reference.rst +++ b/lldb/docs/use/python-reference.rst @@ -494,10 +494,9 @@ Optionally, you can also provide a Python docstring, and LLDB will use it when p """This command takes a lot of options and does many fancy things""" # Your code goes here -Starting with SVN revision 218834, LLDB Python commands can also take an -SBExecutionContext as an argument. This is useful in cases where the command's -notion of where to act is independent of the currently-selected entities in the -debugger. +Since lldb 3.5.2, LLDB Python commands can also take an SBExecutionContext as an +argument. This is useful in cases where the command's notion of where to act is +independent of the currently-selected entities in the debugger. This feature is enabled if the command-implementing function can be recognized as taking 5 arguments, or a variable number of arguments, and it alters the @@ -519,7 +518,7 @@ signature as such: +-------------------+--------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | **exe_ctx** | **lldb.SBExecutionContext** | An execution context object carrying around information on the inferior process' context in which the command is expected to act | | | | | -| | | *Optional since SVN r218834, unavailable before* | +| | | *Optional since lldb 3.5.2, unavailable before* | +-------------------+--------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ | **result** | **lldb.SBCommandReturnObject** | A return object which encapsulates success/failure information for the command and output text | | | | that needs to be printed as a result of the command. The plain Python "print" command also works but | @@ -529,8 +528,8 @@ signature as such: | | | and functions. | +-------------------+--------------------------------+----------------------------------------------------------------------------------------------------------------------------------+ -Starting with SVN revision 232224, Python commands can also be implemented by -means of a class which should implement the following interface: +Since lldb 3.7, Python commands can also be implemented by means of a class +which should implement the following interface: :: diff --git a/lldb/docs/use/symbolication.rst b/lldb/docs/use/symbolication.rst index 9d31b365b98e27a..2c10a886d608710 100644 --- a/lldb/docs/use/symbolication.rst +++ b/lldb/docs/use/symbolication.rst @@ -15,7 +15,7 @@ other symbolication programs: The simplest form of symbolication is to load an executable: -:: +.. code-block:: text (lldb) target create --no-dependents --arch x86_64 /tmp/a.out @@ -30,7 +30,7 @@ Using the ``image list`` command will show us a list of all shared libraries associated with the current target. As expected, we currently only have a single binary: -:: +.. code-block:: text (lldb) image list [ 0] 73431214-6B76-3489-9557-5075F03E36B4 0x0000000100000000 /tmp/a.out @@ -38,7 +38,7 @@ single binary: Now we can look up an address: -:: +.. code-block:: text (lldb) image lookup --address 0x100000aa3 Address: a.out[0x0000000100000aa3] (a.out.__TEXT.__text + 131) @@ -51,7 +51,7 @@ address refers to a virtual address as defined by each object file. If we didn't use the ``--no-dependents`` option with ``target create``, we would have loaded all dependent shared libraries: -:: +.. code-block:: text (lldb) image list [ 0] 73431214-6B76-3489-9557-5075F03E36B4 0x0000000100000000 /tmp/a.out @@ -64,7 +64,7 @@ would have loaded all dependent shared libraries: Now if we do a lookup using a file address, this can result in multiple matches since most shared libraries have a virtual address space that starts at zero: -:: +.. code-block:: text (lldb) image lookup -a 0x1000 Address: a.out[0x0000000000001000] (a.out.__PAGEZERO + 4096) @@ -82,7 +82,7 @@ since most shared libraries have a virtual address space that starts at zero: To avoid getting multiple file address matches, you can specify the name of the shared library to limit the search: -:: +.. code-block:: text (lldb) image lookup -a 0x1000 a.out Address: a.out[0x0000000000001000] (a.out.__PAGEZERO + 4096) @@ -101,7 +101,7 @@ load --slide`` command allows us to set the load address for all sections. Below is an example of sliding all sections in a.out by adding 0x123000 to each section's file address: -:: +.. code-block:: text (lldb) target create --no-dependents --arch x86_64 /tmp/a.out (lldb) target modules load --file a.out --slide 0x123000 @@ -116,7 +116,7 @@ segment with ``target modules load section address``, you don't need to do any calculations. To specify the load addresses of sections we can specify one or more section name + address pairs in the ``target modules load`` command: -:: +.. code-block:: text (lldb) target create --no-dependents --arch x86_64 /tmp/a.out (lldb) target modules load --file a.out __TEXT 0x100123000 @@ -126,7 +126,7 @@ defined where sections have been loaded in our target, any lookups we do will now use load addresses so we don't have to do any math on the addresses in the crashlog backtraces, we can just use the raw addresses: -:: +.. code-block:: text (lldb) image lookup --address 0x100123aa3 Address: a.out[0x0000000100000aa3] (a.out.__TEXT.__text + 131) @@ -142,7 +142,7 @@ one of the shared libraries, then add more modules to the target using the Lets say we have a Darwin crash log that contains the following images: -:: +.. code-block:: text Binary Images: 0x100000000 - 0x100000ff7 /tmp/a.out @@ -153,7 +153,7 @@ Lets say we have a Darwin crash log that contains the following images: First we create the target using the main executable and then add any extra shared libraries we want: -:: +.. code-block:: text (lldb) target create --no-dependents --arch x86_64 /tmp/a.out (lldb) target modules add /usr/lib/system/libsystem_c.dylib @@ -165,7 +165,7 @@ If you have debug symbols in standalone files, such as dSYM files on macOS, you can specify their paths using the --symfile option for the ``target create`` (recent LLDB releases only) and ``target modules add`` commands: -:: +.. code-block:: text (lldb) target create --no-dependents --arch x86_64 /tmp/a.out --symfile /tmp/a.out.dSYM (lldb) target modules add /usr/lib/system/libsystem_c.dylib --symfile /build/server/a/libsystem_c.dylib.dSYM @@ -176,7 +176,7 @@ Then we set the load addresses for each __TEXT section (note the colors of the load addresses above and below) using the first address from the Binary Images section for each image: -:: +.. code-block:: text (lldb) target modules load --file a.out 0x100000000 (lldb) target modules load --file libsystem_c.dylib 0x7fff83f32000 @@ -189,7 +189,7 @@ using ``image lookup`` with the raw backtrace addresses. Given the following raw backtrace: -:: +.. code-block:: text Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff8a1e6d46 __kill + 10 @@ -200,7 +200,7 @@ Given the following raw backtrace: We can now symbolicate the load addresses: -:: +.. code-block:: text (lldb) image lookup -a 0x00007fff8a1e6d46 (lldb) image lookup -a 0x00007fff84597df0 @@ -215,8 +215,7 @@ If you add the --verbose flag to the ``image lookup --address`` command, you can get verbose information which can often include the locations of some of your local variables: -:: - +.. code-block:: text (lldb) image lookup --address 0x100123aa3 --verbose Address: a.out[0x0000000100000aa3] (a.out.__TEXT.__text + 110) @@ -225,16 +224,17 @@ your local variables: CompileUnit: id = {0x00000000}, file = "/tmp/main.c", language = "ISO C:1999" Function: id = {0x0000004f}, name = "main", range = [0x0000000100000bc0-0x0000000100000dc9) FuncType: id = {0x0000004f}, decl = main.c:9, compiler_type = "int (int, const char **, const char **, const char **)" - Blocks: id = {0x0000004f}, range = [0x100000bc0-0x100000dc9) - id = {0x000000ae}, range = [0x100000bf2-0x100000dc4) + Blocks: id = {0x0000004f}, range = [0x100000bc0-0x100000dc9) + id = {0x000000ae}, range = [0x100000bf2-0x100000dc4) LineEntry: [0x0000000100000bf2-0x0000000100000bfa): /tmp/main.c:13:23 - Symbol: id = {0x00000004}, range = [0x0000000100000bc0-0x0000000100000dc9), name="main" + Symbol: id = {0x00000004}, range = [0x0000000100000bc0-0x0000000100000dc9), name="main" Variable: id = {0x000000bf}, name = "path", type= "char [1024]", location = DW_OP_fbreg(-1072), decl = main.c:28 Variable: id = {0x00000072}, name = "argc", type= "int", location = r13, decl = main.c:8 Variable: id = {0x00000081}, name = "argv", type= "const char **", location = r12, decl = main.c:8 Variable: id = {0x00000090}, name = "envp", type= "const char **", location = r15, decl = main.c:8 Variable: id = {0x0000009f}, name = "aapl", type= "const char **", location = rbx, decl = main.c:8 + The interesting part is the variables that are listed. The variables are the parameters and local variables that are in scope for the address that was specified. These variable entries have locations which are shown in bold above. @@ -251,7 +251,7 @@ All of the commands above can be done through the python script bridge. The code below will recreate the target and add the three shared libraries that we added in the darwin crash log example above: -:: +.. code-block:: python triple = "x86_64-apple-macosx" platform_name = None @@ -316,7 +316,7 @@ target in order to symbolicate. Subclasses of this class will want to override the locate_module_and_debug_symbols method: -:: +.. code-block:: text class CustomImage(lldb.utils.symbolication.Image): def locate_module_and_debug_symbols (self): @@ -343,7 +343,7 @@ This module installs a new ``crashlog`` command into the lldb command interpreter so that you can use it to parse and symbolicate macOS crash logs: -:: +.. code-block:: text (lldb) command script import lldb.macosx.crashlog "crashlog" and "save_crashlog" command installed, use the "--help" option for detailed help @@ -353,7 +353,7 @@ logs: The command that is installed has built in help that shows the options that can be used when symbolicating: -:: +.. code-block:: text (lldb) crashlog --help Usage: crashlog [options] [FILE ...] @@ -370,7 +370,7 @@ as if it were stopped at the locations described in the crash log and functions can be disassembled and lookups can be performed using the addresses found in the crash log. -:: +.. code-block:: text Options: -h, --help show this help message and exit diff --git a/lldb/docs/use/variable.rst b/lldb/docs/use/variable.rst index 0e65f42be45de02..f3bde2de4144d7e 100644 --- a/lldb/docs/use/variable.rst +++ b/lldb/docs/use/variable.rst @@ -197,7 +197,7 @@ pick: +-----------------------------------------------+------------------+--------------------------------------------------------------------------+ | ``c-string`` | s | show this as a 0-terminated C string | +-----------------------------------------------+------------------+--------------------------------------------------------------------------+ -| ``decimal`` | i | show this as a signed integer number (this does not perform a cast, it | +| ``decimal`` | d | show this as a signed integer number (this does not perform a cast, it | | | | simply shows the bytes as an integer with sign) | +-----------------------------------------------+------------------+--------------------------------------------------------------------------+ | ``enumeration`` | E | show this as an enumeration, printing the | @@ -239,6 +239,15 @@ pick: +-----------------------------------------------+------------------+--------------------------------------------------------------------------+ | ``character array`` | a | show this as a character array | +-----------------------------------------------+------------------+--------------------------------------------------------------------------+ +| ``address`` | A | show this as an address target (symbol/file/line + offset), possibly | +| | | also the string this address is pointing to | ++-----------------------------------------------+------------------+--------------------------------------------------------------------------+ +| ``hex float`` | | show this as hexadecimal floating point | ++-----------------------------------------------+------------------+--------------------------------------------------------------------------+ +| ``instruction`` | i | show this as an disassembled opcode | ++-----------------------------------------------+------------------+--------------------------------------------------------------------------+ +| ``void`` | v | don't show anything | ++-----------------------------------------------+------------------+--------------------------------------------------------------------------+ Type Summary ------------ diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index 3ccf6f71e2b371e..9a8ec8c1a43ff1c 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -300,7 +300,7 @@ def locate_module_and_debug_symbols(self): if os.path.exists(self.dsymForUUIDBinary): dsym_for_uuid_command = '%s %s' % ( self.dsymForUUIDBinary, uuid_str) - s = subprocess.check_output(dsym_for_uuid_command, shell=True).decode("utf-8") + s = subprocess.check_output(dsym_for_uuid_command, shell=True) if s: try: plist_root = read_plist(s) diff --git a/lldb/examples/python/symbolication.py b/lldb/examples/python/symbolication.py index dac9305d269d232..a6daa802cda2036 100755 --- a/lldb/examples/python/symbolication.py +++ b/lldb/examples/python/symbolication.py @@ -248,7 +248,6 @@ def InitWithSBTargetAndSBModule(cls, target, module): obj = cls(module.file.fullpath, module.uuid) obj.resolved_path = module.platform_file.fullpath obj.resolved = True - obj.arch = module.triple for section in module.sections: symb_section = Section.InitWithSBTargetAndSBSection( target, section) @@ -380,7 +379,7 @@ def add_module(self, target): return None resolved_path = self.get_resolved_path() self.module = target.AddModule( - resolved_path, self.arch, uuid_str, self.symfile) + resolved_path, str(self.arch), uuid_str, self.symfile) if not self.module: return 'error: unable to get module for (%s) "%s"' % ( self.arch, self.get_resolved_path()) @@ -419,7 +418,6 @@ def create_target(self): if self.locate_module_and_debug_symbols(): resolved_path = self.get_resolved_path() path_spec = lldb.SBFileSpec(resolved_path) - #result.PutCString ('plist[%s] = %s' % (uuid, self.plist)) error = lldb.SBError() target = lldb.debugger.CreateTarget( resolved_path, self.arch, None, False, error) @@ -575,7 +573,6 @@ def disassemble_instructions( mnemonic = inst.GetMnemonic(target) operands = inst.GetOperands(target) comment = inst.GetComment(target) - #data = inst.GetData (target) lines.append("%#16.16x: %8s %s" % (inst_pc, mnemonic, operands)) if comment: line_len = len(lines[-1]) diff --git a/lldb/include/lldb/Breakpoint/BreakpointLocation.h b/lldb/include/lldb/Breakpoint/BreakpointLocation.h index 7b27160563a0852..aadd52288485cef 100644 --- a/lldb/include/lldb/Breakpoint/BreakpointLocation.h +++ b/lldb/include/lldb/Breakpoint/BreakpointLocation.h @@ -67,7 +67,7 @@ class BreakpointLocation // The next section deals with various breakpoint options. - /// If \a enable is \b true, enable the breakpoint, if \b false disable it. + /// If \a enabled is \b true, enable the breakpoint, if \b false disable it. void SetEnabled(bool enabled); /// Check the Enable/Disable state. diff --git a/lldb/include/lldb/Breakpoint/BreakpointOptions.h b/lldb/include/lldb/Breakpoint/BreakpointOptions.h index cdac5d3dbd75d04..55a4be2d19c1c92 100644 --- a/lldb/include/lldb/Breakpoint/BreakpointOptions.h +++ b/lldb/include/lldb/Breakpoint/BreakpointOptions.h @@ -107,6 +107,12 @@ friend class Breakpoint; /// \param[in] ignore /// How many breakpoint hits we should ignore before stopping. /// + /// \param[in] one_shot + /// Should this breakpoint delete itself after being hit once. + /// + /// \param[in] auto_continue + /// Should this breakpoint auto-continue after running its commands. + /// BreakpointOptions(const char *condition, bool enabled = true, int32_t ignore = 0, bool one_shot = false, bool auto_continue = false); @@ -319,7 +325,10 @@ friend class Breakpoint; void GetDescription(Stream *s, lldb::DescriptionLevel level) const; - /// Returns true if the breakpoint option has a callback set. + /// Check if the breakpoint option has a callback set. + /// + /// \return + /// If the breakpoint option has a callback, \b true otherwise \b false. bool HasCallback() const; /// This is the default empty callback. @@ -367,22 +376,32 @@ friend class Breakpoint; void SetThreadSpec(std::unique_ptr &thread_spec_up); private: - // For BreakpointOptions only - BreakpointHitCallback m_callback; // This is the callback function pointer - lldb::BatonSP m_callback_baton_sp; // This is the client data for the callback + /// For BreakpointOptions only + + /// This is the callback function pointer + BreakpointHitCallback m_callback; + /// This is the client data for the callback + lldb::BatonSP m_callback_baton_sp; bool m_baton_is_command_baton; bool m_callback_is_synchronous; bool m_enabled; + /// If set, the breakpoint delete itself after being hit once. bool m_one_shot; - uint32_t m_ignore_count; // Number of times to ignore this breakpoint - std::unique_ptr - m_thread_spec_up; // Thread for which this breakpoint will take - std::string m_condition_text; // The condition to test. - size_t m_condition_text_hash; // Its hash, so that locations know when the - // condition is updated. - bool m_auto_continue; // If set, auto-continue from breakpoint. - Flags m_set_flags; // Which options are set at this level. Drawn - // from BreakpointOptions::SetOptionsFlags. + /// Number of times to ignore this breakpoint. + uint32_t m_ignore_count; + /// Thread for which this breakpoint will stop. + std::unique_ptr m_thread_spec_up; + /// The condition to test. + std::string m_condition_text; + /// Its hash, so that locations know when the condition is updated. + size_t m_condition_text_hash; + /// If set, inject breakpoint condition into process. + bool m_inject_condition; + /// If set, auto-continue from breakpoint. + bool m_auto_continue; + /// Which options are set at this level. + /// Drawn from BreakpointOptions::SetOptionsFlags. + Flags m_set_flags; }; } // namespace lldb_private diff --git a/lldb/include/lldb/Breakpoint/BreakpointResolverFileRegex.h b/lldb/include/lldb/Breakpoint/BreakpointResolverFileRegex.h index 963145722e39aaf..52321e4f82a0961 100644 --- a/lldb/include/lldb/Breakpoint/BreakpointResolverFileRegex.h +++ b/lldb/include/lldb/Breakpoint/BreakpointResolverFileRegex.h @@ -24,7 +24,7 @@ namespace lldb_private { class BreakpointResolverFileRegex : public BreakpointResolver { public: BreakpointResolverFileRegex( - Breakpoint *bkpt, RegularExpression ®ex, + Breakpoint *bkpt, RegularExpression regex, const std::unordered_set &func_name_set, bool exact_match); static BreakpointResolver * diff --git a/lldb/include/lldb/Breakpoint/BreakpointResolverName.h b/lldb/include/lldb/Breakpoint/BreakpointResolverName.h index 85a41b6007f0baf..45a102e633797a8 100644 --- a/lldb/include/lldb/Breakpoint/BreakpointResolverName.h +++ b/lldb/include/lldb/Breakpoint/BreakpointResolverName.h @@ -44,7 +44,7 @@ class BreakpointResolverName : public BreakpointResolver { // Creates a function breakpoint by regular expression. Takes over control // of the lifespan of func_regex. - BreakpointResolverName(Breakpoint *bkpt, RegularExpression &func_regex, + BreakpointResolverName(Breakpoint *bkpt, RegularExpression func_regex, lldb::LanguageType language, lldb::addr_t offset, bool skip_prologue); diff --git a/lldb/include/lldb/Core/Address.h b/lldb/include/lldb/Core/Address.h index 080c00e76328e00..07bb450d609215c 100644 --- a/lldb/include/lldb/Core/Address.h +++ b/lldb/include/lldb/Core/Address.h @@ -338,6 +338,23 @@ class Address { bool ResolveAddressUsingFileSections(lldb::addr_t addr, const SectionList *sections); + /// Resolve this address to its containing function and optionally get + /// that function's address range. + /// + /// \param[out] sym_ctx + /// The symbol context describing the function in which this address lies + /// + /// \parm[out] addr_range_ptr + /// Pointer to the AddressRange to fill in with the function's address + /// range. Caller may pass null if they don't need the address range. + /// + /// \return + /// Returns \b false if the function/symbol could not be resolved + /// or if the address range was requested and could not be resolved; + /// returns \b true otherwise. + bool ResolveFunctionScope(lldb_private::SymbolContext &sym_ctx, + lldb_private::AddressRange *addr_range_ptr = nullptr); + /// Set the address to represent \a load_addr. /// /// The address will attempt to find a loaded section within \a target that diff --git a/lldb/include/lldb/Core/AddressResolverName.h b/lldb/include/lldb/Core/AddressResolverName.h index ad14ef6daeb1d61..6f74c0f9e3e5012 100644 --- a/lldb/include/lldb/Core/AddressResolverName.h +++ b/lldb/include/lldb/Core/AddressResolverName.h @@ -31,7 +31,7 @@ class AddressResolverName : public AddressResolver { // Creates a function breakpoint by regular expression. Takes over control // of the lifespan of func_regex. - AddressResolverName(RegularExpression &func_regex); + AddressResolverName(RegularExpression func_regex); AddressResolverName(const char *class_name, const char *method, AddressResolver::MatchType type); diff --git a/lldb/include/lldb/Core/Debugger.h b/lldb/include/lldb/Core/Debugger.h index 8e608717a801b2b..2b5bf5136510dc0 100644 --- a/lldb/include/lldb/Core/Debugger.h +++ b/lldb/include/lldb/Core/Debugger.h @@ -311,7 +311,7 @@ class Debugger : public std::enable_shared_from_this, // selected target, or if no target is present you want to prime the dummy // target with entities that will be copied over to new targets. Target *GetSelectedOrDummyTarget(bool prefer_dummy = false); - Target *GetDummyTarget(); + Target *GetDummyTarget() { return m_dummy_target_sp.get(); } lldb::BroadcasterManagerSP GetBroadcasterManager() { return m_broadcaster_manager_sp; @@ -345,9 +345,10 @@ class Debugger : public std::enable_shared_from_this, void HandleThreadEvent(const lldb::EventSP &event_sp); - size_t GetProcessSTDOUT(Process *process, Stream *stream); - - size_t GetProcessSTDERR(Process *process, Stream *stream); + // Ensures two threads don't attempt to flush process output in parallel. + std::mutex m_output_flush_mutex; + void FlushProcessOutput(Process &process, bool flush_stdout, + bool flush_stderr); SourceManager::SourceFileCache &GetSourceFileCache() { return m_source_file_cache; @@ -399,6 +400,7 @@ class Debugger : public std::enable_shared_from_this, Broadcaster m_sync_broadcaster; lldb::ListenerSP m_forward_listener_sp; llvm::once_flag m_clear_once; + lldb::TargetSP m_dummy_target_sp; // Events for m_sync_broadcaster enum { diff --git a/lldb/include/lldb/Core/FileSpecList.h b/lldb/include/lldb/Core/FileSpecList.h index 79623ef1fdca33c..8edc3280b01b06a 100644 --- a/lldb/include/lldb/Core/FileSpecList.h +++ b/lldb/include/lldb/Core/FileSpecList.h @@ -25,6 +25,9 @@ class Stream; /// A class that contains a mutable list of FileSpec objects. class FileSpecList { public: + typedef std::vector collection; + typedef collection::const_iterator const_iterator; + /// Default constructor. /// /// Initialize this object with an empty file list. @@ -76,6 +79,15 @@ class FileSpecList { /// \b true if the file was appended, \b false otherwise. bool AppendIfUnique(const FileSpec &file); + /// Inserts a new FileSpec into the FileSpecList constructed in-place with + /// the given arguments. + /// + /// \param[in] args + /// Arguments to create the FileSpec + template void EmplaceBack(Args &&... args) { + m_files.emplace_back(std::forward(args)...); + } + /// Clears the file list. void Clear(); @@ -182,9 +194,10 @@ class FileSpecList { static size_t GetFilesMatchingPartialPath(const char *path, bool dir_okay, FileSpecList &matches); + const_iterator begin() const { return m_files.begin(); } + const_iterator end() const { return m_files.end(); } + protected: - typedef std::vector - collection; ///< The collection type for the file list. collection m_files; ///< A collection of FileSpec objects. }; diff --git a/lldb/include/lldb/Core/FormatEntity.h b/lldb/include/lldb/Core/FormatEntity.h index 634d9df2ad839bd..ae6c402a45be1e8 100644 --- a/lldb/include/lldb/Core/FormatEntity.h +++ b/lldb/include/lldb/Core/FormatEntity.h @@ -199,7 +199,7 @@ class FormatEntity { llvm::StringRef &variable_name, llvm::StringRef &variable_format); - static size_t AutoComplete(lldb_private::CompletionRequest &request); + static void AutoComplete(lldb_private::CompletionRequest &request); // Format the current elements into the stream \a s. // diff --git a/lldb/include/lldb/Core/IOHandler.h b/lldb/include/lldb/Core/IOHandler.h index b7180675cf4e434..3a77615833d93be 100644 --- a/lldb/include/lldb/Core/IOHandler.h +++ b/lldb/include/lldb/Core/IOHandler.h @@ -10,6 +10,7 @@ #define liblldb_IOHandler_h_ #include "lldb/Core/ValueObjectList.h" +#include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/Flags.h" #include "lldb/Utility/Predicate.h" @@ -198,10 +199,8 @@ class IOHandlerDelegate { virtual void IOHandlerDeactivated(IOHandler &io_handler) {} - virtual int IOHandlerComplete(IOHandler &io_handler, const char *current_line, - const char *cursor, const char *last_char, - int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions); + virtual void IOHandlerComplete(IOHandler &io_handler, + CompletionRequest &request); virtual const char *IOHandlerGetFixIndentationCharacters() { return nullptr; } @@ -415,11 +414,7 @@ class IOHandlerEditline : public IOHandler { static int FixIndentationCallback(Editline *editline, const StringList &lines, int cursor_position, void *baton); - static int AutoCompleteCallback(const char *current_line, const char *cursor, - const char *last_char, - int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions, - void *baton); + static void AutoCompleteCallback(CompletionRequest &request, void *baton); #endif protected: @@ -450,10 +445,8 @@ class IOHandlerConfirm : public IOHandlerDelegate, public IOHandlerEditline { bool GetResponse() const { return m_user_response; } - int IOHandlerComplete(IOHandler &io_handler, const char *current_line, - const char *cursor, const char *last_char, - int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions) override; + void IOHandlerComplete(IOHandler &io_handler, + CompletionRequest &request) override; void IOHandlerInputComplete(IOHandler &io_handler, std::string &data) override; diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h index 544895ea89e9eb1..146bbe8ca1b310e 100644 --- a/lldb/include/lldb/Core/Module.h +++ b/lldb/include/lldb/Core/Module.h @@ -49,7 +49,6 @@ class Symbol; class SymbolContext; class SymbolContextList; class SymbolFile; -class SymbolVendor; class Symtab; class Target; class TypeList; @@ -67,8 +66,8 @@ class VariableList; /// accessors are called. For example the object file (ObjectFile) /// representation will only be parsed if the object file is requested using /// the Module::GetObjectFile() is called. The debug symbols will only be -/// parsed if the symbol vendor (SymbolVendor) is requested using the -/// Module::GetSymbolVendor() is called. +/// parsed if the symbol file (SymbolFile) is requested using the +/// Module::GetSymbolFile() method. /// /// The module will parse more detailed information as more queries are made. class Module : public std::enable_shared_from_this, @@ -420,10 +419,9 @@ class Module : public std::enable_shared_from_this, /// Find types by name. /// - /// Type lookups in modules go through the SymbolVendor (which will use one - /// or more SymbolFile subclasses). The SymbolFile needs to be able to - /// lookup types by basename and not the fully qualified typename. This - /// allows the type accelerator tables to stay small, even with heavily + /// Type lookups in modules go through the SymbolFile. The SymbolFile needs to + /// be able to lookup types by basename and not the fully qualified typename. + /// This allows the type accelerator tables to stay small, even with heavily /// templatized C++. The type search will then narrow down the search /// results. If "exact_match" is true, then the type search will only match /// exact type name matches. If "exact_match" is false, the type will match @@ -456,6 +454,14 @@ class Module : public std::enable_shared_from_this, llvm::DenseSet &searched_symbol_files, TypeList &types); + /// Find types by name. + /// + /// This behaves like the other FindTypes method but allows to + /// specify a DeclContext and a language for the type being searched + /// for. + size_t FindTypes(llvm::ArrayRef pattern, + LanguageSet languages, bool append, TypeMap &types); + lldb::TypeSP FindFirstType(const SymbolContext &sc, ConstString type_name, bool exact_match); @@ -638,27 +644,19 @@ class Module : public std::enable_shared_from_this, ObjectFile *GetMemoryObjectFile(const lldb::ProcessSP &process_sp, lldb::addr_t header_addr, Status &error, size_t size_to_read = 512); - /// Get the symbol vendor interface for the current architecture. - /// - /// If the symbol vendor file has not been located yet, this function will - /// find the best SymbolVendor plug-in that can use the current object file. - /// - /// \return - /// If this module does not have a valid object file, or no - /// plug-in can be found that can use the object file, nullptr will - /// be returned, else a valid symbol vendor plug-in interface - /// will be returned. The returned pointer is owned by this - /// object and remains valid as long as the object is around. - virtual SymbolVendor * - GetSymbolVendor(bool can_create = true, - lldb_private::Stream *feedback_strm = nullptr); - /// Get accessor the type list for this module. + /// Get the module's symbol file /// - /// \return - /// A valid type list pointer, or nullptr if there is no valid - /// symbol vendor for this module. - TypeList *GetTypeList(); + /// If the symbol file has already been loaded, this function returns it. All + /// arguments are ignored. If the symbol file has not been located yet, and + /// the can_create argument is false, the function returns nullptr. If + /// can_create is true, this function will find the best SymbolFile plug-in + /// that can use the current object file. feedback_strm, if not null, is used + /// to report the details of the search process. + virtual SymbolFile *GetSymbolFile(bool can_create = true, + Stream *feedback_strm = nullptr); + + Symtab *GetSymtab(); /// Get a reference to the UUID value contained in this object. /// @@ -819,7 +817,8 @@ class Module : public std::enable_shared_from_this, bool GetIsDynamicLinkEditor(); - TypeSystem *GetTypeSystemForLanguage(lldb::LanguageType language); + llvm::Expected + GetTypeSystemForLanguage(lldb::LanguageType language); // Special error functions that can do printf style formatting that will // prepend the message with something appropriate for this module (like the @@ -848,7 +847,7 @@ class Module : public std::enable_shared_from_this, // when the module first gets created. bool FileHasChanged() const; - // SymbolVendor, SymbolFile and ObjectFile member objects should lock the + // SymbolFile and ObjectFile member objects should lock the // module mutex to avoid deadlocks. std::recursive_mutex &GetMutex() const { return m_mutex; } @@ -896,16 +895,19 @@ class Module : public std::enable_shared_from_this, bool RemapSourceFile(llvm::StringRef path, std::string &new_path) const; bool RemapSourceFile(const char *, std::string &) const = delete; + /// Update the ArchSpec to a more specific variant. + bool MergeArchitecture(const ArchSpec &arch_spec); + /// \class LookupInfo Module.h "lldb/Core/Module.h" /// A class that encapsulates name lookup information. /// /// Users can type a wide variety of partial names when setting breakpoints - /// by name or when looking for functions by name. SymbolVendor and - /// SymbolFile objects are only required to implement name lookup for - /// function basenames and for fully mangled names. This means if the user - /// types in a partial name, we must reduce this to a name lookup that will - /// work with all SymbolFile objects. So we might reduce a name lookup to - /// look for a basename, and then prune out any results that don't match. + /// by name or when looking for functions by name. The SymbolFile object is + /// only required to implement name lookup for function basenames and for + /// fully mangled names. This means if the user types in a partial name, we + /// must reduce this to a name lookup that will work with all SymbolFile + /// objects. So we might reduce a name lookup to look for a basename, and then + /// prune out any results that don't match. /// /// The "m_name" member variable represents the name as it was typed by the /// user. "m_lookup_name" will be the name we actually search for through @@ -1012,7 +1014,7 @@ class Module : public std::enable_shared_from_this, /// ObjectFile instances for the debug info std::atomic m_did_load_objfile{false}; - std::atomic m_did_load_symbol_vendor{false}; + std::atomic m_did_load_symfile{false}; std::atomic m_did_set_uuid{false}; mutable bool m_file_has_changed : 1, m_first_file_changed_log : 1; /// See if the module was modified after it diff --git a/lldb/include/lldb/Core/PluginManager.h b/lldb/include/lldb/Core/PluginManager.h index 1bac1e5df694085..5b859752b3c7e91 100644 --- a/lldb/include/lldb/Core/PluginManager.h +++ b/lldb/include/lldb/Core/PluginManager.h @@ -10,6 +10,8 @@ #define liblldb_PluginManager_h_ #include "lldb/Core/Architecture.h" +#include "lldb/Symbol/TypeSystem.h" +#include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Status.h" #include "lldb/lldb-enumerations.h" @@ -228,8 +230,8 @@ class PluginManager { static const char *GetPlatformPluginDescriptionAtIndex(uint32_t idx); - static size_t AutoCompletePlatformName(llvm::StringRef partial_name, - StringList &matches); + static void AutoCompletePlatformName(llvm::StringRef partial_name, + CompletionRequest &request); // Process static bool RegisterPlugin(ConstString name, const char *description, @@ -383,10 +385,10 @@ class PluginManager { GetInstrumentationRuntimeCreateCallbackForPluginName(ConstString name); // TypeSystem - static bool RegisterPlugin( - ConstString name, const char *description, - TypeSystemCreateInstance create_callback, - TypeSystemEnumerateSupportedLanguages enumerate_languages_callback); + static bool RegisterPlugin(ConstString name, const char *description, + TypeSystemCreateInstance create_callback, + LanguageSet supported_languages_for_types, + LanguageSet supported_languages_for_expressions); static bool UnregisterPlugin(TypeSystemCreateInstance create_callback); @@ -396,18 +398,14 @@ class PluginManager { static TypeSystemCreateInstance GetTypeSystemCreateCallbackForPluginName(ConstString name); - static TypeSystemEnumerateSupportedLanguages - GetTypeSystemEnumerateSupportedLanguagesCallbackAtIndex(uint32_t idx); + static LanguageSet GetAllTypeSystemSupportedLanguagesForTypes(); - static TypeSystemEnumerateSupportedLanguages - GetTypeSystemEnumerateSupportedLanguagesCallbackForPluginName( - ConstString name); + static LanguageSet GetAllTypeSystemSupportedLanguagesForExpressions(); // REPL - static bool - RegisterPlugin(ConstString name, const char *description, - REPLCreateInstance create_callback, - REPLEnumerateSupportedLanguages enumerate_languages_callback); + static bool RegisterPlugin(ConstString name, const char *description, + REPLCreateInstance create_callback, + LanguageSet supported_languages); static bool UnregisterPlugin(REPLCreateInstance create_callback); @@ -416,12 +414,7 @@ class PluginManager { static REPLCreateInstance GetREPLCreateCallbackForPluginName(ConstString name); - static REPLEnumerateSupportedLanguages - GetREPLEnumerateSupportedLanguagesCallbackAtIndex(uint32_t idx); - - static REPLEnumerateSupportedLanguages - GetREPLSystemEnumerateSupportedLanguagesCallbackForPluginName( - ConstString name); + static LanguageSet GetREPLAllTypeSystemSupportedLanguages(); // Some plug-ins might register a DebuggerInitializeCallback callback when // registering the plug-in. After a new Debugger instance is created, this @@ -439,32 +432,28 @@ class PluginManager { ConstString description, bool is_global_property); static lldb::OptionValuePropertiesSP - GetSettingForPlatformPlugin(Debugger &debugger, - ConstString setting_name); + GetSettingForPlatformPlugin(Debugger &debugger, ConstString setting_name); static bool CreateSettingForPlatformPlugin( Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, ConstString description, bool is_global_property); static lldb::OptionValuePropertiesSP - GetSettingForProcessPlugin(Debugger &debugger, - ConstString setting_name); + GetSettingForProcessPlugin(Debugger &debugger, ConstString setting_name); static bool CreateSettingForProcessPlugin( Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, ConstString description, bool is_global_property); static lldb::OptionValuePropertiesSP - GetSettingForSymbolFilePlugin(Debugger &debugger, - ConstString setting_name); + GetSettingForSymbolFilePlugin(Debugger &debugger, ConstString setting_name); static bool CreateSettingForSymbolFilePlugin( Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, ConstString description, bool is_global_property); static lldb::OptionValuePropertiesSP - GetSettingForJITLoaderPlugin(Debugger &debugger, - ConstString setting_name); + GetSettingForJITLoaderPlugin(Debugger &debugger, ConstString setting_name); static bool CreateSettingForJITLoaderPlugin( Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp, diff --git a/lldb/include/lldb/Core/PropertiesBase.td b/lldb/include/lldb/Core/PropertiesBase.td new file mode 100644 index 000000000000000..be97d44ae8e4fde --- /dev/null +++ b/lldb/include/lldb/Core/PropertiesBase.td @@ -0,0 +1,49 @@ +// Base class for all options. +class Property { + string Name = name; + string Type = type; + string Definition; +} + +// Sets the description for the property that should be displayed to the user. +class Desc { + string Description = description; +} + +// Marks the property as global. +class Global { + bit Global = 1; +} + +class DefaultTrue { + int DefaultUnsignedValue = 1; + bit HasDefaultUnsignedValue = 1; +} + +class DefaultFalse { + int DefaultUnsignedValue = 0; + bit HasDefaultUnsignedValue = 1; +} + +// Gives the property a default string value. +class DefaultStringValue { + string DefaultStringValue = value; + bit HasDefaultStringValue = 1; +} + +// Gives the property a default enum value. +class DefaultEnumValue { + string DefaultEnumValue = value; + bit HasDefaultEnumValue = 1; +} + +// Gives the property a default string value. +class DefaultUnsignedValue { + int DefaultUnsignedValue = value; + bit HasDefaultUnsignedValue = 1; +} + +// Gives the property enum values. +class EnumValues { + string EnumValues = enum; +} diff --git a/lldb/include/lldb/Core/Section.h b/lldb/include/lldb/Core/Section.h index 542849b804284df..881d43702ceee07 100644 --- a/lldb/include/lldb/Core/Section.h +++ b/lldb/include/lldb/Core/Section.h @@ -38,6 +38,11 @@ class SectionList { typedef collection::iterator iterator; typedef collection::const_iterator const_iterator; + const_iterator begin() const { return m_sections.begin(); } + const_iterator end() const { return m_sections.end(); } + const_iterator begin() { return m_sections.begin(); } + const_iterator end() { return m_sections.end(); } + SectionList(); ~SectionList(); diff --git a/lldb/include/lldb/Core/Value.h b/lldb/include/lldb/Core/Value.h index b786e4866f6c10f..7b4cc3b71c28cc9 100644 --- a/lldb/include/lldb/Core/Value.h +++ b/lldb/include/lldb/Core/Value.h @@ -210,7 +210,6 @@ class Value { uint64_t GetValueByteSize(Status *error_ptr, ExecutionContext *exe_ctx); Status GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data, - uint32_t data_offset, Module *module); // Can be nullptr static const char *GetValueTypeAsCString(ValueType context_type); diff --git a/lldb/include/lldb/DataFormatters/FormattersContainer.h b/lldb/include/lldb/DataFormatters/FormattersContainer.h index 9d7d37343ac2521..2afe4d4c64bd86d 100644 --- a/lldb/include/lldb/DataFormatters/FormattersContainer.h +++ b/lldb/include/lldb/DataFormatters/FormattersContainer.h @@ -47,7 +47,7 @@ static inline ConstString GetValidTypeName_Impl(ConstString type) { return type; std::string type_cstr(type.AsCString()); - lldb_utility::StringLexer type_lexer(type_cstr); + StringLexer type_lexer(type_cstr); type_lexer.AdvanceIf("class "); type_lexer.AdvanceIf("enum "); @@ -67,7 +67,7 @@ template class FormatMap { typedef typename ValueType::SharedPointer ValueSP; typedef std::map MapType; typedef typename MapType::iterator MapIterator; - typedef std::function ForEachCallback; + typedef std::function ForEachCallback; FormatMap(IFormatChangeListener *lst) : m_map(), m_map_mutex(), listener(lst) {} @@ -79,7 +79,7 @@ template class FormatMap { entry->GetRevision() = 0; std::lock_guard guard(m_map_mutex); - m_map[name] = entry; + m_map[std::move(name)] = entry; if (listener) listener->Changed(); } @@ -89,7 +89,7 @@ template class FormatMap { MapIterator iter = m_map.find(name); if (iter == m_map.end()) return false; - m_map.erase(name); + m_map.erase(iter); if (listener) listener->Changed(); return true; @@ -116,7 +116,7 @@ template class FormatMap { std::lock_guard guard(m_map_mutex); MapIterator pos, end = m_map.end(); for (pos = m_map.begin(); pos != end; pos++) { - KeyType type = pos->first; + const KeyType &type = pos->first; if (!callback(type, pos->second)) break; } @@ -138,6 +138,7 @@ template class FormatMap { return iter->second; } + // If caller holds the mutex we could return a reference without copy ctor. KeyType GetKeyAtIndex(size_t index) { std::lock_guard guard(m_map_mutex); MapIterator iter = m_map.begin(); @@ -182,8 +183,8 @@ template class FormattersContainer { FormattersContainer(std::string name, IFormatChangeListener *lst) : m_format_map(lst), m_name(name) {} - void Add(const MapKeyType &type, const MapValueType &entry) { - Add_Impl(type, entry, static_cast(nullptr)); + void Add(MapKeyType type, const MapValueType &entry) { + Add_Impl(std::move(type), entry, static_cast(nullptr)); } bool Delete(ConstString type) { @@ -233,9 +234,9 @@ template class FormattersContainer { DISALLOW_COPY_AND_ASSIGN(FormattersContainer); - void Add_Impl(const MapKeyType &type, const MapValueType &entry, - lldb::RegularExpressionSP *dummy) { - m_format_map.Add(type, entry); + void Add_Impl(MapKeyType type, const MapValueType &entry, + RegularExpression *dummy) { + m_format_map.Add(std::move(type), entry); } void Add_Impl(ConstString type, const MapValueType &entry, @@ -247,12 +248,12 @@ template class FormattersContainer { return m_format_map.Delete(type); } - bool Delete_Impl(ConstString type, lldb::RegularExpressionSP *dummy) { + bool Delete_Impl(ConstString type, RegularExpression *dummy) { std::lock_guard guard(m_format_map.mutex()); MapIterator pos, end = m_format_map.map().end(); for (pos = m_format_map.map().begin(); pos != end; pos++) { - lldb::RegularExpressionSP regex = pos->first; - if (type.GetStringRef() == regex->GetText()) { + const RegularExpression ®ex = pos->first; + if (type.GetStringRef() == regex.GetText()) { m_format_map.map().erase(pos); if (m_format_map.listener) m_format_map.listener->Changed(); @@ -282,23 +283,22 @@ template class FormattersContainer { } lldb::TypeNameSpecifierImplSP - GetTypeNameSpecifierAtIndex_Impl(size_t index, - lldb::RegularExpressionSP *dummy) { - lldb::RegularExpressionSP regex = m_format_map.GetKeyAtIndex(index); - if (regex.get() == nullptr) + GetTypeNameSpecifierAtIndex_Impl(size_t index, RegularExpression *dummy) { + RegularExpression regex = m_format_map.GetKeyAtIndex(index); + if (regex == RegularExpression()) return lldb::TypeNameSpecifierImplSP(); return lldb::TypeNameSpecifierImplSP( - new TypeNameSpecifierImpl(regex->GetText().str().c_str(), true)); + new TypeNameSpecifierImpl(regex.GetText().str().c_str(), true)); } bool Get_Impl(ConstString key, MapValueType &value, - lldb::RegularExpressionSP *dummy) { + RegularExpression *dummy) { llvm::StringRef key_str = key.GetStringRef(); std::lock_guard guard(m_format_map.mutex()); MapIterator pos, end = m_format_map.map().end(); for (pos = m_format_map.map().begin(); pos != end; pos++) { - lldb::RegularExpressionSP regex = pos->first; - if (regex->Execute(key_str)) { + const RegularExpression ®ex = pos->first; + if (regex.Execute(key_str)) { value = pos->second; return true; } @@ -307,12 +307,12 @@ template class FormattersContainer { } bool GetExact_Impl(ConstString key, MapValueType &value, - lldb::RegularExpressionSP *dummy) { + RegularExpression *dummy) { std::lock_guard guard(m_format_map.mutex()); MapIterator pos, end = m_format_map.map().end(); for (pos = m_format_map.map().begin(); pos != end; pos++) { - lldb::RegularExpressionSP regex = pos->first; - if (regex->GetText() == key.GetStringRef()) { + const RegularExpression ®ex = pos->first; + if (regex.GetText() == key.GetStringRef()) { value = pos->second; return true; } diff --git a/lldb/include/lldb/DataFormatters/TypeCategory.h b/lldb/include/lldb/DataFormatters/TypeCategory.h index bdb393abd848c6b..a5438226bbbb876 100644 --- a/lldb/include/lldb/DataFormatters/TypeCategory.h +++ b/lldb/include/lldb/DataFormatters/TypeCategory.h @@ -26,7 +26,7 @@ namespace lldb_private { template class FormatterContainerPair { public: typedef FormattersContainer ExactMatchContainer; - typedef FormattersContainer + typedef FormattersContainer RegexMatchContainer; typedef typename ExactMatchContainer::MapType ExactMatchMap; diff --git a/lldb/include/lldb/Expression/DWARFExpression.h b/lldb/include/lldb/Expression/DWARFExpression.h index 21830a562800447..44015b4e418f54b 100644 --- a/lldb/include/lldb/Expression/DWARFExpression.h +++ b/lldb/include/lldb/Expression/DWARFExpression.h @@ -50,15 +50,8 @@ class DWARFExpression { /// \param[in] data /// A data extractor configured to read the DWARF location expression's /// bytecode. - /// - /// \param[in] data_offset - /// The offset of the location expression in the extractor. - /// - /// \param[in] data_length - /// The byte length of the location expression. DWARFExpression(lldb::ModuleSP module, const DataExtractor &data, - const DWARFUnit *dwarf_cu, lldb::offset_t data_offset, - lldb::offset_t data_length); + const DWARFUnit *dwarf_cu); /// Destructor virtual ~DWARFExpression(); @@ -211,12 +204,6 @@ class DWARFExpression { /// in the case where an expression needs to be evaluated while building /// the stack frame list, this short-cut is available. /// - /// \param[in] offset - /// The offset of the location expression in the data extractor. - /// - /// \param[in] length - /// The length in bytes of the location expression. - /// /// \param[in] reg_set /// The call-frame-info style register kind. /// @@ -236,8 +223,7 @@ class DWARFExpression { /// details of the failure are provided through it. static bool Evaluate(ExecutionContext *exe_ctx, RegisterContext *reg_ctx, lldb::ModuleSP opcode_ctx, const DataExtractor &opcodes, - const DWARFUnit *dwarf_cu, const lldb::offset_t offset, - const lldb::offset_t length, + const DWARFUnit *dwarf_cu, const lldb::RegisterKind reg_set, const Value *initial_value_ptr, const Value *object_address_ptr, Value &result, @@ -252,10 +238,6 @@ class DWARFExpression { lldb::addr_t loclist_base_load_addr, lldb::addr_t address, ABI *abi); - static size_t LocationListSize(const DWARFUnit *dwarf_cu, - const DataExtractor &debug_loc_data, - lldb::offset_t offset); - static bool PrintDWARFExpression(Stream &s, const DataExtractor &data, int address_size, int dwarf_ref_size, bool location_expression); diff --git a/lldb/include/lldb/Expression/DiagnosticManager.h b/lldb/include/lldb/Expression/DiagnosticManager.h index 7e3e2bb8606a156..91fe8a4b9b4c17b 100644 --- a/lldb/include/lldb/Expression/DiagnosticManager.h +++ b/lldb/include/lldb/Expression/DiagnosticManager.h @@ -23,7 +23,6 @@ enum DiagnosticOrigin { eDiagnosticOriginUnknown = 0, eDiagnosticOriginLLDB, eDiagnosticOriginClang, - eDiagnosticOriginGo, eDiagnosticOriginSwift, eDiagnosticOriginLLVM }; @@ -47,7 +46,6 @@ class Diagnostic { switch (kind) { case eDiagnosticOriginUnknown: case eDiagnosticOriginLLDB: - case eDiagnosticOriginGo: case eDiagnosticOriginLLVM: return true; case eDiagnosticOriginClang: @@ -108,7 +106,7 @@ class DiagnosticManager { } } - bool HasFixIts() { + bool HasFixIts() const { for (Diagnostic *diag : m_diagnostics) { if (diag->HasFixIts()) return true; @@ -127,16 +125,13 @@ class DiagnosticManager { m_diagnostics.push_back(diagnostic); } - void CopyDiagnostics(DiagnosticManager &otherDiagnostics); - size_t Printf(DiagnosticSeverity severity, const char *format, ...) __attribute__((format(printf, 3, 4))); - size_t PutString(DiagnosticSeverity severity, llvm::StringRef str); + void PutString(DiagnosticSeverity severity, llvm::StringRef str); void AppendMessageToDiagnostic(llvm::StringRef str) { - if (!m_diagnostics.empty()) { + if (!m_diagnostics.empty()) m_diagnostics.back()->AppendMessage(str); - } } // Returns a string containing errors in this format: @@ -153,7 +148,6 @@ class DiagnosticManager { // Moves fixed_expression to the internal storage. void SetFixedExpression(std::string fixed_expression) { m_fixed_expression = std::move(fixed_expression); - fixed_expression.clear(); } protected: diff --git a/lldb/include/lldb/Expression/DynamicCheckerFunctions.h b/lldb/include/lldb/Expression/DynamicCheckerFunctions.h new file mode 100644 index 000000000000000..7be24b6ea962bfe --- /dev/null +++ b/lldb/include/lldb/Expression/DynamicCheckerFunctions.h @@ -0,0 +1,62 @@ +//===-- DynamicCheckerFunctions.h -------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_DynamicCheckerFunctions_h_ +#define liblldb_DynamicCheckerFunctions_h_ + +#include "lldb/lldb-types.h" + +namespace lldb_private { + +class DiagnosticManager; +class ExecutionContext; + +/// Encapsulates dynamic check functions used by expressions. +/// +/// Each of the utility functions encapsulated in this class is responsible +/// for validating some data that an expression is about to use. Examples +/// are: +/// +/// a = *b; // check that b is a valid pointer +/// [b init]; // check that b is a valid object to send "init" to +/// +/// The class installs each checker function into the target process and makes +/// it available to IRDynamicChecks to use. +class DynamicCheckerFunctions { +public: + enum DynamicCheckerFunctionsKind { + DCF_Clang, + }; + + DynamicCheckerFunctions(DynamicCheckerFunctionsKind kind) : m_kind(kind) {} + virtual ~DynamicCheckerFunctions() = default; + + /// Install the utility functions into a process. This binds the instance + /// of DynamicCheckerFunctions to that process. + /// + /// \param[in] diagnostic_manager + /// A diagnostic manager to report errors to. + /// + /// \param[in] exe_ctx + /// The execution context to install the functions into. + /// + /// \return + /// True on success; false on failure, or if the functions have + /// already been installed. + virtual bool Install(DiagnosticManager &diagnostic_manager, + ExecutionContext &exe_ctx) = 0; + virtual bool DoCheckersExplainStop(lldb::addr_t addr, Stream &message) = 0; + + DynamicCheckerFunctionsKind GetKind() const { return m_kind; } + +private: + const DynamicCheckerFunctionsKind m_kind; +}; +} // namespace lldb_private + +#endif // liblldb_DynamicCheckerFunctions_h_ diff --git a/lldb/include/lldb/Expression/ExpressionSourceCode.h b/lldb/include/lldb/Expression/ExpressionSourceCode.h index d0d01b5f9b596a7..e7d39e7ca24a058 100644 --- a/lldb/include/lldb/Expression/ExpressionSourceCode.h +++ b/lldb/include/lldb/Expression/ExpressionSourceCode.h @@ -17,20 +17,27 @@ namespace lldb_private { class ExpressionSourceCode { +protected: + enum Wrapping : bool { + Wrap = true, + NoWrap = false, + }; + public: - bool NeedsWrapping() const { return m_wrap; } + bool NeedsWrapping() const { return m_wrap == Wrap; } const char *GetName() const { return m_name.c_str(); } protected: - ExpressionSourceCode(const char *name, const char *prefix, const char *body, - bool wrap) - : m_name(name), m_prefix(prefix), m_body(body), m_wrap(wrap) {} + ExpressionSourceCode(llvm::StringRef name, llvm::StringRef prefix, + llvm::StringRef body, Wrapping wrap) + : m_name(name.str()), m_prefix(prefix.str()), m_body(body.str()), + m_wrap(wrap) {} std::string m_name; std::string m_prefix; std::string m_body; - bool m_wrap; + Wrapping m_wrap; }; } // namespace lldb_private diff --git a/lldb/include/lldb/Expression/IRExecutionUnit.h b/lldb/include/lldb/Expression/IRExecutionUnit.h index 37f31358e4e0f50..beff44db9d5eda4 100644 --- a/lldb/include/lldb/Expression/IRExecutionUnit.h +++ b/lldb/include/lldb/Expression/IRExecutionUnit.h @@ -101,7 +101,7 @@ class IRExecutionUnit : public std::enable_shared_from_this, lldb::ModuleSP GetJITModule(); - lldb::addr_t FindSymbol(ConstString name); + lldb::addr_t FindSymbol(ConstString name, bool &missing_weak); void GetStaticInitializers(std::vector &static_initializers); @@ -226,7 +226,8 @@ class IRExecutionUnit : public std::enable_shared_from_this, const std::vector &C_specs); lldb::addr_t FindInSymbols(const std::vector &specs, - const lldb_private::SymbolContext &sc); + const lldb_private::SymbolContext &sc, + bool &symbol_was_missing_weak); lldb::addr_t FindInRuntimes(const std::vector &specs, const lldb_private::SymbolContext &sc); @@ -301,6 +302,13 @@ class IRExecutionUnit : public std::enable_shared_from_this, size_t Size) override {} uint64_t getSymbolAddress(const std::string &Name) override; + + // Find the address of the symbol Name. If Name is a missing weak symbol + // then missing_weak will be true. + uint64_t GetSymbolAddressAndPresence(const std::string &Name, + bool &missing_weak); + + llvm::JITSymbol findSymbol(const std::string &Name) override; void *getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure = true) override; diff --git a/lldb/include/lldb/Expression/LLVMUserExpression.h b/lldb/include/lldb/Expression/LLVMUserExpression.h index c2af7239951b59b..c3b8ed506f17545 100644 --- a/lldb/include/lldb/Expression/LLVMUserExpression.h +++ b/lldb/include/lldb/Expression/LLVMUserExpression.h @@ -103,22 +103,6 @@ class LLVMUserExpression : public UserExpression { /// when running the /// expression. lldb::ModuleWP m_jit_module_wp; - bool m_enforce_valid_object; ///< True if the expression parser should enforce - ///the presence of a valid class pointer - /// in order to generate the expression as a method. - bool m_in_cplusplus_method; ///< True if the expression is compiled as a C++ - ///member function (true if it was parsed - /// when exe_ctx was in a C++ method). - bool m_in_objectivec_method; ///< True if the expression is compiled as an - ///Objective-C method (true if it was parsed - /// when exe_ctx was in an Objective-C method). - bool m_in_static_method; ///< True if the expression is compiled as a static - ///(or class) method (currently true if it - /// was parsed when exe_ctx was in an Objective-C class method). - bool m_needs_object_ptr; ///< True if "this" or "self" must be looked up and - ///passed in. False if the expression - /// doesn't really use them and they can be NULL. - bool m_const_object; ///< True if "this" is const. Target *m_target; ///< The target for storing persistent data like types and ///variables. diff --git a/lldb/include/lldb/Expression/Materializer.h b/lldb/include/lldb/Expression/Materializer.h index 603b4e0066cd4a5..70f622e7850bd82 100644 --- a/lldb/include/lldb/Expression/Materializer.h +++ b/lldb/include/lldb/Expression/Materializer.h @@ -115,8 +115,6 @@ class Materializer { void SetOffset(uint32_t offset) { m_offset = offset; } protected: - void SetSizeAndAlignmentFromType(CompilerType &type); - uint32_t m_alignment; uint32_t m_size; uint32_t m_offset; diff --git a/lldb/include/lldb/Expression/REPL.h b/lldb/include/lldb/Expression/REPL.h index 850d2f6f961a963..d34a792f58f1cc9 100644 --- a/lldb/include/lldb/Expression/REPL.h +++ b/lldb/include/lldb/Expression/REPL.h @@ -103,10 +103,8 @@ class REPL : public IOHandlerDelegate { void IOHandlerInputComplete(IOHandler &io_handler, std::string &line) override; - int IOHandlerComplete(IOHandler &io_handler, const char *current_line, - const char *cursor, const char *last_char, - int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions) override; + void IOHandlerComplete(IOHandler &io_handler, + CompletionRequest &request) override; protected: static int CalculateActualIndentation(const StringList &lines); diff --git a/lldb/include/lldb/Host/Config.h b/lldb/include/lldb/Host/Config.h deleted file mode 100644 index ff94ffce4860ff1..000000000000000 --- a/lldb/include/lldb/Host/Config.h +++ /dev/null @@ -1,38 +0,0 @@ -//===-- Config.h ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_HOST_CONFIG_H -#define LLDB_HOST_CONFIG_H - -#if defined(__APPLE__) - -// This block of code only exists to keep the Xcode project working in the -// absence of a configuration step. -#define LLDB_LIBDIR_SUFFIX "" - -#define LLDB_CONFIG_TERMIOS_SUPPORTED 1 - -#define LLDB_EDITLINE_USE_WCHAR 1 - -#define LLDB_HAVE_EL_RFUNC_T 1 - -#define HAVE_SYS_EVENT_H 1 - -#define HAVE_PPOLL 0 - -#define HAVE_SIGACTION 1 - -#define HAVE_LIBCOMPRESSION 1 - -#else - -#error This file is only used by the Xcode build. - -#endif - -#endif // #ifndef LLDB_HOST_CONFIG_H diff --git a/lldb/include/lldb/Host/Config.h.cmake b/lldb/include/lldb/Host/Config.h.cmake index b8fb9e9de868d93..7f152437fe5280f 100644 --- a/lldb/include/lldb/Host/Config.h.cmake +++ b/lldb/include/lldb/Host/Config.h.cmake @@ -19,6 +19,8 @@ #define LLDB_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" +#cmakedefine01 HAVE_SYS_TYPES_H + #cmakedefine01 HAVE_SYS_EVENT_H #cmakedefine01 HAVE_PPOLL diff --git a/lldb/include/lldb/Host/Editline.h b/lldb/include/lldb/Host/Editline.h index a942ede05ce5960..65bf15531bc46e0 100644 --- a/lldb/include/lldb/Host/Editline.h +++ b/lldb/include/lldb/Host/Editline.h @@ -53,6 +53,7 @@ #include #include "lldb/Host/ConnectionFileDescriptor.h" +#include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Predicate.h" @@ -97,11 +98,7 @@ typedef int (*FixIndentationCallbackType)(Editline *editline, const StringList &lines, int cursor_position, void *baton); -typedef int (*CompleteCallbackType)(const char *current_line, - const char *cursor, const char *last_char, - int skip_first_n_matches, int max_matches, - StringList &matches, - StringList &descriptions, void *baton); +typedef void (*CompleteCallbackType)(CompletionRequest &request, void *baton); /// Status used to decide when and how to start editing another line in /// multi-line sessions diff --git a/lldb/include/lldb/Host/File.h b/lldb/include/lldb/Host/File.h index eb28c4ada0e719a..688db17e07ea992 100644 --- a/lldb/include/lldb/Host/File.h +++ b/lldb/include/lldb/Host/File.h @@ -252,36 +252,6 @@ class File : public IOObject { /// failure. Status Read(void *dst, size_t &num_bytes, off_t &offset); - /// Read bytes from a file from the specified file offset. - /// - /// NOTE: This function is thread safe in that clients manager their - /// own file position markers and reads on other threads won't mess up the - /// current read. - /// - /// \param[in,out] num_bytes - /// The number of bytes to read form the current file position - /// which gets modified with the number of bytes that were read. - /// - /// \param[in,out] offset - /// The offset within the file from which to read \a num_bytes - /// bytes. This offset gets incremented by the number of bytes - /// that were read. - /// - /// \param[in] null_terminate - /// Ensure that the data that is read is terminated with a NULL - /// character so that the data can be used as a C string. - /// - /// \param[out] data_buffer_sp - /// A data buffer to create and fill in that will contain any - /// data that is read from the file. This buffer will be reset - /// if an error occurs. - /// - /// \return - /// An error object that indicates success or the reason for - /// failure. - Status Read(size_t &num_bytes, off_t &offset, bool null_terminate, - lldb::DataBufferSP &data_buffer_sp); - /// Write bytes to a file at the specified file offset. /// /// NOTE: This function is thread safe in that clients manager their diff --git a/lldb/include/lldb/Host/Host.h b/lldb/include/lldb/Host/Host.h index 2cb3aafc1af473d..884c5cf632134a5 100644 --- a/lldb/include/lldb/Host/Host.h +++ b/lldb/include/lldb/Host/Host.h @@ -99,7 +99,7 @@ class Host { /// was spawned to monitor \a pid. /// /// \see static void Host::StopMonitoringChildProcess (uint32_t) - static HostThread + static llvm::Expected StartMonitoringChildProcess(const MonitorChildProcessCallback &callback, lldb::pid_t pid, bool monitor_signals); diff --git a/lldb/include/lldb/Host/HostNativeProcessBase.h b/lldb/include/lldb/Host/HostNativeProcessBase.h index e8b0683da8bff24..aaa517d53217246 100644 --- a/lldb/include/lldb/Host/HostNativeProcessBase.h +++ b/lldb/include/lldb/Host/HostNativeProcessBase.h @@ -35,7 +35,7 @@ class HostNativeProcessBase { lldb::process_t GetSystemHandle() const { return m_process; } - virtual HostThread + virtual llvm::Expected StartMonitoring(const Host::MonitorChildProcessCallback &callback, bool monitor_signals) = 0; diff --git a/lldb/include/lldb/Host/HostProcess.h b/lldb/include/lldb/Host/HostProcess.h index 56eaa465f07d0e1..d48ff1fc90eef0e 100644 --- a/lldb/include/lldb/Host/HostProcess.h +++ b/lldb/include/lldb/Host/HostProcess.h @@ -43,8 +43,9 @@ class HostProcess { lldb::pid_t GetProcessId() const; bool IsRunning() const; - HostThread StartMonitoring(const Host::MonitorChildProcessCallback &callback, - bool monitor_signals); + llvm::Expected + StartMonitoring(const Host::MonitorChildProcessCallback &callback, + bool monitor_signals); HostNativeProcessBase &GetNativeProcess(); const HostNativeProcessBase &GetNativeProcess() const; diff --git a/lldb/include/lldb/Host/OptionParser.h b/lldb/include/lldb/Host/OptionParser.h index ca05946456455e6..b03eeb74ec4e027 100644 --- a/lldb/include/lldb/Host/OptionParser.h +++ b/lldb/include/lldb/Host/OptionParser.h @@ -13,6 +13,7 @@ #include #include "llvm/ADT/StringRef.h" +#include "llvm/ADT/ArrayRef.h" struct option; @@ -37,8 +38,11 @@ class OptionParser { static void EnableError(bool error); - static int Parse(int argc, char *const argv[], llvm::StringRef optstring, - const Option *longopts, int *longindex); + /// Argv must be an argument vector "as passed to main", i.e. terminated with + /// a nullptr. + static int Parse(llvm::MutableArrayRef argv, + llvm::StringRef optstring, const Option *longopts, + int *longindex); static char *GetOptionArgument(); static int GetOptionIndex(); diff --git a/lldb/include/lldb/Host/ThreadLauncher.h b/lldb/include/lldb/Host/ThreadLauncher.h index 0e4498aa333651f..e45ffa9df75719d 100644 --- a/lldb/include/lldb/Host/ThreadLauncher.h +++ b/lldb/include/lldb/Host/ThreadLauncher.h @@ -1,5 +1,4 @@ -//===-- ThreadLauncher.h -----------------------------------------*- C++ -//-*-===// +//===-- ThreadLauncher.h ----------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -11,18 +10,18 @@ #define lldb_Host_ThreadLauncher_h_ #include "lldb/Host/HostThread.h" -#include "lldb/Utility/Status.h" #include "lldb/lldb-types.h" #include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" namespace lldb_private { class ThreadLauncher { public: - static HostThread + static llvm::Expected LaunchThread(llvm::StringRef name, lldb::thread_func_t thread_function, - lldb::thread_arg_t thread_arg, Status *error_ptr, + lldb::thread_arg_t thread_arg, size_t min_stack_byte_size = 0); // Minimum stack size in bytes, // set stack size to zero for // default platform thread stack diff --git a/lldb/include/lldb/Host/common/NativeProcessProtocol.h b/lldb/include/lldb/Host/common/NativeProcessProtocol.h index b574e57f80c2bf0..2d48717c4fbb8a3 100644 --- a/lldb/include/lldb/Host/common/NativeProcessProtocol.h +++ b/lldb/include/lldb/Host/common/NativeProcessProtocol.h @@ -84,6 +84,31 @@ class NativeProcessProtocol { Status ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read); + /// Reads a null terminated string from memory. + /// + /// Reads up to \p max_size bytes of memory until it finds a '\0'. + /// If a '\0' is not found then it reads max_size-1 bytes as a string and a + /// '\0' is added as the last character of the \p buffer. + /// + /// \param[in] addr + /// The address in memory to read from. + /// + /// \param[in] buffer + /// An allocated buffer with at least \p max_size size. + /// + /// \param[in] max_size + /// The maximum number of bytes to read from memory until it reads the + /// string. + /// + /// \param[out] total_bytes_read + /// The number of bytes read from memory into \p buffer. + /// + /// \return + /// Returns a StringRef backed up by the \p buffer passed in. + llvm::Expected + ReadCStringFromMemory(lldb::addr_t addr, char *buffer, size_t max_size, + size_t &total_bytes_read); + virtual Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written) = 0; @@ -405,6 +430,8 @@ class NativeProcessProtocol { NativeProcessProtocol(lldb::pid_t pid, int terminal_fd, NativeDelegate &delegate); + void SetID(lldb::pid_t pid) { m_pid = pid; } + // interface for state handling void SetState(lldb::StateType state, bool notify_delegates = true); diff --git a/lldb/include/lldb/Host/macosx/HostInfoMacOSX.h b/lldb/include/lldb/Host/macosx/HostInfoMacOSX.h index d49e27a8ee52901..217ca5bf1fce98a 100644 --- a/lldb/include/lldb/Host/macosx/HostInfoMacOSX.h +++ b/lldb/include/lldb/Host/macosx/HostInfoMacOSX.h @@ -27,6 +27,7 @@ class HostInfoMacOSX : public HostInfoPosix { public: static llvm::VersionTuple GetOSVersion(); + static llvm::VersionTuple GetMacCatalystVersion(); static bool GetOSBuildString(std::string &s); static bool GetOSKernelDescription(std::string &s); static FileSpec GetProgramFileSpec(); diff --git a/lldb/include/lldb/Host/posix/HostProcessPosix.h b/lldb/include/lldb/Host/posix/HostProcessPosix.h index ce0b8e8b176a9bb..a313358631b5eac 100644 --- a/lldb/include/lldb/Host/posix/HostProcessPosix.h +++ b/lldb/include/lldb/Host/posix/HostProcessPosix.h @@ -32,8 +32,9 @@ class HostProcessPosix : public HostNativeProcessBase { lldb::pid_t GetProcessId() const override; bool IsRunning() const override; - HostThread StartMonitoring(const Host::MonitorChildProcessCallback &callback, - bool monitor_signals) override; + llvm::Expected + StartMonitoring(const Host::MonitorChildProcessCallback &callback, + bool monitor_signals) override; }; } // namespace lldb_private diff --git a/lldb/include/lldb/Host/windows/HostProcessWindows.h b/lldb/include/lldb/Host/windows/HostProcessWindows.h index 4178956f561765a..925d565c275ef80 100644 --- a/lldb/include/lldb/Host/windows/HostProcessWindows.h +++ b/lldb/include/lldb/Host/windows/HostProcessWindows.h @@ -30,8 +30,9 @@ class HostProcessWindows : public HostNativeProcessBase { lldb::pid_t GetProcessId() const override; bool IsRunning() const override; - HostThread StartMonitoring(const Host::MonitorChildProcessCallback &callback, - bool monitor_signals) override; + virtual llvm::Expected + StartMonitoring(const Host::MonitorChildProcessCallback &callback, + bool monitor_signals) override; private: static lldb::thread_result_t MonitorThread(void *thread_arg); diff --git a/lldb/include/lldb/Host/windows/PosixApi.h b/lldb/include/lldb/Host/windows/PosixApi.h index 977dd76b018e34d..6a6ed3ebd61e97d 100644 --- a/lldb/include/lldb/Host/windows/PosixApi.h +++ b/lldb/include/lldb/Host/windows/PosixApi.h @@ -9,6 +9,7 @@ #ifndef liblldb_Host_windows_PosixApi_h #define liblldb_Host_windows_PosixApi_h +#include "lldb/Host/Config.h" #include "llvm/Support/Compiler.h" #if !defined(_WIN32) #error "windows/PosixApi.h being #included on non Windows system!" @@ -45,6 +46,15 @@ #define S_IRWXG 0 #define S_IRWXO 0 +#if HAVE_SYS_TYPES_H +// pyconfig.h typedefs this. We require python headers to be included before +// any LLDB headers, but there's no way to prevent python's pid_t definition +// from leaking, so this is the best option. +#ifndef NO_PID_T +#include +#endif +#endif // HAVE_SYS_TYPES_H + #ifdef _MSC_VER // PRIxxx format macros for printf() @@ -80,13 +90,16 @@ int vasprintf(char **ret, const char *fmt, va_list ap); char *strcasestr(const char *s, const char *find); char *realpath(const char *name, char *resolved); -int usleep(uint32_t useconds); +#ifdef _MSC_VER + char *basename(char *path); char *dirname(char *path); int strcasecmp(const char *s1, const char *s2); int strncasecmp(const char *s1, const char *s2, size_t n); +#endif // _MSC_VER + // empty functions inline int posix_openpt(int flag) { LLVM_BUILTIN_UNREACHABLE; } diff --git a/lldb/include/lldb/Interpreter/CommandAlias.h b/lldb/include/lldb/Interpreter/CommandAlias.h index c2a7a383f35a27a..1e186d77f8e6bb2 100644 --- a/lldb/include/lldb/Interpreter/CommandAlias.h +++ b/lldb/include/lldb/Interpreter/CommandAlias.h @@ -36,11 +36,11 @@ class CommandAlias : public CommandObject { bool WantsCompletion() override; - int HandleCompletion(CompletionRequest &request) override; + void HandleCompletion(CompletionRequest &request) override; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override; Options *GetOptions() override; diff --git a/lldb/include/lldb/Interpreter/CommandCompletions.h b/lldb/include/lldb/Interpreter/CommandCompletions.h index 3d09db5ce5e798e..43f2c33404a1f0b 100644 --- a/lldb/include/lldb/Interpreter/CommandCompletions.h +++ b/lldb/include/lldb/Interpreter/CommandCompletions.h @@ -26,10 +26,10 @@ class CommandCompletions { // This is the command completion callback that is used to complete the // argument of the option it is bound to (in the OptionDefinition table // below). Return the total number of matches. - typedef int (*CompletionCallback)(CommandInterpreter &interpreter, - CompletionRequest &request, - // A search filter to limit the search... - lldb_private::SearchFilter *searcher); + typedef void (*CompletionCallback)(CommandInterpreter &interpreter, + CompletionRequest &request, + // A search filter to limit the search... + lldb_private::SearchFilter *searcher); enum CommonCompletionTypes { eNoCompletion = 0u, eSourceFileCompletion = (1u << 0), @@ -57,42 +57,42 @@ class CommandCompletions { lldb_private::CompletionRequest &request, SearchFilter *searcher); // These are the generic completer functions: - static int DiskFiles(CommandInterpreter &interpreter, - CompletionRequest &request, SearchFilter *searcher); + static void DiskFiles(CommandInterpreter &interpreter, + CompletionRequest &request, SearchFilter *searcher); - static int DiskFiles(const llvm::Twine &partial_file_name, - StringList &matches, TildeExpressionResolver &Resolver); + static void DiskFiles(const llvm::Twine &partial_file_name, + StringList &matches, TildeExpressionResolver &Resolver); - static int DiskDirectories(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher); + static void DiskDirectories(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher); - static int DiskDirectories(const llvm::Twine &partial_file_name, - StringList &matches, - TildeExpressionResolver &Resolver); + static void DiskDirectories(const llvm::Twine &partial_file_name, + StringList &matches, + TildeExpressionResolver &Resolver); - static int SourceFiles(CommandInterpreter &interpreter, - CompletionRequest &request, SearchFilter *searcher); + static void SourceFiles(CommandInterpreter &interpreter, + CompletionRequest &request, SearchFilter *searcher); - static int Modules(CommandInterpreter &interpreter, - CompletionRequest &request, SearchFilter *searcher); + static void Modules(CommandInterpreter &interpreter, + CompletionRequest &request, SearchFilter *searcher); - static int Symbols(CommandInterpreter &interpreter, - CompletionRequest &request, SearchFilter *searcher); + static void Symbols(CommandInterpreter &interpreter, + CompletionRequest &request, SearchFilter *searcher); - static int SettingsNames(CommandInterpreter &interpreter, - CompletionRequest &request, SearchFilter *searcher); + static void SettingsNames(CommandInterpreter &interpreter, + CompletionRequest &request, SearchFilter *searcher); - static int PlatformPluginNames(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher); + static void PlatformPluginNames(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher); - static int ArchitectureNames(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher); + static void ArchitectureNames(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher); - static int VariablePath(CommandInterpreter &interpreter, - CompletionRequest &request, SearchFilter *searcher); + static void VariablePath(CommandInterpreter &interpreter, + CompletionRequest &request, SearchFilter *searcher); // The Completer class is a convenient base class for building searchers that // go along with the SearchFilter passed to the standard Completer functions. @@ -107,7 +107,7 @@ class CommandCompletions { lldb::SearchDepth GetDepth() override = 0; - virtual size_t DoCompletion(SearchFilter *filter) = 0; + virtual void DoCompletion(SearchFilter *filter) = 0; protected: CommandInterpreter &m_interpreter; @@ -130,7 +130,7 @@ class CommandCompletions { Address *addr, bool complete) override; - size_t DoCompletion(SearchFilter *filter) override; + void DoCompletion(SearchFilter *filter) override; private: bool m_include_support_files; @@ -154,7 +154,7 @@ class CommandCompletions { Address *addr, bool complete) override; - size_t DoCompletion(SearchFilter *filter) override; + void DoCompletion(SearchFilter *filter) override; private: const char *m_file_name; @@ -176,17 +176,9 @@ class CommandCompletions { Address *addr, bool complete) override; - size_t DoCompletion(SearchFilter *filter) override; + void DoCompletion(SearchFilter *filter) override; private: - // struct NameCmp { - // bool operator() (const ConstString& lhs, const ConstString& - // rhs) const - // { - // return lhs < rhs; - // } - // }; - RegularExpression m_regex; typedef std::set collection; collection m_match_set; diff --git a/lldb/include/lldb/Interpreter/CommandInterpreter.h b/lldb/include/lldb/Interpreter/CommandInterpreter.h index c3dd6606e0db9f0..edf92d7ca9a9e87 100644 --- a/lldb/include/lldb/Interpreter/CommandInterpreter.h +++ b/lldb/include/lldb/Interpreter/CommandInterpreter.h @@ -308,31 +308,12 @@ class CommandInterpreter : public Broadcaster, CommandObject *GetCommandObjectForCommand(llvm::StringRef &command_line); - // This handles command line completion. You are given a pointer to the - // command string buffer, to the current cursor, and to the end of the string - // (in case it is not NULL terminated). You also passed in an StringList - // object to fill with the returns. The first element of the array will be - // filled with the string that you would need to insert at the cursor point - // to complete the cursor point to the longest common matching prefix. If you - // want to limit the number of elements returned, set max_return_elements to - // the number of elements you want returned. Otherwise set - // max_return_elements to -1. If you want to start some way into the match - // list, then set match_start_point to the desired start point. Returns: -1 - // if the completion character should be inserted -2 if the entire command - // line should be deleted and replaced with matches.GetStringAtIndex(0) - // INT_MAX if the number of matches is > max_return_elements, but it is - // expensive to compute. Otherwise, returns the number of matches. - // - // FIXME: Only max_return_elements == -1 is supported at present. - int HandleCompletion(const char *current_line, const char *cursor, - const char *last_char, int match_start_point, - int max_return_elements, StringList &matches, - StringList &descriptions); - - // This version just returns matches, and doesn't compute the substring. It - // is here so the Help command can call it for the first argument. It uses - // a CompletionRequest for simplicity reasons. - int HandleCompletionMatches(CompletionRequest &request); + // This handles command line completion. + void HandleCompletion(CompletionRequest &request); + + // This version just returns matches, and doesn't compute the substring. It + // is here so the Help command can call it for the first argument. + void HandleCompletionMatches(CompletionRequest &request); int GetCommandNamesMatchingPartialString(const char *cmd_cstr, bool include_aliases, @@ -519,7 +500,7 @@ class CommandInterpreter : public Broadcaster, bool IOHandlerInterrupt(IOHandler &io_handler) override; - size_t GetProcessOutput(); + void GetProcessOutput(); void SetSynchronous(bool value); diff --git a/lldb/include/lldb/Interpreter/CommandObject.h b/lldb/include/lldb/Interpreter/CommandObject.h index 31f7f126a9feb37..2dad84f036c0804 100644 --- a/lldb/include/lldb/Interpreter/CommandObject.h +++ b/lldb/include/lldb/Interpreter/CommandObject.h @@ -228,36 +228,18 @@ class CommandObject { /// /// \param[in/out] request /// The completion request that needs to be answered. - /// - /// FIXME: This is the wrong return value, since we also need to make a - /// distinction between - /// total number of matches, and the window the user wants returned. - /// - /// \return - /// \btrue if we were in an option, \bfalse otherwise. - virtual int HandleCompletion(CompletionRequest &request); + virtual void HandleCompletion(CompletionRequest &request); - /// The input array contains a parsed version of the line. The insertion - /// point is given by cursor_index (the index in input of the word containing - /// the cursor) and cursor_char_position (the position of the cursor in that - /// word.) + /// The input array contains a parsed version of the line. + /// /// We've constructed the map of options and their arguments as well if that /// is helpful for the completion. /// /// \param[in/out] request /// The completion request that needs to be answered. - /// - /// FIXME: This is the wrong return value, since we also need to make a - /// distinction between - /// total number of matches, and the window the user wants returned. - /// - /// \return - /// The number of completions. - virtual int + virtual void HandleArgumentCompletion(CompletionRequest &request, - OptionElementVector &opt_element_vector) { - return 0; - } + OptionElementVector &opt_element_vector) {} bool HelpTextContainsWord(llvm::StringRef search_word, bool search_short_help = true, @@ -348,8 +330,9 @@ class CommandObject { // This is for use in the command interpreter, when you either want the // selected target, or if no target is present you want to prime the dummy // target with entities that will be copied over to new targets. - Target *GetSelectedOrDummyTarget(bool prefer_dummy = false); - Target *GetDummyTarget(); + Target &GetSelectedOrDummyTarget(bool prefer_dummy = false); + Target &GetSelectedTarget(); + Target &GetDummyTarget(); // If a command needs to use the "current" thread, use this call. Command // objects will have an ExecutionContext to use, and that may or may not have diff --git a/lldb/include/lldb/Interpreter/CommandObjectMultiword.h b/lldb/include/lldb/Interpreter/CommandObjectMultiword.h index 660e9d49d977fc3..72ec8a9c5ca9b6a 100644 --- a/lldb/include/lldb/Interpreter/CommandObjectMultiword.h +++ b/lldb/include/lldb/Interpreter/CommandObjectMultiword.h @@ -50,7 +50,7 @@ class CommandObjectMultiword : public CommandObject { bool WantsRawCommandString() override { return false; } - int HandleCompletion(CompletionRequest &request) override; + void HandleCompletion(CompletionRequest &request) override; const char *GetRepeatCommand(Args ¤t_command_args, uint32_t index) override; @@ -112,11 +112,11 @@ class CommandObjectProxy : public CommandObject { Options *GetOptions() override; - int HandleCompletion(CompletionRequest &request) override; + void HandleCompletion(CompletionRequest &request) override; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override; + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override; const char *GetRepeatCommand(Args ¤t_command_args, uint32_t index) override; diff --git a/lldb/include/lldb/Interpreter/CommandObjectRegexCommand.h b/lldb/include/lldb/Interpreter/CommandObjectRegexCommand.h index 7f06e269d64f7c4..7800d5de1b380a6 100644 --- a/lldb/include/lldb/Interpreter/CommandObjectRegexCommand.h +++ b/lldb/include/lldb/Interpreter/CommandObjectRegexCommand.h @@ -34,7 +34,7 @@ class CommandObjectRegexCommand : public CommandObjectRaw { bool HasRegexEntries() const { return !m_entries.empty(); } - int HandleCompletion(CompletionRequest &request) override; + void HandleCompletion(CompletionRequest &request) override; protected: bool DoExecute(llvm::StringRef command, CommandReturnObject &result) override; diff --git a/lldb/include/lldb/Interpreter/OptionValue.h b/lldb/include/lldb/Interpreter/OptionValue.h index 0b85bc19dd2a5e3..9fc18551c26aea1 100644 --- a/lldb/include/lldb/Interpreter/OptionValue.h +++ b/lldb/include/lldb/Interpreter/OptionValue.h @@ -93,8 +93,8 @@ class OptionValue { virtual lldb::OptionValueSP DeepCopy() const = 0; - virtual size_t AutoComplete(CommandInterpreter &interpreter, - CompletionRequest &request); + virtual void AutoComplete(CommandInterpreter &interpreter, + CompletionRequest &request); // Subclasses can override these functions virtual lldb::OptionValueSP GetSubValue(const ExecutionContext *exe_ctx, diff --git a/lldb/include/lldb/Interpreter/OptionValueArch.h b/lldb/include/lldb/Interpreter/OptionValueArch.h index f8f406890841a2a..3923e3d3dba4620 100644 --- a/lldb/include/lldb/Interpreter/OptionValueArch.h +++ b/lldb/include/lldb/Interpreter/OptionValueArch.h @@ -55,8 +55,8 @@ class OptionValueArch : public OptionValue { lldb::OptionValueSP DeepCopy() const override; - size_t AutoComplete(CommandInterpreter &interpreter, - lldb_private::CompletionRequest &request) override; + void AutoComplete(CommandInterpreter &interpreter, + lldb_private::CompletionRequest &request) override; // Subclass specific functions diff --git a/lldb/include/lldb/Interpreter/OptionValueBoolean.h b/lldb/include/lldb/Interpreter/OptionValueBoolean.h index 2fc97d494988652..42b2ca4d284593c 100644 --- a/lldb/include/lldb/Interpreter/OptionValueBoolean.h +++ b/lldb/include/lldb/Interpreter/OptionValueBoolean.h @@ -43,8 +43,8 @@ class OptionValueBoolean : public OptionValue { return true; } - size_t AutoComplete(CommandInterpreter &interpreter, - CompletionRequest &request) override; + void AutoComplete(CommandInterpreter &interpreter, + CompletionRequest &request) override; // Subclass specific functions diff --git a/lldb/include/lldb/Interpreter/OptionValueEnumeration.h b/lldb/include/lldb/Interpreter/OptionValueEnumeration.h index 71f3ab53b2ff372..eb19737f865359f 100644 --- a/lldb/include/lldb/Interpreter/OptionValueEnumeration.h +++ b/lldb/include/lldb/Interpreter/OptionValueEnumeration.h @@ -55,8 +55,8 @@ class OptionValueEnumeration : public OptionValue { lldb::OptionValueSP DeepCopy() const override; - size_t AutoComplete(CommandInterpreter &interpreter, - CompletionRequest &request) override; + void AutoComplete(CommandInterpreter &interpreter, + CompletionRequest &request) override; // Subclass specific functions diff --git a/lldb/include/lldb/Interpreter/OptionValueFileSpec.h b/lldb/include/lldb/Interpreter/OptionValueFileSpec.h index aa1022a4fe2c1c6..a6df18149076fa7 100644 --- a/lldb/include/lldb/Interpreter/OptionValueFileSpec.h +++ b/lldb/include/lldb/Interpreter/OptionValueFileSpec.h @@ -51,8 +51,8 @@ class OptionValueFileSpec : public OptionValue { lldb::OptionValueSP DeepCopy() const override; - size_t AutoComplete(CommandInterpreter &interpreter, - CompletionRequest &request) override; + void AutoComplete(CommandInterpreter &interpreter, + CompletionRequest &request) override; // Subclass specific functions diff --git a/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h b/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h index b05be959f3d4e45..419ff5c03e3a91f 100644 --- a/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h +++ b/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h @@ -38,8 +38,8 @@ class OptionValueFormatEntity : public OptionValue { lldb::OptionValueSP DeepCopy() const override; - size_t AutoComplete(CommandInterpreter &interpreter, - CompletionRequest &request) override; + void AutoComplete(CommandInterpreter &interpreter, + CompletionRequest &request) override; // Subclass specific functions diff --git a/lldb/include/lldb/Interpreter/OptionValueRegex.h b/lldb/include/lldb/Interpreter/OptionValueRegex.h index f5b2557634dfb57..8c10dacb0313458 100644 --- a/lldb/include/lldb/Interpreter/OptionValueRegex.h +++ b/lldb/include/lldb/Interpreter/OptionValueRegex.h @@ -36,7 +36,7 @@ class OptionValueRegex : public OptionValue { VarSetOperationType = eVarSetOperationAssign) = delete; bool Clear() override { - m_regex.Clear(); + m_regex = RegularExpression(); m_value_was_set = false; return true; } @@ -50,9 +50,9 @@ class OptionValueRegex : public OptionValue { void SetCurrentValue(const char *value) { if (value && value[0]) - m_regex.Compile(llvm::StringRef(value)); + m_regex = RegularExpression(llvm::StringRef(value)); else - m_regex.Clear(); + m_regex = RegularExpression(); } bool IsValid() const { return m_regex.IsValid(); } diff --git a/lldb/include/lldb/Interpreter/OptionValueUUID.h b/lldb/include/lldb/Interpreter/OptionValueUUID.h index 7273e35bd75b7f8..576440d8051944b 100644 --- a/lldb/include/lldb/Interpreter/OptionValueUUID.h +++ b/lldb/include/lldb/Interpreter/OptionValueUUID.h @@ -52,8 +52,8 @@ class OptionValueUUID : public OptionValue { void SetCurrentValue(const UUID &value) { m_uuid = value; } - size_t AutoComplete(CommandInterpreter &interpreter, - CompletionRequest &request) override; + void AutoComplete(CommandInterpreter &interpreter, + CompletionRequest &request) override; protected: UUID m_uuid; diff --git a/lldb/include/lldb/Interpreter/Options.h b/lldb/include/lldb/Interpreter/Options.h index a008d51d721eeb5..b6c824d5a199d3f 100644 --- a/lldb/include/lldb/Interpreter/Options.h +++ b/lldb/include/lldb/Interpreter/Options.h @@ -187,14 +187,7 @@ class Options { /// /// \param[in] interpreter /// The command interpreter doing the completion. - /// - /// FIXME: This is the wrong return value, since we also need to - /// make a distinction between total number of matches, and the window the - /// user wants returned. - /// - /// \return - /// \btrue if we were in an option, \bfalse otherwise. - virtual bool + virtual void HandleOptionArgumentCompletion(lldb_private::CompletionRequest &request, OptionElementVector &opt_element_vector, int opt_element_index, diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h index dda9f4347f0cd82..a64e8f1ac24507e 100644 --- a/lldb/include/lldb/Symbol/ClangASTContext.h +++ b/lldb/include/lldb/Symbol/ClangASTContext.h @@ -68,9 +68,8 @@ class ClangASTContext : public TypeSystem { static lldb::TypeSystemSP CreateInstance(lldb::LanguageType language, Module *module, Target *target); - static void EnumerateSupportedLanguages( - std::set &languages_for_types, - std::set &languages_for_expressions); + static LanguageSet GetSupportedLanguagesForTypes(); + static LanguageSet GetSupportedLanguagesForExpressions(); static void Initialize(); @@ -229,7 +228,8 @@ class ClangASTContext : public TypeSystem { if (const RecordDeclType *record_decl = llvm::dyn_cast(named_decl)) compiler_type.SetCompilerType( - ast, clang::QualType(record_decl->getTypeForDecl(), 0)); + this, clang::QualType(record_decl->getTypeForDecl(), 0) + .getAsOpaquePtr()); } } } @@ -249,7 +249,7 @@ class ClangASTContext : public TypeSystem { &type_fields, bool packed = false); - static bool IsOperator(const char *name, + static bool IsOperator(llvm::StringRef name, clang::OverloadedOperatorKind &op_kind); // Structure, Unions, Classes @@ -395,7 +395,8 @@ class ClangASTContext : public TypeSystem { clang::ParmVarDecl *CreateParameterDeclaration(clang::DeclContext *decl_ctx, const char *name, const CompilerType ¶m_type, - int storage); + int storage, + bool add_decl=false); void SetFunctionParameters(clang::FunctionDecl *function_decl, clang::ParmVarDecl **params, unsigned num_params); @@ -464,6 +465,8 @@ class ClangASTContext : public TypeSystem { CompilerType DeclGetFunctionArgumentType(void *opaque_decl, size_t arg_idx) override; + CompilerType GetTypeForDecl(void *opaque_decl) override; + // CompilerDeclContext override functions std::vector @@ -707,7 +710,9 @@ class ClangASTContext : public TypeSystem { lldb::Format GetFormat(lldb::opaque_compiler_type_t type) override; - size_t GetTypeBitAlign(lldb::opaque_compiler_type_t type) override; + llvm::Optional + GetTypeBitAlign(lldb::opaque_compiler_type_t type, + ExecutionContextScope *exe_scope) override; uint32_t GetNumChildren(lldb::opaque_compiler_type_t type, bool omit_empty_base_classes, @@ -878,12 +883,6 @@ class ClangASTContext : public TypeSystem { static CompilerType CreateMemberPointerType(const CompilerType &type, const CompilerType &pointee_type); - // Converts "s" to a floating point value and place resulting floating point - // bytes in the "dst" buffer. - size_t ConvertStringToFloatValue(lldb::opaque_compiler_type_t type, - const char *s, uint8_t *dst, - size_t dst_size) override; - // Dumping types #ifndef NDEBUG /// Convenience LLVM-style dump method for use in the debugger only. @@ -982,7 +981,6 @@ class ClangASTContext : public TypeSystem { std::unique_ptr m_ast_up; std::unique_ptr m_language_options_up; std::unique_ptr m_file_manager_up; - std::unique_ptr m_file_system_options_up; std::unique_ptr m_source_manager_up; std::unique_ptr m_diagnostics_engine_up; std::unique_ptr m_diagnostic_consumer_up; @@ -1001,7 +999,6 @@ class ClangASTContext : public TypeSystem { clang::ExternalASTMerger::OriginMap m_origins; uint32_t m_pointer_byte_size; bool m_ast_owned; - bool m_can_evaluate_expressions; /// The sema associated that is currently used to build this ASTContext. /// May be null if we are already done parsing this ASTContext or the /// ASTContext wasn't created by parsing source code. diff --git a/lldb/include/lldb/Symbol/ClangASTImporter.h b/lldb/include/lldb/Symbol/ClangASTImporter.h index 353b1232d940432..eb3689485cfb8c7 100644 --- a/lldb/include/lldb/Symbol/ClangASTImporter.h +++ b/lldb/include/lldb/Symbol/ClangASTImporter.h @@ -252,7 +252,9 @@ class ClangASTImporter { : clang::ASTImporter(*target_ctx, master.m_file_manager, *source_ctx, master.m_file_manager, true /*minimal*/), m_decls_to_deport(nullptr), m_decls_already_deported(nullptr), - m_master(master), m_source_ctx(source_ctx) {} + m_master(master), m_source_ctx(source_ctx) { + setODRHandling(clang::ASTImporter::ODRHandlingType::Liberal); + } /// Scope guard that attaches a CxxModuleHandler to an ASTImporterDelegate /// and deattaches it at the end of the scope. Supports being used multiple diff --git a/lldb/include/lldb/Symbol/CompileUnit.h b/lldb/include/lldb/Symbol/CompileUnit.h index c3ba2e2176e7a81..dc4896c92383fb9 100644 --- a/lldb/include/lldb/Symbol/CompileUnit.h +++ b/lldb/include/lldb/Symbol/CompileUnit.h @@ -298,6 +298,8 @@ class CompileUnit : public std::enable_shared_from_this, /// A line table object pointer that this object now owns. void SetLineTable(LineTable *line_table); + void SetSupportFiles(const FileSpecList &support_files); + void SetDebugMacros(const DebugMacrosSP &debug_macros); /// Set accessor for the variable list. diff --git a/lldb/include/lldb/Symbol/CompilerType.h b/lldb/include/lldb/Symbol/CompilerType.h index 98d916597f42cd1..bb9881c0bae3413 100644 --- a/lldb/include/lldb/Symbol/CompilerType.h +++ b/lldb/include/lldb/Symbol/CompilerType.h @@ -13,7 +13,6 @@ #include #include -#include "lldb/Core/ClangForward.h" #include "lldb/lldb-private.h" #include "llvm/ADT/APSInt.h" @@ -32,7 +31,6 @@ class CompilerType { public: // Constructors and Destructors CompilerType(TypeSystem *type_system, lldb::opaque_compiler_type_t type); - CompilerType(clang::ASTContext *ast_context, clang::QualType qual_type); CompilerType(const CompilerType &rhs) : m_type(rhs.m_type), m_type_system(rhs.m_type_system) {} @@ -169,8 +167,6 @@ class CompilerType { void SetCompilerType(TypeSystem *type_system, lldb::opaque_compiler_type_t type); - void SetCompilerType(clang::ASTContext *ast, clang::QualType qual_type); - unsigned GetTypeQualifiers() const; // Creating related types @@ -257,7 +253,7 @@ class CompilerType { lldb::Format GetFormat() const; - size_t GetTypeBitAlign() const; + llvm::Optional GetTypeBitAlign(ExecutionContextScope *exe_scope) const; uint32_t GetNumChildren(bool omit_empty_base_classes, const ExecutionContext *exe_ctx) const; @@ -336,13 +332,6 @@ class CompilerType { bool IsMeaninglessWithoutDynamicResolution() const; - // Pointers & References - - // Converts "s" to a floating point value and place resulting floating point - // bytes in the "dst" buffer. - size_t ConvertStringToFloatValue(const char *s, uint8_t *dst, - size_t dst_size) const; - // Dumping types #ifndef NDEBUG diff --git a/lldb/include/lldb/Symbol/DeclVendor.h b/lldb/include/lldb/Symbol/DeclVendor.h index 19458773b1091c6..748c0c8ac961d45 100644 --- a/lldb/include/lldb/Symbol/DeclVendor.h +++ b/lldb/include/lldb/Symbol/DeclVendor.h @@ -9,11 +9,8 @@ #ifndef liblldb_DeclVendor_h_ #define liblldb_DeclVendor_h_ -#include "lldb/Core/ClangForward.h" #include "lldb/lldb-defines.h" -#include "clang/AST/ExternalASTMerger.h" - #include namespace lldb_private { @@ -22,11 +19,19 @@ namespace lldb_private { // declarations that are not necessarily backed by a specific symbol file. class DeclVendor { public: + enum DeclVendorKind { + eClangDeclVendor, + eClangModuleDeclVendor, + eAppleObjCDeclVendor, + eLastClangDeclVendor, + }; // Constructors and Destructors - DeclVendor() {} + DeclVendor(DeclVendorKind kind) : m_kind(kind) {} virtual ~DeclVendor() {} + DeclVendorKind GetKind() const { return m_kind; } + /// Look up the set of Decls that the DeclVendor currently knows about /// matching a given name. /// @@ -45,18 +50,26 @@ class DeclVendor { /// max_matches. virtual uint32_t FindDecls(ConstString name, bool append, uint32_t max_matches, - std::vector &decls) = 0; + std::vector &decls) = 0; - /// Interface for ExternalASTMerger. Returns an ImporterSource - /// allowing type completion. + /// Look up the types that the DeclVendor currently knows about matching a + /// given name. + /// + /// \param[in] name + /// The name to look for. + /// + /// \param[in] max_matches + // The maximum number of matches. UINT32_MAX means "as many as possible". /// /// \return - /// An ImporterSource for this DeclVendor. - virtual clang::ExternalASTMerger::ImporterSource GetImporterSource() = 0; + /// The vector of CompilerTypes that was found. + std::vector FindTypes(ConstString name, uint32_t max_matches); private: // For DeclVendor only DISALLOW_COPY_AND_ASSIGN(DeclVendor); + + const DeclVendorKind m_kind; }; } // namespace lldb_private diff --git a/lldb/include/lldb/Symbol/ObjectFile.h b/lldb/include/lldb/Symbol/ObjectFile.h index ea7825a5e5a2994..f9bc2f2ab0398cc 100644 --- a/lldb/include/lldb/Symbol/ObjectFile.h +++ b/lldb/include/lldb/Symbol/ObjectFile.h @@ -204,6 +204,10 @@ class ObjectFile : public std::enable_shared_from_this, const char *path_with_object, lldb_private::FileSpec &archive_file, lldb_private::ConstString &archive_object, bool must_exist); + // LLVM RTTI support + static char ID; + virtual bool isA(const void *ClassID) const { return ClassID == &ID; } + /// Gets the address size in bytes for the current object file. /// /// \return @@ -366,17 +370,6 @@ class ObjectFile : public std::enable_shared_from_this, /// returned. virtual UUID GetUUID() = 0; - /// Gets the symbol file spec list for this object file. - /// - /// If the object file format contains a debug symbol file link, the values - /// will be returned in the FileSpecList. - /// - /// \return - /// Returns filespeclist. - virtual lldb_private::FileSpecList GetDebugSymbolFilePaths() { - return FileSpecList(); - } - /// Gets the file spec list of libraries re-exported by this object file. /// /// If the object file format has the notion of one library re-exporting the @@ -578,15 +571,11 @@ class ObjectFile : public std::enable_shared_from_this, /// Get the SDK OS version this object file was built with. /// - /// The versions arguments and returns values are the same as the - /// GetMinimumOSVersion() - virtual uint32_t GetSDKVersion(uint32_t *versions, uint32_t num_versions) { - if (versions && num_versions) { - for (uint32_t i = 0; i < num_versions; ++i) - versions[i] = UINT32_MAX; - } - return 0; - } + /// \return + /// This function returns extracted version numbers as a + /// llvm::VersionTuple. In case of error an empty VersionTuple is + /// returned. + virtual llvm::VersionTuple GetSDKVersion() { return llvm::VersionTuple(); } /// Return true if this file is a dynamic link editor (dyld) /// diff --git a/lldb/include/lldb/Symbol/PostfixExpression.h b/lldb/include/lldb/Symbol/PostfixExpression.h index e3a8587a5f84985..fa7793315899a41 100644 --- a/lldb/include/lldb/Symbol/PostfixExpression.h +++ b/lldb/include/lldb/Symbol/PostfixExpression.h @@ -17,6 +17,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/Casting.h" +#include namespace lldb_private { @@ -211,7 +212,10 @@ inline T *MakeNode(llvm::BumpPtrAllocator &alloc, Args &&... args) { /// Parse the given postfix expression. The parsed nodes are placed into the /// provided allocator. -Node *Parse(llvm::StringRef expr, llvm::BumpPtrAllocator &alloc); +Node *ParseOneExpression(llvm::StringRef expr, llvm::BumpPtrAllocator &alloc); + +std::vector> +ParseFPOProgram(llvm::StringRef prog, llvm::BumpPtrAllocator &alloc); /// Serialize the given expression tree as DWARF. The result is written into the /// given stream. The AST should not contain any SymbolNodes. If the expression diff --git a/lldb/include/lldb/Symbol/Symbol.h b/lldb/include/lldb/Symbol/Symbol.h index d36629773c74b09..1cbc2f5492f4efb 100644 --- a/lldb/include/lldb/Symbol/Symbol.h +++ b/lldb/include/lldb/Symbol/Symbol.h @@ -165,6 +165,10 @@ class Symbol : public SymbolContextScope { bool IsTrampoline() const; bool IsIndirect() const; + + bool IsWeak() const { return m_is_weak; } + + void SetIsWeak (bool b) { m_is_weak = b; } bool GetByteSizeIsValid() const { return m_size_is_valid; } @@ -250,7 +254,8 @@ class Symbol : public SymbolContextScope { m_contains_linker_annotations : 1, // The symbol name contains linker // annotations, which are optional when // doing name lookups - m_type : 7; + m_is_weak : 1, + m_type : 6; // Values from the lldb::SymbolType enum. Mangled m_mangled; // uniqued symbol name/mangled name pair AddressRange m_addr_range; // Contains the value, or the section offset // address when the value is an address in a diff --git a/lldb/include/lldb/Symbol/SymbolContext.h b/lldb/include/lldb/Symbol/SymbolContext.h index 55a345489358115..76ec1a7de68ef94 100644 --- a/lldb/include/lldb/Symbol/SymbolContext.h +++ b/lldb/include/lldb/Symbol/SymbolContext.h @@ -470,6 +470,8 @@ class SymbolContextList { /// Returns the number of symbol context objects in the list. uint32_t GetSize() const; + bool IsEmpty() const; + uint32_t NumLineEntriesWithLine(uint32_t line) const; void GetDescription(Stream *s, lldb::DescriptionLevel level, diff --git a/lldb/include/lldb/Symbol/SymbolFile.h b/lldb/include/lldb/Symbol/SymbolFile.h index dbb723e9d3693a9..ce8da8014c5c81f 100644 --- a/lldb/include/lldb/Symbol/SymbolFile.h +++ b/lldb/include/lldb/Symbol/SymbolFile.h @@ -16,6 +16,8 @@ #include "lldb/Symbol/Function.h" #include "lldb/Symbol/SourceModule.h" #include "lldb/Symbol/Type.h" +#include "lldb/Symbol/TypeList.h" +#include "lldb/Symbol/TypeSystem.h" #include "lldb/lldb-private.h" #include "llvm/ADT/DenseSet.h" @@ -49,11 +51,12 @@ class SymbolFile : public PluginInterface { kAllAbilities = ((1u << 7) - 1u) }; - static SymbolFile *FindPlugin(ObjectFile *obj_file); + static SymbolFile *FindPlugin(lldb::ObjectFileSP objfile_sp); // Constructors and Destructors - SymbolFile(ObjectFile *obj_file) - : m_obj_file(obj_file), m_abilities(0), m_calculated_abilities(false) {} + SymbolFile(lldb::ObjectFileSP objfile_sp) + : m_objfile_sp(std::move(objfile_sp)), m_abilities(0), + m_calculated_abilities(false) {} ~SymbolFile() override {} @@ -110,8 +113,10 @@ class SymbolFile : public PluginInterface { // Compile Unit function calls // Approach 1 - iterator - virtual uint32_t GetNumCompileUnits() = 0; - virtual lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) = 0; + uint32_t GetNumCompileUnits(); + lldb::CompUnitSP GetCompileUnitAtIndex(uint32_t idx); + + Symtab *GetSymtab(); virtual lldb::LanguageType ParseLanguage(CompileUnit &comp_unit) = 0; virtual size_t ParseFunctions(CompileUnit &comp_unit) = 0; @@ -185,23 +190,24 @@ class SymbolFile : public PluginInterface { bool append, uint32_t max_matches, llvm::DenseSet &searched_symbol_files, TypeMap &types); - virtual size_t FindTypes(const std::vector &context, - bool append, TypeMap &types); + + /// Find types specified by a CompilerContextPattern. + /// \param languages Only return results in these languages. + virtual size_t FindTypes(llvm::ArrayRef pattern, + LanguageSet languages, bool append, + TypeMap &types); virtual void GetMangledNamesForFunction(const std::string &scope_qualified_name, std::vector &mangled_names); - // virtual uint32_t FindTypes (const SymbolContext& sc, const - // RegularExpression& regex, bool append, uint32_t max_matches, TypeList& - // types) = 0; - virtual TypeList *GetTypeList(); + virtual size_t GetTypes(lldb_private::SymbolContextScope *sc_scope, lldb::TypeClass type_mask, lldb_private::TypeList &type_list) = 0; virtual void PreloadSymbols(); - virtual lldb_private::TypeSystem * + virtual llvm::Expected GetTypeSystemForLanguage(lldb::LanguageType language); virtual CompilerDeclContext @@ -210,8 +216,9 @@ class SymbolFile : public PluginInterface { return CompilerDeclContext(); } - ObjectFile *GetObjectFile() { return m_obj_file; } - const ObjectFile *GetObjectFile() const { return m_obj_file; } + ObjectFile *GetObjectFile() { return m_objfile_sp.get(); } + const ObjectFile *GetObjectFile() const { return m_objfile_sp.get(); } + ObjectFile *GetMainObjectFile(); virtual std::vector ParseCallEdgesInFunction(UserID func_id) { return {}; @@ -221,7 +228,7 @@ class SymbolFile : public PluginInterface { /// Notify the SymbolFile that the file addresses in the Sections /// for this module have been changed. - virtual void SectionFileAddressesChanged() {} + virtual void SectionFileAddressesChanged(); struct RegisterInfoResolver { virtual ~RegisterInfoResolver(); // anchor @@ -235,12 +242,23 @@ class SymbolFile : public PluginInterface { return nullptr; } - virtual void Dump(Stream &s) {} + virtual void Dump(Stream &s); protected: void AssertModuleLock(); - - ObjectFile *m_obj_file; // The object file that symbols can be extracted from. + virtual uint32_t CalculateNumCompileUnits() = 0; + virtual lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t idx) = 0; + virtual TypeList &GetTypeList() { return m_type_list; } + + void SetCompileUnitAtIndex(uint32_t idx, const lldb::CompUnitSP &cu_sp); + + lldb::ObjectFileSP m_objfile_sp; // Keep a reference to the object file in + // case it isn't the same as the module + // object file (debug symbols in a separate + // file) + llvm::Optional> m_compile_units; + TypeList m_type_list; + Symtab *m_symtab = nullptr; uint32_t m_abilities; bool m_calculated_abilities; diff --git a/lldb/include/lldb/Symbol/SymbolVendor.h b/lldb/include/lldb/Symbol/SymbolVendor.h index c4015ff03492732..96c6ea5c73323ac 100644 --- a/lldb/include/lldb/Symbol/SymbolVendor.h +++ b/lldb/include/lldb/Symbol/SymbolVendor.h @@ -14,7 +14,6 @@ #include "lldb/Core/ModuleChild.h" #include "lldb/Core/PluginInterface.h" #include "lldb/Symbol/SourceModule.h" -#include "lldb/Symbol/TypeList.h" #include "lldb/Symbol/TypeMap.h" #include "lldb/lldb-private.h" #include "llvm/ADT/DenseSet.h" @@ -40,123 +39,16 @@ class SymbolVendor : public ModuleChild, public PluginInterface { void AddSymbolFileRepresentation(const lldb::ObjectFileSP &objfile_sp); - virtual void Dump(Stream *s); - - virtual lldb::LanguageType ParseLanguage(CompileUnit &comp_unit); - - virtual size_t ParseFunctions(CompileUnit &comp_unit); - - virtual bool ParseLineTable(CompileUnit &comp_unit); - - virtual bool ParseDebugMacros(CompileUnit &comp_unit); - - virtual bool ParseSupportFiles(CompileUnit &comp_unit, - FileSpecList &support_files); - - virtual bool ParseIsOptimized(CompileUnit &comp_unit); - - virtual size_t ParseTypes(CompileUnit &comp_unit); - - virtual bool - ParseImportedModules(const SymbolContext &sc, - std::vector &imported_modules); - - virtual size_t ParseBlocksRecursive(Function &func); - - virtual size_t ParseVariablesForContext(const SymbolContext &sc); - - virtual Type *ResolveTypeUID(lldb::user_id_t type_uid); - - virtual uint32_t ResolveSymbolContext(const Address &so_addr, - lldb::SymbolContextItem resolve_scope, - SymbolContext &sc); - - virtual uint32_t ResolveSymbolContext(const FileSpec &file_spec, - uint32_t line, bool check_inlines, - lldb::SymbolContextItem resolve_scope, - SymbolContextList &sc_list); - - virtual size_t FindGlobalVariables(ConstString name, - const CompilerDeclContext *parent_decl_ctx, - size_t max_matches, - VariableList &variables); - - virtual size_t FindGlobalVariables(const RegularExpression ®ex, - size_t max_matches, - VariableList &variables); - - virtual size_t FindFunctions(ConstString name, - const CompilerDeclContext *parent_decl_ctx, - lldb::FunctionNameType name_type_mask, - bool include_inlines, bool append, - SymbolContextList &sc_list); - - virtual size_t FindFunctions(const RegularExpression ®ex, - bool include_inlines, bool append, - SymbolContextList &sc_list); - - virtual size_t - FindTypes(ConstString name, const CompilerDeclContext *parent_decl_ctx, - bool append, size_t max_matches, - llvm::DenseSet &searched_symbol_files, - TypeMap &types); - - virtual size_t FindTypes(const std::vector &context, - bool append, TypeMap &types); - - virtual CompilerDeclContext - FindNamespace(ConstString name, - const CompilerDeclContext *parent_decl_ctx); - - virtual size_t GetNumCompileUnits(); - - virtual bool SetCompileUnitAtIndex(size_t cu_idx, - const lldb::CompUnitSP &cu_sp); - - virtual lldb::CompUnitSP GetCompileUnitAtIndex(size_t idx); - - TypeList &GetTypeList() { return m_type_list; } - - const TypeList &GetTypeList() const { return m_type_list; } - - virtual size_t GetTypes(SymbolContextScope *sc_scope, - lldb::TypeClass type_mask, TypeList &type_list); - SymbolFile *GetSymbolFile() { return m_sym_file_up.get(); } - FileSpec GetMainFileSpec() const; - - // Get module unified section list symbol table. - virtual Symtab *GetSymtab(); - - // Clear module unified section list symbol table. - virtual void ClearSymtab(); - - /// Notify the SymbolVendor that the file addresses in the Sections - /// for this module have been changed. - virtual void SectionFileAddressesChanged(); - // PluginInterface protocol ConstString GetPluginName() override; uint32_t GetPluginVersion() override; protected: - // Classes that inherit from SymbolVendor can see and modify these - typedef std::vector CompileUnits; - typedef CompileUnits::iterator CompileUnitIter; - typedef CompileUnits::const_iterator CompileUnitConstIter; - - TypeList m_type_list; // Uniqued types for all parsers owned by this module - CompileUnits m_compile_units; // The current compile units - lldb::ObjectFileSP m_objfile_sp; // Keep a reference to the object file in - // case it isn't the same as the module - // object file (debug symbols in a separate - // file) std::unique_ptr m_sym_file_up; // A single symbol file. Subclasses // can add more of these if needed. - Symtab *m_symtab; // Save a symtab once to not pass it through `AddSymbols` of - // the symbol file each time when it is needed private: // For SymbolVendor only diff --git a/lldb/include/lldb/Symbol/Type.h b/lldb/include/lldb/Symbol/Type.h index efc9bf049a35a38..446e043a95ee6a3 100644 --- a/lldb/include/lldb/Symbol/Type.h +++ b/lldb/include/lldb/Symbol/Type.h @@ -9,7 +9,6 @@ #ifndef liblldb_Type_h_ #define liblldb_Type_h_ -#include "lldb/Core/ClangForward.h" #include "lldb/Symbol/CompilerDecl.h" #include "lldb/Symbol/CompilerType.h" #include "lldb/Symbol/Declaration.h" @@ -22,22 +21,28 @@ #include namespace lldb_private { -// CompilerContext allows an array of these items to be passed to perform -// detailed lookups in SymbolVendor and SymbolFile functions. + +/// CompilerContext allows an array of these items to be passed to perform +/// detailed lookups in SymbolVendor and SymbolFile functions. struct CompilerContext { - CompilerContext(CompilerContextKind t, ConstString n) - : type(t), name(n) {} + CompilerContext(CompilerContextKind t, ConstString n) : kind(t), name(n) {} bool operator==(const CompilerContext &rhs) const { - return type == rhs.type && name == rhs.name; + return kind == rhs.kind && name == rhs.name; } + bool operator!=(const CompilerContext &rhs) const { return !(*this == rhs); } void Dump() const; - CompilerContextKind type; + CompilerContextKind kind; ConstString name; }; +/// Match \p context_chain against \p pattern, which may contain "Any" +/// kinds. The \p context_chain should *not* contain any "Any" kinds. +bool contextMatches(llvm::ArrayRef context_chain, + llvm::ArrayRef pattern); + class SymbolFileType : public std::enable_shared_from_this, public UserID { public: @@ -117,8 +122,6 @@ class Type : public std::enable_shared_from_this, public UserID { SymbolFile *GetSymbolFile() { return m_symbol_file; } const SymbolFile *GetSymbolFile() const { return m_symbol_file; } - TypeList *GetTypeList(); - ConstString GetName(); llvm::Optional GetByteSize(); diff --git a/lldb/include/lldb/Symbol/TypeSystem.h b/lldb/include/lldb/Symbol/TypeSystem.h index 4bef2a4446ebdc7..bff15da955e0326 100644 --- a/lldb/include/lldb/Symbol/TypeSystem.h +++ b/lldb/include/lldb/Symbol/TypeSystem.h @@ -15,7 +15,9 @@ #include #include "llvm/ADT/APSInt.h" +#include "llvm/ADT/SmallBitVector.h" #include "llvm/Support/Casting.h" +#include "llvm/Support/Error.h" #include "lldb/Core/PluginInterface.h" #include "lldb/Expression/Expression.h" @@ -29,7 +31,24 @@ class PDBASTParser; namespace lldb_private { -// Interface for representing the Type Systems in different languages. +/// A SmallBitVector that represents a set of source languages (\p +/// lldb::LanguageType). Each lldb::LanguageType is represented by +/// the bit with the position of its enumerator. The largest +/// LanguageType is < 64, so this is space-efficient and on 64-bit +/// architectures a LanguageSet can be completely stack-allocated. +struct LanguageSet { + llvm::SmallBitVector bitvector; + LanguageSet(); + + /// If the set contains a single language only, return it. + llvm::Optional GetSingularLanguage(); + void Insert(lldb::LanguageType language); + bool Empty() const; + size_t Size() const; + bool operator[](unsigned i) const; +}; + +/// Interface for representing the Type Systems in different languages. class TypeSystem : public PluginInterface { public: // Intrusive type system that allows us to use llvm casting. @@ -107,6 +126,8 @@ class TypeSystem : public PluginInterface { virtual CompilerType DeclGetFunctionArgumentType(void *opaque_decl, size_t arg_idx); + virtual CompilerType GetTypeForDecl(void *opaque_decl) = 0; + // CompilerDeclContext functions virtual std::vector @@ -375,12 +396,6 @@ class TypeSystem : public PluginInterface { lldb::offset_t data_offset, size_t data_byte_size) = 0; - // Converts "s" to a floating point value and place resulting floating point - // bytes in the "dst" buffer. - virtual size_t ConvertStringToFloatValue(lldb::opaque_compiler_type_t type, - const char *s, uint8_t *dst, - size_t dst_size) = 0; - // TODO: Determine if these methods should move to ClangASTContext. virtual bool IsPointerOrReferenceType(lldb::opaque_compiler_type_t type, @@ -391,7 +406,9 @@ class TypeSystem : public PluginInterface { virtual bool IsCStringType(lldb::opaque_compiler_type_t type, uint32_t &length) = 0; - virtual size_t GetTypeBitAlign(lldb::opaque_compiler_type_t type) = 0; + virtual llvm::Optional + GetTypeBitAlign(lldb::opaque_compiler_type_t type, + ExecutionContextScope *exe_scope) = 0; virtual CompilerType GetBasicTypeFromAST(lldb::BasicType basic_type) = 0; @@ -491,18 +508,15 @@ class TypeSystemMap { // callback to keep iterating, false to stop iterating. void ForEach(std::function const &callback); - TypeSystem *GetTypeSystemForLanguage(lldb::LanguageType language, - Module *module, bool can_create); + llvm::Expected + GetTypeSystemForLanguage(lldb::LanguageType language, Module *module, + bool can_create); - TypeSystem *GetTypeSystemForLanguage(lldb::LanguageType language, - Target *target, bool can_create); + llvm::Expected + GetTypeSystemForLanguage(lldb::LanguageType language, Target *target, + bool can_create); protected: - // This function does not take the map mutex, and should only be called from - // functions that do take the mutex. - void AddToMap(lldb::LanguageType language, - lldb::TypeSystemSP const &type_system_sp); - typedef std::map collection; mutable std::mutex m_mutex; ///< A mutex to keep this object happy in ///multi-threaded environments. diff --git a/lldb/include/lldb/Symbol/UnwindPlan.h b/lldb/include/lldb/Symbol/UnwindPlan.h index 2b49acaafa0415e..fc3e3ccf4ff1b7d 100644 --- a/lldb/include/lldb/Symbol/UnwindPlan.h +++ b/lldb/include/lldb/Symbol/UnwindPlan.h @@ -370,6 +370,7 @@ class UnwindPlan { m_return_addr_register(LLDB_INVALID_REGNUM), m_source_name(), m_plan_is_sourced_from_compiler(eLazyBoolCalculate), m_plan_is_valid_at_all_instruction_locations(eLazyBoolCalculate), + m_plan_is_for_signal_trap(eLazyBoolCalculate), m_lsda_address(), m_personality_func_addr() {} // Performs a deep copy of the plan, including all the rows (expensive). @@ -463,6 +464,17 @@ class UnwindPlan { m_plan_is_valid_at_all_instruction_locations = valid_at_all_insn; } + // Is this UnwindPlan for a signal trap frame? If so, then its saved pc + // may have been set manually by the signal dispatch code and therefore + // not follow a call to the child frame. + lldb_private::LazyBool GetUnwindPlanForSignalTrap() const { + return m_plan_is_for_signal_trap; + } + + void SetUnwindPlanForSignalTrap(lldb_private::LazyBool is_for_signal_trap) { + m_plan_is_for_signal_trap = is_for_signal_trap; + } + int GetRowCount() const; void Clear() { @@ -472,6 +484,7 @@ class UnwindPlan { m_source_name.Clear(); m_plan_is_sourced_from_compiler = eLazyBoolCalculate; m_plan_is_valid_at_all_instruction_locations = eLazyBoolCalculate; + m_plan_is_for_signal_trap = eLazyBoolCalculate; m_lsda_address.Clear(); m_personality_func_addr.Clear(); } @@ -502,6 +515,7 @@ class UnwindPlan { m_source_name; // for logging, where this UnwindPlan originated from lldb_private::LazyBool m_plan_is_sourced_from_compiler; lldb_private::LazyBool m_plan_is_valid_at_all_instruction_locations; + lldb_private::LazyBool m_plan_is_for_signal_trap; Address m_lsda_address; // Where the language specific data area exists in the // module - used diff --git a/lldb/include/lldb/Symbol/Variable.h b/lldb/include/lldb/Symbol/Variable.h index 12daecfc04e63ed..03a20985462bfdf 100644 --- a/lldb/include/lldb/Symbol/Variable.h +++ b/lldb/include/lldb/Symbol/Variable.h @@ -99,8 +99,8 @@ class Variable : public UserID, public std::enable_shared_from_this { GetVariableCallback callback, void *baton, VariableList &variable_list, ValueObjectList &valobj_list); - static size_t AutoComplete(const ExecutionContext &exe_ctx, - CompletionRequest &request); + static void AutoComplete(const ExecutionContext &exe_ctx, + CompletionRequest &request); CompilerDeclContext GetDeclContext(); diff --git a/lldb/include/lldb/Symbol/VerifyDecl.h b/lldb/include/lldb/Symbol/VerifyDecl.h deleted file mode 100644 index f412b94a7859a35..000000000000000 --- a/lldb/include/lldb/Symbol/VerifyDecl.h +++ /dev/null @@ -1,18 +0,0 @@ -//===-- VerifyDecl.h --------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef lldb_VariableList_h_ -#define lldb_VariableList_h_ - -#include "lldb/Core/ClangForward.h" - -namespace lldb_private { -void VerifyDecl(clang::Decl *decl); -} - -#endif diff --git a/lldb/include/lldb/Target/Language.h b/lldb/include/lldb/Target/Language.h index 6ea6029bdace0f5..b49e96eeac172da 100644 --- a/lldb/include/lldb/Target/Language.h +++ b/lldb/include/lldb/Target/Language.h @@ -20,6 +20,7 @@ #include "lldb/DataFormatters/DumpValueObjectOptions.h" #include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/StringPrinter.h" +#include "lldb/Symbol/TypeSystem.h" #include "lldb/lldb-private.h" #include "lldb/lldb-public.h" @@ -266,12 +267,9 @@ class Language : public PluginInterface { static std::set GetSupportedLanguages(); - static void GetLanguagesSupportingTypeSystems( - std::set &languages, - std::set &languages_for_expressions); - - static void - GetLanguagesSupportingREPLs(std::set &languages); + static LanguageSet GetLanguagesSupportingTypeSystems(); + static LanguageSet GetLanguagesSupportingTypeSystemsForExpressions(); + static LanguageSet GetLanguagesSupportingREPLs(); protected: // Classes that inherit from Language can see and modify these diff --git a/lldb/include/lldb/Target/LanguageRuntime.h b/lldb/include/lldb/Target/LanguageRuntime.h index 54be5a75e9811c5..73c8dfa3874db3b 100644 --- a/lldb/include/lldb/Target/LanguageRuntime.h +++ b/lldb/include/lldb/Target/LanguageRuntime.h @@ -152,9 +152,13 @@ class LanguageRuntime : public PluginInterface { virtual lldb::ThreadPlanSP GetStepThroughTrampolinePlan(Thread &thread, bool stop_others) = 0; - /// Identify whether a value is a language implementation detaul - /// that should be hidden from the user interface by default. - virtual bool IsRuntimeSupportValue(ValueObject &valobj) { return false; } + /// Identify whether a name is a runtime value that should not be hidden by + /// from the user interface. + virtual bool IsWhitelistedRuntimeValue(ConstString name) { return false; } + + virtual llvm::Optional GetRuntimeType(CompilerType base_type) { + return llvm::None; + } virtual void ModulesDidLoad(const ModuleList &module_list) {} diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h index f85069ea0906717..f91e492f1fe7895 100644 --- a/lldb/include/lldb/Target/Process.h +++ b/lldb/include/lldb/Target/Process.h @@ -50,6 +50,7 @@ #include "lldb/lldb-private.h" #include "llvm/ADT/ArrayRef.h" +#include "llvm/Support/Threading.h" #include "llvm/Support/VersionTuple.h" namespace lldb_private { @@ -680,10 +681,19 @@ class Process : public std::enable_shared_from_this, /// shared library load state. /// /// \return - /// The number of shared libraries that were loaded - virtual size_t LoadModules() { return 0; } + /// A status object indicating if the operation was sucessful or not. + virtual llvm::Error LoadModules() { + return llvm::make_error("Not implemented.", + llvm::inconvertibleErrorCode()); + } - virtual size_t LoadModules(LoadedModuleInfoList &) { return 0; } + /// Query remote GDBServer for a detailed loaded library list + /// \return + /// The list of modules currently loaded by the process, or an error. + virtual llvm::Expected GetLoadedModuleList() { + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "Not implemented"); + } protected: virtual JITLoaderList &GetJITLoaders(); @@ -1186,6 +1196,9 @@ class Process : public std::enable_shared_from_this, /// VersionTuple is returner. virtual llvm::VersionTuple GetHostOSVersion() { return llvm::VersionTuple(); } + /// \return the macCatalyst version of the host OS. + virtual llvm::VersionTuple GetHostMacCatalystVersion() { return {}; } + /// Get the target object pointer for this module. /// /// \return @@ -2732,7 +2745,7 @@ class Process : public std::enable_shared_from_this, enum { eCanJITDontKnow = 0, eCanJITYes, eCanJITNo } m_can_jit; std::unique_ptr m_dlopen_utility_func_up; - std::once_flag m_dlopen_utility_func_flag_once; + llvm::once_flag m_dlopen_utility_func_flag_once; size_t RemoveBreakpointOpcodesFromBuffer(lldb::addr_t addr, size_t size, uint8_t *buf) const; diff --git a/lldb/include/lldb/Target/StackFrame.h b/lldb/include/lldb/Target/StackFrame.h index 4e6e79befc6ab3f..d2e5795162cf5f4 100644 --- a/lldb/include/lldb/Target/StackFrame.h +++ b/lldb/include/lldb/Target/StackFrame.h @@ -108,17 +108,19 @@ class StackFrame : public ExecutionContextScope, StackFrame(const lldb::ThreadSP &thread_sp, lldb::user_id_t frame_idx, lldb::user_id_t concrete_frame_idx, lldb::addr_t cfa, bool cfa_is_valid, lldb::addr_t pc, Kind frame_kind, - const SymbolContext *sc_ptr); + bool behaves_like_zeroth_frame, const SymbolContext *sc_ptr); StackFrame(const lldb::ThreadSP &thread_sp, lldb::user_id_t frame_idx, lldb::user_id_t concrete_frame_idx, const lldb::RegisterContextSP ®_context_sp, lldb::addr_t cfa, - lldb::addr_t pc, const SymbolContext *sc_ptr); + lldb::addr_t pc, bool behaves_like_zeroth_frame, + const SymbolContext *sc_ptr); StackFrame(const lldb::ThreadSP &thread_sp, lldb::user_id_t frame_idx, lldb::user_id_t concrete_frame_idx, const lldb::RegisterContextSP ®_context_sp, lldb::addr_t cfa, - const Address &pc, const SymbolContext *sc_ptr); + const Address &pc, bool behaves_like_zeroth_frame, + const SymbolContext *sc_ptr); ~StackFrame() override; @@ -367,6 +369,12 @@ class StackFrame : public ExecutionContextScope, /// may have limited support for inspecting variables. bool IsArtificial() const; + /// Query whether this frame behaves like the zeroth frame, in the sense + /// that its pc value might not immediately follow a call (and thus might + /// be the first address of its function). True for actual frame zero as + /// well as any other frame with the same trait. + bool BehavesLikeZerothFrame() const; + /// Query this frame to find what frame it is in this Thread's /// StackFrameList. /// @@ -511,6 +519,7 @@ class StackFrame : public ExecutionContextScope, bool m_cfa_is_valid; // Does this frame have a CFA? Different from CFA == // LLDB_INVALID_ADDRESS Kind m_stack_frame_kind; + bool m_behaves_like_zeroth_frame; lldb::VariableListSP m_variable_list_sp; ValueObjectList m_variable_list_value_objects; // Value objects for each // variable in diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h index 875a8b1e2c18776..dbec198c15eb71b 100644 --- a/lldb/include/lldb/Target/Target.h +++ b/lldb/include/lldb/Target/Target.h @@ -121,7 +121,7 @@ class TargetProperties : public Properties { FileSpecList GetExecutableSearchPaths(); - void AppendExecutableSearchPaths(const FileSpec&); + void AppendExecutableSearchPaths(const FileSpec &); FileSpecList GetDebugFileSearchPaths(); @@ -139,6 +139,8 @@ class TargetProperties : public Properties { bool GetEnableSyntheticValue() const; + uint32_t GetMaxZeroPaddingInFloatFormat() const; + uint32_t GetMaximumNumberOfChildrenToDisplay() const; uint32_t GetMaximumSizeOfStringSummary() const; @@ -491,13 +493,11 @@ class Target : public std::enable_shared_from_this, static FileSpecList GetDefaultDebugFileSearchPaths(); - static FileSpecList GetDefaultClangModuleSearchPaths(); - static ArchSpec GetDefaultArchitecture(); static void SetDefaultArchitecture(const ArchSpec &arch); - /// Find a binary on the system and return its Module, + /// Find a binary on the system and return its Module, /// or return an existing Module that is already in the Target. /// /// Given a ModuleSpec, find a binary satisifying that specification, @@ -509,27 +509,26 @@ class Target : public std::enable_shared_from_this, /// e.g. UUID, architecture, file path. /// /// \param[in] notify - /// If notify is true, and the Module is new to this Target, - /// Target::ModulesDidLoad will be called. - /// If notify is false, it is assumed that the caller is adding - /// multiple Modules and will call ModulesDidLoad with the + /// If notify is true, and the Module is new to this Target, + /// Target::ModulesDidLoad will be called. + /// If notify is false, it is assumed that the caller is adding + /// multiple Modules and will call ModulesDidLoad with the /// full list at the end. /// ModulesDidLoad must be called when a Module/Modules have /// been added to the target, one way or the other. /// /// \param[out] error_ptr - /// Optional argument, pointing to a Status object to fill in + /// Optional argument, pointing to a Status object to fill in /// with any results / messages while attempting to find/load /// this binary. Many callers will be internal functions that /// will handle / summarize the failures in a custom way and /// don't use these messages. /// - /// \return + /// \return /// An empty ModuleSP will be returned if no matching file /// was found. If error_ptr was non-nullptr, an error message /// will likely be provided. - lldb::ModuleSP GetOrCreateModule(const ModuleSpec &module_spec, - bool notify, + lldb::ModuleSP GetOrCreateModule(const ModuleSpec &module_spec, bool notify, Status *error_ptr = nullptr); // Settings accessors @@ -601,7 +600,7 @@ class Target : public std::enable_shared_from_this, const FileSpecList *containingModules, const FileSpecList *source_file_list, const std::unordered_set &function_names, - RegularExpression &source_regex, bool internal, bool request_hardware, + RegularExpression source_regex, bool internal, bool request_hardware, LazyBool move_to_nearest_code); // Use this to create a breakpoint from a load address @@ -624,7 +623,7 @@ class Target : public std::enable_shared_from_this, // target setting, else we use the values passed in lldb::BreakpointSP CreateFuncRegexBreakpoint( const FileSpecList *containingModules, - const FileSpecList *containingSourceFiles, RegularExpression &func_regexp, + const FileSpecList *containingSourceFiles, RegularExpression func_regexp, lldb::LanguageType requested_language, LazyBool skip_prologue, bool internal, bool request_hardware); @@ -646,14 +645,11 @@ class Target : public std::enable_shared_from_this, Args *additional_args = nullptr, Status *additional_args_error = nullptr); - lldb::BreakpointSP - CreateScriptedBreakpoint(const llvm::StringRef class_name, - const FileSpecList *containingModules, - const FileSpecList *containingSourceFiles, - bool internal, - bool request_hardware, - StructuredData::ObjectSP extra_args_sp, - Status *creation_error = nullptr); + lldb::BreakpointSP CreateScriptedBreakpoint( + const llvm::StringRef class_name, const FileSpecList *containingModules, + const FileSpecList *containingSourceFiles, bool internal, + bool request_hardware, StructuredData::ObjectSP extra_args_sp, + Status *creation_error = nullptr); // This is the same as the func_name breakpoint except that you can specify a // vector of names. This is cheaper than a regular expression breakpoint in @@ -692,43 +688,42 @@ class Target : public std::enable_shared_from_this, } WatchpointList &GetWatchpointList() { return m_watchpoint_list; } - + // Manages breakpoint names: void AddNameToBreakpoint(BreakpointID &id, const char *name, Status &error); - - void AddNameToBreakpoint(lldb::BreakpointSP &bp_sp, const char *name, + + void AddNameToBreakpoint(lldb::BreakpointSP &bp_sp, const char *name, Status &error); - - void RemoveNameFromBreakpoint(lldb::BreakpointSP &bp_sp, - ConstString name); - - BreakpointName *FindBreakpointName(ConstString name, bool can_create, + + void RemoveNameFromBreakpoint(lldb::BreakpointSP &bp_sp, ConstString name); + + BreakpointName *FindBreakpointName(ConstString name, bool can_create, Status &error); - + void DeleteBreakpointName(ConstString name); - + void ConfigureBreakpointName(BreakpointName &bp_name, const BreakpointOptions &options, const BreakpointName::Permissions &permissions); - void ApplyNameToBreakpoints(BreakpointName &bp_name); - + void ApplyNameToBreakpoints(BreakpointName &bp_name); + // This takes ownership of the name obj passed in. void AddBreakpointName(BreakpointName *bp_name); - + void GetBreakpointNames(std::vector &names); - - //This call removes ALL breakpoints regardless of permission. + + // This call removes ALL breakpoints regardless of permission. void RemoveAllBreakpoints(bool internal_also = false); - + // This removes all the breakpoints, but obeys the ePermDelete on them. void RemoveAllowedBreakpoints(); void DisableAllBreakpoints(bool internal_also = false); - + void DisableAllowedBreakpoints(); void EnableAllBreakpoints(bool internal_also = false); - + void EnableAllowedBreakpoints(); bool DisableBreakpointByID(lldb::break_id_t break_id); @@ -1029,9 +1024,11 @@ class Target : public std::enable_shared_from_this, PathMappingList &GetImageSearchPathList(); - TypeSystem *GetScratchTypeSystemForLanguage(Status *error, - lldb::LanguageType language, - bool create_on_demand = true); + llvm::Expected + GetScratchTypeSystemForLanguage(lldb::LanguageType language, + bool create_on_demand = true); + + std::vector GetScratchTypeSystems(bool create_on_demand = true); PersistentExpressionState * GetPersistentExpressionStateForLanguage(lldb::LanguageType language); @@ -1040,11 +1037,12 @@ class Target : public std::enable_shared_from_this, // parameters have the same meaning as for the UserExpression constructor. // Returns a new-ed object which the caller owns. - UserExpression *GetUserExpressionForLanguage( - llvm::StringRef expr, llvm::StringRef prefix, lldb::LanguageType language, - Expression::ResultType desired_type, - const EvaluateExpressionOptions &options, - ValueObject *ctx_obj, Status &error); + UserExpression * + GetUserExpressionForLanguage(llvm::StringRef expr, llvm::StringRef prefix, + lldb::LanguageType language, + Expression::ResultType desired_type, + const EvaluateExpressionOptions &options, + ValueObject *ctx_obj, Status &error); // Creates a FunctionCaller for the given language, the rest of the // parameters have the same meaning as for the FunctionCaller constructor. @@ -1106,8 +1104,7 @@ class Target : public std::enable_shared_from_this, llvm::StringRef expression, ExecutionContextScope *exe_scope, lldb::ValueObjectSP &result_valobj_sp, const EvaluateExpressionOptions &options = EvaluateExpressionOptions(), - std::string *fixed_expression = nullptr, - ValueObject *ctx_obj = nullptr); + std::string *fixed_expression = nullptr, ValueObject *ctx_obj = nullptr); lldb::ExpressionVariableSP GetPersistentVariable(ConstString name); @@ -1118,6 +1115,24 @@ class Target : public std::enable_shared_from_this, lldb::addr_t GetPersistentSymbol(ConstString name); + /// This method will return the address of the starting function for + /// this binary, e.g. main() or its equivalent. This can be used as + /// an address of a function that is not called once a binary has + /// started running - e.g. as a return address for inferior function + /// calls that are unambiguous completion of the function call, not + /// called during the course of the inferior function code running. + /// + /// If no entry point can be found, an invalid address is returned. + /// + /// \param [out] err + /// This object will be set to failure if no entry address could + /// be found, and may contain a helpful error message. + // + /// \return + /// Returns the entry address for this program, or an error + /// if none can be found. + llvm::Expected GetEntryPointAddress(); + // Target Stop Hooks class StopHook : public UserID { public: @@ -1149,7 +1164,9 @@ class Target : public std::enable_shared_from_this, void SetIsActive(bool is_active) { m_active = is_active; } - void SetAutoContinue(bool auto_continue) {m_auto_continue = auto_continue;} + void SetAutoContinue(bool auto_continue) { + m_auto_continue = auto_continue; + } bool GetAutoContinue() const { return m_auto_continue; } @@ -1244,7 +1261,7 @@ class Target : public std::enable_shared_from_this, const lldb::ModuleSP &module_sp) override; void NotifyModuleRemoved(const ModuleList &module_list, - const lldb::ModuleSP &module_sp) override; + const lldb::ModuleSP &module_sp) override; void NotifyModuleUpdated(const ModuleList &module_list, const lldb::ModuleSP &old_module_sp, @@ -1279,7 +1296,7 @@ class Target : public std::enable_shared_from_this, BreakpointList m_internal_breakpoint_list; using BreakpointNameList = std::map; BreakpointNameList m_breakpoint_names; - + lldb::BreakpointSP m_last_created_breakpoint; WatchpointList m_watchpoint_list; lldb::WatchpointSP m_last_created_watchpoint; diff --git a/lldb/include/lldb/Target/Thread.h b/lldb/include/lldb/Target/Thread.h index 7aeaece5b5d5128..4d6aaab4e9c7d30 100644 --- a/lldb/include/lldb/Target/Thread.h +++ b/lldb/include/lldb/Target/Thread.h @@ -1101,6 +1101,17 @@ class Thread : public std::enable_shared_from_this, // right even if you have not calculated this yourself, or if it disagrees // with what you might have calculated. virtual lldb::StopInfoSP GetPrivateStopInfo(); + + // Calculate the stop info that will be shown to lldb clients. For instance, + // a "step out" is implemented by running to a breakpoint on the function + // return PC, so the process plugin initially sets the stop info to a + // StopInfoBreakpoint. But once we've run the ShouldStop machinery, we + // discover that there's a completed ThreadPlanStepOut, and that's really + // the StopInfo we want to show. That will happen naturally the next + // time GetStopInfo is called, but if you want to force the replacement, + // you can call this. + + void CalculatePublicStopInfo(); // Ask the thread subclass to set its stop info. // diff --git a/lldb/include/lldb/Target/Unwind.h b/lldb/include/lldb/Target/Unwind.h index a648e063e34b22c..652918ddad43bea 100644 --- a/lldb/include/lldb/Target/Unwind.h +++ b/lldb/include/lldb/Target/Unwind.h @@ -37,9 +37,10 @@ class Unwind { lldb::addr_t cfa; lldb::addr_t pc; uint32_t idx; + bool behaves_like_zeroth_frame = (end_idx == 0); for (idx = 0; idx < end_idx; idx++) { - if (!DoGetFrameInfoAtIndex(idx, cfa, pc)) { + if (!DoGetFrameInfoAtIndex(idx, cfa, pc, behaves_like_zeroth_frame)) { break; } } @@ -47,9 +48,9 @@ class Unwind { } bool GetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, - lldb::addr_t &pc) { + lldb::addr_t &pc, bool &behaves_like_zeroth_frame) { std::lock_guard guard(m_unwind_mutex); - return DoGetFrameInfoAtIndex(frame_idx, cfa, pc); + return DoGetFrameInfoAtIndex(frame_idx, cfa, pc, behaves_like_zeroth_frame); } lldb::RegisterContextSP CreateRegisterContextForFrame(StackFrame *frame) { @@ -66,7 +67,8 @@ class Unwind { virtual uint32_t DoGetFrameCount() = 0; virtual bool DoGetFrameInfoAtIndex(uint32_t frame_idx, lldb::addr_t &cfa, - lldb::addr_t &pc) = 0; + lldb::addr_t &pc, + bool &behaves_like_zeroth_frame) = 0; virtual lldb::RegisterContextSP DoCreateRegisterContextForFrame(StackFrame *frame) = 0; diff --git a/lldb/include/lldb/Utility/AnsiTerminal.h b/lldb/include/lldb/Utility/AnsiTerminal.h index 1473c60eeaf2b6f..21375e3821caed1 100644 --- a/lldb/include/lldb/Utility/AnsiTerminal.h +++ b/lldb/include/lldb/Utility/AnsiTerminal.h @@ -55,7 +55,7 @@ #include -namespace lldb_utility { +namespace lldb_private { namespace ansi { @@ -137,4 +137,4 @@ inline std::string FormatAnsiTerminalCodes(llvm::StringRef format, return fmt; } } -} +} // namespace lldb_private diff --git a/lldb/include/lldb/Utility/ArchSpec.h b/lldb/include/lldb/Utility/ArchSpec.h index 7a32556310c4349..60cdb47184ed18b 100644 --- a/lldb/include/lldb/Utility/ArchSpec.h +++ b/lldb/include/lldb/Utility/ArchSpec.h @@ -268,7 +268,7 @@ class ArchSpec { static bool ContainsOnlyArch(const llvm::Triple &normalized_triple); static void ListSupportedArchNames(StringList &list); - static size_t AutoComplete(CompletionRequest &request); + static void AutoComplete(CompletionRequest &request); /// Returns a static string representing the current architecture. /// diff --git a/lldb/include/lldb/Utility/Args.h b/lldb/include/lldb/Utility/Args.h index 6f258498d5baeb7..2677f228607982d 100644 --- a/lldb/include/lldb/Utility/Args.h +++ b/lldb/include/lldb/Utility/Args.h @@ -168,8 +168,8 @@ class Args { /// Appends a new argument to the end of the list argument list. /// - /// \param[in] arg_cstr - /// The new argument as a NULL terminated C string. + /// \param[in] arg_str + /// The new argument. /// /// \param[in] quote_char /// If the argument was originally quoted, put in the quote char here. @@ -179,30 +179,27 @@ class Args { void AppendArguments(const char **argv); - /// Insert the argument value at index \a idx to \a arg_cstr. + /// Insert the argument value at index \a idx to \a arg_str. /// /// \param[in] idx /// The index of where to insert the argument. /// - /// \param[in] arg_cstr - /// The new argument as a NULL terminated C string. + /// \param[in] arg_str + /// The new argument. /// /// \param[in] quote_char /// If the argument was originally quoted, put in the quote char here. - /// - /// \return - /// The NULL terminated C string of the copy of \a arg_cstr. void InsertArgumentAtIndex(size_t idx, llvm::StringRef arg_str, char quote_char = '\0'); - /// Replaces the argument value at index \a idx to \a arg_cstr if \a idx is + /// Replaces the argument value at index \a idx to \a arg_str if \a idx is /// a valid argument index. /// /// \param[in] idx /// The index of the argument that will have its value replaced. /// - /// \param[in] arg_cstr - /// The new argument as a NULL terminated C string. + /// \param[in] arg_str + /// The new argument. /// /// \param[in] quote_char /// If the argument was originally quoted, put in the quote char here. @@ -238,12 +235,12 @@ class Args { /// \see Args::GetArgumentAtIndex (size_t) const void Shift(); - /// Inserts a class owned copy of \a arg_cstr at the beginning of the + /// Inserts a class owned copy of \a arg_str at the beginning of the /// argument vector. /// - /// A copy \a arg_cstr will be made. + /// A copy \a arg_str will be made. /// - /// \param[in] arg_cstr + /// \param[in] arg_str /// The argument to push on the front of the argument stack. /// /// \param[in] quote_char diff --git a/lldb/include/lldb/Utility/CompletionRequest.h b/lldb/include/lldb/Utility/CompletionRequest.h index f5ccb01ca16f923..28ac78a875659a3 100644 --- a/lldb/include/lldb/Utility/CompletionRequest.h +++ b/lldb/include/lldb/Utility/CompletionRequest.h @@ -16,25 +16,53 @@ #include "llvm/ADT/StringSet.h" namespace lldb_private { +enum class CompletionMode { + // The current token has been completed. + Normal, + // The current token has been partially completed. This means that we found + // a completion, but that the completed token is still incomplete. Examples + // for this are file paths, where we want to complete "/bi" to "/bin/", but + // the file path token is still incomplete after the completion. Clients + // should not indicate to the user that this is a full completion (e.g. by + // not inserting the usual trailing space after a successful completion). + Partial, + // The full line has been rewritten by the completion. + RewriteLine, +}; + class CompletionResult { +public: /// A single completion and all associated data. - struct Completion { - Completion(llvm::StringRef completion, llvm::StringRef description) - : m_completion(completion.str()), m_descripton(description.str()) {} + class Completion { std::string m_completion; std::string m_descripton; + CompletionMode m_mode; + + public: + Completion(llvm::StringRef completion, llvm::StringRef description, + CompletionMode mode) + : m_completion(completion.str()), m_descripton(description.str()), + m_mode(mode) {} + const std::string &GetCompletion() const { return m_completion; } + const std::string &GetDescription() const { return m_descripton; } + CompletionMode GetMode() const { return m_mode; } /// Generates a string that uniquely identifies this completion result. std::string GetUniqueKey() const; }; + +private: std::vector m_results; /// List of added completions so far. Used to filter out duplicates. llvm::StringSet<> m_added_values; public: - void AddResult(llvm::StringRef completion, llvm::StringRef description); + void AddResult(llvm::StringRef completion, llvm::StringRef description, + CompletionMode mode); + + llvm::ArrayRef GetResults() const { return m_results; } /// Adds all collected completion matches to the given list. /// The list will be cleared before the results are added. The number of @@ -68,21 +96,16 @@ class CompletionRequest { /// the cursor is at the start of the line. The completion starts from /// this cursor position. /// - /// \param [in] match_start_point - /// \param [in] max_return_elements - /// If there is a match that is expensive to compute, these are here to - /// allow you to compute the completions in batches. Start the - /// completion from match_start_point, and return match_return_elements - /// elements. - /// /// \param [out] result /// The CompletionResult that will be filled with the results after this /// request has been handled. CompletionRequest(llvm::StringRef command_line, unsigned raw_cursor_pos, - int match_start_point, int max_return_elements, CompletionResult &result); llvm::StringRef GetRawLine() const { return m_command; } + llvm::StringRef GetRawLineUntilCursor() const { + return m_command.substr(0, m_cursor_index); + } unsigned GetRawCursorPos() const { return m_raw_cursor_pos; } @@ -92,20 +115,16 @@ class CompletionRequest { const Args &GetPartialParsedLine() const { return m_partial_parsed_line; } + const Args::ArgEntry &GetParsedArg() { + return GetParsedLine()[GetCursorIndex()]; + } + void SetCursorIndex(int i) { m_cursor_index = i; } int GetCursorIndex() const { return m_cursor_index; } void SetCursorCharPosition(int pos) { m_cursor_char_position = pos; } int GetCursorCharPosition() const { return m_cursor_char_position; } - int GetMatchStartPoint() const { return m_match_start_point; } - - int GetMaxReturnElements() const { return m_max_return_elements; } - - bool GetWordComplete() { return m_word_complete; } - - void SetWordComplete(bool v) { m_word_complete = v; } - /// Adds a possible completion string. If the completion was already /// suggested before, it will not be added to the list of results. A copy of /// the suggested completion is stored, so the given string can be free'd @@ -115,8 +134,9 @@ class CompletionRequest { /// \param match An optional description of the completion string. The /// description will be displayed to the user alongside the completion. void AddCompletion(llvm::StringRef completion, - llvm::StringRef description = "") { - m_result.AddResult(completion, description); + llvm::StringRef description = "", + CompletionMode mode = CompletionMode::Normal) { + m_result.AddResult(completion, description, mode); } /// Adds multiple possible completion strings. @@ -125,8 +145,8 @@ class CompletionRequest { /// /// \see AddCompletion void AddCompletions(const StringList &completions) { - for (std::size_t i = 0; i < completions.GetSize(); ++i) - AddCompletion(completions.GetStringAtIndex(i)); + for (const std::string &completion : completions) + AddCompletion(completion); } /// Adds multiple possible completion strings alongside their descriptions. @@ -145,10 +165,6 @@ class CompletionRequest { descriptions.GetStringAtIndex(i)); } - std::size_t GetNumberOfMatches() const { - return m_result.GetNumberOfResults(); - } - llvm::StringRef GetCursorArgument() const { return GetParsedLine().GetArgumentAtIndex(GetCursorIndex()); } @@ -170,16 +186,6 @@ class CompletionRequest { int m_cursor_index; /// The cursor position in the argument indexed by m_cursor_index. int m_cursor_char_position; - /// If there is a match that is expensive - /// to compute, these are here to allow you to compute the completions in - /// batches. Start the completion from \amatch_start_point, and return - /// \amatch_return_elements elements. - // FIXME: These two values are not implemented. - int m_match_start_point; - int m_max_return_elements; - /// \btrue if this is a complete option value (a space will be inserted - /// after the completion.) \bfalse otherwise. - bool m_word_complete = false; /// The result this request is supposed to fill out. /// We keep this object private to ensure that no backend can in any way diff --git a/lldb/include/lldb/Utility/ConstString.h b/lldb/include/lldb/Utility/ConstString.h index 8576c18ddcd818a..78132945cdceaf1 100644 --- a/lldb/include/lldb/Utility/ConstString.h +++ b/lldb/include/lldb/Utility/ConstString.h @@ -204,9 +204,7 @@ class ConstString { /// \param[in] rhs /// Another string object to compare this object to. /// - /// \return - /// \li \b true if this object is not equal to \a rhs. - /// \li \b false if this object is equal to \a rhs. + /// \return \b true if this object is not equal to \a rhs, false otherwise. bool operator!=(const char *rhs) const { return !(*this == rhs); } bool operator<(ConstString rhs) const; @@ -218,8 +216,7 @@ class ConstString { /// /// If \a value_if_empty is nullptr, then nullptr will be returned. /// - /// \return - /// Returns \a value_if_empty if the string is empty, otherwise + /// \return Returns \a value_if_empty if the string is empty, otherwise /// the C string value contained in this object. const char *AsCString(const char *value_if_empty = nullptr) const { return (IsEmpty() ? value_if_empty : m_string); @@ -269,7 +266,7 @@ class ConstString { /// in a pointer comparison since all strings are in a uniqued in a global /// string pool. /// - /// \param[in] rhs + /// \param[in] lhs /// The Left Hand Side const ConstString object reference. /// /// \param[in] rhs @@ -279,9 +276,7 @@ class ConstString { /// Case sensitivity. If true, case sensitive equality /// will be tested, otherwise character case will be ignored /// - /// \return - /// \li \b true if this object is equal to \a rhs. - /// \li \b false if this object is not equal to \a rhs. + /// \return \b true if this object is equal to \a rhs, \b false otherwise. static bool Equals(ConstString lhs, ConstString rhs, const bool case_sensitive = true); @@ -305,10 +300,7 @@ class ConstString { /// Case sensitivity of compare. If true, case sensitive compare /// will be performed, otherwise character case will be ignored /// - /// \return - /// \li -1 if lhs < rhs - /// \li 0 if lhs == rhs - /// \li 1 if lhs > rhs + /// \return -1 if lhs < rhs, 0 if lhs == rhs, 1 if lhs > rhs static int Compare(ConstString lhs, ConstString rhs, const bool case_sensitive = true); diff --git a/lldb/include/lldb/Utility/DataEncoder.h b/lldb/include/lldb/Utility/DataEncoder.h index 19b7cef9f0ca30d..7d44afd2ce69cdd 100644 --- a/lldb/include/lldb/Utility/DataEncoder.h +++ b/lldb/include/lldb/Utility/DataEncoder.h @@ -204,12 +204,11 @@ class DataEncoder { /// m_addr_size member variable and should be set correctly prior to /// extracting any address values. /// - /// \param[in,out] offset_ptr - /// A pointer to an offset within the data that will be advanced - /// by the appropriate number of bytes if the value is extracted - /// correctly. If the offset is out of bounds or there are not - /// enough bytes to extract this value, the offset will be left - /// unmodified. + /// \param[in] offset + /// The offset where to encode the address. + /// + /// \param[in] addr + /// The address to encode. /// /// \return /// The next valid offset within data if the put operation @@ -220,19 +219,18 @@ class DataEncoder { /// /// Encodes a C string into the existing data including the terminating /// - /// \param[in,out] offset_ptr - /// A pointer to an offset within the data that will be advanced - /// by the appropriate number of bytes if the value is extracted - /// correctly. If the offset is out of bounds or there are not - /// enough bytes to extract this value, the offset will be left - /// unmodified. + /// \param[in] offset + /// The offset where to encode the string. + /// + /// \param[in] cstr + /// The string to encode. /// /// \return /// A pointer to the C string value in the data. If the offset /// pointed to by \a offset_ptr is out of bounds, or if the /// offset plus the length of the C string is out of bounds, /// NULL will be returned. - uint32_t PutCString(uint32_t offset_ptr, const char *cstr); + uint32_t PutCString(uint32_t offset, const char *cstr); lldb::DataBufferSP &GetSharedDataBuffer() { return m_data_sp; } diff --git a/lldb/include/lldb/Utility/DataExtractor.h b/lldb/include/lldb/Utility/DataExtractor.h index 74174b34ce99b67..2898c61df333a7f 100644 --- a/lldb/include/lldb/Utility/DataExtractor.h +++ b/lldb/include/lldb/Utility/DataExtractor.h @@ -167,9 +167,8 @@ class DataExtractor { /// the beginning of each line and can be offset by base address \a /// base_addr. \a num_per_line objects will be displayed on each line. /// - /// \param[in] s - /// The stream to dump the output to. If nullptr the output will - /// be dumped to Log(). + /// \param[in] log + /// The log to dump the output to. /// /// \param[in] offset /// The offset into the data at which to start dumping. @@ -362,30 +361,29 @@ class DataExtractor { /// when say copying a partial data value into a register. /// /// \param[in] src_offset - /// The offset into this data from which to start copying an - /// endian entity + /// The offset into this data from which to start copying an endian + /// entity /// /// \param[in] src_len - /// The length of the endian data to copy from this object - /// into the \a dst object + /// The length of the endian data to copy from this object into the \a + /// dst object /// /// \param[out] dst - /// The buffer where to place the endian data. The data might - /// need to be byte swapped (and appropriately padded with - /// zeroes if \a src_len != \a dst_len) if \a dst_byte_order - /// does not match the byte order in this object. + /// The buffer where to place the endian data. The data might need to be + /// byte swapped (and appropriately padded with zeroes if \a src_len != + /// \a dst_len) if \a dst_byte_order does not match the byte order in + /// this object. /// /// \param[in] dst_len - /// The length number of bytes that the endian value will - /// occupy is \a dst. + /// The length number of bytes that the endian value will occupy is \a + /// dst. /// - /// \param[in] byte_order - /// The byte order that the endian value should be in the \a dst - /// buffer. + /// \param[in] dst_byte_order + /// The byte order that the endian value should be in the \a dst buffer. /// /// \return - /// Returns the number of bytes that were copied, or zero if - /// anything goes wrong. + /// Returns the number of bytes that were copied, or zero if anything + /// goes wrong. lldb::offset_t CopyByteOrderedData(lldb::offset_t src_offset, lldb::offset_t src_len, void *dst, lldb::offset_t dst_len, @@ -520,7 +518,7 @@ class DataExtractor { /// enough bytes to extract this value, the offset will be left /// unmodified. /// - /// \param[in] byte_size + /// \param[in] size /// The size in byte of the integer to extract. /// /// \param[in] bitfield_bit_size @@ -558,7 +556,7 @@ class DataExtractor { /// enough bytes to extract this value, the offset will be left /// unmodified. /// - /// \param[in] byte_size + /// \param[in] size /// The size in bytes of the integer to extract. /// /// \param[in] bitfield_bit_size @@ -956,14 +954,14 @@ class DataExtractor { /// unmodified. /// /// \return - // The number of bytes consumed during the extraction. + /// The number of bytes consumed during the extraction. uint32_t Skip_LEB128(lldb::offset_t *offset_ptr) const; /// Test the validity of \a offset. /// /// \return - /// \b true if \a offset is a valid offset into the data in this - /// object, \b false otherwise. + /// true if \a offset is a valid offset into the data in this object, + /// false otherwise. bool ValidOffset(lldb::offset_t offset) const { return offset < GetByteSize(); } @@ -971,8 +969,8 @@ class DataExtractor { /// Test the availability of \a length bytes of data from \a offset. /// /// \return - /// \b true if \a offset is a valid offset and there are \a - /// length bytes available at that offset, \b false otherwise. + /// true if \a offset is a valid offset and there are \a + /// length bytes available at that offset, false otherwise. bool ValidOffsetForDataOfSize(lldb::offset_t offset, lldb::offset_t length) const { return length <= BytesLeft(offset); diff --git a/lldb/include/lldb/Utility/FileSpec.h b/lldb/include/lldb/Utility/FileSpec.h index f0bc5c89fec77b4..50ad1f1600d81d5 100644 --- a/lldb/include/lldb/Utility/FileSpec.h +++ b/lldb/include/lldb/Utility/FileSpec.h @@ -73,7 +73,7 @@ class FileSpec { /// \see FileSpec::SetFile (const char *path) explicit FileSpec(llvm::StringRef path, Style style = Style::native); - explicit FileSpec(llvm::StringRef path, const llvm::Triple &Triple); + explicit FileSpec(llvm::StringRef path, const llvm::Triple &triple); /// Copy constructor /// @@ -200,10 +200,8 @@ class FileSpec { /// only the filename will be compared, else a full comparison /// is done. /// - /// \return - /// \li -1 if \a lhs is less than \a rhs - /// \li 0 if \a lhs is equal to \a rhs - /// \li 1 if \a lhs is greater than \a rhs + /// \return -1 if \a lhs is less than \a rhs, 0 if \a lhs is equal to \a rhs, + /// 1 if \a lhs is greater than \a rhs static int Compare(const FileSpec &lhs, const FileSpec &rhs, bool full); static bool Equal(const FileSpec &a, const FileSpec &b, bool full); @@ -322,10 +320,6 @@ class FileSpec { /// Extract the full path to the file. /// /// Extract the directory and path into an llvm::SmallVectorImpl<> - /// - /// \return - /// Returns a std::string with the directory and filename - /// concatenated. void GetPath(llvm::SmallVectorImpl &path, bool denormalize = true) const; @@ -336,8 +330,7 @@ class FileSpec { /// filename has no extension, ConstString(nullptr) is returned. The dot /// ('.') character is not returned as part of the extension /// - /// \return - /// Returns the extension of the file as a ConstString object. + /// \return Returns the extension of the file as a ConstString object. ConstString GetFileNameExtension() const; /// Return the filename without the extension part @@ -346,9 +339,7 @@ class FileSpec { /// without the extension part (e.g. for a file named "foo.bar", "foo" is /// returned) /// - /// \return - /// Returns the filename without extension - /// as a ConstString object. + /// \return Returns the filename without extension as a ConstString object. ConstString GetFileNameStrippingExtension() const; /// Get the memory cost of this object. @@ -372,12 +363,22 @@ class FileSpec { /// \param[in] path /// A full, partial, or relative path to a file. /// - /// \param[in] resolve_path - /// If \b true, then we will try to resolve links the path using - /// the static FileSpec::Resolve. + /// \param[in] style + /// The style for the given path. void SetFile(llvm::StringRef path, Style style); - void SetFile(llvm::StringRef path, const llvm::Triple &Triple); + /// Change the file specified with a new path. + /// + /// Update the contents of this object with a new path. The path will be + /// split up into a directory and filename and stored as uniqued string + /// values for quick comparison and efficient memory usage. + /// + /// \param[in] path + /// A full, partial, or relative path to a file. + /// + /// \param[in] triple + /// The triple which is used to set the Path style. + void SetFile(llvm::StringRef path, const llvm::Triple &triple); bool IsResolved() const { return m_is_resolved; } diff --git a/lldb/include/lldb/Utility/Log.h b/lldb/include/lldb/Utility/Log.h index 949de69c8e5a90b..90bf38347bb3d40 100644 --- a/lldb/include/lldb/Utility/Log.h +++ b/lldb/include/lldb/Utility/Log.h @@ -142,14 +142,11 @@ class Log final { std::forward(args)...)); } + /// Prefer using LLDB_LOGF whenever possible. void Printf(const char *format, ...) __attribute__((format(printf, 2, 3))); - void VAPrintf(const char *format, va_list args); - void Error(const char *fmt, ...) __attribute__((format(printf, 2, 3))); - void VAError(const char *format, va_list args); - void Verbose(const char *fmt, ...) __attribute__((format(printf, 2, 3))); void Warning(const char *fmt, ...) __attribute__((format(printf, 2, 3))); @@ -161,6 +158,9 @@ class Log final { bool GetVerbose() const; private: + void VAPrintf(const char *format, va_list args); + void VAError(const char *format, va_list args); + Channel &m_channel; // The mutex makes sure enable/disable operations are thread-safe. The @@ -206,6 +206,26 @@ class Log final { } // namespace lldb_private +/// The LLDB_LOG* macros defined below are the way to emit log messages. +/// +/// Note that the macros surround the arguments in a check for the log +/// being on, so you can freely call methods in arguments without affecting +/// the non-log execution flow. +/// +/// If you need to do more complex computations to prepare the log message +/// be sure to add your own if (log) check, since we don't want logging to +/// have any effect when not on. +/// +/// However, the LLDB_LOG macro uses the llvm::formatv system (see the +/// ProgrammersManual page in the llvm docs for more details). This allows +/// the use of "format_providers" to auto-format datatypes, and there are +/// already formatters for some of the llvm and lldb datatypes. +/// +/// So if you need to do non-trivial formatting of one of these types, be +/// sure to grep the lldb and llvm sources for "format_provider" to see if +/// there is already a formatter before doing in situ formatting, and if +/// possible add a provider if one does not already exist. + #define LLDB_LOG(log, ...) \ do { \ ::lldb_private::Log *log_private = (log); \ @@ -213,6 +233,13 @@ class Log final { log_private->Format(__FILE__, __func__, __VA_ARGS__); \ } while (0) +#define LLDB_LOGF(log, ...) \ + do { \ + ::lldb_private::Log *log_private = (log); \ + if (log_private) \ + log_private->Printf(__VA_ARGS__); \ + } while (0) + #define LLDB_LOGV(log, ...) \ do { \ ::lldb_private::Log *log_private = (log); \ diff --git a/lldb/include/lldb/Utility/Logging.h b/lldb/include/lldb/Utility/Logging.h index 41086fedf8c2d97..1a8a1022c5c0e99 100644 --- a/lldb/include/lldb/Utility/Logging.h +++ b/lldb/include/lldb/Utility/Logging.h @@ -54,8 +54,6 @@ namespace lldb_private { class Log; -void LogIfAnyCategoriesSet(uint32_t mask, const char *format, ...); - Log *GetLogIfAllCategoriesSet(uint32_t mask); Log *GetLogIfAnyCategoriesSet(uint32_t mask); diff --git a/lldb/include/lldb/Utility/Predicate.h b/lldb/include/lldb/Utility/Predicate.h index f1539b576686845..cbccc3e91a8b22d 100644 --- a/lldb/include/lldb/Utility/Predicate.h +++ b/lldb/include/lldb/Utility/Predicate.h @@ -117,8 +117,7 @@ template class Predicate { /// How long to wait for the condition to hold. /// /// \return - /// \li m_value if Cond(m_value) is true. - /// \li None otherwise (timeout occurred). + /// m_value if Cond(m_value) is true, None otherwise (timeout occurred). template llvm::Optional WaitFor(C Cond, const Timeout &timeout) { std::unique_lock lock(m_mutex); @@ -151,8 +150,8 @@ template class Predicate { /// How long to wait for the condition to hold. /// /// \return - /// \li \b true if the \a m_value is equal to \a value - /// \li \b false otherwise (timeout occurred) + /// true if the \a m_value is equal to \a value, false otherwise (timeout + /// occurred). bool WaitForValueEqualTo(T value, const Timeout &timeout = llvm::None) { return WaitFor([&value](T current) { return value == current; }, timeout) != @@ -179,8 +178,7 @@ template class Predicate { /// How long to wait for the condition to hold. /// /// \return - /// \li m_value if m_value != value - /// \li None otherwise (timeout occurred). + /// m_value if m_value != value, None otherwise (timeout occurred). llvm::Optional WaitForValueNotEqualTo(T value, const Timeout &timeout = llvm::None) { diff --git a/lldb/include/lldb/Utility/ProcessInfo.h b/lldb/include/lldb/Utility/ProcessInfo.h index a25c06cabdf6cba..7be25bb2ef9ace3 100644 --- a/lldb/include/lldb/Utility/ProcessInfo.h +++ b/lldb/include/lldb/Utility/ProcessInfo.h @@ -38,7 +38,7 @@ class ProcessInfo { const char *GetName() const; - size_t GetNameLength() const; + llvm::StringRef GetNameAsStringRef() const; FileSpec &GetExecutableFile() { return m_executable; } @@ -165,12 +165,8 @@ class ProcessInstanceInfoList { void Append(const ProcessInstanceInfo &info) { m_infos.push_back(info); } - const char *GetProcessNameAtIndex(size_t idx) { - return ((idx < m_infos.size()) ? m_infos[idx].GetName() : nullptr); - } - - size_t GetProcessNameLengthAtIndex(size_t idx) { - return ((idx < m_infos.size()) ? m_infos[idx].GetNameLength() : 0); + llvm::StringRef GetProcessNameAtIndex(size_t idx) { + return ((idx < m_infos.size()) ? m_infos[idx].GetNameAsStringRef() : ""); } lldb::pid_t GetProcessIDAtIndex(size_t idx) { diff --git a/lldb/include/lldb/Utility/RangeMap.h b/lldb/include/lldb/Utility/RangeMap.h index 36401f59d34f93e..709b5d2f66c7036 100644 --- a/lldb/include/lldb/Utility/RangeMap.h +++ b/lldb/include/lldb/Utility/RangeMap.h @@ -724,12 +724,14 @@ class RangeDataVector { #ifdef ASSERT_RANGEMAP_ARE_SORTED assert(IsSorted()); #endif - - if (!m_entries.empty()) { - for (const auto &entry : m_entries) { - if (entry.Contains(addr)) - indexes.push_back(entry.data); - } + // Search the entries until the first entry that has a larger base address + // than `addr`. As m_entries is sorted by their base address, all following + // entries can't contain `addr` as their base address is already larger. + for (const auto &entry : m_entries) { + if (entry.Contains(addr)) + indexes.push_back(entry.data); + else if (entry.GetRangeBase() > addr) + break; } return indexes.size(); } diff --git a/lldb/include/lldb/Utility/RegularExpression.h b/lldb/include/lldb/Utility/RegularExpression.h index 54f3dd89c7a2a3b..ee2e2f5dbc39811 100644 --- a/lldb/include/lldb/Utility/RegularExpression.h +++ b/lldb/include/lldb/Utility/RegularExpression.h @@ -9,189 +9,88 @@ #ifndef liblldb_RegularExpression_h_ #define liblldb_RegularExpression_h_ -#ifdef _WIN32 -#include "../lib/Support/regex_impl.h" - -typedef llvm_regmatch_t regmatch_t; -typedef llvm_regex_t regex_t; - -inline int regcomp(llvm_regex_t *a, const char *b, int c) { - return llvm_regcomp(a, b, c); -} - -inline size_t regerror(int a, const llvm_regex_t *b, char *c, size_t d) { - return llvm_regerror(a, b, c, d); -} - -inline int regexec(const llvm_regex_t *a, const char *b, size_t c, - llvm_regmatch_t d[], int e) { - return llvm_regexec(a, b, c, d, e); -} - -inline void regfree(llvm_regex_t *a) { llvm_regfree(a); } -#else -#ifdef __ANDROID__ -#include -#endif -#include -#endif - -#include -#include - -#include -#include - -namespace llvm { -class StringRef; -} // namespace llvm +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" +#include "llvm/Support/Regex.h" namespace lldb_private { -/// \class RegularExpression RegularExpression.h -/// "lldb/Utility/RegularExpression.h" -/// A C++ wrapper class for regex. -/// -/// This regular expression class wraps the posix regex functions \c -/// regcomp(), \c regerror(), \c regexec(), and \c regfree() from the header -/// file in \c /usr/include/regex\.h. class RegularExpression { public: - class Match { - public: - Match(uint32_t max_matches) : m_matches() { - if (max_matches > 0) - m_matches.resize(max_matches + 1); - } - - void Clear() { - const size_t num_matches = m_matches.size(); - regmatch_t invalid_match = {-1, -1}; - for (size_t i = 0; i < num_matches; ++i) - m_matches[i] = invalid_match; - } - - size_t GetSize() const { return m_matches.size(); } - - regmatch_t *GetData() { - return (m_matches.empty() ? nullptr : m_matches.data()); - } - - bool GetMatchAtIndex(llvm::StringRef s, uint32_t idx, - std::string &match_str) const; - - bool GetMatchAtIndex(llvm::StringRef s, uint32_t idx, - llvm::StringRef &match_str) const; - - bool GetMatchSpanningIndices(llvm::StringRef s, uint32_t idx1, - uint32_t idx2, - llvm::StringRef &match_str) const; - - protected: - std::vector - m_matches; ///< Where parenthesized subexpressions results are stored - }; - - /// Default constructor. - /// /// The default constructor that initializes the object state such that it /// contains no compiled regular expression. - RegularExpression(); + RegularExpression() = default; - explicit RegularExpression(llvm::StringRef string); - - /// Destructor. - /// - /// Any previously compiled regular expression contained in this object will - /// be freed. - ~RegularExpression(); - - RegularExpression(const RegularExpression &rhs); - - const RegularExpression &operator=(const RegularExpression &rhs); - - /// Compile a regular expression. + /// Constructor for a regular expression. /// /// Compile a regular expression using the supplied regular expression text. /// The compiled regular expression lives in this object so that it can be /// readily used for regular expression matches. Execute() can be called - /// after the regular expression is compiled. Any previously compiled - /// regular expression contained in this object will be freed. + /// after the regular expression is compiled. /// - /// \param[in] re - /// A NULL terminated C string that represents the regular - /// expression to compile. - /// - /// \return - /// \b true if the regular expression compiles successfully, - /// \b false otherwise. - bool Compile(llvm::StringRef string); - bool Compile(const char *) = delete; + /// \param[in] string + /// An llvm::StringRef that represents the regular expression to compile. + // String is not referenced anymore after the object is constructed. + explicit RegularExpression(llvm::StringRef string); + + ~RegularExpression() = default; + + RegularExpression(const RegularExpression &rhs); + RegularExpression(RegularExpression &&rhs) = default; + + RegularExpression &operator=(RegularExpression &&rhs) = default; + RegularExpression &operator=(const RegularExpression &rhs) = default; - /// Executes a regular expression. - /// /// Execute a regular expression match using the compiled regular expression - /// that is already in this object against the match string \a s. If any - /// parens are used for regular expression matches \a match_count should - /// indicate the number of regmatch_t values that are present in \a - /// match_ptr. + /// that is already in this object against the given \a string. If any parens + /// are used for regular expression matches. /// /// \param[in] string /// The string to match against the compile regular expression. /// - /// \param[in] match - /// A pointer to a RegularExpression::Match structure that was - /// properly initialized with the desired number of maximum - /// matches, or nullptr if no parenthesized matching is needed. + /// \param[out] matches + /// A pointer to a SmallVector to hold the matches. /// /// \return - /// \b true if \a string matches the compiled regular - /// expression, \b false otherwise. - bool Execute(llvm::StringRef string, Match *match = nullptr) const; - bool Execute(const char *, Match * = nullptr) = delete; - - size_t GetErrorAsCString(char *err_str, size_t err_str_max_len) const; - - /// Free the compiled regular expression. - /// - /// If this object contains a valid compiled regular expression, this - /// function will free any resources it was consuming. - void Free(); + /// true if \a string matches the compiled regular expression, false + /// otherwise incl. the case regular exression failed to compile. + bool Execute(llvm::StringRef string, + llvm::SmallVectorImpl *matches = nullptr) const; /// Access the regular expression text. /// - /// Returns the text that was used to compile the current regular - /// expression. - /// /// \return /// The NULL terminated C string that was used to compile the /// current regular expression llvm::StringRef GetText() const; - /// Test if valid. - /// /// Test if this object contains a valid regular expression. /// /// \return - /// \b true if the regular expression compiled and is ready - /// for execution, \b false otherwise. + /// true if the regular expression compiled and is ready for execution, + /// false otherwise. bool IsValid() const; - void Clear() { - Free(); - m_re.clear(); - m_comp_err = 1; - } + /// Return an error if the regular expression failed to compile. + /// + /// \return + /// A string error if the regular expression failed to compile, success + /// otherwise. + llvm::Error GetError() const; - int GetErrorCode() const { return m_comp_err; } + bool operator<(const RegularExpression &rhs) const { + return GetText() < rhs.GetText(); + } - bool operator<(const RegularExpression &rhs) const; + bool operator==(const RegularExpression &rhs) const { + return GetText() == rhs.GetText(); + } private: - // Member variables - std::string m_re; ///< A copy of the original regular expression text - int m_comp_err; ///< Status code for the regular expression compilation - regex_t m_preg; ///< The compiled regular expression + /// A copy of the original regular expression text. + std::string m_regex_text; + /// The compiled regular expression. + mutable llvm::Regex m_regex; }; } // namespace lldb_private diff --git a/lldb/include/lldb/Utility/Status.h b/lldb/include/lldb/Utility/Status.h index ae730b90dffe5b4..71a9879708a3550 100644 --- a/lldb/include/lldb/Utility/Status.h +++ b/lldb/include/lldb/Utility/Status.h @@ -47,8 +47,8 @@ class Status { /// into ValueType. typedef uint32_t ValueType; - /// Default constructor. - /// + Status(); + /// Initialize the error object with a generic success value. /// /// \param[in] err @@ -56,23 +56,14 @@ class Status { /// /// \param[in] type /// The type for \a err. - Status(); - explicit Status(ValueType err, lldb::ErrorType type = lldb::eErrorTypeGeneric); - /* implicit */ Status(std::error_code EC); + Status(std::error_code EC); explicit Status(const char *format, ...) __attribute__((format(printf, 2, 3))); - /// Assignment operator. - /// - /// \param[in] err - /// An error code. - /// - /// \return - /// A const reference to this object. const Status &operator=(const Status &rhs); ~Status(); diff --git a/lldb/include/lldb/Utility/Stream.h b/lldb/include/lldb/Utility/Stream.h index b24d4e45717753a..414f9217730301f 100644 --- a/lldb/include/lldb/Utility/Stream.h +++ b/lldb/include/lldb/Utility/Stream.h @@ -35,11 +35,11 @@ class Stream { /// Utility class for counting the bytes that were written to a stream in a /// certain time span. + /// /// \example /// ByteDelta delta(*this); /// WriteDataToStream("foo"); /// return *delta; - /// \endcode class ByteDelta { Stream *m_stream; /// Bytes we have written so far when ByteDelta was created. diff --git a/lldb/include/lldb/Utility/StringExtractor.h b/lldb/include/lldb/Utility/StringExtractor.h index f20ec92199bb98d..e3e9c7ce3198c82 100644 --- a/lldb/include/lldb/Utility/StringExtractor.h +++ b/lldb/include/lldb/Utility/StringExtractor.h @@ -91,9 +91,6 @@ class StringExtractor { size_t GetHexBytesAvail(llvm::MutableArrayRef dest); - uint64_t GetHexWithFixedSize(uint32_t byte_size, bool little_endian, - uint64_t fail_value); - size_t GetHexByteString(std::string &str); size_t GetHexByteStringFixedLength(std::string &str, uint32_t nibble_length); @@ -113,12 +110,14 @@ class StringExtractor { m_index = UINT64_MAX; return false; } - // For StringExtractor only - std::string m_packet; // The string in which to extract data. - uint64_t m_index; // When extracting data from a packet, this index - // will march along as things get extracted. If set to - // UINT64_MAX the end of the packet data was reached - // when decoding information + + /// The string in which to extract data. + std::string m_packet; + + /// When extracting data from a packet, this index will march along as things + /// get extracted. If set to UINT64_MAX the end of the packet data was + /// reached when decoding information. + uint64_t m_index; }; #endif // utility_StringExtractor_h_ diff --git a/lldb/include/lldb/Utility/StringLexer.h b/lldb/include/lldb/Utility/StringLexer.h index d9806c1b37d798e..533fd4fb896e2b9 100644 --- a/lldb/include/lldb/Utility/StringLexer.h +++ b/lldb/include/lldb/Utility/StringLexer.h @@ -1,4 +1,4 @@ -//===--------------------- StringLexer.h ------------------------*- C++ -*-===// +//===-- StringLexer.h -------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -13,7 +13,7 @@ #include #include -namespace lldb_utility { +namespace lldb_private { class StringLexer { public: diff --git a/lldb/include/lldb/Utility/StringList.h b/lldb/include/lldb/Utility/StringList.h index 68c1f87510f635f..0b1d955678b380b 100644 --- a/lldb/include/lldb/Utility/StringList.h +++ b/lldb/include/lldb/Utility/StringList.h @@ -23,6 +23,8 @@ class Stream; namespace lldb_private { class StringList { + typedef std::vector collection; + public: StringList(); @@ -52,6 +54,14 @@ class StringList { size_t GetMaxStringLength() const; + typedef collection::iterator iterator; + typedef collection::const_iterator const_iterator; + + iterator begin() { return m_strings.begin(); } + iterator end() { return m_strings.end(); } + const_iterator begin() const { return m_strings.begin(); } + const_iterator end() const { return m_strings.end(); } + std::string &operator[](size_t idx) { // No bounds checking, verify "idx" is good prior to calling this function return m_strings[idx]; @@ -69,7 +79,7 @@ class StringList { void Clear(); - void LongestCommonPrefix(std::string &common_prefix); + std::string LongestCommonPrefix(); void InsertStringAtIndex(size_t idx, const std::string &str); @@ -97,14 +107,6 @@ class StringList { // Copy assignment for a vector of strings StringList &operator=(const std::vector &rhs); - // This string list contains a list of valid auto completion strings, and the - // "s" is passed in. "matches" is filled in with zero or more string values - // that start with "s", and the first string to exactly match one of the - // string values in this collection, will have "exact_matches_idx" filled in - // to match the index, or "exact_matches_idx" will have SIZE_MAX - size_t AutoComplete(llvm::StringRef s, StringList &matches, - size_t &exact_matches_idx) const; - // Dump the StringList to the given lldb_private::Log, `log`, one item per // line. If given, `name` will be used to identify the start and end of the // list in the output. @@ -125,7 +127,7 @@ class StringList { } private: - std::vector m_strings; + collection m_strings; }; } // namespace lldb_private diff --git a/lldb/include/lldb/Utility/UUID.h b/lldb/include/lldb/Utility/UUID.h index dbeb9db611b255a..cb2e051a4569c10 100644 --- a/lldb/include/lldb/Utility/UUID.h +++ b/lldb/include/lldb/Utility/UUID.h @@ -67,10 +67,10 @@ class UUID { std::string GetAsString(llvm::StringRef separator = "-") const; size_t SetFromStringRef(llvm::StringRef str, uint32_t num_uuid_bytes = 16); - - // Same as SetFromStringRef, but if the resultant UUID is all 0 bytes, set the + + // Same as SetFromStringRef, but if the resultant UUID is all 0 bytes, set the // UUID to invalid. - size_t SetFromOptionalStringRef(llvm::StringRef str, + size_t SetFromOptionalStringRef(llvm::StringRef str, uint32_t num_uuid_bytes = 16); // Decode as many UUID bytes (up to 16) as possible from the C string "cstr" @@ -79,14 +79,13 @@ class UUID { /// Decode as many UUID bytes (up to 16) as possible from the C /// string \a cstr. /// - /// \param[in] cstr - /// A NULL terminate C string that points at a UUID string value - /// (no leading spaces). The string must contain only hex - /// characters and optionally can contain the '-' sepearators. + /// \param[in] str + /// An llvm::StringRef that points at a UUID string value (no leading + /// spaces). The string must contain only hex characters and optionally + /// can contain the '-' sepearators. /// /// \param[in] uuid_bytes - /// A buffer of bytes that will contain a full or patially - /// decoded UUID. + /// A buffer of bytes that will contain a full or partially decoded UUID. /// /// \return /// The original string, with all decoded bytes removed. diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h index 9d2d9ba30506516..3c80bcffec20ed4 100644 --- a/lldb/include/lldb/lldb-enumerations.h +++ b/lldb/include/lldb/lldb-enumerations.h @@ -69,21 +69,22 @@ namespace lldb { -// Process and Thread States +/// Process and Thread States. enum StateType { eStateInvalid = 0, eStateUnloaded, ///< Process is object is valid, but not currently loaded eStateConnected, ///< Process is connected to remote debug services, but not - ///launched or attached to anything yet + /// launched or attached to anything yet eStateAttaching, ///< Process is currently trying to attach eStateLaunching, ///< Process is in the process of launching - // The state changes eStateAttaching and eStateLaunching are both sent while the - // private state thread is either not yet started or paused. For that reason, they - // should only be signaled as public state changes, and not private state changes. + // The state changes eStateAttaching and eStateLaunching are both sent while + // the private state thread is either not yet started or paused. For that + // reason, they should only be signaled as public state changes, and not + // private state changes. eStateStopped, ///< Process or thread is stopped and can be examined. eStateRunning, ///< Process or thread is running and can't be examined. eStateStepping, ///< Process or thread is in the process of stepping and can - ///not be examined. + /// not be examined. eStateCrashed, ///< Process or thread has crashed and can be examined. eStateDetached, ///< Process has been detached and can't be examined. eStateExited, ///< Process has exited and can't be examined. @@ -93,16 +94,17 @@ enum StateType { kLastStateType = eStateSuspended }; -// Launch Flags +/// Launch Flags. FLAGS_ENUM(LaunchFlags){ eLaunchFlagNone = 0u, eLaunchFlagExec = (1u << 0), ///< Exec when launching and turn the calling - ///process into a new process + /// process into a new process eLaunchFlagDebug = (1u << 1), ///< Stop as soon as the process launches to - ///allow the process to be debugged - eLaunchFlagStopAtEntry = (1u << 2), ///< Stop at the program entry point - ///instead of auto-continuing when - ///launching or attaching at entry point + /// allow the process to be debugged + eLaunchFlagStopAtEntry = (1u + << 2), ///< Stop at the program entry point + /// instead of auto-continuing when + /// launching or attaching at entry point eLaunchFlagDisableASLR = (1u << 3), ///< Disable Address Space Layout Randomization eLaunchFlagDisableSTDIO = @@ -113,23 +115,23 @@ FLAGS_ENUM(LaunchFlags){ (1u << 6), ///< Launch the process inside a shell to get shell expansion eLaunchFlagLaunchInSeparateProcessGroup = (1u << 7), ///< Launch the process in a separate process group - eLaunchFlagDontSetExitStatus = (1u << 8), ///< If you are going to hand the - ///process off (e.g. to - ///debugserver) + ///< If you are going to hand the process off (e.g. to + ///< debugserver) + eLaunchFlagDontSetExitStatus = (1u << 8), ///< set this flag so lldb & the handee don't race to set its exit status. eLaunchFlagDetachOnError = (1u << 9), ///< If set, then the client stub - ///should detach rather than killing - ///the debugee + ///< should detach rather than killing + ///< the debugee ///< if it loses connection with lldb. eLaunchFlagShellExpandArguments = (1u << 10), ///< Perform shell-style argument expansion eLaunchFlagCloseTTYOnExit = (1u << 11), ///< Close the open TTY on exit }; -// Thread Run Modes +/// Thread Run Modes. enum RunMode { eOnlyThisThread, eAllThreads, eOnlyDuringStepping }; -// Byte ordering definitions +/// Byte ordering definitions. enum ByteOrder { eByteOrderInvalid = 0, eByteOrderBig = 1, @@ -137,16 +139,16 @@ enum ByteOrder { eByteOrderLittle = 4 }; -// Register encoding definitions +/// Register encoding definitions. enum Encoding { eEncodingInvalid = 0, - eEncodingUint, // unsigned integer - eEncodingSint, // signed integer - eEncodingIEEE754, // float - eEncodingVector // vector registers + eEncodingUint, ///< unsigned integer + eEncodingSint, ///< signed integer + eEncodingIEEE754, ///< float + eEncodingVector ///< vector registers }; -// Display format definitions +/// Display format definitions. enum Format { eFormatDefault = 0, eFormatInvalid = 0, @@ -155,18 +157,18 @@ enum Format { eFormatBytes, eFormatBytesWithASCII, eFormatChar, - eFormatCharPrintable, // Only printable characters, space if not printable - eFormatComplex, // Floating point complex type + eFormatCharPrintable, ///< Only printable characters, space if not printable + eFormatComplex, ///< Floating point complex type eFormatComplexFloat = eFormatComplex, - eFormatCString, // NULL terminated C strings + eFormatCString, ///< NULL terminated C strings eFormatDecimal, eFormatEnum, eFormatHex, eFormatHexUppercase, eFormatFloat, eFormatOctal, - eFormatOSType, // OS character codes encoded into an integer 'PICT' 'text' - // etc... + eFormatOSType, ///< OS character codes encoded into an integer 'PICT' 'text' + ///< etc... eFormatUnicode16, eFormatUnicode32, eFormatUnsigned, @@ -184,20 +186,21 @@ enum Format { eFormatVectorOfFloat32, eFormatVectorOfFloat64, eFormatVectorOfUInt128, - eFormatComplexInteger, // Integer complex type - eFormatCharArray, // Print characters with no single quotes, used for - // character arrays that can contain non printable - // characters - eFormatAddressInfo, // Describe what an address points to (func + offset with - // file/line, symbol + offset, data, etc) - eFormatHexFloat, // ISO C99 hex float string - eFormatInstruction, // Disassemble an opcode - eFormatVoid, // Do not print this + eFormatComplexInteger, ///< Integer complex type + eFormatCharArray, ///< Print characters with no single quotes, used for + ///< character arrays that can contain non printable + ///< characters + eFormatAddressInfo, ///< Describe what an address points to (func + offset + ///< with file/line, symbol + offset, data, etc) + eFormatHexFloat, ///< ISO C99 hex float string + eFormatInstruction, ///< Disassemble an opcode + eFormatVoid, ///< Do not print this + eFormatUnicode8, kNumFormats }; -// Description levels for "void GetDescription(Stream *, DescriptionLevel)" -// calls +/// Description levels for "void GetDescription(Stream *, DescriptionLevel)" +/// calls. enum DescriptionLevel { eDescriptionLevelBrief = 0, eDescriptionLevelFull, @@ -206,7 +209,7 @@ enum DescriptionLevel { kNumDescriptionLevels }; -// Script interpreter types +/// Script interpreter types. enum ScriptLanguage { eScriptLanguageNone, eScriptLanguagePython, @@ -214,21 +217,21 @@ enum ScriptLanguage { eScriptLanguageUnknown }; -// Register numbering types +/// Register numbering types. // See RegisterContext::ConvertRegisterKindToRegisterNumber to convert any of // these to the lldb internal register numbering scheme (eRegisterKindLLDB). enum RegisterKind { - eRegisterKindEHFrame = 0, // the register numbers seen in eh_frame - eRegisterKindDWARF, // the register numbers seen DWARF - eRegisterKindGeneric, // insn ptr reg, stack ptr reg, etc not specific to any - // particular target - eRegisterKindProcessPlugin, // num used by the process plugin - e.g. by the - // remote gdb-protocol stub program - eRegisterKindLLDB, // lldb's internal register numbers + eRegisterKindEHFrame = 0, ///< the register numbers seen in eh_frame + eRegisterKindDWARF, ///< the register numbers seen DWARF + eRegisterKindGeneric, ///< insn ptr reg, stack ptr reg, etc not specific to + ///< any particular target + eRegisterKindProcessPlugin, ///< num used by the process plugin - e.g. by the + ///< remote gdb-protocol stub program + eRegisterKindLLDB, ///< lldb's internal register numbers kNumRegisterKinds }; -// Thread stop reasons +/// Thread stop reasons. enum StopReason { eStopReasonInvalid = 0, eStopReasonNone, @@ -237,13 +240,13 @@ enum StopReason { eStopReasonWatchpoint, eStopReasonSignal, eStopReasonException, - eStopReasonExec, // Program was re-exec'ed + eStopReasonExec, ///< Program was re-exec'ed eStopReasonPlanComplete, eStopReasonThreadExiting, eStopReasonInstrumentation }; -// Command Return Status Types +/// Command Return Status Types. enum ReturnStatus { eReturnStatusInvalid, eReturnStatusSuccessFinishNoResult, @@ -255,7 +258,7 @@ enum ReturnStatus { eReturnStatusQuit }; -// The results of expression evaluation: +/// The results of expression evaluation. enum ExpressionResults { eExpressionCompleted = 0, eExpressionSetupError, @@ -269,26 +272,26 @@ enum ExpressionResults { }; enum SearchDepth { - eSearchDepthInvalid = 0, - eSearchDepthTarget, - eSearchDepthModule, - eSearchDepthCompUnit, - eSearchDepthFunction, - eSearchDepthBlock, - eSearchDepthAddress, - kLastSearchDepthKind = eSearchDepthAddress + eSearchDepthInvalid = 0, + eSearchDepthTarget, + eSearchDepthModule, + eSearchDepthCompUnit, + eSearchDepthFunction, + eSearchDepthBlock, + eSearchDepthAddress, + kLastSearchDepthKind = eSearchDepthAddress }; -// Connection Status Types +/// Connection Status Types. enum ConnectionStatus { - eConnectionStatusSuccess, // Success - eConnectionStatusEndOfFile, // End-of-file encountered - eConnectionStatusError, // Check GetError() for details - eConnectionStatusTimedOut, // Request timed out - eConnectionStatusNoConnection, // No connection - eConnectionStatusLostConnection, // Lost connection while connected to a valid - // connection - eConnectionStatusInterrupted // Interrupted read + eConnectionStatusSuccess, ///< Success + eConnectionStatusEndOfFile, ///< End-of-file encountered + eConnectionStatusError, ///< Check GetError() for details + eConnectionStatusTimedOut, ///< Request timed out + eConnectionStatusNoConnection, ///< No connection + eConnectionStatusLostConnection, ///< Lost connection while connected to a + ///< valid connection + eConnectionStatusInterrupted ///< Interrupted read }; enum ErrorType { @@ -302,17 +305,17 @@ enum ErrorType { enum ValueType { eValueTypeInvalid = 0, - eValueTypeVariableGlobal = 1, // globals variable - eValueTypeVariableStatic = 2, // static variable - eValueTypeVariableArgument = 3, // function argument variables - eValueTypeVariableLocal = 4, // function local variables - eValueTypeRegister = 5, // stack frame register value - eValueTypeRegisterSet = 6, // A collection of stack frame register values - eValueTypeConstResult = 7, // constant result variables - eValueTypeVariableThreadLocal = 8 // thread local storage variable + eValueTypeVariableGlobal = 1, ///< globals variable + eValueTypeVariableStatic = 2, ///< static variable + eValueTypeVariableArgument = 3, ///< function argument variables + eValueTypeVariableLocal = 4, ///< function local variables + eValueTypeRegister = 5, ///< stack frame register value + eValueTypeRegisterSet = 6, ///< A collection of stack frame register values + eValueTypeConstResult = 7, ///< constant result variables + eValueTypeVariableThreadLocal = 8 ///< thread local storage variable }; -// Token size/granularities for Input Readers +/// Token size/granularities for Input Readers. enum InputReaderGranularity { eInputReaderGranularityInvalid = 0, @@ -331,39 +334,37 @@ enum InputReaderGranularity { /// in this class, and requests that that item be resolved, or /// indicates that the member did get resolved. FLAGS_ENUM(SymbolContextItem){ - eSymbolContextTarget = (1u << 0), ///< Set when \a target is requested from - /// a query, or was located in query - /// results - eSymbolContextModule = (1u << 1), ///< Set when \a module is requested from - /// a query, or was located in query - /// results - eSymbolContextCompUnit = (1u << 2), ///< Set when \a comp_unit is requested - /// from a query, or was located in - /// query results - eSymbolContextFunction = (1u << 3), ///< Set when \a function is requested - /// from a query, or was located in - /// query results - eSymbolContextBlock = (1u << 4), ///< Set when the deepest \a block is - /// requested from a query, or was located - /// in query results - eSymbolContextLineEntry = (1u << 5), ///< Set when \a line_entry is - /// requested from a query, or was - /// located in query results - eSymbolContextSymbol = (1u << 6), ///< Set when \a symbol is requested from - /// a query, or was located in query - /// results - eSymbolContextEverything = ((eSymbolContextSymbol << 1) - - 1u), ///< Indicates to try and lookup everything - /// up during a routine symbol context - /// query. - eSymbolContextVariable = (1u << 7), ///< Set when \a global or static - /// variable is requested from a query, - /// or was located in query results. - ///< eSymbolContextVariable is potentially expensive to lookup so it isn't - /// included in - ///< eSymbolContextEverything which stops it from being used during frame PC - /// lookups and - ///< many other potential address to symbol context lookups. + /// Set when \a target is requested from a query, or was located + /// in query results + eSymbolContextTarget = (1u << 0), + /// Set when \a module is requested from a query, or was located + /// in query results + eSymbolContextModule = (1u << 1), + /// Set when \a comp_unit is requested from a query, or was + /// located in query results + eSymbolContextCompUnit = (1u << 2), + /// Set when \a function is requested from a query, or was located + /// in query results + eSymbolContextFunction = (1u << 3), + /// Set when the deepest \a block is requested from a query, or + /// was located in query results + eSymbolContextBlock = (1u << 4), + /// Set when \a line_entry is requested from a query, or was + /// located in query results + eSymbolContextLineEntry = (1u << 5), + /// Set when \a symbol is requested from a query, or was located + /// in query results + eSymbolContextSymbol = (1u << 6), + /// Indicates to try and lookup everything up during a routine + /// symbol context query. + eSymbolContextEverything = ((eSymbolContextSymbol << 1) - 1u), + /// Set when \a global or static variable is requested from a + /// query, or was located in query results. + /// eSymbolContextVariable is potentially expensive to lookup so + /// it isn't included in eSymbolContextEverything which stops it + /// from being used during frame PC lookups and many other + /// potential address to symbol context lookups. + eSymbolContextVariable = (1u << 7), }; LLDB_MARK_AS_BITMASK_ENUM(SymbolContextItem) @@ -373,27 +374,28 @@ FLAGS_ENUM(Permissions){ePermissionsWritable = (1u << 0), LLDB_MARK_AS_BITMASK_ENUM(Permissions) enum InputReaderAction { - eInputReaderActivate, // reader is newly pushed onto the reader stack - eInputReaderAsynchronousOutputWritten, // an async output event occurred; the - // reader may want to do something - eInputReaderReactivate, // reader is on top of the stack again after another - // reader was popped off - eInputReaderDeactivate, // another reader was pushed on the stack - eInputReaderGotToken, // reader got one of its tokens (granularity) - eInputReaderInterrupt, // reader received an interrupt signal (probably from a - // control-c) - eInputReaderEndOfFile, // reader received an EOF char (probably from a - // control-d) - eInputReaderDone // reader was just popped off the stack and is done + eInputReaderActivate, ///< reader is newly pushed onto the reader stack + eInputReaderAsynchronousOutputWritten, ///< an async output event occurred; + ///< the reader may want to do + ///< something + eInputReaderReactivate, ///< reader is on top of the stack again after another + ///< reader was popped off + eInputReaderDeactivate, ///< another reader was pushed on the stack + eInputReaderGotToken, ///< reader got one of its tokens (granularity) + eInputReaderInterrupt, ///< reader received an interrupt signal (probably from + ///< a control-c) + eInputReaderEndOfFile, ///< reader received an EOF char (probably from a + ///< control-d) + eInputReaderDone ///< reader was just popped off the stack and is done }; FLAGS_ENUM(BreakpointEventType){ eBreakpointEventTypeInvalidType = (1u << 0), eBreakpointEventTypeAdded = (1u << 1), eBreakpointEventTypeRemoved = (1u << 2), - eBreakpointEventTypeLocationsAdded = (1u << 3), // Locations added doesn't - // get sent when the - // breakpoint is created + eBreakpointEventTypeLocationsAdded = (1u << 3), ///< Locations added doesn't + ///< get sent when the + ///< breakpoint is created eBreakpointEventTypeLocationsRemoved = (1u << 4), eBreakpointEventTypeLocationsResolved = (1u << 5), eBreakpointEventTypeEnabled = (1u << 6), @@ -591,7 +593,9 @@ enum CommandArgumentType { // enumeration!! }; -// Symbol types +/// Symbol types. +// Symbol holds the SymbolType in a 6-bit field (m_type), so if you get over 63 +// entries you will have to resize that field. enum SymbolType { eSymbolTypeAny = 0, eSymbolTypeInvalid = 0, @@ -615,8 +619,8 @@ enum SymbolType { eSymbolTypeLineHeader, eSymbolTypeScopeBegin, eSymbolTypeScopeEnd, - eSymbolTypeAdditional, // When symbols take more than one entry, the extra - // entries get this type + eSymbolTypeAdditional, ///< When symbols take more than one entry, the extra + ///< entries get this type eSymbolTypeCompiler, eSymbolTypeInstrumentation, eSymbolTypeUndefined, @@ -629,19 +633,20 @@ enum SymbolType { enum SectionType { eSectionTypeInvalid, eSectionTypeCode, - eSectionTypeContainer, // The section contains child sections + eSectionTypeContainer, ///< The section contains child sections eSectionTypeData, - eSectionTypeDataCString, // Inlined C string data - eSectionTypeDataCStringPointers, // Pointers to C string data - eSectionTypeDataSymbolAddress, // Address of a symbol in the symbol table + eSectionTypeDataCString, ///< Inlined C string data + eSectionTypeDataCStringPointers, ///< Pointers to C string data + eSectionTypeDataSymbolAddress, ///< Address of a symbol in the symbol table eSectionTypeData4, eSectionTypeData8, eSectionTypeData16, eSectionTypeDataPointers, eSectionTypeDebug, eSectionTypeZeroFill, - eSectionTypeDataObjCMessageRefs, // Pointer to function pointer + selector - eSectionTypeDataObjCCFStrings, // Objective-C const CFString/NSString objects + eSectionTypeDataObjCMessageRefs, ///< Pointer to function pointer + selector + eSectionTypeDataObjCCFStrings, ///< Objective-C const CFString/NSString + ///< objects eSectionTypeDWARFDebugAbbrev, eSectionTypeDWARFDebugAddr, eSectionTypeDWARFDebugAranges, @@ -661,25 +666,25 @@ enum SectionType { eSectionTypeDWARFAppleTypes, eSectionTypeDWARFAppleNamespaces, eSectionTypeDWARFAppleObjC, - eSectionTypeELFSymbolTable, // Elf SHT_SYMTAB section - eSectionTypeELFDynamicSymbols, // Elf SHT_DYNSYM section - eSectionTypeELFRelocationEntries, // Elf SHT_REL or SHT_REL section - eSectionTypeELFDynamicLinkInfo, // Elf SHT_DYNAMIC section + eSectionTypeELFSymbolTable, ///< Elf SHT_SYMTAB section + eSectionTypeELFDynamicSymbols, ///< Elf SHT_DYNSYM section + eSectionTypeELFRelocationEntries, ///< Elf SHT_REL or SHT_REL section + eSectionTypeELFDynamicLinkInfo, ///< Elf SHT_DYNAMIC section eSectionTypeEHFrame, eSectionTypeARMexidx, eSectionTypeARMextab, - eSectionTypeCompactUnwind, // compact unwind section in Mach-O, - // __TEXT,__unwind_info + eSectionTypeCompactUnwind, ///< compact unwind section in Mach-O, + ///< __TEXT,__unwind_info eSectionTypeGoSymtab, - eSectionTypeAbsoluteAddress, // Dummy section for symbols with absolute - // address + eSectionTypeAbsoluteAddress, ///< Dummy section for symbols with absolute + ///< address eSectionTypeDWARFGNUDebugAltLink, - eSectionTypeDWARFDebugTypes, // DWARF .debug_types section - eSectionTypeDWARFDebugNames, // DWARF v5 .debug_names + eSectionTypeDWARFDebugTypes, ///< DWARF .debug_types section + eSectionTypeDWARFDebugNames, ///< DWARF v5 .debug_names eSectionTypeOther, - eSectionTypeDWARFDebugLineStr, // DWARF v5 .debug_line_str - eSectionTypeDWARFDebugRngLists, // DWARF v5 .debug_rnglists - eSectionTypeDWARFDebugLocLists, // DWARF v5 .debug_loclists + eSectionTypeDWARFDebugLineStr, ///< DWARF v5 .debug_line_str + eSectionTypeDWARFDebugRngLists, ///< DWARF v5 .debug_rnglists + eSectionTypeDWARFDebugLocLists, ///< DWARF v5 .debug_loclists eSectionTypeDWARFDebugAbbrevDwo, eSectionTypeDWARFDebugInfoDwo, eSectionTypeDWARFDebugStrDwo, @@ -695,26 +700,27 @@ FLAGS_ENUM(EmulateInstructionOptions){ FLAGS_ENUM(FunctionNameType){ eFunctionNameTypeNone = 0u, eFunctionNameTypeAuto = - (1u << 1), // Automatically figure out which FunctionNameType - // bits to set based on the function name. - eFunctionNameTypeFull = (1u << 2), // The function name. - // For C this is the same as just the name of the function For C++ this is - // the mangled or demangled version of the mangled name. For ObjC this is - // the full function signature with the + or - and the square brackets and - // the class and selector - eFunctionNameTypeBase = (1u << 3), // The function name only, no namespaces - // or arguments and no class - // methods or selectors will be searched. - eFunctionNameTypeMethod = (1u << 4), // Find function by method name (C++) - // with no namespace or arguments + (1u << 1), ///< Automatically figure out which FunctionNameType + ///< bits to set based on the function name. + eFunctionNameTypeFull = (1u << 2), ///< The function name. + ///< For C this is the same as just the name of the function For C++ this is + ///< the mangled or demangled version of the mangled name. For ObjC this is + ///< the full function signature with the + or - and the square brackets and + ///< the class and selector + eFunctionNameTypeBase = (1u + << 3), ///< The function name only, no namespaces + ///< or arguments and no class + ///< methods or selectors will be searched. + eFunctionNameTypeMethod = (1u << 4), ///< Find function by method name (C++) + ///< with no namespace or arguments eFunctionNameTypeSelector = - (1u << 5), // Find function by selector name (ObjC) names + (1u << 5), ///< Find function by selector name (ObjC) names eFunctionNameTypeAny = - eFunctionNameTypeAuto // DEPRECATED: use eFunctionNameTypeAuto + eFunctionNameTypeAuto ///< DEPRECATED: use eFunctionNameTypeAuto }; LLDB_MARK_AS_BITMASK_ENUM(FunctionNameType) -// Basic types enumeration for the public API SBType::GetBasicType() +/// Basic types enumeration for the public API SBType::GetBasicType(). enum BasicType { eBasicTypeInvalid = 0, eBasicTypeVoid = 1, @@ -799,8 +805,8 @@ enum TemplateArgumentKind { eTemplateArgumentKindNullPtr, }; -// Options that can be set for a formatter to alter its behavior Not all of -// these are applicable to all formatter types +/// Options that can be set for a formatter to alter its behavior. Not +/// all of these are applicable to all formatter types. FLAGS_ENUM(TypeOptions){eTypeOptionNone = (0u), eTypeOptionCascade = (1u << 0), eTypeOptionSkipPointers = (1u << 1), @@ -811,20 +817,28 @@ FLAGS_ENUM(TypeOptions){eTypeOptionNone = (0u), eTypeOptionHideNames = (1u << 6), eTypeOptionNonCacheable = (1u << 7), eTypeOptionHideEmptyAggregates = (1u << 8), - eTypeOptionFrontEndWantsDereference = (1u << 9) -}; + eTypeOptionFrontEndWantsDereference = (1u << 9)}; -// This is the return value for frame comparisons. If you are comparing frame -// A to frame B the following cases arise: 1) When frame A pushes frame B (or a -// frame that ends up pushing B) A is Older than B. 2) When frame A pushed -// frame B (or if frame A is on the stack but B is not) A is Younger than B 3) -// When frame A and frame B have the same StackID, they are Equal. 4) When -// frame A and frame B have the same immediate parent frame, but are not equal, -// the comparison yields -// SameParent. -// 5) If the two frames are on different threads or processes the comparison is -// Invalid 6) If for some reason we can't figure out what went on, we return -// Unknown. +/// This is the return value for frame comparisons. If you are comparing frame +/// A to frame B the following cases arise: +/// +/// 1) When frame A pushes frame B (or a frame that ends up pushing +/// B) A is Older than B. +/// +/// 2) When frame A pushed frame B (or if frameA is on the stack +/// but B is not) A is Younger than B. +/// +/// 3) When frame A and frame B have the same StackID, they are +/// Equal. +/// +/// 4) When frame A and frame B have the same immediate parent +/// frame, but are not equal, the comparison yields SameParent. +/// +/// 5) If the two frames are on different threads or processes the +/// comparison is Invalid. +/// +/// 6) If for some reason we can't figure out what went on, we +/// return Unknown. enum FrameComparison { eFrameCompareInvalid, eFrameCompareUnknown, @@ -834,12 +848,13 @@ enum FrameComparison { eFrameCompareOlder }; -// File Permissions -// -// Designed to mimic the unix file permission bits so they can be used with -// functions that set 'mode_t' to certain values for permissions. +/// File Permissions. +/// +/// Designed to mimic the unix file permission bits so they can be used with +/// functions that set 'mode_t' to certain values for permissions. FLAGS_ENUM(FilePermissions){ - eFilePermissionsUserRead = (1u << 8), eFilePermissionsUserWrite = (1u << 7), + eFilePermissionsUserRead = (1u << 8), + eFilePermissionsUserWrite = (1u << 7), eFilePermissionsUserExecute = (1u << 6), eFilePermissionsGroupRead = (1u << 5), eFilePermissionsGroupWrite = (1u << 4), @@ -893,29 +908,32 @@ FLAGS_ENUM(FilePermissions){ eFilePermissionsDirectoryDefault = eFilePermissionsUserRWX, }; -// Queue work item types -// -// The different types of work that can be enqueued on a libdispatch aka Grand -// Central Dispatch (GCD) queue. +/// Queue work item types. +/// +/// The different types of work that can be enqueued on a libdispatch aka Grand +/// Central Dispatch (GCD) queue. enum QueueItemKind { eQueueItemKindUnknown = 0, eQueueItemKindFunction, eQueueItemKindBlock }; -// Queue type -// libdispatch aka Grand Central Dispatch (GCD) queues can be either serial -// (executing on one thread) or concurrent (executing on multiple threads). +/// Queue type. +/// +/// libdispatch aka Grand Central Dispatch (GCD) queues can be either +/// serial (executing on one thread) or concurrent (executing on +/// multiple threads). enum QueueKind { eQueueKindUnknown = 0, eQueueKindSerial, eQueueKindConcurrent }; -// Expression Evaluation Stages -// These are the cancellable stages of expression evaluation, passed to the -// expression evaluation callback, so that you can interrupt expression -// evaluation at the various points in its lifecycle. +/// Expression Evaluation Stages. +/// +/// These are the cancellable stages of expression evaluation, passed +/// to the expression evaluation callback, so that you can interrupt +/// expression evaluation at the various points in its lifecycle. enum ExpressionEvaluationPhase { eExpressionEvaluationParse = 0, eExpressionEvaluationIRGen, @@ -923,9 +941,10 @@ enum ExpressionEvaluationPhase { eExpressionEvaluationComplete }; -// Watchpoint Kind -// Indicates what types of events cause the watchpoint to fire. Used by Native -// *Protocol-related classes. +/// Watchpoint Kind. +/// +/// Indicates what types of events cause the watchpoint to fire. Used by Native +/// *Protocol-related classes. FLAGS_ENUM(WatchpointKind){eWatchpointKindWrite = (1u << 0), eWatchpointKindRead = (1u << 1)}; @@ -938,42 +957,44 @@ enum GdbSignal { eGdbSignalBreakpoint = 0x96 }; -// Used with SBHost::GetPath (lldb::PathType) to find files that are related to -// LLDB on the current host machine. Most files are relative to LLDB or are in -// known locations. +/// Used with SBHost::GetPath (lldb::PathType) to find files that are +/// related to LLDB on the current host machine. Most files are +/// relative to LLDB or are in known locations. enum PathType { - ePathTypeLLDBShlibDir, // The directory where the lldb.so (unix) or LLDB - // mach-o file in LLDB.framework (MacOSX) exists - ePathTypeSupportExecutableDir, // Find LLDB support executable directory - // (debugserver, etc) - ePathTypeHeaderDir, // Find LLDB header file directory - ePathTypePythonDir, // Find Python modules (PYTHONPATH) directory - ePathTypeLLDBSystemPlugins, // System plug-ins directory - ePathTypeLLDBUserPlugins, // User plug-ins directory - ePathTypeLLDBTempSystemDir, // The LLDB temp directory for this system that - // will be cleaned up on exit - ePathTypeGlobalLLDBTempSystemDir, // The LLDB temp directory for this system, - // NOT cleaned up on a process exit. - ePathTypeClangDir // Find path to Clang builtin headers + ePathTypeLLDBShlibDir, ///< The directory where the lldb.so (unix) or LLDB + ///< mach-o file in LLDB.framework (MacOSX) exists + ePathTypeSupportExecutableDir, ///< Find LLDB support executable directory + ///< (debugserver, etc) + ePathTypeHeaderDir, ///< Find LLDB header file directory + ePathTypePythonDir, ///< Find Python modules (PYTHONPATH) directory + ePathTypeLLDBSystemPlugins, ///< System plug-ins directory + ePathTypeLLDBUserPlugins, ///< User plug-ins directory + ePathTypeLLDBTempSystemDir, ///< The LLDB temp directory for this system that + ///< will be cleaned up on exit + ePathTypeGlobalLLDBTempSystemDir, ///< The LLDB temp directory for this + ///< system, NOT cleaned up on a process + ///< exit. + ePathTypeClangDir ///< Find path to Clang builtin headers }; -// Kind of member function -// Used by the type system +/// Kind of member function. +/// +/// Used by the type system. enum MemberFunctionKind { - eMemberFunctionKindUnknown = 0, // Not sure what the type of this is - eMemberFunctionKindConstructor, // A function used to create instances - eMemberFunctionKindDestructor, // A function used to tear down existing - // instances - eMemberFunctionKindInstanceMethod, // A function that applies to a specific - // instance - eMemberFunctionKindStaticMethod // A function that applies to a type rather - // than any instance + eMemberFunctionKindUnknown = 0, ///< Not sure what the type of this is + eMemberFunctionKindConstructor, ///< A function used to create instances + eMemberFunctionKindDestructor, ///< A function used to tear down existing + ///< instances + eMemberFunctionKindInstanceMethod, ///< A function that applies to a specific + ///< instance + eMemberFunctionKindStaticMethod ///< A function that applies to a type rather + ///< than any instance }; -// String matching algorithm used by SBTarget +/// String matching algorithm used by SBTarget. enum MatchType { eMatchTypeNormal, eMatchTypeRegex, eMatchTypeStartsWith }; -// Bitmask that describes details about a type +/// Bitmask that describes details about a type. FLAGS_ENUM(TypeFlags){ eTypeHasChildren = (1u << 0), eTypeHasValue = (1u << 1), eTypeIsArray = (1u << 2), eTypeIsBlock = (1u << 3), @@ -989,67 +1010,67 @@ FLAGS_ENUM(TypeFlags){ eTypeInstanceIsPointer = (1u << 22)}; FLAGS_ENUM(CommandFlags){ - // eCommandRequiresTarget - // - // Ensures a valid target is contained in m_exe_ctx prior to executing the - // command. If a target doesn't exist or is invalid, the command will fail - // and CommandObject::GetInvalidTargetDescription() will be returned as the - // error. CommandObject subclasses can override the virtual function for - // GetInvalidTargetDescription() to provide custom strings when needed. + /// eCommandRequiresTarget + /// + /// Ensures a valid target is contained in m_exe_ctx prior to executing the + /// command. If a target doesn't exist or is invalid, the command will fail + /// and CommandObject::GetInvalidTargetDescription() will be returned as the + /// error. CommandObject subclasses can override the virtual function for + /// GetInvalidTargetDescription() to provide custom strings when needed. eCommandRequiresTarget = (1u << 0), - // eCommandRequiresProcess - // - // Ensures a valid process is contained in m_exe_ctx prior to executing the - // command. If a process doesn't exist or is invalid, the command will fail - // and CommandObject::GetInvalidProcessDescription() will be returned as - // the error. CommandObject subclasses can override the virtual function - // for GetInvalidProcessDescription() to provide custom strings when - // needed. + /// eCommandRequiresProcess + /// + /// Ensures a valid process is contained in m_exe_ctx prior to executing the + /// command. If a process doesn't exist or is invalid, the command will fail + /// and CommandObject::GetInvalidProcessDescription() will be returned as + /// the error. CommandObject subclasses can override the virtual function + /// for GetInvalidProcessDescription() to provide custom strings when + /// needed. eCommandRequiresProcess = (1u << 1), - // eCommandRequiresThread - // - // Ensures a valid thread is contained in m_exe_ctx prior to executing the - // command. If a thread doesn't exist or is invalid, the command will fail - // and CommandObject::GetInvalidThreadDescription() will be returned as the - // error. CommandObject subclasses can override the virtual function for - // GetInvalidThreadDescription() to provide custom strings when needed. + /// eCommandRequiresThread + /// + /// Ensures a valid thread is contained in m_exe_ctx prior to executing the + /// command. If a thread doesn't exist or is invalid, the command will fail + /// and CommandObject::GetInvalidThreadDescription() will be returned as the + /// error. CommandObject subclasses can override the virtual function for + /// GetInvalidThreadDescription() to provide custom strings when needed. eCommandRequiresThread = (1u << 2), - // eCommandRequiresFrame - // - // Ensures a valid frame is contained in m_exe_ctx prior to executing the - // command. If a frame doesn't exist or is invalid, the command will fail - // and CommandObject::GetInvalidFrameDescription() will be returned as the - // error. CommandObject subclasses can override the virtual function for - // GetInvalidFrameDescription() to provide custom strings when needed. + /// eCommandRequiresFrame + /// + /// Ensures a valid frame is contained in m_exe_ctx prior to executing the + /// command. If a frame doesn't exist or is invalid, the command will fail + /// and CommandObject::GetInvalidFrameDescription() will be returned as the + /// error. CommandObject subclasses can override the virtual function for + /// GetInvalidFrameDescription() to provide custom strings when needed. eCommandRequiresFrame = (1u << 3), - // eCommandRequiresRegContext - // - // Ensures a valid register context (from the selected frame if there is a - // frame in m_exe_ctx, or from the selected thread from m_exe_ctx) is - // available from m_exe_ctx prior to executing the command. If a target - // doesn't exist or is invalid, the command will fail and - // CommandObject::GetInvalidRegContextDescription() will be returned as the - // error. CommandObject subclasses can override the virtual function for - // GetInvalidRegContextDescription() to provide custom strings when needed. + /// eCommandRequiresRegContext + /// + /// Ensures a valid register context (from the selected frame if there is a + /// frame in m_exe_ctx, or from the selected thread from m_exe_ctx) is + /// available from m_exe_ctx prior to executing the command. If a target + /// doesn't exist or is invalid, the command will fail and + /// CommandObject::GetInvalidRegContextDescription() will be returned as the + /// error. CommandObject subclasses can override the virtual function for + /// GetInvalidRegContextDescription() to provide custom strings when needed. eCommandRequiresRegContext = (1u << 4), - // eCommandTryTargetAPILock - // - // Attempts to acquire the target lock if a target is selected in the - // command interpreter. If the command object fails to acquire the API - // lock, the command will fail with an appropriate error message. + /// eCommandTryTargetAPILock + /// + /// Attempts to acquire the target lock if a target is selected in the + /// command interpreter. If the command object fails to acquire the API + /// lock, the command will fail with an appropriate error message. eCommandTryTargetAPILock = (1u << 5), - // eCommandProcessMustBeLaunched - // - // Verifies that there is a launched process in m_exe_ctx, if there isn't, - // the command will fail with an appropriate error message. + /// eCommandProcessMustBeLaunched + /// + /// Verifies that there is a launched process in m_exe_ctx, if there isn't, + /// the command will fail with an appropriate error message. eCommandProcessMustBeLaunched = (1u << 6), - // eCommandProcessMustBePaused - // - // Verifies that there is a paused process in m_exe_ctx, if there isn't, - // the command will fail with an appropriate error message. + /// eCommandProcessMustBePaused + /// + /// Verifies that there is a paused process in m_exe_ctx, if there isn't, + /// the command will fail with an appropriate error message. eCommandProcessMustBePaused = (1u << 7)}; -// Whether a summary should cap how much data it returns to users or not +/// Whether a summary should cap how much data it returns to users or not. enum TypeSummaryCapping { eTypeSummaryCapped = true, eTypeSummaryUncapped = false diff --git a/lldb/include/lldb/lldb-private-enumerations.h b/lldb/include/lldb/lldb-private-enumerations.h index 3d8b360fb301ece..9b7879c05f9ee5b 100644 --- a/lldb/include/lldb/lldb-private-enumerations.h +++ b/lldb/include/lldb/lldb-private-enumerations.h @@ -198,18 +198,24 @@ enum class LineStatus { enum class TypeValidatorResult : bool { Success = true, Failure = false }; // Enumerations that can be used to specify scopes types when looking up types. -enum class CompilerContextKind { +enum class CompilerContextKind : uint16_t { Invalid = 0, - TranslationUnit, - Module, - Namespace, - Class, - Structure, - Union, - Function, - Variable, - Enumeration, - Typedef + TranslationUnit = 1, + Module = 1 << 1, + Namespace = 1 << 2, + Class = 1 << 3, + Struct = 1 << 4, + Union = 1 << 5, + Function = 1 << 6, + Variable = 1 << 7, + Enum = 1 << 8, + Typedef = 1 << 9, + + Any = 1 << 15, + /// Match 0..n nested modules. + AnyModule = Any | Module, + /// Match any type. + AnyType = Any | Class | Struct | Union | Enum | Typedef }; // Enumerations that can be used to specify the kind of metric we're looking at diff --git a/lldb/include/lldb/lldb-private-interfaces.h b/lldb/include/lldb/lldb-private-interfaces.h index 3a9f78aae0fecc6..04b78bcc19f8e06 100644 --- a/lldb/include/lldb/lldb-private-interfaces.h +++ b/lldb/include/lldb/lldb-private-interfaces.h @@ -70,7 +70,7 @@ typedef lldb::ProcessSP (*ProcessCreateInstance)( const FileSpec *crash_file_path); typedef lldb::ScriptInterpreterSP (*ScriptInterpreterCreateInstance)( Debugger &debugger); -typedef SymbolFile *(*SymbolFileCreateInstance)(ObjectFile *obj_file); +typedef SymbolFile *(*SymbolFileCreateInstance)(lldb::ObjectFileSP objfile_sp); typedef SymbolVendor *(*SymbolVendorCreateInstance)( const lldb::ModuleSP &module_sp, lldb_private::Stream @@ -102,11 +102,6 @@ typedef lldb::REPLSP (*REPLCreateInstance)(Status &error, lldb::LanguageType language, Debugger *debugger, Target *target, const char *repl_options); -typedef void (*TypeSystemEnumerateSupportedLanguages)( - std::set &languages_for_types, - std::set &languages_for_expressions); -typedef void (*REPLEnumerateSupportedLanguages)( - std::set &languages); typedef int (*ComparisonFunction)(const void *, const void *); typedef void (*DebuggerInitializeCallback)(Debugger &debugger); diff --git a/lldb/lit/CMakeLists.txt b/lldb/lit/CMakeLists.txt index 672f05e3c0ea23f..bb4314427e83638 100644 --- a/lldb/lit/CMakeLists.txt +++ b/lldb/lit/CMakeLists.txt @@ -15,6 +15,9 @@ endif() get_property(LLDB_DOTEST_ARGS GLOBAL PROPERTY LLDB_DOTEST_ARGS_PROPERTY) set(dotest_args_replacement ${LLVM_BUILD_MODE}) +set(LLDB_TEST_MODULE_CACHE_LLDB "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-lldb" CACHE PATH "The Clang module cache used by the Clang embedded in LLDB while running tests.") +set(LLDB_TEST_MODULE_CACHE_CLANG "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-clang" CACHE PATH "The Clang module cache used by the Clang while building tests.") + if(LLDB_BUILT_STANDALONE) # In paths to our build-tree, replace CMAKE_CFG_INTDIR with our configuration name placeholder. string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} config_runtime_output_dir ${LLVM_RUNTIME_OUTPUT_INTDIR}) @@ -52,6 +55,7 @@ list(APPEND LLDB_TEST_DEPS lldb-test lli llvm-config + llvm-dwarfdump llvm-mc llvm-objcopy llvm-readobj @@ -65,6 +69,7 @@ endif() llvm_canonicalize_cmake_booleans( LLDB_DISABLE_PYTHON LLVM_ENABLE_ZLIB + LLVM_ENABLE_SHARED_LIBS LLDB_IS_64_BITS) configure_lit_site_cfg( diff --git a/lldb/lit/Driver/TestTarget.test b/lldb/lit/Driver/TestTarget.test new file mode 100644 index 000000000000000..fcf7f776bbcc589 --- /dev/null +++ b/lldb/lit/Driver/TestTarget.test @@ -0,0 +1,7 @@ +# Make sure lldb resolves the target path. +# RUN: mkdir -p %t/foo +# RUN: cd %t/foo +# RUN: %clang %p/Inputs/hello.c -g -o a.out +# RUN: %lldb -b a.out | FileCheck %s + +# CHECK: Current executable set to '{{.*}}foo{{[/\\\\]+}}a.out' diff --git a/lldb/lit/Minidump/Windows/Inputs/find-module.dmp.yaml b/lldb/lit/Minidump/Windows/Inputs/find-module.dmp.yaml new file mode 100644 index 000000000000000..aef94e34a94a1d7 --- /dev/null +++ b/lldb/lit/Minidump/Windows/Inputs/find-module.dmp.yaml @@ -0,0 +1,26 @@ +--- !minidump +Streams: + - Type: ModuleList + Modules: + - Base of Image: 0x00000000000B0000 + Size of Image: 0x00005000 + Module Name: 'find-module.exe' + CodeView Record: 525344533ED87D89C8A8184197F3A925EE4BF74101000000433A5C70726F6A656374735C746573745F6170705C436F6E736F6C654170706C69636174696F6E315C44656275675C436F6E736F6C654170706C69636174696F6E312E70646200 + - Type: SystemInfo + Processor Arch: X86 + Processor Level: 23 + Processor Revision: 2050 + Number of Processors: 32 + Product type: 1 + Major Version: 10 + Build Number: 17134 + Platform ID: Win32NT + Suite Mask: 0x0300 + CPU: + Vendor ID: AuthenticAMD + Version Info: 0x00800F82 + Feature Info: 0x178BFBFF + AMD Extended Features: 0x2FD3FBFF + - Type: MiscInfo + Content: 54050000F703000008290000C883495D0000000000000000AC0D000098080000AC0D00000200000002000000002000000D0000000000000002000000C4FFFFFF430065006E007400720061006C0020004500750072006F007000650020005300740061006E0064006100720064002000540069006D006500000000000000000000000A0000000500030000000000000000000000430065006E007400720061006C0020004500750072006F00700065002000530075006D006D00650072002000540069006D00650000000000000000000000000000000300000005000200000000000000C4FFFFFF310037003100330034002E0031002E007800380036006600720065002E007200730034005F00720065006C0065006100730065002E003100380030003400310030002D00310038003000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064006200670063006F00720065002E0069003300380036002C00310030002E0030002E00310037003100330034002E0031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C816B92 +... diff --git a/lldb/lit/Minidump/Windows/Inputs/find-module.exe.yaml b/lldb/lit/Minidump/Windows/Inputs/find-module.exe.yaml new file mode 100644 index 000000000000000..42ccc6d6e053935 --- /dev/null +++ b/lldb/lit/Minidump/Windows/Inputs/find-module.exe.yaml @@ -0,0 +1,32 @@ +--- !COFF +OptionalHeader: + AddressOfEntryPoint: 4224 + ImageBase: 4194304 + SectionAlignment: 4096 + FileAlignment: 512 + MajorOperatingSystemVersion: 6 + MinorOperatingSystemVersion: 0 + MajorImageVersion: 0 + MinorImageVersion: 0 + MajorSubsystemVersion: 6 + MinorSubsystemVersion: 0 + Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI + DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_NO_SEH, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ] + SizeOfStackReserve: 1048576 + SizeOfStackCommit: 4096 + SizeOfHeapReserve: 1048576 + SizeOfHeapCommit: 4096 +header: + Machine: IMAGE_FILE_MACHINE_I386 + Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_32BIT_MACHINE ] +sections: + - Name: .rdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] + VirtualAddress: 8192 + VirtualSize: 304 + - Name: .reloc + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ] + VirtualAddress: 16384 + VirtualSize: 48 +symbols: [] +... diff --git a/lldb/lit/Minidump/Windows/find-module.test b/lldb/lit/Minidump/Windows/find-module.test new file mode 100644 index 000000000000000..170a1803c67d045 --- /dev/null +++ b/lldb/lit/Minidump/Windows/find-module.test @@ -0,0 +1,10 @@ +Test that we correctly find a PE/COFF file in our executable search path, and +use it when opening minidumps. + +RUN: yaml2obj %S/Inputs/find-module.exe.yaml > %T/find-module.exe +RUN: yaml2obj %S/Inputs/find-module.dmp.yaml > %T/find-module.dmp +RUN: %lldb -O "settings set target.exec-search-paths %T" \ +RUN: -c %T/find-module.dmp -o "image dump objfile" -o exit | FileCheck %s + +CHECK-LABEL: image dump objfile +CHECK: ObjectFilePECOFF, file = '{{.*}}find-module.exe', arch = i386 diff --git a/lldb/lit/Minidump/disassemble-no-module.yaml b/lldb/lit/Minidump/disassemble-no-module.yaml new file mode 100644 index 000000000000000..14637d5b7c638f6 --- /dev/null +++ b/lldb/lit/Minidump/disassemble-no-module.yaml @@ -0,0 +1,48 @@ +# RUN: yaml2obj %s > %t +# RUN: %lldb -c %t -o bt -o disassemble 2>&1 | FileCheck %s + +# CHECK-LABEL: (lldb) bt +# CHECK: frame #0: 0x0000000000400430 +# CHECK-LABEL: (lldb) disassemble +# CHECK-NEXT: error: error reading data from section .module_image +# CHECK-NEXT: error: Failed to disassemble memory at 0x00400430. + +--- !minidump +Streams: + - Type: ThreadList + Threads: + - Thread Id: 0x000074F3 + Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B001000000000006CAE000000006B7FC05A0000C81D415A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2BF9E5A6B7F0000000000000000000000000000000000008850C14BFD7F00009850C14BFD7F00000100000000000000B04AC14BFD7F0000000000000000000060812D01000000000800000000000000B065E05A6B7F00008004400000000000E050C14BFD7F00000000000000000000000000000000000030044000000000007F03FFFF0000FFFFFFFFFFFF000000000000000000000000801F00006B7F00000400000000000000B84CC14BFD7F0000304D405A6B7F0000C84DC14BFD7F0000C0AA405A6B7F00004F033D0000000000B84DC14BFD7F0000E84DC14BFD7F0000000000000000000000000000000000000070E05A6B7F000078629E5A6B7F0000C81D415A6B7F0000804F9E5A6B7F00000000000001000000E603000001000000E093115A6B7F0000804EC14BFD7F0000584EC14BFD7F000099ADC05A6B7F00000100000000000000AAAAD77D0000000002000000000000000800000000000000B065E05A6B7F0000E6B7C05A6B7F0000010000006B7F0000884DC14BFD7F0000106F7C5A6B7F0000984EC14BFD7F0000488B7C5A6B7F0000C4A71CB90000000001000000000000000800000000000000B065E05A6B7F000048B6C05A6B7F0000702AE25A6B7F0000D84DC14BFD7F000030489E5A6B7F0000E84EC14BFD7F0000E05E9E5A6B7F00000991F0460000000001000000000000000800000000000000B065E05A6B7F000048B6C05A6B7F00000100000000000000284EC14BFD7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + Stack: + Start of Memory Range: 0x00007FFD4BC15080 + Content: 30044000000000000000000000000000 + - Type: ModuleList + Modules: + - Base of Image: 0x0000000000400000 + Size of Image: 0x00001000 + Module Name: 'nonexisting-module' + CodeView Record: 4C4570426CCF3F60FFA7CC4B86AE8FF44DB2576A68983611 + - Type: MemoryList + Memory Ranges: + - Start of Memory Range: 0x00007FFD4BC15080 + Content: 30044000000000000000000000000000 + - Type: SystemInfo + Processor Arch: AMD64 + Platform ID: Linux + CPU: + Vendor ID: GenuineIntel + Version Info: 0x00000000 + Feature Info: 0x00000000 + - Type: LinuxProcStatus + Text: | + Name: nonexisting-module + State: t (tracing stop) + Tgid: 29939 + Ngid: 0 + Pid: 29939 + PPid: 29370 + TracerPid: 29940 + Uid: 1001 1001 1001 1001 + Gid: 1001 1001 1001 1001 + +... diff --git a/lldb/lit/Minidump/lit.local.cfg b/lldb/lit/Minidump/lit.local.cfg new file mode 100644 index 000000000000000..db82cc231003a16 --- /dev/null +++ b/lldb/lit/Minidump/lit.local.cfg @@ -0,0 +1 @@ +config.suffixes = ['.test', '.yaml'] diff --git a/lldb/lit/Modules/ELF/PT_LOAD-overlap-PT_TLS.yaml b/lldb/lit/Modules/ELF/PT_LOAD-overlap-PT_TLS.yaml new file mode 100644 index 000000000000000..d68446668047076 --- /dev/null +++ b/lldb/lit/Modules/ELF/PT_LOAD-overlap-PT_TLS.yaml @@ -0,0 +1,63 @@ +# Overlapping PT_LOAD and PT_TLS segments should be able to exist side by side. + +# RUN: yaml2obj %s > %t +# RUN: lldb-test object-file %t | FileCheck %s +# RUN: lldb %t -o "image lookup -a 0x1000" -b | FileCheck --check-prefix=LOOKUP %s + +# CHECK: Index: 0 +# CHECK-NEXT: ID: 0xffffffffffffffff +# CHECK-NEXT: Name: PT_TLS[0] +# CHECK-NEXT: Type: container +# CHECK-NEXT: Permissions: rw- +# CHECK-NEXT: Thread specific: yes +# CHECK-NEXT: VM address: 0x1000 +# CHECK-NEXT: VM size: 16 +# CHECK-NEXT: File size: 0 +# CHECK-NEXT: Showing 1 subsections + +# CHECK: Index: 1 +# CHECK-NEXT: ID: 0xfffffffffffffffe +# CHECK-NEXT: Name: PT_LOAD[0] +# CHECK-NEXT: Type: container +# CHECK-NEXT: Permissions: rw- +# CHECK-NEXT: Thread specific: no +# CHECK-NEXT: VM address: 0x1000 +# CHECK-NEXT: VM size: 16 +# CHECK-NEXT: File size: 16 +# CHECK-NEXT: Showing 1 subsections + +# LOOKUP-LABEL: image lookup -a 0x1000 +# LOOKUP: Address: {{.*}}.PT_LOAD[0]..data + 0) + +!ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_ARM +Sections: + - Name: .tbss + Type: SHT_NOBITS + Flags: [ SHF_ALLOC, SHF_WRITE, SHF_TLS ] + Address: 0x1000 + AddressAlign: 0x4 + Size: 0x10 + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_WRITE ] + Address: 0x1000 + AddressAlign: 0x4 + Size: 0x10 +ProgramHeaders: + - Type: PT_TLS + Flags: [ PF_R, PF_W ] + VAddr: 0x1000 + Align: 0x4 + Sections: + - Section: .tbss + - Type: PT_LOAD + Flags: [ PF_W, PF_R ] + VAddr: 0x1000 + Align: 0x4 + Sections: + - Section: .data diff --git a/lldb/lit/Modules/ELF/PT_TLS-overlap-PT_LOAD.yaml b/lldb/lit/Modules/ELF/PT_TLS-overlap-PT_LOAD.yaml new file mode 100644 index 000000000000000..cd3939e05415d2e --- /dev/null +++ b/lldb/lit/Modules/ELF/PT_TLS-overlap-PT_LOAD.yaml @@ -0,0 +1,63 @@ +# Overlapping PT_LOAD and PT_TLS segments should be able to exist side by side. + +# RUN: yaml2obj %s > %t +# RUN: lldb-test object-file %t | FileCheck %s +# RUN: lldb %t -o "image lookup -a 0x1000" -b | FileCheck --check-prefix=LOOKUP %s + +# CHECK: Index: 0 +# CHECK-NEXT: ID: 0xffffffffffffffff +# CHECK-NEXT: Name: PT_LOAD[0] +# CHECK-NEXT: Type: container +# CHECK-NEXT: Permissions: rw- +# CHECK-NEXT: Thread specific: no +# CHECK-NEXT: VM address: 0x1000 +# CHECK-NEXT: VM size: 16 +# CHECK-NEXT: File size: 16 +# CHECK-NEXT: Showing 1 subsections + +# CHECK: Index: 1 +# CHECK-NEXT: ID: 0xfffffffffffffffe +# CHECK-NEXT: Name: PT_TLS[0] +# CHECK-NEXT: Type: container +# CHECK-NEXT: Permissions: rw- +# CHECK-NEXT: Thread specific: yes +# CHECK-NEXT: VM address: 0x1000 +# CHECK-NEXT: VM size: 16 +# CHECK-NEXT: File size: 0 +# CHECK-NEXT: Showing 1 subsections + +# LOOKUP-LABEL: image lookup -a 0x1000 +# LOOKUP: Address: {{.*}}.PT_LOAD[0]..data + 0) + +!ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_ARM +Sections: + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_WRITE ] + Address: 0x1000 + AddressAlign: 0x4 + Size: 0x10 + - Name: .tbss + Type: SHT_NOBITS + Flags: [ SHF_ALLOC, SHF_WRITE, SHF_TLS ] + Address: 0x1000 + AddressAlign: 0x4 + Size: 0x10 +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_W, PF_R ] + VAddr: 0x1000 + Align: 0x4 + Sections: + - Section: .data + - Type: PT_TLS + Flags: [ PF_R, PF_W ] + VAddr: 0x1000 + Align: 0x4 + Sections: + - Section: .tbss diff --git a/lldb/lit/Modules/ELF/aarch64-relocations.yaml b/lldb/lit/Modules/ELF/aarch64-relocations.yaml new file mode 100644 index 000000000000000..b9433a0ef5a7ae3 --- /dev/null +++ b/lldb/lit/Modules/ELF/aarch64-relocations.yaml @@ -0,0 +1,93 @@ +# RUN: yaml2obj %s > %t +# RUN: lldb-test object-file -contents %t | FileCheck %s + +# CHECK: Name: .debug_info +# CHECK: Data: ( +# CHECK-NEXT: 0000: 47000000 04000000 00000801 00000000 0C002D00 00000000 00003700 00000000 +# CHECK-NEXT: 0020: 00000000 00000800 00000200 00000000 00000008 00000001 6F490000 00010243 +# CHECK-NEXT: 0040: 00000003 4B000000 050400 +# CHECK-NEXT: ) + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AARCH64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: E0031B32C0035FD6 + - Name: .debug_str + Type: SHT_PROGBITS + Flags: [ SHF_MERGE, SHF_STRINGS ] + AddressAlign: 0x0000000000000001 + Size: 0x50 + - Name: .debug_abbrev + Type: SHT_PROGBITS + AddressAlign: 0x0000000000000001 + Size: 0x10 + - Name: .debug_info + Type: SHT_PROGBITS + AddressAlign: 0x0000000000000001 + Content: 470000000400000000000801000000000C0000000000000000000000000000000000000000000800000002000000000000000008000000016F000000000102430000000300000000050400 + - Name: .rela.debug_info + Type: SHT_RELA + Link: .symtab + AddressAlign: 0x0000000000000008 + Info: .debug_info + Relocations: + - Offset: 0x0000000000000006 + Symbol: .debug_abbrev + Type: R_AARCH64_ABS32 + - Offset: 0x000000000000000C + Symbol: .debug_str + Type: R_AARCH64_ABS32 + - Offset: 0x0000000000000012 + Symbol: .debug_str + Type: R_AARCH64_ABS32 + Addend: 45 + - Offset: 0x0000000000000016 + Symbol: .debug_line + Type: R_AARCH64_ABS32 + - Offset: 0x000000000000001A + Symbol: .debug_str + Type: R_AARCH64_ABS32 + Addend: 55 + - Offset: 0x000000000000001E + Symbol: .text + Type: R_AARCH64_ABS64 + - Offset: 0x000000000000002B + Symbol: .text + Type: R_AARCH64_ABS64 + - Offset: 0x0000000000000039 + Symbol: .debug_str + Type: R_AARCH64_ABS32 + Addend: 73 + - Offset: 0x0000000000000044 + Symbol: .debug_str + Type: R_AARCH64_ABS32 + Addend: 75 + - Name: .debug_line + Type: SHT_PROGBITS + AddressAlign: 0x0000000000000001 + Size: 0x20 +Symbols: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .debug_str + Type: STT_SECTION + Section: .debug_str + - Name: .debug_abbrev + Type: STT_SECTION + Section: .debug_abbrev + - Name: .debug_info + Type: STT_SECTION + Section: .debug_info + - Name: .debug_line + Type: STT_SECTION + Section: .debug_line +... diff --git a/lldb/lit/Modules/ELF/build-id-case.yaml b/lldb/lit/Modules/ELF/build-id-case.yaml index c95ffbd7ffd4710..f9786b3754f8431 100644 --- a/lldb/lit/Modules/ELF/build-id-case.yaml +++ b/lldb/lit/Modules/ELF/build-id-case.yaml @@ -1,7 +1,7 @@ # RUN: mkdir -p %t/.build-id/1b # RUN: yaml2obj %s > %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug # RUN: cd %t -# RUN: llvm-objcopy --strip-all --add-gnu-debuglink=.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out +# RUN: llvm-objcopy --strip-all %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out # RUN: lldb-test object-file %t/stripped.out | FileCheck %s # CHECK: Name: .debug_frame diff --git a/lldb/lit/Modules/ELF/compressed-sections.yaml b/lldb/lit/Modules/ELF/compressed-sections.yaml index df070a2d53d6768..f8c31d52bb83d41 100644 --- a/lldb/lit/Modules/ELF/compressed-sections.yaml +++ b/lldb/lit/Modules/ELF/compressed-sections.yaml @@ -16,14 +16,18 @@ Sections: Type: SHT_PROGBITS Flags: [ SHF_COMPRESSED ] Content: deadbeefbaadf00d + - Name: .zdebug_info + Type: SHT_PROGBITS + Content: 5A4C49420000000000000008789c5330700848286898000009c802c1 # CHECK: Name: .hello_elf # CHECK-NEXT: Type: regular # CHECK: VM address: 0 # CHECK-NEXT: VM size: 0 # CHECK-NEXT: File size: 28 -# CHECK-NEXT: Data: +# CHECK-NEXT: Data: ( # CHECK-NEXT: 20304050 60708090 +# CHECK-NEXT: ) # CHECK: Name: .bogus # CHECK-NEXT: Type: regular @@ -31,3 +35,10 @@ Sections: # CHECK-NEXT: VM size: 0 # CHECK-NEXT: File size: 8 # CHECK-NEXT: Data: () + +# CHECK: Name: .zdebug_info +# CHECK: dwarf-info +# CHECK: File size: 28 +# CHECK: Data: ( +# CHECK-NEXT: 20304050 60708090 +# CHECK-NEXT: ) diff --git a/lldb/lit/Modules/ELF/gnu-debuglink.yaml b/lldb/lit/Modules/ELF/gnu-debuglink.yaml new file mode 100644 index 000000000000000..b39b3187ae9bc37 --- /dev/null +++ b/lldb/lit/Modules/ELF/gnu-debuglink.yaml @@ -0,0 +1,32 @@ +# RUN: yaml2obj %s > %t +# RUN: llvm-objcopy --strip-all --add-gnu-debuglink=%t %t %t.stripped +# RUN: lldb-test object-file %t.stripped | FileCheck %s + +# CHECK: Name: .debug_frame +# CHECK-NEXT: Type: dwarf-frame + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 + Entry: 0x00000000004003D0 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x00000000004003D0 + AddressAlign: 0x0000000000000010 + Content: DEADBEEFBAADF00D + - Name: .debug_frame + Type: SHT_PROGBITS + AddressAlign: 0x0000000000000008 + Content: DEADBEEFBAADF00D +Symbols: + - Name: main + Type: STT_FUNC + Section: .text + Value: 0x00000000004003D0 + Size: 0x0000000000000008 +... diff --git a/lldb/lit/Modules/MachO/lc_build_version.yaml b/lldb/lit/Modules/MachO/lc_build_version.yaml index 4479662627ffc33..763525c6e5b071e 100644 --- a/lldb/lit/Modules/MachO/lc_build_version.yaml +++ b/lldb/lit/Modules/MachO/lc_build_version.yaml @@ -2,14 +2,15 @@ # RUN: lldb-test symbols %t.out | FileCheck %s # Test that the deployment target is parsed from the load commands. # CHECK: x86_64-apple-macosx10.14.0 +# CHECK: x86_64-apple-ios12.0.0-macabi --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x80000003 filetype: 0x00000002 - ncmds: 14 - sizeofcmds: 744 + ncmds: 15 + sizeofcmds: 776 flags: 0x00200085 reserved: 0x00000000 LoadCommands: @@ -150,6 +151,15 @@ LoadCommands: cmdsize: 16 dataoff: 4152 datasize: 0 + - cmd: LC_BUILD_VERSION + cmdsize: 32 + platform: 6 + minos: 786432 + sdk: 786432 + ntools: 1 + Tools: + - tool: 3 + version: 26738944 LinkEditData: ExportTrie: TerminalSize: 0 diff --git a/lldb/lit/Reproducer/TestSynchronous.test b/lldb/lit/Reproducer/TestSynchronous.test new file mode 100644 index 000000000000000..a2ff189bfc73f64 --- /dev/null +++ b/lldb/lit/Reproducer/TestSynchronous.test @@ -0,0 +1,13 @@ +# Ensure that replay happens in synchronous mode. + +# RUN: rm -rf %t.repro +# RUN: %lldb -x -b --capture --capture-path %t.repro -o 'script lldb.debugger.SetAsync(True)' -o 'script lldb.debugger.GetAsync()' -o 'reproducer generate' | FileCheck %s --check-prefix CAPTURE +# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix REPLAY + +# CAPTURE: script lldb.debugger.SetAsync(True) +# CAPTURE-NEXT: script lldb.debugger.GetAsync() +# CAPTURE-NEXT: True + +# REPLAY: script lldb.debugger.SetAsync(True) +# REPLAY-NEXT: script lldb.debugger.GetAsync() +# REPLAY-NEXT: False diff --git a/lldb/lit/Settings/TestModuleCacheSanity.test b/lldb/lit/Settings/TestModuleCacheSanity.test new file mode 100644 index 000000000000000..f16f40d47a6bf16 --- /dev/null +++ b/lldb/lit/Settings/TestModuleCacheSanity.test @@ -0,0 +1,4 @@ +# This is a sanity check that verifies that the module cache path is set +# correctly and points inside the default test build directory. +RUN: %lldb -o 'settings show symbols.clang-modules-cache-path' | FileCheck %s +CHECK: lldb-test-build.noindex{{.*}}module-cache-lldb diff --git a/lldb/lit/Suite/lit.cfg b/lldb/lit/Suite/lit.cfg index 0c270f5e6909bfc..9504f4ca1d845ab 100644 --- a/lldb/lit/Suite/lit.cfg +++ b/lldb/lit/Suite/lit.cfg @@ -20,20 +20,17 @@ config.test_source_root = os.path.join(config.lldb_src_root, 'packages', 'Python', 'lldbsuite', 'test') config.test_exec_root = config.test_source_root -# macOS flags needed for LLDB built with address sanitizer. -if 'Address' in config.llvm_use_sanitizer and \ - 'Darwin' in config.host_os and \ - 'x86' in config.host_triple: - import subprocess - resource_dir = subprocess.check_output( - config.cmake_cxx_compiler +' -print-resource-dir', shell=True).strip() - runtime = os.path.join(resource_dir, 'lib', 'darwin', - 'libclang_rt.asan_osx_dynamic.dylib') - config.environment['ASAN_OPTIONS'] = \ - 'detect_stack_use_after_return=1' - config.environment['DYLD_INSERT_LIBRARIES'] = runtime +if 'Address' in config.llvm_use_sanitizer: + config.environment['ASAN_OPTIONS'] = 'detect_stack_use_after_return=1' + # macOS flags needed for LLDB built with address sanitizer. + if 'Darwin' in config.host_os and 'x86' in config.host_triple: + import subprocess + resource_dir = subprocess.check_output( + [config.cmake_cxx_compiler, '-print-resource-dir']).strip() + runtime = os.path.join(resource_dir, 'lib', 'darwin', + 'libclang_rt.asan_osx_dynamic.dylib') + config.environment['DYLD_INSERT_LIBRARIES'] = runtime -# Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent. def find_shlibpath_var(): if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']: yield 'LD_LIBRARY_PATH' @@ -42,21 +39,21 @@ def find_shlibpath_var(): elif platform.system() == 'Windows': yield 'PATH' -for shlibpath_var in find_shlibpath_var(): - # In stand-alone build llvm_shlib_dir specifies LLDB's lib directory - # while llvm_libs_dir specifies LLVM's lib directory. - shlibpath = os.path.pathsep.join( - (config.llvm_shlib_dir, - config.llvm_libs_dir, - config.environment.get(shlibpath_var, ''))) - config.environment[shlibpath_var] = shlibpath - break -else: - lit_config.warning("unable to inject shared library path on '{}'" - .format(platform.system())) +# Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent. +if config.shared_libs: + for shlibpath_var in find_shlibpath_var(): + # In stand-alone build llvm_shlib_dir specifies LLDB's lib directory while + # llvm_libs_dir specifies LLVM's lib directory. + shlibpath = os.path.pathsep.join( + (config.llvm_shlib_dir, config.llvm_libs_dir, + config.environment.get(shlibpath_var, ''))) + config.environment[shlibpath_var] = shlibpath + else: + lit_config.warning("unable to inject shared library path on '{}'".format( + platform.system())) # Build dotest command. -dotest_cmd = [config.dotest_path, '-q'] +dotest_cmd = [config.dotest_path] dotest_cmd.extend(config.dotest_args_str.split(';')) # We don't want to force users passing arguments to lit to use `;` as a @@ -69,6 +66,12 @@ if config.dotest_lit_args_str: if config.llvm_libs_dir: dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir] +if config.lldb_build_directory: + dotest_cmd += ['--build-dir', config.lldb_build_directory] + +if config.lldb_module_cache: + dotest_cmd += ['--module-cache-dir', config.lldb_module_cache] + # Load LLDB test format. sys.path.append(os.path.join(config.lldb_src_root, "lit", "Suite")) import lldbtest diff --git a/lldb/lit/Suite/lit.site.cfg.in b/lldb/lit/Suite/lit.site.cfg.in index 8fd3d25d9319397..306967d61fd009d 100644 --- a/lldb/lit/Suite/lit.site.cfg.in +++ b/lldb/lit/Suite/lit.site.cfg.in @@ -13,8 +13,12 @@ config.lldb_src_root = "@LLDB_SOURCE_DIR@" config.cmake_cxx_compiler = "@CMAKE_CXX_COMPILER@" config.host_os = "@HOST_OS@" config.host_triple = "@LLVM_HOST_TRIPLE@" +config.shared_libs = @LLVM_ENABLE_SHARED_LIBS@ config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@" config.target_triple = "@TARGET_TRIPLE@" +config.lldb_build_directory = "@LLDB_TEST_BUILD_DIRECTORY@" +config.lldb_module_cache = "@LLDB_TEST_MODULE_CACHE_LLDB@" +config.clang_module_cache = "@LLDB_TEST_MODULE_CACHE_CLANG@" config.python_executable = "@PYTHON_EXECUTABLE@" config.dotest_path = "@LLDB_SOURCE_DIR@/test/dotest.py" config.dotest_args_str = "@LLDB_DOTEST_ARGS@" diff --git a/lldb/lit/Suite/lldbtest.py b/lldb/lit/Suite/lldbtest.py index 2692d8825b009ad..d6ed8b61d73ce2d 100644 --- a/lldb/lit/Suite/lldbtest.py +++ b/lldb/lit/Suite/lldbtest.py @@ -104,8 +104,8 @@ def execute(self, test, litConfig): passing_test_line = 'RESULT: PASSED' if passing_test_line not in out and passing_test_line not in err: - msg = ('Unable to find %r in dotest output:\n\n%s%s' % - (passing_test_line, out, err)) + msg = ('Unable to find %r in dotest output (exit code %d):\n\n%s%s' + % (passing_test_line, exitCode, out, err)) return lit.Test.UNRESOLVED, msg return lit.Test.PASS, '' diff --git a/lldb/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script b/lldb/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script new file mode 100644 index 000000000000000..7f3a1b9c2ff9b3f --- /dev/null +++ b/lldb/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script @@ -0,0 +1,14 @@ +PHDRS { + text PT_LOAD; +} +SECTIONS { + .shstrtab : { *(.shstrtab ) } + .debug_info : { *(.debug_info ) } + .debug_line : { *(.debug_line ) } + .debug_str : { *(.debug_str ) } + .debug_abbrev : { *(.debug_abbrev) } + + . = 0x201000; + .text : { *(.text .text.f) } :text + /DISCARD/ : { *(*) } +} diff --git a/lldb/lit/SymbolFile/DWARF/compilercontext.ll b/lldb/lit/SymbolFile/DWARF/compilercontext.ll new file mode 100644 index 000000000000000..6097345bd99366a --- /dev/null +++ b/lldb/lit/SymbolFile/DWARF/compilercontext.ll @@ -0,0 +1,52 @@ +; Test finding types by CompilerContext. +; RUN: llc %s -filetype=obj -o %t.o +; RUN: lldb-test symbols %t.o -find=type --language=C99 \ +; RUN: -compiler-context="Module:CModule,Module:SubModule,Struct:FromSubmoduleX" \ +; RUN: | FileCheck %s --check-prefix=NORESULTS +; RUN: lldb-test symbols %t.o -find=type --language=C++ \ +; RUN: -compiler-context="Module:CModule,Module:SubModule,Struct:FromSubmodule" \ +; RUN: | FileCheck %s --check-prefix=NORESULTS +; RUN: lldb-test symbols %t.o -find=type --language=C99 \ +; RUN: -compiler-context="Module:CModule,Module:SubModule,Struct:FromSubmodule" \ +; RUN: | FileCheck %s +; RUN: lldb-test symbols %t.o -find=type --language=C99 \ +; RUN: -compiler-context="Module:CModule,AnyModule:*,Struct:FromSubmodule" \ +; RUN: | FileCheck %s +; RUN: lldb-test symbols %t.o -find=type --language=C99 \ +; RUN: -compiler-context="AnyModule:*,Struct:FromSubmodule" \ +; RUN: | FileCheck %s +; RUN: lldb-test symbols %t.o -find=type --language=C99 \ +; RUN: -compiler-context="Module:CModule,Module:SubModule,AnyType:FromSubmodule" \ +; RUN: | FileCheck %s +; +; NORESULTS: Found 0 types +; CHECK: Found 1 types: +; CHECK: struct FromSubmodule { +; CHECK-NEXT: unsigned int x; +; CHECK-NEXT: unsigned int y; +; CHECK-NEXT: unsigned int z; +; CHECK-NEXT: } + +source_filename = "/t.c" +target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-apple-macosx10.14.0" + +!llvm.dbg.cu = !{!2} +!llvm.linker.options = !{} +!llvm.module.flags = !{!18, !19} +!llvm.ident = !{!22} + +; This simulates the debug info for a Clang module. +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, nameTableKind: GNU, retainedTypes: !{!11}) +!3 = !DIFile(filename: "t.c", directory: "/") +!8 = !DIModule(scope: !9, name: "SubModule", includePath: "", isysroot: "/") +!9 = !DIModule(scope: null, name: "CModule", includePath: "", isysroot: "/") +!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "FromSubmodule", scope: !8, file: !3, line: 1, size: 96, elements: !13) +!13 = !{!14, !16, !17} +!14 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !11, file: !3, line: 2, baseType: !15, size: 32) +!15 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) +!16 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !11, file: !3, line: 2, baseType: !15, size: 32, offset: 32) +!17 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !11, file: !3, line: 2, baseType: !15, size: 32, offset: 64) +!18 = !{i32 2, !"Dwarf Version", i32 4} +!19 = !{i32 2, !"Debug Info Version", i32 3} +!22 = !{!"clang version 10.0.0 (https://github.com/llvm/llvm-project 056f1b5cc7c2133f0cb3e30e7f24808d321096d7)"} diff --git a/lldb/lit/SymbolFile/DWARF/debug-line-basic.s b/lldb/lit/SymbolFile/DWARF/debug-line-basic.s index fc66f6a01b1e4f4..a1100ba8d9cff7f 100644 --- a/lldb/lit/SymbolFile/DWARF/debug-line-basic.s +++ b/lldb/lit/SymbolFile/DWARF/debug-line-basic.s @@ -1,10 +1,14 @@ +# Test basics of debug_line parsing. This test uses a linker script which +# ensures the code is placed at the end of a module to test the boundary +# condition when the final end-of-sequence line table entry points to an address +# that is outside the range of memory covered by the module. + # REQUIRES: lld, x86 # RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o -# RUN: ld.lld %t.o -o %t +# RUN: ld.lld --script=%S/Inputs/debug-line-basic.script %t.o -o %t # RUN: %lldb %t -o "image dump line-table -v a.c" -o exit | FileCheck %s - .text .globl _start _start: @@ -35,9 +39,16 @@ _start: .loc 2 1 0 is_stmt 0 nop # CHECK-NEXT: 0x0000000000201007: /tmp/c.c:1{{$}} - # CHECK-NEXT: 0x0000000000201008: /tmp/c.c:1, is_terminal_entry = TRUE{{$}} + .section .text.f,"ax",@progbits +f: + .loc 1 3 0 is_stmt 0 + nop +# CHECK-NEXT: 0x0000000000201008: /tmp/b.c:3{{$}} +# CHECK-NEXT: 0x0000000000201009: /tmp/b.c:3, is_terminal_entry = TRUE{{$}} + + .section .debug_str,"MS",@progbits,1 .Linfo_string1: .asciz "a.c" diff --git a/lldb/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp b/lldb/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp new file mode 100644 index 000000000000000..29adff62cd1ee90 --- /dev/null +++ b/lldb/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp @@ -0,0 +1,37 @@ +// Test that we can jump from a type unit in one dwo file into a type unit in a +// different dwo file. + +// REQUIRES: lld + +// RUN: %clang %s -target x86_64-pc-linux -fno-standalone-debug -g \ +// RUN: -fdebug-types-section -gsplit-dwarf -c -o %t1.o -DONE +// RUN: %clang %s -target x86_64-pc-linux -fno-standalone-debug -g \ +// RUN: -fdebug-types-section -gsplit-dwarf -c -o %t2.o -DTWO +// RUN: llvm-dwarfdump %t1.dwo -debug-types | FileCheck --check-prefix=ONEUNIT %s +// RUN: llvm-dwarfdump %t2.dwo -debug-types | FileCheck --check-prefix=ONEUNIT %s +// RUN: ld.lld %t1.o %t2.o -o %t +// RUN: %lldb %t -o "target var a b **b.a" -b | FileCheck %s + +// ONEUNIT-COUNT-1: DW_TAG_type_unit + +// CHECK: (const A) a = (a = 42) +// CHECK: (const B) b = { +// CHECK-NEXT: a = 0x{{.*}} +// CHECK-NEXT: } +// CHECK: (const A) **b.a = (a = 42) + +struct A; + +extern const A *a_ptr; +#ifdef ONE +struct A { + int a = 42; +}; +constexpr A a{}; +const A *a_ptr = &a; +#else +struct B { + const A **a; +}; +extern constexpr B b{&a_ptr}; +#endif diff --git a/lldb/lit/SymbolFile/DWARF/debug_loc.s b/lldb/lit/SymbolFile/DWARF/debug_loc.s index ce7177d7d56b31e..1fc862f8a1fc5bf 100644 --- a/lldb/lit/SymbolFile/DWARF/debug_loc.s +++ b/lldb/lit/SymbolFile/DWARF/debug_loc.s @@ -1,14 +1,22 @@ +# Test debug_loc parsing, including the cases of invalid input. The exact +# behavior in the invalid cases is not particularly important, but it should be +# "reasonable". + # REQUIRES: x86 # RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t -# RUN: lldb %t -o "image lookup -v -a 0" -o "image lookup -v -a 2" -o exit \ +# RUN: %lldb %t -o "image lookup -v -a 0" -o "image lookup -v -a 2" -o exit \ # RUN: | FileCheck %s # CHECK-LABEL: image lookup -v -a 0 -# CHECK: Variable: {{.*}}, name = "x", type = "int", location = rdi, +# CHECK: Variable: {{.*}}, name = "x0", type = "int", location = rdi, +# CHECK: Variable: {{.*}}, name = "x1", type = "int", location = , +# CHECK: Variable: {{.*}}, name = "x2", type = "int", location = , # CHECK-LABEL: image lookup -v -a 2 -# CHECK: Variable: {{.*}}, name = "x", type = "int", location = rax, +# CHECK: Variable: {{.*}}, name = "x0", type = "int", location = rax, +# CHECK: Variable: {{.*}}, name = "x1", type = "int", location = , +# CHECK: Variable: {{.*}}, name = "x2", type = "int", location = , .type f,@function f: # @f @@ -27,8 +35,12 @@ f: # @f .asciz "f" .Linfo_string4: .asciz "int" -.Linfo_string5: - .asciz "x" +.Lx0: + .asciz "x0" +.Lx1: + .asciz "x1" +.Lx2: + .asciz "x2" .section .debug_loc,"",@progbits .Ldebug_loc0: @@ -42,6 +54,10 @@ f: # @f .byte 80 # super-register DW_OP_reg0 .quad 0 .quad 0 +.Ldebug_loc2: + .quad .Lfunc_begin0-.Lfunc_begin0 + .quad .Lfunc_end0-.Lfunc_begin0 + .short 0xdead # Loc expr size .section .debug_abbrev,"",@progbits .byte 1 # Abbreviation Code @@ -104,10 +120,18 @@ f: # @f .quad .Lfunc_begin0 # DW_AT_low_pc .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc .long .Linfo_string3 # DW_AT_name - .long 83 # DW_AT_type - .byte 3 # Abbrev [3] 0x43:0xf DW_TAG_formal_parameter + .long .Lint # DW_AT_type + .byte 3 # Abbrev [3] DW_TAG_formal_parameter .long .Ldebug_loc0 # DW_AT_location - .long .Linfo_string5 # DW_AT_name + .long .Lx0 # DW_AT_name + .long .Lint-.Lcu_begin0 # DW_AT_type + .byte 3 # Abbrev [3] DW_TAG_formal_parameter + .long 0xdeadbeef # DW_AT_location + .long .Lx1 # DW_AT_name + .long .Lint-.Lcu_begin0 # DW_AT_type + .byte 3 # Abbrev [3] DW_TAG_formal_parameter + .long .Ldebug_loc2 # DW_AT_location + .long .Lx2 # DW_AT_name .long .Lint-.Lcu_begin0 # DW_AT_type .byte 0 # End Of Children Mark .Lint: diff --git a/lldb/lit/SymbolFile/DWARF/deterministic-build.cpp b/lldb/lit/SymbolFile/DWARF/deterministic-build.cpp new file mode 100644 index 000000000000000..576c4ab7244233b --- /dev/null +++ b/lldb/lit/SymbolFile/DWARF/deterministic-build.cpp @@ -0,0 +1,11 @@ +// Test that binaries linked deterministically (N_OSO has timestamp 0) can still +// have their object files loaded by lldb. Note that the env var ZERO_AR_DATE +// requires the ld64 linker, which clang invokes by default. +// REQUIRES: system-darwin +// RUN: %clang %s -g -c -o %t.o +// RUN: ZERO_AR_DATE=1 %clang %t.o -g -o %t +// RUN: %lldb %t -o "breakpoint set -f %s -l 11" -o run -o exit | FileCheck %s +// CHECK: stop reason = breakpoint + + +int main() { return 0; } diff --git a/lldb/lit/SymbolFile/DWARF/gnu-style-compression.cpp b/lldb/lit/SymbolFile/DWARF/gnu-style-compression.cpp new file mode 100644 index 000000000000000..9dc87303ba9fda6 --- /dev/null +++ b/lldb/lit/SymbolFile/DWARF/gnu-style-compression.cpp @@ -0,0 +1,14 @@ +// REQUIRES: zlib + +// RUN: %clang %s -target x86_64-pc-linux -g -gsplit-dwarf -c -o %t \ +// RUN: -Wa,--compress-debug-sections=zlib-gnu +// RUN: %lldb %t -o "target var s a" -b | FileCheck %s + +// CHECK: (const short) s = 47 +// CHECK: (const A) a = (a = 42) + +struct A { + long a = 42; +}; +extern constexpr short s = 47; +extern constexpr A a{}; diff --git a/lldb/lit/SymbolFile/DWARF/lit.local.cfg b/lldb/lit/SymbolFile/DWARF/lit.local.cfg index 51b4bd49ee67193..d7ddcbf641c99b3 100644 --- a/lldb/lit/SymbolFile/DWARF/lit.local.cfg +++ b/lldb/lit/SymbolFile/DWARF/lit.local.cfg @@ -1 +1 @@ -config.suffixes = ['.cpp', '.s', '.test'] +config.suffixes = ['.cpp', '.s', '.test', '.ll'] diff --git a/lldb/lit/SymbolFile/Inputs/sizeless-symbol.s b/lldb/lit/SymbolFile/Inputs/sizeless-symbol.s new file mode 100644 index 000000000000000..ac08dddb0e2c1c3 --- /dev/null +++ b/lldb/lit/SymbolFile/Inputs/sizeless-symbol.s @@ -0,0 +1,8 @@ + .text + .byte 0 +sizeless: +sizeful: + .byte 0 + .byte 0 +sizeend: + .size sizeful, sizeend - sizeful diff --git a/lldb/lit/SymbolFile/PDB/class-layout.test b/lldb/lit/SymbolFile/PDB/class-layout.test index 5c0194485d76e53..fcd6b610826dc7c 100644 --- a/lldb/lit/SymbolFile/PDB/class-layout.test +++ b/lldb/lit/SymbolFile/PDB/class-layout.test @@ -13,7 +13,7 @@ RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRI RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s CHECK: Module [[MOD:.*]] -CHECK: {{^[0-9A-F]+}}: SymbolVendor pdb ([[MOD]]) +CHECK: SymbolFile pdb ([[MOD]]) CHECK: {{^[0-9A-F]+}}: CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp' ENUM: name = "Enum", size = 4, decl = ClassLayoutTest.cpp:5 diff --git a/lldb/lit/SymbolFile/PDB/compilands.test b/lldb/lit/SymbolFile/PDB/compilands.test index d719ab7669d87f4..0bda82ee236fa22 100644 --- a/lldb/lit/SymbolFile/PDB/compilands.test +++ b/lldb/lit/SymbolFile/PDB/compilands.test @@ -7,5 +7,5 @@ RUN: env LLDB_USE_NATIVE_PDB_READER=0 lldb-test symbols %T/CompilandsTest.cpp.ex ; Link default libraries CHECK: Module [[CU:.*]] -CHECK: {{^[0-9A-F]+}}: SymbolVendor pdb ([[CU]]) +CHECK: SymbolFile pdb ([[CU]]) CHECK: {{^[0-9A-F]+}}: CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\CompilandsTest.cpp' diff --git a/lldb/lit/SymbolFile/PDB/func-symbols.test b/lldb/lit/SymbolFile/PDB/func-symbols.test index fbbf5ddfb856ab1..676be1c632b0334 100644 --- a/lldb/lit/SymbolFile/PDB/func-symbols.test +++ b/lldb/lit/SymbolFile/PDB/func-symbols.test @@ -7,7 +7,7 @@ RUN: lldb-test symbols %T/FuncSymbolsTest.exe | FileCheck --check-prefix=CHECK-T ; In this test, We don't check demangled name of a mangled function. CHECK-ONE: Module [[MD:.*]] -CHECK-ONE-DAG: {{.*}}: SymbolVendor pdb ([[MD]]) +CHECK-ONE-DAG: SymbolFile pdb ([[MD]]) CHECK-ONE-DAG: [[TY0:.*]]: Type{[[UID0:.*]]} , name = "Func_arg_array", decl = FuncSymbolsTestMain.cpp:3, compiler_type = {{.*}} int (int *) CHECK-ONE-DAG: [[TY1:.*]]: Type{[[UID1:.*]]} , name = "Func_arg_void", decl = FuncSymbolsTestMain.cpp:4, compiler_type = {{.*}} void (void) CHECK-ONE-DAG: [[TY2:.*]]: Type{[[UID2:.*]]} , name = "Func_arg_none", decl = FuncSymbolsTestMain.cpp:5, compiler_type = {{.*}} void (void) diff --git a/lldb/lit/SymbolFile/PDB/type-quals.test b/lldb/lit/SymbolFile/PDB/type-quals.test index 734509f78345a68..cf65c79223b2346 100644 --- a/lldb/lit/SymbolFile/PDB/type-quals.test +++ b/lldb/lit/SymbolFile/PDB/type-quals.test @@ -4,7 +4,7 @@ RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/Typ RUN: lldb-test symbols %T/TypeQualsTest.cpp.exe | FileCheck %s CHECK: Module [[MOD:.*]] -CHECK-DAG: {{^[0-9A-F]+}}: SymbolVendor pdb ([[MOD]]) +CHECK-DAG: SymbolFile pdb ([[MOD]]) CHECK-DAG: Type{{.*}} , name = "const int", size = 4, compiler_type = {{.*}} const int CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} const int * CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} const int **const diff --git a/lldb/lit/SymbolFile/PDB/typedefs.test b/lldb/lit/SymbolFile/PDB/typedefs.test index caf23a8c166425f..5f70d87823049b7 100644 --- a/lldb/lit/SymbolFile/PDB/typedefs.test +++ b/lldb/lit/SymbolFile/PDB/typedefs.test @@ -12,7 +12,7 @@ RUN: lldb-test symbols %T/SimpleTypesTest.cpp.typedefs.exe | FileCheck %s ; both of them is the same. CHECK: Module [[MOD:.*]] -CHECK: {{^[0-9A-F]+}}: SymbolVendor pdb ([[MOD]]) +CHECK: SymbolFile pdb ([[MOD]]) CHECK-DAG: name = "char32_t", size = 4, compiler_type = {{.*}} char32_t CHECK-DAG: name = "char16_t", size = 2, compiler_type = {{.*}} char16_t CHECK-DAG: Type{{.*}} , name = "unsigned long", size = 4, compiler_type = {{.*}} unsigned long diff --git a/lldb/lit/SymbolFile/PDB/variables.test b/lldb/lit/SymbolFile/PDB/variables.test index 2e9b59471091abd..ae14f02754cefdc 100644 --- a/lldb/lit/SymbolFile/PDB/variables.test +++ b/lldb/lit/SymbolFile/PDB/variables.test @@ -9,7 +9,7 @@ RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%T/VariablesTest.out RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%T/VariablesTest.out %s GLOBALS: Module [[MOD:.*]] -GLOBALS: SymbolVendor pdb ([[MOD]]) +GLOBALS: SymbolFile pdb ([[MOD]]) GLOBALS: CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp' GLOBALS-DAG: Variable{{.*}}, name = "g_IntVar" GLOBALS-SAME: scope = global, location = {{.*}}, external diff --git a/lldb/lit/SymbolFile/sizeless-symbol.test b/lldb/lit/SymbolFile/sizeless-symbol.test new file mode 100644 index 000000000000000..1459d6ada8def09 --- /dev/null +++ b/lldb/lit/SymbolFile/sizeless-symbol.test @@ -0,0 +1,14 @@ +# Some targets do not have the .size directive. +# RUN: %clang -target x86_64-unknown-unknown-elf %S/Inputs/sizeless-symbol.s -c -o %t.o +# RUN: %lldb %t.o -s %s -o quit | FileCheck %s + +image lookup --address 1 +# CHECK: Summary: sizeless-symbol.test.tmp.o`sizeful +image lookup --address 2 +# CHECK: Summary: sizeless-symbol.test.tmp.o`sizeful + 1 +image dump symtab +# CHECK: Index UserID DSX Type File Address/Value Load Address Size Flags Name +# CHECK-NEXT:------- ------ --- --------------- ------------------ ------------------ ------------------ ---------- ---------------------------------- +# CHECK-NEXT:[ 0] 1 Code 0x0000000000000003 0x0000000000000000 0x00000000 sizeend +# CHECK-NEXT:[ 1] 2 Code 0x0000000000000001 0x0000000000000002 0x00000000 sizeful +# CHECK-NEXT:[ 2] 3 Code 0x0000000000000001 0x0000000000000000 0x00000000 sizeless diff --git a/lldb/lit/Unwind/Inputs/trap_frame_sym_ctx.s b/lldb/lit/Unwind/Inputs/trap_frame_sym_ctx.s new file mode 100644 index 000000000000000..50ede2d34d38d43 --- /dev/null +++ b/lldb/lit/Unwind/Inputs/trap_frame_sym_ctx.s @@ -0,0 +1,42 @@ + .text + .globl bar +bar: + .cfi_startproc + leal (%edi, %edi), %eax + ret + .cfi_endproc + + .globl asm_main +asm_main: + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset %rbp, -16 + movq %rsp, %rbp + .cfi_def_cfa_register %rbp + movl $47, %edi + + # install tramp as return address + # (similar to signal return trampolines on some platforms) + leaq tramp(%rip), %rax + pushq %rax + jmp bar # call, with return address pointing to tramp + + popq %rbp + .cfi_def_cfa %rsp, 8 + ret + .cfi_endproc + + .globl tramp +tramp: + .cfi_startproc + .cfi_signal_frame + # Emit cfi to line up with the frame created by asm_main + .cfi_def_cfa_offset 16 + .cfi_offset %rbp, -16 + .cfi_def_cfa_register %rbp + # copy asm_main's epilog to clean up the frame + popq %rbp + .cfi_def_cfa %rsp, 8 + ret + .cfi_endproc diff --git a/lldb/lit/Unwind/trap_frame_sym_ctx.test b/lldb/lit/Unwind/trap_frame_sym_ctx.test new file mode 100644 index 000000000000000..10f7892e928b02f --- /dev/null +++ b/lldb/lit/Unwind/trap_frame_sym_ctx.test @@ -0,0 +1,21 @@ +# Test that symbol contexts for trap handler frames are set correctly even when +# the pc is at the start of the function. + +# UNSUPPORTED: system-windows +# REQUIRES: target-x86_64, native + +# RUN: %clang %p/Inputs/call-asm.c %p/Inputs/trap_frame_sym_ctx.s -o %t +# RUN: %lldb %t -s %s -o exit | FileCheck %s + +settings append target.trap-handler-names tramp + +breakpoint set -n bar +# CHECK: Breakpoint 1: where = {{.*}}`bar + +process launch +# CHECK: stop reason = breakpoint 1.1 + +thread backtrace +# CHECK: frame #0: {{.*}}`bar +# CHECK: frame #1: {{.*}}`tramp +# CHECK: frame #2: {{.*}}`main diff --git a/lldb/lit/helper/toolchain.py b/lldb/lit/helper/toolchain.py index d02b148c8e3a433..0290e12c8f55079 100644 --- a/lldb/lit/helper/toolchain.py +++ b/lldb/lit/helper/toolchain.py @@ -16,11 +16,6 @@ def use_lldb_substitutions(config): dsname = 'debugserver' if platform.system() in ['Darwin'] else 'lldb-server' dsargs = [] if platform.system() in ['Darwin'] else ['gdbserver'] - lldbmi = ToolSubst('%lldbmi', - command=FindTool('lldb-mi'), - extra_args=['--synchronous'], - unresolved='ignore') - build_script = os.path.dirname(__file__) build_script = os.path.join(build_script, 'build.py') @@ -43,7 +38,6 @@ def use_lldb_substitutions(config): ToolSubst('%lldb-init', command=FindTool('lldb'), extra_args=['-S', lldb_init]), - lldbmi, ToolSubst('%debugserver', command=FindTool(dsname), extra_args=dsargs, @@ -61,9 +55,6 @@ def use_lldb_substitutions(config): llvm_config.add_tool_substitutions(primary_tools, [config.lldb_tools_dir]) - # lldb-mi always fails without Python support - if lldbmi.was_resolved and not config.lldb_disable_python: - config.available_features.add('lldb-mi') def _use_msvc_substitutions(config): # If running from a Visual Studio Command prompt (e.g. vcvars), this will @@ -113,6 +104,9 @@ def use_support_substitutions(config): flags += ['-L' + config.llvm_libs_dir, '-Wl,-rpath,' + config.llvm_libs_dir] + # The clang module cache is used for building inferiors. + flags += ['-fmodules-cache-path={}'.format(config.clang_module_cache)] + additional_tool_dirs=[] if config.lldb_lit_tools_dir: additional_tool_dirs.append(config.lldb_lit_tools_dir) diff --git a/lldb/lit/lit-lldb-init.in b/lldb/lit/lit-lldb-init.in index 40bece698df3f62..2c1925c971a47dc 100644 --- a/lldb/lit/lit-lldb-init.in +++ b/lldb/lit/lit-lldb-init.in @@ -1,3 +1,5 @@ # LLDB init file for the LIT tests. settings set symbols.enable-external-lookup false +settings set plugin.process.gdb-remote.packet-timeout 60 settings set interpreter.echo-comment-commands false +settings set symbols.clang-modules-cache-path "@LLDB_TEST_MODULE_CACHE_LLDB@" diff --git a/lldb/lit/lit.cfg.py b/lldb/lit/lit.cfg.py index ad659eaf87f7926..4cf0855df364261 100644 --- a/lldb/lit/lit.cfg.py +++ b/lldb/lit/lit.cfg.py @@ -1,6 +1,7 @@ # -*- Python -*- import os +import platform import re import shutil import site @@ -63,25 +64,23 @@ def calculate_arch_features(arch_string): ('--targets-built', calculate_arch_features) ]) -# Clean the module caches in the test build directory. This is -# necessary in an incremental build whenever clang changes underneath, -# so doing it once per lit.py invocation is close enough. - -for i in ['module-cache-clang', 'module-cache-lldb']: - cachedir = os.path.join(config.lldb_libs_dir, '..', - 'lldb-test-build.noindex', i) +# Clean the module caches in the test build directory. This is necessary in an +# incremental build whenever clang changes underneath, so doing it once per +# lit.py invocation is close enough. +for cachedir in [config.clang_module_cache, config.lldb_module_cache]: if os.path.isdir(cachedir): print("Deleting module cache at %s."%cachedir) shutil.rmtree(cachedir) # Set a default per-test timeout of 10 minutes. Setting a timeout per test -# requires the psutil module and lit complains if the value is set but the -# module can't be found. -try: - import psutil # noqa: F401 +# requires that killProcessAndChildren() is supported on the platform and +# lit complains if the value is set but it is not supported. +supported, errormsg = lit_config.maxIndividualTestTimeIsSupported +if supported: lit_config.maxIndividualTestTime = 600 -except ImportError: - pass +else: + lit_config.warning("Could not set a default per-test timeout. " + errormsg) + # If running tests natively, check for CPU features needed for some tests. diff --git a/lldb/lit/lit.site.cfg.py.in b/lldb/lit/lit.site.cfg.py.in index 738b25d09310e56..2ff07f7dab9d8c3 100644 --- a/lldb/lit/lit.site.cfg.py.in +++ b/lldb/lit/lit.site.cfg.py.in @@ -18,6 +18,9 @@ config.have_zlib = @LLVM_ENABLE_ZLIB@ config.host_triple = "@LLVM_HOST_TRIPLE@" config.lldb_bitness = 64 if @LLDB_IS_64_BITS@ else 32 config.lldb_disable_python = @LLDB_DISABLE_PYTHON@ +config.lldb_build_directory = "@LLDB_TEST_BUILD_DIRECTORY@" +config.lldb_module_cache = "@LLDB_TEST_MODULE_CACHE_LLDB@" +config.clang_module_cache = "@LLDB_TEST_MODULE_CACHE_CLANG@" # Support substitution of the tools and libs dirs with user parameters. This is # used when we can't determine the tool dir at configuration time. diff --git a/lldb/lit/tools/lldb-instr/Inputs/foo.cpp b/lldb/lit/tools/lldb-instr/Inputs/foo.cpp deleted file mode 100644 index 981b911eee265e6..000000000000000 --- a/lldb/lit/tools/lldb-instr/Inputs/foo.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "foo.h" - -#define MACRO_FOO \ - { void; } -#define MACRO_BAR(B) B - -Foo::Foo() {} -void Foo::A() {} -void Foo::B(int i) {} -int Foo::C(int i) { return i; } -int Foo::D(bool b) const { return 1; } -void Foo::E() {} -int Foo::F(int i) { return i; } -void Foo::G(const char *fmt...) {} -Foo Foo::H() { return Foo(); } -void Foo::I() const { MACRO_FOO; } -Bar Foo::J() const { return MACRO_BAR(Bar()); } -Bar Foo::K(void *v) const { return Bar(); } -Bar &Foo::L() const { - Bar *b = new Bar(); - return *b; -}; -Bar *Foo::M() const { - Bar *b = new Bar(); - return b; -}; diff --git a/lldb/lit/tools/lldb-instr/Inputs/foo.h b/lldb/lit/tools/lldb-instr/Inputs/foo.h deleted file mode 100644 index fb76e046e024a92..000000000000000 --- a/lldb/lit/tools/lldb-instr/Inputs/foo.h +++ /dev/null @@ -1,19 +0,0 @@ -struct Bar {}; -struct Foo { - Foo(); - Foo(int i); - - void A(); - void B(int i); - int C(int i); - int D(bool b) const; - static void E(); - static int F(int i); - void G(const char *fmt...); - static Foo H(); - void I() const; - Bar J() const; - Bar K(void *v) const; - Bar &L() const; - Bar *M() const; -}; diff --git a/lldb/lit/tools/lldb-instr/TestInstrumentationRecord.test b/lldb/lit/tools/lldb-instr/TestInstrumentationRecord.test deleted file mode 100644 index a75a3fcecff1191..000000000000000 --- a/lldb/lit/tools/lldb-instr/TestInstrumentationRecord.test +++ /dev/null @@ -1,24 +0,0 @@ -# RUN: mkdir -p %t.dir -# RUN: cp %p/Inputs/foo.cpp %t.dir/foo.cpp -# RUN: cp %p/Inputs/foo.h %t.dir/foo.h - -# RUN: lldb-instr %t.dir/foo.cpp -# RUN: cat %t.dir/foo.cpp | FileCheck %s - -# CHECK: LLDB_RECORD_CONSTRUCTOR_NO_ARGS(Foo); -# CHECK: LLDB_RECORD_METHOD_NO_ARGS(void, Foo, A); -# CHECK: LLDB_RECORD_METHOD(void, Foo, B, (int), i); -# CHECK: LLDB_RECORD_METHOD(int, Foo, C, (int), i); -# CHECK: LLDB_RECORD_METHOD_CONST(int, Foo, D, (bool), b); -# CHECK: LLDB_RECORD_STATIC_METHOD_NO_ARGS(void, Foo, E); -# CHECK: LLDB_RECORD_STATIC_METHOD(int, Foo, F, (int), i); -# CHECK-NOT: LLDB_RECORD_STATIC_METHOD(void, Foo, G -# CHECK: LLDB_RECORD_STATIC_METHOD_NO_ARGS(Foo, Foo, H); -# CHECK: LLDB_RECORD_RESULT(Foo()) -# CHECK-NOT: LLDB_RECORD_METHOD_CONST_NO_ARGS(void, Foo, I); -# CHECK: LLDB_RECORD_METHOD_CONST_NO_ARGS(Bar, Foo, J); -# CHECK-NOT: LLDB_RECORD_RESULT(Bar()); -# CHECK: LLDB_RECORD_DUMMY(Bar, Foo, K, (void *), v); -# CHECK-NOT: LLDB_RECORD_RESULT(Bar()); -# CHECK: LLDB_RECORD_RESULT(*b) -# CHECK: LLDB_RECORD_RESULT(b) diff --git a/lldb/lit/tools/lldb-instr/TestInstrumentationRegister.test b/lldb/lit/tools/lldb-instr/TestInstrumentationRegister.test deleted file mode 100644 index aa8af5b8fe271e1..000000000000000 --- a/lldb/lit/tools/lldb-instr/TestInstrumentationRegister.test +++ /dev/null @@ -1,20 +0,0 @@ -# RUN: mkdir -p %t.dir -# RUN: cp %p/Inputs/foo.cpp %t.dir/foo.cpp -# RUN: cp %p/Inputs/foo.h %t.dir/foo.h - -# RUN: lldb-instr %t.dir/foo.cpp | FileCheck %s - -# CHECK: { -# CHECK: LLDB_REGISTER_METHOD(void, Foo, A, ()); -# CHECK: LLDB_REGISTER_METHOD(void, Foo, B, (int)); -# CHECK: LLDB_REGISTER_METHOD(int, Foo, C, (int)); -# CHECK: LLDB_REGISTER_METHOD_CONST(int, Foo, D, (bool)); -# CHECK: LLDB_REGISTER_STATIC_METHOD(void, Foo, E, ()); -# CHECK: LLDB_REGISTER_STATIC_METHOD(int, Foo, F, (int)); -# CHECK: LLDB_REGISTER_METHOD_CONST(Bar, Foo, J, ()); -# CHECK: LLDB_REGISTER_METHOD_CONST(Bar &, Foo, L, ()); -# CHECK: LLDB_REGISTER_METHOD_CONST(Bar *, Foo, M, ()); -# CHECK-NOT: LLDB_REGISTER_STATIC_METHOD(void, Foo, G -# CHECK-NOT: LLDB_REGISTER_METHOD_CONST(void, Foo, I, ()); -# CHECK-NOT: LLDB_REGISTER_METHOD_CONST(Bar, Foo, K, (void*)); -# CHECK: } diff --git a/lldb/lit/tools/lldb-instr/lit.local.cfg b/lldb/lit/tools/lldb-instr/lit.local.cfg deleted file mode 100644 index 0389218d7a6cbcc..000000000000000 --- a/lldb/lit/tools/lldb-instr/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not "lldb-instr" in config.available_features: - config.unsupported = True diff --git a/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test b/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test deleted file mode 100644 index 55daf919a688813..000000000000000 --- a/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test +++ /dev/null @@ -1,51 +0,0 @@ -# XFAIL: system-windows -# -> llvm.org/pr24452 -# XFAIL: system-netbsd -# -# RUN: %clang -o %t %p/inputs/break-insert-pending.c -g -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test for enabling pending breakpoints globally - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert printf -# CHECK: ^error,msg="Command 'break-insert'. Breakpoint location 'printf' not found - --gdb-set breakpoint pending on -# CHECK: ^done --gdb-show breakpoint pending -# CHECK: ^done,value="on" --break-insert printf -# CHECK: ^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0xffffffffffffffff",func="??",file="??",fullname="??/??",line="0",pending=["printf"],times="0",original-location="printf"} - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit",disp="del",bkptno="2",frame={level="0",addr="{{0x[0-9a-f]*[^f][0-9a-f]*}}" --break-disable 2 -# CHECK: ^done --exec-continue -# CHECK: ^running -# CHECK: *stopped,reason="exited-normally" - -# Test that it can be turned back off --gdb-show breakpoint pending -# CHECK: ^done,value="on" --gdb-set breakpoint pending off -# CHECK: ^done --gdb-show breakpoint pending -# CHECK: ^done,value="off" --break-insert printf-non-existent -# CHECK: ^error,msg="Command 'break-insert'. Breakpoint location 'printf-non-existent' not found" -# Check that enable/disable with 1 and 0 works --gdb-set breakpoint pending 1 -# CHECK: ^done --gdb-show breakpoint pending -# CHECK: ^done,value="on" --gdb-set breakpoint pending 0 -# CHECK: ^done --gdb-show breakpoint pending -# CHECK: ^done,value="off" --gdb-set breakpoint pending garbage -# CHECK: ^done diff --git a/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test b/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test deleted file mode 100644 index d8039156b72f266..000000000000000 --- a/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test +++ /dev/null @@ -1,21 +0,0 @@ -# XFAIL: system-netbsd -# UNSUPPORTED: system-linux -# -# RUN: %build %p/inputs/break-insert.c --nodefaultlib -o a.exe -# RUN: %lldbmi < %s | FileCheck %s - -# Test that a breakpoint can be inserted before creating a target. - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert breakpoint -# CHECK: ^done,bkpt={number="1" - --file-exec-and-symbols a.exe -# CHECK: ^done - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - diff --git a/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert-pending.c b/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert-pending.c deleted file mode 100644 index 99722abfbd4b75a..000000000000000 --- a/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert-pending.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(int argc, char const *argv[]) { - printf("Print a formatted string so that GCC does not optimize this printf call: %s\n", argv[0]); - return 0; -} diff --git a/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert.c b/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert.c deleted file mode 100644 index 67d2e56ee5976f1..000000000000000 --- a/lldb/lit/tools/lldb-mi/breakpoint/inputs/break-insert.c +++ /dev/null @@ -1,7 +0,0 @@ -int breakpoint() { // Breakpoint will be set here. - return 0; -} - -int main() { - return breakpoint(); -} diff --git a/lldb/lit/tools/lldb-mi/breakpoint/lit.local.cfg b/lldb/lit/tools/lldb-mi/breakpoint/lit.local.cfg deleted file mode 100644 index df9b335dd1310f7..000000000000000 --- a/lldb/lit/tools/lldb-mi/breakpoint/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.test'] diff --git a/lldb/lit/tools/lldb-mi/data/data-info-line.test b/lldb/lit/tools/lldb-mi/data/data-info-line.test deleted file mode 100644 index 11ea3659625728e..000000000000000 --- a/lldb/lit/tools/lldb-mi/data/data-info-line.test +++ /dev/null @@ -1,38 +0,0 @@ -# XFAIL: system-netbsd -# -# RUN: %build %p/inputs/data-info-line.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -data-info-line command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --data-info-line *0x0 -# Test that -data-info-line fails when invalid address is specified. -# CHECK: ^error,msg="Command 'data-info-line'. Error: The LineEntry is absent or has an unknown format." - --data-info-line unknown_file:1 -# Test that -data-info-line fails when file is unknown. -# CHECK: ^error,msg="Command 'data-info-line'. Error: The LineEntry is absent or has an unknown format." - --data-info-line data-info-line.c:bad_line -# Test that -data-info-line fails when line has invalid format. -# CHECK: ^error,msg="Command 'data-info-line'. Error: The LineEntry is absent or has an unknown format." - --data-info-line data-info-line.c:0 -# Test that -data-info-line fails when invalid line is specified. -# CHECK: ^error,msg="Command 'data-info-line'. Error: The LineEntry is absent or has an unknown format." - --data-info-line data-info-line.c:2 -# CHECK: ^done,start="0x{{[0-9a-f]+}}",end="0x{{[0-9a-f]+}}",file="{{.*}}data-info-line.c",line="{{[0-9]+}}" diff --git a/lldb/lit/tools/lldb-mi/data/inputs/data-info-line.c b/lldb/lit/tools/lldb-mi/data/inputs/data-info-line.c deleted file mode 100644 index 61c3710bf203c6b..000000000000000 --- a/lldb/lit/tools/lldb-mi/data/inputs/data-info-line.c +++ /dev/null @@ -1,4 +0,0 @@ -int main(void) { - int x = 0; - return 12345 + x; -} diff --git a/lldb/lit/tools/lldb-mi/data/lit.local.cfg b/lldb/lit/tools/lldb-mi/data/lit.local.cfg deleted file mode 100644 index df9b335dd1310f7..000000000000000 --- a/lldb/lit/tools/lldb-mi/data/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.test'] diff --git a/lldb/lit/tools/lldb-mi/exec/exec-continue.test b/lldb/lit/tools/lldb-mi/exec/exec-continue.test deleted file mode 100644 index c27bc44484dfb04..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-continue.test +++ /dev/null @@ -1,22 +0,0 @@ -# XFAIL: system-netbsd -# -# RUN: %build %p/inputs/main.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-continue command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-continue -# CHECK: ^running diff --git a/lldb/lit/tools/lldb-mi/exec/exec-finish.test b/lldb/lit/tools/lldb-mi/exec/exec-finish.test deleted file mode 100644 index 19947f93897b1d4..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-finish.test +++ /dev/null @@ -1,33 +0,0 @@ -# RUN: %build %p/inputs/main.c -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-finish command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --break-insert dummyFunction -# CHECK: ^done,bkpt={number="2" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-finish --thread 0 -# Check that exec-finish can process the case of invalid thread ID. -# CHECK: ^error,msg="Command 'exec-finish'. Thread ID invalid" - --exec-finish --thread 1 -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-finish -# Check exec-finish in a selected thread. -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test b/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test deleted file mode 100644 index 20791257b41b497..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test +++ /dev/null @@ -1,22 +0,0 @@ -# XFAIL: system-netbsd -# -# RUN: %build %p/inputs/main.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-interrupt command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-interrupt -# CHECK: ^error,msg="Process is not running." diff --git a/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test b/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test deleted file mode 100644 index ca3c9e9b0053543..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test +++ /dev/null @@ -1,32 +0,0 @@ -# XFAIL: system-netbsd -# -# RUN: %build %p/inputs/main.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-next-instruction command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-next-instruction --thread 0 -# Check that exec-next-instruction can process the case of invalid thread ID. -# CHECK: ^error,msg="Command 'exec-next-instruction'. Thread ID invalid" - --exec-next-instruction --thread 1 -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" - --exec-next-instruction -# Check exec-next-instruction in a selected thread. -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-next.test b/lldb/lit/tools/lldb-mi/exec/exec-next.test deleted file mode 100644 index 0dd227463902110..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-next.test +++ /dev/null @@ -1,33 +0,0 @@ -# XFAIL: system-netbsd -# UNSUPPORTED: system-linux -# -# RUN: %build %p/inputs/main.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-next command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-next --thread 0 -# Check that exec-next can process the case of invalid thread ID. -# CHECK: ^error,msg="Command 'exec-next'. Thread ID invalid" - --exec-next --thread 1 -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" - --exec-next -# Check that exec-next can step over in a selected thread. -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-run-wrong-binary.test b/lldb/lit/tools/lldb-mi/exec/exec-run-wrong-binary.test deleted file mode 100644 index 98dc75f509cd340..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-run-wrong-binary.test +++ /dev/null @@ -1,6 +0,0 @@ -# RUN: %lldbmi < %s | FileCheck %s - -# Test that -exec-run command won't hang in case of wrong name of binary file. - --file-exec-and-symbols name.exe -# CHECK: ^error,msg="Command 'file-exec-and-symbols'. Target binary 'name.exe' is invalid. diff --git a/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test b/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test deleted file mode 100644 index 3301b3e10acd9bf..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test +++ /dev/null @@ -1,32 +0,0 @@ -# XFAIL: system-netbsd -# -# RUN: %build %p/inputs/main.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-step-instruction command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-step-instruction --thread 0 -# Check that exec-step-instruction can process the case of invalid thread ID. -# CHECK: ^error,msg="Command 'exec-step-instruction'. Thread ID invalid" - --exec-next-instruction --thread 1 -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" - --exec-step-instruction -# Check exec-step-instruction in a selected thread. -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-step.test b/lldb/lit/tools/lldb-mi/exec/exec-step.test deleted file mode 100644 index a14dd42f2b48b27..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/exec-step.test +++ /dev/null @@ -1,32 +0,0 @@ -# XFAIL: system-netbsd -# -# RUN: %build %p/inputs/main.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -exec-step command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - -settings set symbols.enable-external-lookup false -# CHECK: ^done - --break-insert main -# CHECK: ^done,bkpt={number="1" - --exec-run -# CHECK: ^running -# CHECK: *stopped,reason="breakpoint-hit" - --exec-step --thread 0 -# Check that exec-step can process the case of invalid thread ID. -# CHECK: ^error,msg="Command 'exec-step'. Thread ID invalid" - --exec-step --thread 1 -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" - --exec-step -# Check that exec-step can step-in in a selected thread. -# CHECK: ^running -# CHECK: *stopped,reason="end-stepping-range" diff --git a/lldb/lit/tools/lldb-mi/exec/inputs/main.c b/lldb/lit/tools/lldb-mi/exec/inputs/main.c deleted file mode 100644 index b9d8f9d16f4da8a..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/inputs/main.c +++ /dev/null @@ -1,9 +0,0 @@ -void dummyFunction() { - int a = 0; -} - -int main(void) { - int x = 0; - dummyFunction(); - return x; -} diff --git a/lldb/lit/tools/lldb-mi/exec/lit.local.cfg b/lldb/lit/tools/lldb-mi/exec/lit.local.cfg deleted file mode 100644 index df9b335dd1310f7..000000000000000 --- a/lldb/lit/tools/lldb-mi/exec/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.test'] diff --git a/lldb/lit/tools/lldb-mi/lit.local.cfg b/lldb/lit/tools/lldb-mi/lit.local.cfg deleted file mode 100644 index ff28e265b3f136c..000000000000000 --- a/lldb/lit/tools/lldb-mi/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not "lldb-mi" in config.available_features: - config.unsupported = True diff --git a/lldb/lit/tools/lldb-mi/symbol/inputs/list-lines-helper.c b/lldb/lit/tools/lldb-mi/symbol/inputs/list-lines-helper.c deleted file mode 100644 index 74e62764540643b..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/inputs/list-lines-helper.c +++ /dev/null @@ -1,3 +0,0 @@ -void HelpFunction(void) { - int x = 12345; -} diff --git a/lldb/lit/tools/lldb-mi/symbol/inputs/list-lines-helper.h b/lldb/lit/tools/lldb-mi/symbol/inputs/list-lines-helper.h deleted file mode 100644 index 05edab992a5f56a..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/inputs/list-lines-helper.h +++ /dev/null @@ -1 +0,0 @@ -void HelpFunction(void); diff --git a/lldb/lit/tools/lldb-mi/symbol/inputs/main.c b/lldb/lit/tools/lldb-mi/symbol/inputs/main.c deleted file mode 100644 index f21edf3230a5625..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/inputs/main.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "symbol-list-lines.h" - -int main(void) { - int x = GetZero(); - return 0; -} diff --git a/lldb/lit/tools/lldb-mi/symbol/inputs/symbol-list-lines.c b/lldb/lit/tools/lldb-mi/symbol/inputs/symbol-list-lines.c deleted file mode 100644 index 761f793548b6939..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/inputs/symbol-list-lines.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "list-lines-helper.h" - -int GetZero() { - HelpFunction(); - return 0; -} diff --git a/lldb/lit/tools/lldb-mi/symbol/inputs/symbol-list-lines.h b/lldb/lit/tools/lldb-mi/symbol/inputs/symbol-list-lines.h deleted file mode 100644 index 1b74ff621ecb86b..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/inputs/symbol-list-lines.h +++ /dev/null @@ -1 +0,0 @@ -int GetZero(); diff --git a/lldb/lit/tools/lldb-mi/symbol/lit.local.cfg b/lldb/lit/tools/lldb-mi/symbol/lit.local.cfg deleted file mode 100644 index df9b335dd1310f7..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.test'] diff --git a/lldb/lit/tools/lldb-mi/symbol/symbol-list-lines.test b/lldb/lit/tools/lldb-mi/symbol/symbol-list-lines.test deleted file mode 100644 index 792f283db1bb20e..000000000000000 --- a/lldb/lit/tools/lldb-mi/symbol/symbol-list-lines.test +++ /dev/null @@ -1,17 +0,0 @@ -# RUN: %build %p/inputs/main.c %p/inputs/symbol-list-lines.c %p/inputs/list-lines-helper.c --nodefaultlib -o %t -# RUN: %lldbmi %t < %s | FileCheck %s - -# Test lldb-mi -symbol-list-lines command. - -# Check that we have a valid target created via '%lldbmi %t'. -# CHECK: ^done - --symbol-list-lines invalid_file.c -# Check a case of invalid file name. -# CHECK: ^error,msg="File Handler. Invalid file name path" - --symbol-list-lines symbol-list-lines.c -# CHECK: ^done,lines=[{pc="0x{{[0-9A-Fa-f]+}}",line="3"},{pc="0x{{[0-9A-Fa-f]+}}",line="4"},{pc="0x{{[0-9A-Fa-f]+}}",line="5"}{{.*}}] - --symbol-list-lines list-lines-helper.c -# CHECK: ^done,lines=[{pc="0x{{[0-9A-Fa-f]+}}",line="1"},{pc="0x{{[0-9A-Fa-f]+}}",line="2"},{pc="0x{{[0-9A-Fa-f]+}}",line="3"}{{.*}}] diff --git a/lldb/lit/tools/lldb-mi/target/inputs/main.c b/lldb/lit/tools/lldb-mi/target/inputs/main.c deleted file mode 100644 index 8c74b3496f7c5cc..000000000000000 --- a/lldb/lit/tools/lldb-mi/target/inputs/main.c +++ /dev/null @@ -1,4 +0,0 @@ -int main(void) { - int x = 0; - return x; -} diff --git a/lldb/lit/tools/lldb-mi/target/inputs/target-select-so-path.py b/lldb/lit/tools/lldb-mi/target/inputs/target-select-so-path.py deleted file mode 100644 index 5eb07d84237c1dd..000000000000000 --- a/lldb/lit/tools/lldb-mi/target/inputs/target-select-so-path.py +++ /dev/null @@ -1,50 +0,0 @@ -import os -import sys -import subprocess -from threading import Timer - - -hostname = 'localhost' - -(r, w) = os.pipe() -kwargs = {} -if sys.version_info >= (3,2): - kwargs['pass_fds'] = [w] - -args = sys.argv -# Get debugserver, lldb-mi and FileCheck executables' paths with arguments. -debugserver = ' '.join([args[1], '--pipe', str(w), hostname + ':0']) -lldbmi = args[2] -test_file = args[3] -filecheck = 'FileCheck ' + test_file - -# Run debugserver, lldb-mi and FileCheck. -debugserver_proc = subprocess.Popen(debugserver.split(), **kwargs) -lldbmi_proc = subprocess.Popen(lldbmi, stdin=subprocess.PIPE, - stdout=subprocess.PIPE, shell=True) -filecheck_proc = subprocess.Popen(filecheck, stdin=subprocess.PIPE, - shell=True) - -timeout_sec = 30 -timer = Timer(timeout_sec, exit, [filecheck_proc.returncode]) -try: - timer.start() - - # Get a tcp port chosen by debugserver. - # The number quite big to get lldb-server's output and to not hang. - bytes_to_read = 10 - port_bytes = os.read(r, bytes_to_read) - port = str(port_bytes.decode('utf-8').strip('\x00')) - - with open(test_file, 'r') as f: - # Replace '$PORT' with a free port number and pass - # test's content to lldb-mi. - lldbmi_proc.stdin.write(f.read().replace('$PORT', port).encode('utf-8')) - out, err = lldbmi_proc.communicate() - filecheck_proc.stdin.write(out) - filecheck_proc.communicate() -finally: - timer.cancel() - -debugserver_proc.kill() -exit(filecheck_proc.returncode) diff --git a/lldb/lit/tools/lldb-mi/target/lit.local.cfg b/lldb/lit/tools/lldb-mi/target/lit.local.cfg deleted file mode 100644 index df9b335dd1310f7..000000000000000 --- a/lldb/lit/tools/lldb-mi/target/lit.local.cfg +++ /dev/null @@ -1 +0,0 @@ -config.suffixes = ['.test'] diff --git a/lldb/lit/tools/lldb-mi/target/target-select-so-path.test b/lldb/lit/tools/lldb-mi/target/target-select-so-path.test deleted file mode 100644 index 8b71be5436d9c92..000000000000000 --- a/lldb/lit/tools/lldb-mi/target/target-select-so-path.test +++ /dev/null @@ -1,25 +0,0 @@ -# UNSUPPORTED: system-windows, system-darwin -# -# RUN: %clang -o %t %p/inputs/main.c -g -# RUN: %python %p/inputs/target-select-so-path.py "%debugserver" "%lldbmi %t" %s - -# Test that -target-select command can hook up a path -# added by gdb-set solib-search-path. - -# Check that we have a valid target created via file-exec-and-symbols. -# CHECK: ^done - --interpreter-exec console "target modules search-paths list" -# CHECK ^done - --gdb-set solib-search-path /example/dir -# CHECK: ^done - --target-select remote localhost:$PORT -# CHECK: ^connected - --interpreter-exec console "target modules search-paths list" -# CHECK: ~"[0] \".\" -> \"/example/dir\"\n" -# CHECK-NEXT: ^done - --gdb-exit diff --git a/lldb/lit/tools/lldb-server/TestGdbserverPort.test b/lldb/lit/tools/lldb-server/TestGdbserverPort.test deleted file mode 100644 index 04facfec831cae8..000000000000000 --- a/lldb/lit/tools/lldb-server/TestGdbserverPort.test +++ /dev/null @@ -1,4 +0,0 @@ -# Windows does not build lldb-server. -# UNSUPPORTED: system-windows -# RUN: %platformserver --server --listen :1234 --min-gdbserver-port 1234 --max-gdbserver-port 1234 2>&1 | FileCheck %s -# CHECK: error: --min-gdbserver-port (1234) is not lower than --max-gdbserver-port (1234) diff --git a/lldb/lldb.xcodeproj/project.pbxproj b/lldb/lldb.xcodeproj/project.pbxproj deleted file mode 100644 index 4c7eaeb11e5d32d..000000000000000 --- a/lldb/lldb.xcodeproj/project.pbxproj +++ /dev/null @@ -1,11662 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXAggregateTarget section */ - 26CEF3A914FD58BF007286B2 /* desktop_no_xpc */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 26CEF3AD14FD58BF007286B2 /* Build configuration list for PBXAggregateTarget "desktop_no_xpc" */; - buildPhases = ( - AF90106415AB7D2900FF120D /* CopyFiles */, - ); - dependencies = ( - 26B391F11A6DCCBE00456239 /* PBXTargetDependency */, - 26CEF3B014FD591F007286B2 /* PBXTargetDependency */, - 2687EACD1508115900DD8C2E /* PBXTargetDependency */, - ); - name = desktop_no_xpc; - productName = snowleopard; - }; - 26CEF3B114FD592B007286B2 /* desktop */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 26CEF3B214FD592B007286B2 /* Build configuration list for PBXAggregateTarget "desktop" */; - buildPhases = ( - AF90106415AB7D2900FF120D /* CopyFiles */, - ); - dependencies = ( - 26CEF3BB14FD595B007286B2 /* PBXTargetDependency */, - 26B391EF1A6DCCAF00456239 /* PBXTargetDependency */, - 2687EACB1508115000DD8C2E /* PBXTargetDependency */, - ); - name = desktop; - productName = desktop; - }; - 26CEF3BC14FD596A007286B2 /* ios */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 26CEF3BD14FD596A007286B2 /* Build configuration list for PBXAggregateTarget "ios" */; - buildPhases = ( - AFF87C85150FF5CC000E1742 /* CopyFiles */, - AF3059151B4B390800E25622 /* Run Script - remove unneeded Resources and Swift dirs from iOS LLDB.framework bundle */, - ); - dependencies = ( - AFCA21D21D18E556004386B8 /* PBXTargetDependency */, - 26CEF3C214FD5973007286B2 /* PBXTargetDependency */, - 2687EACF1508116300DD8C2E /* PBXTargetDependency */, - ); - name = ios; - productName = ios; - }; - AFA9B71120606A13008E86C6 /* ios-mini */ = { - isa = PBXAggregateTarget; - buildConfigurationList = AFA9B71F20606A13008E86C6 /* Build configuration list for PBXAggregateTarget "ios-mini" */; - buildPhases = ( - AFA9B71820606A13008E86C6 /* CopyFiles */, - ); - dependencies = ( - AFA9B71220606A13008E86C6 /* PBXTargetDependency */, - ); - name = "ios-mini"; - productName = ios; - }; - DD8DC26B22026E2C00EB6F9E /* lldb-docs */ = { - isa = PBXAggregateTarget; - buildConfigurationList = DD8DC27022026E2C00EB6F9E /* Build configuration list for PBXAggregateTarget "lldb-docs" */; - buildPhases = ( - DD8DC27122026E4400EB6F9E /* ShellScript */, - ); - dependencies = ( - ); - name = "lldb-docs"; - productName = "lldb-docs"; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 268900E813353E6F00698AC0 /* ABI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497E7B9D1188F6690065CCA1 /* ABI.cpp */; }; - 26DB3E161379E7AD0080DC73 /* ABIMacOSX_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DB3E071379E7AD0080DC73 /* ABIMacOSX_arm.cpp */; }; - 26DB3E191379E7AD0080DC73 /* ABIMacOSX_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DB3E0B1379E7AD0080DC73 /* ABIMacOSX_arm64.cpp */; }; - 26DB3E1C1379E7AD0080DC73 /* ABIMacOSX_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DB3E0F1379E7AD0080DC73 /* ABIMacOSX_i386.cpp */; }; - AF20F7661AF18F8500751A6E /* ABISysV_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF20F7641AF18F8500751A6E /* ABISysV_arm.cpp */; }; - AF20F76A1AF18F9000751A6E /* ABISysV_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF20F7681AF18F9000751A6E /* ABISysV_arm64.cpp */; }; - 26BF51F31B3C754400016294 /* ABISysV_hexagon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BF51EA1B3C754400016294 /* ABISysV_hexagon.cpp */; }; - 26BF51F61B3C754400016294 /* ABISysV_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BF51EF1B3C754400016294 /* ABISysV_i386.cpp */; }; - 9694FA711B32AA64005EBB16 /* ABISysV_mips.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9694FA6F1B32AA64005EBB16 /* ABISysV_mips.cpp */; }; - 263641191B34AEE200145B2F /* ABISysV_mips64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263641151B34AEE200145B2F /* ABISysV_mips64.cpp */; }; - AF77E08F1A033C700096C0EA /* ABISysV_ppc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF77E08D1A033C700096C0EA /* ABISysV_ppc.cpp */; }; - AF77E0931A033C7F0096C0EA /* ABISysV_ppc64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF77E0911A033C7F0096C0EA /* ABISysV_ppc64.cpp */; }; - 267F684A1CC02DED0086832B /* ABISysV_s390x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267F68471CC02DED0086832B /* ABISysV_s390x.cpp */; }; - 267F684B1CC02DED0086832B /* ABISysV_s390x.h in Headers */ = {isa = PBXBuildFile; fileRef = 267F68481CC02DED0086832B /* ABISysV_s390x.h */; }; - 26DB3E1F1379E7AD0080DC73 /* ABISysV_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DB3E131379E7AD0080DC73 /* ABISysV_x86_64.cpp */; }; - AF352EDE22C17BD800D058B6 /* ABIWindows_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF352EDB22C17BD700D058B6 /* ABIWindows_x86_64.cpp */; }; - 2689006713353E0E00698AC0 /* ASTDumper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4906FD4012F2255300A2A77C /* ASTDumper.cpp */; }; - 2689006813353E0E00698AC0 /* ASTResultSynthesizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49A8A39F11D568A300AD3B68 /* ASTResultSynthesizer.cpp */; }; - 2689006913353E0E00698AC0 /* ASTStructExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491193501226386000578B7F /* ASTStructExtractor.cpp */; }; - 4C0B95802238342C0026C840 /* ASTUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0B957E2238342C0026C840 /* ASTUtils.cpp */; }; - 8CF02AEA19DCC02100B14BE0 /* ASanRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CF02AE519DCBF8400B14BE0 /* ASanRuntime.cpp */; }; - 257906641BD5AFD000178368 /* Acceptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 257906621BD5AFD000178368 /* Acceptor.cpp */; }; - 257906651BD5AFD000178368 /* Acceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 257906631BD5AFD000178368 /* Acceptor.h */; }; - 25EF23781AC09B3700908DF0 /* AdbClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25EF23751AC09AD800908DF0 /* AdbClient.cpp */; }; - 2689002A13353E0400698AC0 /* Address.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6910F1B85900F91463 /* Address.cpp */; }; - 2689002B13353E0400698AC0 /* AddressRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6A10F1B85900F91463 /* AddressRange.cpp */; }; - 2689002C13353E0400698AC0 /* AddressResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034011752C6B0086C050 /* AddressResolver.cpp */; }; - 2689002D13353E0400698AC0 /* AddressResolverFileLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034211752C720086C050 /* AddressResolverFileLine.cpp */; }; - 2689002E13353E0400698AC0 /* AddressResolverName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034411752C790086C050 /* AddressResolverName.cpp */; }; - 4C639ED521FA684900A7B957 /* AnsiTerminalTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC721FA684800A7B957 /* AnsiTerminalTest.cpp */; }; - 4CD44CFD20B37C440003557C /* AppleDWARFIndex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD44CFA20B37C440003557C /* AppleDWARFIndex.cpp */; }; - AF0E22F018A09FB20009B7D1 /* AppleGetItemInfoHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0E22EE18A09FB20009B7D1 /* AppleGetItemInfoHandler.cpp */; }; - AF1F7B07189C904B0087DB9C /* AppleGetPendingItemsHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF1F7B05189C904B0087DB9C /* AppleGetPendingItemsHandler.cpp */; }; - AF25AB26188F685C0030DEC3 /* AppleGetQueuesHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF25AB24188F685C0030DEC3 /* AppleGetQueuesHandler.cpp */; }; - AF45FDE518A1F3AC0007051C /* AppleGetThreadItemInfoHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF45FDE318A1F3AC0007051C /* AppleGetThreadItemInfoHandler.cpp */; }; - 94CD7D0919A3FBA300908B7C /* AppleObjCClassDescriptorV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD7D0819A3FBA300908B7C /* AppleObjCClassDescriptorV2.cpp */; }; - 49DA65031485C92A005FF180 /* AppleObjCDeclVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DA65021485C92A005FF180 /* AppleObjCDeclVendor.cpp */; }; - 4CCA645013B40B82003BDF98 /* AppleObjCRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA644213B40B82003BDF98 /* AppleObjCRuntime.cpp */; }; - 4CCA645213B40B82003BDF98 /* AppleObjCRuntimeV1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA644413B40B82003BDF98 /* AppleObjCRuntimeV1.cpp */; }; - 4CCA645413B40B82003BDF98 /* AppleObjCRuntimeV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA644613B40B82003BDF98 /* AppleObjCRuntimeV2.cpp */; }; - 4CCA645613B40B82003BDF98 /* AppleObjCTrampolineHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA644813B40B82003BDF98 /* AppleObjCTrampolineHandler.cpp */; }; - 94CD7D0C19A3FBCE00908B7C /* AppleObjCTypeEncodingParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD7D0B19A3FBCE00908B7C /* AppleObjCTypeEncodingParser.cpp */; }; - 4CCA645813B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA644A13B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.cpp */; }; - AF6CA6661FBBAF28005A0DC3 /* ArchSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF6CA6651FBBAF27005A0DC3 /* ArchSpec.cpp */; }; - AF6CA6681FBBAF37005A0DC3 /* ArchSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6CA6671FBBAF37005A0DC3 /* ArchSpec.h */; }; - 23E2E5251D90373D006F38BB /* ArchSpecTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E2E5161D903689006F38BB /* ArchSpecTest.cpp */; }; - AF2E02A31FA2CEAF00A86C34 /* ArchitectureArm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF2E02A11FA2CEAF00A86C34 /* ArchitectureArm.cpp */; }; - AF2E02A41FA2CEAF00A86C34 /* ArchitectureArm.h in Headers */ = {isa = PBXBuildFile; fileRef = AF2E02A21FA2CEAF00A86C34 /* ArchitectureArm.h */; }; - 2647B63221C4366300A81D15 /* ArchitectureMips.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2647B63021C4366300A81D15 /* ArchitectureMips.cpp */; }; - 2647B63121C4366300A81D15 /* ArchitectureMips.h in Headers */ = {isa = PBXBuildFile; fileRef = 2647B62F21C4366200A81D15 /* ArchitectureMips.h */; }; - 4C14CEFB2057258D00DEEF94 /* ArchitecturePPC64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C14CEF82057258D00DEEF94 /* ArchitecturePPC64.cpp */; }; - 2689007D13353E2200698AC0 /* Args.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6C10F1B85900F91463 /* Args.cpp */; }; - 23CB153C1D66DA9300EDDDE1 /* ArgsTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F93E1BDD33CE00BA9A93 /* ArgsTest.cpp */; }; - 6D99A3631BBC2F3200979793 /* ArmUnwindInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D99A3621BBC2F3200979793 /* ArmUnwindInfo.cpp */; }; - AF7BD81B22B04E20008E78D1 /* AuxVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF7BD81A22B04E20008E78D1 /* AuxVector.cpp */; }; - AFC2DCE91E6E2F2C00283714 /* Baton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC2DCE81E6E2F2C00283714 /* Baton.cpp */; }; - 268900D013353E6F00698AC0 /* Block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1310F1B8EC00F91463 /* Block.cpp */; }; - 49DEF1251CD7C6DF006A7C7D /* BlockPointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DEF11F1CD7BD90006A7C7D /* BlockPointer.cpp */; }; - 4CAEC6A821F26D15007C3DD5 /* BreakpadRecords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CAEC6A621F26D15007C3DD5 /* BreakpadRecords.cpp */; }; - 2689FFEF13353DB600698AC0 /* Breakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0A10F1B83100F91463 /* Breakpoint.cpp */; }; - 2660387E211CA98200329572 /* BreakpointBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660387D211CA98200329572 /* BreakpointBase.cpp */; }; - 2689FFF113353DB600698AC0 /* BreakpointID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0B10F1B83100F91463 /* BreakpointID.cpp */; }; - 2689FFF313353DB600698AC0 /* BreakpointIDList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0C10F1B83100F91463 /* BreakpointIDList.cpp */; }; - 23E2E5321D903832006F38BB /* BreakpointIDTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E2E52D1D90382B006F38BB /* BreakpointIDTest.cpp */; }; - 2689FFF513353DB600698AC0 /* BreakpointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0D10F1B83100F91463 /* BreakpointList.cpp */; }; - 2689FFF713353DB600698AC0 /* BreakpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0E10F1B83100F91463 /* BreakpointLocation.cpp */; }; - 2689FFF913353DB600698AC0 /* BreakpointLocationCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0F10F1B83100F91463 /* BreakpointLocationCollection.cpp */; }; - 2689FFFB13353DB600698AC0 /* BreakpointLocationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1010F1B83100F91463 /* BreakpointLocationList.cpp */; }; - 4CAA19E61F5A40040099E692 /* BreakpointName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D48281F509CCD005314B4 /* BreakpointName.cpp */; }; - 2689FFFD13353DB600698AC0 /* BreakpointOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1110F1B83100F91463 /* BreakpointOptions.cpp */; }; - AF352EE122C17C0D00D058B6 /* BreakpointPrecondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF352EE022C17C0C00D058B6 /* BreakpointPrecondition.cpp */; }; - 2689FFFF13353DB600698AC0 /* BreakpointResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1210F1B83100F91463 /* BreakpointResolver.cpp */; }; - 2689000113353DB600698AC0 /* BreakpointResolverAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5310FE555900271C65 /* BreakpointResolverAddress.cpp */; }; - 2689000313353DB600698AC0 /* BreakpointResolverFileLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5410FE555900271C65 /* BreakpointResolverFileLine.cpp */; }; - 4C3ADCD61810D88B00357218 /* BreakpointResolverFileRegex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CAA56141422D986001FFA01 /* BreakpointResolverFileRegex.cpp */; }; - 2689000513353DB600698AC0 /* BreakpointResolverName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5510FE555900271C65 /* BreakpointResolverName.cpp */; }; - 4CCF9F612143014D006CC7EA /* BreakpointResolverScripted.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCF9F5E2143012F006CC7EA /* BreakpointResolverScripted.cpp */; }; - 2689000713353DB600698AC0 /* BreakpointSite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1310F1B83100F91463 /* BreakpointSite.cpp */; }; - 2689000913353DB600698AC0 /* BreakpointSiteList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1410F1B83100F91463 /* BreakpointSiteList.cpp */; }; - 2647B63A21C436AC00A81D15 /* Broadcaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2647B63921C436AB00A81D15 /* Broadcaster.cpp */; }; - 2647B63621C4368300A81D15 /* Broadcaster.h in Headers */ = {isa = PBXBuildFile; fileRef = 2647B63521C4368300A81D15 /* Broadcaster.h */; }; - 23CB15431D66DA9300EDDDE1 /* BroadcasterTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23CB14E61D66CC0E00EDDDE1 /* BroadcasterTest.cpp */; }; - 949EEDAE1BA7671C008C63CF /* CF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EEDAC1BA76719008C63CF /* CF.cpp */; }; - 2689007613353E1A00698AC0 /* CFCBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EED10F1B8AD00F91463 /* CFCBundle.cpp */; }; - 2689007713353E1A00698AC0 /* CFCData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EEF10F1B8AD00F91463 /* CFCData.cpp */; }; - 2689007813353E1A00698AC0 /* CFCMutableArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF110F1B8AD00F91463 /* CFCMutableArray.cpp */; }; - 2689007913353E1A00698AC0 /* CFCMutableDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF310F1B8AD00F91463 /* CFCMutableDictionary.cpp */; }; - 2689007A13353E1A00698AC0 /* CFCMutableSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF510F1B8AD00F91463 /* CFCMutableSet.cpp */; }; - 2689007B13353E1A00698AC0 /* CFCString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF810F1B8AD00F91463 /* CFCString.cpp */; }; - 268900E913353E6F00698AC0 /* CPPLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB443BC1249920C00C13DC2 /* CPPLanguageRuntime.cpp */; }; - 94B6385D1B8FB178004FE1E4 /* CPlusPlusLanguage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B6385B1B8FB174004FE1E4 /* CPlusPlusLanguage.cpp */; }; - 23CB15341D66DA9300EDDDE1 /* CPlusPlusLanguageTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23CB14FA1D66CCF100EDDDE1 /* CPlusPlusLanguageTest.cpp */; }; - 49F811F31E931B2100F4E163 /* CPlusPlusNameParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49F811EF1E931B1500F4E163 /* CPlusPlusNameParser.cpp */; }; - 945261C81B9A14D300BF138D /* CXXFunctionPointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261C71B9A14D300BF138D /* CXXFunctionPointer.cpp */; }; - 268900D113353E6F00698AC0 /* ClangASTContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1410F1B8EC00F91463 /* ClangASTContext.cpp */; }; - 49D8FB3913B5598F00411094 /* ClangASTImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D8FB3513B558DE00411094 /* ClangASTImporter.cpp */; }; - 2689005E13353E0E00698AC0 /* ClangASTSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D7072811B5AD11001AD875 /* ClangASTSource.cpp */; }; - 2689006013353E0E00698AC0 /* ClangExpressionDeclMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */; }; - 2689006113353E0E00698AC0 /* ClangExpressionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */; }; - 4C61465E223059B000D686F9 /* ClangExpressionSourceCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C61465C223059B000D686F9 /* ClangExpressionSourceCode.cpp */; }; - 4984BA131B978C55008658D4 /* ClangExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4984BA0E1B978C3E008658D4 /* ClangExpressionVariable.cpp */; }; - 268900D313353E6F00698AC0 /* ClangExternalASTSourceCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E69030129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp */; }; - 4966DCC4148978A10028481B /* ClangExternalASTSourceCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4966DCC3148978A10028481B /* ClangExternalASTSourceCommon.cpp */; }; - 2689005F13353E0E00698AC0 /* ClangFunctionCaller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DA118FB96F00E575D0 /* ClangFunctionCaller.cpp */; }; - 228B1B672113340200E61C70 /* ClangHighlighter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58A080AB2112AABB00D5580F /* ClangHighlighter.cpp */; }; - 4CD44D5820C603CB0003557C /* ClangHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD44D5620C603A80003557C /* ClangHost.cpp */; }; - 4959511F1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4959511E1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp */; }; - 2689006313353E0E00698AC0 /* ClangPersistentVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D4FE871210B61C00CDB854 /* ClangPersistentVariables.cpp */; }; - 2689006413353E0E00698AC0 /* ClangUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */; }; - 304B2E461CAAA57B007829FE /* ClangUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3032B1B61CAAA3D1004BE1AB /* ClangUtil.cpp */; }; - 30B38A001CAAA6D7009524E3 /* ClangUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 3032B1B91CAAA400004BE1AB /* ClangUtil.h */; }; - 2689006513353E0E00698AC0 /* ClangUtilityFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497C86BD122823D800B54702 /* ClangUtilityFunction.cpp */; }; - 949EEDA31BA76577008C63CF /* Cocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EEDA11BA76571008C63CF /* Cocoa.cpp */; }; - 5A6424962204D05000C3D9DB /* CodeViewRegisterMapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A6424922204D04F00C3D9DB /* CodeViewRegisterMapping.cpp */; }; - 5A6424982204D05000C3D9DB /* CodeViewRegisterMapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A6424942204D05000C3D9DB /* CodeViewRegisterMapping.h */; }; - 9441816E1C8F5EC900E5A8D9 /* CommandAlias.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9441816D1C8F5EC900E5A8D9 /* CommandAlias.cpp */; }; - 2689007F13353E2200698AC0 /* CommandCompletions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C09CB74116BD98B00C7A725 /* CommandCompletions.cpp */; }; - 94BA8B70176F97CE005A91B5 /* CommandHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94BA8B6F176F97CE005A91B5 /* CommandHistory.cpp */; }; - 2689008013353E2200698AC0 /* CommandInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */; }; - 2689008113353E2200698AC0 /* CommandObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */; }; - 2689001213353DDE00698AC0 /* CommandObjectApropos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CA9637911B6E99A00780E28 /* CommandObjectApropos.cpp */; }; - 2689001413353DDE00698AC0 /* CommandObjectBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E2D10F1B84700F91463 /* CommandObjectBreakpoint.cpp */; }; - 2689001513353DDE00698AC0 /* CommandObjectBreakpointCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A42976211861AA600FE05CD /* CommandObjectBreakpointCommand.cpp */; }; - 6D86CEA01B440F8500A7FBFA /* CommandObjectBugreport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D86CE9E1B440F6B00A7FBFA /* CommandObjectBugreport.cpp */; }; - 2689001613353DDE00698AC0 /* CommandObjectCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C5DBBC611E3FEC60035160F /* CommandObjectCommands.cpp */; }; - 2689001713353DDE00698AC0 /* CommandObjectDisassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3010F1B84700F91463 /* CommandObjectDisassemble.cpp */; }; - 2689001813353DDE00698AC0 /* CommandObjectExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3110F1B84700F91463 /* CommandObjectExpression.cpp */; }; - 2689001A13353DDE00698AC0 /* CommandObjectFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2672D8461189055500FF4019 /* CommandObjectFrame.cpp */; }; - 26CEB5F218762056008F575A /* CommandObjectGUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26CEB5F018762056008F575A /* CommandObjectGUI.cpp */; }; - 2689001B13353DDE00698AC0 /* CommandObjectHelp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3310F1B84700F91463 /* CommandObjectHelp.cpp */; }; - AFC234091AF85CE100CDE8B6 /* CommandObjectLanguage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC234061AF85CE000CDE8B6 /* CommandObjectLanguage.cpp */; }; - 2689001D13353DDE00698AC0 /* CommandObjectLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264AD83711095BA600E0B039 /* CommandObjectLog.cpp */; }; - 2689001E13353DDE00698AC0 /* CommandObjectMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3610F1B84700F91463 /* CommandObjectMemory.cpp */; }; - 2689008313353E2200698AC0 /* CommandObjectMultiword.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */; }; - 2689001F13353DDE00698AC0 /* CommandObjectPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */; }; - 947A1D641616476B0017C8D1 /* CommandObjectPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 947A1D621616476A0017C8D1 /* CommandObjectPlugin.cpp */; }; - 2689002013353DDE00698AC0 /* CommandObjectProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3810F1B84700F91463 /* CommandObjectProcess.cpp */; }; - 2689002113353DDE00698AC0 /* CommandObjectQuit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3910F1B84700F91463 /* CommandObjectQuit.cpp */; }; - 2689008413353E2200698AC0 /* CommandObjectRegexCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */; }; - 2689002213353DDE00698AC0 /* CommandObjectRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3B10F1B84700F91463 /* CommandObjectRegister.cpp */; }; - AFCB1D5C219CD5A800730AD5 /* CommandObjectReproducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFCB1D5A219CD5A700730AD5 /* CommandObjectReproducer.cpp */; }; - 2689002313353DDE00698AC0 /* CommandObjectScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3D10F1B84700F91463 /* CommandObjectScript.cpp */; }; - 2689002413353DDE00698AC0 /* CommandObjectSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4010F1B84700F91463 /* CommandObjectSettings.cpp */; }; - 2689002513353DDE00698AC0 /* CommandObjectSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4210F1B84700F91463 /* CommandObjectSource.cpp */; }; - AFB6B9ED2065BBE90047661E /* CommandObjectStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8894782065AE5C002E5C59 /* CommandObjectStats.cpp */; }; - 2689002713353DDE00698AC0 /* CommandObjectTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 269416AD119A024800FF2715 /* CommandObjectTarget.cpp */; }; - 2689002813353DDE00698AC0 /* CommandObjectThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4610F1B84700F91463 /* CommandObjectThread.cpp */; }; - 9463D4CD13B1798800C230D4 /* CommandObjectType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9463D4CC13B1798800C230D4 /* CommandObjectType.cpp */; }; - 2689002913353DDE00698AC0 /* CommandObjectVersion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B296983412C2FB2B002D92C3 /* CommandObjectVersion.cpp */; }; - B207C4931429607D00F36E4E /* CommandObjectWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B207C4921429607D00F36E4E /* CommandObjectWatchpoint.cpp */; }; - B2B7CCEB15D1BD6700EEFB57 /* CommandObjectWatchpointCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2B7CCEA15D1BD6600EEFB57 /* CommandObjectWatchpointCommand.cpp */; }; - 23DDF226196C3EE600BB8417 /* CommandOptionValidators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23DDF224196C3EE600BB8417 /* CommandOptionValidators.cpp */; }; - 2689008513353E2200698AC0 /* CommandReturnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0A10F1B8DD00F91463 /* CommandReturnObject.cpp */; }; - 2689003213353E0400698AC0 /* Communication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6E10F1B85900F91463 /* Communication.cpp */; }; - 2642FBAE13D003B400ED6808 /* CommunicationKDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2642FBA813D003B400ED6808 /* CommunicationKDP.cpp */; }; - 964463EC1A330C0500154ED8 /* CompactUnwindInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 964463EB1A330C0500154ED8 /* CompactUnwindInfo.cpp */; }; - 268900D513353E6F00698AC0 /* CompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1510F1B8EC00F91463 /* CompileUnit.cpp */; }; - AFD966B8217140B6006714AC /* CompileUnitIndex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFD966B4217140B5006714AC /* CompileUnitIndex.cpp */; }; - 265192C61BA8E905002F08F6 /* CompilerDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265192C51BA8E905002F08F6 /* CompilerDecl.cpp */; }; - 2657AFB71B86910100958979 /* CompilerDeclContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2657AFB61B86910100958979 /* CompilerDeclContext.cpp */; }; - 268900D213353E6F00698AC0 /* CompilerType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E45FAD11F660FE008F7B28 /* CompilerType.cpp */; }; - 58EC744120EAEB5200695209 /* CompletionRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58EC744020EAEB5200695209 /* CompletionRequest.cpp */; }; - 4C639ED721FA684900A7B957 /* CompletionRequestTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC921FA684800A7B957 /* CompletionRequestTest.cpp */; }; - 2689003313353E0400698AC0 /* Connection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6F10F1B85900F91463 /* Connection.cpp */; }; - AFDFDFD119E34D3400EAE509 /* ConnectionFileDescriptorPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFDFDFD019E34D3400EAE509 /* ConnectionFileDescriptorPosix.cpp */; }; - 26764C971E48F482008D3573 /* ConstString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26764C961E48F482008D3573 /* ConstString.cpp */; }; - 9A3D43D61F3151C400EB767C /* ConstStringTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43C81F3150D200EB767C /* ConstStringTest.cpp */; }; - 2668022F115FD19D008E1FE4 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C39010F3FA26009D5894 /* CoreFoundation.framework */; }; - 949EEDA01BA74B6D008C63CF /* CoreMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EED9E1BA74B64008C63CF /* CoreMedia.cpp */; }; - DDB5829C2278C8D700491B41 /* CxxModuleHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDB5829B2278C8D600491B41 /* CxxModuleHandler.cpp */; }; - 945261BF1B9A11FC00BF138D /* CxxStringTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261B31B9A11E800BF138D /* CxxStringTypes.cpp */; }; - 6D95DC001B9DC057000E318A /* DIERef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFD1B9DC057000E318A /* DIERef.cpp */; }; - 269DDD4A1B8FD1C300D0DBD8 /* DWARFASTParserClang.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 269DDD481B8FD1C300D0DBD8 /* DWARFASTParserClang.cpp */; }; - 268900B713353E5F00698AC0 /* DWARFAbbreviationDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B310F57C5600BB2B04 /* DWARFAbbreviationDeclaration.cpp */; }; - 266E829D1B8E542C008FCA06 /* DWARFAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266E829C1B8E542C008FCA06 /* DWARFAttribute.cpp */; }; - 4CD44D4220B777850003557C /* DWARFBaseDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD44D4020B777850003557C /* DWARFBaseDIE.cpp */; }; - 268900D713353E6F00698AC0 /* DWARFCallFrameInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1710F1B8EC00F91463 /* DWARFCallFrameInfo.cpp */; }; - 268900B813353E5F00698AC0 /* DWARFCompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B710F57C5600BB2B04 /* DWARFCompileUnit.cpp */; }; - AF5B97DB2242FC2F002D3F2C /* DWARFContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF5B97D92242FC27002D3F2C /* DWARFContext.cpp */; }; - 266E82971B8CE3AC008FCA06 /* DWARFDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266E82961B8CE3AC008FCA06 /* DWARFDIE.cpp */; }; - 26AB92121819D74600E63F3E /* DWARFDataExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26AB92101819D74600E63F3E /* DWARFDataExtractor.cpp */; }; - 268900B913353E5F00698AC0 /* DWARFDebugAbbrev.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B910F57C5600BB2B04 /* DWARFDebugAbbrev.cpp */; }; - 268900BB13353E5F00698AC0 /* DWARFDebugArangeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BD10F57C5600BB2B04 /* DWARFDebugArangeSet.cpp */; }; - 268900BA13353E5F00698AC0 /* DWARFDebugAranges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BB10F57C5600BB2B04 /* DWARFDebugAranges.cpp */; }; - 268900BC13353E5F00698AC0 /* DWARFDebugInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BF10F57C5600BB2B04 /* DWARFDebugInfo.cpp */; }; - 268900BD13353E5F00698AC0 /* DWARFDebugInfoEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C110F57C5600BB2B04 /* DWARFDebugInfoEntry.cpp */; }; - 268900BE13353E5F00698AC0 /* DWARFDebugLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C310F57C5600BB2B04 /* DWARFDebugLine.cpp */; }; - 23D4007D1C2101F2000C3885 /* DWARFDebugMacro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E77CD61C20F29F007192AD /* DWARFDebugMacro.cpp */; }; - 268900C313353E5F00698AC0 /* DWARFDebugRanges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CD10F57C5600BB2B04 /* DWARFDebugRanges.cpp */; }; - 26B1EFAE154638AF00E2DAC7 /* DWARFDeclContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B1EFAC154638AF00E2DAC7 /* DWARFDeclContext.cpp */; }; - 268900C413353E5F00698AC0 /* DWARFDefines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CF10F57C5600BB2B04 /* DWARFDefines.cpp */; }; - 2689006613353E0E00698AC0 /* DWARFExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED810F1B86700F91463 /* DWARFExpression.cpp */; }; - 268900C613353E5F00698AC0 /* DWARFFormValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D310F57C5600BB2B04 /* DWARFFormValue.cpp */; }; - 4CD44CFB20B37C440003557C /* DWARFIndex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD44CF820B37C440003557C /* DWARFIndex.cpp */; }; - 4C38996421B9AECD002BAEF4 /* DWARFLocationExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C38996221B9AECC002BAEF4 /* DWARFLocationExpression.cpp */; }; - 4C645D0822961B3C00D3C034 /* DWARFTypeUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C645D022295D3B500D3C034 /* DWARFTypeUnit.cpp */; }; - AFE228832060699D0042D0C8 /* DWARFUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F2AAA5920601BE000A422D8 /* DWARFUnit.cpp */; }; - 26FFC19B14FC072100087D58 /* DYLDRendezvous.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FFC19514FC072100087D58 /* DYLDRendezvous.cpp */; }; - 49CA96FC1E6AACC900C03FEE /* DataBufferHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CA96E61E6AAC6600C03FEE /* DataBufferHeap.cpp */; }; - 49CA96FD1E6AACC900C03FEE /* DataBufferLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CA96E71E6AAC6600C03FEE /* DataBufferLLVM.cpp */; }; - 49CA96FE1E6AACC900C03FEE /* DataEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CA96E81E6AAC6600C03FEE /* DataEncoder.cpp */; }; - 49CA96FF1E6AACC900C03FEE /* DataExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CA96E91E6AAC6600C03FEE /* DataExtractor.cpp */; }; - AFA1B62C219E0ED900A8AB7E /* DataExtractorTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFA1B62B219E0ED900A8AB7E /* DataExtractorTest.cpp */; }; - 94CB255C16B069770059775D /* DataVisualization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255816B069770059775D /* DataVisualization.cpp */; }; - 23D4007E1C210201000C3885 /* DebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E77CDB1C20F2F2007192AD /* DebugMacros.cpp */; }; - AF116BEF20CF234B0071093F /* DebugNamesDWARFIndex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF116BED20CF234B0071093F /* DebugNamesDWARFIndex.cpp */; }; - 2689003913353E0400698AC0 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263664921140A4930075843B /* Debugger.cpp */; }; - 268900D613353E6F00698AC0 /* Declaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1610F1B8EC00F91463 /* Declaration.cpp */; }; - 49E4F66B1C9CAD16008487EA /* DiagnosticManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E4F6681C9CAD12008487EA /* DiagnosticManager.cpp */; }; - 2689003A13353E0400698AC0 /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7610F1B85900F91463 /* Disassembler.cpp */; }; - B299580B14F2FA1400050A04 /* DisassemblerLLVMC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B299580A14F2FA1400050A04 /* DisassemblerLLVMC.cpp */; }; - 2579065F1BD0488D00178368 /* DomainSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2579065E1BD0488D00178368 /* DomainSocket.cpp */; }; - 26F5C27710F3D9E4009D5894 /* Driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F5C27310F3D9E4009D5894 /* Driver.cpp */; }; - 4C4EB7811E6A4DCC002035C0 /* DumpDataExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C4EB77F1E6A4DB8002035C0 /* DumpDataExtractor.cpp */; }; - AFA585D02107EB7400D7689A /* DumpRegisterValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFA585CF2107EB7300D7689A /* DumpRegisterValue.cpp */; }; - 9447DE431BD5963300E67212 /* DumpValueObjectOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9447DE421BD5963300E67212 /* DumpValueObjectOptions.cpp */; }; - 268900EA13353E6F00698AC0 /* DynamicLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7710F1B85900F91463 /* DynamicLoader.cpp */; }; - AF27AD551D3603EA00CF2833 /* DynamicLoaderDarwin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF27AD531D3603EA00CF2833 /* DynamicLoaderDarwin.cpp */; }; - AF27AD561D3603EA00CF2833 /* DynamicLoaderDarwin.h in Headers */ = {isa = PBXBuildFile; fileRef = AF27AD541D3603EA00CF2833 /* DynamicLoaderDarwin.h */; }; - 26274FA714030F79006BA130 /* DynamicLoaderDarwinKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26274FA514030F79006BA130 /* DynamicLoaderDarwinKernel.cpp */; }; - 2666ADC61B3CB675001FAFD3 /* DynamicLoaderHexagonDYLD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2666ADC11B3CB675001FAFD3 /* DynamicLoaderHexagonDYLD.cpp */; }; - AF2907BF1D3F082400E10654 /* DynamicLoaderMacOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF2907BD1D3F082400E10654 /* DynamicLoaderMacOS.cpp */; }; - 2689008D13353E4200698AC0 /* DynamicLoaderMacOSXDYLD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C897A10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.cpp */; }; - 26FFC19D14FC072100087D58 /* DynamicLoaderPOSIXDYLD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FFC19714FC072100087D58 /* DynamicLoaderPOSIXDYLD.cpp */; }; - 2689008E13353E4200698AC0 /* DynamicLoaderStatic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */; }; - 26F006561B4DD86700B872E5 /* DynamicLoaderWindowsDYLD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F006541B4DD86700B872E5 /* DynamicLoaderWindowsDYLD.cpp */; }; - 26954EBE1401EE8B00294D09 /* DynamicRegisterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26954EBC1401EE8B00294D09 /* DynamicRegisterInfo.cpp */; }; - 2689009813353E4200698AC0 /* ELFHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D27C9D11ED3A4E0024D721 /* ELFHeader.cpp */; }; - 26CFDCA3186163A4000E63E5 /* Editline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26CFDCA2186163A4000E63E5 /* Editline.cpp */; }; - 23CB15471D66DA9300EDDDE1 /* EditlineTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2326CF511BDD693B00A5CEAC /* EditlineTest.cpp */; }; - 2689003B13353E0400698AC0 /* EmulateInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D9FDC812F784FD0003F2EE /* EmulateInstruction.cpp */; }; - 9A22A161135E30370024DDC3 /* EmulateInstructionARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A22A15D135E30370024DDC3 /* EmulateInstructionARM.cpp */; }; - 264A12FC1372522000875C42 /* EmulateInstructionARM64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264A12FA1372522000875C42 /* EmulateInstructionARM64.cpp */; }; - E778E9A21B062D1700247609 /* EmulateInstructionMIPS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E778E99F1B062D1700247609 /* EmulateInstructionMIPS.cpp */; }; - 94A5B3971AB9FE8D00A5EE7F /* EmulateInstructionMIPS64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94A5B3951AB9FE8300A5EE7F /* EmulateInstructionMIPS64.cpp */; }; - AFDBC36E204663AF00B9C8F2 /* EmulateInstructionPPC64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFDBC36C204663AF00B9C8F2 /* EmulateInstructionPPC64.cpp */; }; - 9A22A163135E30370024DDC3 /* EmulationStateARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A22A15F135E30370024DDC3 /* EmulationStateARM.cpp */; }; - 6B74D89B200696BB0074051B /* Environment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 22DC561920064C9600A7E9E8 /* Environment.cpp */; }; - 4C639ECB21FA684900A7B957 /* EnvironmentTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EBD21FA684600A7B957 /* EnvironmentTest.cpp */; }; - 2647B63C21C436B400A81D15 /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2647B63B21C436B400A81D15 /* Event.cpp */; }; - 2647B63421C4367A00A81D15 /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = 2647B63321C4367A00A81D15 /* Event.h */; }; - 4C639ED321FA684900A7B957 /* EventTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC521FA684800A7B957 /* EventTest.cpp */; }; - 2660387A211CA90F00329572 /* ExceptionBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26603874211CA90E00329572 /* ExceptionBreakpoint.cpp */; }; - 268900EB13353E6F00698AC0 /* ExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3510F1B90C00F91463 /* ExecutionContext.cpp */; }; - 4C88BC2A1BA3722B00AA0964 /* Expression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C88BC291BA3722B00AA0964 /* Expression.cpp */; }; - 4984BA161B979973008658D4 /* ExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4984BA151B979973008658D4 /* ExpressionVariable.cpp */; }; - 4984BA181B979C08008658D4 /* ExpressionVariable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4984BA171B979C08008658D4 /* ExpressionVariable.h */; }; - 2689006E13353E1A00698AC0 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C6EA213011581005E16B0 /* File.cpp */; }; - 3FDFDDBD199C3A06009756A7 /* FileAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFDDBC199C3A06009756A7 /* FileAction.cpp */; }; - 3FDFDDBF199D345E009756A7 /* FileCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFDDBE199D345E009756A7 /* FileCache.cpp */; }; - DD8F277F22011CD8004ED75B /* FileCollector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD8F277D22011CC9004ED75B /* FileCollector.cpp */; }; - DD8F278222011D15004ED75B /* FileCollectorTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD8F278022011D0F004ED75B /* FileCollectorTest.cpp */; }; - 26BD407F135D2AE000237D80 /* FileLineResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BD407E135D2ADF00237D80 /* FileLineResolver.cpp */; }; - 2689006F13353E1A00698AC0 /* FileSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FA43171301048600E71120 /* FileSpec.cpp */; }; - 2689003E13353E0400698AC0 /* FileSpecList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7B10F1B85900F91463 /* FileSpecList.cpp */; }; - 23CB15361D66DA9300EDDDE1 /* FileSpecTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23CB14FD1D66CD2400EDDDE1 /* FileSpecTest.cpp */; }; - 250D6AE31A9679440049CC70 /* FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 250D6AE11A9679270049CC70 /* FileSystem.cpp */; }; - 3FDFDDC6199D37ED009756A7 /* FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFDDC5199D37ED009756A7 /* FileSystem.cpp */; }; - 9A2057381F3B8E7E00F6C293 /* FileSystemTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A20572E1F3B8E7600F6C293 /* FileSystemTest.cpp */; }; - 4C639ED621FA684900A7B957 /* FlagsTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC821FA684800A7B957 /* FlagsTest.cpp */; }; - 94CB257416B1D3880059775D /* FormatCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB257316B1D3870059775D /* FormatCache.cpp */; }; - 94CB255D16B069770059775D /* FormatClasses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255916B069770059775D /* FormatClasses.cpp */; }; - 263FDE601A79A01500E68013 /* FormatEntity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263FDE5F1A79A01500E68013 /* FormatEntity.cpp */; }; - 94CB255E16B069770059775D /* FormatManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255A16B069770059775D /* FormatManager.cpp */; }; - 94D0858C1B9675B8000D24BD /* FormattersHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94D0858B1B9675B8000D24BD /* FormattersHelpers.cpp */; }; - AF23B4DB19009C66003E2A58 /* FreeBSDSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF23B4D919009C66003E2A58 /* FreeBSDSignals.cpp */; }; - 268900D913353E6F00698AC0 /* FuncUnwinders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABB81235DE1600F93A47 /* FuncUnwinders.cpp */; }; - 268900D813353E6F00698AC0 /* Function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1810F1B8EC00F91463 /* Function.cpp */; }; - 2660387C211CA90F00329572 /* FunctionBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26603877211CA90E00329572 /* FunctionBreakpoint.cpp */; }; - 4C2479BD1BA39295009C9A7B /* FunctionCaller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0083321B9A5DE200D5CF24 /* FunctionCaller.cpp */; }; - 2374D7531D4BB2FF005C9575 /* GDBRemoteClientBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2374D74E1D4BB299005C9575 /* GDBRemoteClientBase.cpp */; }; - 23CB153A1D66DA9300EDDDE1 /* GDBRemoteClientBaseTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2370A37D1D66C587000E7BE6 /* GDBRemoteClientBaseTest.cpp */; }; - 2689009D13353E4200698AC0 /* GDBRemoteCommunication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5B1315B29C001D6D71 /* GDBRemoteCommunication.cpp */; }; - 26744EF11338317700EF765A /* GDBRemoteCommunicationClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26744EED1338317700EF765A /* GDBRemoteCommunicationClient.cpp */; }; - 23CB153D1D66DA9300EDDDE1 /* GDBRemoteCommunicationClientTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2370A37E1D66C587000E7BE6 /* GDBRemoteCommunicationClientTest.cpp */; }; - AF8AD945219CD45800614785 /* GDBRemoteCommunicationHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF8AD943219CD45700614785 /* GDBRemoteCommunicationHistory.cpp */; }; - AFCB1D59219CD4FD00730AD5 /* GDBRemoteCommunicationReplayServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFCB1D57219CD4FD00730AD5 /* GDBRemoteCommunicationReplayServer.cpp */; }; - 26744EF31338317700EF765A /* GDBRemoteCommunicationServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26744EEF1338317700EF765A /* GDBRemoteCommunicationServer.cpp */; }; - 6D55B2901A8A806200A70529 /* GDBRemoteCommunicationServerCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D55B28D1A8A806200A70529 /* GDBRemoteCommunicationServerCommon.cpp */; }; - 6D55B2911A8A806200A70529 /* GDBRemoteCommunicationServerLLGS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D55B28E1A8A806200A70529 /* GDBRemoteCommunicationServerLLGS.cpp */; }; - 6D55B2921A8A806200A70529 /* GDBRemoteCommunicationServerPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D55B28F1A8A806200A70529 /* GDBRemoteCommunicationServerPlatform.cpp */; }; - 2689009E13353E4200698AC0 /* GDBRemoteRegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5D1315B29C001D6D71 /* GDBRemoteRegisterContext.cpp */; }; - E7E94ABC1B54961F00D0AE30 /* GDBRemoteSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E73A15A41B548EC500786197 /* GDBRemoteSignals.cpp */; }; - 23CB15461D66DA9300EDDDE1 /* GDBRemoteTestUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2370A37F1D66C587000E7BE6 /* GDBRemoteTestUtils.cpp */; }; - 6D95DC011B9DC057000E318A /* HashedNameToDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFE1B9DC057000E318A /* HashedNameToDIE.cpp */; }; - 2666ADC81B3CB675001FAFD3 /* HexagonDYLDRendezvous.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2666ADC31B3CB675001FAFD3 /* HexagonDYLDRendezvous.cpp */; }; - 58A080B42112AB3800D5580F /* Highlighter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58A080A92112AA9400D5580F /* Highlighter.cpp */; }; - 58A080B32112AB2900D5580F /* HighlighterTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58A080B12112AB2200D5580F /* HighlighterTest.cpp */; }; - AF1729D6182C907200E0AB97 /* HistoryThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF1729D4182C907200E0AB97 /* HistoryThread.cpp */; }; - AF1729D7182C907200E0AB97 /* HistoryUnwind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF1729D5182C907200E0AB97 /* HistoryUnwind.cpp */; }; - 2689007113353E1A00698AC0 /* Host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1C1236C5D400C660B5 /* Host.cpp */; }; - AFF81FB020D1CC400010F95E /* Host.mm in Sources */ = {isa = PBXBuildFile; fileRef = AFF81FAD20D1CC400010F95E /* Host.mm */; }; - 3FDFE53519A29327009756A7 /* HostInfoBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFE53419A29327009756A7 /* HostInfoBase.cpp */; }; - AFF81FAE20D1CC400010F95E /* HostInfoMacOSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = AFF81FAB20D1CC400010F95E /* HostInfoMacOSX.mm */; }; - 3FDFE53119A292F0009756A7 /* HostInfoPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFE53019A292F0009756A7 /* HostInfoPosix.cpp */; }; - 3FDFED2719BA6D96009756A7 /* HostNativeThreadBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFED2419BA6D96009756A7 /* HostNativeThreadBase.cpp */; }; - 3FDFED2D19C257A0009756A7 /* HostProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFED2C19C257A0009756A7 /* HostProcess.cpp */; }; - 3FDFE56C19AF9C44009756A7 /* HostProcessPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFE56A19AF9C44009756A7 /* HostProcessPosix.cpp */; }; - 9A2057391F3B8E7E00F6C293 /* HostTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A20572F1F3B8E7600F6C293 /* HostTest.cpp */; }; - 3FDFED2819BA6D96009756A7 /* HostThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFED2519BA6D96009756A7 /* HostThread.cpp */; }; - AFF81FAF20D1CC400010F95E /* HostThreadMacOSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = AFF81FAC20D1CC400010F95E /* HostThreadMacOSX.mm */; }; - 3FDFE56D19AF9C44009756A7 /* HostThreadPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFE56B19AF9C44009756A7 /* HostThreadPosix.cpp */; }; - 260A63191861009E00FECF8E /* IOHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260A63181861009E00FECF8E /* IOHandler.cpp */; }; - 260A63171861008E00FECF8E /* IOHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 260A63161861008E00FECF8E /* IOHandler.h */; }; - 236124A41986B4E2004EFC37 /* IOObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 236124A21986B4E2004EFC37 /* IOObject.cpp */; }; - 2689006A13353E0E00698AC0 /* IRDynamicChecks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */; }; - 2689006D13353E0E00698AC0 /* IRExecutionUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DB118FB96F00E575D0 /* IRExecutionUnit.cpp */; }; - 2689006B13353E0E00698AC0 /* IRForTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49307AAD11DEA4D90081F992 /* IRForTarget.cpp */; }; - 49A71FE7141FFA5C00D59478 /* IRInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 496B01581406DE8900F830D5 /* IRInterpreter.cpp */; }; - 49DCF6FE170E6B4A0092F75E /* IRMemoryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DCF6FD170E6B4A0092F75E /* IRMemoryMap.cpp */; }; - B28058A1139988B0002D96D0 /* InferiorCallPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B28058A0139988B0002D96D0 /* InferiorCallPOSIX.cpp */; }; - 8CF02AE919DCC01900B14BE0 /* InstrumentationRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CF02ADF19DCBF3B00B14BE0 /* InstrumentationRuntime.cpp */; }; - 8CF02AEF19DD16B100B14BE0 /* InstrumentationRuntimeStopInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CF02AED19DD15CF00B14BE0 /* InstrumentationRuntimeStopInfo.cpp */; }; - 4CCA644D13B40B82003BDF98 /* ItaniumABILanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA643D13B40B82003BDF98 /* ItaniumABILanguageRuntime.cpp */; }; - 26BC179918C7F2B300D2196D /* JITLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC179718C7F2B300D2196D /* JITLoader.cpp */; }; - AF2BCA6C18C7EFDE005B4526 /* JITLoaderGDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF2BCA6918C7EFDE005B4526 /* JITLoaderGDB.cpp */; }; - 26BC179A18C7F2B300D2196D /* JITLoaderList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC179818C7F2B300D2196D /* JITLoaderList.cpp */; }; - 942829561A89614C00521B30 /* JSON.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 942829551A89614C00521B30 /* JSON.cpp */; }; - 8C3BD9A01EF5D1FF0016C343 /* JSONTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C3BD99F1EF5D1B50016C343 /* JSONTest.cpp */; }; - 2660387B211CA90F00329572 /* JSONUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26603875211CA90E00329572 /* JSONUtils.cpp */; }; - 2668035C11601108008E1FE4 /* LLDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26680207115FD0ED008E1FE4 /* LLDB.framework */; }; - 2669424D1A6DC32B0063BE93 /* LLDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26680207115FD0ED008E1FE4 /* LLDB.framework */; }; - 26792623211CA42300EE1D10 /* LLDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26680207115FD0ED008E1FE4 /* LLDB.framework */; }; - 26B42C4D1187ABA50079C8C8 /* LLDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 26B42C4C1187ABA50079C8C8 /* LLDB.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 943BDEFE1AA7B2F800789CE8 /* LLDBAssert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 943BDEFD1AA7B2F800789CE8 /* LLDBAssert.cpp */; }; - 6D762BEE1B1605D2006C929D /* LLDBServerUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D762BEC1B1605CD006C929D /* LLDBServerUtilities.cpp */; }; - 26F7619B211CBBB30044F6EA /* LLDBUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F76199211CBBB30044F6EA /* LLDBUtils.cpp */; }; - 2660AAB914622483003A9694 /* LLDBWrapPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A4EEB511682AAC007A372A /* LLDBWrapPython.cpp */; settings = {COMPILER_FLAGS = "-Dregister="; }; }; - AEB0E4591BD6E9F800B24093 /* LLVMUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEB0E4581BD6E9F800B24093 /* LLVMUserExpression.cpp */; }; - 94B638531B8F8E6C004FE1E4 /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B638521B8F8E6C004FE1E4 /* Language.cpp */; }; - 942612F71B95000000EF842E /* LanguageCategory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 942612F61B95000000EF842E /* LanguageCategory.cpp */; }; - 268900EC13353E6F00698AC0 /* LanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB4430A12491DDA00C13DC2 /* LanguageRuntime.cpp */; }; - 945261C01B9A11FC00BF138D /* LibCxx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261B51B9A11E800BF138D /* LibCxx.cpp */; }; - 9428BC2C1C6E64E4002A24D7 /* LibCxxAtomic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9428BC291C6E64DC002A24D7 /* LibCxxAtomic.cpp */; }; - AFC67B151FBBB03600860ECB /* LibCxxBitset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC67B141FBBB03500860ECB /* LibCxxBitset.cpp */; }; - 945261C11B9A11FC00BF138D /* LibCxxInitializerList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261B71B9A11E800BF138D /* LibCxxInitializerList.cpp */; }; - 945261C21B9A11FC00BF138D /* LibCxxList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261B81B9A11E800BF138D /* LibCxxList.cpp */; }; - 945261C31B9A11FC00BF138D /* LibCxxMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261B91B9A11E800BF138D /* LibCxxMap.cpp */; }; - E4A63A9120F55D28000D9548 /* LibCxxOptional.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4A63A9020F55D27000D9548 /* LibCxxOptional.cpp */; }; - AF9FF1F71FAA79FE00474976 /* LibCxxQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9FF1F61FAA79FE00474976 /* LibCxxQueue.cpp */; }; - AF9FF1F51FAA79A400474976 /* LibCxxTuple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9FF1F41FAA79A400474976 /* LibCxxTuple.cpp */; }; - 945261C41B9A11FC00BF138D /* LibCxxUnorderedMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261BA1B9A11E800BF138D /* LibCxxUnorderedMap.cpp */; }; - E414F6F121388F6C00C50BC6 /* LibCxxVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414F6F021388F6B00C50BC6 /* LibCxxVariant.cpp */; }; - E414F6EE21388F0300C50BC6 /* LibCxxVariant.h in Headers */ = {isa = PBXBuildFile; fileRef = E414F6ED21388F0200C50BC6 /* LibCxxVariant.h */; }; - 945261C51B9A11FC00BF138D /* LibCxxVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261BB1B9A11E800BF138D /* LibCxxVector.cpp */; }; - 945261C61B9A11FC00BF138D /* LibStdcpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261BC1B9A11E800BF138D /* LibStdcpp.cpp */; }; - 4CDB8D6E1DBA91B6006C5B13 /* LibStdcppTuple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8D681DBA91A6006C5B13 /* LibStdcppTuple.cpp */; }; - 4CDB8D6D1DBA91B6006C5B13 /* LibStdcppUniquePointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8D671DBA91A6006C5B13 /* LibStdcppUniquePointer.cpp */; }; - 268900DA13353E6F00698AC0 /* LineEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1910F1B8EC00F91463 /* LineEntry.cpp */; }; - 268900DB13353E6F00698AC0 /* LineTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1A10F1B8EC00F91463 /* LineTable.cpp */; }; - 2647B64421C43BB000A81D15 /* LinuxProcMaps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2647B64221C43BB000A81D15 /* LinuxProcMaps.cpp */; }; - 2647B64321C43BB000A81D15 /* LinuxProcMaps.h in Headers */ = {isa = PBXBuildFile; fileRef = 2647B64121C43BAF00A81D15 /* LinuxProcMaps.h */; }; - 23059A0719532B96007B8189 /* LinuxSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23059A0519532B96007B8189 /* LinuxSignals.cpp */; }; - 2647B63E21C436BD00A81D15 /* Listener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2647B63D21C436BC00A81D15 /* Listener.cpp */; }; - 2647B63821C4369500A81D15 /* Listener.h in Headers */ = {isa = PBXBuildFile; fileRef = 2647B63721C4369500A81D15 /* Listener.h */; }; - 9A3D43EC1F3237F900EB767C /* ListenerTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43E31F3237D500EB767C /* ListenerTest.cpp */; }; - AFF1273622276F1600C25726 /* LocateSymbolFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFF1273422276F1100C25726 /* LocateSymbolFile.cpp */; }; - AFC3068122276F62002675EA /* LocateSymbolFileMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC3068022276F62002675EA /* LocateSymbolFileMacOSX.cpp */; }; - AFB4C8142228A7B40018086A /* LocateSymbolFileTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB4C8122228A7AE0018086A /* LocateSymbolFileTest.cpp */; }; - 255EFF741AFABA720069F277 /* LockFileBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 255EFF731AFABA720069F277 /* LockFileBase.cpp */; }; - 255EFF761AFABA950069F277 /* LockFilePosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 255EFF751AFABA950069F277 /* LockFilePosix.cpp */; }; - 2689004213353E0400698AC0 /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7F10F1B85900F91463 /* Log.cpp */; }; - 268900CB13353E5F00698AC0 /* LogChannelDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26109B3B1155D70100CC3529 /* LogChannelDWARF.cpp */; }; - 9A3D43D71F3151C400EB767C /* LogTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43C71F3150D200EB767C /* LogTest.cpp */; }; - 3F8160A61AB9F7DD001DA9DF /* Logging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F8160A51AB9F7DD001DA9DF /* Logging.cpp */; }; - 266942001A6DC2AC0063BE93 /* MICmdArgContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941601A6DC2AB0063BE93 /* MICmdArgContext.cpp */; }; - 266942011A6DC2AC0063BE93 /* MICmdArgSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941621A6DC2AB0063BE93 /* MICmdArgSet.cpp */; }; - 266942021A6DC2AC0063BE93 /* MICmdArgValBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941641A6DC2AB0063BE93 /* MICmdArgValBase.cpp */; }; - 266942031A6DC2AC0063BE93 /* MICmdArgValConsume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941661A6DC2AB0063BE93 /* MICmdArgValConsume.cpp */; }; - 266942041A6DC2AC0063BE93 /* MICmdArgValFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941681A6DC2AB0063BE93 /* MICmdArgValFile.cpp */; }; - 266942051A6DC2AC0063BE93 /* MICmdArgValListBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669416A1A6DC2AC0063BE93 /* MICmdArgValListBase.cpp */; }; - 266942061A6DC2AC0063BE93 /* MICmdArgValListOfN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669416C1A6DC2AC0063BE93 /* MICmdArgValListOfN.cpp */; }; - 266942071A6DC2AC0063BE93 /* MICmdArgValNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669416E1A6DC2AC0063BE93 /* MICmdArgValNumber.cpp */; }; - 266942081A6DC2AC0063BE93 /* MICmdArgValOptionLong.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941701A6DC2AC0063BE93 /* MICmdArgValOptionLong.cpp */; }; - 266942091A6DC2AC0063BE93 /* MICmdArgValOptionShort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941721A6DC2AC0063BE93 /* MICmdArgValOptionShort.cpp */; }; - 267DFB461B06752A00000FB7 /* MICmdArgValPrintValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267DFB441B06752A00000FB7 /* MICmdArgValPrintValues.cpp */; }; - 2669420A1A6DC2AC0063BE93 /* MICmdArgValString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941741A6DC2AC0063BE93 /* MICmdArgValString.cpp */; }; - 2669420B1A6DC2AC0063BE93 /* MICmdArgValThreadGrp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941761A6DC2AC0063BE93 /* MICmdArgValThreadGrp.cpp */; }; - 2669420C1A6DC2AC0063BE93 /* MICmdBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941781A6DC2AC0063BE93 /* MICmdBase.cpp */; }; - 2669420D1A6DC2AC0063BE93 /* MICmdCmd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669417A1A6DC2AC0063BE93 /* MICmdCmd.cpp */; }; - 2669420E1A6DC2AC0063BE93 /* MICmdCmdBreak.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669417C1A6DC2AC0063BE93 /* MICmdCmdBreak.cpp */; }; - 2669420F1A6DC2AC0063BE93 /* MICmdCmdData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669417E1A6DC2AC0063BE93 /* MICmdCmdData.cpp */; }; - 266942101A6DC2AC0063BE93 /* MICmdCmdEnviro.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941801A6DC2AC0063BE93 /* MICmdCmdEnviro.cpp */; }; - 266942111A6DC2AC0063BE93 /* MICmdCmdExec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941821A6DC2AC0063BE93 /* MICmdCmdExec.cpp */; }; - 266942121A6DC2AC0063BE93 /* MICmdCmdFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941841A6DC2AC0063BE93 /* MICmdCmdFile.cpp */; }; - 266942131A6DC2AC0063BE93 /* MICmdCmdGdbInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941861A6DC2AC0063BE93 /* MICmdCmdGdbInfo.cpp */; }; - 266942141A6DC2AC0063BE93 /* MICmdCmdGdbSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941881A6DC2AC0063BE93 /* MICmdCmdGdbSet.cpp */; }; - AFB3D2801AC262AB003B4B30 /* MICmdCmdGdbShow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFB3D27E1AC262AB003B4B30 /* MICmdCmdGdbShow.cpp */; }; - 266942151A6DC2AC0063BE93 /* MICmdCmdGdbThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669418A1A6DC2AC0063BE93 /* MICmdCmdGdbThread.cpp */; }; - 266942161A6DC2AC0063BE93 /* MICmdCmdMiscellanous.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669418C1A6DC2AC0063BE93 /* MICmdCmdMiscellanous.cpp */; }; - 266942171A6DC2AC0063BE93 /* MICmdCmdStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669418E1A6DC2AC0063BE93 /* MICmdCmdStack.cpp */; }; - 266942181A6DC2AC0063BE93 /* MICmdCmdSupportInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941901A6DC2AC0063BE93 /* MICmdCmdSupportInfo.cpp */; }; - 266942191A6DC2AC0063BE93 /* MICmdCmdSupportList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941921A6DC2AC0063BE93 /* MICmdCmdSupportList.cpp */; }; - 26D52C1F1A980FE300E5D2FB /* MICmdCmdSymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D52C1D1A980FE300E5D2FB /* MICmdCmdSymbol.cpp */; }; - 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; }; - 2669421B1A6DC2AC0063BE93 /* MICmdCmdThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941961A6DC2AC0063BE93 /* MICmdCmdThread.cpp */; }; - 2669421C1A6DC2AC0063BE93 /* MICmdCmdTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941981A6DC2AC0063BE93 /* MICmdCmdTrace.cpp */; }; - 2669421D1A6DC2AC0063BE93 /* MICmdCmdVar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669419A1A6DC2AC0063BE93 /* MICmdCmdVar.cpp */; }; - 2669421E1A6DC2AC0063BE93 /* MICmdCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669419C1A6DC2AC0063BE93 /* MICmdCommands.cpp */; }; - 2669421F1A6DC2AC0063BE93 /* MICmdData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2669419E1A6DC2AC0063BE93 /* MICmdData.cpp */; }; - 266942201A6DC2AC0063BE93 /* MICmdFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941A01A6DC2AC0063BE93 /* MICmdFactory.cpp */; }; - 266942211A6DC2AC0063BE93 /* MICmdInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941A21A6DC2AC0063BE93 /* MICmdInterpreter.cpp */; }; - 266942221A6DC2AC0063BE93 /* MICmdInvoker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941A41A6DC2AC0063BE93 /* MICmdInvoker.cpp */; }; - 266942231A6DC2AC0063BE93 /* MICmdMgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941A61A6DC2AC0063BE93 /* MICmdMgr.cpp */; }; - 266942241A6DC2AC0063BE93 /* MICmdMgrSetCmdDeleteCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941A81A6DC2AC0063BE93 /* MICmdMgrSetCmdDeleteCallback.cpp */; }; - 266942251A6DC2AC0063BE93 /* MICmnBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941AA1A6DC2AC0063BE93 /* MICmnBase.cpp */; }; - 266942261A6DC2AC0063BE93 /* MICmnLLDBBroadcaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941AD1A6DC2AC0063BE93 /* MICmnLLDBBroadcaster.cpp */; }; - 266942291A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941B31A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfo.cpp */; }; - 2669422A1A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfoVarObj.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941B51A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfoVarObj.cpp */; }; - 266942271A6DC2AC0063BE93 /* MICmnLLDBDebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941AF1A6DC2AC0063BE93 /* MICmnLLDBDebugger.cpp */; }; - 266942281A6DC2AC0063BE93 /* MICmnLLDBDebuggerHandleEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941B11A6DC2AC0063BE93 /* MICmnLLDBDebuggerHandleEvents.cpp */; }; - 2669422B1A6DC2AC0063BE93 /* MICmnLLDBProxySBValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941B71A6DC2AC0063BE93 /* MICmnLLDBProxySBValue.cpp */; }; - 2669422C1A6DC2AC0063BE93 /* MICmnLLDBUtilSBValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941B91A6DC2AC0063BE93 /* MICmnLLDBUtilSBValue.cpp */; }; - 2669422D1A6DC2AC0063BE93 /* MICmnLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941BB1A6DC2AC0063BE93 /* MICmnLog.cpp */; }; - 2669422E1A6DC2AC0063BE93 /* MICmnLogMediumFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941BD1A6DC2AC0063BE93 /* MICmnLogMediumFile.cpp */; }; - 2669422F1A6DC2AC0063BE93 /* MICmnMIOutOfBandRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941BF1A6DC2AC0063BE93 /* MICmnMIOutOfBandRecord.cpp */; }; - 266942301A6DC2AC0063BE93 /* MICmnMIResultRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941C11A6DC2AC0063BE93 /* MICmnMIResultRecord.cpp */; }; - 266942311A6DC2AC0063BE93 /* MICmnMIValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941C31A6DC2AC0063BE93 /* MICmnMIValue.cpp */; }; - 266942321A6DC2AC0063BE93 /* MICmnMIValueConst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941C51A6DC2AC0063BE93 /* MICmnMIValueConst.cpp */; }; - 266942331A6DC2AC0063BE93 /* MICmnMIValueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941C71A6DC2AC0063BE93 /* MICmnMIValueList.cpp */; }; - 266942341A6DC2AC0063BE93 /* MICmnMIValueResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941C91A6DC2AC0063BE93 /* MICmnMIValueResult.cpp */; }; - 266942351A6DC2AC0063BE93 /* MICmnMIValueTuple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941CB1A6DC2AC0063BE93 /* MICmnMIValueTuple.cpp */; }; - 266942361A6DC2AC0063BE93 /* MICmnResources.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941CD1A6DC2AC0063BE93 /* MICmnResources.cpp */; }; - 266942371A6DC2AC0063BE93 /* MICmnStreamStderr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941CF1A6DC2AC0063BE93 /* MICmnStreamStderr.cpp */; }; - 266942381A6DC2AC0063BE93 /* MICmnStreamStdin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941D11A6DC2AC0063BE93 /* MICmnStreamStdin.cpp */; }; - 2669423B1A6DC2AC0063BE93 /* MICmnStreamStdout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941D71A6DC2AC0063BE93 /* MICmnStreamStdout.cpp */; }; - 2669423C1A6DC2AC0063BE93 /* MICmnThreadMgrStd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941D91A6DC2AC0063BE93 /* MICmnThreadMgrStd.cpp */; }; - 2669423D1A6DC2AC0063BE93 /* MIDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941DC1A6DC2AC0063BE93 /* MIDriver.cpp */; }; - 2669423E1A6DC2AC0063BE93 /* MIDriverBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941DE1A6DC2AC0063BE93 /* MIDriverBase.cpp */; }; - 2669423F1A6DC2AC0063BE93 /* MIDriverMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941E01A6DC2AC0063BE93 /* MIDriverMain.cpp */; }; - 266942401A6DC2AC0063BE93 /* MIDriverMgr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941E11A6DC2AC0063BE93 /* MIDriverMgr.cpp */; }; - 266942411A6DC2AC0063BE93 /* MIUtilDateTimeStd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941E41A6DC2AC0063BE93 /* MIUtilDateTimeStd.cpp */; }; - 266942421A6DC2AC0063BE93 /* MIUtilDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941E61A6DC2AC0063BE93 /* MIUtilDebug.cpp */; }; - 266942431A6DC2AC0063BE93 /* MIUtilFileStd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941E81A6DC2AC0063BE93 /* MIUtilFileStd.cpp */; }; - 266942441A6DC2AC0063BE93 /* MIUtilMapIdToVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941EA1A6DC2AC0063BE93 /* MIUtilMapIdToVariant.cpp */; }; - 266942451A6DC2AC0063BE93 /* MIUtilString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941EE1A6DC2AC0063BE93 /* MIUtilString.cpp */; }; - 2669424A1A6DC2AC0063BE93 /* MIUtilThreadBaseStd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941F81A6DC2AC0063BE93 /* MIUtilThreadBaseStd.cpp */; }; - 2669424B1A6DC2AC0063BE93 /* MIUtilVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941FA1A6DC2AC0063BE93 /* MIUtilVariant.cpp */; }; - AF395C03219254F300894EC3 /* MSVCUndecoratedNameParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF395C01219254F200894EC3 /* MSVCUndecoratedNameParser.cpp */; }; - D67521381EA17C4200439694 /* MainLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D67521351EA17C3900439694 /* MainLoop.cpp */; }; - 9A20573A1F3B8E7E00F6C293 /* MainLoopTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2057301F3B8E7600F6C293 /* MainLoopTest.cpp */; }; - 8C3BD9961EF45DA50016C343 /* MainThreadCheckerRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C3BD9951EF45D9B0016C343 /* MainThreadCheckerRuntime.cpp */; }; - 2689004313353E0400698AC0 /* Mangled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8010F1B85900F91463 /* Mangled.cpp */; }; - 4F29D3CF21010FA3003B549A /* MangledTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4F29D3CD21010F84003B549A /* MangledTest.cpp */; }; - 4CD44CFC20B37C440003557C /* ManualDWARFIndex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD44CF920B37C440003557C /* ManualDWARFIndex.cpp */; }; - 49DCF702170E70120092F75E /* Materializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DCF700170E70120092F75E /* Materializer.cpp */; }; - 2690B3711381D5C300ECFBAE /* Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2690B3701381D5C300ECFBAE /* Memory.cpp */; }; - 8C2D6A53197A1EAF006989C9 /* MemoryHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */; }; - 8C2D6A5E197A250F006989C9 /* MemoryHistoryASan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */; }; - 9A2057081F3B819100F6C293 /* MemoryRegionInfoTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2057061F3B818600F6C293 /* MemoryRegionInfoTest.cpp */; }; - 23E2E5441D904913006F38BB /* MinidumpParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E2E5371D9048FB006F38BB /* MinidumpParser.cpp */; }; - 23E2E5271D903782006F38BB /* MinidumpParserTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E2E51A1D9036F2006F38BB /* MinidumpParserTest.cpp */; }; - 23E2E5451D904913006F38BB /* MinidumpTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23E2E5391D9048FB006F38BB /* MinidumpTypes.cpp */; }; - 26B75B441AD6E29A001F7A57 /* MipsLinuxSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B75B421AD6E29A001F7A57 /* MipsLinuxSignals.cpp */; }; - 9A18903B1F47D5E600394BCA /* MockTildeExpressionResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A1890321F47D5D400394BCA /* MockTildeExpressionResolver.cpp */; }; - 2689004413353E0400698AC0 /* Module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8110F1B85900F91463 /* Module.cpp */; }; - 2654A6801E54D59400DA1013 /* ModuleCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2654A67F1E54D59400DA1013 /* ModuleCache.cpp */; }; - AFAFD80A1E57E1B90017A14F /* ModuleCacheTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFAFD8091E57E1B90017A14F /* ModuleCacheTest.cpp */; }; - 2689004513353E0400698AC0 /* ModuleChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8210F1B85900F91463 /* ModuleChild.cpp */; }; - 2689004613353E0400698AC0 /* ModuleList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8310F1B85900F91463 /* ModuleList.cpp */; }; - 949EEDAF1BA76729008C63CF /* NSArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EEDA41BA765B5008C63CF /* NSArray.cpp */; }; - 949EEDB11BA7672D008C63CF /* NSDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EEDA51BA765B5008C63CF /* NSDictionary.cpp */; }; - 9404957A1BEC497E00926025 /* NSError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940495781BEC497E00926025 /* NSError.cpp */; }; - 9404957B1BEC497E00926025 /* NSException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940495791BEC497E00926025 /* NSException.cpp */; }; - 949EEDB21BA76731008C63CF /* NSIndexPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EEDA61BA765B5008C63CF /* NSIndexPath.cpp */; }; - 949EEDB31BA76736008C63CF /* NSSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949EEDA71BA765B5008C63CF /* NSSet.cpp */; }; - 94B9E5121BBF20F4000A48DC /* NSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B9E5111BBF20F4000A48DC /* NSString.cpp */; }; - 3F81691A1ABA2419001DA9DF /* NameMatches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F8169181ABA2419001DA9DF /* NameMatches.cpp */; }; - 9A3D43D81F3151C400EB767C /* NameMatchesTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43CB1F3150D200EB767C /* NameMatchesTest.cpp */; }; - 268900C913353E5F00698AC0 /* NameToDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618D9EA12406FE600F2B8FE /* NameToDIE.cpp */; }; - 232CB619191E00CD00EF39FC /* NativeProcessProtocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 232CB60F191E00CC00EF39FC /* NativeProcessProtocol.cpp */; }; - 267A47FB1B1411C40021A5BC /* NativeRegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267A47FA1B1411C40021A5BC /* NativeRegisterContext.cpp */; }; - 23F4034D1926E0F60046DC9B /* NativeRegisterContextRegisterInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23F403481926CC250046DC9B /* NativeRegisterContextRegisterInfo.cpp */; }; - 232CB61B191E00CD00EF39FC /* NativeThreadProtocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 232CB611191E00CC00EF39FC /* NativeThreadProtocol.cpp */; }; - 267A47FF1B1411D90021A5BC /* NativeWatchpointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267A47FE1B1411D90021A5BC /* NativeWatchpointList.cpp */; }; - AF33B4BE1C1FA441001B28D9 /* NetBSDSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF33B4BC1C1FA441001B28D9 /* NetBSDSignals.cpp */; }; - AF33B4BF1C1FA441001B28D9 /* NetBSDSignals.h in Headers */ = {isa = PBXBuildFile; fileRef = AF33B4BD1C1FA441001B28D9 /* NetBSDSignals.h */; }; - 942612F81B952C9B00EF842E /* ObjCLanguage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B6385E1B8FB7A2004FE1E4 /* ObjCLanguage.cpp */; }; - 268900ED13353E6F00698AC0 /* ObjCLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB443F212499B5000C13DC2 /* ObjCLanguageRuntime.cpp */; }; - 94B638631B8FB7F1004FE1E4 /* ObjCPlusPlusLanguage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B638621B8FB7F1004FE1E4 /* ObjCPlusPlusLanguage.cpp */; }; - 2689009613353E4200698AC0 /* ObjectContainerBSDArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A3B4AC1181454800381BC2 /* ObjectContainerBSDArchive.cpp */; }; - 2689009713353E4200698AC0 /* ObjectContainerUniversalMachO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898010F57C5600BB2B04 /* ObjectContainerUniversalMachO.cpp */; }; - 268900DC13353E6F00698AC0 /* ObjectFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F4C10F1BC1A00F91463 /* ObjectFile.cpp */; }; - 4C9BF11B21C0467700FA4036 /* ObjectFileBreakpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BF11921C0467700FA4036 /* ObjectFileBreakpad.cpp */; }; - 2689009913353E4200698AC0 /* ObjectFileELF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898510F57C5600BB2B04 /* ObjectFileELF.cpp */; }; - 26EFC4CD18CFAF0D00865D87 /* ObjectFileJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26EFC4CA18CFAF0D00865D87 /* ObjectFileJIT.cpp */; }; - 2689009A13353E4200698AC0 /* ObjectFileMachO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898810F57C5600BB2B04 /* ObjectFileMachO.cpp */; }; - 26E152261419CAD4007967D0 /* ObjectFilePECOFF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E152231419CACA007967D0 /* ObjectFilePECOFF.cpp */; }; - 26651A18133BF9E0005B64B7 /* Opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26651A17133BF9DF005B64B7 /* Opcode.cpp */; }; - 266DFE9713FD656E00D0C574 /* OperatingSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266DFE9613FD656E00D0C574 /* OperatingSystem.cpp */; }; - 2698699B15E6CBD0002415FF /* OperatingSystemPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2698699815E6CBD0002415FF /* OperatingSystemPython.cpp */; }; - 4C719395207D235400FDF430 /* OptionArgParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C719394207D235400FDF430 /* OptionArgParser.cpp */; }; - 26D5E15F135BAEA2006EA0A7 /* OptionGroupArchitecture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D5E15E135BAEA2006EA0A7 /* OptionGroupArchitecture.cpp */; }; - 2686536C1370ACB200D186A3 /* OptionGroupBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2686536B1370ACB200D186A3 /* OptionGroupBoolean.cpp */; }; - 260E07C8136FAB9200CF21D3 /* OptionGroupFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07C7136FAB9200CF21D3 /* OptionGroupFile.cpp */; }; - 26BCFC521368AE38006DC050 /* OptionGroupFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BCFC511368AE38006DC050 /* OptionGroupFormat.cpp */; }; - 267C01371368C49C006E963E /* OptionGroupOutputFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BCFC531368B3E4006DC050 /* OptionGroupOutputFile.cpp */; }; - 26D5E163135BB054006EA0A7 /* OptionGroupPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D5E162135BB054006EA0A7 /* OptionGroupPlatform.cpp */; }; - 262ED0081631FA3A00879631 /* OptionGroupString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 262ED0071631FA3A00879631 /* OptionGroupString.cpp */; }; - 268653701370AE7200D186A3 /* OptionGroupUInt64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2686536F1370AE7200D186A3 /* OptionGroupUInt64.cpp */; }; - 260E07C6136FA69E00CF21D3 /* OptionGroupUUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260E07C5136FA69E00CF21D3 /* OptionGroupUUID.cpp */; }; - 267C012B136880DF006E963E /* OptionGroupValueObjectDisplay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267C012A136880DF006E963E /* OptionGroupValueObjectDisplay.cpp */; }; - 26ED3D6D13C563810017D45E /* OptionGroupVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26ED3D6C13C563810017D45E /* OptionGroupVariable.cpp */; }; - B2462247141AD37D00F3D409 /* OptionGroupWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2462246141AD37D00F3D409 /* OptionGroupWatchpoint.cpp */; }; - A36FF33C17D8E94600244D40 /* OptionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A36FF33B17D8E94600244D40 /* OptionParser.cpp */; }; - 26A7A035135E6E4200FB369E /* OptionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A7A034135E6E4200FB369E /* OptionValue.cpp */; }; - 2697A39315E404B1003E682C /* OptionValueArch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2697A39215E404B1003E682C /* OptionValueArch.cpp */; }; - 260CC64815D0440D002BF2E0 /* OptionValueArgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC63B15D0440D002BF2E0 /* OptionValueArgs.cpp */; }; - 260CC64915D0440D002BF2E0 /* OptionValueArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC63C15D0440D002BF2E0 /* OptionValueArray.cpp */; }; - 260CC64A15D0440D002BF2E0 /* OptionValueBoolean.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC63D15D0440D002BF2E0 /* OptionValueBoolean.cpp */; }; - 25420ECD1A6490B8009ADBCB /* OptionValueChar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25420ECC1A6490B8009ADBCB /* OptionValueChar.cpp */; }; - 260CC64C15D0440D002BF2E0 /* OptionValueDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC63F15D0440D002BF2E0 /* OptionValueDictionary.cpp */; }; - 260CC64D15D0440D002BF2E0 /* OptionValueEnumeration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64015D0440D002BF2E0 /* OptionValueEnumeration.cpp */; }; - 260CC64E15D0440D002BF2E0 /* OptionValueFileSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64115D0440D002BF2E0 /* OptionValueFileSpec.cpp */; }; - 260CC64F15D0440D002BF2E0 /* OptionValueFileSpecLIst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64215D0440D002BF2E0 /* OptionValueFileSpecLIst.cpp */; }; - 260CC65015D0440D002BF2E0 /* OptionValueFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64315D0440D002BF2E0 /* OptionValueFormat.cpp */; }; - 264A58EE1A7DBCAD00A6B1B0 /* OptionValueFormatEntity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264A58ED1A7DBCAD00A6B1B0 /* OptionValueFormatEntity.cpp */; }; - 946216C21A97C080006E19CC /* OptionValueLanguage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 946216C11A97C080006E19CC /* OptionValueLanguage.cpp */; }; - 26DAED6315D327C200E15819 /* OptionValuePathMappings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DAED6215D327C200E15819 /* OptionValuePathMappings.cpp */; }; - 260CC64B15D0440D002BF2E0 /* OptionValueProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC63E15D0440D002BF2E0 /* OptionValueProperties.cpp */; }; - 26491E3E15E1DB9F00CBFFC2 /* OptionValueRegex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26491E3D15E1DB9F00CBFFC2 /* OptionValueRegex.cpp */; }; - 260CC65115D0440D002BF2E0 /* OptionValueSInt64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64415D0440D002BF2E0 /* OptionValueSInt64.cpp */; }; - 260CC65215D0440D002BF2E0 /* OptionValueString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64515D0440D002BF2E0 /* OptionValueString.cpp */; }; - 260CC65315D0440D002BF2E0 /* OptionValueUInt64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64615D0440D002BF2E0 /* OptionValueUInt64.cpp */; }; - 260CC65415D0440D002BF2E0 /* OptionValueUUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260CC64715D0440D002BF2E0 /* OptionValueUUID.cpp */; }; - 2689008613353E2200698AC0 /* Options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8610F1B85900F91463 /* Options.cpp */; }; - 4C639ED121FA684900A7B957 /* OptionsWithRawTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC321FA684700A7B957 /* OptionsWithRawTest.cpp */; }; - 4C562CC71CC07DF700C52EAC /* PDBASTParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C562CC21CC07DDD00C52EAC /* PDBASTParser.cpp */; }; - 4CA0C6CC20F929C700CFE6BB /* PDBLocationToDWARFExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0C6CA20F929C600CFE6BB /* PDBLocationToDWARFExpression.cpp */; }; - 268900EE13353E6F00698AC0 /* PathMappingList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 495BBACB119A0DBE00418BEA /* PathMappingList.cpp */; }; - 2668A2EE20AF417D00D94111 /* PathMappingListTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2668A2ED20AF417D00D94111 /* PathMappingListTest.cpp */; }; - AF815DF921C855B400023A34 /* PdbAstBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF815DF721C855B400023A34 /* PdbAstBuilder.cpp */; }; - 5A6424972204D05000C3D9DB /* PdbFPOProgramToDWARFExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5A6424932204D04F00C3D9DB /* PdbFPOProgramToDWARFExpression.cpp */; }; - 5A6424952204D05000C3D9DB /* PdbFPOProgramToDWARFExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A6424912204D04F00C3D9DB /* PdbFPOProgramToDWARFExpression.h */; }; - AFD966BA217140B6006714AC /* PdbIndex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFD966B6217140B6006714AC /* PdbIndex.cpp */; }; - AF0F459E219FA1C800C1E612 /* PdbSymUid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0F459D219FA1C800C1E612 /* PdbSymUid.cpp */; }; - AFD966B9217140B6006714AC /* PdbUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFD966B5217140B6006714AC /* PdbUtil.cpp */; }; - 25420ED21A649D88009ADBCB /* PipeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25420ED11A649D88009ADBCB /* PipeBase.cpp */; }; - 2377C2F819E613C100737875 /* PipePosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2377C2F719E613C100737875 /* PipePosix.cpp */; }; - 268900EF13353E6F00698AC0 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264A43BD1320BCEB005B4096 /* Platform.cpp */; }; - 6D55BAED1A8CD0A800A70529 /* PlatformAndroid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D55BAE91A8CD08C00A70529 /* PlatformAndroid.cpp */; }; - 6D55BAEE1A8CD0B200A70529 /* PlatformAndroidRemoteGDBServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D55BAEB1A8CD08C00A70529 /* PlatformAndroidRemoteGDBServer.cpp */; }; - 9455630F1BEAD0600073F75F /* PlatformAppleSimulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9455630A1BEAD0570073F75F /* PlatformAppleSimulator.cpp */; }; - AF8AD62E1BEC28A400150209 /* PlatformAppleTVSimulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF8AD62A1BEC28A400150209 /* PlatformAppleTVSimulator.cpp */; }; - AF8AD62F1BEC28A400150209 /* PlatformAppleTVSimulator.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8AD62B1BEC28A400150209 /* PlatformAppleTVSimulator.h */; }; - AF8AD6301BEC28A400150209 /* PlatformAppleWatchSimulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF8AD62C1BEC28A400150209 /* PlatformAppleWatchSimulator.cpp */; }; - AF8AD6311BEC28A400150209 /* PlatformAppleWatchSimulator.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8AD62D1BEC28A400150209 /* PlatformAppleWatchSimulator.h */; }; - 2697A54D133A6305004E4240 /* PlatformDarwin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2697A54B133A6305004E4240 /* PlatformDarwin.cpp */; }; - AF254E31170CCC33007AE5C9 /* PlatformDarwinKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF254E2F170CCC33007AE5C9 /* PlatformDarwinKernel.cpp */; }; - 9A20571C1F3B867400F6C293 /* PlatformDarwinTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A20571A1F3B866F00F6C293 /* PlatformDarwinTest.cpp */; }; - 2694E99D14FC0BB30076DE67 /* PlatformFreeBSD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2694E99A14FC0BB30076DE67 /* PlatformFreeBSD.cpp */; }; - 2694E9A414FC0BBD0076DE67 /* PlatformLinux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2694E9A114FC0BBD0076DE67 /* PlatformLinux.cpp */; }; - 2689009B13353E4200698AC0 /* PlatformMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C5577B132575AD008FD8FE /* PlatformMacOSX.cpp */; }; - 26EFB61B1BFE8D3E00544801 /* PlatformNetBSD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26EFB6181BFE8D3E00544801 /* PlatformNetBSD.cpp */; }; - 26EFB61C1BFE8D3E00544801 /* PlatformNetBSD.h in Headers */ = {isa = PBXBuildFile; fileRef = 26EFB6191BFE8D3E00544801 /* PlatformNetBSD.h */; }; - 4CE4EFAA1E8999B900A80C06 /* PlatformOpenBSD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4EFA61E8999B000A80C06 /* PlatformOpenBSD.cpp */; }; - 945759671534941F005A9070 /* PlatformPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945759651534941F005A9070 /* PlatformPOSIX.cpp */; }; - AF663250216EB9C300BB510D /* PlatformRemoteAppleBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF66324E216EB9C300BB510D /* PlatformRemoteAppleBridge.cpp */; }; - AF8AD6371BEC28C400150209 /* PlatformRemoteAppleTV.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF8AD6331BEC28C400150209 /* PlatformRemoteAppleTV.cpp */; }; - AF8AD6381BEC28C400150209 /* PlatformRemoteAppleTV.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8AD6341BEC28C400150209 /* PlatformRemoteAppleTV.h */; }; - AF8AD6391BEC28C400150209 /* PlatformRemoteAppleWatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF8AD6351BEC28C400150209 /* PlatformRemoteAppleWatch.cpp */; }; - AF8AD63A1BEC28C400150209 /* PlatformRemoteAppleWatch.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8AD6361BEC28C400150209 /* PlatformRemoteAppleWatch.h */; }; - AF3A4AD21EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF3A4AD01EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.cpp */; }; - AF3A4AD31EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = AF3A4AD11EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.h */; }; - 264A97BF133918BC0017F0BE /* PlatformRemoteGDBServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264A97BD133918BC0017F0BE /* PlatformRemoteGDBServer.cpp */; }; - 2689009C13353E4200698AC0 /* PlatformRemoteiOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */; }; - 490A36C0180F0E6F00BA31F8 /* PlatformWindows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 490A36BD180F0E6F00BA31F8 /* PlatformWindows.cpp */; }; - 26B7564E14F89356008D9CB3 /* PlatformiOSSimulator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B7564C14F89356008D9CB3 /* PlatformiOSSimulator.cpp */; }; - AFF81FB320D1CC910010F95E /* PlatformiOSSimulatorCoreSimulatorSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = AFF81FB220D1CC910010F95E /* PlatformiOSSimulatorCoreSimulatorSupport.mm */; }; - 2689004713353E0400698AC0 /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8A10F1B85900F91463 /* PluginManager.cpp */; }; - AFC4ADB12270F4C700042167 /* PostfixExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC4ADB02270F4C600042167 /* PostfixExpression.cpp */; }; - 4C639ECE21FA684900A7B957 /* PredicateTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC021FA684700A7B957 /* PredicateTest.cpp */; }; - 268900F013353E6F00698AC0 /* Process.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3610F1B90C00F91463 /* Process.cpp */; }; - 26BC17AB18C7F4CB00D2196D /* ProcessElfCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC17A218C7F4CB00D2196D /* ProcessElfCore.cpp */; }; - 2689009F13353E4200698AC0 /* ProcessGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5F1315B29C001D6D71 /* ProcessGDBRemote.cpp */; }; - 268900A013353E4200698AC0 /* ProcessGDBRemoteLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE611315B29C001D6D71 /* ProcessGDBRemoteLog.cpp */; }; - 4CC57FA1222DFEA40067B7EA /* ProcessInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CC57F9F222DFEA40067B7EA /* ProcessInfo.cpp */; }; - 2642FBB013D003B400ED6808 /* ProcessKDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2642FBAA13D003B400ED6808 /* ProcessKDP.cpp */; }; - 2642FBB213D003B400ED6808 /* ProcessKDPLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2642FBAC13D003B400ED6808 /* ProcessKDPLog.cpp */; }; - 233B007F1960CB280090E598 /* ProcessLaunchInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 233B007E1960CB280090E598 /* ProcessLaunchInfo.cpp */; }; - 26A527C114E24F5F00F3A14A /* ProcessMachCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A527BD14E24F5F00F3A14A /* ProcessMachCore.cpp */; }; - 947CF7711DC7B1EE00EF980B /* ProcessMinidump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 947CF7701DC7B1EE00EF980B /* ProcessMinidump.cpp */; }; - AF37E10A17C861F20061E18E /* ProcessRunLock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF37E10917C861F20061E18E /* ProcessRunLock.cpp */; }; - 2640E19F15DC78FD00F23B50 /* Property.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2640E19E15DC78FD00F23B50 /* Property.cpp */; }; - 2654A68D1E552D1500DA1013 /* PseudoTerminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2654A68C1E552D1500DA1013 /* PseudoTerminal.cpp */; }; - 4CEC86A92047395F009B37B1 /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2326CF3F1BDD613E00A5CEAC /* Python.framework */; }; - 3FBA69EC1B6067430008F44A /* PythonDataObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FBA69E31B60672A0008F44A /* PythonDataObjects.cpp */; }; - 23CB153E1D66DA9300EDDDE1 /* PythonDataObjectsTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F94D1BDD360F00BA9A93 /* PythonDataObjectsTests.cpp */; }; - AFCB2BBD1BF577F40018B553 /* PythonExceptionState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFCB2BBB1BF577F40018B553 /* PythonExceptionState.cpp */; }; - AFCB2BBE1BF577F40018B553 /* PythonExceptionState.h in Headers */ = {isa = PBXBuildFile; fileRef = AFCB2BBC1BF577F40018B553 /* PythonExceptionState.h */; }; - 23CB15381D66DA9300EDDDE1 /* PythonExceptionStateTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FA093141BF65D3A0037DD08 /* PythonExceptionStateTests.cpp */; }; - 23CB15371D66DA9300EDDDE1 /* PythonTestSuite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF45E1FC1BF57C8D000563EB /* PythonTestSuite.cpp */; }; - AF26703A1852D01E00B6CC36 /* Queue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF2670381852D01E00B6CC36 /* Queue.cpp */; }; - AF0C112818580CD800C4C45B /* QueueItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0C112718580CD800C4C45B /* QueueItem.cpp */; }; - AF26703B1852D01E00B6CC36 /* QueueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF2670391852D01E00B6CC36 /* QueueList.cpp */; }; - 4939EA8D1BD56B6D00084382 /* REPL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4939EA8C1BD56B6D00084382 /* REPL.cpp */; }; - 268900F113353E6F00698AC0 /* RegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3710F1B90C00F91463 /* RegisterContext.cpp */; }; - 26957D9813D381C900670048 /* RegisterContextDarwin_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26957D9213D381C900670048 /* RegisterContextDarwin_arm.cpp */; }; - AF9107EE168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9107EC168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp */; }; - AF9107EF168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9107EC168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp */; }; - 26957D9A13D381C900670048 /* RegisterContextDarwin_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26957D9413D381C900670048 /* RegisterContextDarwin_i386.cpp */; }; - 26957D9C13D381C900670048 /* RegisterContextDarwin_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26957D9613D381C900670048 /* RegisterContextDarwin_x86_64.cpp */; }; - 944372DC171F6B4300E57C32 /* RegisterContextDummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 944372DA171F6B4300E57C32 /* RegisterContextDummy.cpp */; }; - 26474CA818D0CB070073DEBA /* RegisterContextFreeBSD_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CA218D0CB070073DEBA /* RegisterContextFreeBSD_i386.cpp */; }; - 26474CAA18D0CB070073DEBA /* RegisterContextFreeBSD_mips64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CA418D0CB070073DEBA /* RegisterContextFreeBSD_mips64.cpp */; }; - AF77E0A11A033D360096C0EA /* RegisterContextFreeBSD_powerpc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF77E09A1A033D360096C0EA /* RegisterContextFreeBSD_powerpc.cpp */; }; - 26474CAC18D0CB070073DEBA /* RegisterContextFreeBSD_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CA618D0CB070073DEBA /* RegisterContextFreeBSD_x86_64.cpp */; }; - AF061F87182C97ED00B6A19C /* RegisterContextHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF061F85182C97ED00B6A19C /* RegisterContextHistory.cpp */; }; - 265205A813D3E3F700132FE2 /* RegisterContextKDP_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265205A213D3E3F700132FE2 /* RegisterContextKDP_arm.cpp */; }; - AF0F6E501739A76D009180FE /* RegisterContextKDP_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0F6E4E1739A76D009180FE /* RegisterContextKDP_arm64.cpp */; }; - 265205AA13D3E3F700132FE2 /* RegisterContextKDP_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265205A413D3E3F700132FE2 /* RegisterContextKDP_i386.cpp */; }; - 265205AC13D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265205A613D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp */; }; - 268900B013353E5000698AC0 /* RegisterContextLLDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF68D2541255416E002FF25B /* RegisterContextLLDB.cpp */; }; - 26474CB218D0CB180073DEBA /* RegisterContextLinux_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CAE18D0CB180073DEBA /* RegisterContextLinux_i386.cpp */; }; - 9A0FDEA71E8EF5110086B2F5 /* RegisterContextLinux_mips.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0FDE971E8EF5010086B2F5 /* RegisterContextLinux_mips.cpp */; }; - 256CBDBC1ADD107200BC6CDC /* RegisterContextLinux_mips64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 256CBDB81ADD107200BC6CDC /* RegisterContextLinux_mips64.cpp */; }; - 267F68531CC02E920086832B /* RegisterContextLinux_s390x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267F68511CC02E920086832B /* RegisterContextLinux_s390x.cpp */; }; - 267F68541CC02E920086832B /* RegisterContextLinux_s390x.h in Headers */ = {isa = PBXBuildFile; fileRef = 267F68521CC02E920086832B /* RegisterContextLinux_s390x.h */; }; - 26474CB418D0CB180073DEBA /* RegisterContextLinux_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CB018D0CB180073DEBA /* RegisterContextLinux_x86_64.cpp */; }; - 268900B413353E5000698AC0 /* RegisterContextMacOSXFrameBackchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E3EEF711A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.cpp */; }; - 26474CBC18D0CB2D0073DEBA /* RegisterContextMach_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CB618D0CB2D0073DEBA /* RegisterContextMach_arm.cpp */; }; - 26474CBE18D0CB2D0073DEBA /* RegisterContextMach_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CB818D0CB2D0073DEBA /* RegisterContextMach_i386.cpp */; }; - 26474CC018D0CB2D0073DEBA /* RegisterContextMach_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CBA18D0CB2D0073DEBA /* RegisterContextMach_x86_64.cpp */; }; - 26474CC918D0CB5B0073DEBA /* RegisterContextMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CC218D0CB5B0073DEBA /* RegisterContextMemory.cpp */; }; - 2619C4852107A9A2009CDE81 /* RegisterContextMinidump_ARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2619C4812107A9A1009CDE81 /* RegisterContextMinidump_ARM.cpp */; }; - 2619C4872107A9A2009CDE81 /* RegisterContextMinidump_ARM.h in Headers */ = {isa = PBXBuildFile; fileRef = 2619C4832107A9A2009CDE81 /* RegisterContextMinidump_ARM.h */; }; - 2619C4842107A9A2009CDE81 /* RegisterContextMinidump_ARM64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2619C4802107A9A1009CDE81 /* RegisterContextMinidump_ARM64.cpp */; }; - 2619C4862107A9A2009CDE81 /* RegisterContextMinidump_ARM64.h in Headers */ = {isa = PBXBuildFile; fileRef = 2619C4822107A9A2009CDE81 /* RegisterContextMinidump_ARM64.h */; }; - 947CF7761DC7B20D00EF980B /* RegisterContextMinidump_x86_32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 947CF7741DC7B20D00EF980B /* RegisterContextMinidump_x86_32.cpp */; }; - AFD65C811D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFD65C7F1D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.cpp */; }; - AFD65C821D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = AFD65C801D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.h */; }; - 9AD9449F1E8DB26C004796ED /* RegisterContextNetBSD_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AD9449B1E8DB267004796ED /* RegisterContextNetBSD_x86_64.cpp */; }; - 4CE4EFB31E899A3400A80C06 /* RegisterContextOpenBSD_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4EFAB1E899A1200A80C06 /* RegisterContextOpenBSD_i386.cpp */; }; - 4CE4EFB41E899A4000A80C06 /* RegisterContextOpenBSD_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4EFAD1E899A1200A80C06 /* RegisterContextOpenBSD_x86_64.cpp */; }; - 256CBDB41ADD0EFD00BC6CDC /* RegisterContextPOSIXCore_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 256CBDB21ADD0EFD00BC6CDC /* RegisterContextPOSIXCore_arm.cpp */; }; - E7723D441AC4A7FB002BA082 /* RegisterContextPOSIXCore_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7723D421AC4A7FB002BA082 /* RegisterContextPOSIXCore_arm64.cpp */; }; - 26BC17AD18C7F4CB00D2196D /* RegisterContextPOSIXCore_mips64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC17A418C7F4CB00D2196D /* RegisterContextPOSIXCore_mips64.cpp */; }; - AF77E0A91A033D740096C0EA /* RegisterContextPOSIXCore_powerpc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF77E0A71A033D740096C0EA /* RegisterContextPOSIXCore_powerpc.cpp */; }; - AF9113FD1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9113FB1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.cpp */; }; - AF9113FE1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.h in Headers */ = {isa = PBXBuildFile; fileRef = AF9113FC1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.h */; }; - 267F684F1CC02E270086832B /* RegisterContextPOSIXCore_s390x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267F684D1CC02E270086832B /* RegisterContextPOSIXCore_s390x.cpp */; }; - 267F68501CC02E270086832B /* RegisterContextPOSIXCore_s390x.h in Headers */ = {isa = PBXBuildFile; fileRef = 267F684E1CC02E270086832B /* RegisterContextPOSIXCore_s390x.h */; }; - 26BC17AF18C7F4CB00D2196D /* RegisterContextPOSIXCore_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC17A618C7F4CB00D2196D /* RegisterContextPOSIXCore_x86_64.cpp */; }; - 256CBDC01ADD11C000BC6CDC /* RegisterContextPOSIX_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 256CBDBE1ADD11C000BC6CDC /* RegisterContextPOSIX_arm.cpp */; }; - E7723D4C1AC4A944002BA082 /* RegisterContextPOSIX_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7723D4A1AC4A944002BA082 /* RegisterContextPOSIX_arm64.cpp */; }; - 26474CCB18D0CB5B0073DEBA /* RegisterContextPOSIX_mips64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CC418D0CB5B0073DEBA /* RegisterContextPOSIX_mips64.cpp */; }; - AF77E0A41A033D360096C0EA /* RegisterContextPOSIX_powerpc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF77E09D1A033D360096C0EA /* RegisterContextPOSIX_powerpc.cpp */; }; - AF235EB01FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF235EAE1FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.cpp */; }; - AF235EB11FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.h in Headers */ = {isa = PBXBuildFile; fileRef = AF235EAF1FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.h */; }; - 267F68571CC02EAE0086832B /* RegisterContextPOSIX_s390x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267F68551CC02EAE0086832B /* RegisterContextPOSIX_s390x.cpp */; }; - 267F68581CC02EAE0086832B /* RegisterContextPOSIX_s390x.h in Headers */ = {isa = PBXBuildFile; fileRef = 267F68561CC02EAE0086832B /* RegisterContextPOSIX_s390x.h */; }; - 26474CCD18D0CB5B0073DEBA /* RegisterContextPOSIX_x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26474CC618D0CB5B0073DEBA /* RegisterContextPOSIX_x86.cpp */; }; - 26CA97A1172B1FD5005DC71B /* RegisterContextThreadMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26CA979F172B1FD5005DC71B /* RegisterContextThreadMemory.cpp */; }; - 9A77AD541E64E2760025CE04 /* RegisterInfoPOSIX_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A77AD501E64E24E0025CE04 /* RegisterInfoPOSIX_arm.cpp */; }; - 237A8BAF1DEC9C7800CEBAFF /* RegisterInfoPOSIX_arm64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 237A8BAB1DEC9BBC00CEBAFF /* RegisterInfoPOSIX_arm64.cpp */; }; - AF235EB51FBE7858009C5541 /* RegisterInfoPOSIX_ppc64le.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF235EB31FBE7858009C5541 /* RegisterInfoPOSIX_ppc64le.cpp */; }; - AF235EB41FBE7858009C5541 /* RegisterInfoPOSIX_ppc64le.h in Headers */ = {isa = PBXBuildFile; fileRef = AF235EB21FBE7857009C5541 /* RegisterInfoPOSIX_ppc64le.h */; }; - 267F685A1CC02EBE0086832B /* RegisterInfos_s390x.h in Headers */ = {isa = PBXBuildFile; fileRef = 267F68591CC02EBE0086832B /* RegisterInfos_s390x.h */; }; - 2654A6831E54D5E200DA1013 /* RegisterNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2654A6821E54D5E200DA1013 /* RegisterNumber.cpp */; }; - 4CA9D1401FCE07CD00300E18 /* RegisterUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CA9D13C1FCE07AF00300E18 /* RegisterUtilities.cpp */; }; - 26A69C5F137A17A500262477 /* RegisterValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C6886E137880C400407EDF /* RegisterValue.cpp */; }; - 4C639ED221FA684900A7B957 /* RegisterValueTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC421FA684800A7B957 /* RegisterValueTest.cpp */; }; - 26764CA01E48F528008D3573 /* RegularExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26764C9F1E48F528008D3573 /* RegularExpression.cpp */; }; - 26501414221330CE00E16D81 /* RemoteAwarePlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26501413221330CE00E16D81 /* RemoteAwarePlatform.cpp */; }; - 23D0658F1D4A7BEE0008EDE6 /* RenderScriptExpressionOpts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23D065821D4A7BDA0008EDE6 /* RenderScriptExpressionOpts.cpp */; }; - 23D065901D4A7BEE0008EDE6 /* RenderScriptRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23D065841D4A7BDA0008EDE6 /* RenderScriptRuntime.cpp */; }; - 9485545A1DCBAE3B00345FF5 /* RenderScriptScriptGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 948554591DCBAE3B00345FF5 /* RenderScriptScriptGroup.cpp */; }; - 23D065911D4A7BEE0008EDE6 /* RenderScriptx86ABIFixups.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23D065861D4A7BDA0008EDE6 /* RenderScriptx86ABIFixups.cpp */; }; - AFCB1D5F219CD5EA00730AD5 /* Reproducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFCB1D5E219CD5EA00730AD5 /* Reproducer.cpp */; }; - DD6C13BB220A6F22005C2AE8 /* ReproducerInstrumentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD6C13BA220A6F21005C2AE8 /* ReproducerInstrumentation.cpp */; }; - DD6C13BD220A6F6A005C2AE8 /* ReproducerInstrumentationTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD6C13BC220A6F6A005C2AE8 /* ReproducerInstrumentationTest.cpp */; }; - 4C639ECF21FA684900A7B957 /* ReproducerTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC121FA684700A7B957 /* ReproducerTest.cpp */; }; - 4FBC04ED211A06200015A814 /* RichManglingContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBC04EC211A06200015A814 /* RichManglingContext.cpp */; }; - 4FBC04EF211A06820015A814 /* RichManglingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FBC04EE211A06820015A814 /* RichManglingContext.h */; }; - 4FBC04F5211A13770015A814 /* RichManglingContextTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4FBC04F3211A0F0F0015A814 /* RichManglingContextTest.cpp */; }; - 26DE204511618ADA00A093E2 /* SBAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE204411618ADA00A093E2 /* SBAddress.cpp */; }; - 26DE204311618ACA00A093E2 /* SBAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE204211618ACA00A093E2 /* SBAddress.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 254FBBA51A91670E00BD6378 /* SBAttachInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 254FBBA41A91670E00BD6378 /* SBAttachInfo.cpp */; }; - 254FBBA31A9166F100BD6378 /* SBAttachInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 254FBBA21A9166F100BD6378 /* SBAttachInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE20611161902700A093E2 /* SBBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE20601161902600A093E2 /* SBBlock.cpp */; }; - 26DE205711618FC500A093E2 /* SBBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE205611618FC500A093E2 /* SBBlock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680337116005F1008E1FE4 /* SBBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AF16A9C11402D5B007A7B3F /* SBBreakpoint.cpp */; }; - 26680219115FD13D008E1FE4 /* SBBreakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AF16A9E11402D69007A7B3F /* SBBreakpoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680336116005EF008E1FE4 /* SBBreakpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AF16CC7114086A1007A7B3F /* SBBreakpointLocation.cpp */; }; - 2668021A115FD13D008E1FE4 /* SBBreakpointLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AF16CC611408686007A7B3F /* SBBreakpointLocation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4C54B27E1F61CE6300D469CA /* SBBreakpointName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C54B27C1F61CE5300D469CA /* SBBreakpointName.cpp */; }; - 4C54B27B1F61CE2800D469CA /* SBBreakpointName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C54B2781F61CE1200D469CA /* SBBreakpointName.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4C05332B1F62121E00DED368 /* SBBreakpointOptionCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0533291F6211FB00DED368 /* SBBreakpointOptionCommon.cpp */; }; - 26680335116005EE008E1FE4 /* SBBroadcaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9830F21125FC5800A56CB0 /* SBBroadcaster.cpp */; }; - 2668021B115FD13D008E1FE4 /* SBBroadcaster.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9830F31125FC5800A56CB0 /* SBBroadcaster.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680333116005EC008E1FE4 /* SBCommandInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9830F61125FC5800A56CB0 /* SBCommandInterpreter.cpp */; }; - 2668021D115FD13D008E1FE4 /* SBCommandInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9830F71125FC5800A56CB0 /* SBCommandInterpreter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680332116005EA008E1FE4 /* SBCommandReturnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9830F81125FC5800A56CB0 /* SBCommandReturnObject.cpp */; }; - 2668021E115FD13D008E1FE4 /* SBCommandReturnObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9830F91125FC5800A56CB0 /* SBCommandReturnObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680331116005E9008E1FE4 /* SBCommunication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260223E8115F06E500A601A2 /* SBCommunication.cpp */; }; - 2668021F115FD13D008E1FE4 /* SBCommunication.h in Headers */ = {isa = PBXBuildFile; fileRef = 260223E7115F06D500A601A2 /* SBCommunication.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE205F1161901B00A093E2 /* SBCompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE205E1161901B00A093E2 /* SBCompileUnit.cpp */; }; - 26DE205511618FB800A093E2 /* SBCompileUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE205411618FB800A093E2 /* SBCompileUnit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9443B122140C18C40013457C /* SBData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9443B121140C18C10013457C /* SBData.cpp */; }; - 9443B123140C26AB0013457C /* SBData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9443B120140C18A90013457C /* SBData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680330116005E7008E1FE4 /* SBDebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9830FA1125FC5800A56CB0 /* SBDebugger.cpp */; }; - 26680220115FD13D008E1FE4 /* SBDebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9830FB1125FC5800A56CB0 /* SBDebugger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9452573A16262D0200325455 /* SBDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9452573916262D0200325455 /* SBDeclaration.cpp */; }; - 490A966B1628C3BF00F0002E /* SBDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9452573816262CEF00325455 /* SBDeclaration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680221115FD13D008E1FE4 /* SBDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9830FC1125FC5800A56CB0 /* SBDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2668032F116005E6008E1FE4 /* SBError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2682F284115EF3A700CCFF99 /* SBError.cpp */; }; - 26680222115FD13D008E1FE4 /* SBError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2682F286115EF3BD00CCFF99 /* SBError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2668032E116005E5008E1FE4 /* SBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9830FD1125FC5800A56CB0 /* SBEvent.cpp */; }; - 26680223115FD13D008E1FE4 /* SBEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9830FE1125FC5800A56CB0 /* SBEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 940B02F619DC96E700AD0F52 /* SBExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940B02F519DC96E700AD0F52 /* SBExecutionContext.cpp */; }; - AFDCDBCB19DD0F42005EA55E /* SBExecutionContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 940B02F419DC96CB00AD0F52 /* SBExecutionContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4CE4F675162C973F00F75CB3 /* SBExpressionOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F674162C973F00F75CB3 /* SBExpressionOptions.cpp */; }; - 4CE4F673162C971A00F75CB3 /* SBExpressionOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CE4F672162C971A00F75CB3 /* SBExpressionOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2668032D116005E3008E1FE4 /* SBFileSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26022532115F281400A601A2 /* SBFileSpec.cpp */; }; - 26680224115FD13D008E1FE4 /* SBFileSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 26022531115F27FA00A601A2 /* SBFileSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4CF52AF8142829390051E832 /* SBFileSpecList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CF52AF7142829390051E832 /* SBFileSpecList.cpp */; }; - 4CF52AF51428291E0051E832 /* SBFileSpecList.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CF52AF41428291E0051E832 /* SBFileSpecList.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2668032C116005E2008E1FE4 /* SBFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A633FE7112DCE3C001A7E43 /* SBFrame.cpp */; }; - 26680225115FD13D008E1FE4 /* SBFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A633FE8112DCE3C001A7E43 /* SBFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE205D1161901400A093E2 /* SBFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE205C1161901400A093E2 /* SBFunction.cpp */; }; - 26DE205311618FAC00A093E2 /* SBFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE205211618FAC00A093E2 /* SBFunction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A3576AA116E9AC700E8ED2F /* SBHostOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */; }; - 9A3576A8116E9AB700E8ED2F /* SBHostOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A3576A7116E9AB700E8ED2F /* SBHostOS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9AC703AF117675410086C050 /* SBInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703AE117675410086C050 /* SBInstruction.cpp */; }; - 9AC7038E117674FB0086C050 /* SBInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AC7038D117674EB0086C050 /* SBInstruction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9AC703B1117675490086C050 /* SBInstructionList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703B0117675490086C050 /* SBInstructionList.cpp */; }; - 9AC70390117675270086C050 /* SBInstructionList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AC7038F117675270086C050 /* SBInstructionList.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 964381701C8D6B8200023D59 /* SBLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF20F76C1AF18FC700751A6E /* SBLanguageRuntime.cpp */; }; - 332CCB181AFF41620034D4C4 /* SBLanguageRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 3392EBB71AFF402200858B9F /* SBLanguageRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 254FBB951A81AA7F00BD6378 /* SBLaunchInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 254FBB941A81AA7F00BD6378 /* SBLaunchInfo.cpp */; }; - 254FBB971A81B03100BD6378 /* SBLaunchInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 254FBB961A81B03100BD6378 /* SBLaunchInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE20631161904200A093E2 /* SBLineEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE20621161904200A093E2 /* SBLineEntry.cpp */; }; - 26DE205911618FE700A093E2 /* SBLineEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE205811618FE700A093E2 /* SBLineEntry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2668032A116005E0008E1FE4 /* SBListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9831011125FC5800A56CB0 /* SBListener.cpp */; }; - 26680227115FD13D008E1FE4 /* SBListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9831021125FC5800A56CB0 /* SBListener.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23DCEA461D1C4D0F00A602B4 /* SBMemoryRegionInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23DCEA421D1C4C6900A602B4 /* SBMemoryRegionInfo.cpp */; }; - 264297581D1DF250003F2BF4 /* SBMemoryRegionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 264297531D1DF209003F2BF4 /* SBMemoryRegionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23DCEA471D1C4D0F00A602B4 /* SBMemoryRegionInfoList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23DCEA431D1C4C6900A602B4 /* SBMemoryRegionInfoList.cpp */; }; - 264297571D1DF247003F2BF4 /* SBMemoryRegionInfoList.h in Headers */ = {isa = PBXBuildFile; fileRef = 264297541D1DF209003F2BF4 /* SBMemoryRegionInfoList.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE204D11618E7A00A093E2 /* SBModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE204C11618E7A00A093E2 /* SBModule.cpp */; }; - 26DE204F11618E9800A093E2 /* SBModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE204E11618E9800A093E2 /* SBModule.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 263C4938178B50C40070F12D /* SBModuleSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263C4937178B50C40070F12D /* SBModuleSpec.cpp */; }; - 263C493A178B50CF0070F12D /* SBModuleSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 263C4939178B50CF0070F12D /* SBModuleSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 262F12B51835468600AEB384 /* SBPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 262F12B41835468600AEB384 /* SBPlatform.cpp */; }; - 262F12B71835469C00AEB384 /* SBPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 262F12B61835469C00AEB384 /* SBPlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680328116005DE008E1FE4 /* SBProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9831031125FC5800A56CB0 /* SBProcess.cpp */; }; - 2668022A115FD13D008E1FE4 /* SBProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9831041125FC5800A56CB0 /* SBProcess.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4971D4B51F30ECFB00823171 /* SBProcessInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4987FB1E1F30EC7E00E5C17D /* SBProcessInfo.cpp */; }; - 4C877B391F30EF990068FCFB /* SBProcessInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4987FB201F30EC9900E5C17D /* SBProcessInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF0EBBE8185940FB0059E52F /* SBQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0EBBE6185940FB0059E52F /* SBQueue.cpp */; }; - AF0EBBEC185941360059E52F /* SBQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = AF0EBBEA185941360059E52F /* SBQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF0EBBE9185940FB0059E52F /* SBQueueItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0EBBE7185940FB0059E52F /* SBQueueItem.cpp */; }; - AF0EBBED185941360059E52F /* SBQueueItem.h in Headers */ = {isa = PBXBuildFile; fileRef = AF0EBBEB185941360059E52F /* SBQueueItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD1E0ACE220BC3A100B815F8 /* SBReproducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD1E0AC9220B660100B815F8 /* SBReproducer.cpp */; }; - DD1E0AD1220BC3DC00B815F8 /* SBReproducer.h in Headers */ = {isa = PBXBuildFile; fileRef = DD1E0AD0220BC3D400B815F8 /* SBReproducer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26B82840142D020F002DBC64 /* SBSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B8283F142D020F002DBC64 /* SBSection.cpp */; }; - 26B8283D142D01E9002DBC64 /* SBSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 26B8283C142D01E9002DBC64 /* SBSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680327116005DC008E1FE4 /* SBSourceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9831051125FC5800A56CB0 /* SBSourceManager.cpp */; }; - 2668022B115FD13D008E1FE4 /* SBSourceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9831061125FC5800A56CB0 /* SBSourceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26C72C961243229A0068DC16 /* SBStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C72C951243229A0068DC16 /* SBStream.cpp */; }; - 26C72C94124322890068DC16 /* SBStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C72C93124322890068DC16 /* SBStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A357673116E7B6400E8ED2F /* SBStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A357672116E7B6400E8ED2F /* SBStringList.cpp */; }; - 9A357671116E7B5200E8ED2F /* SBStringList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A357670116E7B5200E8ED2F /* SBStringList.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23DCBEA21D63E7190084C36B /* SBStructuredData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23DCBEA01D63E6440084C36B /* SBStructuredData.cpp */; }; - 23DCBEA31D63E71F0084C36B /* SBStructuredData.h in Headers */ = {isa = PBXBuildFile; fileRef = 23DCBE9F1D63E3800084C36B /* SBStructuredData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE20651161904E00A093E2 /* SBSymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE20641161904E00A093E2 /* SBSymbol.cpp */; }; - 26DE205B11618FF600A093E2 /* SBSymbol.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE205A11618FF600A093E2 /* SBSymbol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE204711618AED00A093E2 /* SBSymbolContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE204611618AED00A093E2 /* SBSymbolContext.cpp */; }; - 26DE204111618AB900A093E2 /* SBSymbolContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE204011618AB900A093E2 /* SBSymbolContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 268F9D55123AA16600B91E9B /* SBSymbolContextList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268F9D54123AA16600B91E9B /* SBSymbolContextList.cpp */; }; - 268F9D53123AA15200B91E9B /* SBSymbolContextList.h in Headers */ = {isa = PBXBuildFile; fileRef = 268F9D52123AA15200B91E9B /* SBSymbolContextList.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680326116005DB008E1FE4 /* SBTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9831071125FC5800A56CB0 /* SBTarget.cpp */; }; - 2668022C115FD13D008E1FE4 /* SBTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A9831081125FC5800A56CB0 /* SBTarget.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26680324116005D9008E1FE4 /* SBThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9831091125FC5800A56CB0 /* SBThread.cpp */; }; - 2668022E115FD13D008E1FE4 /* SBThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A98310A1125FC5800A56CB0 /* SBThread.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CCB018319BA51BF0009FD44 /* SBThreadCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CCB017F19BA4DD00009FD44 /* SBThreadCollection.cpp */; }; - 8CCB018219BA4E270009FD44 /* SBThreadCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CCB018119BA4E210009FD44 /* SBThreadCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4C56543719D22B32002E9C44 /* SBThreadPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C56543619D22B32002E9C44 /* SBThreadPlan.cpp */; }; - 4C56543519D2297A002E9C44 /* SBThreadPlan.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C56543419D2297A002E9C44 /* SBThreadPlan.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A1E595C1EB2B141002206A5 /* SBTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A1E59521EB2B0B9002206A5 /* SBTrace.cpp */; }; - 9A36D24D1EB3BE7F00AAD9EA /* SBTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1E59581EB2B10D002206A5 /* SBTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A1E595D1EB2B141002206A5 /* SBTraceOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A1E59531EB2B0B9002206A5 /* SBTraceOptions.cpp */; }; - 9A36D24E1EB3BE7F00AAD9EA /* SBTraceOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A1E59591EB2B10D002206A5 /* SBTraceOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 261744781168585B005ADD65 /* SBType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 261744771168585B005ADD65 /* SBType.cpp */; }; - 2617447A11685869005ADD65 /* SBType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2617447911685869005ADD65 /* SBType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9475C18814E5E9FA001BFC6D /* SBTypeCategory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9475C18714E5E9FA001BFC6D /* SBTypeCategory.cpp */; }; - 9475C18914E5EA08001BFC6D /* SBTypeCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9475C18514E5E9C5001BFC6D /* SBTypeCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23EFE38B193D1AEC00E54E54 /* SBTypeEnumMember.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23EFE38A193D1AEC00E54E54 /* SBTypeEnumMember.cpp */; }; - 23EFE389193D1ABC00E54E54 /* SBTypeEnumMember.h in Headers */ = {isa = PBXBuildFile; fileRef = 23EFE388193D1ABC00E54E54 /* SBTypeEnumMember.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9461569A14E358A6003A195C /* SBTypeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9461568A14E35621003A195C /* SBTypeFilter.cpp */; }; - 941BCC7F14E48C4000BB969C /* SBTypeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568614E355F2003A195C /* SBTypeFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9461569B14E358A6003A195C /* SBTypeFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9461568B14E35621003A195C /* SBTypeFormat.cpp */; }; - 941BCC8014E48C4000BB969C /* SBTypeFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568714E355F2003A195C /* SBTypeFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9475C18E14E5F834001BFC6D /* SBTypeNameSpecifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9475C18D14E5F834001BFC6D /* SBTypeNameSpecifier.cpp */; }; - 9475C18F14E5F858001BFC6D /* SBTypeNameSpecifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 9475C18C14E5F826001BFC6D /* SBTypeNameSpecifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9461569C14E358A6003A195C /* SBTypeSummary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9461568C14E35621003A195C /* SBTypeSummary.cpp */; }; - 941BCC8114E48C4000BB969C /* SBTypeSummary.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568814E355F2003A195C /* SBTypeSummary.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9461569D14E358A6003A195C /* SBTypeSynthetic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9461568D14E35621003A195C /* SBTypeSynthetic.cpp */; }; - 941BCC8214E48C4000BB969C /* SBTypeSynthetic.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568914E355F2003A195C /* SBTypeSynthetic.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 23059A101958B319007B8189 /* SBUnixSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23059A0F1958B319007B8189 /* SBUnixSignals.cpp */; }; - 23059A121958B3B2007B8189 /* SBUnixSignals.h in Headers */ = {isa = PBXBuildFile; fileRef = 23059A111958B37B007B8189 /* SBUnixSignals.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A19A6B01163BBB300E0D453 /* SBValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A19A6AD1163BB9800E0D453 /* SBValue.cpp */; }; - 9A19A6AF1163BBB200E0D453 /* SBValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A19A6A51163BB7E00E0D453 /* SBValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A35758E116CFE0F00E8ED2F /* SBValueList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A35758D116CFE0F00E8ED2F /* SBValueList.cpp */; }; - 9A357583116CFDEE00E8ED2F /* SBValueList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A357582116CFDEE00E8ED2F /* SBValueList.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 94235B9E1A8D667400EB2EED /* SBVariablesOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94235B9B1A8D5FF300EB2EED /* SBVariablesOptions.cpp */; }; - 94235B9F1A8D66D600EB2EED /* SBVariablesOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 94235B9A1A8D5FD800EB2EED /* SBVariablesOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2A58724143119D50092BFBA /* SBWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2A58723143119D50092BFBA /* SBWatchpoint.cpp */; }; - B2A58722143119810092BFBA /* SBWatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A58721143119810092BFBA /* SBWatchpoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2689004913353E0400698AC0 /* Scalar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8D10F1B85900F91463 /* Scalar.cpp */; }; - 23CB15441D66DA9300EDDDE1 /* ScalarTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23CB14E91D66CC0E00EDDDE1 /* ScalarTest.cpp */; }; - 2689008713353E2200698AC0 /* ScriptInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A82010B10FFB49800182560 /* ScriptInterpreter.cpp */; }; - 3FBA69E11B6067120008F44A /* ScriptInterpreterNone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FBA69DD1B6067020008F44A /* ScriptInterpreterNone.cpp */; }; - 3FBA69ED1B60674B0008F44A /* ScriptInterpreterPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FBA69E51B60672A0008F44A /* ScriptInterpreterPython.cpp */; }; - 2689004A13353E0400698AC0 /* SearchFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1510F1B83100F91463 /* SearchFilter.cpp */; }; - 2689004B13353E0400698AC0 /* Section.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8E10F1B85900F91463 /* Section.cpp */; }; - 262173A318395D4600C52091 /* SectionLoadHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 262173A218395D4600C52091 /* SectionLoadHistory.cpp */; }; - 268900F213353E6F00698AC0 /* SectionLoadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618D7911240116900F2B8FE /* SectionLoadList.cpp */; }; - 4CF3D80C15AF4DC800845BF3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EDB919B414F6F10D008FF64B /* Security.framework */; }; - 26A375811D59462700D6CBDB /* SelectHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A3757F1D59462700D6CBDB /* SelectHelper.cpp */; }; - 2689011013353E8200698AC0 /* SharingPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 261B5A5211C3F2AD00AABD0A /* SharingPtr.cpp */; }; - 26151DC31B41E4A200FF7F1C /* SharingPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 261B5A5311C3F2AD00AABD0A /* SharingPtr.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 236124A51986B4E2004EFC37 /* Socket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 236124A31986B4E2004EFC37 /* Socket.cpp */; }; - 26D7E45D13D5E30A007FD12B /* SocketAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D7E45C13D5E30A007FD12B /* SocketAddress.cpp */; }; - 23CB15451D66DA9300EDDDE1 /* SocketAddressTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F9391BDD332400BA9A93 /* SocketAddressTest.cpp */; }; - 23CB153B1D66DA9300EDDDE1 /* SocketTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F93A1BDD332400BA9A93 /* SocketTest.cpp */; }; - 26FCE61C229F00F000D125BD /* SocketTestUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FCE61B229F00F000D125BD /* SocketTestUtilities.cpp */; }; - 26603879211CA90F00329572 /* SourceBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26603870211CA90D00329572 /* SourceBreakpoint.cpp */; }; - 2689004C13353E0400698AC0 /* SourceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8F10F1B85900F91463 /* SourceManager.cpp */; }; - 268900F313353E6F00698AC0 /* StackFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3810F1B90C00F91463 /* StackFrame.cpp */; }; - 268900F413353E6F00698AC0 /* StackFrameList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3910F1B90C00F91463 /* StackFrameList.cpp */; }; - 8CF46A6220522A9800423DDF /* StackFrameRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CF46A6120522A9000423DDF /* StackFrameRecognizer.cpp */; }; - 268900F513353E6F00698AC0 /* StackID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3A10F1B90C00F91463 /* StackID.cpp */; }; - 2689004D13353E0400698AC0 /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9010F1B85900F91463 /* State.cpp */; }; - 9A3D43ED1F3237F900EB767C /* StateTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43E21F3237D500EB767C /* StateTest.cpp */; }; - 492DB7EB1EC662E200B9E9AF /* Status.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 492DB7E81EC662D100B9E9AF /* Status.cpp */; }; - 9A3D43D91F3151C400EB767C /* StatusTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43C61F3150D200EB767C /* StatusTest.cpp */; }; - 268900F613353E6F00698AC0 /* StopInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2615DB861208A9E40021781D /* StopInfo.cpp */; }; - 268900B513353E5000698AC0 /* StopInfoMachException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2615DBC81208B5FC0021781D /* StopInfoMachException.cpp */; }; - 2689000B13353DB600698AC0 /* Stoppoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1610F1B83100F91463 /* Stoppoint.cpp */; }; - 2689000D13353DB600698AC0 /* StoppointCallbackContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0910F1B83100F91463 /* StoppointCallbackContext.cpp */; }; - 2689000F13353DB600698AC0 /* StoppointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1710F1B83100F91463 /* StoppointLocation.cpp */; }; - 26764C9E1E48F51E008D3573 /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26764C9D1E48F51E008D3573 /* Stream.cpp */; }; - 9A4F35101368A51A00823F52 /* StreamAsynchronousIO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4F350F1368A51A00823F52 /* StreamAsynchronousIO.cpp */; }; - AFC2DCF61E6E316A00283714 /* StreamCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC2DCF51E6E316A00283714 /* StreamCallback.cpp */; }; - 9A3D43EE1F3237F900EB767C /* StreamCallbackTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43E11F3237D500EB767C /* StreamCallbackTest.cpp */; }; - 2689004F13353E0400698AC0 /* StreamFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9210F1B85900F91463 /* StreamFile.cpp */; }; - AFC2DCF91E6E318000283714 /* StreamGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC2DCF81E6E318000283714 /* StreamGDBRemote.cpp */; }; - 26764CA21E48F547008D3573 /* StreamString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26764CA11E48F547008D3573 /* StreamString.cpp */; }; - 58EAC73F2106A07B0029571E /* StreamTeeTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58EAC73D2106A0740029571E /* StreamTeeTest.cpp */; }; - 4C639ECD21FA684900A7B957 /* StreamTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EBF21FA684700A7B957 /* StreamTest.cpp */; }; - 33E5E8471A674FB60024ED68 /* StringConvert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33E5E8411A672A240024ED68 /* StringConvert.cpp */; }; - 2689011113353E8200698AC0 /* StringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9F611922A1300958FBD /* StringExtractor.cpp */; }; - 2689011213353E8200698AC0 /* StringExtractorGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */; }; - 23CB15411D66DA9300EDDDE1 /* StringExtractorTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F9441BDD346100BA9A93 /* StringExtractorTest.cpp */; }; - 94380B8219940B0A00BFE4A8 /* StringLexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94380B8119940B0A00BFE4A8 /* StringLexer.cpp */; }; - 4C639ED421FA684900A7B957 /* StringLexerTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC621FA684800A7B957 /* StringLexerTest.cpp */; }; - 2689005113353E0400698AC0 /* StringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A35765F116E76B900E8ED2F /* StringList.cpp */; }; - 4C639ECC21FA684900A7B957 /* StringListTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EBE21FA684600A7B957 /* StringListTest.cpp */; }; - 94F48F251A01C687005C0EC6 /* StringPrinter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94F48F241A01C687005C0EC6 /* StringPrinter.cpp */; }; - AFEC3362194A8ABA00FF05C6 /* StructuredData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEC3361194A8ABA00FF05C6 /* StructuredData.cpp */; }; - 238F2BA81D2C85FA001FF92A /* StructuredDataDarwinLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 238F2BA61D2C85FA001FF92A /* StructuredDataDarwinLog.cpp */; }; - 238F2BA91D2C85FA001FF92A /* StructuredDataDarwinLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 238F2BA71D2C85FA001FF92A /* StructuredDataDarwinLog.h */; }; - 238F2B9E1D2C82D0001FF92A /* StructuredDataPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 238F2B9D1D2C82D0001FF92A /* StructuredDataPlugin.cpp */; }; - 238F2BA11D2C835A001FF92A /* StructuredDataPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 238F2B9F1D2C835A001FF92A /* StructuredDataPlugin.h */; }; - 9A3D43DA1F3151C400EB767C /* StructuredDataTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43CA1F3150D200EB767C /* StructuredDataTest.cpp */; }; - 268900DD13353E6F00698AC0 /* Symbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1B10F1B8EC00F91463 /* Symbol.cpp */; }; - 268900DE13353E6F00698AC0 /* SymbolContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1C10F1B8EC00F91463 /* SymbolContext.cpp */; }; - 268900DF13353E6F00698AC0 /* SymbolFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1D10F1B8EC00F91463 /* SymbolFile.cpp */; }; - AF97744721E9947E006876A7 /* SymbolFileBreakpad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF97744621E9947B006876A7 /* SymbolFileBreakpad.cpp */; }; - 268900CA13353E5F00698AC0 /* SymbolFileDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D910F57C5600BB2B04 /* SymbolFileDWARF.cpp */; }; - 268900CC13353E5F00698AC0 /* SymbolFileDWARFDebugMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89DB10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.cpp */; }; - 6D95DC021B9DC057000E318A /* SymbolFileDWARFDwo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */; }; - 4C7D48251F5099B2005314B4 /* SymbolFileDWARFDwoDwp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D481F1F509964005314B4 /* SymbolFileDWARFDwoDwp.cpp */; }; - 4C7D48241F5099A1005314B4 /* SymbolFileDWARFDwp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D481C1F509963005314B4 /* SymbolFileDWARFDwp.cpp */; }; - 9A2057121F3B824B00F6C293 /* SymbolFileDWARFTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A20570A1F3B81F300F6C293 /* SymbolFileDWARFTests.cpp */; }; - AFD966BB217140B6006714AC /* SymbolFileNativePDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFD966B7217140B6006714AC /* SymbolFileNativePDB.cpp */; }; - AF6335E21C87B21E00F7D554 /* SymbolFilePDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF6335E01C87B21E00F7D554 /* SymbolFilePDB.cpp */; }; - 268900CE13353E5F00698AC0 /* SymbolFileSymtab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89DE10F57C5600BB2B04 /* SymbolFileSymtab.cpp */; }; - 268900E013353E6F00698AC0 /* SymbolVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF94005711C03F6500085DB9 /* SymbolVendor.cpp */; }; - 2635879417822FC2004C30BA /* SymbolVendorELF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2635879017822E56004C30BA /* SymbolVendorELF.cpp */; }; - 268900CF13353E5F00698AC0 /* SymbolVendorMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89E210F57C5600BB2B04 /* SymbolVendorMacOSX.cpp */; }; - 268900E113353E6F00698AC0 /* Symtab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1F10F1B8EC00F91463 /* Symtab.cpp */; }; - 3F8169311ABB7A6D001DA9DF /* SystemInitializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F81692E1ABB7A6D001DA9DF /* SystemInitializer.cpp */; }; - 3F8169321ABB7A6D001DA9DF /* SystemInitializerCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F81692F1ABB7A6D001DA9DF /* SystemInitializerCommon.cpp */; }; - 3F81692C1ABB7A1E001DA9DF /* SystemInitializerFull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F81692A1ABB7A16001DA9DF /* SystemInitializerFull.cpp */; }; - 4CD44D2220B725DA0003557C /* SystemInitializerLLGS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD44D2020B725DA0003557C /* SystemInitializerLLGS.cpp */; }; - 3F8169331ABB7A6D001DA9DF /* SystemLifetimeManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F8169301ABB7A6D001DA9DF /* SystemLifetimeManager.cpp */; }; - AF81DEFA1828A23F0042CF19 /* SystemRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF81DEF91828A23F0042CF19 /* SystemRuntime.cpp */; }; - 238F2BA21D2C835A001FF92A /* SystemRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 238F2BA01D2C835A001FF92A /* SystemRuntime.h */; }; - AF9B8F33182DB52900DA866F /* SystemRuntimeMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9B8F31182DB52900DA866F /* SystemRuntimeMacOSX.cpp */; }; - 2579065C1BD0488100178368 /* TCPSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2579065A1BD0488100178368 /* TCPSocket.cpp */; }; - 8C26C4261C3EA5F90031DF7C /* TSanRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C26C4241C3EA4340031DF7C /* TSanRuntime.cpp */; }; - 268900F713353E6F00698AC0 /* Target.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3B10F1B90C00F91463 /* Target.cpp */; }; - 268900F813353E6F00698AC0 /* TargetList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3C10F1B90C00F91463 /* TargetList.cpp */; }; - 6DEC6F391BD66D750091ABA6 /* TaskPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DEC6F381BD66D750091ABA6 /* TaskPool.cpp */; }; - 23CB15421D66DA9300EDDDE1 /* TaskPoolTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F9451BDD346100BA9A93 /* TaskPoolTest.cpp */; }; - 2689007413353E1A00698AC0 /* Terminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268DA873130095ED00C9483A /* Terminal.cpp */; }; - AFEABBF72230BF840097046F /* TestArm64Disassembly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEABBF62230BF840097046F /* TestArm64Disassembly.cpp */; }; - 4CEC86A4204738C5009B37B1 /* TestArm64InstEmulation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CEC86A3204738C5009B37B1 /* TestArm64InstEmulation.cpp */; }; - AF7F97682141FA4500795BC0 /* TestArmv7Disassembly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF7F97662141FA3800795BC0 /* TestArmv7Disassembly.cpp */; }; - 23CB15401D66DA9300EDDDE1 /* TestClangASTContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 23CB150C1D66CF5600EDDDE1 /* TestClangASTContext.cpp */; }; - 9A20572D1F3B8E6600F6C293 /* TestCompletion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A20572B1F3B8E6200F6C293 /* TestCompletion.cpp */; }; - 9A2057171F3B861400F6C293 /* TestDWARFCallFrameInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2057131F3B860D00F6C293 /* TestDWARFCallFrameInfo.cpp */; }; - 9A2057291F3B8DDB00F6C293 /* TestObjectFileELF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2057251F3B8DD200F6C293 /* TestObjectFileELF.cpp */; }; - 4C719399207D23E300FDF430 /* TestOptionArgParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C719398207D23E300FDF430 /* TestOptionArgParser.cpp */; }; - 4CEC86A7204738EB009B37B1 /* TestPPC64InstEmulation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CEC86A6204738EA009B37B1 /* TestPPC64InstEmulation.cpp */; }; - 9A2057181F3B861400F6C293 /* TestType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2057141F3B860D00F6C293 /* TestType.cpp */; }; - 9A18903C1F47D5E600394BCA /* TestUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A1890341F47D5D400394BCA /* TestUtilities.cpp */; }; - AFEC5FD81D94F9380076A480 /* Testx86AssemblyInspectionEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFEC5FD51D94F9380076A480 /* Testx86AssemblyInspectionEngine.cpp */; }; - 268900F913353E6F00698AC0 /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3D10F1B90C00F91463 /* Thread.cpp */; }; - 8CCB017E19BA28A80009FD44 /* ThreadCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CCB017A19BA283D0009FD44 /* ThreadCollection.cpp */; }; - 26BC17B118C7F4CB00D2196D /* ThreadElfCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC17A818C7F4CB00D2196D /* ThreadElfCore.cpp */; }; - 268900A113353E4200698AC0 /* ThreadGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE631315B29C001D6D71 /* ThreadGDBRemote.cpp */; }; - 2628A4D513D4977900F5487A /* ThreadKDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2628A4D313D4977900F5487A /* ThreadKDP.cpp */; }; - 3FDFED2919BA6D96009756A7 /* ThreadLauncher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FDFED2619BA6D96009756A7 /* ThreadLauncher.cpp */; }; - 268900FA13353E6F00698AC0 /* ThreadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3E10F1B90C00F91463 /* ThreadList.cpp */; }; - 26A527C314E24F5F00F3A14A /* ThreadMachCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A527BF14E24F5F00F3A14A /* ThreadMachCore.cpp */; }; - 26F4A21C13FBA31A0064B613 /* ThreadMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F4A21A13FBA31A0064B613 /* ThreadMemory.cpp */; }; - 947CF7771DC7B20D00EF980B /* ThreadMinidump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 947CF7751DC7B20D00EF980B /* ThreadMinidump.cpp */; }; - 268900FB13353E6F00698AC0 /* ThreadPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3F10F1B90C00F91463 /* ThreadPlan.cpp */; }; - 268900FC13353E6F00698AC0 /* ThreadPlanBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847110F50EFC00BB2B04 /* ThreadPlanBase.cpp */; }; - 268900FD13353E6F00698AC0 /* ThreadPlanCallFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EC3E98118F90AC00B1265E /* ThreadPlanCallFunction.cpp */; }; - EB8375E71B553DE800BA907D /* ThreadPlanCallFunctionUsingABI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB8375E61B553DE800BA907D /* ThreadPlanCallFunctionUsingABI.cpp */; }; - 230EC45B1D63C3BA008DF59F /* ThreadPlanCallOnFunctionExit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 230EC4581D63C3A7008DF59F /* ThreadPlanCallOnFunctionExit.cpp */; }; - 268900FE13353E6F00698AC0 /* ThreadPlanCallUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7CF7E51295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp */; }; - 4C56543119D1EFAA002E9C44 /* ThreadPlanPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C56543019D1EFAA002E9C44 /* ThreadPlanPython.cpp */; }; - 2689010613353E6F00698AC0 /* ThreadPlanRunToAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CAFCE031101218900CA63DB /* ThreadPlanRunToAddress.cpp */; }; - 268900FF13353E6F00698AC0 /* ThreadPlanShouldStopHere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DEFA110641F300E55CBF /* ThreadPlanShouldStopHere.cpp */; }; - 2689010413353E6F00698AC0 /* ThreadPlanStepInRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DF8911069C3200E55CBF /* ThreadPlanStepInRange.cpp */; }; - 2689010013353E6F00698AC0 /* ThreadPlanStepInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847210F50EFC00BB2B04 /* ThreadPlanStepInstruction.cpp */; }; - 2689010113353E6F00698AC0 /* ThreadPlanStepOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847310F50EFC00BB2B04 /* ThreadPlanStepOut.cpp */; }; - 2689010213353E6F00698AC0 /* ThreadPlanStepOverBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847410F50EFC00BB2B04 /* ThreadPlanStepOverBreakpoint.cpp */; }; - 2689010513353E6F00698AC0 /* ThreadPlanStepOverRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DF8A11069C3200E55CBF /* ThreadPlanStepOverRange.cpp */; }; - 2689010313353E6F00698AC0 /* ThreadPlanStepRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847610F50EFC00BB2B04 /* ThreadPlanStepRange.cpp */; }; - 2689010713353E6F00698AC0 /* ThreadPlanStepThrough.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847510F50EFC00BB2B04 /* ThreadPlanStepThrough.cpp */; }; - 2689010813353E6F00698AC0 /* ThreadPlanStepUntil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9FE11922A7F00958FBD /* ThreadPlanStepUntil.cpp */; }; - 2689010A13353E6F00698AC0 /* ThreadPlanTracer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CC2A148128C73ED001531C4 /* ThreadPlanTracer.cpp */; }; - 2689010B13353E6F00698AC0 /* ThreadSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C08CDE711C81EF8001610A8 /* ThreadSpec.cpp */; }; - AFF8FF0C1E779D4B003830EF /* TildeExpressionResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFF8FF0B1E779D4B003830EF /* TildeExpressionResolver.cpp */; }; - 9A3D43DB1F3151C400EB767C /* TildeExpressionResolverTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43C91F3150D200EB767C /* TildeExpressionResolverTest.cpp */; }; - 9A3D43DC1F3151C400EB767C /* TimeoutTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43CC1F3150D200EB767C /* TimeoutTest.cpp */; }; - 2689005213353E0400698AC0 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9610F1B85900F91463 /* Timer.cpp */; }; - 9A3D43DD1F3151C400EB767C /* TimerTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43C51F3150D200EB767C /* TimerTest.cpp */; }; - 268900E213353E6F00698AC0 /* Type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2010F1B8EC00F91463 /* Type.cpp */; }; - 94CB256616B096F10059775D /* TypeCategory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256416B096F10059775D /* TypeCategory.cpp */; }; - 94CB256716B096F10059775D /* TypeCategoryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256516B096F10059775D /* TypeCategoryMap.cpp */; }; - 94CB257016B0A4270059775D /* TypeFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256D16B0A4260059775D /* TypeFormat.cpp */; }; - 268900E313353E6F00698AC0 /* TypeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2110F1B8EC00F91463 /* TypeList.cpp */; }; - 6D9AB3DD1BB2B74E003F2289 /* TypeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */; }; - 94CB257116B0A4270059775D /* TypeSummary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256E16B0A4260059775D /* TypeSummary.cpp */; }; - 94CB257216B0A4270059775D /* TypeSynthetic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256F16B0A4270059775D /* TypeSynthetic.cpp */; }; - AEEA34051AC88A7400AB639D /* TypeSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AEEA34041AC88A7400AB639D /* TypeSystem.cpp */; }; - 94CD131A19BA33B400DB7BED /* TypeValidator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD131919BA33B400DB7BED /* TypeValidator.cpp */; }; - 54067BF11DF2041B00749AA5 /* UBSanRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54067BEC1DF2034B00749AA5 /* UBSanRuntime.cpp */; }; - 2579065D1BD0488100178368 /* UDPSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2579065B1BD0488100178368 /* UDPSocket.cpp */; }; - 49CA97001E6AACC900C03FEE /* UUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CA96EA1E6AAC6600C03FEE /* UUID.cpp */; }; - 4C639ED021FA684900A7B957 /* UUIDTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639EC221FA684700A7B957 /* UUIDTest.cpp */; }; - AF0578C4217FA80700CF9D80 /* UdtRecordCompleter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF0578C2217FA80700CF9D80 /* UdtRecordCompleter.cpp */; }; - 268900CD13353E5F00698AC0 /* UniqueDWARFASTType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B8B42312EEC52A00A831B2 /* UniqueDWARFASTType.cpp */; }; - 2689010C13353E6F00698AC0 /* UnixSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C00987011500B4300F316B0 /* UnixSignals.cpp */; }; - 9A2057201F3B8D2500F6C293 /* UnixSignalsTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A20571E1F3B8D2100F6C293 /* UnixSignalsTest.cpp */; }; - 263E949F13661AEA00E7D1CE /* UnwindAssembly-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263E949D13661AE400E7D1CE /* UnwindAssembly-x86.cpp */; }; - 264D8D5013661BD7003A368F /* UnwindAssembly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264D8D4F13661BD7003A368F /* UnwindAssembly.cpp */; }; - 2692BA15136610C100F9E14D /* UnwindAssemblyInstEmulation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2692BA13136610C100F9E14D /* UnwindAssemblyInstEmulation.cpp */; }; - 268900AF13353E5000698AC0 /* UnwindLLDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF68D32F1255A110002FF25B /* UnwindLLDB.cpp */; }; - 268900B613353E5000698AC0 /* UnwindMacOSXFrameBackchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E3EEE311A9901300FBADB6 /* UnwindMacOSXFrameBackchain.cpp */; }; - 268900E413353E6F00698AC0 /* UnwindPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABB91235DE1600F93A47 /* UnwindPlan.cpp */; }; - 268900E513353E6F00698AC0 /* UnwindTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABBA1235DE1600F93A47 /* UnwindTable.cpp */; }; - AF2BA6EC1A707E3400C5248A /* UriParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33064C991A5C7A330033D415 /* UriParser.cpp */; }; - 23CB15351D66DA9300EDDDE1 /* UriParserTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2321F9461BDD346100BA9A93 /* UriParserTest.cpp */; }; - 4C88BC2D1BA391B000AA0964 /* UserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0083331B9A5DE200D5CF24 /* UserExpression.cpp */; }; - AFC2DCEB1E6E2F7D00283714 /* UserID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC2DCEA1E6E2F7D00283714 /* UserID.cpp */; }; - 4CC57FA2222DFEA40067B7EA /* UserIDResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CC57FA0222DFEA40067B7EA /* UserIDResolver.cpp */; }; - 2689005413353E0400698AC0 /* UserSettingsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4633DC11F65D9A00955CE1 /* UserSettingsController.cpp */; }; - 4C0083401B9F9BA900D5CF24 /* UtilityFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C00833F1B9F9BA900D5CF24 /* UtilityFunction.cpp */; }; - 2654A6901E552ED500DA1013 /* VASprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2654A68F1E552ED500DA1013 /* VASprintf.cpp */; }; - 9A2057031F3A605200F6C293 /* VASprintfTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3D43C41F3150D200EB767C /* VASprintfTest.cpp */; }; - AFC2DCF01E6E2FD200283714 /* VMRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AFC2DCEF1E6E2FD200283714 /* VMRange.cpp */; }; - 4C639ED821FA684900A7B957 /* VMRangeTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C639ECA21FA684900A7B957 /* VMRangeTest.cpp */; }; - 26603878211CA90F00329572 /* VSCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660386E211CA90D00329572 /* VSCode.cpp */; }; - 2689005613353E0400698AC0 /* Value.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9910F1B85900F91463 /* Value.cpp */; }; - 2689005713353E0400698AC0 /* ValueObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9A10F1B85900F91463 /* ValueObject.cpp */; }; - 94094C6B163B6F840083A547 /* ValueObjectCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94094C69163B6CD90083A547 /* ValueObjectCast.cpp */; }; - 2689005813353E0400698AC0 /* ValueObjectChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9B10F1B85900F91463 /* ValueObjectChild.cpp */; }; - 2689005913353E0400698AC0 /* ValueObjectConstResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26424E3C125986CB0016D82C /* ValueObjectConstResult.cpp */; }; - AF1D88691B575E8D003CB899 /* ValueObjectConstResultCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF94726E1B575E430063D65C /* ValueObjectConstResultCast.cpp */; }; - 94FA3DE01405D50400833217 /* ValueObjectConstResultChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94FA3DDF1405D50300833217 /* ValueObjectConstResultChild.cpp */; }; - 949ADF031406F648004833E1 /* ValueObjectConstResultImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949ADF021406F648004833E1 /* ValueObjectConstResultImpl.cpp */; }; - 4CD0BD0F134BFADF00CB44D4 /* ValueObjectDynamicValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CD0BD0E134BFADF00CB44D4 /* ValueObjectDynamicValue.cpp */; }; - 2689005A13353E0400698AC0 /* ValueObjectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9C10F1B85900F91463 /* ValueObjectList.cpp */; }; - 4CABA9E0134A8BCD00539BDD /* ValueObjectMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CABA9DF134A8BCD00539BDD /* ValueObjectMemory.cpp */; }; - 945215DF17F639EE00521C0B /* ValueObjectPrinter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945215DE17F639EE00521C0B /* ValueObjectPrinter.cpp */; }; - 2689005B13353E0400698AC0 /* ValueObjectRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264334381110F63100CDB6C6 /* ValueObjectRegister.cpp */; }; - 94B6E76213D88365005F417F /* ValueObjectSyntheticFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B6E76113D88362005F417F /* ValueObjectSyntheticFilter.cpp */; }; - 2689005C13353E0400698AC0 /* ValueObjectVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9D10F1B85900F91463 /* ValueObjectVariable.cpp */; }; - 268900E613353E6F00698AC0 /* Variable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2210F1B8EC00F91463 /* Variable.cpp */; }; - 268900E713353E6F00698AC0 /* VariableList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2310F1B8EC00F91463 /* VariableList.cpp */; }; - 9418EBCD1AA910910058B02E /* VectorType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9418EBCC1AA910910058B02E /* VectorType.cpp */; }; - 494260DA14579144003C1C78 /* VerifyDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 494260D914579144003C1C78 /* VerifyDecl.cpp */; }; - 2689001113353DB600698AC0 /* Watchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1810F1B83100F91463 /* Watchpoint.cpp */; }; - B27318421416AC12006039C8 /* WatchpointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27318411416AC12006039C8 /* WatchpointList.cpp */; }; - B2B7CCF015D1C20F00EEFB57 /* WatchpointOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2B7CCEF15D1C20F00EEFB57 /* WatchpointOptions.cpp */; }; - 26C7C4831BFFEA7E009BD01F /* WindowsMiniDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C7C4811BFFEA7E009BD01F /* WindowsMiniDump.cpp */; }; - 26C7C4841BFFEA7E009BD01F /* WindowsMiniDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C7C4821BFFEA7E009BD01F /* WindowsMiniDump.h */; }; - 267A48011B1411E40021A5BC /* XML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 267A48001B1411E40021A5BC /* XML.cpp */; }; - 940B04D91A8984FF0045D5F7 /* argdumper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 940B04D81A8984FF0045D5F7 /* argdumper.cpp */; }; - 268648C516531BF800F04704 /* com.apple.debugserver.applist.internal.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 268648C216531BF800F04704 /* com.apple.debugserver.applist.internal.plist */; }; - AFF87C8F150FF688000E1742 /* com.apple.debugserver.applist.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = AFF87C8E150FF688000E1742 /* com.apple.debugserver.applist.plist */; }; - 268648C616531BF800F04704 /* com.apple.debugserver.internal.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 268648C316531BF800F04704 /* com.apple.debugserver.internal.plist */; }; - AFF87C87150FF669000E1742 /* com.apple.debugserver.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = AFF87C86150FF669000E1742 /* com.apple.debugserver.plist */; }; - 268648C416531BF800F04704 /* com.apple.debugserver.posix.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 268648C116531BF800F04704 /* com.apple.debugserver.posix.plist */; }; - AF5CEC88206079A500384F20 /* com.apple.internal.xpc.remote.debugserver.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF5CEC87206079A500384F20 /* com.apple.internal.xpc.remote.debugserver.plist */; }; - 26368AF7126B960500E8659F /* darwin-debug in Resources */ = {isa = PBXBuildFile; fileRef = 26579F68126A25920007C5CB /* darwin-debug */; }; - 26368A3C126B697600E8659F /* darwin-debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26368A3B126B697600E8659F /* darwin-debug.cpp */; }; - 262CFC7711A4510000946C6C /* debugserver in Resources */ = {isa = PBXBuildFile; fileRef = 26CE05A0115C31E50022F371 /* debugserver */; }; - 23CB154B1D66DA9300EDDDE1 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2326CF4C1BDD684B00A5CEAC /* libedit.dylib */; }; - 2656BBC31AE0739C00441749 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C32A10F3DFDD009D5894 /* libedit.dylib */; }; - 26CEB5EF18761CB2008F575A /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C32A10F3DFDD009D5894 /* libedit.dylib */; }; - 26CFDCA818616473000E63E5 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C32A10F3DFDD009D5894 /* libedit.dylib */; }; - 23CB154E1D66DA9300EDDDE1 /* liblldb-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; }; - 2606EDDF184E68A10034641B /* liblldb-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; }; - 268901161335BBC300698AC0 /* liblldb-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; }; - 942829CC1A89839300521B30 /* liblldb-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; }; - 239481861C59EBDD00DF7168 /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 239481851C59EBDD00DF7168 /* libncurses.dylib */; }; - 23CB154D1D66DA9300EDDDE1 /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2326CF471BDD67C100A5CEAC /* libncurses.dylib */; }; - 2656BBC41AE073A800441749 /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2670F8111862B44A006B332C /* libncurses.dylib */; }; - 2670F8121862B44A006B332C /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2670F8111862B44A006B332C /* libncurses.dylib */; }; - 26780C611867C33D00234593 /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2670F8111862B44A006B332C /* libncurses.dylib */; }; - 26792622211CA41E00EE1D10 /* libncurses.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 26792621211CA41E00EE1D10 /* libncurses.tbd */; }; - 26680233115FD1A7008E1FE4 /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C37410F3F61B009D5894 /* libobjc.dylib */; }; - 23CB154A1D66DA9300EDDDE1 /* libpanel.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2326CF4E1BDD687800A5CEAC /* libpanel.dylib */; }; - 260157C61885F51C00F875CF /* libpanel.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260157C41885F4FF00F875CF /* libpanel.dylib */; }; - 260157C81885F53100F875CF /* libpanel.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260157C41885F4FF00F875CF /* libpanel.dylib */; }; - 2656BBC51AE073AD00441749 /* libpanel.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 260157C41885F4FF00F875CF /* libpanel.dylib */; }; - 26F5C32D10F3DFDD009D5894 /* libtermcap.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C32B10F3DFDD009D5894 /* libtermcap.dylib */; }; - 23CB15491D66DA9300EDDDE1 /* libxml2.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 23CB14E31D66CA2200EDDDE1 /* libxml2.2.dylib */; }; - 26D55235159A7DB100708D8D /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D55234159A7DB100708D8D /* libxml2.dylib */; }; - 23CB154C1D66DA9300EDDDE1 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2326CF4A1BDD681800A5CEAC /* libz.dylib */; }; - 2656BBC61AE073B500441749 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 966C6B7818E6A56A0093F5EC /* libz.dylib */; }; - 966C6B7918E6A56A0093F5EC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 966C6B7818E6A56A0093F5EC /* libz.dylib */; }; - 966C6B7A18E6A56A0093F5EC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 966C6B7818E6A56A0093F5EC /* libz.dylib */; }; - 966C6B7C18E6A56A0093F5EC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 966C6B7818E6A56A0093F5EC /* libz.dylib */; }; - 940B04E41A8987680045D5F7 /* lldb-argdumper in CopyFiles */ = {isa = PBXBuildFile; fileRef = 942829C01A89835300521B30 /* lldb-argdumper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 2668020E115FD12C008E1FE4 /* lldb-defines.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7C2510F1B3BC00F91463 /* lldb-defines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2668020F115FD12C008E1FE4 /* lldb-enumerations.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7C2610F1B3BC00F91463 /* lldb-enumerations.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26DE1E6C11616C2E00A093E2 /* lldb-forward.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE1E6A11616C2E00A093E2 /* lldb-forward.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E769331C1A94D15400C73337 /* lldb-gdbserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D6F3F4183E7F9300194858 /* lldb-gdbserver.cpp */; }; - 26DC6A1D1337FECA00FF7998 /* lldb-platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DC6A1C1337FECA00FF7998 /* lldb-platform.cpp */; }; - 26D265BC136B4269002EEE45 /* lldb-public.h in Headers */ = {isa = PBXBuildFile; fileRef = 26651A14133BEC76005B64B7 /* lldb-public.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 94E829CA152D33C1006F96A3 /* lldb-server in Resources */ = {isa = PBXBuildFile; fileRef = 26DC6A101337FE6900FF7998 /* lldb-server */; }; - E769331E1A94D18100C73337 /* lldb-server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E769331D1A94D18100C73337 /* lldb-server.cpp */; }; - 26680214115FD12C008E1FE4 /* lldb-types.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7C2910F1B3BC00F91463 /* lldb-types.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 94145431175E63B500284436 /* lldb-versioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 94145430175D7FDE00284436 /* lldb-versioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2679261E211CA3F200EE1D10 /* lldb-vscode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26792619211CA3E100EE1D10 /* lldb-vscode.cpp */; }; - AF90106515AB7D3600FF120D /* lldb.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF90106315AB7C5700FF120D /* lldb.1 */; }; - 2689FFDA13353D9D00698AC0 /* lldb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7410F1B85900F91463 /* lldb.cpp */; }; - AF415AE71D949E4400FCE0D4 /* x86AssemblyInspectionEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF415AE51D949E4400FCE0D4 /* x86AssemblyInspectionEngine.cpp */; }; - AF415AE81D949E4400FCE0D4 /* x86AssemblyInspectionEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = AF415AE61D949E4400FCE0D4 /* x86AssemblyInspectionEngine.h */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 239504C41BDD3FD700963CEA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 456F67721AD46CE9002850C2; - remoteInfo = "debugserver-mini"; - }; - 23CB15311D66DA9300EDDDE1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2689FFC913353D7A00698AC0; - remoteInfo = "lldb-core"; - }; - 23E2E5471D904D72006F38BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 23CB152F1D66DA9300EDDDE1; - remoteInfo = "lldb-gtest-for-debugging"; - }; - 262CFC7111A450CB00946C6C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 26CE0593115C31C20022F371; - remoteInfo = debugserver; - }; - 26368AF5126B95FA00E8659F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26579F67126A25920007C5CB; - remoteInfo = "darwin-debug"; - }; - 266803611160110D008E1FE4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26680206115FD0ED008E1FE4; - remoteInfo = LLDB; - }; - 2679261F211CA40700EE1D10 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26680206115FD0ED008E1FE4; - remoteInfo = LLDB; - }; - 2687EACA1508115000DD8C2E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2687EAC51508110B00DD8C2E; - remoteInfo = "install-headers"; - }; - 2687EACC1508115900DD8C2E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2687EAC51508110B00DD8C2E; - remoteInfo = "install-headers"; - }; - 2687EACE1508116300DD8C2E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2687EAC51508110B00DD8C2E; - remoteInfo = "install-headers"; - }; - 2689011413353E9B00698AC0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2689FFC913353D7A00698AC0; - remoteInfo = "lldb-core"; - }; - 26B391EE1A6DCCAF00456239 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2690CD161A6DC0D000E717C8; - remoteInfo = "lldb-mi"; - }; - 26B391F01A6DCCBE00456239 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2690CD161A6DC0D000E717C8; - remoteInfo = "lldb-mi"; - }; - 26CE059F115C31E50022F371 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 26CE0594115C31C20022F371; - remoteInfo = "lldb-debugserver"; - }; - 26CEF3AF14FD591F007286B2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26F5C26910F3D9A4009D5894; - remoteInfo = "lldb-tool"; - }; - 26CEF3BA14FD595B007286B2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26F5C26910F3D9A4009D5894; - remoteInfo = "lldb-tool"; - }; - 26CEF3C114FD5973007286B2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26F5C26910F3D9A4009D5894; - remoteInfo = "lldb-tool"; - }; - 26DC6A151337FE7300FF7998 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2689FFC913353D7A00698AC0; - remoteInfo = "lldb-core"; - }; - 26DF745F1A6DCDB300B85563 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26680206115FD0ED008E1FE4; - remoteInfo = LLDB; - }; - 942829C91A89836A00521B30 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2689FFC913353D7A00698AC0; - remoteInfo = "lldb-core"; - }; - 942829CD1A89842900521B30 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 942829BF1A89835300521B30; - remoteInfo = argdumper; - }; - 94E829C8152D33B4006F96A3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 26DC6A0F1337FE6900FF7998; - remoteInfo = "lldb-server"; - }; - AFA9B71320606A13008E86C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 456F67431AD46CE9002850C2; - remoteInfo = "debugserver-mini"; - }; - AFCA21D11D18E556004386B8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 456F67431AD46CE9002850C2; - remoteInfo = "debugserver-mini"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 239504D21BDD451400963CEA /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; - 23CB154F1D66DA9300EDDDE1 /* Copy Files */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - name = "Copy Files"; - runOnlyForDeploymentPostprocessing = 1; - }; - 2679260A211CA3AC00EE1D10 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; - 940B04E31A89875C0045D5F7 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 7; - files = ( - 940B04E41A8987680045D5F7 /* lldb-argdumper in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 942829BE1A89835300521B30 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; - AF90106415AB7D2900FF120D /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = "$(DEVELOPER_INSTALL_DIR)/usr/share/man/man1"; - dstSubfolderSpec = 0; - files = ( - AF90106515AB7D3600FF120D /* lldb.1 in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; - AFA9B71820606A13008E86C6 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = /AppleInternal/Library/LaunchDaemons; - dstSubfolderSpec = 0; - files = ( - AF5CEC88206079A500384F20 /* com.apple.internal.xpc.remote.debugserver.plist in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; - AFF87C85150FF5CC000E1742 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = /Developer/Library/Lockdown/ServiceAgents/; - dstSubfolderSpec = 0; - files = ( - 268648C416531BF800F04704 /* com.apple.debugserver.posix.plist in CopyFiles */, - 268648C516531BF800F04704 /* com.apple.debugserver.applist.internal.plist in CopyFiles */, - 268648C616531BF800F04704 /* com.apple.debugserver.internal.plist in CopyFiles */, - AFF87C87150FF669000E1742 /* com.apple.debugserver.plist in CopyFiles */, - AFF87C8F150FF688000E1742 /* com.apple.debugserver.applist.plist in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 497E7B9D1188F6690065CCA1 /* ABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABI.cpp; path = source/Target/ABI.cpp; sourceTree = ""; }; - 497E7B331188ED300065CCA1 /* ABI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABI.h; path = include/lldb/Target/ABI.h; sourceTree = ""; }; - 26DB3E071379E7AD0080DC73 /* ABIMacOSX_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABIMacOSX_arm.cpp; sourceTree = ""; }; - 26DB3E081379E7AD0080DC73 /* ABIMacOSX_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABIMacOSX_arm.h; sourceTree = ""; }; - 26DB3E0B1379E7AD0080DC73 /* ABIMacOSX_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABIMacOSX_arm64.cpp; sourceTree = ""; }; - 26DB3E0C1379E7AD0080DC73 /* ABIMacOSX_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABIMacOSX_arm64.h; sourceTree = ""; }; - 26DB3E0F1379E7AD0080DC73 /* ABIMacOSX_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABIMacOSX_i386.cpp; sourceTree = ""; }; - 26DB3E101379E7AD0080DC73 /* ABIMacOSX_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABIMacOSX_i386.h; sourceTree = ""; }; - AF20F7641AF18F8500751A6E /* ABISysV_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABISysV_arm.cpp; path = "SysV-arm/ABISysV_arm.cpp"; sourceTree = ""; }; - AF20F7651AF18F8500751A6E /* ABISysV_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABISysV_arm.h; path = "SysV-arm/ABISysV_arm.h"; sourceTree = ""; }; - AF20F7681AF18F9000751A6E /* ABISysV_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABISysV_arm64.cpp; path = "SysV-arm64/ABISysV_arm64.cpp"; sourceTree = ""; }; - AF20F7691AF18F9000751A6E /* ABISysV_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABISysV_arm64.h; path = "SysV-arm64/ABISysV_arm64.h"; sourceTree = ""; }; - 26BF51EA1B3C754400016294 /* ABISysV_hexagon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABISysV_hexagon.cpp; sourceTree = ""; }; - 26BF51EB1B3C754400016294 /* ABISysV_hexagon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABISysV_hexagon.h; sourceTree = ""; }; - 26BF51EF1B3C754400016294 /* ABISysV_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABISysV_i386.cpp; sourceTree = ""; }; - 26BF51F01B3C754400016294 /* ABISysV_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABISysV_i386.h; sourceTree = ""; }; - 9694FA6F1B32AA64005EBB16 /* ABISysV_mips.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABISysV_mips.cpp; path = "SysV-mips/ABISysV_mips.cpp"; sourceTree = ""; }; - 9694FA701B32AA64005EBB16 /* ABISysV_mips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABISysV_mips.h; path = "SysV-mips/ABISysV_mips.h"; sourceTree = ""; }; - 263641151B34AEE200145B2F /* ABISysV_mips64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABISysV_mips64.cpp; sourceTree = ""; }; - 263641161B34AEE200145B2F /* ABISysV_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABISysV_mips64.h; sourceTree = ""; }; - AF77E08D1A033C700096C0EA /* ABISysV_ppc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABISysV_ppc.cpp; path = "SysV-ppc/ABISysV_ppc.cpp"; sourceTree = ""; }; - AF77E08E1A033C700096C0EA /* ABISysV_ppc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABISysV_ppc.h; path = "SysV-ppc/ABISysV_ppc.h"; sourceTree = ""; }; - AF77E0911A033C7F0096C0EA /* ABISysV_ppc64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ABISysV_ppc64.cpp; path = "SysV-ppc64/ABISysV_ppc64.cpp"; sourceTree = ""; }; - AF77E0921A033C7F0096C0EA /* ABISysV_ppc64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ABISysV_ppc64.h; path = "SysV-ppc64/ABISysV_ppc64.h"; sourceTree = ""; }; - 267F68471CC02DED0086832B /* ABISysV_s390x.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABISysV_s390x.cpp; sourceTree = ""; }; - 267F68481CC02DED0086832B /* ABISysV_s390x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABISysV_s390x.h; sourceTree = ""; }; - 26DB3E131379E7AD0080DC73 /* ABISysV_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABISysV_x86_64.cpp; sourceTree = ""; }; - 26DB3E141379E7AD0080DC73 /* ABISysV_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABISysV_x86_64.h; sourceTree = ""; }; - AF352EDB22C17BD700D058B6 /* ABIWindows_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ABIWindows_x86_64.cpp; sourceTree = ""; }; - AF352EDC22C17BD700D058B6 /* ABIWindows_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABIWindows_x86_64.h; sourceTree = ""; }; - 264A12FF137252C700875C42 /* ARM64_DWARF_Registers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARM64_DWARF_Registers.h; path = source/Utility/ARM64_DWARF_Registers.h; sourceTree = ""; }; - B287E63E12EFAE2C00C9BEFE /* ARMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARMDefines.h; path = Utility/ARMDefines.h; sourceTree = ""; }; - B23DD24F12EDFAC1000C3894 /* ARMUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARMUtils.h; path = Utility/ARMUtils.h; sourceTree = ""; }; - 26F996A7119B79C300412154 /* ARM_DWARF_Registers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARM_DWARF_Registers.h; path = source/Utility/ARM_DWARF_Registers.h; sourceTree = ""; }; - 4906FD4012F2255300A2A77C /* ASTDumper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ASTDumper.cpp; path = ExpressionParser/Clang/ASTDumper.cpp; sourceTree = ""; }; - 4906FD4412F2257600A2A77C /* ASTDumper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASTDumper.h; path = ExpressionParser/Clang/ASTDumper.h; sourceTree = ""; }; - 49A8A39F11D568A300AD3B68 /* ASTResultSynthesizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ASTResultSynthesizer.cpp; path = ExpressionParser/Clang/ASTResultSynthesizer.cpp; sourceTree = ""; }; - 49A8A3A311D568BF00AD3B68 /* ASTResultSynthesizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASTResultSynthesizer.h; path = ExpressionParser/Clang/ASTResultSynthesizer.h; sourceTree = ""; }; - 491193501226386000578B7F /* ASTStructExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ASTStructExtractor.cpp; path = ExpressionParser/Clang/ASTStructExtractor.cpp; sourceTree = ""; }; - 4911934B1226383D00578B7F /* ASTStructExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASTStructExtractor.h; path = ExpressionParser/Clang/ASTStructExtractor.h; sourceTree = ""; }; - 4C0B957E2238342C0026C840 /* ASTUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ASTUtils.cpp; path = ExpressionParser/Clang/ASTUtils.cpp; sourceTree = ""; }; - 4C0B957F2238342C0026C840 /* ASTUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASTUtils.h; path = ExpressionParser/Clang/ASTUtils.h; sourceTree = ""; }; - 8CF02AE519DCBF8400B14BE0 /* ASanRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASanRuntime.cpp; sourceTree = ""; }; - 8CF02AE619DCBF8400B14BE0 /* ASanRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASanRuntime.h; sourceTree = ""; }; - 257906621BD5AFD000178368 /* Acceptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Acceptor.cpp; path = "tools/lldb-server/Acceptor.cpp"; sourceTree = ""; }; - 257906631BD5AFD000178368 /* Acceptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Acceptor.h; path = "tools/lldb-server/Acceptor.h"; sourceTree = ""; }; - 25EF23751AC09AD800908DF0 /* AdbClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdbClient.cpp; sourceTree = ""; }; - 25EF23761AC09AD800908DF0 /* AdbClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdbClient.h; sourceTree = ""; }; - 236102981CF38A2B00B8E0B9 /* AddLLDB.cmake */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AddLLDB.cmake; sourceTree = ""; }; - 26BC7E6910F1B85900F91463 /* Address.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Address.cpp; path = source/Core/Address.cpp; sourceTree = ""; }; - 26BC7D5010F1B77400F91463 /* Address.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Address.h; path = include/lldb/Core/Address.h; sourceTree = ""; }; - 26BC7E6A10F1B85900F91463 /* AddressRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AddressRange.cpp; path = source/Core/AddressRange.cpp; sourceTree = ""; }; - 26BC7D5110F1B77400F91463 /* AddressRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AddressRange.h; path = include/lldb/Core/AddressRange.h; sourceTree = ""; }; - 9AC7034011752C6B0086C050 /* AddressResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AddressResolver.cpp; path = source/Core/AddressResolver.cpp; sourceTree = ""; }; - 9AC7033E11752C540086C050 /* AddressResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AddressResolver.h; path = include/lldb/Core/AddressResolver.h; sourceTree = ""; }; - 9AC7034211752C720086C050 /* AddressResolverFileLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AddressResolverFileLine.cpp; path = source/Core/AddressResolverFileLine.cpp; sourceTree = ""; }; - 9AC7033D11752C4C0086C050 /* AddressResolverFileLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AddressResolverFileLine.h; path = include/lldb/Core/AddressResolverFileLine.h; sourceTree = ""; }; - 9AC7034411752C790086C050 /* AddressResolverName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AddressResolverName.cpp; path = source/Core/AddressResolverName.cpp; sourceTree = ""; }; - 9AC7033F11752C590086C050 /* AddressResolverName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AddressResolverName.h; path = include/lldb/Core/AddressResolverName.h; sourceTree = ""; }; - 2361029E1CF38A3500B8E0B9 /* Android.cmake */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Android.cmake; sourceTree = ""; }; - 6D55BAE21A8CD06000A70529 /* Android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Android.h; path = include/lldb/Host/android/Android.h; sourceTree = ""; }; - 26CF992414428766001E4138 /* AnsiTerminal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnsiTerminal.h; path = include/lldb/Utility/AnsiTerminal.h; sourceTree = ""; }; - 4C639EC721FA684800A7B957 /* AnsiTerminalTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnsiTerminalTest.cpp; sourceTree = ""; }; - 4CD44CFA20B37C440003557C /* AppleDWARFIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleDWARFIndex.cpp; sourceTree = ""; }; - 4CD44CFF20B37C580003557C /* AppleDWARFIndex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppleDWARFIndex.h; sourceTree = ""; }; - AF0E22EE18A09FB20009B7D1 /* AppleGetItemInfoHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleGetItemInfoHandler.cpp; sourceTree = ""; }; - AF0E22EF18A09FB20009B7D1 /* AppleGetItemInfoHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleGetItemInfoHandler.h; sourceTree = ""; }; - AF1F7B05189C904B0087DB9C /* AppleGetPendingItemsHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleGetPendingItemsHandler.cpp; sourceTree = ""; }; - AF1F7B06189C904B0087DB9C /* AppleGetPendingItemsHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleGetPendingItemsHandler.h; sourceTree = ""; }; - AF25AB24188F685C0030DEC3 /* AppleGetQueuesHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleGetQueuesHandler.cpp; sourceTree = ""; }; - AF25AB25188F685C0030DEC3 /* AppleGetQueuesHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleGetQueuesHandler.h; sourceTree = ""; }; - AF45FDE318A1F3AC0007051C /* AppleGetThreadItemInfoHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleGetThreadItemInfoHandler.cpp; sourceTree = ""; }; - AF45FDE418A1F3AC0007051C /* AppleGetThreadItemInfoHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleGetThreadItemInfoHandler.h; sourceTree = ""; }; - 94CD7D0819A3FBA300908B7C /* AppleObjCClassDescriptorV2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleObjCClassDescriptorV2.cpp; sourceTree = ""; }; - 94CD7D0719A3FB8600908B7C /* AppleObjCClassDescriptorV2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppleObjCClassDescriptorV2.h; sourceTree = ""; }; - 49DA65021485C92A005FF180 /* AppleObjCDeclVendor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = AppleObjCDeclVendor.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 49DA65041485C942005FF180 /* AppleObjCDeclVendor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppleObjCDeclVendor.h; sourceTree = ""; }; - 4CCA644213B40B82003BDF98 /* AppleObjCRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleObjCRuntime.cpp; sourceTree = ""; }; - 4CCA644313B40B82003BDF98 /* AppleObjCRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleObjCRuntime.h; sourceTree = ""; }; - 4CCA644413B40B82003BDF98 /* AppleObjCRuntimeV1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = AppleObjCRuntimeV1.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 4CCA644513B40B82003BDF98 /* AppleObjCRuntimeV1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AppleObjCRuntimeV1.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 4CCA644613B40B82003BDF98 /* AppleObjCRuntimeV2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = AppleObjCRuntimeV2.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 4CCA644713B40B82003BDF98 /* AppleObjCRuntimeV2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AppleObjCRuntimeV2.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 4CCA644813B40B82003BDF98 /* AppleObjCTrampolineHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleObjCTrampolineHandler.cpp; sourceTree = ""; }; - 4CCA644913B40B82003BDF98 /* AppleObjCTrampolineHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleObjCTrampolineHandler.h; sourceTree = ""; }; - 94CD7D0B19A3FBCE00908B7C /* AppleObjCTypeEncodingParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = AppleObjCTypeEncodingParser.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 94CD7D0A19A3FBC300908B7C /* AppleObjCTypeEncodingParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppleObjCTypeEncodingParser.h; sourceTree = ""; }; - 4CCA644A13B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleThreadPlanStepThroughObjCTrampoline.cpp; sourceTree = ""; }; - 4CCA644B13B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppleThreadPlanStepThroughObjCTrampoline.h; sourceTree = ""; }; - AF6CA6651FBBAF27005A0DC3 /* ArchSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArchSpec.cpp; path = source/Utility/ArchSpec.cpp; sourceTree = ""; }; - AF6CA6671FBBAF37005A0DC3 /* ArchSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArchSpec.h; path = include/lldb/Utility/ArchSpec.h; sourceTree = ""; }; - 23E2E5161D903689006F38BB /* ArchSpecTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchSpecTest.cpp; sourceTree = ""; }; - AF2E02A11FA2CEAF00A86C34 /* ArchitectureArm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchitectureArm.cpp; sourceTree = ""; }; - AF2E02A21FA2CEAF00A86C34 /* ArchitectureArm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchitectureArm.h; sourceTree = ""; }; - 2647B63021C4366300A81D15 /* ArchitectureMips.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArchitectureMips.cpp; path = source/Plugins/Architecture/Mips/ArchitectureMips.cpp; sourceTree = SOURCE_ROOT; }; - 2647B62F21C4366200A81D15 /* ArchitectureMips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArchitectureMips.h; path = source/Plugins/Architecture/Mips/ArchitectureMips.h; sourceTree = SOURCE_ROOT; }; - 4C14CEF82057258D00DEEF94 /* ArchitecturePPC64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchitecturePPC64.cpp; sourceTree = ""; }; - 4C14CEF72057258D00DEEF94 /* ArchitecturePPC64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchitecturePPC64.h; sourceTree = ""; }; - 26BC7E6C10F1B85900F91463 /* Args.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Args.cpp; path = source/Utility/Args.cpp; sourceTree = ""; }; - 26BC7D5310F1B77400F91463 /* Args.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Args.h; path = include/lldb/Utility/Args.h; sourceTree = ""; }; - 2321F93E1BDD33CE00BA9A93 /* ArgsTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ArgsTest.cpp; path = ../Utility/ArgsTest.cpp; sourceTree = ""; }; - 6D99A3621BBC2F3200979793 /* ArmUnwindInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArmUnwindInfo.cpp; path = source/Symbol/ArmUnwindInfo.cpp; sourceTree = ""; }; - 6D99A3611BBC2F1600979793 /* ArmUnwindInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ArmUnwindInfo.h; path = include/lldb/Symbol/ArmUnwindInfo.h; sourceTree = ""; }; - 3FDFE54719A2946B009756A7 /* AutoHandle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AutoHandle.h; path = include/lldb/Host/windows/AutoHandle.h; sourceTree = ""; }; - AF7BD81A22B04E20008E78D1 /* AuxVector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AuxVector.cpp; path = Utility/AuxVector.cpp; sourceTree = ""; }; - AFC2DCE81E6E2F2C00283714 /* Baton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Baton.cpp; path = source/Utility/Baton.cpp; sourceTree = ""; }; - AFC2DCEE1E6E2FA300283714 /* Baton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Baton.h; path = include/lldb/Utility/Baton.h; sourceTree = ""; }; - 26BC7F1310F1B8EC00F91463 /* Block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Block.cpp; path = source/Symbol/Block.cpp; sourceTree = ""; }; - 26BC7C5510F1B6E900F91463 /* Block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Block.h; path = include/lldb/Symbol/Block.h; sourceTree = ""; }; - 49DEF11F1CD7BD90006A7C7D /* BlockPointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BlockPointer.cpp; path = Language/CPlusPlus/BlockPointer.cpp; sourceTree = ""; }; - 49DEF1201CD7BD90006A7C7D /* BlockPointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlockPointer.h; path = Language/CPlusPlus/BlockPointer.h; sourceTree = ""; }; - 4CAEC6A621F26D15007C3DD5 /* BreakpadRecords.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BreakpadRecords.cpp; sourceTree = ""; }; - 4CAEC6A721F26D15007C3DD5 /* BreakpadRecords.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakpadRecords.h; sourceTree = ""; }; - 26BC7E0A10F1B83100F91463 /* Breakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Breakpoint.cpp; path = source/Breakpoint/Breakpoint.cpp; sourceTree = ""; }; - 26BC7CEE10F1B71400F91463 /* Breakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Breakpoint.h; path = include/lldb/Breakpoint/Breakpoint.h; sourceTree = ""; }; - 2660387D211CA98200329572 /* BreakpointBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointBase.cpp; path = "tools/lldb-vscode/BreakpointBase.cpp"; sourceTree = ""; }; - 26603872211CA90D00329572 /* BreakpointBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointBase.h; path = "tools/lldb-vscode/BreakpointBase.h"; sourceTree = ""; }; - 26BC7E0B10F1B83100F91463 /* BreakpointID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointID.cpp; path = source/Breakpoint/BreakpointID.cpp; sourceTree = ""; }; - 26BC7CEF10F1B71400F91463 /* BreakpointID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointID.h; path = include/lldb/Breakpoint/BreakpointID.h; sourceTree = ""; }; - 26BC7E0C10F1B83100F91463 /* BreakpointIDList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointIDList.cpp; path = source/Breakpoint/BreakpointIDList.cpp; sourceTree = ""; }; - 26BC7CF010F1B71400F91463 /* BreakpointIDList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointIDList.h; path = include/lldb/Breakpoint/BreakpointIDList.h; sourceTree = ""; }; - 23E2E52D1D90382B006F38BB /* BreakpointIDTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BreakpointIDTest.cpp; sourceTree = ""; }; - 26BC7E0D10F1B83100F91463 /* BreakpointList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointList.cpp; path = source/Breakpoint/BreakpointList.cpp; sourceTree = ""; }; - 26BC7CF110F1B71400F91463 /* BreakpointList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointList.h; path = include/lldb/Breakpoint/BreakpointList.h; sourceTree = ""; }; - 26BC7E0E10F1B83100F91463 /* BreakpointLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointLocation.cpp; path = source/Breakpoint/BreakpointLocation.cpp; sourceTree = ""; }; - 26BC7CF210F1B71400F91463 /* BreakpointLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointLocation.h; path = include/lldb/Breakpoint/BreakpointLocation.h; sourceTree = ""; }; - 26BC7E0F10F1B83100F91463 /* BreakpointLocationCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointLocationCollection.cpp; path = source/Breakpoint/BreakpointLocationCollection.cpp; sourceTree = ""; }; - 26BC7CF310F1B71400F91463 /* BreakpointLocationCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointLocationCollection.h; path = include/lldb/Breakpoint/BreakpointLocationCollection.h; sourceTree = ""; }; - 26BC7E1010F1B83100F91463 /* BreakpointLocationList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointLocationList.cpp; path = source/Breakpoint/BreakpointLocationList.cpp; sourceTree = ""; }; - 26BC7CF410F1B71400F91463 /* BreakpointLocationList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointLocationList.h; path = include/lldb/Breakpoint/BreakpointLocationList.h; sourceTree = ""; }; - 4C7D48281F509CCD005314B4 /* BreakpointName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointName.cpp; path = source/Breakpoint/BreakpointName.cpp; sourceTree = ""; }; - 4C7D482B1F509CF5005314B4 /* BreakpointName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointName.h; path = include/lldb/Breakpoint/BreakpointName.h; sourceTree = ""; }; - 26BC7E1110F1B83100F91463 /* BreakpointOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointOptions.cpp; path = source/Breakpoint/BreakpointOptions.cpp; sourceTree = ""; }; - 26BC7CF510F1B71400F91463 /* BreakpointOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointOptions.h; path = include/lldb/Breakpoint/BreakpointOptions.h; sourceTree = ""; }; - AF352EE022C17C0C00D058B6 /* BreakpointPrecondition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointPrecondition.cpp; path = source/Breakpoint/BreakpointPrecondition.cpp; sourceTree = ""; }; - 26BC7E1210F1B83100F91463 /* BreakpointResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolver.cpp; path = source/Breakpoint/BreakpointResolver.cpp; sourceTree = ""; }; - 26BC7CF610F1B71400F91463 /* BreakpointResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointResolver.h; path = include/lldb/Breakpoint/BreakpointResolver.h; sourceTree = ""; }; - 26D0DD5310FE555900271C65 /* BreakpointResolverAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverAddress.cpp; path = source/Breakpoint/BreakpointResolverAddress.cpp; sourceTree = ""; }; - 26D0DD5010FE554D00271C65 /* BreakpointResolverAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointResolverAddress.h; path = include/lldb/Breakpoint/BreakpointResolverAddress.h; sourceTree = ""; }; - 26D0DD5410FE555900271C65 /* BreakpointResolverFileLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverFileLine.cpp; path = source/Breakpoint/BreakpointResolverFileLine.cpp; sourceTree = ""; }; - 26D0DD5110FE554D00271C65 /* BreakpointResolverFileLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointResolverFileLine.h; path = include/lldb/Breakpoint/BreakpointResolverFileLine.h; sourceTree = ""; }; - 4CAA56141422D986001FFA01 /* BreakpointResolverFileRegex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverFileRegex.cpp; path = source/Breakpoint/BreakpointResolverFileRegex.cpp; sourceTree = ""; }; - 4CAA56121422D96A001FFA01 /* BreakpointResolverFileRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointResolverFileRegex.h; path = include/lldb/Breakpoint/BreakpointResolverFileRegex.h; sourceTree = ""; }; - 26D0DD5510FE555900271C65 /* BreakpointResolverName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverName.cpp; path = source/Breakpoint/BreakpointResolverName.cpp; sourceTree = ""; }; - 26D0DD5210FE554D00271C65 /* BreakpointResolverName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointResolverName.h; path = include/lldb/Breakpoint/BreakpointResolverName.h; sourceTree = ""; }; - 4CCF9F5E2143012F006CC7EA /* BreakpointResolverScripted.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverScripted.cpp; path = source/Breakpoint/BreakpointResolverScripted.cpp; sourceTree = ""; }; - 4CCF9F6021430141006CC7EA /* BreakpointResolverScripted.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BreakpointResolverScripted.h; path = include/lldb/Breakpoint/BreakpointResolverScripted.h; sourceTree = ""; }; - 26BC7E1310F1B83100F91463 /* BreakpointSite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointSite.cpp; path = source/Breakpoint/BreakpointSite.cpp; sourceTree = ""; }; - 26BC7CF710F1B71400F91463 /* BreakpointSite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointSite.h; path = include/lldb/Breakpoint/BreakpointSite.h; sourceTree = ""; }; - 26BC7E1410F1B83100F91463 /* BreakpointSiteList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointSiteList.cpp; path = source/Breakpoint/BreakpointSiteList.cpp; sourceTree = ""; }; - 26BC7CF810F1B71400F91463 /* BreakpointSiteList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointSiteList.h; path = include/lldb/Breakpoint/BreakpointSiteList.h; sourceTree = ""; }; - 2647B63921C436AB00A81D15 /* Broadcaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Broadcaster.cpp; path = source/Utility/Broadcaster.cpp; sourceTree = ""; }; - 2647B63521C4368300A81D15 /* Broadcaster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Broadcaster.h; path = include/lldb/Utility/Broadcaster.h; sourceTree = ""; }; - 23CB14E61D66CC0E00EDDDE1 /* BroadcasterTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BroadcasterTest.cpp; sourceTree = ""; }; - 949EEDAC1BA76719008C63CF /* CF.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CF.cpp; path = Language/ObjC/CF.cpp; sourceTree = ""; }; - 949EEDAD1BA76719008C63CF /* CF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CF.h; path = Language/ObjC/CF.h; sourceTree = ""; }; - 26BC7EED10F1B8AD00F91463 /* CFCBundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCBundle.cpp; path = source/Host/macosx/cfcpp/CFCBundle.cpp; sourceTree = ""; }; - 26BC7EEE10F1B8AD00F91463 /* CFCBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCBundle.h; path = source/Host/macosx/cfcpp/CFCBundle.h; sourceTree = ""; }; - 26BC7EEF10F1B8AD00F91463 /* CFCData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCData.cpp; path = source/Host/macosx/cfcpp/CFCData.cpp; sourceTree = ""; }; - 26BC7EF010F1B8AD00F91463 /* CFCData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCData.h; path = source/Host/macosx/cfcpp/CFCData.h; sourceTree = ""; }; - 26BC7EF110F1B8AD00F91463 /* CFCMutableArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCMutableArray.cpp; path = source/Host/macosx/cfcpp/CFCMutableArray.cpp; sourceTree = ""; }; - 26BC7EF210F1B8AD00F91463 /* CFCMutableArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCMutableArray.h; path = source/Host/macosx/cfcpp/CFCMutableArray.h; sourceTree = ""; }; - 26BC7EF310F1B8AD00F91463 /* CFCMutableDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCMutableDictionary.cpp; path = source/Host/macosx/cfcpp/CFCMutableDictionary.cpp; sourceTree = ""; }; - 26BC7EF410F1B8AD00F91463 /* CFCMutableDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCMutableDictionary.h; path = source/Host/macosx/cfcpp/CFCMutableDictionary.h; sourceTree = ""; }; - 26BC7EF510F1B8AD00F91463 /* CFCMutableSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCMutableSet.cpp; path = source/Host/macosx/cfcpp/CFCMutableSet.cpp; sourceTree = ""; }; - 26BC7EF610F1B8AD00F91463 /* CFCMutableSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCMutableSet.h; path = source/Host/macosx/cfcpp/CFCMutableSet.h; sourceTree = ""; }; - 26BC7EF710F1B8AD00F91463 /* CFCReleaser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCReleaser.h; path = source/Host/macosx/cfcpp/CFCReleaser.h; sourceTree = ""; }; - 26BC7EF810F1B8AD00F91463 /* CFCString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFCString.cpp; path = source/Host/macosx/cfcpp/CFCString.cpp; sourceTree = ""; }; - 26BC7EF910F1B8AD00F91463 /* CFCString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFCString.h; path = source/Host/macosx/cfcpp/CFCString.h; sourceTree = ""; }; - 230EC4571D63C3A7008DF59F /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CMakeLists.txt; path = source/Target/CMakeLists.txt; sourceTree = ""; }; - 2321F9381BDD332400BA9A93 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2321F93D1BDD33CE00BA9A93 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2321F9401BDD340D00BA9A93 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2321F9431BDD346100BA9A93 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2321F94C1BDD360F00BA9A93 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2370A37A1D66C57B000E7BE6 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2370A37C1D66C587000E7BE6 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2374D7431D4BAA1D005C9575 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB14E71D66CC0E00EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB14F11D66CC9000EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB14F31D66CC9B00EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB14F61D66CCD600EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB14F91D66CCF100EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB150B1D66CF5600EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB15101D66CF6900EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23CB15131D66CF8700EDDDE1 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23D065811D4A7BDA0008EDE6 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23E2E5191D9036F2006F38BB /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 23E2E5361D9048FB006F38BB /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 2669415B1A6DC2AB0063BE93 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CMakeLists.txt; path = "tools/lldb-mi/CMakeLists.txt"; sourceTree = SOURCE_ROOT; }; - 26792617211CA3E100EE1D10 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CMakeLists.txt; path = "tools/lldb-vscode/CMakeLists.txt"; sourceTree = ""; }; - 9A1890311F47D5D400394BCA /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CMakeLists.txt; path = TestingSupport/CMakeLists.txt; sourceTree = ""; }; - AF352EDD22C17BD700D058B6 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - 4CB443BC1249920C00C13DC2 /* CPPLanguageRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CPPLanguageRuntime.cpp; path = source/Target/CPPLanguageRuntime.cpp; sourceTree = ""; }; - 4CB443BB1249920C00C13DC2 /* CPPLanguageRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPPLanguageRuntime.h; path = include/lldb/Target/CPPLanguageRuntime.h; sourceTree = ""; }; - 94B6385B1B8FB174004FE1E4 /* CPlusPlusLanguage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CPlusPlusLanguage.cpp; path = Language/CPlusPlus/CPlusPlusLanguage.cpp; sourceTree = ""; }; - 94B6385C1B8FB174004FE1E4 /* CPlusPlusLanguage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CPlusPlusLanguage.h; path = Language/CPlusPlus/CPlusPlusLanguage.h; sourceTree = ""; }; - 23CB14FA1D66CCF100EDDDE1 /* CPlusPlusLanguageTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CPlusPlusLanguageTest.cpp; sourceTree = ""; }; - 49F811EF1E931B1500F4E163 /* CPlusPlusNameParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CPlusPlusNameParser.cpp; path = Language/CPlusPlus/CPlusPlusNameParser.cpp; sourceTree = ""; }; - 49F811F01E931B1500F4E163 /* CPlusPlusNameParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPlusPlusNameParser.h; path = Language/CPlusPlus/CPlusPlusNameParser.h; sourceTree = ""; }; - 945261C71B9A14D300BF138D /* CXXFunctionPointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CXXFunctionPointer.cpp; path = source/DataFormatters/CXXFunctionPointer.cpp; sourceTree = ""; }; - 945261C91B9A14E000BF138D /* CXXFunctionPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CXXFunctionPointer.h; path = include/lldb/DataFormatters/CXXFunctionPointer.h; sourceTree = ""; }; - 26BC7F1410F1B8EC00F91463 /* ClangASTContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangASTContext.cpp; path = source/Symbol/ClangASTContext.cpp; sourceTree = ""; }; - 26BC7C5610F1B6E900F91463 /* ClangASTContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangASTContext.h; path = include/lldb/Symbol/ClangASTContext.h; sourceTree = ""; }; - 49D8FB3513B558DE00411094 /* ClangASTImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangASTImporter.cpp; path = source/Symbol/ClangASTImporter.cpp; sourceTree = ""; }; - 49D8FB3713B5594900411094 /* ClangASTImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangASTImporter.h; path = include/lldb/Symbol/ClangASTImporter.h; sourceTree = ""; }; - 49D7072811B5AD11001AD875 /* ClangASTSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangASTSource.cpp; path = ExpressionParser/Clang/ClangASTSource.cpp; sourceTree = ""; }; - 49D7072611B5AD03001AD875 /* ClangASTSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangASTSource.h; path = ExpressionParser/Clang/ClangASTSource.h; sourceTree = ""; }; - 4C3DA2301CA0BFB800CEB1D4 /* ClangDiagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangDiagnostic.h; path = ExpressionParser/Clang/ClangDiagnostic.h; sourceTree = ""; }; - 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExpressionDeclMap.cpp; path = ExpressionParser/Clang/ClangExpressionDeclMap.cpp; sourceTree = ""; }; - 49F1A74911B338AE003ED505 /* ClangExpressionDeclMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionDeclMap.h; path = ExpressionParser/Clang/ClangExpressionDeclMap.h; sourceTree = ""; }; - 26BC7DC010F1B79500F91463 /* ClangExpressionHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionHelper.h; path = ExpressionParser/Clang/ClangExpressionHelper.h; sourceTree = ""; }; - 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExpressionParser.cpp; path = ExpressionParser/Clang/ClangExpressionParser.cpp; sourceTree = ""; }; - 49445C2912245E5500C11A81 /* ClangExpressionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionParser.h; path = ExpressionParser/Clang/ClangExpressionParser.h; sourceTree = ""; }; - 4C61465C223059B000D686F9 /* ClangExpressionSourceCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExpressionSourceCode.cpp; path = ExpressionParser/Clang/ClangExpressionSourceCode.cpp; sourceTree = ""; }; - 4C61465D223059B000D686F9 /* ClangExpressionSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionSourceCode.h; path = ExpressionParser/Clang/ClangExpressionSourceCode.h; sourceTree = ""; }; - 4984BA0E1B978C3E008658D4 /* ClangExpressionVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExpressionVariable.cpp; path = ExpressionParser/Clang/ClangExpressionVariable.cpp; sourceTree = ""; }; - 4984BA0F1B978C3E008658D4 /* ClangExpressionVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExpressionVariable.h; path = ExpressionParser/Clang/ClangExpressionVariable.h; sourceTree = ""; }; - 26E69030129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExternalASTSourceCallbacks.cpp; path = source/Symbol/ClangExternalASTSourceCallbacks.cpp; sourceTree = ""; }; - 26E6902E129C6BD500DDECD9 /* ClangExternalASTSourceCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangExternalASTSourceCallbacks.h; path = include/lldb/Symbol/ClangExternalASTSourceCallbacks.h; sourceTree = ""; }; - 4966DCC3148978A10028481B /* ClangExternalASTSourceCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangExternalASTSourceCommon.cpp; path = source/Symbol/ClangExternalASTSourceCommon.cpp; sourceTree = ""; }; - 495B38431489714C002708C5 /* ClangExternalASTSourceCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ClangExternalASTSourceCommon.h; path = include/lldb/Symbol/ClangExternalASTSourceCommon.h; sourceTree = ""; }; - 26BC7D5510F1B77400F91463 /* ClangForward.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangForward.h; path = include/lldb/Core/ClangForward.h; sourceTree = ""; }; - 4C98D3DA118FB96F00E575D0 /* ClangFunctionCaller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangFunctionCaller.cpp; path = ExpressionParser/Clang/ClangFunctionCaller.cpp; sourceTree = ""; }; - 4C98D3E0118FB98F00E575D0 /* ClangFunctionCaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangFunctionCaller.h; path = ExpressionParser/Clang/ClangFunctionCaller.h; sourceTree = ""; }; - 58A080AB2112AABB00D5580F /* ClangHighlighter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangHighlighter.cpp; path = Language/ClangCommon/ClangHighlighter.cpp; sourceTree = ""; }; - 58A080AD2112AAC500D5580F /* ClangHighlighter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangHighlighter.h; path = Language/ClangCommon/ClangHighlighter.h; sourceTree = ""; }; - 4CD44D5620C603A80003557C /* ClangHost.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ClangHost.cpp; path = ExpressionParser/Clang/ClangHost.cpp; sourceTree = ""; }; - 4CD44D5720C603A90003557C /* ClangHost.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ClangHost.h; path = ExpressionParser/Clang/ClangHost.h; sourceTree = ""; }; - 4959511E1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangModulesDeclVendor.cpp; path = ExpressionParser/Clang/ClangModulesDeclVendor.cpp; sourceTree = ""; }; - 4959511B1A1BC48100F6F8FC /* ClangModulesDeclVendor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangModulesDeclVendor.h; path = ExpressionParser/Clang/ClangModulesDeclVendor.h; sourceTree = ""; }; - 49D4FE871210B61C00CDB854 /* ClangPersistentVariables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangPersistentVariables.cpp; path = ExpressionParser/Clang/ClangPersistentVariables.cpp; sourceTree = ""; }; - 49D4FE821210B5FB00CDB854 /* ClangPersistentVariables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangPersistentVariables.h; path = ExpressionParser/Clang/ClangPersistentVariables.h; sourceTree = ""; }; - 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangUserExpression.cpp; path = ExpressionParser/Clang/ClangUserExpression.cpp; sourceTree = ""; }; - 49445E341225AB6A00C11A81 /* ClangUserExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangUserExpression.h; path = ExpressionParser/Clang/ClangUserExpression.h; sourceTree = ""; }; - 3032B1B61CAAA3D1004BE1AB /* ClangUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangUtil.cpp; path = source/Symbol/ClangUtil.cpp; sourceTree = ""; }; - 3032B1B91CAAA400004BE1AB /* ClangUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangUtil.h; path = include/lldb/Symbol/ClangUtil.h; sourceTree = ""; }; - 497C86BD122823D800B54702 /* ClangUtilityFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangUtilityFunction.cpp; path = ExpressionParser/Clang/ClangUtilityFunction.cpp; sourceTree = ""; }; - 497C86C1122823F300B54702 /* ClangUtilityFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangUtilityFunction.h; path = ExpressionParser/Clang/ClangUtilityFunction.h; sourceTree = ""; }; - 264723A511FA076E00DE380C /* CleanUp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CleanUp.h; path = include/lldb/Utility/CleanUp.h; sourceTree = ""; }; - 7F94D7172040A13A006EE3EA /* CleanUpTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CleanUpTest.cpp; sourceTree = ""; }; - 949EEDA11BA76571008C63CF /* Cocoa.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Cocoa.cpp; path = Language/ObjC/Cocoa.cpp; sourceTree = ""; }; - 949EEDA21BA76571008C63CF /* Cocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cocoa.h; path = Language/ObjC/Cocoa.h; sourceTree = ""; }; - 5A6424922204D04F00C3D9DB /* CodeViewRegisterMapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CodeViewRegisterMapping.cpp; path = source/Plugins/SymbolFile/NativePDB/CodeViewRegisterMapping.cpp; sourceTree = SOURCE_ROOT; }; - 5A6424942204D05000C3D9DB /* CodeViewRegisterMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CodeViewRegisterMapping.h; path = source/Plugins/SymbolFile/NativePDB/CodeViewRegisterMapping.h; sourceTree = SOURCE_ROOT; }; - 9441816D1C8F5EC900E5A8D9 /* CommandAlias.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandAlias.cpp; path = source/Interpreter/CommandAlias.cpp; sourceTree = ""; }; - 9441816B1C8F5EB000E5A8D9 /* CommandAlias.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandAlias.h; path = include/lldb/Interpreter/CommandAlias.h; sourceTree = ""; }; - 4C09CB74116BD98B00C7A725 /* CommandCompletions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandCompletions.cpp; path = source/Commands/CommandCompletions.cpp; sourceTree = ""; }; - 4C09CB73116BD98B00C7A725 /* CommandCompletions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandCompletions.h; path = include/lldb/Interpreter/CommandCompletions.h; sourceTree = ""; }; - 94BA8B6F176F97CE005A91B5 /* CommandHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandHistory.cpp; path = source/Interpreter/CommandHistory.cpp; sourceTree = ""; }; - 94BA8B71176F97D4005A91B5 /* CommandHistory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandHistory.h; path = include/lldb/Interpreter/CommandHistory.h; sourceTree = ""; }; - 26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandInterpreter.cpp; path = source/Interpreter/CommandInterpreter.cpp; sourceTree = ""; }; - 26BC7DE210F1B7F900F91463 /* CommandInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandInterpreter.h; path = include/lldb/Interpreter/CommandInterpreter.h; sourceTree = ""; }; - 26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObject.cpp; path = source/Interpreter/CommandObject.cpp; sourceTree = ""; }; - 26BC7DE310F1B7F900F91463 /* CommandObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObject.h; path = include/lldb/Interpreter/CommandObject.h; sourceTree = ""; }; - 4CA9637911B6E99A00780E28 /* CommandObjectApropos.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectApropos.cpp; path = source/Commands/CommandObjectApropos.cpp; sourceTree = ""; }; - 4CA9637A11B6E99A00780E28 /* CommandObjectApropos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectApropos.h; path = source/Commands/CommandObjectApropos.h; sourceTree = ""; }; - 26BC7E2D10F1B84700F91463 /* CommandObjectBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectBreakpoint.cpp; path = source/Commands/CommandObjectBreakpoint.cpp; sourceTree = ""; }; - 26BC7D1410F1B76300F91463 /* CommandObjectBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectBreakpoint.h; path = source/Commands/CommandObjectBreakpoint.h; sourceTree = ""; }; - 9A42976211861AA600FE05CD /* CommandObjectBreakpointCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectBreakpointCommand.cpp; path = source/Commands/CommandObjectBreakpointCommand.cpp; sourceTree = ""; }; - 9A42976111861A9F00FE05CD /* CommandObjectBreakpointCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectBreakpointCommand.h; path = source/Commands/CommandObjectBreakpointCommand.h; sourceTree = ""; }; - 6D86CE9E1B440F6B00A7FBFA /* CommandObjectBugreport.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectBugreport.cpp; path = source/Commands/CommandObjectBugreport.cpp; sourceTree = ""; }; - 6D86CE9F1B440F6B00A7FBFA /* CommandObjectBugreport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandObjectBugreport.h; path = source/Commands/CommandObjectBugreport.h; sourceTree = ""; }; - 4C5DBBC611E3FEC60035160F /* CommandObjectCommands.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectCommands.cpp; path = source/Commands/CommandObjectCommands.cpp; sourceTree = ""; }; - 4C5DBBC711E3FEC60035160F /* CommandObjectCommands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectCommands.h; path = source/Commands/CommandObjectCommands.h; sourceTree = ""; }; - 26BC7E3010F1B84700F91463 /* CommandObjectDisassemble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectDisassemble.cpp; path = source/Commands/CommandObjectDisassemble.cpp; sourceTree = ""; }; - 26BC7D1710F1B76300F91463 /* CommandObjectDisassemble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectDisassemble.h; path = source/Commands/CommandObjectDisassemble.h; sourceTree = ""; }; - 26BC7E3110F1B84700F91463 /* CommandObjectExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectExpression.cpp; path = source/Commands/CommandObjectExpression.cpp; sourceTree = ""; }; - 26BC7D1810F1B76300F91463 /* CommandObjectExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectExpression.h; path = source/Commands/CommandObjectExpression.h; sourceTree = ""; }; - 2672D8461189055500FF4019 /* CommandObjectFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectFrame.cpp; path = source/Commands/CommandObjectFrame.cpp; sourceTree = ""; }; - 2672D8471189055500FF4019 /* CommandObjectFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectFrame.h; path = source/Commands/CommandObjectFrame.h; sourceTree = ""; }; - 26CEB5F018762056008F575A /* CommandObjectGUI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectGUI.cpp; path = source/Commands/CommandObjectGUI.cpp; sourceTree = ""; }; - 26CEB5F118762056008F575A /* CommandObjectGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectGUI.h; path = source/Commands/CommandObjectGUI.h; sourceTree = ""; }; - 26BC7E3310F1B84700F91463 /* CommandObjectHelp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectHelp.cpp; path = source/Commands/CommandObjectHelp.cpp; sourceTree = ""; }; - 26BC7D1A10F1B76300F91463 /* CommandObjectHelp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectHelp.h; path = source/Commands/CommandObjectHelp.h; sourceTree = ""; }; - AFC234061AF85CE000CDE8B6 /* CommandObjectLanguage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectLanguage.cpp; path = source/Commands/CommandObjectLanguage.cpp; sourceTree = ""; }; - AFC234071AF85CE000CDE8B6 /* CommandObjectLanguage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectLanguage.h; path = source/Commands/CommandObjectLanguage.h; sourceTree = ""; }; - 264AD83711095BA600E0B039 /* CommandObjectLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectLog.cpp; path = source/Commands/CommandObjectLog.cpp; sourceTree = ""; }; - 264AD83911095BBD00E0B039 /* CommandObjectLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectLog.h; path = source/Commands/CommandObjectLog.h; sourceTree = ""; }; - 26BC7E3610F1B84700F91463 /* CommandObjectMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectMemory.cpp; path = source/Commands/CommandObjectMemory.cpp; sourceTree = ""; }; - 26BC7D1D10F1B76300F91463 /* CommandObjectMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectMemory.h; path = source/Commands/CommandObjectMemory.h; sourceTree = ""; }; - 26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectMultiword.cpp; path = source/Commands/CommandObjectMultiword.cpp; sourceTree = ""; }; - 26DFBC51113B48D600DD817F /* CommandObjectMultiword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectMultiword.h; path = include/lldb/Interpreter/CommandObjectMultiword.h; sourceTree = ""; }; - 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectPlatform.cpp; path = source/Commands/CommandObjectPlatform.cpp; sourceTree = ""; }; - 26879CE51333F5750012C1F8 /* CommandObjectPlatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectPlatform.h; path = source/Commands/CommandObjectPlatform.h; sourceTree = ""; }; - 947A1D621616476A0017C8D1 /* CommandObjectPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectPlugin.cpp; path = source/Commands/CommandObjectPlugin.cpp; sourceTree = ""; }; - 947A1D631616476A0017C8D1 /* CommandObjectPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectPlugin.h; path = source/Commands/CommandObjectPlugin.h; sourceTree = ""; }; - 26BC7E3810F1B84700F91463 /* CommandObjectProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectProcess.cpp; path = source/Commands/CommandObjectProcess.cpp; sourceTree = ""; }; - 26BC7D1F10F1B76300F91463 /* CommandObjectProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectProcess.h; path = source/Commands/CommandObjectProcess.h; sourceTree = ""; }; - 26BC7E3910F1B84700F91463 /* CommandObjectQuit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectQuit.cpp; path = source/Commands/CommandObjectQuit.cpp; sourceTree = ""; }; - 26BC7D2010F1B76300F91463 /* CommandObjectQuit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectQuit.h; path = source/Commands/CommandObjectQuit.h; sourceTree = ""; }; - 26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectRegexCommand.cpp; path = source/Interpreter/CommandObjectRegexCommand.cpp; sourceTree = ""; }; - 26DFBC52113B48D600DD817F /* CommandObjectRegexCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectRegexCommand.h; path = include/lldb/Interpreter/CommandObjectRegexCommand.h; sourceTree = ""; }; - 26BC7E3B10F1B84700F91463 /* CommandObjectRegister.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectRegister.cpp; path = source/Commands/CommandObjectRegister.cpp; sourceTree = ""; }; - 26BC7D2210F1B76300F91463 /* CommandObjectRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectRegister.h; path = source/Commands/CommandObjectRegister.h; sourceTree = ""; }; - AFCB1D5A219CD5A700730AD5 /* CommandObjectReproducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectReproducer.cpp; path = source/Commands/CommandObjectReproducer.cpp; sourceTree = ""; }; - AFCB1D5B219CD5A700730AD5 /* CommandObjectReproducer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectReproducer.h; path = source/Commands/CommandObjectReproducer.h; sourceTree = ""; }; - 26BC7E3D10F1B84700F91463 /* CommandObjectScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectScript.cpp; path = source/Interpreter/CommandObjectScript.cpp; sourceTree = ""; }; - 26BC7D2410F1B76300F91463 /* CommandObjectScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectScript.h; path = source/Interpreter/CommandObjectScript.h; sourceTree = ""; }; - 26BC7E4010F1B84700F91463 /* CommandObjectSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectSettings.cpp; path = source/Commands/CommandObjectSettings.cpp; sourceTree = ""; }; - 26BC7D2710F1B76300F91463 /* CommandObjectSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectSettings.h; path = source/Commands/CommandObjectSettings.h; sourceTree = ""; }; - 26BC7E4210F1B84700F91463 /* CommandObjectSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectSource.cpp; path = source/Commands/CommandObjectSource.cpp; sourceTree = ""; }; - 26BC7D2910F1B76300F91463 /* CommandObjectSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectSource.h; path = source/Commands/CommandObjectSource.h; sourceTree = ""; }; - 6B8894782065AE5C002E5C59 /* CommandObjectStats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectStats.cpp; path = source/Commands/CommandObjectStats.cpp; sourceTree = ""; }; - 6B8894772065AE5C002E5C59 /* CommandObjectStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectStats.h; path = source/Commands/CommandObjectStats.h; sourceTree = ""; }; - 269416AD119A024800FF2715 /* CommandObjectTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectTarget.cpp; path = source/Commands/CommandObjectTarget.cpp; sourceTree = ""; }; - 269416AE119A024800FF2715 /* CommandObjectTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectTarget.h; path = source/Commands/CommandObjectTarget.h; sourceTree = ""; }; - 26BC7E4610F1B84700F91463 /* CommandObjectThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectThread.cpp; path = source/Commands/CommandObjectThread.cpp; sourceTree = ""; }; - 26BC7D2D10F1B76300F91463 /* CommandObjectThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectThread.h; path = source/Commands/CommandObjectThread.h; sourceTree = ""; }; - 9463D4CC13B1798800C230D4 /* CommandObjectType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = CommandObjectType.cpp; path = source/Commands/CommandObjectType.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 9463D4CE13B179A500C230D4 /* CommandObjectType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandObjectType.h; path = source/Commands/CommandObjectType.h; sourceTree = ""; }; - B296983412C2FB2B002D92C3 /* CommandObjectVersion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectVersion.cpp; path = source/Commands/CommandObjectVersion.cpp; sourceTree = ""; }; - B296983512C2FB2B002D92C3 /* CommandObjectVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectVersion.h; path = source/Commands/CommandObjectVersion.h; sourceTree = ""; }; - B207C4921429607D00F36E4E /* CommandObjectWatchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectWatchpoint.cpp; path = source/Commands/CommandObjectWatchpoint.cpp; sourceTree = ""; }; - B207C4941429609C00F36E4E /* CommandObjectWatchpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandObjectWatchpoint.h; path = source/Commands/CommandObjectWatchpoint.h; sourceTree = ""; }; - B2B7CCEA15D1BD6600EEFB57 /* CommandObjectWatchpointCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectWatchpointCommand.cpp; path = source/Commands/CommandObjectWatchpointCommand.cpp; sourceTree = ""; }; - B2B7CCEC15D1BD9600EEFB57 /* CommandObjectWatchpointCommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandObjectWatchpointCommand.h; path = source/Commands/CommandObjectWatchpointCommand.h; sourceTree = ""; }; - 23DDF224196C3EE600BB8417 /* CommandOptionValidators.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandOptionValidators.cpp; path = source/Interpreter/CommandOptionValidators.cpp; sourceTree = ""; }; - 4C719396207D237100FDF430 /* CommandOptionValidators.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandOptionValidators.h; path = include/lldb/Interpreter/CommandOptionValidators.h; sourceTree = ""; }; - 26BC7F0A10F1B8DD00F91463 /* CommandReturnObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandReturnObject.cpp; path = source/Interpreter/CommandReturnObject.cpp; sourceTree = ""; }; - 26BC7DE410F1B7F900F91463 /* CommandReturnObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandReturnObject.h; path = include/lldb/Interpreter/CommandReturnObject.h; sourceTree = ""; }; - 26BC7E6E10F1B85900F91463 /* Communication.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Communication.cpp; path = source/Core/Communication.cpp; sourceTree = ""; }; - 26BC7D5610F1B77400F91463 /* Communication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Communication.h; path = include/lldb/Core/Communication.h; sourceTree = ""; }; - 2642FBA813D003B400ED6808 /* CommunicationKDP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CommunicationKDP.cpp; sourceTree = ""; }; - 2642FBA913D003B400ED6808 /* CommunicationKDP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommunicationKDP.h; sourceTree = ""; }; - 964463EB1A330C0500154ED8 /* CompactUnwindInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompactUnwindInfo.cpp; path = source/Symbol/CompactUnwindInfo.cpp; sourceTree = ""; }; - 964463ED1A330C1B00154ED8 /* CompactUnwindInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CompactUnwindInfo.h; path = include/lldb/Symbol/CompactUnwindInfo.h; sourceTree = ""; }; - 26BC7F1510F1B8EC00F91463 /* CompileUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompileUnit.cpp; path = source/Symbol/CompileUnit.cpp; sourceTree = ""; }; - 26BC7C5710F1B6E900F91463 /* CompileUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CompileUnit.h; path = include/lldb/Symbol/CompileUnit.h; sourceTree = ""; }; - AFD966B4217140B5006714AC /* CompileUnitIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompileUnitIndex.cpp; path = source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp; sourceTree = SOURCE_ROOT; }; - AFD966BD217140C8006714AC /* CompileUnitIndex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CompileUnitIndex.h; path = source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.h; sourceTree = SOURCE_ROOT; }; - 265192C51BA8E905002F08F6 /* CompilerDecl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompilerDecl.cpp; path = source/Symbol/CompilerDecl.cpp; sourceTree = ""; }; - 265192C41BA8E8F8002F08F6 /* CompilerDecl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CompilerDecl.h; path = include/lldb/Symbol/CompilerDecl.h; sourceTree = ""; }; - 2657AFB61B86910100958979 /* CompilerDeclContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompilerDeclContext.cpp; path = source/Symbol/CompilerDeclContext.cpp; sourceTree = ""; }; - 2657AFB51B8690EC00958979 /* CompilerDeclContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CompilerDeclContext.h; path = include/lldb/Symbol/CompilerDeclContext.h; sourceTree = ""; }; - 49E45FAD11F660FE008F7B28 /* CompilerType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompilerType.cpp; path = source/Symbol/CompilerType.cpp; sourceTree = ""; }; - 49E45FA911F660DC008F7B28 /* CompilerType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CompilerType.h; path = include/lldb/Symbol/CompilerType.h; sourceTree = ""; }; - 58EC744020EAEB5200695209 /* CompletionRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompletionRequest.cpp; path = source/Utility/CompletionRequest.cpp; sourceTree = ""; }; - 58EC744220EAEB6C00695209 /* CompletionRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CompletionRequest.h; path = include/lldb/Utility/CompletionRequest.h; sourceTree = ""; }; - 4C639EC921FA684800A7B957 /* CompletionRequestTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompletionRequestTest.cpp; sourceTree = ""; }; - 266F5CBB12FC846200DFCE33 /* Config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Config.h; path = include/lldb/Host/Config.h; sourceTree = ""; }; - 3FDFE53C19A293CA009756A7 /* Config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Config.h; path = include/lldb/Host/freebsd/Config.h; sourceTree = ""; }; - 3FDFE56319AF9B77009756A7 /* Config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Config.h; path = include/lldb/Host/linux/Config.h; sourceTree = SOURCE_ROOT; }; - 6D55BAE31A8CD06000A70529 /* Config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Config.h; path = include/lldb/Host/android/Config.h; sourceTree = ""; }; - 26BC7E6F10F1B85900F91463 /* Connection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Connection.cpp; path = source/Utility/Connection.cpp; sourceTree = ""; }; - 26BC7D5710F1B77400F91463 /* Connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Connection.h; path = include/lldb/Utility/Connection.h; sourceTree = ""; }; - AFDFDFD019E34D3400EAE509 /* ConnectionFileDescriptorPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConnectionFileDescriptorPosix.cpp; sourceTree = ""; }; - 26764C961E48F482008D3573 /* ConstString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConstString.cpp; path = source/Utility/ConstString.cpp; sourceTree = ""; }; - 26764C951E48F46F008D3573 /* ConstString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ConstString.h; path = include/lldb/Utility/ConstString.h; sourceTree = ""; }; - 9A3D43C81F3150D200EB767C /* ConstStringTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConstStringTest.cpp; sourceTree = ""; }; - 26F5C39010F3FA26009D5894 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - 949EED9E1BA74B64008C63CF /* CoreMedia.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CoreMedia.cpp; path = Language/ObjC/CoreMedia.cpp; sourceTree = ""; }; - 949EED9F1BA74B64008C63CF /* CoreMedia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CoreMedia.h; path = Language/ObjC/CoreMedia.h; sourceTree = ""; }; - AF3F54AE1B3BA59C00186E73 /* CrashReason.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CrashReason.cpp; sourceTree = ""; }; - AF3F54AF1B3BA59C00186E73 /* CrashReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrashReason.h; sourceTree = ""; }; - DDB5829B2278C8D600491B41 /* CxxModuleHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CxxModuleHandler.cpp; path = source/Symbol/CxxModuleHandler.cpp; sourceTree = ""; }; - DDB5829D2278C8E900491B41 /* CxxModuleHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CxxModuleHandler.h; path = include/lldb/Symbol/CxxModuleHandler.h; sourceTree = ""; }; - 945261B31B9A11E800BF138D /* CxxStringTypes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CxxStringTypes.cpp; path = Language/CPlusPlus/CxxStringTypes.cpp; sourceTree = ""; }; - 945261B41B9A11E800BF138D /* CxxStringTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CxxStringTypes.h; path = Language/CPlusPlus/CxxStringTypes.h; sourceTree = ""; }; - 6D95DBFD1B9DC057000E318A /* DIERef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DIERef.cpp; sourceTree = ""; }; - 6D95DC031B9DC06F000E318A /* DIERef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DIERef.h; sourceTree = ""; }; - 269DDD451B8FD01A00D0DBD8 /* DWARFASTParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFASTParser.h; sourceTree = ""; }; - 269DDD481B8FD1C300D0DBD8 /* DWARFASTParserClang.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFASTParserClang.cpp; sourceTree = ""; }; - 269DDD491B8FD1C300D0DBD8 /* DWARFASTParserClang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFASTParserClang.h; sourceTree = ""; }; - 260C89B310F57C5600BB2B04 /* DWARFAbbreviationDeclaration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFAbbreviationDeclaration.cpp; sourceTree = ""; }; - 260C89B410F57C5600BB2B04 /* DWARFAbbreviationDeclaration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFAbbreviationDeclaration.h; sourceTree = ""; }; - 266E829C1B8E542C008FCA06 /* DWARFAttribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFAttribute.cpp; sourceTree = ""; }; - 260C89B610F57C5600BB2B04 /* DWARFAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFAttribute.h; sourceTree = ""; }; - 4CD44D4020B777850003557C /* DWARFBaseDIE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFBaseDIE.cpp; sourceTree = ""; }; - 4CD44D4120B777850003557C /* DWARFBaseDIE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFBaseDIE.h; sourceTree = ""; }; - 26BC7F1710F1B8EC00F91463 /* DWARFCallFrameInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DWARFCallFrameInfo.cpp; path = source/Symbol/DWARFCallFrameInfo.cpp; sourceTree = ""; }; - 26BC7C5910F1B6E900F91463 /* DWARFCallFrameInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DWARFCallFrameInfo.h; path = include/lldb/Symbol/DWARFCallFrameInfo.h; sourceTree = ""; }; - 260C89B710F57C5600BB2B04 /* DWARFCompileUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFCompileUnit.cpp; sourceTree = ""; }; - 260C89B810F57C5600BB2B04 /* DWARFCompileUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFCompileUnit.h; sourceTree = ""; }; - AF5B97D92242FC27002D3F2C /* DWARFContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFContext.cpp; sourceTree = ""; }; - AF5B97DA2242FC27002D3F2C /* DWARFContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWARFContext.h; sourceTree = ""; }; - 266E82961B8CE3AC008FCA06 /* DWARFDIE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDIE.cpp; sourceTree = ""; }; - 266E82951B8CE346008FCA06 /* DWARFDIE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWARFDIE.h; sourceTree = ""; }; - 26AB92101819D74600E63F3E /* DWARFDataExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDataExtractor.cpp; sourceTree = ""; }; - 26AB92111819D74600E63F3E /* DWARFDataExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDataExtractor.h; sourceTree = ""; }; - 260C89B910F57C5600BB2B04 /* DWARFDebugAbbrev.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugAbbrev.cpp; sourceTree = ""; }; - 260C89BA10F57C5600BB2B04 /* DWARFDebugAbbrev.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugAbbrev.h; sourceTree = ""; }; - 260C89BD10F57C5600BB2B04 /* DWARFDebugArangeSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugArangeSet.cpp; sourceTree = ""; }; - 260C89BE10F57C5600BB2B04 /* DWARFDebugArangeSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugArangeSet.h; sourceTree = ""; }; - 260C89BB10F57C5600BB2B04 /* DWARFDebugAranges.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugAranges.cpp; sourceTree = ""; }; - 260C89BC10F57C5600BB2B04 /* DWARFDebugAranges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugAranges.h; sourceTree = ""; }; - 260C89BF10F57C5600BB2B04 /* DWARFDebugInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugInfo.cpp; sourceTree = ""; }; - 260C89C010F57C5600BB2B04 /* DWARFDebugInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugInfo.h; sourceTree = ""; }; - 260C89C110F57C5600BB2B04 /* DWARFDebugInfoEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugInfoEntry.cpp; sourceTree = ""; }; - 260C89C210F57C5600BB2B04 /* DWARFDebugInfoEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugInfoEntry.h; sourceTree = ""; }; - 260C89C310F57C5600BB2B04 /* DWARFDebugLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugLine.cpp; sourceTree = ""; }; - 260C89C410F57C5600BB2B04 /* DWARFDebugLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugLine.h; sourceTree = ""; }; - 23E77CD61C20F29F007192AD /* DWARFDebugMacro.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugMacro.cpp; sourceTree = ""; }; - 23E77CD71C20F29F007192AD /* DWARFDebugMacro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugMacro.h; sourceTree = ""; }; - 260C89CD10F57C5600BB2B04 /* DWARFDebugRanges.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDebugRanges.cpp; sourceTree = ""; }; - 260C89CE10F57C5600BB2B04 /* DWARFDebugRanges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDebugRanges.h; sourceTree = ""; }; - 26B1EFAC154638AF00E2DAC7 /* DWARFDeclContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFDeclContext.cpp; sourceTree = ""; }; - 26B1EFAD154638AF00E2DAC7 /* DWARFDeclContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDeclContext.h; sourceTree = ""; }; - 260C89CF10F57C5600BB2B04 /* DWARFDefines.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; path = DWARFDefines.cpp; sourceTree = ""; }; - 260C89D010F57C5600BB2B04 /* DWARFDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFDefines.h; sourceTree = ""; }; - 26BC7ED810F1B86700F91463 /* DWARFExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DWARFExpression.cpp; path = source/Expression/DWARFExpression.cpp; sourceTree = ""; }; - 26BC7DC310F1B79500F91463 /* DWARFExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DWARFExpression.h; path = include/lldb/Expression/DWARFExpression.h; sourceTree = ""; }; - 260C89D310F57C5600BB2B04 /* DWARFFormValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFFormValue.cpp; sourceTree = ""; }; - 260C89D410F57C5600BB2B04 /* DWARFFormValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFFormValue.h; sourceTree = ""; }; - 4CD44CF820B37C440003557C /* DWARFIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFIndex.cpp; sourceTree = ""; }; - 4CD44CFE20B37C570003557C /* DWARFIndex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWARFIndex.h; sourceTree = ""; }; - 4C38996221B9AECC002BAEF4 /* DWARFLocationExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DWARFLocationExpression.cpp; path = source/Plugins/SymbolFile/NativePDB/DWARFLocationExpression.cpp; sourceTree = SOURCE_ROOT; }; - 4C38996321B9AECC002BAEF4 /* DWARFLocationExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DWARFLocationExpression.h; path = source/Plugins/SymbolFile/NativePDB/DWARFLocationExpression.h; sourceTree = SOURCE_ROOT; }; - 4C645D022295D3B500D3C034 /* DWARFTypeUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFTypeUnit.cpp; sourceTree = ""; }; - 4C645D032295D3B600D3C034 /* DWARFTypeUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFTypeUnit.h; sourceTree = ""; }; - 7F2AAA5920601BE000A422D8 /* DWARFUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DWARFUnit.cpp; sourceTree = ""; }; - 7F2AAA5820601BDF00A422D8 /* DWARFUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWARFUnit.h; sourceTree = ""; }; - 26FFC19514FC072100087D58 /* DYLDRendezvous.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DYLDRendezvous.cpp; sourceTree = ""; }; - 26FFC19614FC072100087D58 /* DYLDRendezvous.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DYLDRendezvous.h; sourceTree = ""; }; - 49CA96F01E6AAC8E00C03FEE /* DataBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataBuffer.h; path = include/lldb/Utility/DataBuffer.h; sourceTree = ""; }; - 49CA96E61E6AAC6600C03FEE /* DataBufferHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataBufferHeap.cpp; path = source/Utility/DataBufferHeap.cpp; sourceTree = ""; }; - 49CA96F11E6AAC8E00C03FEE /* DataBufferHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataBufferHeap.h; path = include/lldb/Utility/DataBufferHeap.h; sourceTree = ""; }; - 49CA96E71E6AAC6600C03FEE /* DataBufferLLVM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataBufferLLVM.cpp; path = source/Utility/DataBufferLLVM.cpp; sourceTree = ""; }; - 49CA96F21E6AAC8E00C03FEE /* DataBufferLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataBufferLLVM.h; path = include/lldb/Utility/DataBufferLLVM.h; sourceTree = ""; }; - 49CA96E81E6AAC6600C03FEE /* DataEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataEncoder.cpp; path = source/Utility/DataEncoder.cpp; sourceTree = ""; }; - 49CA96F31E6AAC8E00C03FEE /* DataEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataEncoder.h; path = include/lldb/Utility/DataEncoder.h; sourceTree = ""; }; - 49CA96E91E6AAC6600C03FEE /* DataExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataExtractor.cpp; path = source/Utility/DataExtractor.cpp; sourceTree = ""; }; - 49CA96F41E6AAC8E00C03FEE /* DataExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataExtractor.h; path = include/lldb/Utility/DataExtractor.h; sourceTree = ""; }; - AFA1B62B219E0ED900A8AB7E /* DataExtractorTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataExtractorTest.cpp; sourceTree = ""; }; - 94CB255816B069770059775D /* DataVisualization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataVisualization.cpp; path = source/DataFormatters/DataVisualization.cpp; sourceTree = ""; }; - 94CB256016B069800059775D /* DataVisualization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataVisualization.h; path = include/lldb/DataFormatters/DataVisualization.h; sourceTree = ""; }; - 3FDFED1E19BA6D55009756A7 /* Debug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Debug.h; path = include/lldb/Host/Debug.h; sourceTree = ""; }; - 23E77CDB1C20F2F2007192AD /* DebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DebugMacros.cpp; path = source/Symbol/DebugMacros.cpp; sourceTree = ""; }; - 6D0F613C1C80AA8900A4ECEE /* DebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DebugMacros.h; path = include/lldb/Symbol/DebugMacros.h; sourceTree = ""; }; - AF116BED20CF234B0071093F /* DebugNamesDWARFIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebugNamesDWARFIndex.cpp; sourceTree = ""; }; - AF116BEE20CF234B0071093F /* DebugNamesDWARFIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugNamesDWARFIndex.h; sourceTree = ""; }; - 263664921140A4930075843B /* Debugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = Debugger.cpp; path = source/Core/Debugger.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 263664941140A4C10075843B /* Debugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = Debugger.h; path = include/lldb/Core/Debugger.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 49B01A2D15F67B1700666829 /* DeclVendor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DeclVendor.h; path = include/lldb/Symbol/DeclVendor.h; sourceTree = ""; }; - 26BC7F1610F1B8EC00F91463 /* Declaration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Declaration.cpp; path = source/Symbol/Declaration.cpp; sourceTree = ""; }; - 26BC7C5810F1B6E900F91463 /* Declaration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Declaration.h; path = include/lldb/Symbol/Declaration.h; sourceTree = ""; }; - 49E4F6681C9CAD12008487EA /* DiagnosticManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiagnosticManager.cpp; path = source/Expression/DiagnosticManager.cpp; sourceTree = ""; }; - 49E4F66C1C9CAD2D008487EA /* DiagnosticManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DiagnosticManager.h; path = include/lldb/Expression/DiagnosticManager.h; sourceTree = ""; }; - 26BC7E7610F1B85900F91463 /* Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Disassembler.cpp; path = source/Core/Disassembler.cpp; sourceTree = ""; }; - 26BC7D5E10F1B77400F91463 /* Disassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Disassembler.h; path = include/lldb/Core/Disassembler.h; sourceTree = ""; }; - B299580A14F2FA1400050A04 /* DisassemblerLLVMC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DisassemblerLLVMC.cpp; sourceTree = ""; }; - B299580C14F2FA1F00050A04 /* DisassemblerLLVMC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisassemblerLLVMC.h; sourceTree = ""; }; - 2579065E1BD0488D00178368 /* DomainSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DomainSocket.cpp; sourceTree = ""; }; - 26F5C27310F3D9E4009D5894 /* Driver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Driver.cpp; path = tools/driver/Driver.cpp; sourceTree = ""; }; - 26F5C27410F3D9E4009D5894 /* Driver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Driver.h; path = tools/driver/Driver.h; sourceTree = ""; }; - 4C4EB77F1E6A4DB8002035C0 /* DumpDataExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DumpDataExtractor.cpp; path = source/Core/DumpDataExtractor.cpp; sourceTree = ""; }; - 4C4EB7821E6A4DE7002035C0 /* DumpDataExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DumpDataExtractor.h; path = include/lldb/Core/DumpDataExtractor.h; sourceTree = ""; }; - AFA585CF2107EB7300D7689A /* DumpRegisterValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DumpRegisterValue.cpp; path = source/Core/DumpRegisterValue.cpp; sourceTree = ""; }; - 9447DE421BD5963300E67212 /* DumpValueObjectOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DumpValueObjectOptions.cpp; path = source/DataFormatters/DumpValueObjectOptions.cpp; sourceTree = ""; }; - 9447DE411BD5962900E67212 /* DumpValueObjectOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DumpValueObjectOptions.h; path = include/lldb/DataFormatters/DumpValueObjectOptions.h; sourceTree = ""; }; - 26BC7E7710F1B85900F91463 /* DynamicLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DynamicLoader.cpp; path = source/Core/DynamicLoader.cpp; sourceTree = ""; }; - 26BC7DF110F1B81A00F91463 /* DynamicLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DynamicLoader.h; path = include/lldb/Target/DynamicLoader.h; sourceTree = ""; }; - AF27AD531D3603EA00CF2833 /* DynamicLoaderDarwin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderDarwin.cpp; sourceTree = ""; }; - AF27AD541D3603EA00CF2833 /* DynamicLoaderDarwin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderDarwin.h; sourceTree = ""; }; - 26274FA514030F79006BA130 /* DynamicLoaderDarwinKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderDarwinKernel.cpp; sourceTree = ""; }; - 26274FA614030F79006BA130 /* DynamicLoaderDarwinKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderDarwinKernel.h; sourceTree = ""; }; - 2666ADC11B3CB675001FAFD3 /* DynamicLoaderHexagonDYLD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderHexagonDYLD.cpp; sourceTree = ""; }; - 2666ADC21B3CB675001FAFD3 /* DynamicLoaderHexagonDYLD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderHexagonDYLD.h; sourceTree = ""; }; - AF2907BD1D3F082400E10654 /* DynamicLoaderMacOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderMacOS.cpp; sourceTree = ""; }; - AF2907BE1D3F082400E10654 /* DynamicLoaderMacOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderMacOS.h; sourceTree = ""; }; - 260C897A10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderMacOSXDYLD.cpp; sourceTree = ""; }; - 260C897B10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderMacOSXDYLD.h; sourceTree = ""; }; - 26FFC19714FC072100087D58 /* DynamicLoaderPOSIXDYLD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderPOSIXDYLD.cpp; sourceTree = ""; }; - 26FFC19814FC072100087D58 /* DynamicLoaderPOSIXDYLD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderPOSIXDYLD.h; sourceTree = ""; }; - 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderStatic.cpp; sourceTree = ""; }; - 268A683E1321B53B000E3FB8 /* DynamicLoaderStatic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderStatic.h; sourceTree = ""; }; - 26F006541B4DD86700B872E5 /* DynamicLoaderWindowsDYLD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderWindowsDYLD.cpp; sourceTree = ""; }; - 26F006551B4DD86700B872E5 /* DynamicLoaderWindowsDYLD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderWindowsDYLD.h; sourceTree = ""; }; - 26954EBC1401EE8B00294D09 /* DynamicRegisterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DynamicRegisterInfo.cpp; path = Utility/DynamicRegisterInfo.cpp; sourceTree = ""; }; - 26954EBD1401EE8B00294D09 /* DynamicRegisterInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DynamicRegisterInfo.h; path = Utility/DynamicRegisterInfo.h; sourceTree = ""; }; - 26D27C9D11ED3A4E0024D721 /* ELFHeader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ELFHeader.cpp; sourceTree = ""; }; - 26D27C9E11ED3A4E0024D721 /* ELFHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELFHeader.h; sourceTree = ""; }; - 3FDFE54019A29448009756A7 /* EditLineWin.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EditLineWin.cpp; path = source/Host/windows/EditLineWin.cpp; sourceTree = ""; }; - 26CFDCA2186163A4000E63E5 /* Editline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Editline.cpp; sourceTree = ""; }; - 26CFDCA01861638D000E63E5 /* Editline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Editline.h; path = include/lldb/Host/Editline.h; sourceTree = ""; }; - 2326CF511BDD693B00A5CEAC /* EditlineTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EditlineTest.cpp; sourceTree = ""; }; - 26D9FDC812F784FD0003F2EE /* EmulateInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EmulateInstruction.cpp; path = source/Core/EmulateInstruction.cpp; sourceTree = ""; }; - 26D9FDC612F784E60003F2EE /* EmulateInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EmulateInstruction.h; path = include/lldb/Core/EmulateInstruction.h; sourceTree = ""; }; - 9A22A15D135E30370024DDC3 /* EmulateInstructionARM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmulateInstructionARM.cpp; sourceTree = ""; }; - 9A22A15E135E30370024DDC3 /* EmulateInstructionARM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmulateInstructionARM.h; sourceTree = ""; }; - 264A12FA1372522000875C42 /* EmulateInstructionARM64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmulateInstructionARM64.cpp; sourceTree = ""; }; - 264A12FB1372522000875C42 /* EmulateInstructionARM64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmulateInstructionARM64.h; sourceTree = ""; }; - E778E99F1B062D1700247609 /* EmulateInstructionMIPS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmulateInstructionMIPS.cpp; sourceTree = ""; }; - E778E9A01B062D1700247609 /* EmulateInstructionMIPS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmulateInstructionMIPS.h; sourceTree = ""; }; - 94A5B3951AB9FE8300A5EE7F /* EmulateInstructionMIPS64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EmulateInstructionMIPS64.cpp; path = MIPS64/EmulateInstructionMIPS64.cpp; sourceTree = ""; }; - 94A5B3961AB9FE8300A5EE7F /* EmulateInstructionMIPS64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EmulateInstructionMIPS64.h; path = MIPS64/EmulateInstructionMIPS64.h; sourceTree = ""; }; - AFDBC36C204663AF00B9C8F2 /* EmulateInstructionPPC64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EmulateInstructionPPC64.cpp; path = source/Plugins/Instruction/PPC64/EmulateInstructionPPC64.cpp; sourceTree = SOURCE_ROOT; }; - AFDBC36B204663AF00B9C8F2 /* EmulateInstructionPPC64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EmulateInstructionPPC64.h; path = source/Plugins/Instruction/PPC64/EmulateInstructionPPC64.h; sourceTree = SOURCE_ROOT; }; - 9A22A15F135E30370024DDC3 /* EmulationStateARM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EmulationStateARM.cpp; sourceTree = ""; }; - 9A22A160135E30370024DDC3 /* EmulationStateARM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmulationStateARM.h; sourceTree = ""; }; - 26BC7DD310F1B7D500F91463 /* Endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Endian.h; path = include/lldb/Utility/Endian.h; sourceTree = ""; }; - 22DC561920064C9600A7E9E8 /* Environment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Environment.cpp; path = source/Utility/Environment.cpp; sourceTree = ""; }; - 6B74D89C2006972D0074051B /* Environment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Environment.h; path = include/lldb/Utility/Environment.h; sourceTree = ""; }; - 4C639EBD21FA684600A7B957 /* EnvironmentTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnvironmentTest.cpp; sourceTree = ""; }; - 2647B63B21C436B400A81D15 /* Event.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Event.cpp; path = source/Utility/Event.cpp; sourceTree = ""; }; - 2647B63321C4367A00A81D15 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = include/lldb/Utility/Event.h; sourceTree = ""; }; - 4C639EC521FA684800A7B957 /* EventTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventTest.cpp; sourceTree = ""; }; - 26603874211CA90E00329572 /* ExceptionBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExceptionBreakpoint.cpp; path = "tools/lldb-vscode/ExceptionBreakpoint.cpp"; sourceTree = ""; }; - 26603873211CA90E00329572 /* ExceptionBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExceptionBreakpoint.h; path = "tools/lldb-vscode/ExceptionBreakpoint.h"; sourceTree = ""; }; - 26BC7F3510F1B90C00F91463 /* ExecutionContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExecutionContext.cpp; path = source/Target/ExecutionContext.cpp; sourceTree = ""; }; - 26BC7DF210F1B81A00F91463 /* ExecutionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExecutionContext.h; path = include/lldb/Target/ExecutionContext.h; sourceTree = ""; }; - 26DAFD9711529BC7005A394E /* ExecutionContextScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExecutionContextScope.h; path = include/lldb/Target/ExecutionContextScope.h; sourceTree = ""; }; - 4C88BC291BA3722B00AA0964 /* Expression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Expression.cpp; path = source/Expression/Expression.cpp; sourceTree = ""; }; - 4C00832C1B9A58A700D5CF24 /* Expression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Expression.h; path = include/lldb/Expression/Expression.h; sourceTree = ""; }; - 4C2479BE1BA39843009C9A7B /* ExpressionParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ExpressionParser.h; path = include/lldb/Expression/ExpressionParser.h; sourceTree = ""; }; - 49A1CAC11430E21D00306AC9 /* ExpressionSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExpressionSourceCode.h; path = include/lldb/Expression/ExpressionSourceCode.h; sourceTree = ""; }; - 4C29E77D1BA2403F00DFF855 /* ExpressionTypeSystemHelper.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; name = ExpressionTypeSystemHelper.h; path = include/lldb/Expression/ExpressionTypeSystemHelper.h; sourceTree = ""; }; - 4984BA151B979973008658D4 /* ExpressionVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExpressionVariable.cpp; path = source/Expression/ExpressionVariable.cpp; sourceTree = ""; }; - 4984BA171B979C08008658D4 /* ExpressionVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExpressionVariable.h; path = include/lldb/Expression/ExpressionVariable.h; sourceTree = ""; }; - 260C6EA213011581005E16B0 /* File.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = File.cpp; sourceTree = ""; }; - 260C6EA013011578005E16B0 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = File.h; path = include/lldb/Host/File.h; sourceTree = ""; }; - 3FDFDDBC199C3A06009756A7 /* FileAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileAction.cpp; sourceTree = ""; }; - 3FDFDDBE199D345E009756A7 /* FileCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileCache.cpp; path = source/Host/common/FileCache.cpp; sourceTree = ""; }; - 3FDFDDC0199D34E2009756A7 /* FileCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileCache.h; path = include/lldb/Host/FileCache.h; sourceTree = ""; }; - DD8F277D22011CC9004ED75B /* FileCollector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileCollector.cpp; path = source/Utility/FileCollector.cpp; sourceTree = ""; }; - DD8F278022011D0F004ED75B /* FileCollectorTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileCollectorTest.cpp; sourceTree = ""; }; - 26BD407E135D2ADF00237D80 /* FileLineResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileLineResolver.cpp; path = source/Core/FileLineResolver.cpp; sourceTree = ""; }; - 26BD407D135D2AC400237D80 /* FileLineResolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileLineResolver.h; path = include/lldb/Core/FileLineResolver.h; sourceTree = ""; }; - 26FA43171301048600E71120 /* FileSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileSpec.cpp; path = source/Utility/FileSpec.cpp; sourceTree = ""; }; - 26FA4315130103F400E71120 /* FileSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSpec.h; path = include/lldb/Utility/FileSpec.h; sourceTree = ""; }; - 26BC7E7B10F1B85900F91463 /* FileSpecList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileSpecList.cpp; path = source/Core/FileSpecList.cpp; sourceTree = ""; }; - 26BC7D6310F1B77400F91463 /* FileSpecList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSpecList.h; path = include/lldb/Core/FileSpecList.h; sourceTree = ""; }; - 23CB14FD1D66CD2400EDDDE1 /* FileSpecTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSpecTest.cpp; sourceTree = ""; }; - 250D6AE11A9679270049CC70 /* FileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystem.cpp; sourceTree = ""; }; - 3FDFDDC5199D37ED009756A7 /* FileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystem.cpp; sourceTree = ""; }; - 3FDFE54119A29448009756A7 /* FileSystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FileSystem.cpp; path = source/Host/windows/FileSystem.cpp; sourceTree = ""; }; - 3FDFDDC1199D34E2009756A7 /* FileSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FileSystem.h; path = include/lldb/Host/FileSystem.h; sourceTree = ""; }; - 9A20572E1F3B8E7600F6C293 /* FileSystemTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemTest.cpp; sourceTree = ""; }; - 4CBFF0471F579A36004AFA92 /* Flags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Flags.h; path = include/lldb/Utility/Flags.h; sourceTree = ""; }; - 4C639EC821FA684800A7B957 /* FlagsTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FlagsTest.cpp; sourceTree = ""; }; - 94CB257316B1D3870059775D /* FormatCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatCache.cpp; path = source/DataFormatters/FormatCache.cpp; sourceTree = ""; }; - 94CB257516B1D3910059775D /* FormatCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatCache.h; path = include/lldb/DataFormatters/FormatCache.h; sourceTree = ""; }; - 94CB255916B069770059775D /* FormatClasses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatClasses.cpp; path = source/DataFormatters/FormatClasses.cpp; sourceTree = ""; }; - 94CB256116B069800059775D /* FormatClasses.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatClasses.h; path = include/lldb/DataFormatters/FormatClasses.h; sourceTree = ""; }; - 263FDE5F1A79A01500E68013 /* FormatEntity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatEntity.cpp; path = source/Core/FormatEntity.cpp; sourceTree = ""; }; - 263FDE5D1A799F2D00E68013 /* FormatEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FormatEntity.h; path = include/lldb/Core/FormatEntity.h; sourceTree = ""; }; - 94CB255A16B069770059775D /* FormatManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatManager.cpp; path = source/DataFormatters/FormatManager.cpp; sourceTree = ""; }; - 94CB256216B069800059775D /* FormatManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatManager.h; path = include/lldb/DataFormatters/FormatManager.h; sourceTree = ""; }; - 94EE33F218643C6900CD703B /* FormattersContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormattersContainer.h; path = include/lldb/DataFormatters/FormattersContainer.h; sourceTree = ""; }; - 94D0858B1B9675B8000D24BD /* FormattersHelpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormattersHelpers.cpp; path = source/DataFormatters/FormattersHelpers.cpp; sourceTree = ""; }; - 94D0858A1B9675A0000D24BD /* FormattersHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormattersHelpers.h; path = include/lldb/DataFormatters/FormattersHelpers.h; sourceTree = ""; }; - 2326CF451BDD647400A5CEAC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 260C876910F538E700BB2B04 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - AF23B4D919009C66003E2A58 /* FreeBSDSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FreeBSDSignals.cpp; path = Utility/FreeBSDSignals.cpp; sourceTree = ""; }; - AF23B4DA19009C66003E2A58 /* FreeBSDSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FreeBSDSignals.h; path = Utility/FreeBSDSignals.h; sourceTree = ""; }; - 23AB052D199FF639003B8084 /* FreeBSDThread.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FreeBSDThread.cpp; sourceTree = ""; }; - 23AB052E199FF639003B8084 /* FreeBSDThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FreeBSDThread.h; sourceTree = ""; }; - 961FABB81235DE1600F93A47 /* FuncUnwinders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FuncUnwinders.cpp; path = source/Symbol/FuncUnwinders.cpp; sourceTree = ""; }; - 269FF07D12494F7D00225026 /* FuncUnwinders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FuncUnwinders.h; path = include/lldb/Symbol/FuncUnwinders.h; sourceTree = ""; }; - 26BC7F1810F1B8EC00F91463 /* Function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Function.cpp; path = source/Symbol/Function.cpp; sourceTree = ""; }; - 26BC7C5A10F1B6E900F91463 /* Function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Function.h; path = include/lldb/Symbol/Function.h; sourceTree = ""; }; - 26603877211CA90E00329572 /* FunctionBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FunctionBreakpoint.cpp; path = "tools/lldb-vscode/FunctionBreakpoint.cpp"; sourceTree = ""; }; - 26603871211CA90D00329572 /* FunctionBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FunctionBreakpoint.h; path = "tools/lldb-vscode/FunctionBreakpoint.h"; sourceTree = ""; }; - 4C0083321B9A5DE200D5CF24 /* FunctionCaller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FunctionCaller.cpp; path = source/Expression/FunctionCaller.cpp; sourceTree = ""; }; - 4C00832D1B9A58A700D5CF24 /* FunctionCaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FunctionCaller.h; path = include/lldb/Expression/FunctionCaller.h; sourceTree = ""; }; - 2374D74E1D4BB299005C9575 /* GDBRemoteClientBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteClientBase.cpp; sourceTree = ""; }; - 2374D74F1D4BB299005C9575 /* GDBRemoteClientBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteClientBase.h; sourceTree = ""; }; - 2370A37D1D66C587000E7BE6 /* GDBRemoteClientBaseTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteClientBaseTest.cpp; sourceTree = ""; }; - 2618EE5B1315B29C001D6D71 /* GDBRemoteCommunication.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunication.cpp; sourceTree = ""; }; - 2618EE5C1315B29C001D6D71 /* GDBRemoteCommunication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunication.h; sourceTree = ""; }; - 26744EED1338317700EF765A /* GDBRemoteCommunicationClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationClient.cpp; sourceTree = ""; }; - 26744EEE1338317700EF765A /* GDBRemoteCommunicationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationClient.h; sourceTree = ""; }; - 2370A37E1D66C587000E7BE6 /* GDBRemoteCommunicationClientTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationClientTest.cpp; sourceTree = ""; }; - AF8AD943219CD45700614785 /* GDBRemoteCommunicationHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationHistory.cpp; sourceTree = ""; }; - AF8AD944219CD45700614785 /* GDBRemoteCommunicationHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationHistory.h; sourceTree = ""; }; - AFCB1D57219CD4FD00730AD5 /* GDBRemoteCommunicationReplayServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationReplayServer.cpp; sourceTree = ""; }; - AFCB1D56219CD4FD00730AD5 /* GDBRemoteCommunicationReplayServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationReplayServer.h; sourceTree = ""; }; - 26744EEF1338317700EF765A /* GDBRemoteCommunicationServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationServer.cpp; sourceTree = ""; }; - 26744EF01338317700EF765A /* GDBRemoteCommunicationServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationServer.h; sourceTree = ""; }; - 6D55B28D1A8A806200A70529 /* GDBRemoteCommunicationServerCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationServerCommon.cpp; sourceTree = ""; }; - 6D55B2931A8A808400A70529 /* GDBRemoteCommunicationServerCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationServerCommon.h; sourceTree = ""; }; - 6D55B28E1A8A806200A70529 /* GDBRemoteCommunicationServerLLGS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationServerLLGS.cpp; sourceTree = ""; }; - 6D55B2941A8A808400A70529 /* GDBRemoteCommunicationServerLLGS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationServerLLGS.h; sourceTree = ""; }; - 6D55B28F1A8A806200A70529 /* GDBRemoteCommunicationServerPlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteCommunicationServerPlatform.cpp; sourceTree = ""; }; - 6D55B2951A8A808400A70529 /* GDBRemoteCommunicationServerPlatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GDBRemoteCommunicationServerPlatform.h; sourceTree = ""; }; - 2618EE5D1315B29C001D6D71 /* GDBRemoteRegisterContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteRegisterContext.cpp; sourceTree = ""; }; - 2618EE5E1315B29C001D6D71 /* GDBRemoteRegisterContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteRegisterContext.h; sourceTree = ""; }; - E73A15A41B548EC500786197 /* GDBRemoteSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GDBRemoteSignals.cpp; path = Utility/GDBRemoteSignals.cpp; sourceTree = ""; }; - E73A15A51B548EC500786197 /* GDBRemoteSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GDBRemoteSignals.h; path = Utility/GDBRemoteSignals.h; sourceTree = ""; }; - 2370A37F1D66C587000E7BE6 /* GDBRemoteTestUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GDBRemoteTestUtils.cpp; sourceTree = ""; }; - 2370A3801D66C587000E7BE6 /* GDBRemoteTestUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GDBRemoteTestUtils.h; sourceTree = ""; }; - 6D95DBFE1B9DC057000E318A /* HashedNameToDIE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HashedNameToDIE.cpp; sourceTree = ""; }; - 26A0DA4D140F721D006DA411 /* HashedNameToDIE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HashedNameToDIE.h; sourceTree = ""; }; - 2666ADC31B3CB675001FAFD3 /* HexagonDYLDRendezvous.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HexagonDYLDRendezvous.cpp; sourceTree = ""; }; - 2666ADC41B3CB675001FAFD3 /* HexagonDYLDRendezvous.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexagonDYLDRendezvous.h; sourceTree = ""; }; - 58A080A92112AA9400D5580F /* Highlighter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Highlighter.cpp; path = source/Core/Highlighter.cpp; sourceTree = ""; }; - 58A080B12112AB2200D5580F /* HighlighterTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HighlighterTest.cpp; path = unittests/Language/Highlighting/HighlighterTest.cpp; sourceTree = SOURCE_ROOT; }; - AF1729D4182C907200E0AB97 /* HistoryThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HistoryThread.cpp; path = Utility/HistoryThread.cpp; sourceTree = ""; }; - AF061F89182C980000B6A19C /* HistoryThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HistoryThread.h; path = Utility/HistoryThread.h; sourceTree = ""; }; - AF1729D5182C907200E0AB97 /* HistoryUnwind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HistoryUnwind.cpp; path = Utility/HistoryUnwind.cpp; sourceTree = ""; }; - AF061F8A182C980000B6A19C /* HistoryUnwind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HistoryUnwind.h; path = Utility/HistoryUnwind.h; sourceTree = ""; }; - 233B009D19610D6B0090E598 /* Host.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Host.cpp; sourceTree = ""; }; - 3FDFE54219A29448009756A7 /* Host.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Host.cpp; path = source/Host/windows/Host.cpp; sourceTree = ""; }; - 3FDFE55E19AF9B14009756A7 /* Host.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Host.cpp; path = source/Host/freebsd/Host.cpp; sourceTree = ""; }; - 69A01E1C1236C5D400C660B5 /* Host.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Host.cpp; sourceTree = ""; }; - 26BC7DD410F1B7D500F91463 /* Host.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Host.h; path = include/lldb/Host/Host.h; sourceTree = ""; }; - AFF81FAD20D1CC400010F95E /* Host.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Host.mm; path = source/Host/macosx/objcxx/Host.mm; sourceTree = ""; }; - 3FDFED1F19BA6D55009756A7 /* HostGetOpt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostGetOpt.h; path = include/lldb/Host/HostGetOpt.h; sourceTree = ""; }; - 3FDFE53719A2936B009756A7 /* HostInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfo.h; path = include/lldb/Host/HostInfo.h; sourceTree = ""; }; - 6D55BAE01A8CD03D00A70529 /* HostInfoAndroid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostInfoAndroid.cpp; path = source/Host/android/HostInfoAndroid.cpp; sourceTree = ""; }; - 6D55BAE41A8CD06000A70529 /* HostInfoAndroid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfoAndroid.h; path = include/lldb/Host/android/HostInfoAndroid.h; sourceTree = ""; }; - 3FDFE53419A29327009756A7 /* HostInfoBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostInfoBase.cpp; sourceTree = ""; }; - 3FDFE53819A2936B009756A7 /* HostInfoBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfoBase.h; path = include/lldb/Host/HostInfoBase.h; sourceTree = ""; }; - 3FDFE53B19A293B3009756A7 /* HostInfoFreeBSD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostInfoFreeBSD.cpp; path = source/Host/freebsd/HostInfoFreeBSD.cpp; sourceTree = ""; }; - 3FDFE53D19A293CA009756A7 /* HostInfoFreeBSD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfoFreeBSD.h; path = include/lldb/Host/freebsd/HostInfoFreeBSD.h; sourceTree = ""; }; - 3FDFE53619A2933E009756A7 /* HostInfoLinux.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HostInfoLinux.cpp; sourceTree = ""; }; - 237C577A19AF9D9F00213D59 /* HostInfoLinux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfoLinux.h; path = include/lldb/Host/linux/HostInfoLinux.h; sourceTree = SOURCE_ROOT; }; - 3FDFE56419AF9B77009756A7 /* HostInfoLinux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfoLinux.h; path = include/lldb/Host/linux/HostInfoLinux.h; sourceTree = SOURCE_ROOT; }; - 3FDFE52D19A291AF009756A7 /* HostInfoMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostInfoMacOSX.h; path = include/lldb/Host/macosx/HostInfoMacOSX.h; sourceTree = ""; }; - AFF81FAB20D1CC400010F95E /* HostInfoMacOSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = HostInfoMacOSX.mm; path = source/Host/macosx/objcxx/HostInfoMacOSX.mm; sourceTree = ""; }; - 3FDFE53019A292F0009756A7 /* HostInfoPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostInfoPosix.cpp; sourceTree = ""; }; - 3FDFE53219A29304009756A7 /* HostInfoPosix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostInfoPosix.h; path = ../../../include/lldb/Host/posix/HostInfoPosix.h; sourceTree = ""; }; - 3FDFE54319A29448009756A7 /* HostInfoWindows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostInfoWindows.cpp; path = source/Host/windows/HostInfoWindows.cpp; sourceTree = ""; }; - 3FDFE54919A2946B009756A7 /* HostInfoWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostInfoWindows.h; path = include/lldb/Host/windows/HostInfoWindows.h; sourceTree = ""; }; - 3FDFED2019BA6D55009756A7 /* HostNativeThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostNativeThread.h; path = include/lldb/Host/HostNativeThread.h; sourceTree = ""; }; - 3FDFED2419BA6D96009756A7 /* HostNativeThreadBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostNativeThreadBase.cpp; sourceTree = ""; }; - 3FDFED2119BA6D55009756A7 /* HostNativeThreadBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostNativeThreadBase.h; path = include/lldb/Host/HostNativeThreadBase.h; sourceTree = ""; }; - 3FDFED2C19C257A0009756A7 /* HostProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostProcess.cpp; sourceTree = ""; }; - 3FDFE57419AFABFD009756A7 /* HostProcess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostProcess.h; path = include/lldb/Host/HostProcess.h; sourceTree = ""; }; - 3FDFE56A19AF9C44009756A7 /* HostProcessPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostProcessPosix.cpp; sourceTree = ""; }; - 3FDFE56E19AF9C5A009756A7 /* HostProcessPosix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostProcessPosix.h; path = ../../../include/lldb/Host/posix/HostProcessPosix.h; sourceTree = ""; }; - 3FDFE57019AF9CA0009756A7 /* HostProcessWindows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostProcessWindows.cpp; path = source/Host/windows/HostProcessWindows.cpp; sourceTree = ""; }; - 3FDFE57219AF9CD3009756A7 /* HostProcessWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostProcessWindows.h; path = include/lldb/Host/windows/HostProcessWindows.h; sourceTree = ""; }; - 9A20572F1F3B8E7600F6C293 /* HostTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostTest.cpp; sourceTree = ""; }; - 9A20573C1F3B8EA200F6C293 /* HostTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HostTest.cpp; path = linux/HostTest.cpp; sourceTree = ""; }; - 3FDFED2519BA6D96009756A7 /* HostThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostThread.cpp; sourceTree = ""; }; - 3FDFE57519AFABFD009756A7 /* HostThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostThread.h; path = include/lldb/Host/HostThread.h; sourceTree = ""; }; - 3FDFE55F19AF9B14009756A7 /* HostThreadFreeBSD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostThreadFreeBSD.cpp; path = source/Host/freebsd/HostThreadFreeBSD.cpp; sourceTree = ""; }; - 3FDFE56019AF9B39009756A7 /* HostThreadFreeBSD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostThreadFreeBSD.h; path = include/lldb/Host/freebsd/HostThreadFreeBSD.h; sourceTree = ""; }; - 3FDFE56219AF9B60009756A7 /* HostThreadLinux.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = HostThreadLinux.cpp; sourceTree = ""; }; - 3FDFE56519AF9B77009756A7 /* HostThreadLinux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostThreadLinux.h; path = include/lldb/Host/linux/HostThreadLinux.h; sourceTree = SOURCE_ROOT; }; - 3FDFE56719AF9BB2009756A7 /* HostThreadMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostThreadMacOSX.h; path = include/lldb/Host/macosx/HostThreadMacOSX.h; sourceTree = ""; }; - AFF81FAC20D1CC400010F95E /* HostThreadMacOSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = HostThreadMacOSX.mm; path = source/Host/macosx/objcxx/HostThreadMacOSX.mm; sourceTree = ""; }; - 3FDFE56B19AF9C44009756A7 /* HostThreadPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostThreadPosix.cpp; sourceTree = ""; }; - 3FDFE56F19AF9C5A009756A7 /* HostThreadPosix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HostThreadPosix.h; path = ../../../include/lldb/Host/posix/HostThreadPosix.h; sourceTree = ""; }; - 3FDFE57119AF9CA0009756A7 /* HostThreadWindows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostThreadWindows.cpp; path = source/Host/windows/HostThreadWindows.cpp; sourceTree = ""; }; - 3FDFE57319AF9CD3009756A7 /* HostThreadWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HostThreadWindows.h; path = include/lldb/Host/windows/HostThreadWindows.h; sourceTree = ""; }; - 260A63181861009E00FECF8E /* IOHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IOHandler.cpp; path = source/Core/IOHandler.cpp; sourceTree = ""; }; - 260A63161861008E00FECF8E /* IOHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IOHandler.h; path = include/lldb/Core/IOHandler.h; sourceTree = ""; }; - 236124A21986B4E2004EFC37 /* IOObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IOObject.cpp; path = source/Utility/IOObject.cpp; sourceTree = ""; }; - 236124A61986B50E004EFC37 /* IOObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IOObject.h; path = include/lldb/Utility/IOObject.h; sourceTree = ""; }; - 26BC7D6510F1B77400F91463 /* IOStreamMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IOStreamMacros.h; path = include/lldb/Core/IOStreamMacros.h; sourceTree = ""; }; - 49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRDynamicChecks.cpp; path = source/Expression/IRDynamicChecks.cpp; sourceTree = ""; }; - 49CF9833122C718B007A0B96 /* IRDynamicChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRDynamicChecks.h; path = include/lldb/Expression/IRDynamicChecks.h; sourceTree = ""; }; - 4C98D3DB118FB96F00E575D0 /* IRExecutionUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRExecutionUnit.cpp; path = source/Expression/IRExecutionUnit.cpp; sourceTree = ""; }; - 4C98D3E1118FB98F00E575D0 /* IRExecutionUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRExecutionUnit.h; path = include/lldb/Expression/IRExecutionUnit.h; sourceTree = ""; }; - 49307AAD11DEA4D90081F992 /* IRForTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRForTarget.cpp; path = ExpressionParser/Clang/IRForTarget.cpp; sourceTree = ""; }; - 49307AB111DEA4F20081F992 /* IRForTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRForTarget.h; path = ExpressionParser/Clang/IRForTarget.h; sourceTree = ""; }; - 496B01581406DE8900F830D5 /* IRInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRInterpreter.cpp; path = source/Expression/IRInterpreter.cpp; sourceTree = ""; }; - 496B015A1406DEB100F830D5 /* IRInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRInterpreter.h; path = include/lldb/Expression/IRInterpreter.h; sourceTree = ""; }; - 49DCF6FD170E6B4A0092F75E /* IRMemoryMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRMemoryMap.cpp; path = source/Expression/IRMemoryMap.cpp; sourceTree = ""; }; - 49C66B1C17011A43004D1922 /* IRMemoryMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IRMemoryMap.h; path = include/lldb/Expression/IRMemoryMap.h; sourceTree = ""; }; - B28058A0139988B0002D96D0 /* InferiorCallPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InferiorCallPOSIX.cpp; path = Utility/InferiorCallPOSIX.cpp; sourceTree = ""; }; - B28058A2139988C6002D96D0 /* InferiorCallPOSIX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InferiorCallPOSIX.h; path = Utility/InferiorCallPOSIX.h; sourceTree = ""; }; - B2D3033612EFA5C500F84EB3 /* InstructionUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InstructionUtils.h; path = Utility/InstructionUtils.h; sourceTree = ""; }; - 8CF02ADF19DCBF3B00B14BE0 /* InstrumentationRuntime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InstrumentationRuntime.cpp; path = source/Target/InstrumentationRuntime.cpp; sourceTree = ""; }; - 8CF02AE019DCBF3B00B14BE0 /* InstrumentationRuntime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InstrumentationRuntime.h; path = include/lldb/Target/InstrumentationRuntime.h; sourceTree = ""; }; - 8CF02AED19DD15CF00B14BE0 /* InstrumentationRuntimeStopInfo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InstrumentationRuntimeStopInfo.cpp; path = source/Target/InstrumentationRuntimeStopInfo.cpp; sourceTree = ""; }; - 8CF02AEE19DD15CF00B14BE0 /* InstrumentationRuntimeStopInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = InstrumentationRuntimeStopInfo.h; path = include/lldb/Target/InstrumentationRuntimeStopInfo.h; sourceTree = ""; }; - 4CCA643D13B40B82003BDF98 /* ItaniumABILanguageRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ItaniumABILanguageRuntime.cpp; sourceTree = ""; }; - 4CCA643E13B40B82003BDF98 /* ItaniumABILanguageRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ItaniumABILanguageRuntime.h; sourceTree = ""; }; - 4C73152119B7D71700F865A4 /* Iterable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iterable.h; path = include/lldb/Utility/Iterable.h; sourceTree = ""; }; - 26BC179718C7F2B300D2196D /* JITLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JITLoader.cpp; path = source/Target/JITLoader.cpp; sourceTree = ""; }; - 26BC179B18C7F2CB00D2196D /* JITLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JITLoader.h; path = include/lldb/Target/JITLoader.h; sourceTree = ""; }; - AF2BCA6918C7EFDE005B4526 /* JITLoaderGDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITLoaderGDB.cpp; sourceTree = ""; }; - AF2BCA6A18C7EFDE005B4526 /* JITLoaderGDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITLoaderGDB.h; sourceTree = ""; }; - 26BC179818C7F2B300D2196D /* JITLoaderList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JITLoaderList.cpp; path = source/Target/JITLoaderList.cpp; sourceTree = ""; }; - 26BC179C18C7F2CB00D2196D /* JITLoaderList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JITLoaderList.h; path = include/lldb/Target/JITLoaderList.h; sourceTree = ""; }; - 942829551A89614C00521B30 /* JSON.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSON.cpp; path = source/Utility/JSON.cpp; sourceTree = ""; }; - 942829541A89614000521B30 /* JSON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JSON.h; path = include/lldb/Utility/JSON.h; sourceTree = ""; }; - 8C3BD99F1EF5D1B50016C343 /* JSONTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSONTest.cpp; sourceTree = ""; }; - 26603875211CA90E00329572 /* JSONUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSONUtils.cpp; path = "tools/lldb-vscode/JSONUtils.cpp"; sourceTree = ""; }; - 26603876211CA90E00329572 /* JSONUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSONUtils.h; path = "tools/lldb-vscode/JSONUtils.h"; sourceTree = ""; }; - 26680207115FD0ED008E1FE4 /* LLDB.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LLDB.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 26B42C4C1187ABA50079C8C8 /* LLDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLDB.h; path = include/lldb/API/LLDB.h; sourceTree = ""; }; - 943BDEFD1AA7B2F800789CE8 /* LLDBAssert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLDBAssert.cpp; path = source/Utility/LLDBAssert.cpp; sourceTree = ""; }; - 943BDEFC1AA7B2DE00789CE8 /* LLDBAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LLDBAssert.h; path = include/lldb/Utility/LLDBAssert.h; sourceTree = ""; }; - 236102991CF38A2B00B8E0B9 /* LLDBConfig.cmake */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LLDBConfig.cmake; sourceTree = ""; }; - 6D762BEC1B1605CD006C929D /* LLDBServerUtilities.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LLDBServerUtilities.cpp; path = "tools/lldb-server/LLDBServerUtilities.cpp"; sourceTree = ""; }; - 6D762BED1B1605CD006C929D /* LLDBServerUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LLDBServerUtilities.h; path = "tools/lldb-server/LLDBServerUtilities.h"; sourceTree = ""; }; - 2361029A1CF38A2B00B8E0B9 /* LLDBStandalone.cmake */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LLDBStandalone.cmake; sourceTree = ""; }; - 26F76199211CBBB30044F6EA /* LLDBUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLDBUtils.cpp; path = "tools/lldb-vscode/LLDBUtils.cpp"; sourceTree = ""; }; - 26F7619A211CBBB30044F6EA /* LLDBUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLDBUtils.h; path = "tools/lldb-vscode/LLDBUtils.h"; sourceTree = ""; }; - 26A4EEB511682AAC007A372A /* LLDBWrapPython.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = LLDBWrapPython.cpp; sourceTree = BUILT_PRODUCTS_DIR; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - AEB0E4581BD6E9F800B24093 /* LLVMUserExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLVMUserExpression.cpp; path = source/Expression/LLVMUserExpression.cpp; sourceTree = ""; }; - AEB0E45A1BD6EA1400B24093 /* LLVMUserExpression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LLVMUserExpression.h; path = include/lldb/Expression/LLVMUserExpression.h; sourceTree = ""; }; - 94B638521B8F8E6C004FE1E4 /* Language.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Language.cpp; path = source/Target/Language.cpp; sourceTree = ""; }; - 94B638511B8F8E53004FE1E4 /* Language.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Language.h; path = include/lldb/Target/Language.h; sourceTree = ""; }; - 942612F61B95000000EF842E /* LanguageCategory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LanguageCategory.cpp; path = source/DataFormatters/LanguageCategory.cpp; sourceTree = ""; }; - 942612F51B94FFE900EF842E /* LanguageCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LanguageCategory.h; path = include/lldb/DataFormatters/LanguageCategory.h; sourceTree = ""; }; - 4CB4430A12491DDA00C13DC2 /* LanguageRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LanguageRuntime.cpp; path = source/Target/LanguageRuntime.cpp; sourceTree = ""; }; - 4CB4430912491DDA00C13DC2 /* LanguageRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LanguageRuntime.h; path = include/lldb/Target/LanguageRuntime.h; sourceTree = ""; }; - 26709E311964A34000B94724 /* LaunchServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LaunchServices.framework; path = /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework; sourceTree = ""; }; - 945261B51B9A11E800BF138D /* LibCxx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxx.cpp; path = Language/CPlusPlus/LibCxx.cpp; sourceTree = ""; }; - 945261B61B9A11E800BF138D /* LibCxx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibCxx.h; path = Language/CPlusPlus/LibCxx.h; sourceTree = ""; }; - 9428BC291C6E64DC002A24D7 /* LibCxxAtomic.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxAtomic.cpp; path = Language/CPlusPlus/LibCxxAtomic.cpp; sourceTree = ""; }; - 9428BC2A1C6E64DC002A24D7 /* LibCxxAtomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibCxxAtomic.h; path = Language/CPlusPlus/LibCxxAtomic.h; sourceTree = ""; }; - AFC67B141FBBB03500860ECB /* LibCxxBitset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxBitset.cpp; path = Language/CPlusPlus/LibCxxBitset.cpp; sourceTree = ""; }; - 945261B71B9A11E800BF138D /* LibCxxInitializerList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxInitializerList.cpp; path = Language/CPlusPlus/LibCxxInitializerList.cpp; sourceTree = ""; }; - 945261B81B9A11E800BF138D /* LibCxxList.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxList.cpp; path = Language/CPlusPlus/LibCxxList.cpp; sourceTree = ""; }; - 945261B91B9A11E800BF138D /* LibCxxMap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxMap.cpp; path = Language/CPlusPlus/LibCxxMap.cpp; sourceTree = ""; }; - E4A63A9020F55D27000D9548 /* LibCxxOptional.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxOptional.cpp; path = Language/CPlusPlus/LibCxxOptional.cpp; sourceTree = ""; }; - AF9FF1F61FAA79FE00474976 /* LibCxxQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxQueue.cpp; path = Language/CPlusPlus/LibCxxQueue.cpp; sourceTree = ""; }; - AF9FF1F41FAA79A400474976 /* LibCxxTuple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxTuple.cpp; path = Language/CPlusPlus/LibCxxTuple.cpp; sourceTree = ""; }; - 945261BA1B9A11E800BF138D /* LibCxxUnorderedMap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxUnorderedMap.cpp; path = Language/CPlusPlus/LibCxxUnorderedMap.cpp; sourceTree = ""; }; - E414F6F021388F6B00C50BC6 /* LibCxxVariant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxVariant.cpp; path = Language/CPlusPlus/LibCxxVariant.cpp; sourceTree = ""; }; - E414F6ED21388F0200C50BC6 /* LibCxxVariant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LibCxxVariant.h; path = Language/CPlusPlus/LibCxxVariant.h; sourceTree = ""; }; - 945261BB1B9A11E800BF138D /* LibCxxVector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxVector.cpp; path = Language/CPlusPlus/LibCxxVector.cpp; sourceTree = ""; }; - 945261BC1B9A11E800BF138D /* LibStdcpp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibStdcpp.cpp; path = Language/CPlusPlus/LibStdcpp.cpp; sourceTree = ""; }; - 945261BD1B9A11E800BF138D /* LibStdcpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibStdcpp.h; path = Language/CPlusPlus/LibStdcpp.h; sourceTree = ""; }; - 4CDB8D681DBA91A6006C5B13 /* LibStdcppTuple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibStdcppTuple.cpp; path = Language/CPlusPlus/LibStdcppTuple.cpp; sourceTree = ""; }; - 4CDB8D671DBA91A6006C5B13 /* LibStdcppUniquePointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibStdcppUniquePointer.cpp; path = Language/CPlusPlus/LibStdcppUniquePointer.cpp; sourceTree = ""; }; - 26BC7F1910F1B8EC00F91463 /* LineEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LineEntry.cpp; path = source/Symbol/LineEntry.cpp; sourceTree = ""; }; - 26BC7C5B10F1B6E900F91463 /* LineEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LineEntry.h; path = include/lldb/Symbol/LineEntry.h; sourceTree = ""; }; - 26BC7F1A10F1B8EC00F91463 /* LineTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LineTable.cpp; path = source/Symbol/LineTable.cpp; sourceTree = ""; }; - 26BC7C5C10F1B6E900F91463 /* LineTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LineTable.h; path = include/lldb/Symbol/LineTable.h; sourceTree = ""; }; - 2647B64221C43BB000A81D15 /* LinuxProcMaps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LinuxProcMaps.cpp; path = Utility/LinuxProcMaps.cpp; sourceTree = ""; }; - 2647B64121C43BAF00A81D15 /* LinuxProcMaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LinuxProcMaps.h; path = Utility/LinuxProcMaps.h; sourceTree = ""; }; - 23059A0519532B96007B8189 /* LinuxSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LinuxSignals.cpp; path = Utility/LinuxSignals.cpp; sourceTree = ""; }; - 23059A0619532B96007B8189 /* LinuxSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LinuxSignals.h; path = Utility/LinuxSignals.h; sourceTree = ""; }; - 2647B63D21C436BC00A81D15 /* Listener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Listener.cpp; path = source/Utility/Listener.cpp; sourceTree = ""; }; - 2647B63721C4369500A81D15 /* Listener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Listener.h; path = include/lldb/Utility/Listener.h; sourceTree = ""; }; - 9A3D43E31F3237D500EB767C /* ListenerTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ListenerTest.cpp; sourceTree = ""; }; - AFF1273422276F1100C25726 /* LocateSymbolFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LocateSymbolFile.cpp; path = source/Symbol/LocateSymbolFile.cpp; sourceTree = ""; }; - AFC3068022276F62002675EA /* LocateSymbolFileMacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LocateSymbolFileMacOSX.cpp; path = source/Symbol/LocateSymbolFileMacOSX.cpp; sourceTree = ""; }; - AFB4C8122228A7AE0018086A /* LocateSymbolFileTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocateSymbolFileTest.cpp; sourceTree = ""; }; - 255EFF731AFABA720069F277 /* LockFileBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LockFileBase.cpp; sourceTree = ""; }; - 255EFF751AFABA950069F277 /* LockFilePosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LockFilePosix.cpp; sourceTree = ""; }; - 255EFF711AFABA4D0069F277 /* LockFileWindows.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LockFileWindows.cpp; path = source/Host/windows/LockFileWindows.cpp; sourceTree = ""; }; - 255EFF6F1AFABA320069F277 /* LockFileWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LockFileWindows.h; path = include/lldb/Host/windows/LockFileWindows.h; sourceTree = ""; }; - 26BC7E7F10F1B85900F91463 /* Log.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Log.cpp; path = source/Utility/Log.cpp; sourceTree = ""; }; - 26BC7D6810F1B77400F91463 /* Log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Log.h; path = include/lldb/Utility/Log.h; sourceTree = ""; }; - 26109B3B1155D70100CC3529 /* LogChannelDWARF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LogChannelDWARF.cpp; sourceTree = ""; }; - 26109B3C1155D70100CC3529 /* LogChannelDWARF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogChannelDWARF.h; sourceTree = ""; }; - 9A3D43C71F3150D200EB767C /* LogTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LogTest.cpp; sourceTree = ""; }; - 3F8160A51AB9F7DD001DA9DF /* Logging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Logging.cpp; path = source/Utility/Logging.cpp; sourceTree = ""; }; - 3F8160A71AB9F809001DA9DF /* Logging.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Logging.h; path = include/lldb/Utility/Logging.h; sourceTree = ""; }; - 266941601A6DC2AB0063BE93 /* MICmdArgContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgContext.cpp; path = "tools/lldb-mi/MICmdArgContext.cpp"; sourceTree = SOURCE_ROOT; }; - 266941611A6DC2AB0063BE93 /* MICmdArgContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgContext.h; path = "tools/lldb-mi/MICmdArgContext.h"; sourceTree = SOURCE_ROOT; }; - 266941621A6DC2AB0063BE93 /* MICmdArgSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgSet.cpp; path = "tools/lldb-mi/MICmdArgSet.cpp"; sourceTree = SOURCE_ROOT; }; - 266941631A6DC2AB0063BE93 /* MICmdArgSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgSet.h; path = "tools/lldb-mi/MICmdArgSet.h"; sourceTree = SOURCE_ROOT; }; - 266941641A6DC2AB0063BE93 /* MICmdArgValBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValBase.cpp; path = "tools/lldb-mi/MICmdArgValBase.cpp"; sourceTree = SOURCE_ROOT; }; - 266941651A6DC2AB0063BE93 /* MICmdArgValBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValBase.h; path = "tools/lldb-mi/MICmdArgValBase.h"; sourceTree = SOURCE_ROOT; }; - 266941661A6DC2AB0063BE93 /* MICmdArgValConsume.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValConsume.cpp; path = "tools/lldb-mi/MICmdArgValConsume.cpp"; sourceTree = SOURCE_ROOT; }; - 266941671A6DC2AB0063BE93 /* MICmdArgValConsume.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValConsume.h; path = "tools/lldb-mi/MICmdArgValConsume.h"; sourceTree = SOURCE_ROOT; }; - 266941681A6DC2AB0063BE93 /* MICmdArgValFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValFile.cpp; path = "tools/lldb-mi/MICmdArgValFile.cpp"; sourceTree = SOURCE_ROOT; }; - 266941691A6DC2AB0063BE93 /* MICmdArgValFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValFile.h; path = "tools/lldb-mi/MICmdArgValFile.h"; sourceTree = SOURCE_ROOT; }; - 2669416A1A6DC2AC0063BE93 /* MICmdArgValListBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValListBase.cpp; path = "tools/lldb-mi/MICmdArgValListBase.cpp"; sourceTree = SOURCE_ROOT; }; - 2669416B1A6DC2AC0063BE93 /* MICmdArgValListBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValListBase.h; path = "tools/lldb-mi/MICmdArgValListBase.h"; sourceTree = SOURCE_ROOT; }; - 2669416C1A6DC2AC0063BE93 /* MICmdArgValListOfN.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValListOfN.cpp; path = "tools/lldb-mi/MICmdArgValListOfN.cpp"; sourceTree = SOURCE_ROOT; }; - 2669416D1A6DC2AC0063BE93 /* MICmdArgValListOfN.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValListOfN.h; path = "tools/lldb-mi/MICmdArgValListOfN.h"; sourceTree = SOURCE_ROOT; }; - 2669416E1A6DC2AC0063BE93 /* MICmdArgValNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValNumber.cpp; path = "tools/lldb-mi/MICmdArgValNumber.cpp"; sourceTree = SOURCE_ROOT; }; - 2669416F1A6DC2AC0063BE93 /* MICmdArgValNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValNumber.h; path = "tools/lldb-mi/MICmdArgValNumber.h"; sourceTree = SOURCE_ROOT; }; - 266941701A6DC2AC0063BE93 /* MICmdArgValOptionLong.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValOptionLong.cpp; path = "tools/lldb-mi/MICmdArgValOptionLong.cpp"; sourceTree = SOURCE_ROOT; }; - 266941711A6DC2AC0063BE93 /* MICmdArgValOptionLong.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValOptionLong.h; path = "tools/lldb-mi/MICmdArgValOptionLong.h"; sourceTree = SOURCE_ROOT; }; - 266941721A6DC2AC0063BE93 /* MICmdArgValOptionShort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValOptionShort.cpp; path = "tools/lldb-mi/MICmdArgValOptionShort.cpp"; sourceTree = SOURCE_ROOT; }; - 266941731A6DC2AC0063BE93 /* MICmdArgValOptionShort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValOptionShort.h; path = "tools/lldb-mi/MICmdArgValOptionShort.h"; sourceTree = SOURCE_ROOT; }; - 267DFB441B06752A00000FB7 /* MICmdArgValPrintValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValPrintValues.cpp; path = "tools/lldb-mi/MICmdArgValPrintValues.cpp"; sourceTree = SOURCE_ROOT; }; - 267DFB451B06752A00000FB7 /* MICmdArgValPrintValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValPrintValues.h; path = "tools/lldb-mi/MICmdArgValPrintValues.h"; sourceTree = SOURCE_ROOT; }; - 266941741A6DC2AC0063BE93 /* MICmdArgValString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValString.cpp; path = "tools/lldb-mi/MICmdArgValString.cpp"; sourceTree = SOURCE_ROOT; }; - 266941751A6DC2AC0063BE93 /* MICmdArgValString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValString.h; path = "tools/lldb-mi/MICmdArgValString.h"; sourceTree = SOURCE_ROOT; }; - 266941761A6DC2AC0063BE93 /* MICmdArgValThreadGrp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdArgValThreadGrp.cpp; path = "tools/lldb-mi/MICmdArgValThreadGrp.cpp"; sourceTree = SOURCE_ROOT; }; - 266941771A6DC2AC0063BE93 /* MICmdArgValThreadGrp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdArgValThreadGrp.h; path = "tools/lldb-mi/MICmdArgValThreadGrp.h"; sourceTree = SOURCE_ROOT; }; - 266941781A6DC2AC0063BE93 /* MICmdBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdBase.cpp; path = "tools/lldb-mi/MICmdBase.cpp"; sourceTree = SOURCE_ROOT; }; - 266941791A6DC2AC0063BE93 /* MICmdBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdBase.h; path = "tools/lldb-mi/MICmdBase.h"; sourceTree = SOURCE_ROOT; }; - 2669417A1A6DC2AC0063BE93 /* MICmdCmd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmd.cpp; path = "tools/lldb-mi/MICmdCmd.cpp"; sourceTree = SOURCE_ROOT; }; - 2669417B1A6DC2AC0063BE93 /* MICmdCmd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmd.h; path = "tools/lldb-mi/MICmdCmd.h"; sourceTree = SOURCE_ROOT; }; - 2669417C1A6DC2AC0063BE93 /* MICmdCmdBreak.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdBreak.cpp; path = "tools/lldb-mi/MICmdCmdBreak.cpp"; sourceTree = SOURCE_ROOT; }; - 2669417D1A6DC2AC0063BE93 /* MICmdCmdBreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdBreak.h; path = "tools/lldb-mi/MICmdCmdBreak.h"; sourceTree = SOURCE_ROOT; }; - 2669417E1A6DC2AC0063BE93 /* MICmdCmdData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdData.cpp; path = "tools/lldb-mi/MICmdCmdData.cpp"; sourceTree = SOURCE_ROOT; }; - 2669417F1A6DC2AC0063BE93 /* MICmdCmdData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdData.h; path = "tools/lldb-mi/MICmdCmdData.h"; sourceTree = SOURCE_ROOT; }; - 266941801A6DC2AC0063BE93 /* MICmdCmdEnviro.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdEnviro.cpp; path = "tools/lldb-mi/MICmdCmdEnviro.cpp"; sourceTree = SOURCE_ROOT; }; - 266941811A6DC2AC0063BE93 /* MICmdCmdEnviro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdEnviro.h; path = "tools/lldb-mi/MICmdCmdEnviro.h"; sourceTree = SOURCE_ROOT; }; - 266941821A6DC2AC0063BE93 /* MICmdCmdExec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdExec.cpp; path = "tools/lldb-mi/MICmdCmdExec.cpp"; sourceTree = SOURCE_ROOT; }; - 266941831A6DC2AC0063BE93 /* MICmdCmdExec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdExec.h; path = "tools/lldb-mi/MICmdCmdExec.h"; sourceTree = SOURCE_ROOT; }; - 266941841A6DC2AC0063BE93 /* MICmdCmdFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdFile.cpp; path = "tools/lldb-mi/MICmdCmdFile.cpp"; sourceTree = SOURCE_ROOT; }; - 266941851A6DC2AC0063BE93 /* MICmdCmdFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdFile.h; path = "tools/lldb-mi/MICmdCmdFile.h"; sourceTree = SOURCE_ROOT; }; - 266941861A6DC2AC0063BE93 /* MICmdCmdGdbInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdGdbInfo.cpp; path = "tools/lldb-mi/MICmdCmdGdbInfo.cpp"; sourceTree = SOURCE_ROOT; }; - 266941871A6DC2AC0063BE93 /* MICmdCmdGdbInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdGdbInfo.h; path = "tools/lldb-mi/MICmdCmdGdbInfo.h"; sourceTree = SOURCE_ROOT; }; - 266941881A6DC2AC0063BE93 /* MICmdCmdGdbSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdGdbSet.cpp; path = "tools/lldb-mi/MICmdCmdGdbSet.cpp"; sourceTree = SOURCE_ROOT; }; - 266941891A6DC2AC0063BE93 /* MICmdCmdGdbSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdGdbSet.h; path = "tools/lldb-mi/MICmdCmdGdbSet.h"; sourceTree = SOURCE_ROOT; }; - AFB3D27E1AC262AB003B4B30 /* MICmdCmdGdbShow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdGdbShow.cpp; path = "tools/lldb-mi/MICmdCmdGdbShow.cpp"; sourceTree = SOURCE_ROOT; }; - AFB3D27F1AC262AB003B4B30 /* MICmdCmdGdbShow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdGdbShow.h; path = "tools/lldb-mi/MICmdCmdGdbShow.h"; sourceTree = SOURCE_ROOT; }; - 2669418A1A6DC2AC0063BE93 /* MICmdCmdGdbThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdGdbThread.cpp; path = "tools/lldb-mi/MICmdCmdGdbThread.cpp"; sourceTree = SOURCE_ROOT; }; - 2669418B1A6DC2AC0063BE93 /* MICmdCmdGdbThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdGdbThread.h; path = "tools/lldb-mi/MICmdCmdGdbThread.h"; sourceTree = SOURCE_ROOT; }; - 2669418C1A6DC2AC0063BE93 /* MICmdCmdMiscellanous.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdMiscellanous.cpp; path = "tools/lldb-mi/MICmdCmdMiscellanous.cpp"; sourceTree = SOURCE_ROOT; }; - 2669418D1A6DC2AC0063BE93 /* MICmdCmdMiscellanous.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdMiscellanous.h; path = "tools/lldb-mi/MICmdCmdMiscellanous.h"; sourceTree = SOURCE_ROOT; }; - 2669418E1A6DC2AC0063BE93 /* MICmdCmdStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdStack.cpp; path = "tools/lldb-mi/MICmdCmdStack.cpp"; sourceTree = SOURCE_ROOT; }; - 2669418F1A6DC2AC0063BE93 /* MICmdCmdStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdStack.h; path = "tools/lldb-mi/MICmdCmdStack.h"; sourceTree = SOURCE_ROOT; }; - 266941901A6DC2AC0063BE93 /* MICmdCmdSupportInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdSupportInfo.cpp; path = "tools/lldb-mi/MICmdCmdSupportInfo.cpp"; sourceTree = SOURCE_ROOT; }; - 266941911A6DC2AC0063BE93 /* MICmdCmdSupportInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdSupportInfo.h; path = "tools/lldb-mi/MICmdCmdSupportInfo.h"; sourceTree = SOURCE_ROOT; }; - 266941921A6DC2AC0063BE93 /* MICmdCmdSupportList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdSupportList.cpp; path = "tools/lldb-mi/MICmdCmdSupportList.cpp"; sourceTree = SOURCE_ROOT; }; - 266941931A6DC2AC0063BE93 /* MICmdCmdSupportList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdSupportList.h; path = "tools/lldb-mi/MICmdCmdSupportList.h"; sourceTree = SOURCE_ROOT; }; - 26D52C1D1A980FE300E5D2FB /* MICmdCmdSymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdSymbol.cpp; path = "tools/lldb-mi/MICmdCmdSymbol.cpp"; sourceTree = SOURCE_ROOT; }; - 26D52C1E1A980FE300E5D2FB /* MICmdCmdSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdSymbol.h; path = "tools/lldb-mi/MICmdCmdSymbol.h"; sourceTree = SOURCE_ROOT; }; - 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdTarget.cpp; path = "tools/lldb-mi/MICmdCmdTarget.cpp"; sourceTree = SOURCE_ROOT; }; - 266941951A6DC2AC0063BE93 /* MICmdCmdTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdTarget.h; path = "tools/lldb-mi/MICmdCmdTarget.h"; sourceTree = SOURCE_ROOT; }; - 266941961A6DC2AC0063BE93 /* MICmdCmdThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdThread.cpp; path = "tools/lldb-mi/MICmdCmdThread.cpp"; sourceTree = SOURCE_ROOT; }; - 266941971A6DC2AC0063BE93 /* MICmdCmdThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdThread.h; path = "tools/lldb-mi/MICmdCmdThread.h"; sourceTree = SOURCE_ROOT; }; - 266941981A6DC2AC0063BE93 /* MICmdCmdTrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdTrace.cpp; path = "tools/lldb-mi/MICmdCmdTrace.cpp"; sourceTree = SOURCE_ROOT; }; - 266941991A6DC2AC0063BE93 /* MICmdCmdTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdTrace.h; path = "tools/lldb-mi/MICmdCmdTrace.h"; sourceTree = SOURCE_ROOT; }; - 2669419A1A6DC2AC0063BE93 /* MICmdCmdVar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCmdVar.cpp; path = "tools/lldb-mi/MICmdCmdVar.cpp"; sourceTree = SOURCE_ROOT; }; - 2669419B1A6DC2AC0063BE93 /* MICmdCmdVar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCmdVar.h; path = "tools/lldb-mi/MICmdCmdVar.h"; sourceTree = SOURCE_ROOT; }; - 2669419C1A6DC2AC0063BE93 /* MICmdCommands.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdCommands.cpp; path = "tools/lldb-mi/MICmdCommands.cpp"; sourceTree = SOURCE_ROOT; }; - 2669419D1A6DC2AC0063BE93 /* MICmdCommands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdCommands.h; path = "tools/lldb-mi/MICmdCommands.h"; sourceTree = SOURCE_ROOT; }; - 2669419E1A6DC2AC0063BE93 /* MICmdData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdData.cpp; path = "tools/lldb-mi/MICmdData.cpp"; sourceTree = SOURCE_ROOT; }; - 2669419F1A6DC2AC0063BE93 /* MICmdData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdData.h; path = "tools/lldb-mi/MICmdData.h"; sourceTree = SOURCE_ROOT; }; - 266941A01A6DC2AC0063BE93 /* MICmdFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdFactory.cpp; path = "tools/lldb-mi/MICmdFactory.cpp"; sourceTree = SOURCE_ROOT; }; - 266941A11A6DC2AC0063BE93 /* MICmdFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdFactory.h; path = "tools/lldb-mi/MICmdFactory.h"; sourceTree = SOURCE_ROOT; }; - 266941A21A6DC2AC0063BE93 /* MICmdInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdInterpreter.cpp; path = "tools/lldb-mi/MICmdInterpreter.cpp"; sourceTree = SOURCE_ROOT; }; - 266941A31A6DC2AC0063BE93 /* MICmdInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdInterpreter.h; path = "tools/lldb-mi/MICmdInterpreter.h"; sourceTree = SOURCE_ROOT; }; - 266941A41A6DC2AC0063BE93 /* MICmdInvoker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdInvoker.cpp; path = "tools/lldb-mi/MICmdInvoker.cpp"; sourceTree = SOURCE_ROOT; }; - 266941A51A6DC2AC0063BE93 /* MICmdInvoker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdInvoker.h; path = "tools/lldb-mi/MICmdInvoker.h"; sourceTree = SOURCE_ROOT; }; - 266941A61A6DC2AC0063BE93 /* MICmdMgr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdMgr.cpp; path = "tools/lldb-mi/MICmdMgr.cpp"; sourceTree = SOURCE_ROOT; }; - 266941A71A6DC2AC0063BE93 /* MICmdMgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdMgr.h; path = "tools/lldb-mi/MICmdMgr.h"; sourceTree = SOURCE_ROOT; }; - 266941A81A6DC2AC0063BE93 /* MICmdMgrSetCmdDeleteCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmdMgrSetCmdDeleteCallback.cpp; path = "tools/lldb-mi/MICmdMgrSetCmdDeleteCallback.cpp"; sourceTree = SOURCE_ROOT; }; - 266941A91A6DC2AC0063BE93 /* MICmdMgrSetCmdDeleteCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmdMgrSetCmdDeleteCallback.h; path = "tools/lldb-mi/MICmdMgrSetCmdDeleteCallback.h"; sourceTree = SOURCE_ROOT; }; - 266941AA1A6DC2AC0063BE93 /* MICmnBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnBase.cpp; path = "tools/lldb-mi/MICmnBase.cpp"; sourceTree = SOURCE_ROOT; }; - 266941AB1A6DC2AC0063BE93 /* MICmnBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnBase.h; path = "tools/lldb-mi/MICmnBase.h"; sourceTree = SOURCE_ROOT; }; - 266941AC1A6DC2AC0063BE93 /* MICmnConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnConfig.h; path = "tools/lldb-mi/MICmnConfig.h"; sourceTree = SOURCE_ROOT; }; - 266941AD1A6DC2AC0063BE93 /* MICmnLLDBBroadcaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBBroadcaster.cpp; path = "tools/lldb-mi/MICmnLLDBBroadcaster.cpp"; sourceTree = SOURCE_ROOT; }; - 266941AE1A6DC2AC0063BE93 /* MICmnLLDBBroadcaster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBBroadcaster.h; path = "tools/lldb-mi/MICmnLLDBBroadcaster.h"; sourceTree = SOURCE_ROOT; }; - 266941B31A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBDebugSessionInfo.cpp; path = "tools/lldb-mi/MICmnLLDBDebugSessionInfo.cpp"; sourceTree = SOURCE_ROOT; }; - 266941B41A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBDebugSessionInfo.h; path = "tools/lldb-mi/MICmnLLDBDebugSessionInfo.h"; sourceTree = SOURCE_ROOT; }; - 266941B51A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfoVarObj.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBDebugSessionInfoVarObj.cpp; path = "tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.cpp"; sourceTree = SOURCE_ROOT; }; - 266941B61A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfoVarObj.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBDebugSessionInfoVarObj.h; path = "tools/lldb-mi/MICmnLLDBDebugSessionInfoVarObj.h"; sourceTree = SOURCE_ROOT; }; - 266941AF1A6DC2AC0063BE93 /* MICmnLLDBDebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBDebugger.cpp; path = "tools/lldb-mi/MICmnLLDBDebugger.cpp"; sourceTree = SOURCE_ROOT; }; - 266941B01A6DC2AC0063BE93 /* MICmnLLDBDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBDebugger.h; path = "tools/lldb-mi/MICmnLLDBDebugger.h"; sourceTree = SOURCE_ROOT; }; - 266941B11A6DC2AC0063BE93 /* MICmnLLDBDebuggerHandleEvents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBDebuggerHandleEvents.cpp; path = "tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp"; sourceTree = SOURCE_ROOT; }; - 266941B21A6DC2AC0063BE93 /* MICmnLLDBDebuggerHandleEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBDebuggerHandleEvents.h; path = "tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h"; sourceTree = SOURCE_ROOT; }; - 266941B71A6DC2AC0063BE93 /* MICmnLLDBProxySBValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBProxySBValue.cpp; path = "tools/lldb-mi/MICmnLLDBProxySBValue.cpp"; sourceTree = SOURCE_ROOT; }; - 266941B81A6DC2AC0063BE93 /* MICmnLLDBProxySBValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBProxySBValue.h; path = "tools/lldb-mi/MICmnLLDBProxySBValue.h"; sourceTree = SOURCE_ROOT; }; - 266941B91A6DC2AC0063BE93 /* MICmnLLDBUtilSBValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLLDBUtilSBValue.cpp; path = "tools/lldb-mi/MICmnLLDBUtilSBValue.cpp"; sourceTree = SOURCE_ROOT; }; - 266941BA1A6DC2AC0063BE93 /* MICmnLLDBUtilSBValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLLDBUtilSBValue.h; path = "tools/lldb-mi/MICmnLLDBUtilSBValue.h"; sourceTree = SOURCE_ROOT; }; - 266941BB1A6DC2AC0063BE93 /* MICmnLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLog.cpp; path = "tools/lldb-mi/MICmnLog.cpp"; sourceTree = SOURCE_ROOT; }; - 266941BC1A6DC2AC0063BE93 /* MICmnLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLog.h; path = "tools/lldb-mi/MICmnLog.h"; sourceTree = SOURCE_ROOT; }; - 266941BD1A6DC2AC0063BE93 /* MICmnLogMediumFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnLogMediumFile.cpp; path = "tools/lldb-mi/MICmnLogMediumFile.cpp"; sourceTree = SOURCE_ROOT; }; - 266941BE1A6DC2AC0063BE93 /* MICmnLogMediumFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnLogMediumFile.h; path = "tools/lldb-mi/MICmnLogMediumFile.h"; sourceTree = SOURCE_ROOT; }; - 266941BF1A6DC2AC0063BE93 /* MICmnMIOutOfBandRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIOutOfBandRecord.cpp; path = "tools/lldb-mi/MICmnMIOutOfBandRecord.cpp"; sourceTree = SOURCE_ROOT; }; - 266941C01A6DC2AC0063BE93 /* MICmnMIOutOfBandRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIOutOfBandRecord.h; path = "tools/lldb-mi/MICmnMIOutOfBandRecord.h"; sourceTree = SOURCE_ROOT; }; - 266941C11A6DC2AC0063BE93 /* MICmnMIResultRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIResultRecord.cpp; path = "tools/lldb-mi/MICmnMIResultRecord.cpp"; sourceTree = SOURCE_ROOT; }; - 266941C21A6DC2AC0063BE93 /* MICmnMIResultRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIResultRecord.h; path = "tools/lldb-mi/MICmnMIResultRecord.h"; sourceTree = SOURCE_ROOT; }; - 266941C31A6DC2AC0063BE93 /* MICmnMIValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIValue.cpp; path = "tools/lldb-mi/MICmnMIValue.cpp"; sourceTree = SOURCE_ROOT; }; - 266941C41A6DC2AC0063BE93 /* MICmnMIValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIValue.h; path = "tools/lldb-mi/MICmnMIValue.h"; sourceTree = SOURCE_ROOT; }; - 266941C51A6DC2AC0063BE93 /* MICmnMIValueConst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIValueConst.cpp; path = "tools/lldb-mi/MICmnMIValueConst.cpp"; sourceTree = SOURCE_ROOT; }; - 266941C61A6DC2AC0063BE93 /* MICmnMIValueConst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIValueConst.h; path = "tools/lldb-mi/MICmnMIValueConst.h"; sourceTree = SOURCE_ROOT; }; - 266941C71A6DC2AC0063BE93 /* MICmnMIValueList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIValueList.cpp; path = "tools/lldb-mi/MICmnMIValueList.cpp"; sourceTree = SOURCE_ROOT; }; - 266941C81A6DC2AC0063BE93 /* MICmnMIValueList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIValueList.h; path = "tools/lldb-mi/MICmnMIValueList.h"; sourceTree = SOURCE_ROOT; }; - 266941C91A6DC2AC0063BE93 /* MICmnMIValueResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIValueResult.cpp; path = "tools/lldb-mi/MICmnMIValueResult.cpp"; sourceTree = SOURCE_ROOT; }; - 266941CA1A6DC2AC0063BE93 /* MICmnMIValueResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIValueResult.h; path = "tools/lldb-mi/MICmnMIValueResult.h"; sourceTree = SOURCE_ROOT; }; - 266941CB1A6DC2AC0063BE93 /* MICmnMIValueTuple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnMIValueTuple.cpp; path = "tools/lldb-mi/MICmnMIValueTuple.cpp"; sourceTree = SOURCE_ROOT; }; - 266941CC1A6DC2AC0063BE93 /* MICmnMIValueTuple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnMIValueTuple.h; path = "tools/lldb-mi/MICmnMIValueTuple.h"; sourceTree = SOURCE_ROOT; }; - 266941CD1A6DC2AC0063BE93 /* MICmnResources.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnResources.cpp; path = "tools/lldb-mi/MICmnResources.cpp"; sourceTree = SOURCE_ROOT; }; - 266941CE1A6DC2AC0063BE93 /* MICmnResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnResources.h; path = "tools/lldb-mi/MICmnResources.h"; sourceTree = SOURCE_ROOT; }; - 266941CF1A6DC2AC0063BE93 /* MICmnStreamStderr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnStreamStderr.cpp; path = "tools/lldb-mi/MICmnStreamStderr.cpp"; sourceTree = SOURCE_ROOT; }; - 266941D01A6DC2AC0063BE93 /* MICmnStreamStderr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnStreamStderr.h; path = "tools/lldb-mi/MICmnStreamStderr.h"; sourceTree = SOURCE_ROOT; }; - 266941D11A6DC2AC0063BE93 /* MICmnStreamStdin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnStreamStdin.cpp; path = "tools/lldb-mi/MICmnStreamStdin.cpp"; sourceTree = SOURCE_ROOT; }; - 266941D21A6DC2AC0063BE93 /* MICmnStreamStdin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnStreamStdin.h; path = "tools/lldb-mi/MICmnStreamStdin.h"; sourceTree = SOURCE_ROOT; }; - 266941D71A6DC2AC0063BE93 /* MICmnStreamStdout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnStreamStdout.cpp; path = "tools/lldb-mi/MICmnStreamStdout.cpp"; sourceTree = SOURCE_ROOT; }; - 266941D81A6DC2AC0063BE93 /* MICmnStreamStdout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnStreamStdout.h; path = "tools/lldb-mi/MICmnStreamStdout.h"; sourceTree = SOURCE_ROOT; }; - 266941D91A6DC2AC0063BE93 /* MICmnThreadMgrStd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MICmnThreadMgrStd.cpp; path = "tools/lldb-mi/MICmnThreadMgrStd.cpp"; sourceTree = SOURCE_ROOT; }; - 266941DA1A6DC2AC0063BE93 /* MICmnThreadMgrStd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MICmnThreadMgrStd.h; path = "tools/lldb-mi/MICmnThreadMgrStd.h"; sourceTree = SOURCE_ROOT; }; - 266941DB1A6DC2AC0063BE93 /* MIDataTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIDataTypes.h; path = "tools/lldb-mi/MIDataTypes.h"; sourceTree = SOURCE_ROOT; }; - 266941DC1A6DC2AC0063BE93 /* MIDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIDriver.cpp; path = "tools/lldb-mi/MIDriver.cpp"; sourceTree = SOURCE_ROOT; }; - 266941DD1A6DC2AC0063BE93 /* MIDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIDriver.h; path = "tools/lldb-mi/MIDriver.h"; sourceTree = SOURCE_ROOT; }; - 266941DE1A6DC2AC0063BE93 /* MIDriverBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIDriverBase.cpp; path = "tools/lldb-mi/MIDriverBase.cpp"; sourceTree = SOURCE_ROOT; }; - 266941DF1A6DC2AC0063BE93 /* MIDriverBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIDriverBase.h; path = "tools/lldb-mi/MIDriverBase.h"; sourceTree = SOURCE_ROOT; }; - 266941E01A6DC2AC0063BE93 /* MIDriverMain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIDriverMain.cpp; path = "tools/lldb-mi/MIDriverMain.cpp"; sourceTree = SOURCE_ROOT; }; - 266941E11A6DC2AC0063BE93 /* MIDriverMgr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIDriverMgr.cpp; path = "tools/lldb-mi/MIDriverMgr.cpp"; sourceTree = SOURCE_ROOT; }; - 266941E21A6DC2AC0063BE93 /* MIDriverMgr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIDriverMgr.h; path = "tools/lldb-mi/MIDriverMgr.h"; sourceTree = SOURCE_ROOT; }; - 266941E31A6DC2AC0063BE93 /* MIReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MIReadMe.txt; path = "tools/lldb-mi/MIReadMe.txt"; sourceTree = SOURCE_ROOT; }; - 266941E41A6DC2AC0063BE93 /* MIUtilDateTimeStd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilDateTimeStd.cpp; path = "tools/lldb-mi/MIUtilDateTimeStd.cpp"; sourceTree = SOURCE_ROOT; }; - 266941E51A6DC2AC0063BE93 /* MIUtilDateTimeStd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilDateTimeStd.h; path = "tools/lldb-mi/MIUtilDateTimeStd.h"; sourceTree = SOURCE_ROOT; }; - 266941E61A6DC2AC0063BE93 /* MIUtilDebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilDebug.cpp; path = "tools/lldb-mi/MIUtilDebug.cpp"; sourceTree = SOURCE_ROOT; }; - 266941E71A6DC2AC0063BE93 /* MIUtilDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilDebug.h; path = "tools/lldb-mi/MIUtilDebug.h"; sourceTree = SOURCE_ROOT; }; - 266941E81A6DC2AC0063BE93 /* MIUtilFileStd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilFileStd.cpp; path = "tools/lldb-mi/MIUtilFileStd.cpp"; sourceTree = SOURCE_ROOT; }; - 266941E91A6DC2AC0063BE93 /* MIUtilFileStd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilFileStd.h; path = "tools/lldb-mi/MIUtilFileStd.h"; sourceTree = SOURCE_ROOT; }; - 266941EA1A6DC2AC0063BE93 /* MIUtilMapIdToVariant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilMapIdToVariant.cpp; path = "tools/lldb-mi/MIUtilMapIdToVariant.cpp"; sourceTree = SOURCE_ROOT; }; - 266941EB1A6DC2AC0063BE93 /* MIUtilMapIdToVariant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilMapIdToVariant.h; path = "tools/lldb-mi/MIUtilMapIdToVariant.h"; sourceTree = SOURCE_ROOT; }; - 266941EC1A6DC2AC0063BE93 /* MIUtilSingletonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilSingletonBase.h; path = "tools/lldb-mi/MIUtilSingletonBase.h"; sourceTree = SOURCE_ROOT; }; - 266941ED1A6DC2AC0063BE93 /* MIUtilSingletonHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilSingletonHelper.h; path = "tools/lldb-mi/MIUtilSingletonHelper.h"; sourceTree = SOURCE_ROOT; }; - 266941EE1A6DC2AC0063BE93 /* MIUtilString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilString.cpp; path = "tools/lldb-mi/MIUtilString.cpp"; sourceTree = SOURCE_ROOT; }; - 266941EF1A6DC2AC0063BE93 /* MIUtilString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilString.h; path = "tools/lldb-mi/MIUtilString.h"; sourceTree = SOURCE_ROOT; }; - 266941F81A6DC2AC0063BE93 /* MIUtilThreadBaseStd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilThreadBaseStd.cpp; path = "tools/lldb-mi/MIUtilThreadBaseStd.cpp"; sourceTree = SOURCE_ROOT; }; - 266941F91A6DC2AC0063BE93 /* MIUtilThreadBaseStd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilThreadBaseStd.h; path = "tools/lldb-mi/MIUtilThreadBaseStd.h"; sourceTree = SOURCE_ROOT; }; - 266941FA1A6DC2AC0063BE93 /* MIUtilVariant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MIUtilVariant.cpp; path = "tools/lldb-mi/MIUtilVariant.cpp"; sourceTree = SOURCE_ROOT; }; - 266941FB1A6DC2AC0063BE93 /* MIUtilVariant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MIUtilVariant.h; path = "tools/lldb-mi/MIUtilVariant.h"; sourceTree = SOURCE_ROOT; }; - AF395C01219254F200894EC3 /* MSVCUndecoratedNameParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MSVCUndecoratedNameParser.cpp; path = Language/CPlusPlus/MSVCUndecoratedNameParser.cpp; sourceTree = ""; }; - AF395C00219254F200894EC3 /* MSVCUndecoratedNameParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MSVCUndecoratedNameParser.h; path = Language/CPlusPlus/MSVCUndecoratedNameParser.h; sourceTree = ""; }; - D67521351EA17C3900439694 /* MainLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MainLoop.cpp; sourceTree = ""; }; - 9A2057301F3B8E7600F6C293 /* MainLoopTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MainLoopTest.cpp; sourceTree = ""; }; - 8C3BD9951EF45D9B0016C343 /* MainThreadCheckerRuntime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MainThreadCheckerRuntime.cpp; sourceTree = ""; }; - 8C3BD9931EF45D9B0016C343 /* MainThreadCheckerRuntime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainThreadCheckerRuntime.h; sourceTree = ""; }; - 2665CD0D15080846002C8FAE /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 26BC7E8010F1B85900F91463 /* Mangled.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mangled.cpp; path = source/Core/Mangled.cpp; sourceTree = ""; }; - 26BC7D6910F1B77400F91463 /* Mangled.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mangled.h; path = include/lldb/Core/Mangled.h; sourceTree = ""; }; - 4F29D3CD21010F84003B549A /* MangledTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MangledTest.cpp; sourceTree = ""; }; - 4CD44CF920B37C440003557C /* ManualDWARFIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ManualDWARFIndex.cpp; sourceTree = ""; }; - 4CD44D0020B37C580003557C /* ManualDWARFIndex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ManualDWARFIndex.h; sourceTree = ""; }; - 2682100C143A59AE004BCF2D /* MappedHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MappedHash.h; path = include/lldb/Core/MappedHash.h; sourceTree = ""; }; - 49DCF700170E70120092F75E /* Materializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Materializer.cpp; path = source/Expression/Materializer.cpp; sourceTree = ""; }; - 49DCF6FF170E6FD90092F75E /* Materializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Materializer.h; path = include/lldb/Expression/Materializer.h; sourceTree = ""; }; - 2690B3701381D5C300ECFBAE /* Memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Memory.cpp; path = source/Target/Memory.cpp; sourceTree = ""; }; - 2690B36F1381D5B600ECFBAE /* Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Memory.h; path = include/lldb/Target/Memory.h; sourceTree = ""; }; - 8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MemoryHistory.cpp; path = source/Target/MemoryHistory.cpp; sourceTree = ""; }; - 8C2D6A54197A1EBE006989C9 /* MemoryHistory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MemoryHistory.h; path = include/lldb/Target/MemoryHistory.h; sourceTree = ""; }; - 8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryHistoryASan.cpp; sourceTree = ""; }; - 8C2D6A5B197A1FDC006989C9 /* MemoryHistoryASan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryHistoryASan.h; sourceTree = ""; }; - 2360092C193FB21500189DB1 /* MemoryRegionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MemoryRegionInfo.h; path = include/lldb/Target/MemoryRegionInfo.h; sourceTree = ""; }; - 9A2057061F3B818600F6C293 /* MemoryRegionInfoTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MemoryRegionInfoTest.cpp; path = Target/MemoryRegionInfoTest.cpp; sourceTree = ""; }; - 23E2E5371D9048FB006F38BB /* MinidumpParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MinidumpParser.cpp; sourceTree = ""; }; - 23E2E5381D9048FB006F38BB /* MinidumpParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MinidumpParser.h; sourceTree = ""; }; - 23E2E51A1D9036F2006F38BB /* MinidumpParserTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MinidumpParserTest.cpp; sourceTree = ""; }; - 23E2E5391D9048FB006F38BB /* MinidumpTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MinidumpTypes.cpp; sourceTree = ""; }; - 23E2E53A1D9048FB006F38BB /* MinidumpTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MinidumpTypes.h; sourceTree = ""; }; - 26B75B421AD6E29A001F7A57 /* MipsLinuxSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MipsLinuxSignals.cpp; path = Utility/MipsLinuxSignals.cpp; sourceTree = ""; }; - 26B75B431AD6E29A001F7A57 /* MipsLinuxSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MipsLinuxSignals.h; path = Utility/MipsLinuxSignals.h; sourceTree = ""; }; - 9A1890321F47D5D400394BCA /* MockTildeExpressionResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MockTildeExpressionResolver.cpp; path = TestingSupport/MockTildeExpressionResolver.cpp; sourceTree = ""; }; - 9A1890331F47D5D400394BCA /* MockTildeExpressionResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MockTildeExpressionResolver.h; path = TestingSupport/MockTildeExpressionResolver.h; sourceTree = ""; }; - 26BC7E8110F1B85900F91463 /* Module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Module.cpp; path = source/Core/Module.cpp; sourceTree = ""; }; - 26BC7D6A10F1B77400F91463 /* Module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Module.h; path = include/lldb/Core/Module.h; sourceTree = ""; }; - 2654A67F1E54D59400DA1013 /* ModuleCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ModuleCache.cpp; path = source/Target/ModuleCache.cpp; sourceTree = ""; }; - 2654A6811E54D5A200DA1013 /* ModuleCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ModuleCache.h; path = include/lldb/Target/ModuleCache.h; sourceTree = ""; }; - AFAFD8091E57E1B90017A14F /* ModuleCacheTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ModuleCacheTest.cpp; path = Target/ModuleCacheTest.cpp; sourceTree = ""; }; - 26BC7E8210F1B85900F91463 /* ModuleChild.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ModuleChild.cpp; path = source/Core/ModuleChild.cpp; sourceTree = ""; }; - 26BC7D6B10F1B77400F91463 /* ModuleChild.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ModuleChild.h; path = include/lldb/Core/ModuleChild.h; sourceTree = ""; }; - 26BC7E8310F1B85900F91463 /* ModuleList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ModuleList.cpp; path = source/Core/ModuleList.cpp; sourceTree = ""; }; - 26BC7D6C10F1B77400F91463 /* ModuleList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ModuleList.h; path = include/lldb/Core/ModuleList.h; sourceTree = ""; }; - 260D9B2615EC369500960137 /* ModuleSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ModuleSpec.h; path = include/lldb/Core/ModuleSpec.h; sourceTree = ""; }; - 949EEDA41BA765B5008C63CF /* NSArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSArray.cpp; path = Language/ObjC/NSArray.cpp; sourceTree = ""; }; - 949EEDA51BA765B5008C63CF /* NSDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSDictionary.cpp; path = Language/ObjC/NSDictionary.cpp; sourceTree = ""; }; - 94B9E50E1BBEFDFE000A48DC /* NSDictionary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSDictionary.h; path = Language/ObjC/NSDictionary.h; sourceTree = ""; }; - 940495781BEC497E00926025 /* NSError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSError.cpp; path = Language/ObjC/NSError.cpp; sourceTree = ""; }; - 940495791BEC497E00926025 /* NSException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSException.cpp; path = Language/ObjC/NSException.cpp; sourceTree = ""; }; - 949EEDA61BA765B5008C63CF /* NSIndexPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSIndexPath.cpp; path = Language/ObjC/NSIndexPath.cpp; sourceTree = ""; }; - 949EEDA71BA765B5008C63CF /* NSSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSSet.cpp; path = Language/ObjC/NSSet.cpp; sourceTree = ""; }; - 94B9E50F1BBF0069000A48DC /* NSSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSSet.h; path = Language/ObjC/NSSet.h; sourceTree = ""; }; - 94B9E5111BBF20F4000A48DC /* NSString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSString.cpp; path = Language/ObjC/NSString.cpp; sourceTree = ""; }; - 94B9E5101BBF20B7000A48DC /* NSString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSString.h; path = Language/ObjC/NSString.h; sourceTree = ""; }; - 3F8169181ABA2419001DA9DF /* NameMatches.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NameMatches.cpp; path = source/Utility/NameMatches.cpp; sourceTree = ""; }; - 3F81691C1ABA242B001DA9DF /* NameMatches.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NameMatches.h; path = include/lldb/Utility/NameMatches.h; sourceTree = ""; }; - 9A3D43CB1F3150D200EB767C /* NameMatchesTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NameMatchesTest.cpp; sourceTree = ""; }; - 2618D9EA12406FE600F2B8FE /* NameToDIE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NameToDIE.cpp; sourceTree = ""; }; - 2618D957124056C700F2B8FE /* NameToDIE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NameToDIE.h; sourceTree = ""; }; - 267A47F41B1411750021A5BC /* NativeBreakpointList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NativeBreakpointList.h; path = include/lldb/Host/common/NativeBreakpointList.h; sourceTree = ""; }; - 232CB60F191E00CC00EF39FC /* NativeProcessProtocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = NativeProcessProtocol.cpp; path = source/Host/common/NativeProcessProtocol.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 267A47F51B14117F0021A5BC /* NativeProcessProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NativeProcessProtocol.h; path = include/lldb/Host/common/NativeProcessProtocol.h; sourceTree = ""; }; - 23EDE3301926839700F6A132 /* NativeRegisterContext.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NativeRegisterContext.cpp; path = source/Host/common/NativeRegisterContext.cpp; sourceTree = ""; }; - 267A47FA1B1411C40021A5BC /* NativeRegisterContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NativeRegisterContext.cpp; path = source/Host/common/NativeRegisterContext.cpp; sourceTree = ""; }; - 23EDE3311926843600F6A132 /* NativeRegisterContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NativeRegisterContext.h; path = include/lldb/Host/common/NativeRegisterContext.h; sourceTree = ""; }; - 267A47F61B14118F0021A5BC /* NativeRegisterContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NativeRegisterContext.h; path = include/lldb/Host/common/NativeRegisterContext.h; sourceTree = ""; }; - 23F403481926CC250046DC9B /* NativeRegisterContextRegisterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NativeRegisterContextRegisterInfo.cpp; path = Utility/NativeRegisterContextRegisterInfo.cpp; sourceTree = ""; }; - 23F403471926C8D50046DC9B /* NativeRegisterContextRegisterInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NativeRegisterContextRegisterInfo.h; path = Utility/NativeRegisterContextRegisterInfo.h; sourceTree = ""; }; - 232CB611191E00CC00EF39FC /* NativeThreadProtocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NativeThreadProtocol.cpp; path = source/Host/common/NativeThreadProtocol.cpp; sourceTree = ""; }; - 267A47F81B1411A40021A5BC /* NativeThreadProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NativeThreadProtocol.h; path = include/lldb/Host/common/NativeThreadProtocol.h; sourceTree = ""; }; - 267A47FE1B1411D90021A5BC /* NativeWatchpointList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NativeWatchpointList.cpp; path = source/Host/common/NativeWatchpointList.cpp; sourceTree = ""; }; - 267A47F91B1411AC0021A5BC /* NativeWatchpointList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NativeWatchpointList.h; path = include/lldb/Host/common/NativeWatchpointList.h; sourceTree = ""; }; - AF33B4BC1C1FA441001B28D9 /* NetBSDSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetBSDSignals.cpp; path = Utility/NetBSDSignals.cpp; sourceTree = ""; }; - AF33B4BD1C1FA441001B28D9 /* NetBSDSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetBSDSignals.h; path = Utility/NetBSDSignals.h; sourceTree = ""; }; - 94B6385E1B8FB7A2004FE1E4 /* ObjCLanguage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ObjCLanguage.cpp; path = Language/ObjC/ObjCLanguage.cpp; sourceTree = ""; }; - 94B6385F1B8FB7A2004FE1E4 /* ObjCLanguage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ObjCLanguage.h; path = Language/ObjC/ObjCLanguage.h; sourceTree = ""; }; - 4CB443F212499B5000C13DC2 /* ObjCLanguageRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ObjCLanguageRuntime.cpp; path = source/Target/ObjCLanguageRuntime.cpp; sourceTree = ""; }; - 4CB443F612499B6E00C13DC2 /* ObjCLanguageRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjCLanguageRuntime.h; path = include/lldb/Target/ObjCLanguageRuntime.h; sourceTree = ""; }; - 94B638621B8FB7F1004FE1E4 /* ObjCPlusPlusLanguage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ObjCPlusPlusLanguage.cpp; path = Language/ObjCPlusPlus/ObjCPlusPlusLanguage.cpp; sourceTree = ""; }; - 94B638611B8FB7E9004FE1E4 /* ObjCPlusPlusLanguage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ObjCPlusPlusLanguage.h; path = Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h; sourceTree = ""; }; - 26BC7C5D10F1B6E900F91463 /* ObjectContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjectContainer.h; path = include/lldb/Symbol/ObjectContainer.h; sourceTree = ""; }; - 26A3B4AC1181454800381BC2 /* ObjectContainerBSDArchive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectContainerBSDArchive.cpp; sourceTree = ""; }; - 26A3B4AD1181454800381BC2 /* ObjectContainerBSDArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectContainerBSDArchive.h; sourceTree = ""; }; - 260C898010F57C5600BB2B04 /* ObjectContainerUniversalMachO.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectContainerUniversalMachO.cpp; sourceTree = ""; }; - 260C898110F57C5600BB2B04 /* ObjectContainerUniversalMachO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectContainerUniversalMachO.h; sourceTree = ""; }; - 26BC7F4C10F1BC1A00F91463 /* ObjectFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ObjectFile.cpp; path = source/Symbol/ObjectFile.cpp; sourceTree = ""; }; - 26BC7C5E10F1B6E900F91463 /* ObjectFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjectFile.h; path = include/lldb/Symbol/ObjectFile.h; sourceTree = ""; }; - 4C9BF11921C0467700FA4036 /* ObjectFileBreakpad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFileBreakpad.cpp; sourceTree = ""; }; - 4C9BF11821C0467700FA4036 /* ObjectFileBreakpad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectFileBreakpad.h; sourceTree = ""; }; - 260C898510F57C5600BB2B04 /* ObjectFileELF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFileELF.cpp; sourceTree = ""; }; - 260C898610F57C5600BB2B04 /* ObjectFileELF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectFileELF.h; sourceTree = ""; }; - 26EFC4CA18CFAF0D00865D87 /* ObjectFileJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFileJIT.cpp; sourceTree = ""; }; - 26EFC4CB18CFAF0D00865D87 /* ObjectFileJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectFileJIT.h; sourceTree = ""; }; - 260C898810F57C5600BB2B04 /* ObjectFileMachO.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFileMachO.cpp; sourceTree = ""; }; - 260C898910F57C5600BB2B04 /* ObjectFileMachO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectFileMachO.h; sourceTree = ""; }; - 26E152231419CACA007967D0 /* ObjectFilePECOFF.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFilePECOFF.cpp; sourceTree = ""; }; - 26E152241419CACA007967D0 /* ObjectFilePECOFF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ObjectFilePECOFF.h; sourceTree = ""; }; - 26651A17133BF9DF005B64B7 /* Opcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Opcode.cpp; path = source/Core/Opcode.cpp; sourceTree = ""; }; - 26651A15133BF9CC005B64B7 /* Opcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Opcode.h; path = include/lldb/Core/Opcode.h; sourceTree = ""; }; - 266DFE9613FD656E00D0C574 /* OperatingSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OperatingSystem.cpp; path = source/Target/OperatingSystem.cpp; sourceTree = ""; }; - 266DFE9813FD658300D0C574 /* OperatingSystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OperatingSystem.h; path = include/lldb/Target/OperatingSystem.h; sourceTree = ""; }; - 2698699815E6CBD0002415FF /* OperatingSystemPython.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OperatingSystemPython.cpp; sourceTree = ""; }; - 2698699915E6CBD0002415FF /* OperatingSystemPython.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OperatingSystemPython.h; sourceTree = ""; }; - 4C719394207D235400FDF430 /* OptionArgParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionArgParser.cpp; path = source/Interpreter/OptionArgParser.cpp; sourceTree = ""; }; - 4C719397207D237100FDF430 /* OptionArgParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionArgParser.h; path = include/lldb/Interpreter/OptionArgParser.h; sourceTree = ""; }; - 26D5E15E135BAEA2006EA0A7 /* OptionGroupArchitecture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupArchitecture.cpp; path = source/Interpreter/OptionGroupArchitecture.cpp; sourceTree = ""; }; - 26D5E160135BAEB0006EA0A7 /* OptionGroupArchitecture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupArchitecture.h; path = include/lldb/Interpreter/OptionGroupArchitecture.h; sourceTree = ""; }; - 2686536B1370ACB200D186A3 /* OptionGroupBoolean.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupBoolean.cpp; path = source/Interpreter/OptionGroupBoolean.cpp; sourceTree = ""; }; - 2686536D1370ACC600D186A3 /* OptionGroupBoolean.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupBoolean.h; path = include/lldb/Interpreter/OptionGroupBoolean.h; sourceTree = ""; }; - 260E07C7136FAB9200CF21D3 /* OptionGroupFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupFile.cpp; path = source/Interpreter/OptionGroupFile.cpp; sourceTree = ""; }; - 260E07C9136FABAC00CF21D3 /* OptionGroupFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupFile.h; path = include/lldb/Interpreter/OptionGroupFile.h; sourceTree = ""; }; - 26BCFC511368AE38006DC050 /* OptionGroupFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupFormat.cpp; path = source/Interpreter/OptionGroupFormat.cpp; sourceTree = ""; }; - 26BCFC4F1368ADF7006DC050 /* OptionGroupFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupFormat.h; path = include/lldb/Interpreter/OptionGroupFormat.h; sourceTree = ""; }; - 26BCFC531368B3E4006DC050 /* OptionGroupOutputFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupOutputFile.cpp; path = source/Interpreter/OptionGroupOutputFile.cpp; sourceTree = ""; }; - 26BCFC541368B4B8006DC050 /* OptionGroupOutputFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupOutputFile.h; path = include/lldb/Interpreter/OptionGroupOutputFile.h; sourceTree = ""; }; - 26D5E162135BB054006EA0A7 /* OptionGroupPlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupPlatform.cpp; path = source/Interpreter/OptionGroupPlatform.cpp; sourceTree = ""; }; - 26D5E161135BB040006EA0A7 /* OptionGroupPlatform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupPlatform.h; path = include/lldb/Interpreter/OptionGroupPlatform.h; sourceTree = ""; }; - 262ED0071631FA3A00879631 /* OptionGroupString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupString.cpp; path = source/Interpreter/OptionGroupString.cpp; sourceTree = ""; }; - 262ED0041631FA2800879631 /* OptionGroupString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionGroupString.h; path = include/lldb/Interpreter/OptionGroupString.h; sourceTree = ""; }; - 2686536F1370AE7200D186A3 /* OptionGroupUInt64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupUInt64.cpp; path = source/Interpreter/OptionGroupUInt64.cpp; sourceTree = ""; }; - 2686536E1370AE5A00D186A3 /* OptionGroupUInt64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupUInt64.h; path = include/lldb/Interpreter/OptionGroupUInt64.h; sourceTree = ""; }; - 260E07C5136FA69E00CF21D3 /* OptionGroupUUID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupUUID.cpp; path = source/Interpreter/OptionGroupUUID.cpp; sourceTree = ""; }; - 260E07C3136FA68900CF21D3 /* OptionGroupUUID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupUUID.h; path = include/lldb/Interpreter/OptionGroupUUID.h; sourceTree = ""; }; - 267C012A136880DF006E963E /* OptionGroupValueObjectDisplay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupValueObjectDisplay.cpp; path = source/Interpreter/OptionGroupValueObjectDisplay.cpp; sourceTree = ""; }; - 267C0128136880C7006E963E /* OptionGroupValueObjectDisplay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupValueObjectDisplay.h; path = include/lldb/Interpreter/OptionGroupValueObjectDisplay.h; sourceTree = ""; }; - 26ED3D6C13C563810017D45E /* OptionGroupVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupVariable.cpp; path = source/Interpreter/OptionGroupVariable.cpp; sourceTree = ""; }; - 26ED3D6F13C5638A0017D45E /* OptionGroupVariable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupVariable.h; path = include/lldb/Interpreter/OptionGroupVariable.h; sourceTree = ""; }; - B2462246141AD37D00F3D409 /* OptionGroupWatchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupWatchpoint.cpp; path = source/Interpreter/OptionGroupWatchpoint.cpp; sourceTree = ""; }; - B2462248141AD39B00F3D409 /* OptionGroupWatchpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupWatchpoint.h; path = include/lldb/Interpreter/OptionGroupWatchpoint.h; sourceTree = ""; }; - A36FF33B17D8E94600244D40 /* OptionParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionParser.cpp; sourceTree = ""; }; - A36FF33D17D8E98800244D40 /* OptionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionParser.h; path = include/lldb/Host/OptionParser.h; sourceTree = ""; }; - 26A7A034135E6E4200FB369E /* OptionValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValue.cpp; path = source/Interpreter/OptionValue.cpp; sourceTree = ""; }; - 26A7A036135E6E5300FB369E /* OptionValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionValue.h; path = include/lldb/Interpreter/OptionValue.h; sourceTree = ""; }; - 2697A39215E404B1003E682C /* OptionValueArch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueArch.cpp; path = source/Interpreter/OptionValueArch.cpp; sourceTree = ""; }; - 2697A39415E404BA003E682C /* OptionValueArch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueArch.h; path = include/lldb/Interpreter/OptionValueArch.h; sourceTree = ""; }; - 260CC63B15D0440D002BF2E0 /* OptionValueArgs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueArgs.cpp; path = source/Interpreter/OptionValueArgs.cpp; sourceTree = ""; }; - 260CC62115D04377002BF2E0 /* OptionValueArgs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueArgs.h; path = include/lldb/Interpreter/OptionValueArgs.h; sourceTree = ""; }; - 260CC63C15D0440D002BF2E0 /* OptionValueArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueArray.cpp; path = source/Interpreter/OptionValueArray.cpp; sourceTree = ""; }; - 260CC62215D04377002BF2E0 /* OptionValueArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueArray.h; path = include/lldb/Interpreter/OptionValueArray.h; sourceTree = ""; }; - 260CC63D15D0440D002BF2E0 /* OptionValueBoolean.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueBoolean.cpp; path = source/Interpreter/OptionValueBoolean.cpp; sourceTree = ""; }; - 260CC62315D04377002BF2E0 /* OptionValueBoolean.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueBoolean.h; path = include/lldb/Interpreter/OptionValueBoolean.h; sourceTree = ""; }; - 25420ECC1A6490B8009ADBCB /* OptionValueChar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueChar.cpp; path = source/Interpreter/OptionValueChar.cpp; sourceTree = ""; }; - 25420ECE1A64911B009ADBCB /* OptionValueChar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionValueChar.h; path = include/lldb/Interpreter/OptionValueChar.h; sourceTree = ""; }; - 260CC63F15D0440D002BF2E0 /* OptionValueDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueDictionary.cpp; path = source/Interpreter/OptionValueDictionary.cpp; sourceTree = ""; }; - 260CC62515D04377002BF2E0 /* OptionValueDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueDictionary.h; path = include/lldb/Interpreter/OptionValueDictionary.h; sourceTree = ""; }; - 260CC64015D0440D002BF2E0 /* OptionValueEnumeration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueEnumeration.cpp; path = source/Interpreter/OptionValueEnumeration.cpp; sourceTree = ""; }; - 260CC62615D04377002BF2E0 /* OptionValueEnumeration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueEnumeration.h; path = include/lldb/Interpreter/OptionValueEnumeration.h; sourceTree = ""; }; - 260CC64115D0440D002BF2E0 /* OptionValueFileSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueFileSpec.cpp; path = source/Interpreter/OptionValueFileSpec.cpp; sourceTree = ""; }; - 260CC62715D04377002BF2E0 /* OptionValueFileSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueFileSpec.h; path = include/lldb/Interpreter/OptionValueFileSpec.h; sourceTree = ""; }; - 260CC64215D0440D002BF2E0 /* OptionValueFileSpecLIst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueFileSpecLIst.cpp; path = source/Interpreter/OptionValueFileSpecLIst.cpp; sourceTree = ""; }; - 260CC62815D04377002BF2E0 /* OptionValueFileSpecList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueFileSpecList.h; path = include/lldb/Interpreter/OptionValueFileSpecList.h; sourceTree = ""; }; - 260CC64315D0440D002BF2E0 /* OptionValueFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueFormat.cpp; path = source/Interpreter/OptionValueFormat.cpp; sourceTree = ""; }; - 260CC62915D04377002BF2E0 /* OptionValueFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueFormat.h; path = include/lldb/Interpreter/OptionValueFormat.h; sourceTree = ""; }; - 264A58ED1A7DBCAD00A6B1B0 /* OptionValueFormatEntity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueFormatEntity.cpp; path = source/Interpreter/OptionValueFormatEntity.cpp; sourceTree = ""; }; - 264A58EB1A7DBC8C00A6B1B0 /* OptionValueFormatEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueFormatEntity.h; path = include/lldb/Interpreter/OptionValueFormatEntity.h; sourceTree = ""; }; - 946216C11A97C080006E19CC /* OptionValueLanguage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueLanguage.cpp; path = source/Interpreter/OptionValueLanguage.cpp; sourceTree = ""; }; - 946216BF1A97C055006E19CC /* OptionValueLanguage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueLanguage.h; path = include/lldb/Interpreter/OptionValueLanguage.h; sourceTree = ""; }; - 26DAED6215D327C200E15819 /* OptionValuePathMappings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValuePathMappings.cpp; path = source/Interpreter/OptionValuePathMappings.cpp; sourceTree = ""; }; - 26DAED5F15D327A200E15819 /* OptionValuePathMappings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValuePathMappings.h; path = include/lldb/Interpreter/OptionValuePathMappings.h; sourceTree = ""; }; - 260CC63E15D0440D002BF2E0 /* OptionValueProperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueProperties.cpp; path = source/Interpreter/OptionValueProperties.cpp; sourceTree = ""; }; - 260CC62415D04377002BF2E0 /* OptionValueProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueProperties.h; path = include/lldb/Interpreter/OptionValueProperties.h; sourceTree = ""; }; - 26491E3D15E1DB9F00CBFFC2 /* OptionValueRegex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueRegex.cpp; path = source/Interpreter/OptionValueRegex.cpp; sourceTree = ""; }; - 26491E3A15E1DB8600CBFFC2 /* OptionValueRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueRegex.h; path = include/lldb/Interpreter/OptionValueRegex.h; sourceTree = ""; }; - 260CC64415D0440D002BF2E0 /* OptionValueSInt64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueSInt64.cpp; path = source/Interpreter/OptionValueSInt64.cpp; sourceTree = ""; }; - 260CC62A15D04377002BF2E0 /* OptionValueSInt64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueSInt64.h; path = include/lldb/Interpreter/OptionValueSInt64.h; sourceTree = ""; }; - 260CC64515D0440D002BF2E0 /* OptionValueString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueString.cpp; path = source/Interpreter/OptionValueString.cpp; sourceTree = ""; }; - 260CC62B15D04377002BF2E0 /* OptionValueString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueString.h; path = include/lldb/Interpreter/OptionValueString.h; sourceTree = ""; }; - 260CC64615D0440D002BF2E0 /* OptionValueUInt64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueUInt64.cpp; path = source/Interpreter/OptionValueUInt64.cpp; sourceTree = ""; }; - 260CC62C15D04377002BF2E0 /* OptionValueUInt64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueUInt64.h; path = include/lldb/Interpreter/OptionValueUInt64.h; sourceTree = ""; }; - 260CC64715D0440D002BF2E0 /* OptionValueUUID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionValueUUID.cpp; path = source/Interpreter/OptionValueUUID.cpp; sourceTree = ""; }; - 260CC62D15D04377002BF2E0 /* OptionValueUUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValueUUID.h; path = include/lldb/Interpreter/OptionValueUUID.h; sourceTree = ""; }; - 260A248D15D06C4F009981B0 /* OptionValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OptionValues.h; path = include/lldb/Interpreter/OptionValues.h; sourceTree = ""; }; - 26BC7E8610F1B85900F91463 /* Options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Options.cpp; path = source/Interpreter/Options.cpp; sourceTree = ""; }; - 26BC7D6D10F1B77400F91463 /* Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Options.h; path = include/lldb/Interpreter/Options.h; sourceTree = ""; }; - DD5F951A21ADE5BD00B8265A /* Options.inc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.pascal; name = Options.inc; path = build/Debug/include/Options.inc; sourceTree = ""; }; - DD5F951B21ADE5F000B8265A /* Options.td */ = {isa = PBXFileReference; lastKnownFileType = text; name = Options.td; path = tools/driver/Options.td; sourceTree = ""; }; - 4C639EC321FA684700A7B957 /* OptionsWithRawTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsWithRawTest.cpp; sourceTree = ""; }; - 4C562CC21CC07DDD00C52EAC /* PDBASTParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PDBASTParser.cpp; path = PDB/PDBASTParser.cpp; sourceTree = ""; }; - 4C562CC31CC07DDD00C52EAC /* PDBASTParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDBASTParser.h; path = PDB/PDBASTParser.h; sourceTree = ""; }; - 4CA0C6CA20F929C600CFE6BB /* PDBLocationToDWARFExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PDBLocationToDWARFExpression.cpp; path = PDB/PDBLocationToDWARFExpression.cpp; sourceTree = ""; }; - 4CA0C6CB20F929C700CFE6BB /* PDBLocationToDWARFExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PDBLocationToDWARFExpression.h; path = PDB/PDBLocationToDWARFExpression.h; sourceTree = ""; }; - AF3F54B21B3BA5D500186E73 /* POSIXStopInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = POSIXStopInfo.cpp; sourceTree = ""; }; - AF3F54B31B3BA5D500186E73 /* POSIXStopInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POSIXStopInfo.h; sourceTree = ""; }; - 495BBACB119A0DBE00418BEA /* PathMappingList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PathMappingList.cpp; path = source/Target/PathMappingList.cpp; sourceTree = ""; }; - 495BBACF119A0DE700418BEA /* PathMappingList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PathMappingList.h; path = include/lldb/Target/PathMappingList.h; sourceTree = ""; }; - 2668A2ED20AF417D00D94111 /* PathMappingListTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PathMappingListTest.cpp; path = Target/PathMappingListTest.cpp; sourceTree = ""; }; - AF815DF721C855B400023A34 /* PdbAstBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PdbAstBuilder.cpp; path = source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp; sourceTree = SOURCE_ROOT; }; - AF815DF821C855B400023A34 /* PdbAstBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PdbAstBuilder.h; path = source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.h; sourceTree = SOURCE_ROOT; }; - 5A6424932204D04F00C3D9DB /* PdbFPOProgramToDWARFExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PdbFPOProgramToDWARFExpression.cpp; path = source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.cpp; sourceTree = SOURCE_ROOT; }; - 5A6424912204D04F00C3D9DB /* PdbFPOProgramToDWARFExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PdbFPOProgramToDWARFExpression.h; path = source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.h; sourceTree = SOURCE_ROOT; }; - AFD966B6217140B6006714AC /* PdbIndex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PdbIndex.cpp; path = source/Plugins/SymbolFile/NativePDB/PdbIndex.cpp; sourceTree = SOURCE_ROOT; }; - AFD966BF217140C8006714AC /* PdbIndex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PdbIndex.h; path = source/Plugins/SymbolFile/NativePDB/PdbIndex.h; sourceTree = SOURCE_ROOT; }; - AF0F459D219FA1C800C1E612 /* PdbSymUid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PdbSymUid.cpp; path = source/Plugins/SymbolFile/NativePDB/PdbSymUid.cpp; sourceTree = SOURCE_ROOT; }; - AFD966BC217140C8006714AC /* PdbSymUid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PdbSymUid.h; path = source/Plugins/SymbolFile/NativePDB/PdbSymUid.h; sourceTree = SOURCE_ROOT; }; - AFD966B5217140B6006714AC /* PdbUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PdbUtil.cpp; path = source/Plugins/SymbolFile/NativePDB/PdbUtil.cpp; sourceTree = SOURCE_ROOT; }; - AFD966BE217140C8006714AC /* PdbUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PdbUtil.h; path = source/Plugins/SymbolFile/NativePDB/PdbUtil.h; sourceTree = SOURCE_ROOT; }; - 260A39A519647A3A004B4130 /* Pipe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Pipe.h; path = include/lldb/Host/Pipe.h; sourceTree = ""; }; - 25420ED11A649D88009ADBCB /* PipeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PipeBase.cpp; sourceTree = ""; }; - 3F5E8AF31A40D4A500A73232 /* PipeBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PipeBase.h; path = include/lldb/Host/PipeBase.h; sourceTree = ""; }; - 2377C2F719E613C100737875 /* PipePosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PipePosix.cpp; sourceTree = ""; }; - 255EFF701AFABA320069F277 /* PipeWindows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PipeWindows.h; path = include/lldb/Host/windows/PipeWindows.h; sourceTree = ""; }; - 264A43BD1320BCEB005B4096 /* Platform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Platform.cpp; path = source/Target/Platform.cpp; sourceTree = ""; }; - 264A43BB1320B3B4005B4096 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Platform.h; path = include/lldb/Target/Platform.h; sourceTree = ""; }; - 266941FD1A6DC2AC0063BE93 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Platform.h; path = "tools/lldb-mi/Platform.h"; sourceTree = SOURCE_ROOT; }; - 6D55BAE91A8CD08C00A70529 /* PlatformAndroid.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformAndroid.cpp; sourceTree = ""; }; - 6D55BAEA1A8CD08C00A70529 /* PlatformAndroid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformAndroid.h; sourceTree = ""; }; - 6D55BAEB1A8CD08C00A70529 /* PlatformAndroidRemoteGDBServer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformAndroidRemoteGDBServer.cpp; sourceTree = ""; }; - 6D55BAEC1A8CD08C00A70529 /* PlatformAndroidRemoteGDBServer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformAndroidRemoteGDBServer.h; sourceTree = ""; }; - 9455630A1BEAD0570073F75F /* PlatformAppleSimulator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformAppleSimulator.cpp; sourceTree = ""; }; - 9455630B1BEAD0570073F75F /* PlatformAppleSimulator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformAppleSimulator.h; sourceTree = ""; }; - AF8AD62A1BEC28A400150209 /* PlatformAppleTVSimulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformAppleTVSimulator.cpp; sourceTree = ""; }; - AF8AD62B1BEC28A400150209 /* PlatformAppleTVSimulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformAppleTVSimulator.h; sourceTree = ""; }; - AF8AD62C1BEC28A400150209 /* PlatformAppleWatchSimulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformAppleWatchSimulator.cpp; sourceTree = ""; }; - AF8AD62D1BEC28A400150209 /* PlatformAppleWatchSimulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformAppleWatchSimulator.h; sourceTree = ""; }; - 2697A54B133A6305004E4240 /* PlatformDarwin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformDarwin.cpp; sourceTree = ""; }; - 2697A54C133A6305004E4240 /* PlatformDarwin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformDarwin.h; sourceTree = ""; }; - AF254E2F170CCC33007AE5C9 /* PlatformDarwinKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformDarwinKernel.cpp; sourceTree = ""; }; - AF254E30170CCC33007AE5C9 /* PlatformDarwinKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformDarwinKernel.h; sourceTree = ""; }; - 9A20571A1F3B866F00F6C293 /* PlatformDarwinTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformDarwinTest.cpp; path = Platform/PlatformDarwinTest.cpp; sourceTree = ""; }; - 2694E99A14FC0BB30076DE67 /* PlatformFreeBSD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformFreeBSD.cpp; sourceTree = ""; }; - 2694E99B14FC0BB30076DE67 /* PlatformFreeBSD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformFreeBSD.h; sourceTree = ""; }; - 2694E9A114FC0BBD0076DE67 /* PlatformLinux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformLinux.cpp; sourceTree = ""; }; - 2694E9A214FC0BBD0076DE67 /* PlatformLinux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformLinux.h; sourceTree = ""; }; - 26C5577B132575AD008FD8FE /* PlatformMacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformMacOSX.cpp; sourceTree = ""; }; - 26C5577C132575AD008FD8FE /* PlatformMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformMacOSX.h; sourceTree = ""; }; - 26EFB6181BFE8D3E00544801 /* PlatformNetBSD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformNetBSD.cpp; sourceTree = ""; }; - 26EFB6191BFE8D3E00544801 /* PlatformNetBSD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformNetBSD.h; sourceTree = ""; }; - 4CE4EFA61E8999B000A80C06 /* PlatformOpenBSD.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformOpenBSD.cpp; sourceTree = ""; }; - 4CE4EFA71E8999B000A80C06 /* PlatformOpenBSD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformOpenBSD.h; sourceTree = ""; }; - 945759651534941F005A9070 /* PlatformPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformPOSIX.cpp; path = POSIX/PlatformPOSIX.cpp; sourceTree = ""; }; - 945759661534941F005A9070 /* PlatformPOSIX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformPOSIX.h; path = POSIX/PlatformPOSIX.h; sourceTree = ""; }; - AF66324E216EB9C300BB510D /* PlatformRemoteAppleBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformRemoteAppleBridge.cpp; sourceTree = ""; }; - AF66324F216EB9C300BB510D /* PlatformRemoteAppleBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteAppleBridge.h; sourceTree = ""; }; - AF8AD6331BEC28C400150209 /* PlatformRemoteAppleTV.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformRemoteAppleTV.cpp; sourceTree = ""; }; - AF8AD6341BEC28C400150209 /* PlatformRemoteAppleTV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteAppleTV.h; sourceTree = ""; }; - AF8AD6351BEC28C400150209 /* PlatformRemoteAppleWatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformRemoteAppleWatch.cpp; sourceTree = ""; }; - AF8AD6361BEC28C400150209 /* PlatformRemoteAppleWatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteAppleWatch.h; sourceTree = ""; }; - AF3A4AD01EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformRemoteDarwinDevice.cpp; sourceTree = ""; }; - AF3A4AD11EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteDarwinDevice.h; sourceTree = ""; }; - 264A97BD133918BC0017F0BE /* PlatformRemoteGDBServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformRemoteGDBServer.cpp; path = "gdb-server/PlatformRemoteGDBServer.cpp"; sourceTree = ""; }; - 264A97BE133918BC0017F0BE /* PlatformRemoteGDBServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformRemoteGDBServer.h; path = "gdb-server/PlatformRemoteGDBServer.h"; sourceTree = ""; }; - 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformRemoteiOS.cpp; sourceTree = ""; }; - 2675F6FF1332BE690067997B /* PlatformRemoteiOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteiOS.h; sourceTree = ""; }; - 490A36BD180F0E6F00BA31F8 /* PlatformWindows.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformWindows.cpp; sourceTree = ""; }; - 490A36BE180F0E6F00BA31F8 /* PlatformWindows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformWindows.h; sourceTree = ""; }; - 26B7564C14F89356008D9CB3 /* PlatformiOSSimulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformiOSSimulator.cpp; sourceTree = ""; }; - 26B7564D14F89356008D9CB3 /* PlatformiOSSimulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformiOSSimulator.h; sourceTree = ""; }; - AFB1682620D1D4CC00A74F25 /* PlatformiOSSimulatorCoreSimulatorSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PlatformiOSSimulatorCoreSimulatorSupport.h; path = objcxx/PlatformiOSSimulatorCoreSimulatorSupport.h; sourceTree = ""; }; - AFF81FB220D1CC910010F95E /* PlatformiOSSimulatorCoreSimulatorSupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformiOSSimulatorCoreSimulatorSupport.mm; path = source/Plugins/Platform/MacOSX/objcxx/PlatformiOSSimulatorCoreSimulatorSupport.mm; sourceTree = SOURCE_ROOT; }; - 26BC7D7010F1B77400F91463 /* PluginInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PluginInterface.h; path = include/lldb/Core/PluginInterface.h; sourceTree = ""; }; - 26BC7E8A10F1B85900F91463 /* PluginManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PluginManager.cpp; path = source/Core/PluginManager.cpp; sourceTree = ""; }; - 26BC7D7110F1B77400F91463 /* PluginManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PluginManager.h; path = include/lldb/Core/PluginManager.h; sourceTree = ""; }; - AFC4ADB02270F4C600042167 /* PostfixExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PostfixExpression.cpp; path = source/Symbol/PostfixExpression.cpp; sourceTree = ""; }; - 4C639EC021FA684700A7B957 /* PredicateTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PredicateTest.cpp; sourceTree = ""; }; - 26BC7F3610F1B90C00F91463 /* Process.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Process.cpp; path = source/Target/Process.cpp; sourceTree = ""; }; - 26BC7DF310F1B81A00F91463 /* Process.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Process.h; path = include/lldb/Target/Process.h; sourceTree = ""; }; - 26BC17A218C7F4CB00D2196D /* ProcessElfCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessElfCore.cpp; sourceTree = ""; }; - 26BC17A318C7F4CB00D2196D /* ProcessElfCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessElfCore.h; sourceTree = ""; }; - 23AB052F199FF639003B8084 /* ProcessFreeBSD.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessFreeBSD.cpp; sourceTree = ""; }; - 23AB0530199FF639003B8084 /* ProcessFreeBSD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProcessFreeBSD.h; sourceTree = ""; }; - 2618EE5F1315B29C001D6D71 /* ProcessGDBRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessGDBRemote.cpp; sourceTree = ""; }; - 2618EE601315B29C001D6D71 /* ProcessGDBRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessGDBRemote.h; sourceTree = ""; }; - 2618EE611315B29C001D6D71 /* ProcessGDBRemoteLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessGDBRemoteLog.cpp; sourceTree = ""; }; - 2618EE621315B29C001D6D71 /* ProcessGDBRemoteLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessGDBRemoteLog.h; sourceTree = ""; }; - 4CC57F9F222DFEA40067B7EA /* ProcessInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessInfo.cpp; path = source/Utility/ProcessInfo.cpp; sourceTree = ""; }; - 2642FBAA13D003B400ED6808 /* ProcessKDP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessKDP.cpp; sourceTree = ""; }; - 2642FBAB13D003B400ED6808 /* ProcessKDP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessKDP.h; sourceTree = ""; }; - 2642FBAC13D003B400ED6808 /* ProcessKDPLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessKDPLog.cpp; sourceTree = ""; }; - 2642FBAD13D003B400ED6808 /* ProcessKDPLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessKDPLog.h; sourceTree = ""; }; - 233B007E1960CB280090E598 /* ProcessLaunchInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessLaunchInfo.cpp; sourceTree = ""; }; - 26A527BD14E24F5F00F3A14A /* ProcessMachCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessMachCore.cpp; sourceTree = ""; }; - 26A527BE14E24F5F00F3A14A /* ProcessMachCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessMachCore.h; sourceTree = ""; }; - 26BC17BA18C7F4FA00D2196D /* ProcessMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessMessage.cpp; sourceTree = ""; }; - 26BC17BB18C7F4FA00D2196D /* ProcessMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessMessage.h; sourceTree = ""; }; - 947CF7701DC7B1EE00EF980B /* ProcessMinidump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessMinidump.cpp; sourceTree = ""; }; - 947CF76F1DC7B1E300EF980B /* ProcessMinidump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProcessMinidump.h; sourceTree = ""; }; - 23AB0531199FF639003B8084 /* ProcessMonitor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessMonitor.cpp; sourceTree = ""; }; - 23AB0532199FF639003B8084 /* ProcessMonitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProcessMonitor.h; sourceTree = ""; }; - 26BC17BE18C7F4FA00D2196D /* ProcessPOSIXLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessPOSIXLog.cpp; sourceTree = ""; }; - 26BC17BF18C7F4FA00D2196D /* ProcessPOSIXLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProcessPOSIXLog.h; sourceTree = ""; }; - 3FDFE54519A29448009756A7 /* ProcessRunLock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessRunLock.cpp; path = source/Host/windows/ProcessRunLock.cpp; sourceTree = ""; }; - AF37E10917C861F20061E18E /* ProcessRunLock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProcessRunLock.cpp; sourceTree = ""; }; - 3FDFED2219BA6D55009756A7 /* ProcessRunLock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ProcessRunLock.h; path = include/lldb/Host/ProcessRunLock.h; sourceTree = ""; }; - 2640E19E15DC78FD00F23B50 /* Property.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Property.cpp; path = source/Interpreter/Property.cpp; sourceTree = ""; }; - 26ACEC2715E077AE00E94760 /* Property.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Property.h; path = include/lldb/Interpreter/Property.h; sourceTree = ""; }; - 2654A68C1E552D1500DA1013 /* PseudoTerminal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PseudoTerminal.cpp; path = source/Host/common/PseudoTerminal.cpp; sourceTree = ""; }; - 2654A68E1E552D2400DA1013 /* PseudoTerminal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PseudoTerminal.h; path = include/lldb/Host/PseudoTerminal.h; sourceTree = ""; }; - 2326CF3F1BDD613E00A5CEAC /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = System/Library/Frameworks/Python.framework; sourceTree = SDKROOT; }; - 3FBA69E31B60672A0008F44A /* PythonDataObjects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PythonDataObjects.cpp; path = ScriptInterpreter/Python/PythonDataObjects.cpp; sourceTree = ""; }; - 3FBA69E41B60672A0008F44A /* PythonDataObjects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PythonDataObjects.h; path = ScriptInterpreter/Python/PythonDataObjects.h; sourceTree = ""; }; - 2321F94D1BDD360F00BA9A93 /* PythonDataObjectsTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PythonDataObjectsTests.cpp; sourceTree = ""; }; - AFCB2BBB1BF577F40018B553 /* PythonExceptionState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PythonExceptionState.cpp; path = ScriptInterpreter/Python/PythonExceptionState.cpp; sourceTree = ""; }; - AFCB2BBC1BF577F40018B553 /* PythonExceptionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PythonExceptionState.h; path = ScriptInterpreter/Python/PythonExceptionState.h; sourceTree = ""; }; - 3FA093141BF65D3A0037DD08 /* PythonExceptionStateTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PythonExceptionStateTests.cpp; sourceTree = ""; }; - AF45E1FC1BF57C8D000563EB /* PythonTestSuite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PythonTestSuite.cpp; sourceTree = ""; }; - AF45E1FD1BF57C8D000563EB /* PythonTestSuite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PythonTestSuite.h; sourceTree = ""; }; - AF2670381852D01E00B6CC36 /* Queue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Queue.cpp; path = source/Target/Queue.cpp; sourceTree = ""; }; - 260A63111860FDB600FECF8E /* Queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Queue.h; path = include/lldb/Target/Queue.h; sourceTree = ""; }; - AF0C112718580CD800C4C45B /* QueueItem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = QueueItem.cpp; path = source/Target/QueueItem.cpp; sourceTree = ""; }; - 260A63121860FDBD00FECF8E /* QueueItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = QueueItem.h; path = include/lldb/Target/QueueItem.h; sourceTree = ""; }; - AF2670391852D01E00B6CC36 /* QueueList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = QueueList.cpp; path = source/Target/QueueList.cpp; sourceTree = ""; }; - 260A63131860FDC700FECF8E /* QueueList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = QueueList.h; path = include/lldb/Target/QueueList.h; sourceTree = ""; }; - 4939EA8C1BD56B6D00084382 /* REPL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = REPL.cpp; path = source/Expression/REPL.cpp; sourceTree = ""; }; - 4939EA8B1BD56B3700084382 /* REPL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = REPL.h; path = include/lldb/Expression/REPL.h; sourceTree = ""; }; - 9A2057451F3B905C00F6C293 /* RNBSocketTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RNBSocketTest.cpp; path = debugserver/RNBSocketTest.cpp; sourceTree = ""; }; - 2626B6AD143E1BEA00EF935C /* RangeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RangeMap.h; path = include/lldb/Core/RangeMap.h; sourceTree = ""; }; - 26AB54111832DC3400EADFF3 /* RegisterCheckpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterCheckpoint.h; path = include/lldb/Target/RegisterCheckpoint.h; sourceTree = ""; }; - 26BC7F3710F1B90C00F91463 /* RegisterContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContext.cpp; path = source/Target/RegisterContext.cpp; sourceTree = ""; }; - 26BC7DF410F1B81A00F91463 /* RegisterContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContext.h; path = include/lldb/Target/RegisterContext.h; sourceTree = ""; }; - 26957D9213D381C900670048 /* RegisterContextDarwin_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextDarwin_arm.cpp; path = Utility/RegisterContextDarwin_arm.cpp; sourceTree = ""; }; - 26957D9313D381C900670048 /* RegisterContextDarwin_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextDarwin_arm.h; path = Utility/RegisterContextDarwin_arm.h; sourceTree = ""; }; - AF9107EC168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextDarwin_arm64.cpp; path = Utility/RegisterContextDarwin_arm64.cpp; sourceTree = ""; }; - AF9107ED168570D200DBCD3C /* RegisterContextDarwin_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextDarwin_arm64.h; path = Utility/RegisterContextDarwin_arm64.h; sourceTree = ""; }; - 26957D9413D381C900670048 /* RegisterContextDarwin_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextDarwin_i386.cpp; path = Utility/RegisterContextDarwin_i386.cpp; sourceTree = ""; }; - 26957D9513D381C900670048 /* RegisterContextDarwin_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextDarwin_i386.h; path = Utility/RegisterContextDarwin_i386.h; sourceTree = ""; }; - 26957D9613D381C900670048 /* RegisterContextDarwin_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextDarwin_x86_64.cpp; path = Utility/RegisterContextDarwin_x86_64.cpp; sourceTree = ""; }; - 26957D9713D381C900670048 /* RegisterContextDarwin_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextDarwin_x86_64.h; path = Utility/RegisterContextDarwin_x86_64.h; sourceTree = ""; }; - 944372DA171F6B4300E57C32 /* RegisterContextDummy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextDummy.cpp; path = Utility/RegisterContextDummy.cpp; sourceTree = ""; }; - 944372DB171F6B4300E57C32 /* RegisterContextDummy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextDummy.h; path = Utility/RegisterContextDummy.h; sourceTree = ""; }; - 26474CA218D0CB070073DEBA /* RegisterContextFreeBSD_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextFreeBSD_i386.cpp; path = Utility/RegisterContextFreeBSD_i386.cpp; sourceTree = ""; }; - 26474CA318D0CB070073DEBA /* RegisterContextFreeBSD_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextFreeBSD_i386.h; path = Utility/RegisterContextFreeBSD_i386.h; sourceTree = ""; }; - 26474CA418D0CB070073DEBA /* RegisterContextFreeBSD_mips64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextFreeBSD_mips64.cpp; path = Utility/RegisterContextFreeBSD_mips64.cpp; sourceTree = ""; }; - 26474CA518D0CB070073DEBA /* RegisterContextFreeBSD_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextFreeBSD_mips64.h; path = Utility/RegisterContextFreeBSD_mips64.h; sourceTree = ""; }; - AF77E09A1A033D360096C0EA /* RegisterContextFreeBSD_powerpc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextFreeBSD_powerpc.cpp; path = Utility/RegisterContextFreeBSD_powerpc.cpp; sourceTree = ""; }; - AF77E09B1A033D360096C0EA /* RegisterContextFreeBSD_powerpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextFreeBSD_powerpc.h; path = Utility/RegisterContextFreeBSD_powerpc.h; sourceTree = ""; }; - 26474CA618D0CB070073DEBA /* RegisterContextFreeBSD_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextFreeBSD_x86_64.cpp; path = Utility/RegisterContextFreeBSD_x86_64.cpp; sourceTree = ""; }; - 26474CA718D0CB070073DEBA /* RegisterContextFreeBSD_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextFreeBSD_x86_64.h; path = Utility/RegisterContextFreeBSD_x86_64.h; sourceTree = ""; }; - AF061F85182C97ED00B6A19C /* RegisterContextHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextHistory.cpp; path = Utility/RegisterContextHistory.cpp; sourceTree = ""; }; - AF061F86182C97ED00B6A19C /* RegisterContextHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextHistory.h; path = Utility/RegisterContextHistory.h; sourceTree = ""; }; - 265205A213D3E3F700132FE2 /* RegisterContextKDP_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextKDP_arm.cpp; sourceTree = ""; }; - 265205A313D3E3F700132FE2 /* RegisterContextKDP_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextKDP_arm.h; sourceTree = ""; }; - AF0F6E4E1739A76D009180FE /* RegisterContextKDP_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextKDP_arm64.cpp; sourceTree = ""; }; - AF0F6E4F1739A76D009180FE /* RegisterContextKDP_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextKDP_arm64.h; sourceTree = ""; }; - 265205A413D3E3F700132FE2 /* RegisterContextKDP_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextKDP_i386.cpp; sourceTree = ""; }; - 265205A513D3E3F700132FE2 /* RegisterContextKDP_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextKDP_i386.h; sourceTree = ""; }; - 265205A613D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextKDP_x86_64.cpp; sourceTree = ""; }; - 265205A713D3E3F700132FE2 /* RegisterContextKDP_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextKDP_x86_64.h; sourceTree = ""; }; - AF68D2541255416E002FF25B /* RegisterContextLLDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLLDB.cpp; path = Utility/RegisterContextLLDB.cpp; sourceTree = ""; }; - AF68D2551255416E002FF25B /* RegisterContextLLDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLLDB.h; path = Utility/RegisterContextLLDB.h; sourceTree = ""; }; - 26474CAE18D0CB180073DEBA /* RegisterContextLinux_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLinux_i386.cpp; path = Utility/RegisterContextLinux_i386.cpp; sourceTree = ""; }; - 26474CAF18D0CB180073DEBA /* RegisterContextLinux_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLinux_i386.h; path = Utility/RegisterContextLinux_i386.h; sourceTree = ""; }; - 9A0FDE971E8EF5010086B2F5 /* RegisterContextLinux_mips.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLinux_mips.cpp; path = Utility/RegisterContextLinux_mips.cpp; sourceTree = ""; }; - 9A0FDE981E8EF5010086B2F5 /* RegisterContextLinux_mips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLinux_mips.h; path = Utility/RegisterContextLinux_mips.h; sourceTree = ""; }; - 256CBDB81ADD107200BC6CDC /* RegisterContextLinux_mips64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLinux_mips64.cpp; path = Utility/RegisterContextLinux_mips64.cpp; sourceTree = ""; }; - 256CBDB91ADD107200BC6CDC /* RegisterContextLinux_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLinux_mips64.h; path = Utility/RegisterContextLinux_mips64.h; sourceTree = ""; }; - 267F68511CC02E920086832B /* RegisterContextLinux_s390x.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLinux_s390x.cpp; path = Utility/RegisterContextLinux_s390x.cpp; sourceTree = ""; }; - 267F68521CC02E920086832B /* RegisterContextLinux_s390x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLinux_s390x.h; path = Utility/RegisterContextLinux_s390x.h; sourceTree = ""; }; - 26474CB018D0CB180073DEBA /* RegisterContextLinux_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLinux_x86_64.cpp; path = Utility/RegisterContextLinux_x86_64.cpp; sourceTree = ""; }; - 26474CB118D0CB180073DEBA /* RegisterContextLinux_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLinux_x86_64.h; path = Utility/RegisterContextLinux_x86_64.h; sourceTree = ""; }; - 26E3EEF711A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMacOSXFrameBackchain.cpp; path = Utility/RegisterContextMacOSXFrameBackchain.cpp; sourceTree = ""; }; - AF77E09C1A033D360096C0EA /* RegisterContextMacOSXFrameBackchain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMacOSXFrameBackchain.cpp; path = Utility/RegisterContextMacOSXFrameBackchain.cpp; sourceTree = ""; }; - 26E3EEF811A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextMacOSXFrameBackchain.h; path = Utility/RegisterContextMacOSXFrameBackchain.h; sourceTree = ""; }; - 26474CB618D0CB2D0073DEBA /* RegisterContextMach_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMach_arm.cpp; path = Utility/RegisterContextMach_arm.cpp; sourceTree = ""; }; - 26474CB718D0CB2D0073DEBA /* RegisterContextMach_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextMach_arm.h; path = Utility/RegisterContextMach_arm.h; sourceTree = ""; }; - 26474CB818D0CB2D0073DEBA /* RegisterContextMach_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMach_i386.cpp; path = Utility/RegisterContextMach_i386.cpp; sourceTree = ""; }; - 26474CB918D0CB2D0073DEBA /* RegisterContextMach_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextMach_i386.h; path = Utility/RegisterContextMach_i386.h; sourceTree = ""; }; - 26474CBA18D0CB2D0073DEBA /* RegisterContextMach_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMach_x86_64.cpp; path = Utility/RegisterContextMach_x86_64.cpp; sourceTree = ""; }; - 26474CBB18D0CB2D0073DEBA /* RegisterContextMach_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextMach_x86_64.h; path = Utility/RegisterContextMach_x86_64.h; sourceTree = ""; }; - 262D24E413FB8710002D1960 /* RegisterContextMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMemory.cpp; path = Utility/RegisterContextMemory.cpp; sourceTree = ""; }; - 26474CC218D0CB5B0073DEBA /* RegisterContextMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextMemory.cpp; path = Utility/RegisterContextMemory.cpp; sourceTree = ""; }; - 262D24E513FB8710002D1960 /* RegisterContextMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextMemory.h; path = Utility/RegisterContextMemory.h; sourceTree = ""; }; - 26474CC318D0CB5B0073DEBA /* RegisterContextMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextMemory.h; path = Utility/RegisterContextMemory.h; sourceTree = ""; }; - 2619C4812107A9A1009CDE81 /* RegisterContextMinidump_ARM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextMinidump_ARM.cpp; sourceTree = ""; }; - 2619C4832107A9A2009CDE81 /* RegisterContextMinidump_ARM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextMinidump_ARM.h; sourceTree = ""; }; - 2619C4802107A9A1009CDE81 /* RegisterContextMinidump_ARM64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextMinidump_ARM64.cpp; sourceTree = ""; }; - 2619C4822107A9A2009CDE81 /* RegisterContextMinidump_ARM64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextMinidump_ARM64.h; sourceTree = ""; }; - 947CF7741DC7B20D00EF980B /* RegisterContextMinidump_x86_32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextMinidump_x86_32.cpp; sourceTree = ""; }; - 947CF7721DC7B20300EF980B /* RegisterContextMinidump_x86_32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RegisterContextMinidump_x86_32.h; sourceTree = ""; }; - AFD65C7F1D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextMinidump_x86_64.cpp; sourceTree = ""; }; - AFD65C801D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextMinidump_x86_64.h; sourceTree = ""; }; - 9AD9449B1E8DB267004796ED /* RegisterContextNetBSD_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextNetBSD_x86_64.cpp; path = Utility/RegisterContextNetBSD_x86_64.cpp; sourceTree = ""; }; - 9AD9449C1E8DB267004796ED /* RegisterContextNetBSD_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextNetBSD_x86_64.h; path = Utility/RegisterContextNetBSD_x86_64.h; sourceTree = ""; }; - 4CE4EFAB1E899A1200A80C06 /* RegisterContextOpenBSD_i386.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextOpenBSD_i386.cpp; path = Utility/RegisterContextOpenBSD_i386.cpp; sourceTree = ""; }; - 4CE4EFAC1E899A1200A80C06 /* RegisterContextOpenBSD_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextOpenBSD_i386.h; path = Utility/RegisterContextOpenBSD_i386.h; sourceTree = ""; }; - 4CE4EFAD1E899A1200A80C06 /* RegisterContextOpenBSD_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextOpenBSD_x86_64.cpp; path = Utility/RegisterContextOpenBSD_x86_64.cpp; sourceTree = ""; }; - 4CE4EFAE1E899A1200A80C06 /* RegisterContextOpenBSD_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextOpenBSD_x86_64.h; path = Utility/RegisterContextOpenBSD_x86_64.h; sourceTree = ""; }; - 26474CC818D0CB5B0073DEBA /* RegisterContextPOSIX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIX.h; sourceTree = ""; }; - 256CBDB21ADD0EFD00BC6CDC /* RegisterContextPOSIXCore_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_arm.cpp; sourceTree = ""; }; - 256CBDB31ADD0EFD00BC6CDC /* RegisterContextPOSIXCore_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_arm.h; sourceTree = ""; }; - E7723D421AC4A7FB002BA082 /* RegisterContextPOSIXCore_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_arm64.cpp; sourceTree = ""; }; - E7723D431AC4A7FB002BA082 /* RegisterContextPOSIXCore_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_arm64.h; sourceTree = ""; }; - 26BC17A418C7F4CB00D2196D /* RegisterContextPOSIXCore_mips64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_mips64.cpp; sourceTree = ""; }; - 26BC17A518C7F4CB00D2196D /* RegisterContextPOSIXCore_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_mips64.h; sourceTree = ""; }; - AF77E0A71A033D740096C0EA /* RegisterContextPOSIXCore_powerpc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_powerpc.cpp; sourceTree = ""; }; - AF77E0A81A033D740096C0EA /* RegisterContextPOSIXCore_powerpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_powerpc.h; sourceTree = ""; }; - AF9113FB1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_ppc64le.cpp; sourceTree = ""; }; - AF9113FC1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_ppc64le.h; sourceTree = ""; }; - 267F684D1CC02E270086832B /* RegisterContextPOSIXCore_s390x.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_s390x.cpp; sourceTree = ""; }; - 267F684E1CC02E270086832B /* RegisterContextPOSIXCore_s390x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_s390x.h; sourceTree = ""; }; - 26BC17A618C7F4CB00D2196D /* RegisterContextPOSIXCore_x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXCore_x86_64.cpp; sourceTree = ""; }; - 26BC17A718C7F4CB00D2196D /* RegisterContextPOSIXCore_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXCore_x86_64.h; sourceTree = ""; }; - AF3F54B81B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXProcessMonitor_arm.cpp; sourceTree = ""; }; - AF3F54B91B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXProcessMonitor_arm.h; sourceTree = ""; }; - AF3F54BA1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXProcessMonitor_arm64.cpp; sourceTree = ""; }; - AF3F54BB1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXProcessMonitor_arm64.h; sourceTree = ""; }; - AF3F54BC1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_mips64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXProcessMonitor_mips64.cpp; sourceTree = ""; }; - AF3F54BD1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXProcessMonitor_mips64.h; sourceTree = ""; }; - AF3F54BE1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_powerpc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXProcessMonitor_powerpc.cpp; sourceTree = ""; }; - AF3F54BF1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_powerpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXProcessMonitor_powerpc.h; sourceTree = ""; }; - AF3F54C01B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterContextPOSIXProcessMonitor_x86.cpp; sourceTree = ""; }; - AF3F54C11B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_x86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterContextPOSIXProcessMonitor_x86.h; sourceTree = ""; }; - 256CBDBE1ADD11C000BC6CDC /* RegisterContextPOSIX_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_arm.cpp; path = Utility/RegisterContextPOSIX_arm.cpp; sourceTree = ""; }; - 256CBDBF1ADD11C000BC6CDC /* RegisterContextPOSIX_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_arm.h; path = Utility/RegisterContextPOSIX_arm.h; sourceTree = ""; }; - E7723D4A1AC4A944002BA082 /* RegisterContextPOSIX_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_arm64.cpp; path = Utility/RegisterContextPOSIX_arm64.cpp; sourceTree = ""; }; - E7723D4B1AC4A944002BA082 /* RegisterContextPOSIX_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_arm64.h; path = Utility/RegisterContextPOSIX_arm64.h; sourceTree = ""; }; - 26474CC418D0CB5B0073DEBA /* RegisterContextPOSIX_mips64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_mips64.cpp; path = Utility/RegisterContextPOSIX_mips64.cpp; sourceTree = ""; }; - 26474CC518D0CB5B0073DEBA /* RegisterContextPOSIX_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_mips64.h; path = Utility/RegisterContextPOSIX_mips64.h; sourceTree = ""; }; - AF77E09D1A033D360096C0EA /* RegisterContextPOSIX_powerpc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_powerpc.cpp; path = Utility/RegisterContextPOSIX_powerpc.cpp; sourceTree = ""; }; - AF77E09E1A033D360096C0EA /* RegisterContextPOSIX_powerpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_powerpc.h; path = Utility/RegisterContextPOSIX_powerpc.h; sourceTree = ""; }; - AF235EAE1FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_ppc64le.cpp; path = Utility/RegisterContextPOSIX_ppc64le.cpp; sourceTree = ""; }; - AF235EAF1FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_ppc64le.h; path = Utility/RegisterContextPOSIX_ppc64le.h; sourceTree = ""; }; - 267F68551CC02EAE0086832B /* RegisterContextPOSIX_s390x.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_s390x.cpp; path = Utility/RegisterContextPOSIX_s390x.cpp; sourceTree = ""; }; - 267F68561CC02EAE0086832B /* RegisterContextPOSIX_s390x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_s390x.h; path = Utility/RegisterContextPOSIX_s390x.h; sourceTree = ""; }; - 26474CC618D0CB5B0073DEBA /* RegisterContextPOSIX_x86.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextPOSIX_x86.cpp; path = Utility/RegisterContextPOSIX_x86.cpp; sourceTree = ""; }; - 26474CC718D0CB5B0073DEBA /* RegisterContextPOSIX_x86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextPOSIX_x86.h; path = Utility/RegisterContextPOSIX_x86.h; sourceTree = ""; }; - 26CA979F172B1FD5005DC71B /* RegisterContextThreadMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextThreadMemory.cpp; path = Utility/RegisterContextThreadMemory.cpp; sourceTree = ""; }; - 26CA97A0172B1FD5005DC71B /* RegisterContextThreadMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextThreadMemory.h; path = Utility/RegisterContextThreadMemory.h; sourceTree = ""; }; - 9A0FDE951E8EF5010086B2F5 /* RegisterContext_mips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContext_mips.h; path = Utility/RegisterContext_mips.h; sourceTree = ""; }; - AF77E0991A033D360096C0EA /* RegisterContext_powerpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContext_powerpc.h; path = Utility/RegisterContext_powerpc.h; sourceTree = ""; }; - 9A0FDE961E8EF5010086B2F5 /* RegisterContext_s390x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContext_s390x.h; path = Utility/RegisterContext_s390x.h; sourceTree = ""; }; - 26474C9F18D0CAEC0073DEBA /* RegisterContext_x86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContext_x86.h; path = Utility/RegisterContext_x86.h; sourceTree = ""; }; - 23EDE3371926AAD500F6A132 /* RegisterInfoInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RegisterInfoInterface.h; path = Utility/RegisterInfoInterface.h; sourceTree = ""; }; - 9A77AD501E64E24E0025CE04 /* RegisterInfoPOSIX_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterInfoPOSIX_arm.cpp; path = Utility/RegisterInfoPOSIX_arm.cpp; sourceTree = ""; }; - 9A77AD511E64E24E0025CE04 /* RegisterInfoPOSIX_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfoPOSIX_arm.h; path = Utility/RegisterInfoPOSIX_arm.h; sourceTree = ""; }; - 237A8BAB1DEC9BBC00CEBAFF /* RegisterInfoPOSIX_arm64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterInfoPOSIX_arm64.cpp; path = Utility/RegisterInfoPOSIX_arm64.cpp; sourceTree = ""; }; - 237A8BAC1DEC9BBC00CEBAFF /* RegisterInfoPOSIX_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfoPOSIX_arm64.h; path = Utility/RegisterInfoPOSIX_arm64.h; sourceTree = ""; }; - AF235EB31FBE7858009C5541 /* RegisterInfoPOSIX_ppc64le.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterInfoPOSIX_ppc64le.cpp; path = Utility/RegisterInfoPOSIX_ppc64le.cpp; sourceTree = ""; }; - AF235EB21FBE7857009C5541 /* RegisterInfoPOSIX_ppc64le.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfoPOSIX_ppc64le.h; path = Utility/RegisterInfoPOSIX_ppc64le.h; sourceTree = ""; }; - 9A0FDE991E8EF5010086B2F5 /* RegisterInfos_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_arm.h; path = Utility/RegisterInfos_arm.h; sourceTree = ""; }; - 9A0FDE9A1E8EF5010086B2F5 /* RegisterInfos_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_arm64.h; path = Utility/RegisterInfos_arm64.h; sourceTree = ""; }; - 26474CD018D0CB700073DEBA /* RegisterInfos_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_i386.h; path = Utility/RegisterInfos_i386.h; sourceTree = ""; }; - 9A0FDE9B1E8EF5010086B2F5 /* RegisterInfos_mips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_mips.h; path = Utility/RegisterInfos_mips.h; sourceTree = ""; }; - 26474CD118D0CB710073DEBA /* RegisterInfos_mips64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_mips64.h; path = Utility/RegisterInfos_mips64.h; sourceTree = ""; }; - AF77E09F1A033D360096C0EA /* RegisterInfos_powerpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_powerpc.h; path = Utility/RegisterInfos_powerpc.h; sourceTree = ""; }; - 267F68591CC02EBE0086832B /* RegisterInfos_s390x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_s390x.h; path = Utility/RegisterInfos_s390x.h; sourceTree = ""; }; - 26474CD218D0CB710073DEBA /* RegisterInfos_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterInfos_x86_64.h; path = Utility/RegisterInfos_x86_64.h; sourceTree = ""; }; - 2654A6821E54D5E200DA1013 /* RegisterNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterNumber.cpp; path = source/Target/RegisterNumber.cpp; sourceTree = ""; }; - 2654A6841E54D5EE00DA1013 /* RegisterNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RegisterNumber.h; path = include/lldb/Target/RegisterNumber.h; sourceTree = ""; }; - 4CA9D13C1FCE07AF00300E18 /* RegisterUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterUtilities.cpp; sourceTree = ""; }; - 4CA9D13D1FCE07AF00300E18 /* RegisterUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterUtilities.h; sourceTree = ""; }; - 26C6886E137880C400407EDF /* RegisterValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterValue.cpp; path = source/Utility/RegisterValue.cpp; sourceTree = ""; }; - 26C6886D137880B900407EDF /* RegisterValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RegisterValue.h; path = include/lldb/Utility/RegisterValue.h; sourceTree = ""; }; - 4C639EC421FA684800A7B957 /* RegisterValueTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterValueTest.cpp; sourceTree = ""; }; - 26764C9F1E48F528008D3573 /* RegularExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegularExpression.cpp; path = source/Utility/RegularExpression.cpp; sourceTree = ""; }; - 26764C9C1E48F516008D3573 /* RegularExpression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RegularExpression.h; path = include/lldb/Utility/RegularExpression.h; sourceTree = ""; }; - 26501413221330CE00E16D81 /* RemoteAwarePlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteAwarePlatform.cpp; path = source/Target/RemoteAwarePlatform.cpp; sourceTree = ""; }; - 26501415221330EE00E16D81 /* RemoteAwarePlatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteAwarePlatform.h; path = include/lldb/Target/RemoteAwarePlatform.h; sourceTree = ""; }; - 23D065821D4A7BDA0008EDE6 /* RenderScriptExpressionOpts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScriptExpressionOpts.cpp; sourceTree = ""; }; - 23D065831D4A7BDA0008EDE6 /* RenderScriptExpressionOpts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScriptExpressionOpts.h; sourceTree = ""; }; - 23D065841D4A7BDA0008EDE6 /* RenderScriptRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScriptRuntime.cpp; sourceTree = ""; }; - 23D065851D4A7BDA0008EDE6 /* RenderScriptRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScriptRuntime.h; sourceTree = ""; }; - 948554591DCBAE3B00345FF5 /* RenderScriptScriptGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScriptScriptGroup.cpp; sourceTree = ""; }; - 948554581DCBAE3200345FF5 /* RenderScriptScriptGroup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RenderScriptScriptGroup.h; sourceTree = ""; }; - 23D065861D4A7BDA0008EDE6 /* RenderScriptx86ABIFixups.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScriptx86ABIFixups.cpp; sourceTree = ""; }; - 23D065871D4A7BDA0008EDE6 /* RenderScriptx86ABIFixups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScriptx86ABIFixups.h; sourceTree = ""; }; - AFCB1D5E219CD5EA00730AD5 /* Reproducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Reproducer.cpp; path = source/Utility/Reproducer.cpp; sourceTree = ""; }; - DD6C13BA220A6F21005C2AE8 /* ReproducerInstrumentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ReproducerInstrumentation.cpp; path = source/Utility/ReproducerInstrumentation.cpp; sourceTree = ""; }; - DD6C13BC220A6F6A005C2AE8 /* ReproducerInstrumentationTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReproducerInstrumentationTest.cpp; sourceTree = ""; }; - 4C639EC121FA684700A7B957 /* ReproducerTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReproducerTest.cpp; sourceTree = ""; }; - 4FBC04EC211A06200015A814 /* RichManglingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RichManglingContext.cpp; path = source/Core/RichManglingContext.cpp; sourceTree = ""; }; - 4FBC04EE211A06820015A814 /* RichManglingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RichManglingContext.h; path = include/lldb/Core/RichManglingContext.h; sourceTree = ""; }; - 4FBC04F3211A0F0F0015A814 /* RichManglingContextTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RichManglingContextTest.cpp; sourceTree = ""; }; - 26DE204411618ADA00A093E2 /* SBAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBAddress.cpp; path = source/API/SBAddress.cpp; sourceTree = ""; }; - 26DE204211618ACA00A093E2 /* SBAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBAddress.h; path = include/lldb/API/SBAddress.h; sourceTree = ""; }; - 2611FEEF142D83060017FEA3 /* SBAddress.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBAddress.i; sourceTree = ""; }; - 254FBBA41A91670E00BD6378 /* SBAttachInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBAttachInfo.cpp; path = source/API/SBAttachInfo.cpp; sourceTree = ""; }; - 254FBBA21A9166F100BD6378 /* SBAttachInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBAttachInfo.h; path = include/lldb/API/SBAttachInfo.h; sourceTree = ""; }; - 254FBBA61A91672800BD6378 /* SBAttachInfo.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBAttachInfo.i; sourceTree = ""; }; - 26DE20601161902600A093E2 /* SBBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBlock.cpp; path = source/API/SBBlock.cpp; sourceTree = ""; }; - 26DE205611618FC500A093E2 /* SBBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBlock.h; path = include/lldb/API/SBBlock.h; sourceTree = ""; }; - 2611FEF0142D83060017FEA3 /* SBBlock.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBBlock.i; sourceTree = ""; }; - 9AF16A9C11402D5B007A7B3F /* SBBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBreakpoint.cpp; path = source/API/SBBreakpoint.cpp; sourceTree = ""; }; - 9AF16A9E11402D69007A7B3F /* SBBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBreakpoint.h; path = include/lldb/API/SBBreakpoint.h; sourceTree = ""; }; - 2611FEF1142D83060017FEA3 /* SBBreakpoint.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBBreakpoint.i; sourceTree = ""; }; - 9AF16CC7114086A1007A7B3F /* SBBreakpointLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBreakpointLocation.cpp; path = source/API/SBBreakpointLocation.cpp; sourceTree = ""; }; - 9AF16CC611408686007A7B3F /* SBBreakpointLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBreakpointLocation.h; path = include/lldb/API/SBBreakpointLocation.h; sourceTree = ""; }; - 2611FEF2142D83060017FEA3 /* SBBreakpointLocation.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBBreakpointLocation.i; sourceTree = ""; }; - 4C54B27C1F61CE5300D469CA /* SBBreakpointName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBreakpointName.cpp; path = source/API/SBBreakpointName.cpp; sourceTree = ""; }; - 4C54B2781F61CE1200D469CA /* SBBreakpointName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBreakpointName.h; path = include/lldb/API/SBBreakpointName.h; sourceTree = ""; }; - 4C05332C1F63092A00DED368 /* SBBreakpointName.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBBreakpointName.i; sourceTree = ""; }; - 4C0533291F6211FB00DED368 /* SBBreakpointOptionCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBreakpointOptionCommon.cpp; path = source/API/SBBreakpointOptionCommon.cpp; sourceTree = ""; }; - 4C54B2811F62081300D469CA /* SBBreakpointOptionCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBBreakpointOptionCommon.h; path = source/API/SBBreakpointOptionCommon.h; sourceTree = ""; }; - 9A9830F21125FC5800A56CB0 /* SBBroadcaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBroadcaster.cpp; path = source/API/SBBroadcaster.cpp; sourceTree = ""; }; - 9A9830F31125FC5800A56CB0 /* SBBroadcaster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBroadcaster.h; path = include/lldb/API/SBBroadcaster.h; sourceTree = ""; }; - 2611FEF3142D83060017FEA3 /* SBBroadcaster.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBBroadcaster.i; sourceTree = ""; }; - 9A9830F61125FC5800A56CB0 /* SBCommandInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBCommandInterpreter.cpp; path = source/API/SBCommandInterpreter.cpp; sourceTree = ""; }; - 9A9830F71125FC5800A56CB0 /* SBCommandInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBCommandInterpreter.h; path = include/lldb/API/SBCommandInterpreter.h; sourceTree = ""; }; - 2611FEF4142D83060017FEA3 /* SBCommandInterpreter.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBCommandInterpreter.i; sourceTree = ""; }; - 9A9830F81125FC5800A56CB0 /* SBCommandReturnObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBCommandReturnObject.cpp; path = source/API/SBCommandReturnObject.cpp; sourceTree = ""; }; - 9A9830F91125FC5800A56CB0 /* SBCommandReturnObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBCommandReturnObject.h; path = include/lldb/API/SBCommandReturnObject.h; sourceTree = ""; }; - 2611FEF5142D83060017FEA3 /* SBCommandReturnObject.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBCommandReturnObject.i; sourceTree = ""; }; - 260223E8115F06E500A601A2 /* SBCommunication.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBCommunication.cpp; path = source/API/SBCommunication.cpp; sourceTree = ""; }; - 260223E7115F06D500A601A2 /* SBCommunication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBCommunication.h; path = include/lldb/API/SBCommunication.h; sourceTree = ""; }; - 2611FEF6142D83060017FEA3 /* SBCommunication.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBCommunication.i; sourceTree = ""; }; - 26DE205E1161901B00A093E2 /* SBCompileUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBCompileUnit.cpp; path = source/API/SBCompileUnit.cpp; sourceTree = ""; }; - 26DE205411618FB800A093E2 /* SBCompileUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBCompileUnit.h; path = include/lldb/API/SBCompileUnit.h; sourceTree = ""; }; - 2611FEF7142D83060017FEA3 /* SBCompileUnit.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBCompileUnit.i; sourceTree = ""; }; - 9443B121140C18C10013457C /* SBData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBData.cpp; path = source/API/SBData.cpp; sourceTree = ""; }; - 9443B120140C18A90013457C /* SBData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBData.h; path = include/lldb/API/SBData.h; sourceTree = ""; }; - 2611FEF8142D83060017FEA3 /* SBData.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBData.i; sourceTree = ""; }; - 9A9830FA1125FC5800A56CB0 /* SBDebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBDebugger.cpp; path = source/API/SBDebugger.cpp; sourceTree = ""; }; - 9A9830FB1125FC5800A56CB0 /* SBDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBDebugger.h; path = include/lldb/API/SBDebugger.h; sourceTree = ""; }; - 2611FEF9142D83060017FEA3 /* SBDebugger.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBDebugger.i; sourceTree = ""; }; - 9452573916262D0200325455 /* SBDeclaration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBDeclaration.cpp; path = source/API/SBDeclaration.cpp; sourceTree = ""; }; - 9452573816262CEF00325455 /* SBDeclaration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBDeclaration.h; path = include/lldb/API/SBDeclaration.h; sourceTree = ""; }; - 9452573616262CD000325455 /* SBDeclaration.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBDeclaration.i; sourceTree = ""; }; - 9A9830FC1125FC5800A56CB0 /* SBDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBDefines.h; path = include/lldb/API/SBDefines.h; sourceTree = ""; }; - 2682F284115EF3A700CCFF99 /* SBError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBError.cpp; path = source/API/SBError.cpp; sourceTree = ""; }; - 2682F286115EF3BD00CCFF99 /* SBError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBError.h; path = include/lldb/API/SBError.h; sourceTree = ""; }; - 2611FEFA142D83060017FEA3 /* SBError.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBError.i; sourceTree = ""; }; - 9A9830FD1125FC5800A56CB0 /* SBEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBEvent.cpp; path = source/API/SBEvent.cpp; sourceTree = ""; }; - 9A9830FE1125FC5800A56CB0 /* SBEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBEvent.h; path = include/lldb/API/SBEvent.h; sourceTree = ""; }; - 2611FEFB142D83060017FEA3 /* SBEvent.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBEvent.i; sourceTree = ""; }; - 940B02F519DC96E700AD0F52 /* SBExecutionContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBExecutionContext.cpp; path = source/API/SBExecutionContext.cpp; sourceTree = ""; }; - 940B02F419DC96CB00AD0F52 /* SBExecutionContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBExecutionContext.h; path = include/lldb/API/SBExecutionContext.h; sourceTree = ""; }; - 940B02F719DC970900AD0F52 /* SBExecutionContext.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBExecutionContext.i; sourceTree = ""; }; - 4CE4F674162C973F00F75CB3 /* SBExpressionOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBExpressionOptions.cpp; path = source/API/SBExpressionOptions.cpp; sourceTree = ""; }; - 4CE4F672162C971A00F75CB3 /* SBExpressionOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBExpressionOptions.h; path = include/lldb/API/SBExpressionOptions.h; sourceTree = ""; }; - 4CE4F676162CE1E100F75CB3 /* SBExpressionOptions.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBExpressionOptions.i; sourceTree = ""; }; - 26022532115F281400A601A2 /* SBFileSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBFileSpec.cpp; path = source/API/SBFileSpec.cpp; sourceTree = ""; }; - 26022531115F27FA00A601A2 /* SBFileSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBFileSpec.h; path = include/lldb/API/SBFileSpec.h; sourceTree = ""; }; - 2611FEFC142D83060017FEA3 /* SBFileSpec.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBFileSpec.i; sourceTree = ""; }; - 4CF52AF7142829390051E832 /* SBFileSpecList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBFileSpecList.cpp; path = source/API/SBFileSpecList.cpp; sourceTree = ""; }; - 4CF52AF41428291E0051E832 /* SBFileSpecList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBFileSpecList.h; path = include/lldb/API/SBFileSpecList.h; sourceTree = ""; }; - 2611FEFD142D83060017FEA3 /* SBFileSpecList.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBFileSpecList.i; sourceTree = ""; }; - 9A633FE7112DCE3C001A7E43 /* SBFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBFrame.cpp; path = source/API/SBFrame.cpp; sourceTree = ""; }; - 9A633FE8112DCE3C001A7E43 /* SBFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBFrame.h; path = include/lldb/API/SBFrame.h; sourceTree = ""; }; - 2611FEFE142D83060017FEA3 /* SBFrame.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBFrame.i; sourceTree = ""; }; - 26DE205C1161901400A093E2 /* SBFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBFunction.cpp; path = source/API/SBFunction.cpp; sourceTree = ""; }; - 26DE205211618FAC00A093E2 /* SBFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBFunction.h; path = include/lldb/API/SBFunction.h; sourceTree = ""; }; - 2611FEFF142D83060017FEA3 /* SBFunction.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBFunction.i; sourceTree = ""; }; - 9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBHostOS.cpp; path = source/API/SBHostOS.cpp; sourceTree = ""; }; - 9A3576A7116E9AB700E8ED2F /* SBHostOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBHostOS.h; path = include/lldb/API/SBHostOS.h; sourceTree = ""; }; - 2611FF00142D83060017FEA3 /* SBHostOS.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBHostOS.i; sourceTree = ""; }; - 9AC703AE117675410086C050 /* SBInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBInstruction.cpp; path = source/API/SBInstruction.cpp; sourceTree = ""; }; - 9AC7038D117674EB0086C050 /* SBInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBInstruction.h; path = include/lldb/API/SBInstruction.h; sourceTree = ""; }; - 2611FF02142D83060017FEA3 /* SBInstruction.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBInstruction.i; sourceTree = ""; }; - 9AC703B0117675490086C050 /* SBInstructionList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBInstructionList.cpp; path = source/API/SBInstructionList.cpp; sourceTree = ""; }; - 9AC7038F117675270086C050 /* SBInstructionList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBInstructionList.h; path = include/lldb/API/SBInstructionList.h; sourceTree = ""; }; - 2611FF03142D83060017FEA3 /* SBInstructionList.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBInstructionList.i; sourceTree = ""; }; - AF20F76C1AF18FC700751A6E /* SBLanguageRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBLanguageRuntime.cpp; path = source/API/SBLanguageRuntime.cpp; sourceTree = ""; }; - 3392EBB71AFF402200858B9F /* SBLanguageRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBLanguageRuntime.h; path = include/lldb/API/SBLanguageRuntime.h; sourceTree = ""; }; - 23DCBE971D63E14B0084C36B /* SBLanguageRuntime.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBLanguageRuntime.i; sourceTree = ""; }; - 254FBB941A81AA7F00BD6378 /* SBLaunchInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBLaunchInfo.cpp; path = source/API/SBLaunchInfo.cpp; sourceTree = ""; }; - 254FBB961A81B03100BD6378 /* SBLaunchInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBLaunchInfo.h; path = include/lldb/API/SBLaunchInfo.h; sourceTree = ""; }; - 254FBB921A81AA5200BD6378 /* SBLaunchInfo.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBLaunchInfo.i; sourceTree = ""; }; - 26DE20621161904200A093E2 /* SBLineEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBLineEntry.cpp; path = source/API/SBLineEntry.cpp; sourceTree = ""; }; - 26DE205811618FE700A093E2 /* SBLineEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBLineEntry.h; path = include/lldb/API/SBLineEntry.h; sourceTree = ""; }; - 2611FF04142D83060017FEA3 /* SBLineEntry.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBLineEntry.i; sourceTree = ""; }; - 9A9831011125FC5800A56CB0 /* SBListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBListener.cpp; path = source/API/SBListener.cpp; sourceTree = ""; }; - 9A9831021125FC5800A56CB0 /* SBListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBListener.h; path = include/lldb/API/SBListener.h; sourceTree = ""; }; - 2611FF05142D83060017FEA3 /* SBListener.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBListener.i; sourceTree = ""; }; - 23DCEA421D1C4C6900A602B4 /* SBMemoryRegionInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBMemoryRegionInfo.cpp; path = source/API/SBMemoryRegionInfo.cpp; sourceTree = ""; }; - 264297531D1DF209003F2BF4 /* SBMemoryRegionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBMemoryRegionInfo.h; path = include/lldb/API/SBMemoryRegionInfo.h; sourceTree = ""; }; - 264297591D1DF2AA003F2BF4 /* SBMemoryRegionInfo.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBMemoryRegionInfo.i; sourceTree = ""; }; - 23DCEA431D1C4C6900A602B4 /* SBMemoryRegionInfoList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBMemoryRegionInfoList.cpp; path = source/API/SBMemoryRegionInfoList.cpp; sourceTree = ""; }; - 264297541D1DF209003F2BF4 /* SBMemoryRegionInfoList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBMemoryRegionInfoList.h; path = include/lldb/API/SBMemoryRegionInfoList.h; sourceTree = ""; }; - 2642975A1D1DF2AA003F2BF4 /* SBMemoryRegionInfoList.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBMemoryRegionInfoList.i; sourceTree = ""; }; - 26DE204C11618E7A00A093E2 /* SBModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBModule.cpp; path = source/API/SBModule.cpp; sourceTree = ""; }; - 26DE204E11618E9800A093E2 /* SBModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBModule.h; path = include/lldb/API/SBModule.h; sourceTree = ""; }; - 2611FF06142D83060017FEA3 /* SBModule.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBModule.i; sourceTree = ""; }; - 263C4937178B50C40070F12D /* SBModuleSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBModuleSpec.cpp; path = source/API/SBModuleSpec.cpp; sourceTree = ""; }; - 263C4939178B50CF0070F12D /* SBModuleSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBModuleSpec.h; path = include/lldb/API/SBModuleSpec.h; sourceTree = ""; }; - 263C493B178B61CC0070F12D /* SBModuleSpec.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBModuleSpec.i; sourceTree = ""; }; - 262F12B41835468600AEB384 /* SBPlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBPlatform.cpp; path = source/API/SBPlatform.cpp; sourceTree = ""; }; - 262F12B61835469C00AEB384 /* SBPlatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBPlatform.h; path = include/lldb/API/SBPlatform.h; sourceTree = ""; }; - 262F12B8183546C900AEB384 /* SBPlatform.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBPlatform.i; sourceTree = ""; }; - 9A9831031125FC5800A56CB0 /* SBProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBProcess.cpp; path = source/API/SBProcess.cpp; sourceTree = ""; }; - 9A9831041125FC5800A56CB0 /* SBProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBProcess.h; path = include/lldb/API/SBProcess.h; sourceTree = ""; }; - 2611FF07142D83060017FEA3 /* SBProcess.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBProcess.i; sourceTree = ""; }; - 4987FB1E1F30EC7E00E5C17D /* SBProcessInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBProcessInfo.cpp; path = source/API/SBProcessInfo.cpp; sourceTree = ""; }; - 4987FB201F30EC9900E5C17D /* SBProcessInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBProcessInfo.h; path = include/lldb/API/SBProcessInfo.h; sourceTree = ""; }; - 4987FB1C1F30EC6000E5C17D /* SBProcessInfo.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBProcessInfo.i; sourceTree = ""; }; - AF0EBBE6185940FB0059E52F /* SBQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBQueue.cpp; path = source/API/SBQueue.cpp; sourceTree = ""; }; - AF0EBBEA185941360059E52F /* SBQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBQueue.h; path = include/lldb/API/SBQueue.h; sourceTree = ""; }; - AF0EBBEE1859419F0059E52F /* SBQueue.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBQueue.i; sourceTree = ""; }; - AF0EBBE7185940FB0059E52F /* SBQueueItem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBQueueItem.cpp; path = source/API/SBQueueItem.cpp; sourceTree = ""; }; - AF0EBBEB185941360059E52F /* SBQueueItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBQueueItem.h; path = include/lldb/API/SBQueueItem.h; sourceTree = ""; }; - AF0EBBEF1859419F0059E52F /* SBQueueItem.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBQueueItem.i; sourceTree = ""; }; - DD1E0AC9220B660100B815F8 /* SBReproducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBReproducer.cpp; path = source/API/SBReproducer.cpp; sourceTree = ""; }; - DD1E0AD0220BC3D400B815F8 /* SBReproducer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBReproducer.h; path = include/lldb/API/SBReproducer.h; sourceTree = ""; }; - DD1E0ACB220B660E00B815F8 /* SBReproducerPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBReproducerPrivate.h; path = source/API/SBReproducerPrivate.h; sourceTree = ""; }; - 26B8283F142D020F002DBC64 /* SBSection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBSection.cpp; path = source/API/SBSection.cpp; sourceTree = ""; }; - 26B8283C142D01E9002DBC64 /* SBSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBSection.h; path = include/lldb/API/SBSection.h; sourceTree = ""; }; - 2611FF08142D83060017FEA3 /* SBSection.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBSection.i; sourceTree = ""; }; - 9A9831051125FC5800A56CB0 /* SBSourceManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBSourceManager.cpp; path = source/API/SBSourceManager.cpp; sourceTree = ""; }; - 9A9831061125FC5800A56CB0 /* SBSourceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBSourceManager.h; path = include/lldb/API/SBSourceManager.h; sourceTree = ""; }; - 2611FF09142D83060017FEA3 /* SBSourceManager.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBSourceManager.i; sourceTree = ""; }; - 26C72C951243229A0068DC16 /* SBStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBStream.cpp; path = source/API/SBStream.cpp; sourceTree = ""; }; - 26C72C93124322890068DC16 /* SBStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBStream.h; path = include/lldb/API/SBStream.h; sourceTree = ""; }; - 2611FF0A142D83060017FEA3 /* SBStream.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBStream.i; sourceTree = ""; }; - 9A357672116E7B6400E8ED2F /* SBStringList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBStringList.cpp; path = source/API/SBStringList.cpp; sourceTree = ""; }; - 9A357670116E7B5200E8ED2F /* SBStringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBStringList.h; path = include/lldb/API/SBStringList.h; sourceTree = ""; }; - 2611FF0B142D83060017FEA3 /* SBStringList.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBStringList.i; sourceTree = ""; }; - 23DCBEA01D63E6440084C36B /* SBStructuredData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBStructuredData.cpp; path = source/API/SBStructuredData.cpp; sourceTree = ""; }; - 23DCBE9F1D63E3800084C36B /* SBStructuredData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBStructuredData.h; path = include/lldb/API/SBStructuredData.h; sourceTree = ""; }; - 23DCBE981D63E14B0084C36B /* SBStructuredData.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBStructuredData.i; sourceTree = ""; }; - 26DE20641161904E00A093E2 /* SBSymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBSymbol.cpp; path = source/API/SBSymbol.cpp; sourceTree = ""; }; - 26DE205A11618FF600A093E2 /* SBSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBSymbol.h; path = include/lldb/API/SBSymbol.h; sourceTree = ""; }; - 2611FF0C142D83060017FEA3 /* SBSymbol.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBSymbol.i; sourceTree = ""; }; - 26DE204611618AED00A093E2 /* SBSymbolContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBSymbolContext.cpp; path = source/API/SBSymbolContext.cpp; sourceTree = ""; }; - 26DE204011618AB900A093E2 /* SBSymbolContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBSymbolContext.h; path = include/lldb/API/SBSymbolContext.h; sourceTree = ""; }; - 2611FF0D142D83060017FEA3 /* SBSymbolContext.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBSymbolContext.i; sourceTree = ""; }; - 268F9D54123AA16600B91E9B /* SBSymbolContextList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBSymbolContextList.cpp; path = source/API/SBSymbolContextList.cpp; sourceTree = ""; }; - 268F9D52123AA15200B91E9B /* SBSymbolContextList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBSymbolContextList.h; path = include/lldb/API/SBSymbolContextList.h; sourceTree = ""; }; - 2611FF0E142D83060017FEA3 /* SBSymbolContextList.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBSymbolContextList.i; sourceTree = ""; }; - 9A9831071125FC5800A56CB0 /* SBTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = SBTarget.cpp; path = source/API/SBTarget.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 9A9831081125FC5800A56CB0 /* SBTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBTarget.h; path = include/lldb/API/SBTarget.h; sourceTree = ""; }; - 2611FF0F142D83060017FEA3 /* SBTarget.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTarget.i; sourceTree = ""; }; - 9A9831091125FC5800A56CB0 /* SBThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBThread.cpp; path = source/API/SBThread.cpp; sourceTree = ""; }; - 9A98310A1125FC5800A56CB0 /* SBThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBThread.h; path = include/lldb/API/SBThread.h; sourceTree = ""; }; - 2611FF10142D83060017FEA3 /* SBThread.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBThread.i; sourceTree = ""; }; - 8CCB017F19BA4DD00009FD44 /* SBThreadCollection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SBThreadCollection.cpp; path = source/API/SBThreadCollection.cpp; sourceTree = ""; }; - 8CCB018119BA4E210009FD44 /* SBThreadCollection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBThreadCollection.h; path = include/lldb/API/SBThreadCollection.h; sourceTree = ""; }; - 8CCB018419BA54930009FD44 /* SBThreadCollection.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBThreadCollection.i; sourceTree = ""; }; - 4C56543619D22B32002E9C44 /* SBThreadPlan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBThreadPlan.cpp; path = source/API/SBThreadPlan.cpp; sourceTree = ""; }; - 4C56543419D2297A002E9C44 /* SBThreadPlan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBThreadPlan.h; path = include/lldb/API/SBThreadPlan.h; sourceTree = ""; }; - 4C56543819D22FD9002E9C44 /* SBThreadPlan.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBThreadPlan.i; sourceTree = ""; }; - 9A1E59521EB2B0B9002206A5 /* SBTrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTrace.cpp; path = source/API/SBTrace.cpp; sourceTree = ""; }; - 9A1E59581EB2B10D002206A5 /* SBTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBTrace.h; path = include/lldb/API/SBTrace.h; sourceTree = ""; }; - 9A1E59531EB2B0B9002206A5 /* SBTraceOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTraceOptions.cpp; path = source/API/SBTraceOptions.cpp; sourceTree = ""; }; - 9A1E59591EB2B10D002206A5 /* SBTraceOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBTraceOptions.h; path = include/lldb/API/SBTraceOptions.h; sourceTree = ""; }; - 261744771168585B005ADD65 /* SBType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBType.cpp; path = source/API/SBType.cpp; sourceTree = ""; }; - 2617447911685869005ADD65 /* SBType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBType.h; path = include/lldb/API/SBType.h; sourceTree = ""; }; - 2611FF11142D83060017FEA3 /* SBType.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBType.i; sourceTree = ""; }; - 9475C18714E5E9FA001BFC6D /* SBTypeCategory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeCategory.cpp; path = source/API/SBTypeCategory.cpp; sourceTree = ""; }; - 9475C18514E5E9C5001BFC6D /* SBTypeCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeCategory.h; path = include/lldb/API/SBTypeCategory.h; sourceTree = ""; }; - 9475C18A14E5EA1C001BFC6D /* SBTypeCategory.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeCategory.i; sourceTree = ""; }; - 23EFE38A193D1AEC00E54E54 /* SBTypeEnumMember.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeEnumMember.cpp; path = source/API/SBTypeEnumMember.cpp; sourceTree = ""; }; - 23EFE388193D1ABC00E54E54 /* SBTypeEnumMember.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeEnumMember.h; path = include/lldb/API/SBTypeEnumMember.h; sourceTree = ""; }; - 23DCBE991D63E14B0084C36B /* SBTypeEnumMember.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeEnumMember.i; sourceTree = ""; }; - 9461568A14E35621003A195C /* SBTypeFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeFilter.cpp; path = source/API/SBTypeFilter.cpp; sourceTree = ""; }; - 9461568614E355F2003A195C /* SBTypeFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeFilter.h; path = include/lldb/API/SBTypeFilter.h; sourceTree = ""; }; - 9461569214E3567F003A195C /* SBTypeFilter.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeFilter.i; sourceTree = ""; }; - 9461568B14E35621003A195C /* SBTypeFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeFormat.cpp; path = source/API/SBTypeFormat.cpp; sourceTree = ""; }; - 9461568714E355F2003A195C /* SBTypeFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeFormat.h; path = include/lldb/API/SBTypeFormat.h; sourceTree = ""; }; - 9461569314E3567F003A195C /* SBTypeFormat.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeFormat.i; sourceTree = ""; }; - 9475C18D14E5F834001BFC6D /* SBTypeNameSpecifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeNameSpecifier.cpp; path = source/API/SBTypeNameSpecifier.cpp; sourceTree = ""; }; - 9475C18C14E5F826001BFC6D /* SBTypeNameSpecifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeNameSpecifier.h; path = include/lldb/API/SBTypeNameSpecifier.h; sourceTree = ""; }; - 9475C18B14E5F818001BFC6D /* SBTypeNameSpecifier.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeNameSpecifier.i; sourceTree = ""; }; - 9461568C14E35621003A195C /* SBTypeSummary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeSummary.cpp; path = source/API/SBTypeSummary.cpp; sourceTree = ""; }; - 9461568814E355F2003A195C /* SBTypeSummary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeSummary.h; path = include/lldb/API/SBTypeSummary.h; sourceTree = ""; }; - 9461569414E3567F003A195C /* SBTypeSummary.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeSummary.i; sourceTree = ""; }; - 9461568D14E35621003A195C /* SBTypeSynthetic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeSynthetic.cpp; path = source/API/SBTypeSynthetic.cpp; sourceTree = ""; }; - 9461568914E355F2003A195C /* SBTypeSynthetic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeSynthetic.h; path = include/lldb/API/SBTypeSynthetic.h; sourceTree = ""; }; - 9461569514E3567F003A195C /* SBTypeSynthetic.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeSynthetic.i; sourceTree = ""; }; - 23059A0F1958B319007B8189 /* SBUnixSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBUnixSignals.cpp; path = source/API/SBUnixSignals.cpp; sourceTree = ""; }; - 23059A111958B37B007B8189 /* SBUnixSignals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBUnixSignals.h; path = include/lldb/API/SBUnixSignals.h; sourceTree = ""; }; - 23DCBE9A1D63E14B0084C36B /* SBUnixSignals.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBUnixSignals.i; sourceTree = ""; }; - 9A19A6AD1163BB9800E0D453 /* SBValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBValue.cpp; path = source/API/SBValue.cpp; sourceTree = ""; }; - 9A19A6A51163BB7E00E0D453 /* SBValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBValue.h; path = include/lldb/API/SBValue.h; sourceTree = ""; }; - 2611FF12142D83060017FEA3 /* SBValue.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBValue.i; sourceTree = ""; }; - 9A35758D116CFE0F00E8ED2F /* SBValueList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBValueList.cpp; path = source/API/SBValueList.cpp; sourceTree = ""; }; - 9A357582116CFDEE00E8ED2F /* SBValueList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBValueList.h; path = include/lldb/API/SBValueList.h; sourceTree = ""; }; - 2611FF13142D83060017FEA3 /* SBValueList.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBValueList.i; sourceTree = ""; }; - 94235B9B1A8D5FF300EB2EED /* SBVariablesOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBVariablesOptions.cpp; path = source/API/SBVariablesOptions.cpp; sourceTree = ""; }; - 94235B9A1A8D5FD800EB2EED /* SBVariablesOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBVariablesOptions.h; path = include/lldb/API/SBVariablesOptions.h; sourceTree = ""; }; - 94235B9D1A8D601A00EB2EED /* SBVariablesOptions.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBVariablesOptions.i; sourceTree = ""; }; - B2A58723143119D50092BFBA /* SBWatchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBWatchpoint.cpp; path = source/API/SBWatchpoint.cpp; sourceTree = ""; }; - B2A58721143119810092BFBA /* SBWatchpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBWatchpoint.h; path = include/lldb/API/SBWatchpoint.h; sourceTree = ""; }; - B2A5872514313B480092BFBA /* SBWatchpoint.i */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; path = SBWatchpoint.i; sourceTree = ""; }; - 26BC7D7810F1B77400F91463 /* STLUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STLUtils.h; path = include/lldb/Core/STLUtils.h; sourceTree = ""; }; - 26BC7E8D10F1B85900F91463 /* Scalar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Scalar.cpp; path = source/Utility/Scalar.cpp; sourceTree = ""; }; - 26BC7D7410F1B77400F91463 /* Scalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Scalar.h; path = include/lldb/Utility/Scalar.h; sourceTree = ""; }; - 23CB14E91D66CC0E00EDDDE1 /* ScalarTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScalarTest.cpp; sourceTree = ""; }; - 9A82010B10FFB49800182560 /* ScriptInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScriptInterpreter.cpp; path = source/Interpreter/ScriptInterpreter.cpp; sourceTree = ""; }; - 26BC7DE510F1B7F900F91463 /* ScriptInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScriptInterpreter.h; path = include/lldb/Interpreter/ScriptInterpreter.h; sourceTree = ""; }; - 3FBA69DD1B6067020008F44A /* ScriptInterpreterNone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScriptInterpreterNone.cpp; path = ScriptInterpreter/None/ScriptInterpreterNone.cpp; sourceTree = ""; }; - 3FBA69DE1B6067020008F44A /* ScriptInterpreterNone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScriptInterpreterNone.h; path = ScriptInterpreter/None/ScriptInterpreterNone.h; sourceTree = ""; }; - 3FBA69E51B60672A0008F44A /* ScriptInterpreterPython.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScriptInterpreterPython.cpp; path = ScriptInterpreter/Python/ScriptInterpreterPython.cpp; sourceTree = ""; }; - 3FBA69E61B60672A0008F44A /* ScriptInterpreterPython.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScriptInterpreterPython.h; path = ScriptInterpreter/Python/ScriptInterpreterPython.h; sourceTree = ""; }; - 26BC7E1510F1B83100F91463 /* SearchFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchFilter.cpp; path = source/Core/SearchFilter.cpp; sourceTree = ""; }; - 26BC7CF910F1B71400F91463 /* SearchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SearchFilter.h; path = include/lldb/Core/SearchFilter.h; sourceTree = ""; }; - 26BC7E8E10F1B85900F91463 /* Section.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Section.cpp; path = source/Core/Section.cpp; sourceTree = ""; }; - 26BC7D7510F1B77400F91463 /* Section.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Section.h; path = include/lldb/Core/Section.h; sourceTree = ""; }; - 262173A218395D4600C52091 /* SectionLoadHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SectionLoadHistory.cpp; path = source/Target/SectionLoadHistory.cpp; sourceTree = ""; }; - 262173A018395D3800C52091 /* SectionLoadHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SectionLoadHistory.h; path = include/lldb/Target/SectionLoadHistory.h; sourceTree = ""; }; - 2618D7911240116900F2B8FE /* SectionLoadList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SectionLoadList.cpp; path = source/Target/SectionLoadList.cpp; sourceTree = ""; }; - 2618D78F1240115500F2B8FE /* SectionLoadList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SectionLoadList.h; path = include/lldb/Target/SectionLoadList.h; sourceTree = ""; }; - EDB919B414F6F10D008FF64B /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; - 26A3757F1D59462700D6CBDB /* SelectHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SelectHelper.cpp; path = source/Utility/SelectHelper.cpp; sourceTree = ""; }; - 26A375841D59487700D6CBDB /* SelectHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SelectHelper.h; path = include/lldb/Utility/SelectHelper.h; sourceTree = ""; }; - 4C2FAE2E135E3A70001EDE44 /* SharedCluster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedCluster.h; path = include/lldb/Utility/SharedCluster.h; sourceTree = ""; }; - 261B5A5211C3F2AD00AABD0A /* SharingPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharingPtr.cpp; path = source/Utility/SharingPtr.cpp; sourceTree = ""; }; - 261B5A5311C3F2AD00AABD0A /* SharingPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharingPtr.h; path = include/lldb/Utility/SharingPtr.h; sourceTree = ""; }; - 236124A31986B4E2004EFC37 /* Socket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Socket.cpp; sourceTree = ""; }; - 236124A71986B50E004EFC37 /* Socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Socket.h; path = include/lldb/Host/Socket.h; sourceTree = ""; }; - 26D7E45C13D5E30A007FD12B /* SocketAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SocketAddress.cpp; path = source/Host/common/SocketAddress.cpp; sourceTree = ""; }; - 26D7E45B13D5E2F9007FD12B /* SocketAddress.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SocketAddress.h; path = include/lldb/Host/SocketAddress.h; sourceTree = ""; }; - 2321F9391BDD332400BA9A93 /* SocketAddressTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SocketAddressTest.cpp; sourceTree = ""; }; - 2321F93A1BDD332400BA9A93 /* SocketTest.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SocketTest.cpp; sourceTree = ""; }; - 26FCE61B229F00F000D125BD /* SocketTestUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SocketTestUtilities.cpp; sourceTree = ""; }; - 26603870211CA90D00329572 /* SourceBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourceBreakpoint.cpp; path = "tools/lldb-vscode/SourceBreakpoint.cpp"; sourceTree = ""; }; - 2660386D211CA90C00329572 /* SourceBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceBreakpoint.h; path = "tools/lldb-vscode/SourceBreakpoint.h"; sourceTree = ""; }; - 26BC7E8F10F1B85900F91463 /* SourceManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourceManager.cpp; path = source/Core/SourceManager.cpp; sourceTree = ""; }; - 26BC7D7610F1B77400F91463 /* SourceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceManager.h; path = include/lldb/Core/SourceManager.h; sourceTree = ""; }; - 26F76198211CB8870044F6EA /* SourceReference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceReference.h; path = "tools/lldb-vscode/SourceReference.h"; sourceTree = ""; }; - 26BC7F3810F1B90C00F91463 /* StackFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StackFrame.cpp; path = source/Target/StackFrame.cpp; sourceTree = ""; }; - 26BC7DF510F1B81A00F91463 /* StackFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StackFrame.h; path = include/lldb/Target/StackFrame.h; sourceTree = ""; }; - 26BC7F3910F1B90C00F91463 /* StackFrameList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StackFrameList.cpp; path = source/Target/StackFrameList.cpp; sourceTree = ""; }; - 26BC7DF610F1B81A00F91463 /* StackFrameList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StackFrameList.h; path = include/lldb/Target/StackFrameList.h; sourceTree = ""; }; - 8CF46A6120522A9000423DDF /* StackFrameRecognizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = StackFrameRecognizer.cpp; path = source/Target/StackFrameRecognizer.cpp; sourceTree = ""; }; - 8CFDB67920467B390052B399 /* StackFrameRecognizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StackFrameRecognizer.h; path = include/lldb/Target/StackFrameRecognizer.h; sourceTree = ""; }; - 26BC7F3A10F1B90C00F91463 /* StackID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StackID.cpp; path = source/Target/StackID.cpp; sourceTree = ""; }; - 26BC7DF710F1B81A00F91463 /* StackID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StackID.h; path = include/lldb/Target/StackID.h; sourceTree = ""; }; - 26BC7E9010F1B85900F91463 /* State.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = State.cpp; path = source/Utility/State.cpp; sourceTree = ""; }; - 26BC7D7710F1B77400F91463 /* State.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = State.h; path = include/lldb/Utility/State.h; sourceTree = ""; }; - 9A3D43E21F3237D500EB767C /* StateTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StateTest.cpp; sourceTree = ""; }; - 492DB7E81EC662D100B9E9AF /* Status.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Status.cpp; path = source/Utility/Status.cpp; sourceTree = ""; }; - 492DB7E61EC662B100B9E9AF /* Status.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Status.h; path = include/lldb/Utility/Status.h; sourceTree = ""; }; - 9A3D43C61F3150D200EB767C /* StatusTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StatusTest.cpp; sourceTree = ""; }; - 2615DB861208A9E40021781D /* StopInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StopInfo.cpp; path = source/Target/StopInfo.cpp; sourceTree = ""; }; - 2615DB841208A9C90021781D /* StopInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StopInfo.h; path = include/lldb/Target/StopInfo.h; sourceTree = ""; }; - 2615DBC81208B5FC0021781D /* StopInfoMachException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StopInfoMachException.cpp; path = Utility/StopInfoMachException.cpp; sourceTree = ""; }; - 2615DBC91208B5FC0021781D /* StopInfoMachException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StopInfoMachException.h; path = Utility/StopInfoMachException.h; sourceTree = ""; }; - 26BC7E1610F1B83100F91463 /* Stoppoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Stoppoint.cpp; path = source/Breakpoint/Stoppoint.cpp; sourceTree = ""; }; - 26BC7CFA10F1B71400F91463 /* Stoppoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Stoppoint.h; path = include/lldb/Breakpoint/Stoppoint.h; sourceTree = ""; }; - 26BC7E0910F1B83100F91463 /* StoppointCallbackContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StoppointCallbackContext.cpp; path = source/Breakpoint/StoppointCallbackContext.cpp; sourceTree = ""; }; - 26BC7CED10F1B71400F91463 /* StoppointCallbackContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StoppointCallbackContext.h; path = include/lldb/Breakpoint/StoppointCallbackContext.h; sourceTree = ""; }; - 26BC7E1710F1B83100F91463 /* StoppointLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StoppointLocation.cpp; path = source/Breakpoint/StoppointLocation.cpp; sourceTree = ""; }; - 26BC7CFB10F1B71400F91463 /* StoppointLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StoppointLocation.h; path = include/lldb/Breakpoint/StoppointLocation.h; sourceTree = ""; }; - 26764C9D1E48F51E008D3573 /* Stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Stream.cpp; path = source/Utility/Stream.cpp; sourceTree = ""; }; - 26764C9B1E48F50C008D3573 /* Stream.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Stream.h; path = include/lldb/Utility/Stream.h; sourceTree = ""; }; - 9A4F350F1368A51A00823F52 /* StreamAsynchronousIO.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StreamAsynchronousIO.cpp; path = source/Core/StreamAsynchronousIO.cpp; sourceTree = ""; }; - 9A4F35111368A54100823F52 /* StreamAsynchronousIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StreamAsynchronousIO.h; path = include/lldb/Core/StreamAsynchronousIO.h; sourceTree = ""; }; - 2623096E13D0EFFB006381D9 /* StreamBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StreamBuffer.h; path = include/lldb/Core/StreamBuffer.h; sourceTree = ""; }; - AFC2DCF51E6E316A00283714 /* StreamCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StreamCallback.cpp; path = source/Utility/StreamCallback.cpp; sourceTree = ""; }; - AFC2DCF71E6E316F00283714 /* StreamCallback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StreamCallback.h; path = include/lldb/Utility/StreamCallback.h; sourceTree = ""; }; - 9A3D43E11F3237D500EB767C /* StreamCallbackTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StreamCallbackTest.cpp; sourceTree = ""; }; - 26BC7E9210F1B85900F91463 /* StreamFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StreamFile.cpp; path = source/Core/StreamFile.cpp; sourceTree = ""; }; - 26BC7D7A10F1B77400F91463 /* StreamFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StreamFile.h; path = include/lldb/Core/StreamFile.h; sourceTree = ""; }; - AFC2DCF81E6E318000283714 /* StreamGDBRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StreamGDBRemote.cpp; path = source/Utility/StreamGDBRemote.cpp; sourceTree = ""; }; - AFC2DCFA1E6E318600283714 /* StreamGDBRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StreamGDBRemote.h; path = include/lldb/Utility/StreamGDBRemote.h; sourceTree = ""; }; - 26764CA11E48F547008D3573 /* StreamString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StreamString.cpp; path = source/Utility/StreamString.cpp; sourceTree = ""; }; - 26764CA31E48F550008D3573 /* StreamString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StreamString.h; path = include/lldb/Utility/StreamString.h; sourceTree = ""; }; - 26764CA41E48F566008D3573 /* StreamTee.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StreamTee.h; path = include/lldb/Utility/StreamTee.h; sourceTree = ""; }; - 58EAC73D2106A0740029571E /* StreamTeeTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StreamTeeTest.cpp; sourceTree = ""; }; - 4C639EBF21FA684700A7B957 /* StreamTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StreamTest.cpp; sourceTree = ""; }; - 33E5E8411A672A240024ED68 /* StringConvert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringConvert.cpp; sourceTree = ""; }; - 33E5E8451A6736D30024ED68 /* StringConvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringConvert.h; path = include/lldb/Host/StringConvert.h; sourceTree = SOURCE_ROOT; }; - 2660D9F611922A1300958FBD /* StringExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringExtractor.cpp; path = source/Utility/StringExtractor.cpp; sourceTree = ""; }; - 26A375831D59486000D6CBDB /* StringExtractor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StringExtractor.h; path = include/lldb/Utility/StringExtractor.h; sourceTree = ""; }; - 2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringExtractorGDBRemote.cpp; path = source/Utility/StringExtractorGDBRemote.cpp; sourceTree = ""; }; - 2676A094119C93C8008A98EF /* StringExtractorGDBRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringExtractorGDBRemote.h; path = include/lldb/Utility/StringExtractorGDBRemote.h; sourceTree = ""; }; - 2321F9441BDD346100BA9A93 /* StringExtractorTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringExtractorTest.cpp; sourceTree = ""; }; - 94380B8119940B0A00BFE4A8 /* StringLexer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringLexer.cpp; path = source/Utility/StringLexer.cpp; sourceTree = ""; }; - 94380B8019940B0300BFE4A8 /* StringLexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StringLexer.h; path = include/lldb/Utility/StringLexer.h; sourceTree = ""; }; - 4C639EC621FA684800A7B957 /* StringLexerTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringLexerTest.cpp; sourceTree = ""; }; - 9A35765F116E76B900E8ED2F /* StringList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringList.cpp; path = source/Utility/StringList.cpp; sourceTree = ""; }; - 9A35765E116E76A700E8ED2F /* StringList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringList.h; path = include/lldb/Utility/StringList.h; sourceTree = ""; }; - 4C639EBE21FA684600A7B957 /* StringListTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringListTest.cpp; sourceTree = ""; }; - 94F48F241A01C687005C0EC6 /* StringPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringPrinter.cpp; path = source/DataFormatters/StringPrinter.cpp; sourceTree = ""; }; - 94F48F231A01C679005C0EC6 /* StringPrinter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StringPrinter.h; path = include/lldb/DataFormatters/StringPrinter.h; sourceTree = ""; }; - 9A3D43DF1F31521200EB767C /* StructuredData-basic.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "StructuredData-basic.json"; sourceTree = ""; }; - AFEC3361194A8ABA00FF05C6 /* StructuredData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StructuredData.cpp; path = source/Utility/StructuredData.cpp; sourceTree = ""; }; - 26F2F8FD1B156678007857DE /* StructuredData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StructuredData.h; path = include/lldb/Utility/StructuredData.h; sourceTree = ""; }; - 238F2BA61D2C85FA001FF92A /* StructuredDataDarwinLog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructuredDataDarwinLog.cpp; sourceTree = ""; }; - 238F2BA71D2C85FA001FF92A /* StructuredDataDarwinLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructuredDataDarwinLog.h; sourceTree = ""; }; - 238F2B9D1D2C82D0001FF92A /* StructuredDataPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StructuredDataPlugin.cpp; path = source/Target/StructuredDataPlugin.cpp; sourceTree = ""; }; - 238F2B9F1D2C835A001FF92A /* StructuredDataPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StructuredDataPlugin.h; path = include/lldb/Target/StructuredDataPlugin.h; sourceTree = ""; }; - 9A3D43CA1F3150D200EB767C /* StructuredDataTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StructuredDataTest.cpp; sourceTree = ""; }; - 9A20573D1F3B8EA200F6C293 /* SupportTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SupportTest.cpp; path = linux/SupportTest.cpp; sourceTree = ""; }; - 26BC7F1B10F1B8EC00F91463 /* Symbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Symbol.cpp; path = source/Symbol/Symbol.cpp; sourceTree = ""; }; - 26BC7C5F10F1B6E900F91463 /* Symbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Symbol.h; path = include/lldb/Symbol/Symbol.h; sourceTree = ""; }; - 26BC7F1C10F1B8EC00F91463 /* SymbolContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolContext.cpp; path = source/Symbol/SymbolContext.cpp; sourceTree = ""; }; - 26BC7C6010F1B6E900F91463 /* SymbolContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SymbolContext.h; path = include/lldb/Symbol/SymbolContext.h; sourceTree = ""; }; - 26BC7C6110F1B6E900F91463 /* SymbolContextScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SymbolContextScope.h; path = include/lldb/Symbol/SymbolContextScope.h; sourceTree = ""; }; - 26BC7F1D10F1B8EC00F91463 /* SymbolFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolFile.cpp; path = source/Symbol/SymbolFile.cpp; sourceTree = ""; }; - 26BC7C6210F1B6E900F91463 /* SymbolFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SymbolFile.h; path = include/lldb/Symbol/SymbolFile.h; sourceTree = ""; }; - AF97744621E9947B006876A7 /* SymbolFileBreakpad.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolFileBreakpad.cpp; path = source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.cpp; sourceTree = SOURCE_ROOT; }; - AF97744521E9947B006876A7 /* SymbolFileBreakpad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SymbolFileBreakpad.h; path = source/Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.h; sourceTree = SOURCE_ROOT; }; - 260C89D910F57C5600BB2B04 /* SymbolFileDWARF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARF.cpp; sourceTree = ""; }; - 260C89DA10F57C5600BB2B04 /* SymbolFileDWARF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARF.h; sourceTree = ""; }; - 260C89DB10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARFDebugMap.cpp; sourceTree = ""; }; - 260C89DC10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARFDebugMap.h; sourceTree = ""; }; - 6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARFDwo.cpp; sourceTree = ""; }; - 6D95DC041B9DC06F000E318A /* SymbolFileDWARFDwo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARFDwo.h; sourceTree = ""; }; - 4C7D481F1F509964005314B4 /* SymbolFileDWARFDwoDwp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARFDwoDwp.cpp; sourceTree = ""; }; - 4C7D481D1F509964005314B4 /* SymbolFileDWARFDwoDwp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARFDwoDwp.h; sourceTree = ""; }; - 4C7D481C1F509963005314B4 /* SymbolFileDWARFDwp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARFDwp.cpp; sourceTree = ""; }; - 4C7D481E1F509964005314B4 /* SymbolFileDWARFDwp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARFDwp.h; sourceTree = ""; }; - 9A20570A1F3B81F300F6C293 /* SymbolFileDWARFTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolFileDWARFTests.cpp; path = DWARF/SymbolFileDWARFTests.cpp; sourceTree = ""; }; - AFD966B7217140B6006714AC /* SymbolFileNativePDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolFileNativePDB.cpp; path = source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp; sourceTree = SOURCE_ROOT; }; - AFD966C0217140C8006714AC /* SymbolFileNativePDB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SymbolFileNativePDB.h; path = source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h; sourceTree = SOURCE_ROOT; }; - AF6335E01C87B21E00F7D554 /* SymbolFilePDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolFilePDB.cpp; path = PDB/SymbolFilePDB.cpp; sourceTree = ""; }; - AF6335E11C87B21E00F7D554 /* SymbolFilePDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SymbolFilePDB.h; path = PDB/SymbolFilePDB.h; sourceTree = ""; }; - 23CB15141D66CF8700EDDDE1 /* SymbolFilePDBTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFilePDBTests.cpp; sourceTree = ""; }; - 260C89DE10F57C5600BB2B04 /* SymbolFileSymtab.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileSymtab.cpp; sourceTree = ""; }; - 260C89DF10F57C5600BB2B04 /* SymbolFileSymtab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileSymtab.h; sourceTree = ""; }; - AF94005711C03F6500085DB9 /* SymbolVendor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SymbolVendor.cpp; path = source/Symbol/SymbolVendor.cpp; sourceTree = ""; }; - 26BC7C6310F1B6E900F91463 /* SymbolVendor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SymbolVendor.h; path = include/lldb/Symbol/SymbolVendor.h; sourceTree = ""; }; - 2635879017822E56004C30BA /* SymbolVendorELF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolVendorELF.cpp; sourceTree = ""; }; - 2635879117822E56004C30BA /* SymbolVendorELF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolVendorELF.h; sourceTree = ""; }; - 260C89E210F57C5600BB2B04 /* SymbolVendorMacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolVendorMacOSX.cpp; sourceTree = ""; }; - 260C89E310F57C5600BB2B04 /* SymbolVendorMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolVendorMacOSX.h; sourceTree = ""; }; - 2689B0A4113EE3CD00A4AEDB /* Symbols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Symbols.h; path = include/lldb/Host/Symbols.h; sourceTree = ""; }; - 26BC7F1F10F1B8EC00F91463 /* Symtab.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Symtab.cpp; path = source/Symbol/Symtab.cpp; sourceTree = ""; }; - 26BC7C6410F1B6E900F91463 /* Symtab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Symtab.h; path = include/lldb/Symbol/Symtab.h; sourceTree = ""; }; - 3F81692E1ABB7A6D001DA9DF /* SystemInitializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemInitializer.cpp; path = source/Initialization/SystemInitializer.cpp; sourceTree = ""; }; - 3F8169341ABB7A80001DA9DF /* SystemInitializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SystemInitializer.h; path = include/lldb/Initialization/SystemInitializer.h; sourceTree = ""; }; - 3F81692F1ABB7A6D001DA9DF /* SystemInitializerCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemInitializerCommon.cpp; path = source/Initialization/SystemInitializerCommon.cpp; sourceTree = ""; }; - 3F8169351ABB7A80001DA9DF /* SystemInitializerCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SystemInitializerCommon.h; path = include/lldb/Initialization/SystemInitializerCommon.h; sourceTree = ""; }; - 3F81692A1ABB7A16001DA9DF /* SystemInitializerFull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemInitializerFull.cpp; path = source/API/SystemInitializerFull.cpp; sourceTree = ""; }; - CDC75CF920B8D1DF002209BC /* SystemInitializerFull.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SystemInitializerFull.h; path = source/API/SystemInitializerFull.h; sourceTree = ""; }; - 4CD44D2020B725DA0003557C /* SystemInitializerLLGS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemInitializerLLGS.cpp; path = "tools/lldb-server/SystemInitializerLLGS.cpp"; sourceTree = ""; }; - 4CD44D2320B725F60003557C /* SystemInitializerLLGS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SystemInitializerLLGS.h; path = "tools/lldb-server/SystemInitializerLLGS.h"; sourceTree = ""; }; - 3F8169301ABB7A6D001DA9DF /* SystemLifetimeManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemLifetimeManager.cpp; path = source/Initialization/SystemLifetimeManager.cpp; sourceTree = ""; }; - 3F8169361ABB7A80001DA9DF /* SystemLifetimeManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SystemLifetimeManager.h; path = include/lldb/Initialization/SystemLifetimeManager.h; sourceTree = ""; }; - AF81DEF91828A23F0042CF19 /* SystemRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemRuntime.cpp; path = source/Target/SystemRuntime.cpp; sourceTree = ""; }; - 238F2BA01D2C835A001FF92A /* SystemRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SystemRuntime.h; path = include/lldb/Target/SystemRuntime.h; sourceTree = ""; }; - AF9B8F31182DB52900DA866F /* SystemRuntimeMacOSX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SystemRuntimeMacOSX.cpp; sourceTree = ""; }; - AF9B8F32182DB52900DA866F /* SystemRuntimeMacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemRuntimeMacOSX.h; sourceTree = ""; }; - 2579065A1BD0488100178368 /* TCPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TCPSocket.cpp; sourceTree = ""; }; - 8C26C4241C3EA4340031DF7C /* TSanRuntime.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TSanRuntime.cpp; path = TSan/TSanRuntime.cpp; sourceTree = ""; }; - 8C26C4251C3EA4340031DF7C /* TSanRuntime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TSanRuntime.h; path = TSan/TSanRuntime.h; sourceTree = ""; }; - 49BB309511F79450001A4197 /* TaggedASTType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TaggedASTType.h; path = include/lldb/Symbol/TaggedASTType.h; sourceTree = ""; }; - 26BC7F3B10F1B90C00F91463 /* Target.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Target.cpp; path = source/Target/Target.cpp; sourceTree = ""; }; - 26BC7DF810F1B81A00F91463 /* Target.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Target.h; path = include/lldb/Target/Target.h; sourceTree = ""; }; - 26BC7F3C10F1B90C00F91463 /* TargetList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TargetList.cpp; path = source/Target/TargetList.cpp; sourceTree = ""; }; - 26BC7DF910F1B81A00F91463 /* TargetList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TargetList.h; path = include/lldb/Target/TargetList.h; sourceTree = ""; }; - 6DEC6F381BD66D750091ABA6 /* TaskPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TaskPool.cpp; path = source/Host/common/TaskPool.cpp; sourceTree = ""; }; - 6DEC6F3A1BD66D950091ABA6 /* TaskPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TaskPool.h; path = include/lldb/Host/TaskPool.h; sourceTree = ""; }; - 2321F9451BDD346100BA9A93 /* TaskPoolTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TaskPoolTest.cpp; sourceTree = ""; }; - 268DA873130095ED00C9483A /* Terminal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Terminal.cpp; sourceTree = ""; }; - 268DA871130095D000C9483A /* Terminal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Terminal.h; path = include/lldb/Host/Terminal.h; sourceTree = ""; }; - AFEABBF62230BF840097046F /* TestArm64Disassembly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestArm64Disassembly.cpp; path = unittests/Disassembler/TestArm64Disassembly.cpp; sourceTree = SOURCE_ROOT; }; - 4CEC86A3204738C5009B37B1 /* TestArm64InstEmulation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestArm64InstEmulation.cpp; path = UnwindAssembly/ARM64/TestArm64InstEmulation.cpp; sourceTree = ""; }; - AF7F97662141FA3800795BC0 /* TestArmv7Disassembly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestArmv7Disassembly.cpp; path = unittests/Disassembler/TestArmv7Disassembly.cpp; sourceTree = SOURCE_ROOT; }; - 23CB150C1D66CF5600EDDDE1 /* TestClangASTContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestClangASTContext.cpp; sourceTree = ""; }; - 9A20572B1F3B8E6200F6C293 /* TestCompletion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestCompletion.cpp; sourceTree = ""; }; - 9A2057131F3B860D00F6C293 /* TestDWARFCallFrameInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestDWARFCallFrameInfo.cpp; sourceTree = ""; }; - 23CB15051D66CDB400EDDDE1 /* TestModule.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TestModule.c; sourceTree = ""; }; - 23CB15061D66CDB400EDDDE1 /* TestModule.so */ = {isa = PBXFileReference; lastKnownFileType = file; path = TestModule.so; sourceTree = ""; }; - 9A2057251F3B8DD200F6C293 /* TestObjectFileELF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestObjectFileELF.cpp; path = ObjectFile/ELF/TestObjectFileELF.cpp; sourceTree = ""; }; - 4C719398207D23E300FDF430 /* TestOptionArgParser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestOptionArgParser.cpp; sourceTree = ""; }; - 4CEC86A6204738EA009B37B1 /* TestPPC64InstEmulation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestPPC64InstEmulation.cpp; path = UnwindAssembly/PPC64/TestPPC64InstEmulation.cpp; sourceTree = ""; }; - 9A2057141F3B860D00F6C293 /* TestType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestType.cpp; sourceTree = ""; }; - 9A1890341F47D5D400394BCA /* TestUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestUtilities.cpp; path = TestingSupport/TestUtilities.cpp; sourceTree = ""; }; - 9A1890351F47D5D400394BCA /* TestUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUtilities.h; path = TestingSupport/TestUtilities.h; sourceTree = ""; }; - AFEC5FD51D94F9380076A480 /* Testx86AssemblyInspectionEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Testx86AssemblyInspectionEngine.cpp; path = UnwindAssembly/x86/Testx86AssemblyInspectionEngine.cpp; sourceTree = ""; }; - 26BC7F3D10F1B90C00F91463 /* Thread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Thread.cpp; path = source/Target/Thread.cpp; sourceTree = ""; }; - 26BC7DFA10F1B81A00F91463 /* Thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Thread.h; path = include/lldb/Target/Thread.h; sourceTree = ""; }; - 8CCB017A19BA283D0009FD44 /* ThreadCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadCollection.cpp; path = source/Target/ThreadCollection.cpp; sourceTree = ""; }; - 8CCB017C19BA289B0009FD44 /* ThreadCollection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadCollection.h; path = include/lldb/Target/ThreadCollection.h; sourceTree = ""; }; - 26BC17A818C7F4CB00D2196D /* ThreadElfCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadElfCore.cpp; sourceTree = ""; }; - 26BC17A918C7F4CB00D2196D /* ThreadElfCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadElfCore.h; sourceTree = ""; }; - 2618EE631315B29C001D6D71 /* ThreadGDBRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadGDBRemote.cpp; sourceTree = ""; }; - 2618EE641315B29C001D6D71 /* ThreadGDBRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadGDBRemote.h; sourceTree = ""; }; - 2628A4D313D4977900F5487A /* ThreadKDP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadKDP.cpp; sourceTree = ""; }; - 2628A4D413D4977900F5487A /* ThreadKDP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadKDP.h; sourceTree = ""; }; - 3FDFED2619BA6D96009756A7 /* ThreadLauncher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadLauncher.cpp; sourceTree = ""; }; - 3FDFED2319BA6D55009756A7 /* ThreadLauncher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadLauncher.h; path = include/lldb/Host/ThreadLauncher.h; sourceTree = ""; }; - 26BC7F3E10F1B90C00F91463 /* ThreadList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadList.cpp; path = source/Target/ThreadList.cpp; sourceTree = ""; }; - 26BC7DFB10F1B81A00F91463 /* ThreadList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadList.h; path = include/lldb/Target/ThreadList.h; sourceTree = ""; }; - 26A527BF14E24F5F00F3A14A /* ThreadMachCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadMachCore.cpp; sourceTree = ""; }; - 26A527C014E24F5F00F3A14A /* ThreadMachCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadMachCore.h; sourceTree = ""; }; - 26F4A21A13FBA31A0064B613 /* ThreadMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadMemory.cpp; path = Utility/ThreadMemory.cpp; sourceTree = ""; }; - 26F4A21B13FBA31A0064B613 /* ThreadMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadMemory.h; path = Utility/ThreadMemory.h; sourceTree = ""; }; - 947CF7751DC7B20D00EF980B /* ThreadMinidump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadMinidump.cpp; sourceTree = ""; }; - 947CF7731DC7B20300EF980B /* ThreadMinidump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThreadMinidump.h; sourceTree = ""; }; - 26BC7F3F10F1B90C00F91463 /* ThreadPlan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlan.cpp; path = source/Target/ThreadPlan.cpp; sourceTree = ""; }; - 26BC7DFC10F1B81A00F91463 /* ThreadPlan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlan.h; path = include/lldb/Target/ThreadPlan.h; sourceTree = ""; }; - 260C847110F50EFC00BB2B04 /* ThreadPlanBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanBase.cpp; path = source/Target/ThreadPlanBase.cpp; sourceTree = ""; }; - 260C847F10F50F0A00BB2B04 /* ThreadPlanBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanBase.h; path = include/lldb/Target/ThreadPlanBase.h; sourceTree = ""; }; - 49EC3E98118F90AC00B1265E /* ThreadPlanCallFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanCallFunction.cpp; path = source/Target/ThreadPlanCallFunction.cpp; sourceTree = ""; }; - 49EC3E9C118F90D400B1265E /* ThreadPlanCallFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanCallFunction.h; path = include/lldb/Target/ThreadPlanCallFunction.h; sourceTree = ""; }; - EB8375E61B553DE800BA907D /* ThreadPlanCallFunctionUsingABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanCallFunctionUsingABI.cpp; path = source/Target/ThreadPlanCallFunctionUsingABI.cpp; sourceTree = ""; }; - EB8375E81B553DFE00BA907D /* ThreadPlanCallFunctionUsingABI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadPlanCallFunctionUsingABI.h; path = include/lldb/Target/ThreadPlanCallFunctionUsingABI.h; sourceTree = ""; }; - 230EC4581D63C3A7008DF59F /* ThreadPlanCallOnFunctionExit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanCallOnFunctionExit.cpp; path = source/Target/ThreadPlanCallOnFunctionExit.cpp; sourceTree = ""; }; - 4C7CF7E51295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanCallUserExpression.cpp; path = source/Target/ThreadPlanCallUserExpression.cpp; sourceTree = ""; }; - 4C7CF7E31295E10E00B4FBB5 /* ThreadPlanCallUserExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanCallUserExpression.h; path = include/lldb/Target/ThreadPlanCallUserExpression.h; sourceTree = ""; }; - 4C56543019D1EFAA002E9C44 /* ThreadPlanPython.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanPython.cpp; path = source/Target/ThreadPlanPython.cpp; sourceTree = ""; }; - 4C56543219D1EFB5002E9C44 /* ThreadPlanPython.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanPython.h; path = include/lldb/Target/ThreadPlanPython.h; sourceTree = ""; }; - 4CAFCE031101218900CA63DB /* ThreadPlanRunToAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanRunToAddress.cpp; path = source/Target/ThreadPlanRunToAddress.cpp; sourceTree = ""; }; - 4CAFCE001101216B00CA63DB /* ThreadPlanRunToAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanRunToAddress.h; path = include/lldb/Target/ThreadPlanRunToAddress.h; sourceTree = ""; }; - 4C43DEFA110641F300E55CBF /* ThreadPlanShouldStopHere.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanShouldStopHere.cpp; path = source/Target/ThreadPlanShouldStopHere.cpp; sourceTree = ""; }; - 4C43DEF9110641F300E55CBF /* ThreadPlanShouldStopHere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanShouldStopHere.h; path = include/lldb/Target/ThreadPlanShouldStopHere.h; sourceTree = ""; }; - 4C43DF8911069C3200E55CBF /* ThreadPlanStepInRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepInRange.cpp; path = source/Target/ThreadPlanStepInRange.cpp; sourceTree = ""; }; - 4C43DF8511069BFD00E55CBF /* ThreadPlanStepInRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepInRange.h; path = include/lldb/Target/ThreadPlanStepInRange.h; sourceTree = ""; }; - 260C847210F50EFC00BB2B04 /* ThreadPlanStepInstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepInstruction.cpp; path = source/Target/ThreadPlanStepInstruction.cpp; sourceTree = ""; }; - 260C848010F50F0A00BB2B04 /* ThreadPlanStepInstruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepInstruction.h; path = include/lldb/Target/ThreadPlanStepInstruction.h; sourceTree = ""; }; - 260C847310F50EFC00BB2B04 /* ThreadPlanStepOut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepOut.cpp; path = source/Target/ThreadPlanStepOut.cpp; sourceTree = ""; }; - 260C848110F50F0A00BB2B04 /* ThreadPlanStepOut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepOut.h; path = include/lldb/Target/ThreadPlanStepOut.h; sourceTree = ""; }; - 260C847410F50EFC00BB2B04 /* ThreadPlanStepOverBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepOverBreakpoint.cpp; path = source/Target/ThreadPlanStepOverBreakpoint.cpp; sourceTree = ""; }; - 260C848210F50F0A00BB2B04 /* ThreadPlanStepOverBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepOverBreakpoint.h; path = include/lldb/Target/ThreadPlanStepOverBreakpoint.h; sourceTree = ""; }; - 4C43DF8A11069C3200E55CBF /* ThreadPlanStepOverRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepOverRange.cpp; path = source/Target/ThreadPlanStepOverRange.cpp; sourceTree = ""; }; - 4C43DF8611069BFD00E55CBF /* ThreadPlanStepOverRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepOverRange.h; path = include/lldb/Target/ThreadPlanStepOverRange.h; sourceTree = ""; }; - 260C847610F50EFC00BB2B04 /* ThreadPlanStepRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepRange.cpp; path = source/Target/ThreadPlanStepRange.cpp; sourceTree = ""; }; - 260C848410F50F0A00BB2B04 /* ThreadPlanStepRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepRange.h; path = include/lldb/Target/ThreadPlanStepRange.h; sourceTree = ""; }; - 260C847510F50EFC00BB2B04 /* ThreadPlanStepThrough.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepThrough.cpp; path = source/Target/ThreadPlanStepThrough.cpp; sourceTree = ""; }; - 260C848310F50F0A00BB2B04 /* ThreadPlanStepThrough.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepThrough.h; path = include/lldb/Target/ThreadPlanStepThrough.h; sourceTree = ""; }; - 2660D9FE11922A7F00958FBD /* ThreadPlanStepUntil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanStepUntil.cpp; path = source/Target/ThreadPlanStepUntil.cpp; sourceTree = ""; }; - 4CEDAED311754F5E00E875A6 /* ThreadPlanStepUntil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanStepUntil.h; path = include/lldb/Target/ThreadPlanStepUntil.h; sourceTree = ""; }; - 4CC2A148128C73ED001531C4 /* ThreadPlanTracer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanTracer.cpp; path = source/Target/ThreadPlanTracer.cpp; sourceTree = ""; }; - 4CC2A14C128C7409001531C4 /* ThreadPlanTracer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanTracer.h; path = include/lldb/Target/ThreadPlanTracer.h; sourceTree = ""; }; - 94ED54A119C8A822007BE2EA /* ThreadSafeDenseMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadSafeDenseMap.h; path = include/lldb/Core/ThreadSafeDenseMap.h; sourceTree = ""; }; - 9449B8031B30E0690019342B /* ThreadSafeDenseSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadSafeDenseSet.h; path = include/lldb/Core/ThreadSafeDenseSet.h; sourceTree = ""; }; - 263FEDA5112CC1DA00E4C208 /* ThreadSafeSTLMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadSafeSTLMap.h; path = include/lldb/Core/ThreadSafeSTLMap.h; sourceTree = ""; }; - 940B01FE1D2D82220058795E /* ThreadSafeSTLVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ThreadSafeSTLVector.h; path = include/lldb/Core/ThreadSafeSTLVector.h; sourceTree = ""; }; - 26B167A41123BF5500DC7B4F /* ThreadSafeValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadSafeValue.h; path = include/lldb/Core/ThreadSafeValue.h; sourceTree = ""; }; - 4C08CDE711C81EF8001610A8 /* ThreadSpec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadSpec.cpp; path = source/Target/ThreadSpec.cpp; sourceTree = ""; }; - 4C08CDEB11C81F1E001610A8 /* ThreadSpec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadSpec.h; path = include/lldb/Target/ThreadSpec.h; sourceTree = ""; }; - AFF8FF0B1E779D4B003830EF /* TildeExpressionResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TildeExpressionResolver.cpp; path = source/Utility/TildeExpressionResolver.cpp; sourceTree = ""; }; - AFF8FF0D1E779D51003830EF /* TildeExpressionResolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TildeExpressionResolver.h; path = include/lldb/Utility/TildeExpressionResolver.h; sourceTree = ""; }; - 9A3D43C91F3150D200EB767C /* TildeExpressionResolverTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TildeExpressionResolverTest.cpp; sourceTree = ""; }; - 9A3D43CC1F3150D200EB767C /* TimeoutTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimeoutTest.cpp; sourceTree = ""; }; - 26BC7E9610F1B85900F91463 /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Timer.cpp; path = source/Utility/Timer.cpp; sourceTree = ""; }; - 26BC7D7E10F1B77400F91463 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Timer.h; path = include/lldb/Utility/Timer.h; sourceTree = ""; }; - 9A3D43C51F3150D200EB767C /* TimerTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimerTest.cpp; sourceTree = ""; }; - 26BC7F2010F1B8EC00F91463 /* Type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Type.cpp; path = source/Symbol/Type.cpp; sourceTree = ""; }; - 26BC7C6510F1B6E900F91463 /* Type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Type.h; path = include/lldb/Symbol/Type.h; sourceTree = ""; }; - 94CB256416B096F10059775D /* TypeCategory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeCategory.cpp; path = source/DataFormatters/TypeCategory.cpp; sourceTree = ""; }; - 94CB256816B096F90059775D /* TypeCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeCategory.h; path = include/lldb/DataFormatters/TypeCategory.h; sourceTree = ""; }; - 94CB256516B096F10059775D /* TypeCategoryMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeCategoryMap.cpp; path = source/DataFormatters/TypeCategoryMap.cpp; sourceTree = ""; }; - 94CB256916B096FA0059775D /* TypeCategoryMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeCategoryMap.h; path = include/lldb/DataFormatters/TypeCategoryMap.h; sourceTree = ""; }; - 94CB256D16B0A4260059775D /* TypeFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeFormat.cpp; path = source/DataFormatters/TypeFormat.cpp; sourceTree = ""; }; - 94CB256A16B0A4030059775D /* TypeFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeFormat.h; path = include/lldb/DataFormatters/TypeFormat.h; sourceTree = ""; }; - 26BC7F2110F1B8EC00F91463 /* TypeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeList.cpp; path = source/Symbol/TypeList.cpp; sourceTree = ""; }; - 26BC7C6610F1B6E900F91463 /* TypeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeList.h; path = include/lldb/Symbol/TypeList.h; sourceTree = ""; }; - 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeMap.cpp; path = source/Symbol/TypeMap.cpp; sourceTree = ""; }; - 6D9AB3DE1BB2B76B003F2289 /* TypeMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeMap.h; path = include/lldb/Symbol/TypeMap.h; sourceTree = ""; }; - 94CB256E16B0A4260059775D /* TypeSummary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeSummary.cpp; path = source/DataFormatters/TypeSummary.cpp; sourceTree = ""; }; - 94CB256B16B0A4030059775D /* TypeSummary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeSummary.h; path = include/lldb/DataFormatters/TypeSummary.h; sourceTree = ""; }; - 94CB256F16B0A4270059775D /* TypeSynthetic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeSynthetic.cpp; path = source/DataFormatters/TypeSynthetic.cpp; sourceTree = ""; }; - 94CB256C16B0A4040059775D /* TypeSynthetic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeSynthetic.h; path = include/lldb/DataFormatters/TypeSynthetic.h; sourceTree = ""; }; - AEEA34041AC88A7400AB639D /* TypeSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeSystem.cpp; path = source/Symbol/TypeSystem.cpp; sourceTree = ""; }; - AEEA33F61AC74FE700AB639D /* TypeSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeSystem.h; path = include/lldb/Symbol/TypeSystem.h; sourceTree = ""; }; - 94CD131919BA33B400DB7BED /* TypeValidator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeValidator.cpp; path = source/DataFormatters/TypeValidator.cpp; sourceTree = ""; }; - 94CD131819BA33A100DB7BED /* TypeValidator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeValidator.h; path = include/lldb/DataFormatters/TypeValidator.h; sourceTree = ""; }; - 54067BEC1DF2034B00749AA5 /* UBSanRuntime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = UBSanRuntime.cpp; sourceTree = ""; }; - 54067BED1DF2034B00749AA5 /* UBSanRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UBSanRuntime.h; sourceTree = ""; }; - 2579065B1BD0488100178368 /* UDPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UDPSocket.cpp; sourceTree = ""; }; - 49CA96EA1E6AAC6600C03FEE /* UUID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UUID.cpp; path = source/Utility/UUID.cpp; sourceTree = ""; }; - 49CA96F51E6AAC8E00C03FEE /* UUID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UUID.h; path = include/lldb/Utility/UUID.h; sourceTree = ""; }; - 4C639EC221FA684700A7B957 /* UUIDTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UUIDTest.cpp; sourceTree = ""; }; - AF0578C2217FA80700CF9D80 /* UdtRecordCompleter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UdtRecordCompleter.cpp; path = source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp; sourceTree = SOURCE_ROOT; }; - AF0578C1217FA80700CF9D80 /* UdtRecordCompleter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UdtRecordCompleter.h; path = source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.h; sourceTree = SOURCE_ROOT; }; - 268A813F115B19D000F645B0 /* UniqueCStringMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UniqueCStringMap.h; path = include/lldb/Core/UniqueCStringMap.h; sourceTree = ""; }; - 26B8B42312EEC52A00A831B2 /* UniqueDWARFASTType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniqueDWARFASTType.cpp; sourceTree = ""; }; - 26B8B42212EEC52A00A831B2 /* UniqueDWARFASTType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniqueDWARFASTType.h; sourceTree = ""; }; - 4C00987011500B4300F316B0 /* UnixSignals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnixSignals.cpp; path = source/Target/UnixSignals.cpp; sourceTree = ""; }; - 4C00986F11500B4300F316B0 /* UnixSignals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnixSignals.h; path = include/lldb/Target/UnixSignals.h; sourceTree = ""; }; - 9A20571E1F3B8D2100F6C293 /* UnixSignalsTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnixSignalsTest.cpp; path = Signals/UnixSignalsTest.cpp; sourceTree = ""; }; - 26E3EEBD11A9870400FBADB6 /* Unwind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Unwind.h; path = include/lldb/Target/Unwind.h; sourceTree = ""; }; - 263E949D13661AE400E7D1CE /* UnwindAssembly-x86.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = "UnwindAssembly-x86.cpp"; sourceTree = ""; }; - 263E949E13661AE400E7D1CE /* UnwindAssembly-x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UnwindAssembly-x86.h"; sourceTree = ""; }; - 264D8D4F13661BD7003A368F /* UnwindAssembly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnwindAssembly.cpp; path = source/Target/UnwindAssembly.cpp; sourceTree = ""; }; - 264D8D4E13661BCC003A368F /* UnwindAssembly.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UnwindAssembly.h; path = include/lldb/Target/UnwindAssembly.h; sourceTree = ""; }; - 2692BA13136610C100F9E14D /* UnwindAssemblyInstEmulation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UnwindAssemblyInstEmulation.cpp; sourceTree = ""; }; - 2692BA14136610C100F9E14D /* UnwindAssemblyInstEmulation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnwindAssemblyInstEmulation.h; sourceTree = ""; }; - AF68D32F1255A110002FF25B /* UnwindLLDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnwindLLDB.cpp; path = Utility/UnwindLLDB.cpp; sourceTree = ""; }; - AF68D3301255A110002FF25B /* UnwindLLDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnwindLLDB.h; path = Utility/UnwindLLDB.h; sourceTree = ""; }; - 26E3EEE311A9901300FBADB6 /* UnwindMacOSXFrameBackchain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnwindMacOSXFrameBackchain.cpp; path = Utility/UnwindMacOSXFrameBackchain.cpp; sourceTree = ""; }; - 26E3EEE411A9901300FBADB6 /* UnwindMacOSXFrameBackchain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnwindMacOSXFrameBackchain.h; path = Utility/UnwindMacOSXFrameBackchain.h; sourceTree = ""; }; - 961FABB91235DE1600F93A47 /* UnwindPlan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnwindPlan.cpp; path = source/Symbol/UnwindPlan.cpp; sourceTree = ""; }; - 269FF07F12494F8E00225026 /* UnwindPlan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnwindPlan.h; path = include/lldb/Symbol/UnwindPlan.h; sourceTree = ""; }; - 961FABBA1235DE1600F93A47 /* UnwindTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnwindTable.cpp; path = source/Symbol/UnwindTable.cpp; sourceTree = ""; }; - 269FF08112494FC200225026 /* UnwindTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnwindTable.h; path = include/lldb/Symbol/UnwindTable.h; sourceTree = ""; }; - 33064C991A5C7A330033D415 /* UriParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UriParser.cpp; path = source/Utility/UriParser.cpp; sourceTree = ""; }; - 2654A6911E552F3C00DA1013 /* UriParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UriParser.h; path = include/lldb/Utility/UriParser.h; sourceTree = ""; }; - 2321F9461BDD346100BA9A93 /* UriParserTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UriParserTest.cpp; sourceTree = ""; }; - 4C0083331B9A5DE200D5CF24 /* UserExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UserExpression.cpp; path = source/Expression/UserExpression.cpp; sourceTree = ""; }; - 4C00832E1B9A58A700D5CF24 /* UserExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserExpression.h; path = include/lldb/Expression/UserExpression.h; sourceTree = ""; }; - AFC2DCEA1E6E2F7D00283714 /* UserID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UserID.cpp; path = source/Utility/UserID.cpp; sourceTree = ""; }; - AFC2DCEC1E6E2F8C00283714 /* UserID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UserID.h; path = include/lldb/Utility/UserID.h; sourceTree = ""; }; - 4CC57FA0222DFEA40067B7EA /* UserIDResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UserIDResolver.cpp; path = source/Utility/UserIDResolver.cpp; sourceTree = ""; }; - 4CC57FA3222DFEFE0067B7EA /* UserIDResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserIDResolver.h; path = include/lldb/Utility/UserIDResolver.h; sourceTree = ""; }; - 9A4633DC11F65D9A00955CE1 /* UserSettingsController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UserSettingsController.cpp; path = source/Core/UserSettingsController.cpp; sourceTree = ""; }; - 9A4633DA11F65D8600955CE1 /* UserSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserSettingsController.h; path = include/lldb/Core/UserSettingsController.h; sourceTree = ""; }; - 4C00833F1B9F9BA900D5CF24 /* UtilityFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UtilityFunction.cpp; path = source/Expression/UtilityFunction.cpp; sourceTree = ""; }; - 4C00833D1B9F9B8400D5CF24 /* UtilityFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UtilityFunction.h; path = include/lldb/Expression/UtilityFunction.h; sourceTree = ""; }; - DD54302F222F190D00C1F021 /* Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = source/API/Utils.h; sourceTree = ""; }; - 2654A6921E552F4600DA1013 /* VASPrintf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VASPrintf.h; path = include/lldb/Utility/VASPrintf.h; sourceTree = ""; }; - 2654A68F1E552ED500DA1013 /* VASprintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VASprintf.cpp; path = source/Utility/VASprintf.cpp; sourceTree = ""; }; - 9A3D43C41F3150D200EB767C /* VASprintfTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VASprintfTest.cpp; sourceTree = ""; }; - AFC2DCEF1E6E2FD200283714 /* VMRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VMRange.cpp; path = source/Utility/VMRange.cpp; sourceTree = ""; }; - AFC2DCF11E6E2FDA00283714 /* VMRange.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VMRange.h; path = include/lldb/Utility/VMRange.h; sourceTree = ""; }; - 4C639ECA21FA684900A7B957 /* VMRangeTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VMRangeTest.cpp; sourceTree = ""; }; - 2660386E211CA90D00329572 /* VSCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VSCode.cpp; path = "tools/lldb-vscode/VSCode.cpp"; sourceTree = ""; }; - 2660386F211CA90D00329572 /* VSCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VSCode.h; path = "tools/lldb-vscode/VSCode.h"; sourceTree = ""; }; - 26F7619C211CDD700044F6EA /* VSCodeForward.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VSCodeForward.h; path = "tools/lldb-vscode/VSCodeForward.h"; sourceTree = ""; }; - 26BC7E9910F1B85900F91463 /* Value.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Value.cpp; path = source/Core/Value.cpp; sourceTree = ""; }; - 26BC7D8110F1B77400F91463 /* Value.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Value.h; path = include/lldb/Core/Value.h; sourceTree = ""; }; - 26BC7E9A10F1B85900F91463 /* ValueObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObject.cpp; path = source/Core/ValueObject.cpp; sourceTree = ""; }; - 26BC7D8210F1B77400F91463 /* ValueObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObject.h; path = include/lldb/Core/ValueObject.h; sourceTree = ""; }; - 94094C69163B6CD90083A547 /* ValueObjectCast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectCast.cpp; path = source/Core/ValueObjectCast.cpp; sourceTree = ""; }; - 94094C68163B6CCC0083A547 /* ValueObjectCast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectCast.h; path = include/lldb/Core/ValueObjectCast.h; sourceTree = ""; }; - 26BC7E9B10F1B85900F91463 /* ValueObjectChild.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectChild.cpp; path = source/Core/ValueObjectChild.cpp; sourceTree = ""; }; - 26BC7D8310F1B77400F91463 /* ValueObjectChild.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectChild.h; path = include/lldb/Core/ValueObjectChild.h; sourceTree = ""; }; - 26424E3C125986CB0016D82C /* ValueObjectConstResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectConstResult.cpp; path = source/Core/ValueObjectConstResult.cpp; sourceTree = ""; }; - 26424E3E125986D30016D82C /* ValueObjectConstResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectConstResult.h; path = include/lldb/Core/ValueObjectConstResult.h; sourceTree = ""; }; - AF94726E1B575E430063D65C /* ValueObjectConstResultCast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectConstResultCast.cpp; path = source/Core/ValueObjectConstResultCast.cpp; sourceTree = ""; }; - AF9472701B575E5F0063D65C /* ValueObjectConstResultCast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectConstResultCast.h; path = include/lldb/Core/ValueObjectConstResultCast.h; sourceTree = ""; }; - 94FA3DDF1405D50300833217 /* ValueObjectConstResultChild.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectConstResultChild.cpp; path = source/Core/ValueObjectConstResultChild.cpp; sourceTree = ""; }; - 94FA3DDD1405D4E500833217 /* ValueObjectConstResultChild.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectConstResultChild.h; path = include/lldb/Core/ValueObjectConstResultChild.h; sourceTree = ""; }; - 949ADF021406F648004833E1 /* ValueObjectConstResultImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectConstResultImpl.cpp; path = source/Core/ValueObjectConstResultImpl.cpp; sourceTree = ""; }; - 949ADF001406F62E004833E1 /* ValueObjectConstResultImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectConstResultImpl.h; path = include/lldb/Core/ValueObjectConstResultImpl.h; sourceTree = ""; }; - 4CD0BD0E134BFADF00CB44D4 /* ValueObjectDynamicValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectDynamicValue.cpp; path = source/Core/ValueObjectDynamicValue.cpp; sourceTree = ""; }; - 4CD0BD0C134BFAB600CB44D4 /* ValueObjectDynamicValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectDynamicValue.h; path = include/lldb/Core/ValueObjectDynamicValue.h; sourceTree = ""; }; - 26BC7E9C10F1B85900F91463 /* ValueObjectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectList.cpp; path = source/Core/ValueObjectList.cpp; sourceTree = ""; }; - 26BC7D8410F1B77400F91463 /* ValueObjectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectList.h; path = include/lldb/Core/ValueObjectList.h; sourceTree = ""; }; - 4CABA9DF134A8BCD00539BDD /* ValueObjectMemory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectMemory.cpp; path = source/Core/ValueObjectMemory.cpp; sourceTree = ""; }; - 4CABA9DC134A8BA700539BDD /* ValueObjectMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectMemory.h; path = include/lldb/Core/ValueObjectMemory.h; sourceTree = ""; }; - 945215DE17F639EE00521C0B /* ValueObjectPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectPrinter.cpp; path = source/DataFormatters/ValueObjectPrinter.cpp; sourceTree = ""; }; - 945215DD17F639E600521C0B /* ValueObjectPrinter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectPrinter.h; path = include/lldb/DataFormatters/ValueObjectPrinter.h; sourceTree = ""; }; - 264334381110F63100CDB6C6 /* ValueObjectRegister.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectRegister.cpp; path = source/Core/ValueObjectRegister.cpp; sourceTree = ""; }; - 2643343A1110F63C00CDB6C6 /* ValueObjectRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectRegister.h; path = include/lldb/Core/ValueObjectRegister.h; sourceTree = ""; }; - 94B6E76113D88362005F417F /* ValueObjectSyntheticFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectSyntheticFilter.cpp; path = source/Core/ValueObjectSyntheticFilter.cpp; sourceTree = ""; }; - 94B6E76013D8833C005F417F /* ValueObjectSyntheticFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectSyntheticFilter.h; path = include/lldb/Core/ValueObjectSyntheticFilter.h; sourceTree = ""; }; - 26BC7E9D10F1B85900F91463 /* ValueObjectVariable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectVariable.cpp; path = source/Core/ValueObjectVariable.cpp; sourceTree = ""; }; - 26BC7D8510F1B77400F91463 /* ValueObjectVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ValueObjectVariable.h; path = include/lldb/Core/ValueObjectVariable.h; sourceTree = ""; }; - 26BC7F2210F1B8EC00F91463 /* Variable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Variable.cpp; path = source/Symbol/Variable.cpp; sourceTree = ""; }; - 26BC7C6710F1B6E900F91463 /* Variable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Variable.h; path = include/lldb/Symbol/Variable.h; sourceTree = ""; }; - 26BC7F2310F1B8EC00F91463 /* VariableList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariableList.cpp; path = source/Symbol/VariableList.cpp; sourceTree = ""; }; - 26BC7C6810F1B6E900F91463 /* VariableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VariableList.h; path = include/lldb/Symbol/VariableList.h; sourceTree = ""; }; - 943B90FC1B991586007BA499 /* VectorIterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VectorIterator.h; path = include/lldb/DataFormatters/VectorIterator.h; sourceTree = ""; }; - 9418EBCC1AA910910058B02E /* VectorType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VectorType.cpp; path = source/DataFormatters/VectorType.cpp; sourceTree = ""; }; - 9418EBCB1AA9108B0058B02E /* VectorType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VectorType.h; path = include/lldb/DataFormatters/VectorType.h; sourceTree = ""; }; - 494260D914579144003C1C78 /* VerifyDecl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VerifyDecl.cpp; path = source/Symbol/VerifyDecl.cpp; sourceTree = ""; }; - 494260D7145790D5003C1C78 /* VerifyDecl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VerifyDecl.h; path = include/lldb/Symbol/VerifyDecl.h; sourceTree = ""; }; - 26BC7E1810F1B83100F91463 /* Watchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Watchpoint.cpp; path = source/Breakpoint/Watchpoint.cpp; sourceTree = ""; }; - 26BC7CFC10F1B71400F91463 /* Watchpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Watchpoint.h; path = include/lldb/Breakpoint/Watchpoint.h; sourceTree = ""; }; - B27318411416AC12006039C8 /* WatchpointList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WatchpointList.cpp; path = source/Breakpoint/WatchpointList.cpp; sourceTree = ""; }; - B27318431416AC43006039C8 /* WatchpointList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WatchpointList.h; path = include/lldb/Breakpoint/WatchpointList.h; sourceTree = ""; }; - B2B7CCEF15D1C20F00EEFB57 /* WatchpointOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WatchpointOptions.cpp; path = source/Breakpoint/WatchpointOptions.cpp; sourceTree = ""; }; - B2B7CCED15D1BFB700EEFB57 /* WatchpointOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WatchpointOptions.h; path = include/lldb/Breakpoint/WatchpointOptions.h; sourceTree = ""; }; - 3FDFE54619A29448009756A7 /* Windows.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Windows.cpp; path = source/Host/windows/Windows.cpp; sourceTree = ""; }; - 26C7C4811BFFEA7E009BD01F /* WindowsMiniDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowsMiniDump.cpp; sourceTree = ""; }; - 26C7C4821BFFEA7E009BD01F /* WindowsMiniDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowsMiniDump.h; sourceTree = ""; }; - 267A48001B1411E40021A5BC /* XML.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = XML.cpp; path = source/Host/common/XML.cpp; sourceTree = ""; }; - 267A48031B1416080021A5BC /* XML.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = XML.h; path = include/lldb/Host/XML.h; sourceTree = ""; }; - 940B04D81A8984FF0045D5F7 /* argdumper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = argdumper.cpp; path = tools/argdumper/argdumper.cpp; sourceTree = ""; }; - 266960591199F4230075C61A /* build-llvm.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "build-llvm.pl"; sourceTree = ""; }; - 266960601199F4230075C61A /* build-swig-Python.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "build-swig-Python.sh"; sourceTree = ""; }; - 2669605A1199F4230075C61A /* build-swig-wrapper-classes.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "build-swig-wrapper-classes.sh"; sourceTree = ""; }; - 2669605B1199F4230075C61A /* checkpoint-llvm.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "checkpoint-llvm.pl"; sourceTree = ""; }; - 268648C216531BF800F04704 /* com.apple.debugserver.applist.internal.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.applist.internal.plist; path = tools/debugserver/source/com.apple.debugserver.applist.internal.plist; sourceTree = ""; }; - AFF87C8A150FF677000E1742 /* com.apple.debugserver.applist.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.applist.plist; path = tools/debugserver/source/com.apple.debugserver.applist.plist; sourceTree = ""; }; - AFF87C8C150FF680000E1742 /* com.apple.debugserver.applist.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.applist.plist; path = tools/debugserver/source/com.apple.debugserver.applist.plist; sourceTree = ""; }; - AFF87C8E150FF688000E1742 /* com.apple.debugserver.applist.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.applist.plist; path = tools/debugserver/source/com.apple.debugserver.applist.plist; sourceTree = ""; }; - 268648C316531BF800F04704 /* com.apple.debugserver.internal.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.internal.plist; path = tools/debugserver/source/com.apple.debugserver.internal.plist; sourceTree = ""; }; - AFF87C86150FF669000E1742 /* com.apple.debugserver.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.plist; path = tools/debugserver/source/com.apple.debugserver.plist; sourceTree = ""; }; - 268648C116531BF800F04704 /* com.apple.debugserver.posix.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.apple.debugserver.posix.plist; path = tools/debugserver/source/com.apple.debugserver.posix.plist; sourceTree = ""; }; - AF5CEC87206079A500384F20 /* com.apple.internal.xpc.remote.debugserver.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = com.apple.internal.xpc.remote.debugserver.plist; path = tools/debugserver/source/com.apple.internal.xpc.remote.debugserver.plist; sourceTree = ""; }; - 26579F68126A25920007C5CB /* darwin-debug */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "darwin-debug"; sourceTree = BUILT_PRODUCTS_DIR; }; - 26368A3B126B697600E8659F /* darwin-debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "darwin-debug.cpp"; path = "tools/darwin-debug/darwin-debug.cpp"; sourceTree = ""; }; - 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = debugserver.xcodeproj; path = tools/debugserver/debugserver.xcodeproj; sourceTree = ""; }; - 9A2057441F3B905C00F6C293 /* debugserver_LogCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = debugserver_LogCallback.cpp; path = debugserver/debugserver_LogCallback.cpp; sourceTree = ""; }; - 26BC7D5F10F1B77400F91463 /* dwarf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf.h; path = include/lldb/Core/dwarf.h; sourceTree = ""; }; - 266960611199F4230075C61A /* edit-swig-python-wrapper-file.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = "edit-swig-python-wrapper-file.py"; sourceTree = ""; }; - 3FDFE54819A2946B009756A7 /* editlinewin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = editlinewin.h; path = include/lldb/Host/windows/editlinewin.h; sourceTree = ""; }; - 94005E0513F45A1B001EF42D /* embedded_interpreter.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; name = embedded_interpreter.py; path = source/Interpreter/embedded_interpreter.py; sourceTree = ""; }; - 94FE476613FC1DA8001F8475 /* finish-swig-Python-LLDB.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "finish-swig-Python-LLDB.sh"; sourceTree = ""; }; - 2669605C1199F4230075C61A /* finish-swig-wrapper-classes.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "finish-swig-wrapper-classes.sh"; sourceTree = ""; }; - 23E2E51E1D903726006F38BB /* fizzbuzz_no_heap.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = fizzbuzz_no_heap.dmp; sourceTree = ""; }; - 239504C21BDD3FD600963CEA /* gtest_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gtest_common.h; sourceTree = ""; }; - 2669605D1199F4230075C61A /* install-lldb.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "install-lldb.sh"; sourceTree = ""; }; - 2326CF4C1BDD684B00A5CEAC /* libedit.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libedit.dylib; path = ../../../../../../usr/lib/libedit.dylib; sourceTree = ""; }; - 26F5C32A10F3DFDD009D5894 /* libedit.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libedit.dylib; path = /usr/lib/libedit.dylib; sourceTree = ""; }; - 2689FFCA13353D7A00698AC0 /* liblldb-core.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "liblldb-core.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2326CF471BDD67C100A5CEAC /* libncurses.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.dylib; path = ../../../../../../usr/lib/libncurses.dylib; sourceTree = ""; }; - 239481851C59EBDD00DF7168 /* libncurses.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.dylib; path = ../../../../../usr/lib/libncurses.dylib; sourceTree = ""; }; - 2670F8111862B44A006B332C /* libncurses.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.dylib; path = /usr/lib/libncurses.dylib; sourceTree = ""; }; - 26792621211CA41E00EE1D10 /* libncurses.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libncurses.tbd; path = usr/lib/libncurses.tbd; sourceTree = SDKROOT; }; - 26F5C37410F3F61B009D5894 /* libobjc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libobjc.dylib; path = /usr/lib/libobjc.dylib; sourceTree = ""; }; - 2326CF4E1BDD687800A5CEAC /* libpanel.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpanel.dylib; path = ../../../../../../usr/lib/libpanel.dylib; sourceTree = ""; }; - 260157C41885F4FF00F875CF /* libpanel.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpanel.dylib; path = /usr/lib/libpanel.dylib; sourceTree = ""; }; - 26F5C32410F3DF23009D5894 /* libpython.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpython.dylib; path = /usr/lib/libpython.dylib; sourceTree = ""; }; - 26F5C32B10F3DFDD009D5894 /* libtermcap.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtermcap.dylib; path = /usr/lib/libtermcap.dylib; sourceTree = ""; }; - 23CB14E31D66CA2200EDDDE1 /* libxml2.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.2.dylib; path = usr/lib/libxml2.2.dylib; sourceTree = SDKROOT; }; - 26D55234159A7DB100708D8D /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = /usr/lib/libxml2.dylib; sourceTree = ""; }; - 2326CF4A1BDD681800A5CEAC /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = ../../../../../../usr/lib/libz.dylib; sourceTree = ""; }; - 966C6B7818E6A56A0093F5EC /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; - 23E2E51F1D903726006F38BB /* linux-x86_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "linux-x86_64.cpp"; sourceTree = ""; }; - 23E2E5201D903726006F38BB /* linux-x86_64.dmp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "linux-x86_64.dmp"; sourceTree = ""; }; - 26F5C26A10F3D9A4009D5894 /* lldb */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lldb; sourceTree = BUILT_PRODUCTS_DIR; }; - 2669415E1A6DC2AB0063BE93 /* lldb-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "lldb-Info.plist"; path = "tools/lldb-mi/lldb-Info.plist"; sourceTree = SOURCE_ROOT; }; - 26F5C27210F3D9E4009D5894 /* lldb-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "lldb-Info.plist"; path = "tools/driver/lldb-Info.plist"; sourceTree = ""; }; - 942829C01A89835300521B30 /* lldb-argdumper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "lldb-argdumper"; sourceTree = BUILT_PRODUCTS_DIR; }; - 26BC7C2510F1B3BC00F91463 /* lldb-defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-defines.h"; path = "include/lldb/lldb-defines.h"; sourceTree = ""; }; - 26BC7C2610F1B3BC00F91463 /* lldb-enumerations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-enumerations.h"; path = "include/lldb/lldb-enumerations.h"; sourceTree = ""; }; - 26DE1E6A11616C2E00A093E2 /* lldb-forward.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = "lldb-forward.h"; path = "include/lldb/lldb-forward.h"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 26D6F3F4183E7F9300194858 /* lldb-gdbserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "lldb-gdbserver.cpp"; path = "tools/lldb-server/lldb-gdbserver.cpp"; sourceTree = ""; }; - 239504D41BDD451400963CEA /* lldb-gtest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "lldb-gtest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 23CB15561D66DA9300EDDDE1 /* lldb-gtest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "lldb-gtest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2690CD171A6DC0D000E717C8 /* lldb-mi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "lldb-mi"; sourceTree = BUILT_PRODUCTS_DIR; }; - 26DC6A1C1337FECA00FF7998 /* lldb-platform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "lldb-platform.cpp"; path = "tools/lldb-server/lldb-platform.cpp"; sourceTree = ""; }; - 26217932133BCB850083B112 /* lldb-private-enumerations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "lldb-private-enumerations.h"; path = "include/lldb/lldb-private-enumerations.h"; sourceTree = ""; }; - 26BC7C2810F1B3BC00F91463 /* lldb-private-interfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-private-interfaces.h"; path = "include/lldb/lldb-private-interfaces.h"; sourceTree = ""; }; - 26217930133BC8640083B112 /* lldb-private-types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "lldb-private-types.h"; path = "include/lldb/lldb-private-types.h"; sourceTree = ""; }; - 26BC7C2A10F1B3BC00F91463 /* lldb-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-private.h"; path = "include/lldb/lldb-private.h"; sourceTree = ""; }; - 26651A14133BEC76005B64B7 /* lldb-public.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "lldb-public.h"; path = "include/lldb/lldb-public.h"; sourceTree = ""; }; - 3FBA69E21B60672A0008F44A /* lldb-python.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-python.h"; path = "ScriptInterpreter/Python/lldb-python.h"; sourceTree = ""; }; - 26DC6A101337FE6900FF7998 /* lldb-server */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "lldb-server"; sourceTree = BUILT_PRODUCTS_DIR; }; - E769331D1A94D18100C73337 /* lldb-server.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "lldb-server.cpp"; path = "tools/lldb-server/lldb-server.cpp"; sourceTree = ""; }; - 26BC7C2910F1B3BC00F91463 /* lldb-types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-types.h"; path = "include/lldb/lldb-types.h"; sourceTree = ""; }; - 94145430175D7FDE00284436 /* lldb-versioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "lldb-versioning.h"; path = "include/lldb/lldb-versioning.h"; sourceTree = ""; }; - 2679260C211CA3AC00EE1D10 /* lldb-vscode */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "lldb-vscode"; sourceTree = BUILT_PRODUCTS_DIR; }; - 26792618211CA3E100EE1D10 /* lldb-vscode-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "lldb-vscode-Info.plist"; path = "tools/lldb-vscode/lldb-vscode-Info.plist"; sourceTree = ""; }; - 26792619211CA3E100EE1D10 /* lldb-vscode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "lldb-vscode.cpp"; path = "tools/lldb-vscode/lldb-vscode.cpp"; sourceTree = ""; }; - 23173F8B192BA93F005C708F /* lldb-x86-register-enums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "lldb-x86-register-enums.h"; path = "Utility/lldb-x86-register-enums.h"; sourceTree = ""; }; - AF90106315AB7C5700FF120D /* lldb.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; name = lldb.1; path = docs/lldb.1; sourceTree = ""; }; - 26BC7E7410F1B85900F91463 /* lldb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = lldb.cpp; path = source/lldb.cpp; sourceTree = ""; }; - 2669605E1199F4230075C61A /* lldb.swig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lldb.swig; sourceTree = ""; }; - 26792616211CA3E100EE1D10 /* package.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = package.json; path = "tools/lldb-vscode/package.json"; sourceTree = ""; }; - 9A48A3A7124AAA5A00922451 /* python-extensions.swig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "python-extensions.swig"; sourceTree = ""; }; - 944DC3481774C99000D7D884 /* python-swigsafecast.swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "python-swigsafecast.swig"; sourceTree = ""; }; - 94E367CE140C4EEA001C7A5A /* python-typemaps.swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "python-typemaps.swig"; sourceTree = ""; }; - 94005E0313F438DF001EF42D /* python-wrapper.swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "python-wrapper.swig"; sourceTree = ""; }; - 266960631199F4230075C61A /* sed-sources */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "sed-sources"; sourceTree = ""; }; - AFF62FDC2006D4D4003644F9 /* test-dwarf.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "test-dwarf.cpp"; path = "DWARF/Inputs/test-dwarf.cpp"; sourceTree = ""; }; - AFF62FDD2006D4D4003644F9 /* test-dwarf.exe */ = {isa = PBXFileReference; lastKnownFileType = file; name = "test-dwarf.exe"; path = "DWARF/Inputs/test-dwarf.exe"; sourceTree = ""; }; - 23CB151B1D66CFAC00EDDDE1 /* test-pdb-alt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "test-pdb-alt.cpp"; sourceTree = ""; }; - 23CB151C1D66CFAC00EDDDE1 /* test-pdb-nested.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "test-pdb-nested.h"; sourceTree = ""; }; - 23CB151D1D66CFAC00EDDDE1 /* test-pdb-types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "test-pdb-types.cpp"; sourceTree = ""; }; - 23CB151E1D66CFAC00EDDDE1 /* test-pdb-types.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test-pdb-types.exe"; sourceTree = ""; }; - 23CB151F1D66CFAC00EDDDE1 /* test-pdb-types.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test-pdb-types.pdb"; sourceTree = ""; }; - 23CB15201D66CFAC00EDDDE1 /* test-pdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "test-pdb.cpp"; sourceTree = ""; }; - 23CB15211D66CFAC00EDDDE1 /* test-pdb.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test-pdb.exe"; sourceTree = ""; }; - 23CB15221D66CFAC00EDDDE1 /* test-pdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "test-pdb.h"; sourceTree = ""; }; - 23CB15231D66CFAC00EDDDE1 /* test-pdb.pdb */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test-pdb.pdb"; sourceTree = ""; }; - 3FDFE54A19A2946B009756A7 /* win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = win32.h; path = include/lldb/Host/windows/win32.h; sourceTree = ""; }; - 3FDFE54B19A2946B009756A7 /* windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = windows.h; path = include/lldb/Host/windows/windows.h; sourceTree = ""; }; - AF415AE51D949E4400FCE0D4 /* x86AssemblyInspectionEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = x86AssemblyInspectionEngine.cpp; sourceTree = ""; }; - AF415AE61D949E4400FCE0D4 /* x86AssemblyInspectionEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x86AssemblyInspectionEngine.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 239504D11BDD451400963CEA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 23CB15481D66DA9300EDDDE1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4CEC86A92047395F009B37B1 /* Python.framework in Frameworks */, - 23CB15491D66DA9300EDDDE1 /* libxml2.2.dylib in Frameworks */, - 23CB154A1D66DA9300EDDDE1 /* libpanel.dylib in Frameworks */, - 23CB154B1D66DA9300EDDDE1 /* libedit.dylib in Frameworks */, - 23CB154C1D66DA9300EDDDE1 /* libz.dylib in Frameworks */, - 23CB154D1D66DA9300EDDDE1 /* libncurses.dylib in Frameworks */, - 23CB154E1D66DA9300EDDDE1 /* liblldb-core.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 26579F66126A25920007C5CB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 26680205115FD0ED008E1FE4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 260157C81885F53100F875CF /* libpanel.dylib in Frameworks */, - 2670F8121862B44A006B332C /* libncurses.dylib in Frameworks */, - 26CEB5EF18761CB2008F575A /* libedit.dylib in Frameworks */, - 26D55235159A7DB100708D8D /* libxml2.dylib in Frameworks */, - 268901161335BBC300698AC0 /* liblldb-core.a in Frameworks */, - 966C6B7A18E6A56A0093F5EC /* libz.dylib in Frameworks */, - 2668022F115FD19D008E1FE4 /* CoreFoundation.framework in Frameworks */, - 26680233115FD1A7008E1FE4 /* libobjc.dylib in Frameworks */, - 4CF3D80C15AF4DC800845BF3 /* Security.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 26792609211CA3AC00EE1D10 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 26792623211CA42300EE1D10 /* LLDB.framework in Frameworks */, - 26792622211CA41E00EE1D10 /* libncurses.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2689FFC713353D7A00698AC0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2690CD141A6DC0D000E717C8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 239481861C59EBDD00DF7168 /* libncurses.dylib in Frameworks */, - 2669424D1A6DC32B0063BE93 /* LLDB.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 26DC6A0E1337FE6900FF7998 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 260157C61885F51C00F875CF /* libpanel.dylib in Frameworks */, - 966C6B7C18E6A56A0093F5EC /* libz.dylib in Frameworks */, - 26780C611867C33D00234593 /* libncurses.dylib in Frameworks */, - 26CFDCA818616473000E63E5 /* libedit.dylib in Frameworks */, - 2606EDDF184E68A10034641B /* liblldb-core.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 26F5C26810F3D9A4009D5894 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 26F5C32D10F3DFDD009D5894 /* libtermcap.dylib in Frameworks */, - 2668035C11601108008E1FE4 /* LLDB.framework in Frameworks */, - 966C6B7918E6A56A0093F5EC /* libz.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 942829BD1A89835300521B30 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2656BBC31AE0739C00441749 /* libedit.dylib in Frameworks */, - 2656BBC61AE073B500441749 /* libz.dylib in Frameworks */, - 2656BBC51AE073AD00441749 /* libpanel.dylib in Frameworks */, - 2656BBC41AE073A800441749 /* libncurses.dylib in Frameworks */, - 942829CC1A89839300521B30 /* liblldb-core.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 08FB7794FE84155DC02AAC07 /* lldb */ = { - isa = PBXGroup; - children = ( - AF5CEC87206079A500384F20 /* com.apple.internal.xpc.remote.debugserver.plist */, - 239481851C59EBDD00DF7168 /* libncurses.dylib */, - 2326CF4E1BDD687800A5CEAC /* libpanel.dylib */, - 2326CF4C1BDD684B00A5CEAC /* libedit.dylib */, - 2326CF4A1BDD681800A5CEAC /* libz.dylib */, - 2326CF471BDD67C100A5CEAC /* libncurses.dylib */, - 2326CF451BDD647400A5CEAC /* Foundation.framework */, - 2326CF3F1BDD613E00A5CEAC /* Python.framework */, - 26F5C32810F3DF7D009D5894 /* Libraries */, - 264E8576159BE51A00E9D7A2 /* Resources */, - 08FB7795FE84155DC02AAC07 /* Source */, - 26F5C22410F3D950009D5894 /* Tools */, - 2690CD181A6DC0D000E717C8 /* lldb-mi */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - 2321F9331BDD326500BA9A93 /* unittests */, - 236102941CF389BE00B8E0B9 /* cmake */, - 23CB14E21D66CA2200EDDDE1 /* Frameworks */, - ); - name = lldb; - sourceTree = ""; - }; - 08FB7795FE84155DC02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 266960581199F4230075C61A /* Scripts */, - 26BC7E7410F1B85900F91463 /* lldb.cpp */, - 26BC7C2A10F1B3BC00F91463 /* lldb-private.h */, - 26217932133BCB850083B112 /* lldb-private-enumerations.h */, - 26BC7C2810F1B3BC00F91463 /* lldb-private-interfaces.h */, - 26217930133BC8640083B112 /* lldb-private-types.h */, - 262D3190111B4341004E6F88 /* API */, - 26BC7CEB10F1B70800F91463 /* Breakpoint */, - 26BC7D0D10F1B71D00F91463 /* Commands */, - 26BC7C1010F1B34800F91463 /* Core */, - 94CB255616B0683B0059775D /* DataFormatters */, - 26BC7DBE10F1B78200F91463 /* Expression */, - 26BC7DD010F1B7C100F91463 /* Host */, - 3F8169261ABB73C1001DA9DF /* Initialization */, - 26BC7DDF10F1B7E200F91463 /* Interpreter */, - 260C897110F57C5600BB2B04 /* Plugins */, - 26BC7C4B10F1B6C100F91463 /* Symbol */, - 26BC7DEF10F1B80200F91463 /* Target */, - 2682F168115ED9C800CCFF99 /* Utility */, - ); - name = Source; - sourceTree = ""; - usesTabs = 0; - }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 26F5C26A10F3D9A4009D5894 /* lldb */, - 26680207115FD0ED008E1FE4 /* LLDB.framework */, - 26579F68126A25920007C5CB /* darwin-debug */, - 26DC6A101337FE6900FF7998 /* lldb-server */, - 2690CD171A6DC0D000E717C8 /* lldb-mi */, - 942829C01A89835300521B30 /* lldb-argdumper */, - 239504D41BDD451400963CEA /* lldb-gtest */, - 23CB15561D66DA9300EDDDE1 /* lldb-gtest */, - 2679260C211CA3AC00EE1D10 /* lldb-vscode */, - ); - name = Products; - sourceTree = ""; - usesTabs = 0; - }; - 2321F9331BDD326500BA9A93 /* unittests */ = { - isa = PBXGroup; - children = ( - 9A1890301F47D5BC00394BCA /* TestingSupport */, - 23E2E52C1D903806006F38BB /* Breakpoint */, - 23CB14E51D66CBEB00EDDDE1 /* Core */, - 9A2057421F3B904C00F6C293 /* debugserver */, - AF7F97652141FA2100795BC0 /* Disassembler */, - 2326CF501BDD68CA00A5CEAC /* Editline */, - AEC6FF9D1BE97035007882C1 /* Expression */, - 239504C21BDD3FD600963CEA /* gtest_common.h */, - 2321F9371BDD32ED00BA9A93 /* Host */, - 2321F93C1BDD339A00BA9A93 /* Interpreter */, - 23CB14F51D66CCB700EDDDE1 /* Language */, - 9A2057221F3B8DA600F6C293 /* ObjectFile */, - 9A2057191F3B864D00F6C293 /* Platform */, - 2370A3781D66C549000E7BE6 /* Process */, - 2321F93F1BDD33D800BA9A93 /* ScriptInterpreter */, - 9A20571D1F3B8D1100F6C293 /* Signals */, - 23CB15091D66CF2B00EDDDE1 /* Symbol */, - 23CB150A1D66CF3200EDDDE1 /* SymbolFile */, - AFAFD8081E57E19E0017A14F /* Target */, - AFEC5FD31D94F9130076A480 /* UnwindAssembly */, - 2321F9421BDD343A00BA9A93 /* Utility */, - ); - path = unittests; - sourceTree = ""; - }; - 2321F9371BDD32ED00BA9A93 /* Host */ = { - isa = PBXGroup; - children = ( - 9A20573B1F3B8E8500F6C293 /* linux */, - 9A20572E1F3B8E7600F6C293 /* FileSystemTest.cpp */, - 9A20572F1F3B8E7600F6C293 /* HostTest.cpp */, - 9A2057301F3B8E7600F6C293 /* MainLoopTest.cpp */, - 2321F9381BDD332400BA9A93 /* CMakeLists.txt */, - 2321F9391BDD332400BA9A93 /* SocketAddressTest.cpp */, - 2321F93A1BDD332400BA9A93 /* SocketTest.cpp */, - 26FCE61B229F00F000D125BD /* SocketTestUtilities.cpp */, - 2321F9451BDD346100BA9A93 /* TaskPoolTest.cpp */, - ); - path = Host; - sourceTree = ""; - }; - 2321F93C1BDD339A00BA9A93 /* Interpreter */ = { - isa = PBXGroup; - children = ( - 2321F93D1BDD33CE00BA9A93 /* CMakeLists.txt */, - 2321F93E1BDD33CE00BA9A93 /* ArgsTest.cpp */, - 9A20572B1F3B8E6200F6C293 /* TestCompletion.cpp */, - 4C719398207D23E300FDF430 /* TestOptionArgParser.cpp */, - ); - path = Interpreter; - sourceTree = ""; - }; - 2321F93F1BDD33D800BA9A93 /* ScriptInterpreter */ = { - isa = PBXGroup; - children = ( - 2321F9401BDD340D00BA9A93 /* CMakeLists.txt */, - 2321F94B1BDD35D500BA9A93 /* Python */, - ); - path = ScriptInterpreter; - sourceTree = ""; - }; - 2321F9421BDD343A00BA9A93 /* Utility */ = { - isa = PBXGroup; - children = ( - 4C639EC721FA684800A7B957 /* AnsiTerminalTest.cpp */, - 23E2E5161D903689006F38BB /* ArchSpecTest.cpp */, - 23CB14E61D66CC0E00EDDDE1 /* BroadcasterTest.cpp */, - 7F94D7172040A13A006EE3EA /* CleanUpTest.cpp */, - 4C639EC921FA684800A7B957 /* CompletionRequestTest.cpp */, - 9A3D43C81F3150D200EB767C /* ConstStringTest.cpp */, - AFA1B62B219E0ED900A8AB7E /* DataExtractorTest.cpp */, - 4C639EBD21FA684600A7B957 /* EnvironmentTest.cpp */, - 4C639EC521FA684800A7B957 /* EventTest.cpp */, - 4C639EC821FA684800A7B957 /* FlagsTest.cpp */, - 23CB14FD1D66CD2400EDDDE1 /* FileSpecTest.cpp */, - 8C3BD99F1EF5D1B50016C343 /* JSONTest.cpp */, - 9A3D43E31F3237D500EB767C /* ListenerTest.cpp */, - 9A3D43C71F3150D200EB767C /* LogTest.cpp */, - 9A3D43CB1F3150D200EB767C /* NameMatchesTest.cpp */, - 4C639EC321FA684700A7B957 /* OptionsWithRawTest.cpp */, - 4C639EC021FA684700A7B957 /* PredicateTest.cpp */, - 4C639EC421FA684800A7B957 /* RegisterValueTest.cpp */, - 4C639EC121FA684700A7B957 /* ReproducerTest.cpp */, - DD6C13BC220A6F6A005C2AE8 /* ReproducerInstrumentationTest.cpp */, - 23CB14E91D66CC0E00EDDDE1 /* ScalarTest.cpp */, - 9A3D43E21F3237D500EB767C /* StateTest.cpp */, - 9A3D43C61F3150D200EB767C /* StatusTest.cpp */, - 4C639EBF21FA684700A7B957 /* StreamTest.cpp */, - 58EAC73D2106A0740029571E /* StreamTeeTest.cpp */, - 2321F9441BDD346100BA9A93 /* StringExtractorTest.cpp */, - DD8F278022011D0F004ED75B /* FileCollectorTest.cpp */, - 4C639EC621FA684800A7B957 /* StringLexerTest.cpp */, - 4C639EBE21FA684600A7B957 /* StringListTest.cpp */, - 9A3D43CA1F3150D200EB767C /* StructuredDataTest.cpp */, - 9A3D43C91F3150D200EB767C /* TildeExpressionResolverTest.cpp */, - 9A3D43CC1F3150D200EB767C /* TimeoutTest.cpp */, - 9A3D43C51F3150D200EB767C /* TimerTest.cpp */, - 2321F9461BDD346100BA9A93 /* UriParserTest.cpp */, - 4C639EC221FA684700A7B957 /* UUIDTest.cpp */, - 4C639ECA21FA684900A7B957 /* VMRangeTest.cpp */, - 9A3D43C41F3150D200EB767C /* VASprintfTest.cpp */, - 2321F9431BDD346100BA9A93 /* CMakeLists.txt */, - 23CB15041D66CD9200EDDDE1 /* Inputs */, - ); - path = Utility; - sourceTree = ""; - }; - 2321F94B1BDD35D500BA9A93 /* Python */ = { - isa = PBXGroup; - children = ( - 2321F94C1BDD360F00BA9A93 /* CMakeLists.txt */, - 2321F94D1BDD360F00BA9A93 /* PythonDataObjectsTests.cpp */, - 3FA093141BF65D3A0037DD08 /* PythonExceptionStateTests.cpp */, - AF45E1FC1BF57C8D000563EB /* PythonTestSuite.cpp */, - AF45E1FD1BF57C8D000563EB /* PythonTestSuite.h */, - ); - path = Python; - sourceTree = ""; - }; - 2326CF501BDD68CA00A5CEAC /* Editline */ = { - isa = PBXGroup; - children = ( - 23CB14F11D66CC9000EDDDE1 /* CMakeLists.txt */, - 2326CF511BDD693B00A5CEAC /* EditlineTest.cpp */, - ); - path = Editline; - sourceTree = ""; - }; - 233B009C19610D130090E598 /* linux */ = { - isa = PBXGroup; - children = ( - 3FDFE56319AF9B77009756A7 /* Config.h */, - 233B009D19610D6B0090E598 /* Host.cpp */, - 237C577A19AF9D9F00213D59 /* HostInfoLinux.h */, - 3FDFE53619A2933E009756A7 /* HostInfoLinux.cpp */, - 3FDFE56419AF9B77009756A7 /* HostInfoLinux.h */, - 3FDFE56219AF9B60009756A7 /* HostThreadLinux.cpp */, - 3FDFE56519AF9B77009756A7 /* HostThreadLinux.h */, - ); - name = linux; - path = source/Host/linux; - sourceTree = ""; - }; - 236102941CF389BE00B8E0B9 /* cmake */ = { - isa = PBXGroup; - children = ( - 236102961CF389F800B8E0B9 /* modules */, - 236102971CF38A0900B8E0B9 /* platforms */, - ); - path = cmake; - sourceTree = ""; - }; - 236102961CF389F800B8E0B9 /* modules */ = { - isa = PBXGroup; - children = ( - 236102981CF38A2B00B8E0B9 /* AddLLDB.cmake */, - 236102991CF38A2B00B8E0B9 /* LLDBConfig.cmake */, - 2361029A1CF38A2B00B8E0B9 /* LLDBStandalone.cmake */, - ); - path = modules; - sourceTree = ""; - }; - 236102971CF38A0900B8E0B9 /* platforms */ = { - isa = PBXGroup; - children = ( - 2361029E1CF38A3500B8E0B9 /* Android.cmake */, - ); - path = platforms; - sourceTree = ""; - }; - 2370A3781D66C549000E7BE6 /* Process */ = { - isa = PBXGroup; - children = ( - 2370A37A1D66C57B000E7BE6 /* CMakeLists.txt */, - 2370A3791D66C569000E7BE6 /* gdb-remote */, - 23E2E5181D9036CF006F38BB /* minidump */, - ); - path = Process; - sourceTree = ""; - }; - 2370A3791D66C569000E7BE6 /* gdb-remote */ = { - isa = PBXGroup; - children = ( - 2370A37C1D66C587000E7BE6 /* CMakeLists.txt */, - 2370A37D1D66C587000E7BE6 /* GDBRemoteClientBaseTest.cpp */, - 2370A37E1D66C587000E7BE6 /* GDBRemoteCommunicationClientTest.cpp */, - 2370A37F1D66C587000E7BE6 /* GDBRemoteTestUtils.cpp */, - 2370A3801D66C587000E7BE6 /* GDBRemoteTestUtils.h */, - ); - path = "gdb-remote"; - sourceTree = ""; - }; - 238F2BA41D2C858F001FF92A /* StructuredData */ = { - isa = PBXGroup; - children = ( - 238F2BA51D2C85B2001FF92A /* DarwinLog */, - ); - path = StructuredData; - sourceTree = ""; - }; - 238F2BA51D2C85B2001FF92A /* DarwinLog */ = { - isa = PBXGroup; - children = ( - 238F2BA71D2C85FA001FF92A /* StructuredDataDarwinLog.h */, - 238F2BA61D2C85FA001FF92A /* StructuredDataDarwinLog.cpp */, - ); - path = DarwinLog; - sourceTree = ""; - }; - 23AB0526199FF5D3003B8084 /* FreeBSD */ = { - isa = PBXGroup; - children = ( - AF3F54B21B3BA5D500186E73 /* POSIXStopInfo.cpp */, - AF3F54B31B3BA5D500186E73 /* POSIXStopInfo.h */, - 26474CC818D0CB5B0073DEBA /* RegisterContextPOSIX.h */, - AF3F54B81B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm.cpp */, - AF3F54B91B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm.h */, - AF3F54BA1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm64.cpp */, - AF3F54BB1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_arm64.h */, - AF3F54BC1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_mips64.cpp */, - AF3F54BD1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_mips64.h */, - AF3F54BE1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_powerpc.cpp */, - AF3F54BF1B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_powerpc.h */, - AF3F54C01B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_x86.cpp */, - AF3F54C11B3BA5D500186E73 /* RegisterContextPOSIXProcessMonitor_x86.h */, - 23AB052E199FF639003B8084 /* FreeBSDThread.h */, - 23AB052D199FF639003B8084 /* FreeBSDThread.cpp */, - 23AB0530199FF639003B8084 /* ProcessFreeBSD.h */, - 23AB052F199FF639003B8084 /* ProcessFreeBSD.cpp */, - 23AB0532199FF639003B8084 /* ProcessMonitor.h */, - 23AB0531199FF639003B8084 /* ProcessMonitor.cpp */, - ); - path = FreeBSD; - sourceTree = ""; - }; - 23CB14E21D66CA2200EDDDE1 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 26792621211CA41E00EE1D10 /* libncurses.tbd */, - 23CB14E31D66CA2200EDDDE1 /* libxml2.2.dylib */, - ); - name = Frameworks; - sourceTree = ""; - }; - 23CB14E51D66CBEB00EDDDE1 /* Core */ = { - isa = PBXGroup; - children = ( - 23CB14E71D66CC0E00EDDDE1 /* CMakeLists.txt */, - 58A080B12112AB2200D5580F /* HighlighterTest.cpp */, - 4F29D3CD21010F84003B549A /* MangledTest.cpp */, - 4FBC04F3211A0F0F0015A814 /* RichManglingContextTest.cpp */, - 9A3D43E11F3237D500EB767C /* StreamCallbackTest.cpp */, - ); - path = Core; - sourceTree = ""; - }; - 23CB14F51D66CCB700EDDDE1 /* Language */ = { - isa = PBXGroup; - children = ( - 23CB14F61D66CCD600EDDDE1 /* CMakeLists.txt */, - 23CB14F81D66CCDA00EDDDE1 /* CPlusPlus */, - ); - path = Language; - sourceTree = ""; - }; - 23CB14F81D66CCDA00EDDDE1 /* CPlusPlus */ = { - isa = PBXGroup; - children = ( - 23CB14F91D66CCF100EDDDE1 /* CMakeLists.txt */, - 23CB14FA1D66CCF100EDDDE1 /* CPlusPlusLanguageTest.cpp */, - ); - path = CPlusPlus; - sourceTree = ""; - }; - 23CB15041D66CD9200EDDDE1 /* Inputs */ = { - isa = PBXGroup; - children = ( - 9A3D43DF1F31521200EB767C /* StructuredData-basic.json */, - 23CB15051D66CDB400EDDDE1 /* TestModule.c */, - 23CB15061D66CDB400EDDDE1 /* TestModule.so */, - ); - path = Inputs; - sourceTree = ""; - }; - 23CB15091D66CF2B00EDDDE1 /* Symbol */ = { - isa = PBXGroup; - children = ( - 9A2057131F3B860D00F6C293 /* TestDWARFCallFrameInfo.cpp */, - 9A2057141F3B860D00F6C293 /* TestType.cpp */, - 23CB150B1D66CF5600EDDDE1 /* CMakeLists.txt */, - AFB4C8122228A7AE0018086A /* LocateSymbolFileTest.cpp */, - 23CB150C1D66CF5600EDDDE1 /* TestClangASTContext.cpp */, - ); - path = Symbol; - sourceTree = ""; - }; - 23CB150A1D66CF3200EDDDE1 /* SymbolFile */ = { - isa = PBXGroup; - children = ( - 23CB15101D66CF6900EDDDE1 /* CMakeLists.txt */, - 9A2057091F3B81DE00F6C293 /* DWARF */, - 23CB15121D66CF6E00EDDDE1 /* PDB */, - ); - path = SymbolFile; - sourceTree = ""; - }; - 23CB15121D66CF6E00EDDDE1 /* PDB */ = { - isa = PBXGroup; - children = ( - 23CB15131D66CF8700EDDDE1 /* CMakeLists.txt */, - 23CB15181D66CF9500EDDDE1 /* Inputs */, - 23CB15141D66CF8700EDDDE1 /* SymbolFilePDBTests.cpp */, - ); - path = PDB; - sourceTree = ""; - }; - 23CB15181D66CF9500EDDDE1 /* Inputs */ = { - isa = PBXGroup; - children = ( - 23CB151B1D66CFAC00EDDDE1 /* test-pdb-alt.cpp */, - 23CB151C1D66CFAC00EDDDE1 /* test-pdb-nested.h */, - 23CB151D1D66CFAC00EDDDE1 /* test-pdb-types.cpp */, - 23CB151E1D66CFAC00EDDDE1 /* test-pdb-types.exe */, - 23CB151F1D66CFAC00EDDDE1 /* test-pdb-types.pdb */, - 23CB15201D66CFAC00EDDDE1 /* test-pdb.cpp */, - 23CB15211D66CFAC00EDDDE1 /* test-pdb.exe */, - 23CB15221D66CFAC00EDDDE1 /* test-pdb.h */, - 23CB15231D66CFAC00EDDDE1 /* test-pdb.pdb */, - ); - path = Inputs; - sourceTree = ""; - }; - 23E2E5181D9036CF006F38BB /* minidump */ = { - isa = PBXGroup; - children = ( - 23E2E5191D9036F2006F38BB /* CMakeLists.txt */, - 23E2E51A1D9036F2006F38BB /* MinidumpParserTest.cpp */, - 23E2E51D1D9036F6006F38BB /* Inputs */, - ); - path = minidump; - sourceTree = ""; - }; - 23E2E51D1D9036F6006F38BB /* Inputs */ = { - isa = PBXGroup; - children = ( - 23E2E51E1D903726006F38BB /* fizzbuzz_no_heap.dmp */, - 23E2E51F1D903726006F38BB /* linux-x86_64.cpp */, - 23E2E5201D903726006F38BB /* linux-x86_64.dmp */, - ); - path = Inputs; - sourceTree = ""; - }; - 23E2E52C1D903806006F38BB /* Breakpoint */ = { - isa = PBXGroup; - children = ( - 23E2E52D1D90382B006F38BB /* BreakpointIDTest.cpp */, - ); - path = Breakpoint; - sourceTree = ""; - }; - 23E2E5351D9048E7006F38BB /* minidump */ = { - isa = PBXGroup; - children = ( - 2619C4812107A9A1009CDE81 /* RegisterContextMinidump_ARM.cpp */, - 2619C4832107A9A2009CDE81 /* RegisterContextMinidump_ARM.h */, - 2619C4802107A9A1009CDE81 /* RegisterContextMinidump_ARM64.cpp */, - 2619C4822107A9A2009CDE81 /* RegisterContextMinidump_ARM64.h */, - AFD65C7F1D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.cpp */, - AFD65C801D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.h */, - 23E2E5361D9048FB006F38BB /* CMakeLists.txt */, - 23E2E5371D9048FB006F38BB /* MinidumpParser.cpp */, - 23E2E5381D9048FB006F38BB /* MinidumpParser.h */, - 23E2E5391D9048FB006F38BB /* MinidumpTypes.cpp */, - 23E2E53A1D9048FB006F38BB /* MinidumpTypes.h */, - 947CF76F1DC7B1E300EF980B /* ProcessMinidump.h */, - 947CF7701DC7B1EE00EF980B /* ProcessMinidump.cpp */, - 947CF7721DC7B20300EF980B /* RegisterContextMinidump_x86_32.h */, - 947CF7731DC7B20300EF980B /* ThreadMinidump.h */, - 947CF7741DC7B20D00EF980B /* RegisterContextMinidump_x86_32.cpp */, - 947CF7751DC7B20D00EF980B /* ThreadMinidump.cpp */, - ); - path = minidump; - sourceTree = ""; - }; - 260C897110F57C5600BB2B04 /* Plugins */ = { - isa = PBXGroup; - children = ( - AF2E029F1FA2CE8A00A86C34 /* Architecture */, - 8CF02ADD19DCBEC200B14BE0 /* InstrumentationRuntime */, - 8C2D6A58197A1FB9006989C9 /* MemoryHistory */, - 26DB3E051379E7AD0080DC73 /* ABI */, - 260C897210F57C5600BB2B04 /* Disassembler */, - 260C897810F57C5600BB2B04 /* DynamicLoader */, - 4984BA0B1B975E9F008658D4 /* ExpressionParser */, - 26D9FDCA12F785120003F2EE /* Instruction */, - AF2BCA6518C7EFDE005B4526 /* JITLoader */, - 94B638541B8FABEA004FE1E4 /* Language */, - 4CCA643A13B40B82003BDF98 /* LanguageRuntime */, - 260C897E10F57C5600BB2B04 /* ObjectContainer */, - 260C898210F57C5600BB2B04 /* ObjectFile */, - 266DFE9013FD64D200D0C574 /* OperatingSystem */, - 26C5577E132575B6008FD8FE /* Platform */, - 260C898A10F57C5600BB2B04 /* Process */, - 3FBA69DA1B6066D20008F44A /* ScriptInterpreter */, - 238F2BA41D2C858F001FF92A /* StructuredData */, - AF11CB34182CA85A00D9B618 /* SystemRuntime */, - 260C89B110F57C5600BB2B04 /* SymbolFile */, - 260C89E010F57C5600BB2B04 /* SymbolVendor */, - 26AC3F441365F40E0065C7EF /* UnwindAssembly */, - ); - name = Plugins; - path = source/Plugins; - sourceTree = ""; - }; - 260C897210F57C5600BB2B04 /* Disassembler */ = { - isa = PBXGroup; - children = ( - 260C897310F57C5600BB2B04 /* llvm */, - ); - path = Disassembler; - sourceTree = ""; - }; - 260C897310F57C5600BB2B04 /* llvm */ = { - isa = PBXGroup; - children = ( - B299580A14F2FA1400050A04 /* DisassemblerLLVMC.cpp */, - B299580C14F2FA1F00050A04 /* DisassemblerLLVMC.h */, - ); - path = llvm; - sourceTree = ""; - }; - 260C897810F57C5600BB2B04 /* DynamicLoader */ = { - isa = PBXGroup; - children = ( - 26274FA414030F79006BA130 /* Darwin-Kernel */, - 2666ADBF1B3CB675001FAFD3 /* Hexagon-DYLD */, - 260C897910F57C5600BB2B04 /* MacOSX-DYLD */, - 26FFC19214FC072100087D58 /* POSIX-DYLD */, - 26F006521B4DD86700B872E5 /* Windows-DYLD */, - 268A683C1321B505000E3FB8 /* Static */, - ); - path = DynamicLoader; - sourceTree = ""; - }; - 260C897910F57C5600BB2B04 /* MacOSX-DYLD */ = { - isa = PBXGroup; - children = ( - AF27AD531D3603EA00CF2833 /* DynamicLoaderDarwin.cpp */, - AF27AD541D3603EA00CF2833 /* DynamicLoaderDarwin.h */, - AF2907BD1D3F082400E10654 /* DynamicLoaderMacOS.cpp */, - AF2907BE1D3F082400E10654 /* DynamicLoaderMacOS.h */, - 260C897A10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.cpp */, - 260C897B10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.h */, - ); - path = "MacOSX-DYLD"; - sourceTree = ""; - }; - 260C897E10F57C5600BB2B04 /* ObjectContainer */ = { - isa = PBXGroup; - children = ( - 26A3B4AB1181454800381BC2 /* BSD-Archive */, - 260C897F10F57C5600BB2B04 /* Universal-Mach-O */, - ); - path = ObjectContainer; - sourceTree = ""; - }; - 260C897F10F57C5600BB2B04 /* Universal-Mach-O */ = { - isa = PBXGroup; - children = ( - 260C898010F57C5600BB2B04 /* ObjectContainerUniversalMachO.cpp */, - 260C898110F57C5600BB2B04 /* ObjectContainerUniversalMachO.h */, - ); - path = "Universal-Mach-O"; - sourceTree = ""; - }; - 260C898210F57C5600BB2B04 /* ObjectFile */ = { - isa = PBXGroup; - children = ( - 4C9BF11621C0467700FA4036 /* Breakpad */, - 260C898310F57C5600BB2B04 /* ELF */, - 26EFC4C718CFAF0D00865D87 /* JIT */, - 260C898710F57C5600BB2B04 /* Mach-O */, - 26E152221419CACA007967D0 /* PECOFF */, - ); - path = ObjectFile; - sourceTree = ""; - }; - 260C898310F57C5600BB2B04 /* ELF */ = { - isa = PBXGroup; - children = ( - 26D27C9E11ED3A4E0024D721 /* ELFHeader.h */, - 26D27C9D11ED3A4E0024D721 /* ELFHeader.cpp */, - 260C898610F57C5600BB2B04 /* ObjectFileELF.h */, - 260C898510F57C5600BB2B04 /* ObjectFileELF.cpp */, - ); - path = ELF; - sourceTree = ""; - }; - 260C898710F57C5600BB2B04 /* Mach-O */ = { - isa = PBXGroup; - children = ( - 260C898810F57C5600BB2B04 /* ObjectFileMachO.cpp */, - 260C898910F57C5600BB2B04 /* ObjectFileMachO.h */, - ); - path = "Mach-O"; - sourceTree = ""; - }; - 260C898A10F57C5600BB2B04 /* Process */ = { - isa = PBXGroup; - children = ( - 23E2E5351D9048E7006F38BB /* minidump */, - 26BC179F18C7F4CB00D2196D /* elf-core */, - 23AB0526199FF5D3003B8084 /* FreeBSD */, - 4CEE62F71145F1C70064CF93 /* GDB Remote */, - 2642FBA713D003B400ED6808 /* MacOSX-Kernel */, - 26A527BC14E24F5F00F3A14A /* mach-core */, - 26BC17B318C7F4FA00D2196D /* POSIX */, - 26B4666E11A2080F00CF6220 /* Utility */, - ); - path = Process; - sourceTree = ""; - }; - 260C89B110F57C5600BB2B04 /* SymbolFile */ = { - isa = PBXGroup; - children = ( - AF97744421E99467006876A7 /* Breakpad */, - AFD966B321714099006714AC /* NativePDB */, - AF6335DF1C87B20A00F7D554 /* PDB */, - 260C89B210F57C5600BB2B04 /* DWARF */, - 260C89DD10F57C5600BB2B04 /* Symtab */, - ); - path = SymbolFile; - sourceTree = ""; - }; - 260C89B210F57C5600BB2B04 /* DWARF */ = { - isa = PBXGroup; - children = ( - 4CD44CFA20B37C440003557C /* AppleDWARFIndex.cpp */, - 4CD44CFF20B37C580003557C /* AppleDWARFIndex.h */, - 6D95DC031B9DC06F000E318A /* DIERef.h */, - 6D95DC041B9DC06F000E318A /* SymbolFileDWARFDwo.h */, - 6D95DBFD1B9DC057000E318A /* DIERef.cpp */, - 6D95DBFE1B9DC057000E318A /* HashedNameToDIE.cpp */, - 6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */, - AF116BED20CF234B0071093F /* DebugNamesDWARFIndex.cpp */, - AF116BEE20CF234B0071093F /* DebugNamesDWARFIndex.h */, - 260C89B310F57C5600BB2B04 /* DWARFAbbreviationDeclaration.cpp */, - 260C89B410F57C5600BB2B04 /* DWARFAbbreviationDeclaration.h */, - 269DDD451B8FD01A00D0DBD8 /* DWARFASTParser.h */, - 269DDD491B8FD1C300D0DBD8 /* DWARFASTParserClang.h */, - 269DDD481B8FD1C300D0DBD8 /* DWARFASTParserClang.cpp */, - 260C89B610F57C5600BB2B04 /* DWARFAttribute.h */, - 266E829C1B8E542C008FCA06 /* DWARFAttribute.cpp */, - 4CD44D4020B777850003557C /* DWARFBaseDIE.cpp */, - 4CD44D4120B777850003557C /* DWARFBaseDIE.h */, - 260C89B710F57C5600BB2B04 /* DWARFCompileUnit.cpp */, - 260C89B810F57C5600BB2B04 /* DWARFCompileUnit.h */, - AF5B97D92242FC27002D3F2C /* DWARFContext.cpp */, - AF5B97DA2242FC27002D3F2C /* DWARFContext.h */, - 26AB92101819D74600E63F3E /* DWARFDataExtractor.cpp */, - 26AB92111819D74600E63F3E /* DWARFDataExtractor.h */, - 260C89B910F57C5600BB2B04 /* DWARFDebugAbbrev.cpp */, - 260C89BA10F57C5600BB2B04 /* DWARFDebugAbbrev.h */, - 260C89BB10F57C5600BB2B04 /* DWARFDebugAranges.cpp */, - 260C89BC10F57C5600BB2B04 /* DWARFDebugAranges.h */, - 260C89BD10F57C5600BB2B04 /* DWARFDebugArangeSet.cpp */, - 260C89BE10F57C5600BB2B04 /* DWARFDebugArangeSet.h */, - 260C89BF10F57C5600BB2B04 /* DWARFDebugInfo.cpp */, - 260C89C010F57C5600BB2B04 /* DWARFDebugInfo.h */, - 260C89C110F57C5600BB2B04 /* DWARFDebugInfoEntry.cpp */, - 260C89C210F57C5600BB2B04 /* DWARFDebugInfoEntry.h */, - 260C89C310F57C5600BB2B04 /* DWARFDebugLine.cpp */, - 260C89C410F57C5600BB2B04 /* DWARFDebugLine.h */, - 23E77CD61C20F29F007192AD /* DWARFDebugMacro.cpp */, - 23E77CD71C20F29F007192AD /* DWARFDebugMacro.h */, - 260C89CD10F57C5600BB2B04 /* DWARFDebugRanges.cpp */, - 260C89CE10F57C5600BB2B04 /* DWARFDebugRanges.h */, - 26B1EFAC154638AF00E2DAC7 /* DWARFDeclContext.cpp */, - 26B1EFAD154638AF00E2DAC7 /* DWARFDeclContext.h */, - 260C89CF10F57C5600BB2B04 /* DWARFDefines.cpp */, - 260C89D010F57C5600BB2B04 /* DWARFDefines.h */, - 266E82951B8CE346008FCA06 /* DWARFDIE.h */, - 266E82961B8CE3AC008FCA06 /* DWARFDIE.cpp */, - 260C89D310F57C5600BB2B04 /* DWARFFormValue.cpp */, - 260C89D410F57C5600BB2B04 /* DWARFFormValue.h */, - 4CD44CF820B37C440003557C /* DWARFIndex.cpp */, - 4CD44CFE20B37C570003557C /* DWARFIndex.h */, - 4C645D022295D3B500D3C034 /* DWARFTypeUnit.cpp */, - 4C645D032295D3B600D3C034 /* DWARFTypeUnit.h */, - 7F2AAA5920601BE000A422D8 /* DWARFUnit.cpp */, - 7F2AAA5820601BDF00A422D8 /* DWARFUnit.h */, - 26A0DA4D140F721D006DA411 /* HashedNameToDIE.h */, - 26109B3B1155D70100CC3529 /* LogChannelDWARF.cpp */, - 26109B3C1155D70100CC3529 /* LogChannelDWARF.h */, - 4CD44CF920B37C440003557C /* ManualDWARFIndex.cpp */, - 4CD44D0020B37C580003557C /* ManualDWARFIndex.h */, - 2618D9EA12406FE600F2B8FE /* NameToDIE.cpp */, - 2618D957124056C700F2B8FE /* NameToDIE.h */, - 260C89D910F57C5600BB2B04 /* SymbolFileDWARF.cpp */, - 260C89DA10F57C5600BB2B04 /* SymbolFileDWARF.h */, - 260C89DB10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.cpp */, - 260C89DC10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.h */, - 4C7D481C1F509963005314B4 /* SymbolFileDWARFDwp.cpp */, - 4C7D481E1F509964005314B4 /* SymbolFileDWARFDwp.h */, - 4C7D481F1F509964005314B4 /* SymbolFileDWARFDwoDwp.cpp */, - 4C7D481D1F509964005314B4 /* SymbolFileDWARFDwoDwp.h */, - 26B8B42212EEC52A00A831B2 /* UniqueDWARFASTType.h */, - 26B8B42312EEC52A00A831B2 /* UniqueDWARFASTType.cpp */, - ); - path = DWARF; - sourceTree = ""; - }; - 260C89DD10F57C5600BB2B04 /* Symtab */ = { - isa = PBXGroup; - children = ( - 260C89DE10F57C5600BB2B04 /* SymbolFileSymtab.cpp */, - 260C89DF10F57C5600BB2B04 /* SymbolFileSymtab.h */, - ); - path = Symtab; - sourceTree = ""; - }; - 260C89E010F57C5600BB2B04 /* SymbolVendor */ = { - isa = PBXGroup; - children = ( - 2635878D17822E56004C30BA /* ELF */, - 260C89E110F57C5600BB2B04 /* MacOSX */, - ); - path = SymbolVendor; - sourceTree = ""; - }; - 260C89E110F57C5600BB2B04 /* MacOSX */ = { - isa = PBXGroup; - children = ( - 260C89E210F57C5600BB2B04 /* SymbolVendorMacOSX.cpp */, - 260C89E310F57C5600BB2B04 /* SymbolVendorMacOSX.h */, - ); - path = MacOSX; - sourceTree = ""; - }; - 2611FEEE142D83060017FEA3 /* interface */ = { - isa = PBXGroup; - children = ( - 2611FEEF142D83060017FEA3 /* SBAddress.i */, - 254FBBA61A91672800BD6378 /* SBAttachInfo.i */, - 2611FEF0142D83060017FEA3 /* SBBlock.i */, - 2611FEF1142D83060017FEA3 /* SBBreakpoint.i */, - 2611FEF2142D83060017FEA3 /* SBBreakpointLocation.i */, - 4C05332C1F63092A00DED368 /* SBBreakpointName.i */, - 2611FEF3142D83060017FEA3 /* SBBroadcaster.i */, - 2611FEF4142D83060017FEA3 /* SBCommandInterpreter.i */, - 2611FEF5142D83060017FEA3 /* SBCommandReturnObject.i */, - 2611FEF6142D83060017FEA3 /* SBCommunication.i */, - 2611FEF7142D83060017FEA3 /* SBCompileUnit.i */, - 2611FEF8142D83060017FEA3 /* SBData.i */, - 2611FEF9142D83060017FEA3 /* SBDebugger.i */, - 9452573616262CD000325455 /* SBDeclaration.i */, - 2611FEFA142D83060017FEA3 /* SBError.i */, - 2611FEFB142D83060017FEA3 /* SBEvent.i */, - 940B02F719DC970900AD0F52 /* SBExecutionContext.i */, - 2611FEFC142D83060017FEA3 /* SBFileSpec.i */, - 2611FEFD142D83060017FEA3 /* SBFileSpecList.i */, - 2611FEFE142D83060017FEA3 /* SBFrame.i */, - 4CE4F676162CE1E100F75CB3 /* SBExpressionOptions.i */, - 2611FEFF142D83060017FEA3 /* SBFunction.i */, - 2611FF00142D83060017FEA3 /* SBHostOS.i */, - 2611FF02142D83060017FEA3 /* SBInstruction.i */, - 2611FF03142D83060017FEA3 /* SBInstructionList.i */, - 23DCBE971D63E14B0084C36B /* SBLanguageRuntime.i */, - 254FBB921A81AA5200BD6378 /* SBLaunchInfo.i */, - 2611FF04142D83060017FEA3 /* SBLineEntry.i */, - 2611FF05142D83060017FEA3 /* SBListener.i */, - 264297591D1DF2AA003F2BF4 /* SBMemoryRegionInfo.i */, - 2642975A1D1DF2AA003F2BF4 /* SBMemoryRegionInfoList.i */, - 2611FF06142D83060017FEA3 /* SBModule.i */, - 263C493B178B61CC0070F12D /* SBModuleSpec.i */, - 262F12B8183546C900AEB384 /* SBPlatform.i */, - 2611FF07142D83060017FEA3 /* SBProcess.i */, - 4987FB1C1F30EC6000E5C17D /* SBProcessInfo.i */, - AF0EBBEE1859419F0059E52F /* SBQueue.i */, - AF0EBBEF1859419F0059E52F /* SBQueueItem.i */, - 2611FF08142D83060017FEA3 /* SBSection.i */, - 2611FF09142D83060017FEA3 /* SBSourceManager.i */, - 2611FF0A142D83060017FEA3 /* SBStream.i */, - 2611FF0B142D83060017FEA3 /* SBStringList.i */, - 23DCBE981D63E14B0084C36B /* SBStructuredData.i */, - 2611FF0C142D83060017FEA3 /* SBSymbol.i */, - 2611FF0D142D83060017FEA3 /* SBSymbolContext.i */, - 2611FF0E142D83060017FEA3 /* SBSymbolContextList.i */, - 2611FF0F142D83060017FEA3 /* SBTarget.i */, - 2611FF10142D83060017FEA3 /* SBThread.i */, - 4C56543819D22FD9002E9C44 /* SBThreadPlan.i */, - 8CCB018419BA54930009FD44 /* SBThreadCollection.i */, - 2611FF11142D83060017FEA3 /* SBType.i */, - 9475C18A14E5EA1C001BFC6D /* SBTypeCategory.i */, - 23DCBE991D63E14B0084C36B /* SBTypeEnumMember.i */, - 9461569214E3567F003A195C /* SBTypeFilter.i */, - 9461569314E3567F003A195C /* SBTypeFormat.i */, - 9475C18B14E5F818001BFC6D /* SBTypeNameSpecifier.i */, - 9461569414E3567F003A195C /* SBTypeSummary.i */, - 9461569514E3567F003A195C /* SBTypeSynthetic.i */, - 23DCBE9A1D63E14B0084C36B /* SBUnixSignals.i */, - 2611FF12142D83060017FEA3 /* SBValue.i */, - 2611FF13142D83060017FEA3 /* SBValueList.i */, - 94235B9D1A8D601A00EB2EED /* SBVariablesOptions.i */, - B2A5872514313B480092BFBA /* SBWatchpoint.i */, - ); - name = interface; - path = scripts/interface; - sourceTree = SOURCE_ROOT; - }; - 26274FA414030F79006BA130 /* Darwin-Kernel */ = { - isa = PBXGroup; - children = ( - 26274FA514030F79006BA130 /* DynamicLoaderDarwinKernel.cpp */, - 26274FA614030F79006BA130 /* DynamicLoaderDarwinKernel.h */, - ); - path = "Darwin-Kernel"; - sourceTree = ""; - }; - 262D3190111B4341004E6F88 /* API */ = { - isa = PBXGroup; - children = ( - 2611FEEE142D83060017FEA3 /* interface */, - 26BC7C2510F1B3BC00F91463 /* lldb-defines.h */, - 26BC7C2610F1B3BC00F91463 /* lldb-enumerations.h */, - 26DE1E6A11616C2E00A093E2 /* lldb-forward.h */, - 26651A14133BEC76005B64B7 /* lldb-public.h */, - 26BC7C2910F1B3BC00F91463 /* lldb-types.h */, - 94145430175D7FDE00284436 /* lldb-versioning.h */, - 26B42C4C1187ABA50079C8C8 /* LLDB.h */, - 9A9830FC1125FC5800A56CB0 /* SBDefines.h */, - 26DE204211618ACA00A093E2 /* SBAddress.h */, - 26DE204411618ADA00A093E2 /* SBAddress.cpp */, - 254FBBA21A9166F100BD6378 /* SBAttachInfo.h */, - 254FBBA41A91670E00BD6378 /* SBAttachInfo.cpp */, - 26DE205611618FC500A093E2 /* SBBlock.h */, - 26DE20601161902600A093E2 /* SBBlock.cpp */, - 9AF16A9E11402D69007A7B3F /* SBBreakpoint.h */, - 9AF16A9C11402D5B007A7B3F /* SBBreakpoint.cpp */, - 9AF16CC611408686007A7B3F /* SBBreakpointLocation.h */, - 9AF16CC7114086A1007A7B3F /* SBBreakpointLocation.cpp */, - 4C54B2781F61CE1200D469CA /* SBBreakpointName.h */, - 4C54B27C1F61CE5300D469CA /* SBBreakpointName.cpp */, - 4C54B2811F62081300D469CA /* SBBreakpointOptionCommon.h */, - 4C0533291F6211FB00DED368 /* SBBreakpointOptionCommon.cpp */, - 9A9830F31125FC5800A56CB0 /* SBBroadcaster.h */, - 9A9830F21125FC5800A56CB0 /* SBBroadcaster.cpp */, - 9A9830F71125FC5800A56CB0 /* SBCommandInterpreter.h */, - 9A9830F61125FC5800A56CB0 /* SBCommandInterpreter.cpp */, - 9A9830F91125FC5800A56CB0 /* SBCommandReturnObject.h */, - 9A9830F81125FC5800A56CB0 /* SBCommandReturnObject.cpp */, - 260223E7115F06D500A601A2 /* SBCommunication.h */, - 260223E8115F06E500A601A2 /* SBCommunication.cpp */, - 26DE205411618FB800A093E2 /* SBCompileUnit.h */, - 26DE205E1161901B00A093E2 /* SBCompileUnit.cpp */, - 9443B120140C18A90013457C /* SBData.h */, - 9443B121140C18C10013457C /* SBData.cpp */, - 9A9830FB1125FC5800A56CB0 /* SBDebugger.h */, - 9A9830FA1125FC5800A56CB0 /* SBDebugger.cpp */, - 9452573816262CEF00325455 /* SBDeclaration.h */, - 9452573916262D0200325455 /* SBDeclaration.cpp */, - 2682F286115EF3BD00CCFF99 /* SBError.h */, - 2682F284115EF3A700CCFF99 /* SBError.cpp */, - 9A9830FE1125FC5800A56CB0 /* SBEvent.h */, - 9A9830FD1125FC5800A56CB0 /* SBEvent.cpp */, - 940B02F419DC96CB00AD0F52 /* SBExecutionContext.h */, - 940B02F519DC96E700AD0F52 /* SBExecutionContext.cpp */, - 4CE4F672162C971A00F75CB3 /* SBExpressionOptions.h */, - 4CE4F674162C973F00F75CB3 /* SBExpressionOptions.cpp */, - 26022531115F27FA00A601A2 /* SBFileSpec.h */, - 26022532115F281400A601A2 /* SBFileSpec.cpp */, - 4CF52AF41428291E0051E832 /* SBFileSpecList.h */, - 4CF52AF7142829390051E832 /* SBFileSpecList.cpp */, - 9A633FE8112DCE3C001A7E43 /* SBFrame.h */, - 9A633FE7112DCE3C001A7E43 /* SBFrame.cpp */, - 26DE205211618FAC00A093E2 /* SBFunction.h */, - 26DE205C1161901400A093E2 /* SBFunction.cpp */, - 9A3576A7116E9AB700E8ED2F /* SBHostOS.h */, - 9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */, - 9AC7038D117674EB0086C050 /* SBInstruction.h */, - 9AC703AE117675410086C050 /* SBInstruction.cpp */, - 9AC7038F117675270086C050 /* SBInstructionList.h */, - 9AC703B0117675490086C050 /* SBInstructionList.cpp */, - 3392EBB71AFF402200858B9F /* SBLanguageRuntime.h */, - AF20F76C1AF18FC700751A6E /* SBLanguageRuntime.cpp */, - 254FBB961A81B03100BD6378 /* SBLaunchInfo.h */, - 254FBB941A81AA7F00BD6378 /* SBLaunchInfo.cpp */, - 26DE205811618FE700A093E2 /* SBLineEntry.h */, - 26DE20621161904200A093E2 /* SBLineEntry.cpp */, - 9A9831021125FC5800A56CB0 /* SBListener.h */, - 9A9831011125FC5800A56CB0 /* SBListener.cpp */, - 264297531D1DF209003F2BF4 /* SBMemoryRegionInfo.h */, - 23DCEA421D1C4C6900A602B4 /* SBMemoryRegionInfo.cpp */, - 264297541D1DF209003F2BF4 /* SBMemoryRegionInfoList.h */, - 23DCEA431D1C4C6900A602B4 /* SBMemoryRegionInfoList.cpp */, - 26DE204E11618E9800A093E2 /* SBModule.h */, - 26DE204C11618E7A00A093E2 /* SBModule.cpp */, - 263C4939178B50CF0070F12D /* SBModuleSpec.h */, - 263C4937178B50C40070F12D /* SBModuleSpec.cpp */, - 262F12B61835469C00AEB384 /* SBPlatform.h */, - 262F12B41835468600AEB384 /* SBPlatform.cpp */, - AF0EBBEA185941360059E52F /* SBQueue.h */, - AF0EBBE6185940FB0059E52F /* SBQueue.cpp */, - AF0EBBEB185941360059E52F /* SBQueueItem.h */, - AF0EBBE7185940FB0059E52F /* SBQueueItem.cpp */, - 9A9831041125FC5800A56CB0 /* SBProcess.h */, - 9A9831031125FC5800A56CB0 /* SBProcess.cpp */, - 4987FB201F30EC9900E5C17D /* SBProcessInfo.h */, - 4987FB1E1F30EC7E00E5C17D /* SBProcessInfo.cpp */, - 26B8283C142D01E9002DBC64 /* SBSection.h */, - 26B8283F142D020F002DBC64 /* SBSection.cpp */, - 9A9831061125FC5800A56CB0 /* SBSourceManager.h */, - 9A9831051125FC5800A56CB0 /* SBSourceManager.cpp */, - 26C72C93124322890068DC16 /* SBStream.h */, - 26C72C951243229A0068DC16 /* SBStream.cpp */, - 9A357670116E7B5200E8ED2F /* SBStringList.h */, - 9A357672116E7B6400E8ED2F /* SBStringList.cpp */, - 23DCBE9F1D63E3800084C36B /* SBStructuredData.h */, - 23DCBEA01D63E6440084C36B /* SBStructuredData.cpp */, - 26DE205A11618FF600A093E2 /* SBSymbol.h */, - 26DE20641161904E00A093E2 /* SBSymbol.cpp */, - 26DE204011618AB900A093E2 /* SBSymbolContext.h */, - 26DE204611618AED00A093E2 /* SBSymbolContext.cpp */, - 268F9D52123AA15200B91E9B /* SBSymbolContextList.h */, - 268F9D54123AA16600B91E9B /* SBSymbolContextList.cpp */, - 9A9831081125FC5800A56CB0 /* SBTarget.h */, - 9A9831071125FC5800A56CB0 /* SBTarget.cpp */, - 9A98310A1125FC5800A56CB0 /* SBThread.h */, - 9A9831091125FC5800A56CB0 /* SBThread.cpp */, - 8CCB018119BA4E210009FD44 /* SBThreadCollection.h */, - 8CCB017F19BA4DD00009FD44 /* SBThreadCollection.cpp */, - 4C56543419D2297A002E9C44 /* SBThreadPlan.h */, - 4C56543619D22B32002E9C44 /* SBThreadPlan.cpp */, - 9A1E59581EB2B10D002206A5 /* SBTrace.h */, - 9A1E59521EB2B0B9002206A5 /* SBTrace.cpp */, - 9A1E59591EB2B10D002206A5 /* SBTraceOptions.h */, - 9A1E59531EB2B0B9002206A5 /* SBTraceOptions.cpp */, - 2617447911685869005ADD65 /* SBType.h */, - 261744771168585B005ADD65 /* SBType.cpp */, - 9475C18514E5E9C5001BFC6D /* SBTypeCategory.h */, - DD1E0AC9220B660100B815F8 /* SBReproducer.cpp */, - DD1E0AD0220BC3D400B815F8 /* SBReproducer.h */, - DD1E0ACB220B660E00B815F8 /* SBReproducerPrivate.h */, - 9475C18714E5E9FA001BFC6D /* SBTypeCategory.cpp */, - 23EFE388193D1ABC00E54E54 /* SBTypeEnumMember.h */, - 23EFE38A193D1AEC00E54E54 /* SBTypeEnumMember.cpp */, - 9461568614E355F2003A195C /* SBTypeFilter.h */, - 9461568A14E35621003A195C /* SBTypeFilter.cpp */, - 9461568714E355F2003A195C /* SBTypeFormat.h */, - 9461568B14E35621003A195C /* SBTypeFormat.cpp */, - 9475C18C14E5F826001BFC6D /* SBTypeNameSpecifier.h */, - 9475C18D14E5F834001BFC6D /* SBTypeNameSpecifier.cpp */, - 9461568814E355F2003A195C /* SBTypeSummary.h */, - 9461568C14E35621003A195C /* SBTypeSummary.cpp */, - 9461568914E355F2003A195C /* SBTypeSynthetic.h */, - 9461568D14E35621003A195C /* SBTypeSynthetic.cpp */, - 23059A111958B37B007B8189 /* SBUnixSignals.h */, - 23059A0F1958B319007B8189 /* SBUnixSignals.cpp */, - 9A19A6A51163BB7E00E0D453 /* SBValue.h */, - 9A19A6AD1163BB9800E0D453 /* SBValue.cpp */, - DD54302F222F190D00C1F021 /* Utils.h */, - 9A357582116CFDEE00E8ED2F /* SBValueList.h */, - 9A35758D116CFE0F00E8ED2F /* SBValueList.cpp */, - 94235B9A1A8D5FD800EB2EED /* SBVariablesOptions.h */, - 94235B9B1A8D5FF300EB2EED /* SBVariablesOptions.cpp */, - B2A58721143119810092BFBA /* SBWatchpoint.h */, - B2A58723143119D50092BFBA /* SBWatchpoint.cpp */, - 3F81692A1ABB7A16001DA9DF /* SystemInitializerFull.cpp */, - CDC75CF920B8D1DF002209BC /* SystemInitializerFull.h */, - ); - name = API; - sourceTree = ""; - }; - 2635878D17822E56004C30BA /* ELF */ = { - isa = PBXGroup; - children = ( - 2635879017822E56004C30BA /* SymbolVendorELF.cpp */, - 2635879117822E56004C30BA /* SymbolVendorELF.h */, - ); - path = ELF; - sourceTree = ""; - }; - 263641141B34AEE200145B2F /* SysV-mips64 */ = { - isa = PBXGroup; - children = ( - 263641151B34AEE200145B2F /* ABISysV_mips64.cpp */, - 263641161B34AEE200145B2F /* ABISysV_mips64.h */, - ); - path = "SysV-mips64"; - sourceTree = ""; - }; - 2642FBA713D003B400ED6808 /* MacOSX-Kernel */ = { - isa = PBXGroup; - children = ( - AF0F6E4E1739A76D009180FE /* RegisterContextKDP_arm64.cpp */, - AF0F6E4F1739A76D009180FE /* RegisterContextKDP_arm64.h */, - 2642FBA813D003B400ED6808 /* CommunicationKDP.cpp */, - 2642FBA913D003B400ED6808 /* CommunicationKDP.h */, - 2642FBAA13D003B400ED6808 /* ProcessKDP.cpp */, - 2642FBAB13D003B400ED6808 /* ProcessKDP.h */, - 2642FBAC13D003B400ED6808 /* ProcessKDPLog.cpp */, - 2642FBAD13D003B400ED6808 /* ProcessKDPLog.h */, - 265205A213D3E3F700132FE2 /* RegisterContextKDP_arm.cpp */, - 265205A313D3E3F700132FE2 /* RegisterContextKDP_arm.h */, - 265205A413D3E3F700132FE2 /* RegisterContextKDP_i386.cpp */, - 265205A513D3E3F700132FE2 /* RegisterContextKDP_i386.h */, - 265205A613D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp */, - 265205A713D3E3F700132FE2 /* RegisterContextKDP_x86_64.h */, - 2628A4D313D4977900F5487A /* ThreadKDP.cpp */, - 2628A4D413D4977900F5487A /* ThreadKDP.h */, - ); - path = "MacOSX-Kernel"; - sourceTree = ""; - }; - 2647B62E21C4364F00A81D15 /* MIPS */ = { - isa = PBXGroup; - children = ( - 2647B63021C4366300A81D15 /* ArchitectureMips.cpp */, - 2647B62F21C4366200A81D15 /* ArchitectureMips.h */, - ); - name = MIPS; - path = "New Group"; - sourceTree = ""; - }; - 264A12F91372522000875C42 /* ARM64 */ = { - isa = PBXGroup; - children = ( - 264A12FA1372522000875C42 /* EmulateInstructionARM64.cpp */, - 264A12FB1372522000875C42 /* EmulateInstructionARM64.h */, - ); - name = ARM64; - path = source/Plugins/Instruction/ARM64; - sourceTree = SOURCE_ROOT; - }; - 264A97BC133918A30017F0BE /* GDB Server */ = { - isa = PBXGroup; - children = ( - 264A97BD133918BC0017F0BE /* PlatformRemoteGDBServer.cpp */, - 264A97BE133918BC0017F0BE /* PlatformRemoteGDBServer.h */, - ); - name = "GDB Server"; - sourceTree = ""; - }; - 264E8576159BE51A00E9D7A2 /* Resources */ = { - isa = PBXGroup; - children = ( - AF90106315AB7C5700FF120D /* lldb.1 */, - 268648C116531BF800F04704 /* com.apple.debugserver.posix.plist */, - 268648C216531BF800F04704 /* com.apple.debugserver.applist.internal.plist */, - 268648C316531BF800F04704 /* com.apple.debugserver.internal.plist */, - AFF87C8E150FF688000E1742 /* com.apple.debugserver.applist.plist */, - AFF87C8C150FF680000E1742 /* com.apple.debugserver.applist.plist */, - AFF87C8A150FF677000E1742 /* com.apple.debugserver.applist.plist */, - AFF87C86150FF669000E1742 /* com.apple.debugserver.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 26579F55126A255E0007C5CB /* darwin-debug */ = { - isa = PBXGroup; - children = ( - 26368A3B126B697600E8659F /* darwin-debug.cpp */, - ); - name = "darwin-debug"; - sourceTree = ""; - }; - 265E9BE0115C2B8500D0DCCB /* debugserver */ = { - isa = PBXGroup; - children = ( - 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */, - ); - name = debugserver; - sourceTree = ""; - }; - 265E9BE2115C2BAA00D0DCCB /* Products */ = { - isa = PBXGroup; - children = ( - 26CE05A0115C31E50022F371 /* debugserver */, - 239504C51BDD3FD700963CEA /* debugserver-nonui */, - ); - name = Products; - sourceTree = ""; - }; - 2665CD0915080846002C8FAE /* install-headers */ = { - isa = PBXGroup; - children = ( - 2665CD0D15080846002C8FAE /* Makefile */, - ); - name = "install-headers"; - path = "tools/install-headers"; - sourceTree = ""; - }; - 2666ADBF1B3CB675001FAFD3 /* Hexagon-DYLD */ = { - isa = PBXGroup; - children = ( - 2666ADC11B3CB675001FAFD3 /* DynamicLoaderHexagonDYLD.cpp */, - 2666ADC21B3CB675001FAFD3 /* DynamicLoaderHexagonDYLD.h */, - 2666ADC31B3CB675001FAFD3 /* HexagonDYLDRendezvous.cpp */, - 2666ADC41B3CB675001FAFD3 /* HexagonDYLDRendezvous.h */, - ); - path = "Hexagon-DYLD"; - sourceTree = ""; - }; - 266960581199F4230075C61A /* Scripts */ = { - isa = PBXGroup; - children = ( - 266960591199F4230075C61A /* build-llvm.pl */, - 2669605A1199F4230075C61A /* build-swig-wrapper-classes.sh */, - 2669605B1199F4230075C61A /* checkpoint-llvm.pl */, - 2669605C1199F4230075C61A /* finish-swig-wrapper-classes.sh */, - 2669605D1199F4230075C61A /* install-lldb.sh */, - 2669605E1199F4230075C61A /* lldb.swig */, - 2669605F1199F4230075C61A /* Python */, - 266960631199F4230075C61A /* sed-sources */, - ); - name = Scripts; - path = scripts; - sourceTree = ""; - }; - 2669605F1199F4230075C61A /* Python */ = { - isa = PBXGroup; - children = ( - 266960601199F4230075C61A /* build-swig-Python.sh */, - 266960611199F4230075C61A /* edit-swig-python-wrapper-file.py */, - 94FE476613FC1DA8001F8475 /* finish-swig-Python-LLDB.sh */, - 9A48A3A7124AAA5A00922451 /* python-extensions.swig */, - 944DC3481774C99000D7D884 /* python-swigsafecast.swig */, - 94E367CE140C4EEA001C7A5A /* python-typemaps.swig */, - 94005E0313F438DF001EF42D /* python-wrapper.swig */, - ); - path = Python; - sourceTree = ""; - }; - 266DFE9013FD64D200D0C574 /* OperatingSystem */ = { - isa = PBXGroup; - children = ( - 2698699715E6CBD0002415FF /* Python */, - ); - path = OperatingSystem; - sourceTree = ""; - }; - 26792615211CA3C100EE1D10 /* lldb-vscode */ = { - isa = PBXGroup; - children = ( - 26792617211CA3E100EE1D10 /* CMakeLists.txt */, - 26792618211CA3E100EE1D10 /* lldb-vscode-Info.plist */, - 26792619211CA3E100EE1D10 /* lldb-vscode.cpp */, - 26792616211CA3E100EE1D10 /* package.json */, - 2660387D211CA98200329572 /* BreakpointBase.cpp */, - 26603872211CA90D00329572 /* BreakpointBase.h */, - 26603874211CA90E00329572 /* ExceptionBreakpoint.cpp */, - 26603873211CA90E00329572 /* ExceptionBreakpoint.h */, - 26603877211CA90E00329572 /* FunctionBreakpoint.cpp */, - 26603871211CA90D00329572 /* FunctionBreakpoint.h */, - 26603875211CA90E00329572 /* JSONUtils.cpp */, - 26603876211CA90E00329572 /* JSONUtils.h */, - 26F76199211CBBB30044F6EA /* LLDBUtils.cpp */, - 26F7619A211CBBB30044F6EA /* LLDBUtils.h */, - 26603870211CA90D00329572 /* SourceBreakpoint.cpp */, - 2660386D211CA90C00329572 /* SourceBreakpoint.h */, - 26F76198211CB8870044F6EA /* SourceReference.h */, - 2660386E211CA90D00329572 /* VSCode.cpp */, - 2660386F211CA90D00329572 /* VSCode.h */, - 26F7619C211CDD700044F6EA /* VSCodeForward.h */, - ); - name = "lldb-vscode"; - sourceTree = ""; - }; - 267F68461CC02DED0086832B /* SysV-s390x */ = { - isa = PBXGroup; - children = ( - 267F68471CC02DED0086832B /* ABISysV_s390x.cpp */, - 267F68481CC02DED0086832B /* ABISysV_s390x.h */, - ); - path = "SysV-s390x"; - sourceTree = ""; - }; - 2682F168115ED9C800CCFF99 /* Utility */ = { - isa = PBXGroup; - children = ( - 58EC744220EAEB6C00695209 /* CompletionRequest.h */, - 58EC744020EAEB5200695209 /* CompletionRequest.cpp */, - 6B74D89C2006972D0074051B /* Environment.h */, - 22DC561920064C9600A7E9E8 /* Environment.cpp */, - AF6CA6651FBBAF27005A0DC3 /* ArchSpec.cpp */, - AF6CA6671FBBAF37005A0DC3 /* ArchSpec.h */, - 26BC7D5710F1B77400F91463 /* Connection.h */, - 26BC7E6F10F1B85900F91463 /* Connection.cpp */, - 26FA4315130103F400E71120 /* FileSpec.h */, - 26FA43171301048600E71120 /* FileSpec.cpp */, - DD8F277D22011CC9004ED75B /* FileCollector.cpp */, - 26CF992414428766001E4138 /* AnsiTerminal.h */, - 26F996A7119B79C300412154 /* ARM_DWARF_Registers.h */, - 264A12FF137252C700875C42 /* ARM64_DWARF_Registers.h */, - AFC2DCE81E6E2F2C00283714 /* Baton.cpp */, - AFC2DCEE1E6E2FA300283714 /* Baton.h */, - 2647B63521C4368300A81D15 /* Broadcaster.h */, - 2647B63921C436AB00A81D15 /* Broadcaster.cpp */, - 264723A511FA076E00DE380C /* CleanUp.h */, - 26764C951E48F46F008D3573 /* ConstString.h */, - 26764C961E48F482008D3573 /* ConstString.cpp */, - 49CA96F01E6AAC8E00C03FEE /* DataBuffer.h */, - 49CA96F11E6AAC8E00C03FEE /* DataBufferHeap.h */, - 49CA96E61E6AAC6600C03FEE /* DataBufferHeap.cpp */, - 49CA96F21E6AAC8E00C03FEE /* DataBufferLLVM.h */, - 49CA96E71E6AAC6600C03FEE /* DataBufferLLVM.cpp */, - 49CA96F31E6AAC8E00C03FEE /* DataEncoder.h */, - 49CA96E81E6AAC6600C03FEE /* DataEncoder.cpp */, - 49CA96F41E6AAC8E00C03FEE /* DataExtractor.h */, - 49CA96E91E6AAC6600C03FEE /* DataExtractor.cpp */, - 26BC7DD310F1B7D500F91463 /* Endian.h */, - 2647B63321C4367A00A81D15 /* Event.h */, - 2647B63B21C436B400A81D15 /* Event.cpp */, - 4CBFF0471F579A36004AFA92 /* Flags.h */, - 236124A61986B50E004EFC37 /* IOObject.h */, - 236124A21986B4E2004EFC37 /* IOObject.cpp */, - 4C73152119B7D71700F865A4 /* Iterable.h */, - 942829541A89614000521B30 /* JSON.h */, - 942829551A89614C00521B30 /* JSON.cpp */, - 2647B63721C4369500A81D15 /* Listener.h */, - 2647B63D21C436BC00A81D15 /* Listener.cpp */, - 943BDEFC1AA7B2DE00789CE8 /* LLDBAssert.h */, - 943BDEFD1AA7B2F800789CE8 /* LLDBAssert.cpp */, - 3F81691C1ABA242B001DA9DF /* NameMatches.h */, - 3F8169181ABA2419001DA9DF /* NameMatches.cpp */, - 4CC57F9F222DFEA40067B7EA /* ProcessInfo.cpp */, - 26C6886D137880B900407EDF /* RegisterValue.h */, - 26C6886E137880C400407EDF /* RegisterValue.cpp */, - 26764C9C1E48F516008D3573 /* RegularExpression.h */, - 26764C9F1E48F528008D3573 /* RegularExpression.cpp */, - AFCB1D5E219CD5EA00730AD5 /* Reproducer.cpp */, - DD6C13BA220A6F21005C2AE8 /* ReproducerInstrumentation.cpp */, - 26BC7D7410F1B77400F91463 /* Scalar.h */, - 26BC7E8D10F1B85900F91463 /* Scalar.cpp */, - 26A375841D59487700D6CBDB /* SelectHelper.h */, - 26A3757F1D59462700D6CBDB /* SelectHelper.cpp */, - 261B5A5211C3F2AD00AABD0A /* SharingPtr.cpp */, - 4C2FAE2E135E3A70001EDE44 /* SharedCluster.h */, - 261B5A5311C3F2AD00AABD0A /* SharingPtr.h */, - 26BC7D7710F1B77400F91463 /* State.h */, - 26BC7E9010F1B85900F91463 /* State.cpp */, - 492DB7E61EC662B100B9E9AF /* Status.h */, - 492DB7E81EC662D100B9E9AF /* Status.cpp */, - 26764C9B1E48F50C008D3573 /* Stream.h */, - 26764C9D1E48F51E008D3573 /* Stream.cpp */, - AFC2DCF51E6E316A00283714 /* StreamCallback.cpp */, - AFC2DCF71E6E316F00283714 /* StreamCallback.h */, - AFC2DCF81E6E318000283714 /* StreamGDBRemote.cpp */, - AFC2DCFA1E6E318600283714 /* StreamGDBRemote.h */, - 26764CA31E48F550008D3573 /* StreamString.h */, - 26764CA11E48F547008D3573 /* StreamString.cpp */, - 26764CA41E48F566008D3573 /* StreamTee.h */, - 26A375831D59486000D6CBDB /* StringExtractor.h */, - 2660D9F611922A1300958FBD /* StringExtractor.cpp */, - 2676A094119C93C8008A98EF /* StringExtractorGDBRemote.h */, - 2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */, - 94380B8019940B0300BFE4A8 /* StringLexer.h */, - 94380B8119940B0A00BFE4A8 /* StringLexer.cpp */, - 9A35765E116E76A700E8ED2F /* StringList.h */, - 9A35765F116E76B900E8ED2F /* StringList.cpp */, - 26F2F8FD1B156678007857DE /* StructuredData.h */, - AFEC3361194A8ABA00FF05C6 /* StructuredData.cpp */, - AFF8FF0B1E779D4B003830EF /* TildeExpressionResolver.cpp */, - AFF8FF0D1E779D51003830EF /* TildeExpressionResolver.h */, - 26BC7D7E10F1B77400F91463 /* Timer.h */, - 26BC7E9610F1B85900F91463 /* Timer.cpp */, - 2654A6911E552F3C00DA1013 /* UriParser.h */, - 33064C991A5C7A330033D415 /* UriParser.cpp */, - AFC2DCEC1E6E2F8C00283714 /* UserID.h */, - AFC2DCEA1E6E2F7D00283714 /* UserID.cpp */, - 4CC57FA3222DFEFE0067B7EA /* UserIDResolver.h */, - 4CC57FA0222DFEA40067B7EA /* UserIDResolver.cpp */, - 49CA96F51E6AAC8E00C03FEE /* UUID.h */, - 49CA96EA1E6AAC6600C03FEE /* UUID.cpp */, - AFC2DCEF1E6E2FD200283714 /* VMRange.cpp */, - AFC2DCF11E6E2FDA00283714 /* VMRange.h */, - 2654A6921E552F4600DA1013 /* VASPrintf.h */, - 2654A68F1E552ED500DA1013 /* VASprintf.cpp */, - ); - name = Utility; - sourceTree = ""; - }; - 268A683C1321B505000E3FB8 /* Static */ = { - isa = PBXGroup; - children = ( - 268A683E1321B53B000E3FB8 /* DynamicLoaderStatic.h */, - 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */, - ); - path = Static; - sourceTree = ""; - }; - 2690CD181A6DC0D000E717C8 /* lldb-mi */ = { - isa = PBXGroup; - children = ( - 2669415B1A6DC2AB0063BE93 /* CMakeLists.txt */, - 2669415E1A6DC2AB0063BE93 /* lldb-Info.plist */, - 266941601A6DC2AB0063BE93 /* MICmdArgContext.cpp */, - 266941611A6DC2AB0063BE93 /* MICmdArgContext.h */, - 266941621A6DC2AB0063BE93 /* MICmdArgSet.cpp */, - 266941631A6DC2AB0063BE93 /* MICmdArgSet.h */, - 266941641A6DC2AB0063BE93 /* MICmdArgValBase.cpp */, - 266941651A6DC2AB0063BE93 /* MICmdArgValBase.h */, - 266941661A6DC2AB0063BE93 /* MICmdArgValConsume.cpp */, - 266941671A6DC2AB0063BE93 /* MICmdArgValConsume.h */, - 266941681A6DC2AB0063BE93 /* MICmdArgValFile.cpp */, - 266941691A6DC2AB0063BE93 /* MICmdArgValFile.h */, - 2669416A1A6DC2AC0063BE93 /* MICmdArgValListBase.cpp */, - 2669416B1A6DC2AC0063BE93 /* MICmdArgValListBase.h */, - 2669416C1A6DC2AC0063BE93 /* MICmdArgValListOfN.cpp */, - 2669416D1A6DC2AC0063BE93 /* MICmdArgValListOfN.h */, - 2669416E1A6DC2AC0063BE93 /* MICmdArgValNumber.cpp */, - 2669416F1A6DC2AC0063BE93 /* MICmdArgValNumber.h */, - 266941701A6DC2AC0063BE93 /* MICmdArgValOptionLong.cpp */, - 266941711A6DC2AC0063BE93 /* MICmdArgValOptionLong.h */, - 266941721A6DC2AC0063BE93 /* MICmdArgValOptionShort.cpp */, - 266941731A6DC2AC0063BE93 /* MICmdArgValOptionShort.h */, - 267DFB441B06752A00000FB7 /* MICmdArgValPrintValues.cpp */, - 267DFB451B06752A00000FB7 /* MICmdArgValPrintValues.h */, - 266941741A6DC2AC0063BE93 /* MICmdArgValString.cpp */, - 266941751A6DC2AC0063BE93 /* MICmdArgValString.h */, - 266941761A6DC2AC0063BE93 /* MICmdArgValThreadGrp.cpp */, - 266941771A6DC2AC0063BE93 /* MICmdArgValThreadGrp.h */, - 266941781A6DC2AC0063BE93 /* MICmdBase.cpp */, - 266941791A6DC2AC0063BE93 /* MICmdBase.h */, - 2669417A1A6DC2AC0063BE93 /* MICmdCmd.cpp */, - 2669417B1A6DC2AC0063BE93 /* MICmdCmd.h */, - 2669417C1A6DC2AC0063BE93 /* MICmdCmdBreak.cpp */, - 2669417D1A6DC2AC0063BE93 /* MICmdCmdBreak.h */, - 2669417E1A6DC2AC0063BE93 /* MICmdCmdData.cpp */, - 2669417F1A6DC2AC0063BE93 /* MICmdCmdData.h */, - 266941801A6DC2AC0063BE93 /* MICmdCmdEnviro.cpp */, - 266941811A6DC2AC0063BE93 /* MICmdCmdEnviro.h */, - 266941821A6DC2AC0063BE93 /* MICmdCmdExec.cpp */, - 266941831A6DC2AC0063BE93 /* MICmdCmdExec.h */, - 266941841A6DC2AC0063BE93 /* MICmdCmdFile.cpp */, - 266941851A6DC2AC0063BE93 /* MICmdCmdFile.h */, - 266941861A6DC2AC0063BE93 /* MICmdCmdGdbInfo.cpp */, - 266941871A6DC2AC0063BE93 /* MICmdCmdGdbInfo.h */, - 266941881A6DC2AC0063BE93 /* MICmdCmdGdbSet.cpp */, - 266941891A6DC2AC0063BE93 /* MICmdCmdGdbSet.h */, - AFB3D27E1AC262AB003B4B30 /* MICmdCmdGdbShow.cpp */, - AFB3D27F1AC262AB003B4B30 /* MICmdCmdGdbShow.h */, - 2669418A1A6DC2AC0063BE93 /* MICmdCmdGdbThread.cpp */, - 2669418B1A6DC2AC0063BE93 /* MICmdCmdGdbThread.h */, - 2669418C1A6DC2AC0063BE93 /* MICmdCmdMiscellanous.cpp */, - 2669418D1A6DC2AC0063BE93 /* MICmdCmdMiscellanous.h */, - 2669418E1A6DC2AC0063BE93 /* MICmdCmdStack.cpp */, - 2669418F1A6DC2AC0063BE93 /* MICmdCmdStack.h */, - 266941901A6DC2AC0063BE93 /* MICmdCmdSupportInfo.cpp */, - 266941911A6DC2AC0063BE93 /* MICmdCmdSupportInfo.h */, - 266941921A6DC2AC0063BE93 /* MICmdCmdSupportList.cpp */, - 266941931A6DC2AC0063BE93 /* MICmdCmdSupportList.h */, - 26D52C1D1A980FE300E5D2FB /* MICmdCmdSymbol.cpp */, - 26D52C1E1A980FE300E5D2FB /* MICmdCmdSymbol.h */, - 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */, - 266941951A6DC2AC0063BE93 /* MICmdCmdTarget.h */, - 266941961A6DC2AC0063BE93 /* MICmdCmdThread.cpp */, - 266941971A6DC2AC0063BE93 /* MICmdCmdThread.h */, - 266941981A6DC2AC0063BE93 /* MICmdCmdTrace.cpp */, - 266941991A6DC2AC0063BE93 /* MICmdCmdTrace.h */, - 2669419A1A6DC2AC0063BE93 /* MICmdCmdVar.cpp */, - 2669419B1A6DC2AC0063BE93 /* MICmdCmdVar.h */, - 2669419C1A6DC2AC0063BE93 /* MICmdCommands.cpp */, - 2669419D1A6DC2AC0063BE93 /* MICmdCommands.h */, - 2669419E1A6DC2AC0063BE93 /* MICmdData.cpp */, - 2669419F1A6DC2AC0063BE93 /* MICmdData.h */, - 266941A01A6DC2AC0063BE93 /* MICmdFactory.cpp */, - 266941A11A6DC2AC0063BE93 /* MICmdFactory.h */, - 266941A21A6DC2AC0063BE93 /* MICmdInterpreter.cpp */, - 266941A31A6DC2AC0063BE93 /* MICmdInterpreter.h */, - 266941A41A6DC2AC0063BE93 /* MICmdInvoker.cpp */, - 266941A51A6DC2AC0063BE93 /* MICmdInvoker.h */, - 266941A61A6DC2AC0063BE93 /* MICmdMgr.cpp */, - 266941A71A6DC2AC0063BE93 /* MICmdMgr.h */, - 266941A81A6DC2AC0063BE93 /* MICmdMgrSetCmdDeleteCallback.cpp */, - 266941A91A6DC2AC0063BE93 /* MICmdMgrSetCmdDeleteCallback.h */, - 266941AA1A6DC2AC0063BE93 /* MICmnBase.cpp */, - 266941AB1A6DC2AC0063BE93 /* MICmnBase.h */, - 266941AC1A6DC2AC0063BE93 /* MICmnConfig.h */, - 266941AD1A6DC2AC0063BE93 /* MICmnLLDBBroadcaster.cpp */, - 266941AE1A6DC2AC0063BE93 /* MICmnLLDBBroadcaster.h */, - 266941AF1A6DC2AC0063BE93 /* MICmnLLDBDebugger.cpp */, - 266941B01A6DC2AC0063BE93 /* MICmnLLDBDebugger.h */, - 266941B11A6DC2AC0063BE93 /* MICmnLLDBDebuggerHandleEvents.cpp */, - 266941B21A6DC2AC0063BE93 /* MICmnLLDBDebuggerHandleEvents.h */, - 266941B31A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfo.cpp */, - 266941B41A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfo.h */, - 266941B51A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfoVarObj.cpp */, - 266941B61A6DC2AC0063BE93 /* MICmnLLDBDebugSessionInfoVarObj.h */, - 266941B71A6DC2AC0063BE93 /* MICmnLLDBProxySBValue.cpp */, - 266941B81A6DC2AC0063BE93 /* MICmnLLDBProxySBValue.h */, - 266941B91A6DC2AC0063BE93 /* MICmnLLDBUtilSBValue.cpp */, - 266941BA1A6DC2AC0063BE93 /* MICmnLLDBUtilSBValue.h */, - 266941BB1A6DC2AC0063BE93 /* MICmnLog.cpp */, - 266941BC1A6DC2AC0063BE93 /* MICmnLog.h */, - 266941BD1A6DC2AC0063BE93 /* MICmnLogMediumFile.cpp */, - 266941BE1A6DC2AC0063BE93 /* MICmnLogMediumFile.h */, - 266941BF1A6DC2AC0063BE93 /* MICmnMIOutOfBandRecord.cpp */, - 266941C01A6DC2AC0063BE93 /* MICmnMIOutOfBandRecord.h */, - 266941C11A6DC2AC0063BE93 /* MICmnMIResultRecord.cpp */, - 266941C21A6DC2AC0063BE93 /* MICmnMIResultRecord.h */, - 266941C31A6DC2AC0063BE93 /* MICmnMIValue.cpp */, - 266941C41A6DC2AC0063BE93 /* MICmnMIValue.h */, - 266941C51A6DC2AC0063BE93 /* MICmnMIValueConst.cpp */, - 266941C61A6DC2AC0063BE93 /* MICmnMIValueConst.h */, - 266941C71A6DC2AC0063BE93 /* MICmnMIValueList.cpp */, - 266941C81A6DC2AC0063BE93 /* MICmnMIValueList.h */, - 266941C91A6DC2AC0063BE93 /* MICmnMIValueResult.cpp */, - 266941CA1A6DC2AC0063BE93 /* MICmnMIValueResult.h */, - 266941CB1A6DC2AC0063BE93 /* MICmnMIValueTuple.cpp */, - 266941CC1A6DC2AC0063BE93 /* MICmnMIValueTuple.h */, - 266941CD1A6DC2AC0063BE93 /* MICmnResources.cpp */, - 266941CE1A6DC2AC0063BE93 /* MICmnResources.h */, - 266941CF1A6DC2AC0063BE93 /* MICmnStreamStderr.cpp */, - 266941D01A6DC2AC0063BE93 /* MICmnStreamStderr.h */, - 266941D11A6DC2AC0063BE93 /* MICmnStreamStdin.cpp */, - 266941D21A6DC2AC0063BE93 /* MICmnStreamStdin.h */, - 266941D71A6DC2AC0063BE93 /* MICmnStreamStdout.cpp */, - 266941D81A6DC2AC0063BE93 /* MICmnStreamStdout.h */, - 266941D91A6DC2AC0063BE93 /* MICmnThreadMgrStd.cpp */, - 266941DA1A6DC2AC0063BE93 /* MICmnThreadMgrStd.h */, - 266941DB1A6DC2AC0063BE93 /* MIDataTypes.h */, - 266941DC1A6DC2AC0063BE93 /* MIDriver.cpp */, - 266941DD1A6DC2AC0063BE93 /* MIDriver.h */, - 266941DE1A6DC2AC0063BE93 /* MIDriverBase.cpp */, - 266941DF1A6DC2AC0063BE93 /* MIDriverBase.h */, - 266941E01A6DC2AC0063BE93 /* MIDriverMain.cpp */, - 266941E11A6DC2AC0063BE93 /* MIDriverMgr.cpp */, - 266941E21A6DC2AC0063BE93 /* MIDriverMgr.h */, - 266941E31A6DC2AC0063BE93 /* MIReadMe.txt */, - 266941E41A6DC2AC0063BE93 /* MIUtilDateTimeStd.cpp */, - 266941E51A6DC2AC0063BE93 /* MIUtilDateTimeStd.h */, - 266941E61A6DC2AC0063BE93 /* MIUtilDebug.cpp */, - 266941E71A6DC2AC0063BE93 /* MIUtilDebug.h */, - 266941E81A6DC2AC0063BE93 /* MIUtilFileStd.cpp */, - 266941E91A6DC2AC0063BE93 /* MIUtilFileStd.h */, - 266941EA1A6DC2AC0063BE93 /* MIUtilMapIdToVariant.cpp */, - 266941EB1A6DC2AC0063BE93 /* MIUtilMapIdToVariant.h */, - 266941EC1A6DC2AC0063BE93 /* MIUtilSingletonBase.h */, - 266941ED1A6DC2AC0063BE93 /* MIUtilSingletonHelper.h */, - 266941EE1A6DC2AC0063BE93 /* MIUtilString.cpp */, - 266941EF1A6DC2AC0063BE93 /* MIUtilString.h */, - 266941F81A6DC2AC0063BE93 /* MIUtilThreadBaseStd.cpp */, - 266941F91A6DC2AC0063BE93 /* MIUtilThreadBaseStd.h */, - 266941FA1A6DC2AC0063BE93 /* MIUtilVariant.cpp */, - 266941FB1A6DC2AC0063BE93 /* MIUtilVariant.h */, - 266941FD1A6DC2AC0063BE93 /* Platform.h */, - ); - path = "lldb-mi"; - sourceTree = ""; - }; - 2692BA12136610C100F9E14D /* InstEmulation */ = { - isa = PBXGroup; - children = ( - 2692BA13136610C100F9E14D /* UnwindAssemblyInstEmulation.cpp */, - 2692BA14136610C100F9E14D /* UnwindAssemblyInstEmulation.h */, - ); - path = InstEmulation; - sourceTree = ""; - }; - 2692BA17136611CD00F9E14D /* x86 */ = { - isa = PBXGroup; - children = ( - AF415AE51D949E4400FCE0D4 /* x86AssemblyInspectionEngine.cpp */, - AF415AE61D949E4400FCE0D4 /* x86AssemblyInspectionEngine.h */, - 263E949D13661AE400E7D1CE /* UnwindAssembly-x86.cpp */, - 263E949E13661AE400E7D1CE /* UnwindAssembly-x86.h */, - ); - path = x86; - sourceTree = ""; - }; - 2694E99814FC0BB30076DE67 /* FreeBSD */ = { - isa = PBXGroup; - children = ( - 2694E99A14FC0BB30076DE67 /* PlatformFreeBSD.cpp */, - 2694E99B14FC0BB30076DE67 /* PlatformFreeBSD.h */, - ); - path = FreeBSD; - sourceTree = ""; - }; - 2694E99F14FC0BBD0076DE67 /* Linux */ = { - isa = PBXGroup; - children = ( - 2694E9A114FC0BBD0076DE67 /* PlatformLinux.cpp */, - 2694E9A214FC0BBD0076DE67 /* PlatformLinux.h */, - ); - path = Linux; - sourceTree = ""; - }; - 2698699715E6CBD0002415FF /* Python */ = { - isa = PBXGroup; - children = ( - 2698699815E6CBD0002415FF /* OperatingSystemPython.cpp */, - 2698699915E6CBD0002415FF /* OperatingSystemPython.h */, - ); - path = Python; - sourceTree = ""; - }; - 26A3B4AB1181454800381BC2 /* BSD-Archive */ = { - isa = PBXGroup; - children = ( - 26A3B4AC1181454800381BC2 /* ObjectContainerBSDArchive.cpp */, - 26A3B4AD1181454800381BC2 /* ObjectContainerBSDArchive.h */, - ); - path = "BSD-Archive"; - sourceTree = ""; - }; - 26A527BC14E24F5F00F3A14A /* mach-core */ = { - isa = PBXGroup; - children = ( - 26A527BD14E24F5F00F3A14A /* ProcessMachCore.cpp */, - 26A527BE14E24F5F00F3A14A /* ProcessMachCore.h */, - 26A527BF14E24F5F00F3A14A /* ThreadMachCore.cpp */, - 26A527C014E24F5F00F3A14A /* ThreadMachCore.h */, - ); - path = "mach-core"; - sourceTree = ""; - }; - 26AC3F441365F40E0065C7EF /* UnwindAssembly */ = { - isa = PBXGroup; - children = ( - 2692BA12136610C100F9E14D /* InstEmulation */, - 2692BA17136611CD00F9E14D /* x86 */, - ); - path = UnwindAssembly; - sourceTree = ""; - }; - 26B4666E11A2080F00CF6220 /* Utility */ = { - isa = PBXGroup; - children = ( - AF7BD81A22B04E20008E78D1 /* AuxVector.cpp */, - 9A0FDE951E8EF5010086B2F5 /* RegisterContext_mips.h */, - 9A0FDE961E8EF5010086B2F5 /* RegisterContext_s390x.h */, - 9A0FDE971E8EF5010086B2F5 /* RegisterContextLinux_mips.cpp */, - 9A0FDE981E8EF5010086B2F5 /* RegisterContextLinux_mips.h */, - 9A0FDE991E8EF5010086B2F5 /* RegisterInfos_arm.h */, - 9A0FDE9A1E8EF5010086B2F5 /* RegisterInfos_arm64.h */, - 9A0FDE9B1E8EF5010086B2F5 /* RegisterInfos_mips.h */, - 9AD9449B1E8DB267004796ED /* RegisterContextNetBSD_x86_64.cpp */, - 9AD9449C1E8DB267004796ED /* RegisterContextNetBSD_x86_64.h */, - 23F403471926C8D50046DC9B /* NativeRegisterContextRegisterInfo.h */, - 23F403481926CC250046DC9B /* NativeRegisterContextRegisterInfo.cpp */, - B287E63E12EFAE2C00C9BEFE /* ARMDefines.h */, - B23DD24F12EDFAC1000C3894 /* ARMUtils.h */, - 26954EBC1401EE8B00294D09 /* DynamicRegisterInfo.cpp */, - 26954EBD1401EE8B00294D09 /* DynamicRegisterInfo.h */, - AF23B4D919009C66003E2A58 /* FreeBSDSignals.cpp */, - AF23B4DA19009C66003E2A58 /* FreeBSDSignals.h */, - E73A15A41B548EC500786197 /* GDBRemoteSignals.cpp */, - E73A15A51B548EC500786197 /* GDBRemoteSignals.h */, - AF1729D4182C907200E0AB97 /* HistoryThread.cpp */, - AF061F89182C980000B6A19C /* HistoryThread.h */, - AF1729D5182C907200E0AB97 /* HistoryUnwind.cpp */, - AF061F8A182C980000B6A19C /* HistoryUnwind.h */, - B28058A0139988B0002D96D0 /* InferiorCallPOSIX.cpp */, - B28058A2139988C6002D96D0 /* InferiorCallPOSIX.h */, - B2D3033612EFA5C500F84EB3 /* InstructionUtils.h */, - 2647B64221C43BB000A81D15 /* LinuxProcMaps.cpp */, - 2647B64121C43BAF00A81D15 /* LinuxProcMaps.h */, - 23059A0519532B96007B8189 /* LinuxSignals.cpp */, - 23059A0619532B96007B8189 /* LinuxSignals.h */, - 23173F8B192BA93F005C708F /* lldb-x86-register-enums.h */, - 26B75B421AD6E29A001F7A57 /* MipsLinuxSignals.cpp */, - 26B75B431AD6E29A001F7A57 /* MipsLinuxSignals.h */, - AF33B4BC1C1FA441001B28D9 /* NetBSDSignals.cpp */, - AF33B4BD1C1FA441001B28D9 /* NetBSDSignals.h */, - AF77E0991A033D360096C0EA /* RegisterContext_powerpc.h */, - 26474C9F18D0CAEC0073DEBA /* RegisterContext_x86.h */, - 26957D9213D381C900670048 /* RegisterContextDarwin_arm.cpp */, - 26957D9313D381C900670048 /* RegisterContextDarwin_arm.h */, - AF9107EC168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp */, - AF9107ED168570D200DBCD3C /* RegisterContextDarwin_arm64.h */, - 26957D9413D381C900670048 /* RegisterContextDarwin_i386.cpp */, - 26957D9513D381C900670048 /* RegisterContextDarwin_i386.h */, - 26957D9613D381C900670048 /* RegisterContextDarwin_x86_64.cpp */, - 26957D9713D381C900670048 /* RegisterContextDarwin_x86_64.h */, - 944372DA171F6B4300E57C32 /* RegisterContextDummy.cpp */, - 944372DB171F6B4300E57C32 /* RegisterContextDummy.h */, - 26474CA218D0CB070073DEBA /* RegisterContextFreeBSD_i386.cpp */, - 26474CA318D0CB070073DEBA /* RegisterContextFreeBSD_i386.h */, - 26474CA418D0CB070073DEBA /* RegisterContextFreeBSD_mips64.cpp */, - 26474CA518D0CB070073DEBA /* RegisterContextFreeBSD_mips64.h */, - AF77E09A1A033D360096C0EA /* RegisterContextFreeBSD_powerpc.cpp */, - AF77E09B1A033D360096C0EA /* RegisterContextFreeBSD_powerpc.h */, - 26474CA618D0CB070073DEBA /* RegisterContextFreeBSD_x86_64.cpp */, - 26474CA718D0CB070073DEBA /* RegisterContextFreeBSD_x86_64.h */, - AF061F85182C97ED00B6A19C /* RegisterContextHistory.cpp */, - AF061F86182C97ED00B6A19C /* RegisterContextHistory.h */, - 26474CAE18D0CB180073DEBA /* RegisterContextLinux_i386.cpp */, - 26474CAF18D0CB180073DEBA /* RegisterContextLinux_i386.h */, - 256CBDB81ADD107200BC6CDC /* RegisterContextLinux_mips64.cpp */, - 256CBDB91ADD107200BC6CDC /* RegisterContextLinux_mips64.h */, - 267F68511CC02E920086832B /* RegisterContextLinux_s390x.cpp */, - 267F68521CC02E920086832B /* RegisterContextLinux_s390x.h */, - 26474CB018D0CB180073DEBA /* RegisterContextLinux_x86_64.cpp */, - 26474CB118D0CB180073DEBA /* RegisterContextLinux_x86_64.h */, - AF68D2541255416E002FF25B /* RegisterContextLLDB.cpp */, - AF68D2551255416E002FF25B /* RegisterContextLLDB.h */, - 26474CB618D0CB2D0073DEBA /* RegisterContextMach_arm.cpp */, - 26474CB718D0CB2D0073DEBA /* RegisterContextMach_arm.h */, - 26474CB818D0CB2D0073DEBA /* RegisterContextMach_i386.cpp */, - 26474CB918D0CB2D0073DEBA /* RegisterContextMach_i386.h */, - 26474CBA18D0CB2D0073DEBA /* RegisterContextMach_x86_64.cpp */, - 26474CBB18D0CB2D0073DEBA /* RegisterContextMach_x86_64.h */, - AF77E09C1A033D360096C0EA /* RegisterContextMacOSXFrameBackchain.cpp */, - 26E3EEF811A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.h */, - 262D24E413FB8710002D1960 /* RegisterContextMemory.cpp */, - 262D24E513FB8710002D1960 /* RegisterContextMemory.h */, - 4CE4EFAB1E899A1200A80C06 /* RegisterContextOpenBSD_i386.cpp */, - 4CE4EFAC1E899A1200A80C06 /* RegisterContextOpenBSD_i386.h */, - 4CE4EFAD1E899A1200A80C06 /* RegisterContextOpenBSD_x86_64.cpp */, - 4CE4EFAE1E899A1200A80C06 /* RegisterContextOpenBSD_x86_64.h */, - 256CBDBE1ADD11C000BC6CDC /* RegisterContextPOSIX_arm.cpp */, - 256CBDBF1ADD11C000BC6CDC /* RegisterContextPOSIX_arm.h */, - E7723D4A1AC4A944002BA082 /* RegisterContextPOSIX_arm64.cpp */, - E7723D4B1AC4A944002BA082 /* RegisterContextPOSIX_arm64.h */, - 26474CC418D0CB5B0073DEBA /* RegisterContextPOSIX_mips64.cpp */, - 26474CC518D0CB5B0073DEBA /* RegisterContextPOSIX_mips64.h */, - AF77E09D1A033D360096C0EA /* RegisterContextPOSIX_powerpc.cpp */, - AF77E09E1A033D360096C0EA /* RegisterContextPOSIX_powerpc.h */, - AF235EAE1FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.cpp */, - AF235EAF1FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.h */, - 267F68551CC02EAE0086832B /* RegisterContextPOSIX_s390x.cpp */, - 267F68561CC02EAE0086832B /* RegisterContextPOSIX_s390x.h */, - 26474CC618D0CB5B0073DEBA /* RegisterContextPOSIX_x86.cpp */, - 26474CC718D0CB5B0073DEBA /* RegisterContextPOSIX_x86.h */, - 26CA979F172B1FD5005DC71B /* RegisterContextThreadMemory.cpp */, - 26CA97A0172B1FD5005DC71B /* RegisterContextThreadMemory.h */, - 23EDE3371926AAD500F6A132 /* RegisterInfoInterface.h */, - 9A77AD501E64E24E0025CE04 /* RegisterInfoPOSIX_arm.cpp */, - 9A77AD511E64E24E0025CE04 /* RegisterInfoPOSIX_arm.h */, - 237A8BAB1DEC9BBC00CEBAFF /* RegisterInfoPOSIX_arm64.cpp */, - 237A8BAC1DEC9BBC00CEBAFF /* RegisterInfoPOSIX_arm64.h */, - AF235EB31FBE7858009C5541 /* RegisterInfoPOSIX_ppc64le.cpp */, - AF235EB21FBE7857009C5541 /* RegisterInfoPOSIX_ppc64le.h */, - 26474CD018D0CB700073DEBA /* RegisterInfos_i386.h */, - 26474CD118D0CB710073DEBA /* RegisterInfos_mips64.h */, - AF77E09F1A033D360096C0EA /* RegisterInfos_powerpc.h */, - 267F68591CC02EBE0086832B /* RegisterInfos_s390x.h */, - 26474CD218D0CB710073DEBA /* RegisterInfos_x86_64.h */, - 2615DBC81208B5FC0021781D /* StopInfoMachException.cpp */, - 2615DBC91208B5FC0021781D /* StopInfoMachException.h */, - 26F4A21A13FBA31A0064B613 /* ThreadMemory.cpp */, - 26F4A21B13FBA31A0064B613 /* ThreadMemory.h */, - AF68D32F1255A110002FF25B /* UnwindLLDB.cpp */, - AF68D3301255A110002FF25B /* UnwindLLDB.h */, - 26E3EEE311A9901300FBADB6 /* UnwindMacOSXFrameBackchain.cpp */, - 26E3EEE411A9901300FBADB6 /* UnwindMacOSXFrameBackchain.h */, - 26E3EEF711A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.cpp */, - 26474CC218D0CB5B0073DEBA /* RegisterContextMemory.cpp */, - 26474CC318D0CB5B0073DEBA /* RegisterContextMemory.h */, - ); - name = Utility; - sourceTree = ""; - }; - 26BC179F18C7F4CB00D2196D /* elf-core */ = { - isa = PBXGroup; - children = ( - 256CBDB21ADD0EFD00BC6CDC /* RegisterContextPOSIXCore_arm.cpp */, - 256CBDB31ADD0EFD00BC6CDC /* RegisterContextPOSIXCore_arm.h */, - E7723D421AC4A7FB002BA082 /* RegisterContextPOSIXCore_arm64.cpp */, - E7723D431AC4A7FB002BA082 /* RegisterContextPOSIXCore_arm64.h */, - 26BC17A218C7F4CB00D2196D /* ProcessElfCore.cpp */, - 26BC17A318C7F4CB00D2196D /* ProcessElfCore.h */, - 26BC17A418C7F4CB00D2196D /* RegisterContextPOSIXCore_mips64.cpp */, - 26BC17A518C7F4CB00D2196D /* RegisterContextPOSIXCore_mips64.h */, - AF77E0A71A033D740096C0EA /* RegisterContextPOSIXCore_powerpc.cpp */, - AF77E0A81A033D740096C0EA /* RegisterContextPOSIXCore_powerpc.h */, - AF9113FB1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.cpp */, - AF9113FC1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.h */, - 267F684D1CC02E270086832B /* RegisterContextPOSIXCore_s390x.cpp */, - 267F684E1CC02E270086832B /* RegisterContextPOSIXCore_s390x.h */, - 26BC17A618C7F4CB00D2196D /* RegisterContextPOSIXCore_x86_64.cpp */, - 26BC17A718C7F4CB00D2196D /* RegisterContextPOSIXCore_x86_64.h */, - 4CA9D13C1FCE07AF00300E18 /* RegisterUtilities.cpp */, - 4CA9D13D1FCE07AF00300E18 /* RegisterUtilities.h */, - 26BC17A818C7F4CB00D2196D /* ThreadElfCore.cpp */, - 26BC17A918C7F4CB00D2196D /* ThreadElfCore.h */, - ); - path = "elf-core"; - sourceTree = ""; - }; - 26BC17B318C7F4FA00D2196D /* POSIX */ = { - isa = PBXGroup; - children = ( - AF3F54AE1B3BA59C00186E73 /* CrashReason.cpp */, - AF3F54AF1B3BA59C00186E73 /* CrashReason.h */, - 26BC17BA18C7F4FA00D2196D /* ProcessMessage.cpp */, - 26BC17BB18C7F4FA00D2196D /* ProcessMessage.h */, - 26BC17BE18C7F4FA00D2196D /* ProcessPOSIXLog.cpp */, - 26BC17BF18C7F4FA00D2196D /* ProcessPOSIXLog.h */, - ); - path = POSIX; - sourceTree = ""; - }; - 26BC7C1010F1B34800F91463 /* Core */ = { - isa = PBXGroup; - children = ( - 58A080A92112AA9400D5580F /* Highlighter.cpp */, - 26BC7D5010F1B77400F91463 /* Address.h */, - 26BC7E6910F1B85900F91463 /* Address.cpp */, - 26BC7D5110F1B77400F91463 /* AddressRange.h */, - 26BC7E6A10F1B85900F91463 /* AddressRange.cpp */, - 9AC7033E11752C540086C050 /* AddressResolver.h */, - 9AC7034011752C6B0086C050 /* AddressResolver.cpp */, - 9AC7033D11752C4C0086C050 /* AddressResolverFileLine.h */, - 9AC7034211752C720086C050 /* AddressResolverFileLine.cpp */, - 9AC7033F11752C590086C050 /* AddressResolverName.h */, - 9AC7034411752C790086C050 /* AddressResolverName.cpp */, - 26BC7D5510F1B77400F91463 /* ClangForward.h */, - 26BC7D5610F1B77400F91463 /* Communication.h */, - 26BC7E6E10F1B85900F91463 /* Communication.cpp */, - 263664941140A4C10075843B /* Debugger.h */, - 263664921140A4930075843B /* Debugger.cpp */, - 26BC7D5E10F1B77400F91463 /* Disassembler.h */, - 26BC7E7610F1B85900F91463 /* Disassembler.cpp */, - 4C4EB7821E6A4DE7002035C0 /* DumpDataExtractor.h */, - 4C4EB77F1E6A4DB8002035C0 /* DumpDataExtractor.cpp */, - AFA585CF2107EB7300D7689A /* DumpRegisterValue.cpp */, - 26BC7D5F10F1B77400F91463 /* dwarf.h */, - 26D9FDC612F784E60003F2EE /* EmulateInstruction.h */, - 26D9FDC812F784FD0003F2EE /* EmulateInstruction.cpp */, - 26BD407D135D2AC400237D80 /* FileLineResolver.h */, - 26BD407E135D2ADF00237D80 /* FileLineResolver.cpp */, - 26BC7D6310F1B77400F91463 /* FileSpecList.h */, - 26BC7E7B10F1B85900F91463 /* FileSpecList.cpp */, - 263FDE5D1A799F2D00E68013 /* FormatEntity.h */, - 263FDE5F1A79A01500E68013 /* FormatEntity.cpp */, - 260A63161861008E00FECF8E /* IOHandler.h */, - 260A63181861009E00FECF8E /* IOHandler.cpp */, - 26BC7D6510F1B77400F91463 /* IOStreamMacros.h */, - 26BC7D6810F1B77400F91463 /* Log.h */, - 26BC7E7F10F1B85900F91463 /* Log.cpp */, - 3F8160A71AB9F809001DA9DF /* Logging.h */, - 3F8160A51AB9F7DD001DA9DF /* Logging.cpp */, - 26BC7D6910F1B77400F91463 /* Mangled.h */, - 26BC7E8010F1B85900F91463 /* Mangled.cpp */, - 2682100C143A59AE004BCF2D /* MappedHash.h */, - 26BC7D6A10F1B77400F91463 /* Module.h */, - 26BC7E8110F1B85900F91463 /* Module.cpp */, - 26BC7D6B10F1B77400F91463 /* ModuleChild.h */, - 26BC7E8210F1B85900F91463 /* ModuleChild.cpp */, - 26BC7D6C10F1B77400F91463 /* ModuleList.h */, - 26BC7E8310F1B85900F91463 /* ModuleList.cpp */, - 260D9B2615EC369500960137 /* ModuleSpec.h */, - 26651A15133BF9CC005B64B7 /* Opcode.h */, - 26651A17133BF9DF005B64B7 /* Opcode.cpp */, - 266DFE9813FD658300D0C574 /* OperatingSystem.h */, - 266DFE9613FD656E00D0C574 /* OperatingSystem.cpp */, - 26BC7D7010F1B77400F91463 /* PluginInterface.h */, - 26BC7D7110F1B77400F91463 /* PluginManager.h */, - 26BC7E8A10F1B85900F91463 /* PluginManager.cpp */, - 2626B6AD143E1BEA00EF935C /* RangeMap.h */, - 4FBC04EE211A06820015A814 /* RichManglingContext.h */, - 4FBC04EC211A06200015A814 /* RichManglingContext.cpp */, - 26BC7CF910F1B71400F91463 /* SearchFilter.h */, - 26BC7E1510F1B83100F91463 /* SearchFilter.cpp */, - 26BC7D7510F1B77400F91463 /* Section.h */, - 26BC7E8E10F1B85900F91463 /* Section.cpp */, - 26BC7D7610F1B77400F91463 /* SourceManager.h */, - 26BC7E8F10F1B85900F91463 /* SourceManager.cpp */, - 26BC7D7810F1B77400F91463 /* STLUtils.h */, - 9A4F35111368A54100823F52 /* StreamAsynchronousIO.h */, - 9A4F350F1368A51A00823F52 /* StreamAsynchronousIO.cpp */, - 2623096E13D0EFFB006381D9 /* StreamBuffer.h */, - 26BC7D7A10F1B77400F91463 /* StreamFile.h */, - 26BC7E9210F1B85900F91463 /* StreamFile.cpp */, - 26B167A41123BF5500DC7B4F /* ThreadSafeValue.h */, - 263FEDA5112CC1DA00E4C208 /* ThreadSafeSTLMap.h */, - 940B01FE1D2D82220058795E /* ThreadSafeSTLVector.h */, - 94ED54A119C8A822007BE2EA /* ThreadSafeDenseMap.h */, - 9449B8031B30E0690019342B /* ThreadSafeDenseSet.h */, - 268A813F115B19D000F645B0 /* UniqueCStringMap.h */, - 9A4633DA11F65D8600955CE1 /* UserSettingsController.h */, - 9A4633DC11F65D9A00955CE1 /* UserSettingsController.cpp */, - 26BC7D8110F1B77400F91463 /* Value.h */, - 26BC7E9910F1B85900F91463 /* Value.cpp */, - 26BC7D8210F1B77400F91463 /* ValueObject.h */, - 26BC7E9A10F1B85900F91463 /* ValueObject.cpp */, - 94094C68163B6CCC0083A547 /* ValueObjectCast.h */, - 94094C69163B6CD90083A547 /* ValueObjectCast.cpp */, - 26BC7D8310F1B77400F91463 /* ValueObjectChild.h */, - 26BC7E9B10F1B85900F91463 /* ValueObjectChild.cpp */, - 26424E3E125986D30016D82C /* ValueObjectConstResult.h */, - 26424E3C125986CB0016D82C /* ValueObjectConstResult.cpp */, - AF9472701B575E5F0063D65C /* ValueObjectConstResultCast.h */, - AF94726E1B575E430063D65C /* ValueObjectConstResultCast.cpp */, - 94FA3DDD1405D4E500833217 /* ValueObjectConstResultChild.h */, - 94FA3DDF1405D50300833217 /* ValueObjectConstResultChild.cpp */, - 949ADF001406F62E004833E1 /* ValueObjectConstResultImpl.h */, - 949ADF021406F648004833E1 /* ValueObjectConstResultImpl.cpp */, - 4CD0BD0C134BFAB600CB44D4 /* ValueObjectDynamicValue.h */, - 4CD0BD0E134BFADF00CB44D4 /* ValueObjectDynamicValue.cpp */, - 26BC7D8410F1B77400F91463 /* ValueObjectList.h */, - 26BC7E9C10F1B85900F91463 /* ValueObjectList.cpp */, - 4CABA9DC134A8BA700539BDD /* ValueObjectMemory.h */, - 4CABA9DF134A8BCD00539BDD /* ValueObjectMemory.cpp */, - 2643343A1110F63C00CDB6C6 /* ValueObjectRegister.h */, - 264334381110F63100CDB6C6 /* ValueObjectRegister.cpp */, - 94B6E76013D8833C005F417F /* ValueObjectSyntheticFilter.h */, - 94B6E76113D88362005F417F /* ValueObjectSyntheticFilter.cpp */, - 26BC7D8510F1B77400F91463 /* ValueObjectVariable.h */, - 26BC7E9D10F1B85900F91463 /* ValueObjectVariable.cpp */, - ); - name = Core; - sourceTree = ""; - }; - 26BC7C4B10F1B6C100F91463 /* Symbol */ = { - isa = PBXGroup; - children = ( - 3032B1B91CAAA400004BE1AB /* ClangUtil.h */, - 3032B1B61CAAA3D1004BE1AB /* ClangUtil.cpp */, - 6D0F613C1C80AA8900A4ECEE /* DebugMacros.h */, - 6D9AB3DE1BB2B76B003F2289 /* TypeMap.h */, - 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */, - 6D99A3621BBC2F3200979793 /* ArmUnwindInfo.cpp */, - 6D99A3611BBC2F1600979793 /* ArmUnwindInfo.h */, - 26BC7C5510F1B6E900F91463 /* Block.h */, - 26BC7F1310F1B8EC00F91463 /* Block.cpp */, - 26BC7C5610F1B6E900F91463 /* ClangASTContext.h */, - 26BC7F1410F1B8EC00F91463 /* ClangASTContext.cpp */, - 49D8FB3713B5594900411094 /* ClangASTImporter.h */, - 49D8FB3513B558DE00411094 /* ClangASTImporter.cpp */, - 265192C41BA8E8F8002F08F6 /* CompilerDecl.h */, - 265192C51BA8E905002F08F6 /* CompilerDecl.cpp */, - 2657AFB51B8690EC00958979 /* CompilerDeclContext.h */, - 2657AFB61B86910100958979 /* CompilerDeclContext.cpp */, - 49E45FA911F660DC008F7B28 /* CompilerType.h */, - 49E45FAD11F660FE008F7B28 /* CompilerType.cpp */, - 495B38431489714C002708C5 /* ClangExternalASTSourceCommon.h */, - 4966DCC3148978A10028481B /* ClangExternalASTSourceCommon.cpp */, - 26E6902E129C6BD500DDECD9 /* ClangExternalASTSourceCallbacks.h */, - 26E69030129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp */, - 964463ED1A330C1B00154ED8 /* CompactUnwindInfo.h */, - 964463EB1A330C0500154ED8 /* CompactUnwindInfo.cpp */, - 26BC7C5710F1B6E900F91463 /* CompileUnit.h */, - 26BC7F1510F1B8EC00F91463 /* CompileUnit.cpp */, - 23E77CDB1C20F2F2007192AD /* DebugMacros.cpp */, - 26BC7C5810F1B6E900F91463 /* Declaration.h */, - DDB5829B2278C8D600491B41 /* CxxModuleHandler.cpp */, - 26BC7F1610F1B8EC00F91463 /* Declaration.cpp */, - 49B01A2D15F67B1700666829 /* DeclVendor.h */, - DDB5829D2278C8E900491B41 /* CxxModuleHandler.h */, - 26BC7C5910F1B6E900F91463 /* DWARFCallFrameInfo.h */, - 26BC7F1710F1B8EC00F91463 /* DWARFCallFrameInfo.cpp */, - 26BC7C5A10F1B6E900F91463 /* Function.h */, - 26BC7F1810F1B8EC00F91463 /* Function.cpp */, - 269FF07D12494F7D00225026 /* FuncUnwinders.h */, - 961FABB81235DE1600F93A47 /* FuncUnwinders.cpp */, - 26BC7C5B10F1B6E900F91463 /* LineEntry.h */, - 26BC7F1910F1B8EC00F91463 /* LineEntry.cpp */, - 26BC7C5C10F1B6E900F91463 /* LineTable.h */, - 26BC7F1A10F1B8EC00F91463 /* LineTable.cpp */, - AFF1273422276F1100C25726 /* LocateSymbolFile.cpp */, - AFC3068022276F62002675EA /* LocateSymbolFileMacOSX.cpp */, - 26BC7C5D10F1B6E900F91463 /* ObjectContainer.h */, - 26BC7C5E10F1B6E900F91463 /* ObjectFile.h */, - 26BC7F4C10F1BC1A00F91463 /* ObjectFile.cpp */, - AFC4ADB02270F4C600042167 /* PostfixExpression.cpp */, - 26BC7C5F10F1B6E900F91463 /* Symbol.h */, - 26BC7F1B10F1B8EC00F91463 /* Symbol.cpp */, - 26BC7C6010F1B6E900F91463 /* SymbolContext.h */, - 26BC7F1C10F1B8EC00F91463 /* SymbolContext.cpp */, - 26BC7C6110F1B6E900F91463 /* SymbolContextScope.h */, - 26BC7C6210F1B6E900F91463 /* SymbolFile.h */, - 26BC7F1D10F1B8EC00F91463 /* SymbolFile.cpp */, - 26BC7C6310F1B6E900F91463 /* SymbolVendor.h */, - AF94005711C03F6500085DB9 /* SymbolVendor.cpp */, - 26BC7C6410F1B6E900F91463 /* Symtab.h */, - 26BC7F1F10F1B8EC00F91463 /* Symtab.cpp */, - 49BB309511F79450001A4197 /* TaggedASTType.h */, - 26BC7C6510F1B6E900F91463 /* Type.h */, - 26BC7F2010F1B8EC00F91463 /* Type.cpp */, - 26BC7C6610F1B6E900F91463 /* TypeList.h */, - 26BC7F2110F1B8EC00F91463 /* TypeList.cpp */, - AEEA33F61AC74FE700AB639D /* TypeSystem.h */, - AEEA34041AC88A7400AB639D /* TypeSystem.cpp */, - 269FF07F12494F8E00225026 /* UnwindPlan.h */, - 961FABB91235DE1600F93A47 /* UnwindPlan.cpp */, - 269FF08112494FC200225026 /* UnwindTable.h */, - 961FABBA1235DE1600F93A47 /* UnwindTable.cpp */, - 26BC7C6710F1B6E900F91463 /* Variable.h */, - 26BC7F2210F1B8EC00F91463 /* Variable.cpp */, - 26BC7C6810F1B6E900F91463 /* VariableList.h */, - 26BC7F2310F1B8EC00F91463 /* VariableList.cpp */, - 494260D7145790D5003C1C78 /* VerifyDecl.h */, - 494260D914579144003C1C78 /* VerifyDecl.cpp */, - ); - name = Symbol; - sourceTree = ""; - }; - 26BC7CEB10F1B70800F91463 /* Breakpoint */ = { - isa = PBXGroup; - children = ( - 4CCF9F6021430141006CC7EA /* BreakpointResolverScripted.h */, - 4CCF9F5E2143012F006CC7EA /* BreakpointResolverScripted.cpp */, - 26BC7CEE10F1B71400F91463 /* Breakpoint.h */, - 26BC7E0A10F1B83100F91463 /* Breakpoint.cpp */, - 26BC7CEF10F1B71400F91463 /* BreakpointID.h */, - 26BC7E0B10F1B83100F91463 /* BreakpointID.cpp */, - 26BC7CF010F1B71400F91463 /* BreakpointIDList.h */, - 26BC7E0C10F1B83100F91463 /* BreakpointIDList.cpp */, - 26BC7CF110F1B71400F91463 /* BreakpointList.h */, - 26BC7E0D10F1B83100F91463 /* BreakpointList.cpp */, - 26BC7CF210F1B71400F91463 /* BreakpointLocation.h */, - 26BC7E0E10F1B83100F91463 /* BreakpointLocation.cpp */, - 26BC7CF310F1B71400F91463 /* BreakpointLocationCollection.h */, - 26BC7E0F10F1B83100F91463 /* BreakpointLocationCollection.cpp */, - 26BC7CF410F1B71400F91463 /* BreakpointLocationList.h */, - 26BC7E1010F1B83100F91463 /* BreakpointLocationList.cpp */, - 4C7D48281F509CCD005314B4 /* BreakpointName.cpp */, - 4C7D482B1F509CF5005314B4 /* BreakpointName.h */, - 26BC7CF510F1B71400F91463 /* BreakpointOptions.h */, - 26BC7E1110F1B83100F91463 /* BreakpointOptions.cpp */, - AF352EE022C17C0C00D058B6 /* BreakpointPrecondition.cpp */, - 26BC7CF610F1B71400F91463 /* BreakpointResolver.h */, - 26BC7E1210F1B83100F91463 /* BreakpointResolver.cpp */, - 26D0DD5010FE554D00271C65 /* BreakpointResolverAddress.h */, - 26D0DD5310FE555900271C65 /* BreakpointResolverAddress.cpp */, - 26D0DD5110FE554D00271C65 /* BreakpointResolverFileLine.h */, - 26D0DD5410FE555900271C65 /* BreakpointResolverFileLine.cpp */, - 4CAA56121422D96A001FFA01 /* BreakpointResolverFileRegex.h */, - 4CAA56141422D986001FFA01 /* BreakpointResolverFileRegex.cpp */, - 26D0DD5210FE554D00271C65 /* BreakpointResolverName.h */, - 26D0DD5510FE555900271C65 /* BreakpointResolverName.cpp */, - 26BC7CF710F1B71400F91463 /* BreakpointSite.h */, - 26BC7E1310F1B83100F91463 /* BreakpointSite.cpp */, - 26BC7CF810F1B71400F91463 /* BreakpointSiteList.h */, - 26BC7E1410F1B83100F91463 /* BreakpointSiteList.cpp */, - 26BC7CFA10F1B71400F91463 /* Stoppoint.h */, - 26BC7E1610F1B83100F91463 /* Stoppoint.cpp */, - 26BC7CED10F1B71400F91463 /* StoppointCallbackContext.h */, - 26BC7E0910F1B83100F91463 /* StoppointCallbackContext.cpp */, - 26BC7CFB10F1B71400F91463 /* StoppointLocation.h */, - 26BC7E1710F1B83100F91463 /* StoppointLocation.cpp */, - 26BC7CFC10F1B71400F91463 /* Watchpoint.h */, - 26BC7E1810F1B83100F91463 /* Watchpoint.cpp */, - B27318431416AC43006039C8 /* WatchpointList.h */, - B27318411416AC12006039C8 /* WatchpointList.cpp */, - B2B7CCED15D1BFB700EEFB57 /* WatchpointOptions.h */, - B2B7CCEF15D1C20F00EEFB57 /* WatchpointOptions.cpp */, - ); - name = Breakpoint; - sourceTree = ""; - }; - 26BC7D0D10F1B71D00F91463 /* Commands */ = { - isa = PBXGroup; - children = ( - 4CA9637A11B6E99A00780E28 /* CommandObjectApropos.h */, - 4CA9637911B6E99A00780E28 /* CommandObjectApropos.cpp */, - 26BC7D1410F1B76300F91463 /* CommandObjectBreakpoint.h */, - 26BC7E2D10F1B84700F91463 /* CommandObjectBreakpoint.cpp */, - 9A42976111861A9F00FE05CD /* CommandObjectBreakpointCommand.h */, - 9A42976211861AA600FE05CD /* CommandObjectBreakpointCommand.cpp */, - 6D86CE9F1B440F6B00A7FBFA /* CommandObjectBugreport.h */, - 6D86CE9E1B440F6B00A7FBFA /* CommandObjectBugreport.cpp */, - 4C5DBBC711E3FEC60035160F /* CommandObjectCommands.h */, - 4C5DBBC611E3FEC60035160F /* CommandObjectCommands.cpp */, - 26BC7D1710F1B76300F91463 /* CommandObjectDisassemble.h */, - 26BC7E3010F1B84700F91463 /* CommandObjectDisassemble.cpp */, - 26BC7D1810F1B76300F91463 /* CommandObjectExpression.h */, - 26BC7E3110F1B84700F91463 /* CommandObjectExpression.cpp */, - 2672D8471189055500FF4019 /* CommandObjectFrame.h */, - 2672D8461189055500FF4019 /* CommandObjectFrame.cpp */, - 26CEB5F118762056008F575A /* CommandObjectGUI.h */, - 26CEB5F018762056008F575A /* CommandObjectGUI.cpp */, - 26BC7D1A10F1B76300F91463 /* CommandObjectHelp.h */, - 26BC7E3310F1B84700F91463 /* CommandObjectHelp.cpp */, - AFC234061AF85CE000CDE8B6 /* CommandObjectLanguage.cpp */, - AFC234071AF85CE000CDE8B6 /* CommandObjectLanguage.h */, - 264AD83911095BBD00E0B039 /* CommandObjectLog.h */, - 264AD83711095BA600E0B039 /* CommandObjectLog.cpp */, - 26BC7D1D10F1B76300F91463 /* CommandObjectMemory.h */, - 26BC7E3610F1B84700F91463 /* CommandObjectMemory.cpp */, - 26879CE51333F5750012C1F8 /* CommandObjectPlatform.h */, - 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */, - 947A1D631616476A0017C8D1 /* CommandObjectPlugin.h */, - 947A1D621616476A0017C8D1 /* CommandObjectPlugin.cpp */, - 26BC7D1F10F1B76300F91463 /* CommandObjectProcess.h */, - 26BC7E3810F1B84700F91463 /* CommandObjectProcess.cpp */, - 26BC7D2010F1B76300F91463 /* CommandObjectQuit.h */, - 26BC7E3910F1B84700F91463 /* CommandObjectQuit.cpp */, - 26BC7D2210F1B76300F91463 /* CommandObjectRegister.h */, - 26BC7E3B10F1B84700F91463 /* CommandObjectRegister.cpp */, - AFCB1D5A219CD5A700730AD5 /* CommandObjectReproducer.cpp */, - AFCB1D5B219CD5A700730AD5 /* CommandObjectReproducer.h */, - 26BC7D2410F1B76300F91463 /* CommandObjectScript.h */, - 26BC7E3D10F1B84700F91463 /* CommandObjectScript.cpp */, - 26BC7D2710F1B76300F91463 /* CommandObjectSettings.h */, - 26BC7E4010F1B84700F91463 /* CommandObjectSettings.cpp */, - 26BC7D2910F1B76300F91463 /* CommandObjectSource.h */, - 26BC7E4210F1B84700F91463 /* CommandObjectSource.cpp */, - 6B8894782065AE5C002E5C59 /* CommandObjectStats.cpp */, - 6B8894772065AE5C002E5C59 /* CommandObjectStats.h */, - 269416AE119A024800FF2715 /* CommandObjectTarget.h */, - 269416AD119A024800FF2715 /* CommandObjectTarget.cpp */, - 26BC7D2D10F1B76300F91463 /* CommandObjectThread.h */, - 26BC7E4610F1B84700F91463 /* CommandObjectThread.cpp */, - 9463D4CE13B179A500C230D4 /* CommandObjectType.h */, - 9463D4CC13B1798800C230D4 /* CommandObjectType.cpp */, - B296983512C2FB2B002D92C3 /* CommandObjectVersion.h */, - B296983412C2FB2B002D92C3 /* CommandObjectVersion.cpp */, - B207C4941429609C00F36E4E /* CommandObjectWatchpoint.h */, - B207C4921429607D00F36E4E /* CommandObjectWatchpoint.cpp */, - B2B7CCEC15D1BD9600EEFB57 /* CommandObjectWatchpointCommand.h */, - B2B7CCEA15D1BD6600EEFB57 /* CommandObjectWatchpointCommand.cpp */, - ); - name = Commands; - sourceTree = ""; - }; - 26BC7DBE10F1B78200F91463 /* Expression */ = { - isa = PBXGroup; - children = ( - 49E4F66C1C9CAD2D008487EA /* DiagnosticManager.h */, - 49E4F6681C9CAD12008487EA /* DiagnosticManager.cpp */, - 4C00832C1B9A58A700D5CF24 /* Expression.h */, - 4C88BC291BA3722B00AA0964 /* Expression.cpp */, - 4C29E77D1BA2403F00DFF855 /* ExpressionTypeSystemHelper.h */, - 4C00832D1B9A58A700D5CF24 /* FunctionCaller.h */, - 4C0083321B9A5DE200D5CF24 /* FunctionCaller.cpp */, - 4C00832E1B9A58A700D5CF24 /* UserExpression.h */, - 4C0083331B9A5DE200D5CF24 /* UserExpression.cpp */, - AEB0E45A1BD6EA1400B24093 /* LLVMUserExpression.h */, - AEB0E4581BD6E9F800B24093 /* LLVMUserExpression.cpp */, - 4C00833D1B9F9B8400D5CF24 /* UtilityFunction.h */, - 4C00833F1B9F9BA900D5CF24 /* UtilityFunction.cpp */, - 49A1CAC11430E21D00306AC9 /* ExpressionSourceCode.h */, - 4984BA171B979C08008658D4 /* ExpressionVariable.h */, - 4984BA151B979973008658D4 /* ExpressionVariable.cpp */, - 4C2479BE1BA39843009C9A7B /* ExpressionParser.h */, - 26BC7DC310F1B79500F91463 /* DWARFExpression.h */, - 26BC7ED810F1B86700F91463 /* DWARFExpression.cpp */, - 49CF9833122C718B007A0B96 /* IRDynamicChecks.h */, - 49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */, - 49C66B1C17011A43004D1922 /* IRMemoryMap.h */, - 49DCF6FD170E6B4A0092F75E /* IRMemoryMap.cpp */, - 4C98D3E1118FB98F00E575D0 /* IRExecutionUnit.h */, - 4C98D3DB118FB96F00E575D0 /* IRExecutionUnit.cpp */, - 496B015A1406DEB100F830D5 /* IRInterpreter.h */, - 496B01581406DE8900F830D5 /* IRInterpreter.cpp */, - 49DCF6FF170E6FD90092F75E /* Materializer.h */, - 49DCF700170E70120092F75E /* Materializer.cpp */, - 4939EA8B1BD56B3700084382 /* REPL.h */, - 4939EA8C1BD56B6D00084382 /* REPL.cpp */, - ); - name = Expression; - sourceTree = ""; - }; - 26BC7DD010F1B7C100F91463 /* Host */ = { - isa = PBXGroup; - children = ( - 6D55B29B1A8CCFF000A70529 /* android */, - 33E5E8451A6736D30024ED68 /* StringConvert.h */, - 69A01E1A1236C5D400C660B5 /* common */, - 3FDFE53919A29399009756A7 /* freebsd */, - 233B009C19610D130090E598 /* linux */, - 26BC7EE510F1B88100F91463 /* MacOSX */, - 3FDFDDC4199D37BE009756A7 /* posix */, - 3FDFE53E19A2940E009756A7 /* windows */, - 266F5CBB12FC846200DFCE33 /* Config.h */, - 3FDFED1E19BA6D55009756A7 /* Debug.h */, - 26CFDCA01861638D000E63E5 /* Editline.h */, - 260C6EA013011578005E16B0 /* File.h */, - 3FDFDDC0199D34E2009756A7 /* FileCache.h */, - 3FDFDDBE199D345E009756A7 /* FileCache.cpp */, - 3FDFDDC1199D34E2009756A7 /* FileSystem.h */, - 26BC7DD410F1B7D500F91463 /* Host.h */, - 3FDFED1F19BA6D55009756A7 /* HostGetOpt.h */, - 3FDFE53719A2936B009756A7 /* HostInfo.h */, - 3FDFE53819A2936B009756A7 /* HostInfoBase.h */, - 3FDFED2019BA6D55009756A7 /* HostNativeThread.h */, - 3FDFED2119BA6D55009756A7 /* HostNativeThreadBase.h */, - 3FDFE57419AFABFD009756A7 /* HostProcess.h */, - 3FDFE57519AFABFD009756A7 /* HostThread.h */, - 267A47F41B1411750021A5BC /* NativeBreakpointList.h */, - 267A47F51B14117F0021A5BC /* NativeProcessProtocol.h */, - 232CB60F191E00CC00EF39FC /* NativeProcessProtocol.cpp */, - 267A47F61B14118F0021A5BC /* NativeRegisterContext.h */, - 267A47FA1B1411C40021A5BC /* NativeRegisterContext.cpp */, - 267A47F81B1411A40021A5BC /* NativeThreadProtocol.h */, - 232CB611191E00CC00EF39FC /* NativeThreadProtocol.cpp */, - 267A47F91B1411AC0021A5BC /* NativeWatchpointList.h */, - 267A47FE1B1411D90021A5BC /* NativeWatchpointList.cpp */, - A36FF33D17D8E98800244D40 /* OptionParser.h */, - 260A39A519647A3A004B4130 /* Pipe.h */, - 3F5E8AF31A40D4A500A73232 /* PipeBase.h */, - 3FDFED2219BA6D55009756A7 /* ProcessRunLock.h */, - 2654A68E1E552D2400DA1013 /* PseudoTerminal.h */, - 2654A68C1E552D1500DA1013 /* PseudoTerminal.cpp */, - 236124A71986B50E004EFC37 /* Socket.h */, - 26D7E45B13D5E2F9007FD12B /* SocketAddress.h */, - 26D7E45C13D5E30A007FD12B /* SocketAddress.cpp */, - 2689B0A4113EE3CD00A4AEDB /* Symbols.h */, - 6DEC6F3A1BD66D950091ABA6 /* TaskPool.h */, - 6DEC6F381BD66D750091ABA6 /* TaskPool.cpp */, - 268DA871130095D000C9483A /* Terminal.h */, - 3FDFED2319BA6D55009756A7 /* ThreadLauncher.h */, - 267A48031B1416080021A5BC /* XML.h */, - 267A48001B1411E40021A5BC /* XML.cpp */, - ); - name = Host; - sourceTree = ""; - }; - 26BC7DDF10F1B7E200F91463 /* Interpreter */ = { - isa = PBXGroup; - children = ( - 26BC7D5310F1B77400F91463 /* Args.h */, - 26BC7E6C10F1B85900F91463 /* Args.cpp */, - 26A4EEB511682AAC007A372A /* LLDBWrapPython.cpp */, - 9441816B1C8F5EB000E5A8D9 /* CommandAlias.h */, - 9441816D1C8F5EC900E5A8D9 /* CommandAlias.cpp */, - 4C09CB73116BD98B00C7A725 /* CommandCompletions.h */, - 4C09CB74116BD98B00C7A725 /* CommandCompletions.cpp */, - 94BA8B71176F97D4005A91B5 /* CommandHistory.h */, - 94BA8B6F176F97CE005A91B5 /* CommandHistory.cpp */, - 26BC7DE210F1B7F900F91463 /* CommandInterpreter.h */, - 26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */, - 26BC7DE310F1B7F900F91463 /* CommandObject.h */, - 26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */, - 26DFBC51113B48D600DD817F /* CommandObjectMultiword.h */, - 26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */, - 26DFBC52113B48D600DD817F /* CommandObjectRegexCommand.h */, - 26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */, - 4C719396207D237100FDF430 /* CommandOptionValidators.h */, - 23DDF224196C3EE600BB8417 /* CommandOptionValidators.cpp */, - 26BC7DE410F1B7F900F91463 /* CommandReturnObject.h */, - 26BC7F0A10F1B8DD00F91463 /* CommandReturnObject.cpp */, - 94005E0513F45A1B001EF42D /* embedded_interpreter.py */, - 4C719397207D237100FDF430 /* OptionArgParser.h */, - 4C719394207D235400FDF430 /* OptionArgParser.cpp */, - 26A7A036135E6E5300FB369E /* OptionValue.h */, - 26A7A034135E6E4200FB369E /* OptionValue.cpp */, - 260A248D15D06C4F009981B0 /* OptionValues.h */, - 2697A39415E404BA003E682C /* OptionValueArch.h */, - 2697A39215E404B1003E682C /* OptionValueArch.cpp */, - 260CC62115D04377002BF2E0 /* OptionValueArgs.h */, - 260CC63B15D0440D002BF2E0 /* OptionValueArgs.cpp */, - 260CC62215D04377002BF2E0 /* OptionValueArray.h */, - 260CC63C15D0440D002BF2E0 /* OptionValueArray.cpp */, - 260CC62315D04377002BF2E0 /* OptionValueBoolean.h */, - 260CC63D15D0440D002BF2E0 /* OptionValueBoolean.cpp */, - 25420ECE1A64911B009ADBCB /* OptionValueChar.h */, - 25420ECC1A6490B8009ADBCB /* OptionValueChar.cpp */, - 260CC62515D04377002BF2E0 /* OptionValueDictionary.h */, - 260CC63F15D0440D002BF2E0 /* OptionValueDictionary.cpp */, - 260CC62615D04377002BF2E0 /* OptionValueEnumeration.h */, - 260CC64015D0440D002BF2E0 /* OptionValueEnumeration.cpp */, - 260CC62715D04377002BF2E0 /* OptionValueFileSpec.h */, - 260CC64115D0440D002BF2E0 /* OptionValueFileSpec.cpp */, - 260CC62815D04377002BF2E0 /* OptionValueFileSpecList.h */, - 260CC64215D0440D002BF2E0 /* OptionValueFileSpecLIst.cpp */, - 260CC62915D04377002BF2E0 /* OptionValueFormat.h */, - 260CC64315D0440D002BF2E0 /* OptionValueFormat.cpp */, - 264A58EB1A7DBC8C00A6B1B0 /* OptionValueFormatEntity.h */, - 264A58ED1A7DBCAD00A6B1B0 /* OptionValueFormatEntity.cpp */, - 946216BF1A97C055006E19CC /* OptionValueLanguage.h */, - 946216C11A97C080006E19CC /* OptionValueLanguage.cpp */, - 26DAED5F15D327A200E15819 /* OptionValuePathMappings.h */, - 26DAED6215D327C200E15819 /* OptionValuePathMappings.cpp */, - 260CC62415D04377002BF2E0 /* OptionValueProperties.h */, - 260CC63E15D0440D002BF2E0 /* OptionValueProperties.cpp */, - 26491E3A15E1DB8600CBFFC2 /* OptionValueRegex.h */, - 26491E3D15E1DB9F00CBFFC2 /* OptionValueRegex.cpp */, - 260CC62A15D04377002BF2E0 /* OptionValueSInt64.h */, - 260CC64415D0440D002BF2E0 /* OptionValueSInt64.cpp */, - 260CC62B15D04377002BF2E0 /* OptionValueString.h */, - 260CC64515D0440D002BF2E0 /* OptionValueString.cpp */, - 260CC62C15D04377002BF2E0 /* OptionValueUInt64.h */, - 260CC64615D0440D002BF2E0 /* OptionValueUInt64.cpp */, - 260CC62D15D04377002BF2E0 /* OptionValueUUID.h */, - 260CC64715D0440D002BF2E0 /* OptionValueUUID.cpp */, - 26BC7D6D10F1B77400F91463 /* Options.h */, - 26BC7E8610F1B85900F91463 /* Options.cpp */, - 26D5E160135BAEB0006EA0A7 /* OptionGroupArchitecture.h */, - 26D5E15E135BAEA2006EA0A7 /* OptionGroupArchitecture.cpp */, - 2686536D1370ACC600D186A3 /* OptionGroupBoolean.h */, - 2686536B1370ACB200D186A3 /* OptionGroupBoolean.cpp */, - 260E07C9136FABAC00CF21D3 /* OptionGroupFile.h */, - 260E07C7136FAB9200CF21D3 /* OptionGroupFile.cpp */, - 26BCFC4F1368ADF7006DC050 /* OptionGroupFormat.h */, - 26BCFC511368AE38006DC050 /* OptionGroupFormat.cpp */, - 26BCFC541368B4B8006DC050 /* OptionGroupOutputFile.h */, - 26BCFC531368B3E4006DC050 /* OptionGroupOutputFile.cpp */, - 26D5E161135BB040006EA0A7 /* OptionGroupPlatform.h */, - 26D5E162135BB054006EA0A7 /* OptionGroupPlatform.cpp */, - 262ED0041631FA2800879631 /* OptionGroupString.h */, - 262ED0071631FA3A00879631 /* OptionGroupString.cpp */, - 2686536E1370AE5A00D186A3 /* OptionGroupUInt64.h */, - 2686536F1370AE7200D186A3 /* OptionGroupUInt64.cpp */, - 260E07C3136FA68900CF21D3 /* OptionGroupUUID.h */, - 260E07C5136FA69E00CF21D3 /* OptionGroupUUID.cpp */, - 267C0128136880C7006E963E /* OptionGroupValueObjectDisplay.h */, - 267C012A136880DF006E963E /* OptionGroupValueObjectDisplay.cpp */, - 26ED3D6F13C5638A0017D45E /* OptionGroupVariable.h */, - 26ED3D6C13C563810017D45E /* OptionGroupVariable.cpp */, - B2462248141AD39B00F3D409 /* OptionGroupWatchpoint.h */, - B2462246141AD37D00F3D409 /* OptionGroupWatchpoint.cpp */, - 26ACEC2715E077AE00E94760 /* Property.h */, - 2640E19E15DC78FD00F23B50 /* Property.cpp */, - 26BC7DE510F1B7F900F91463 /* ScriptInterpreter.h */, - 9A82010B10FFB49800182560 /* ScriptInterpreter.cpp */, - ); - name = Interpreter; - sourceTree = ""; - }; - 26BC7DEF10F1B80200F91463 /* Target */ = { - isa = PBXGroup; - children = ( - 230EC4571D63C3A7008DF59F /* CMakeLists.txt */, - 8CF02AE019DCBF3B00B14BE0 /* InstrumentationRuntime.h */, - 8CF02ADF19DCBF3B00B14BE0 /* InstrumentationRuntime.cpp */, - 8CF02AEE19DD15CF00B14BE0 /* InstrumentationRuntimeStopInfo.h */, - 8CF02AED19DD15CF00B14BE0 /* InstrumentationRuntimeStopInfo.cpp */, - 23EDE3311926843600F6A132 /* NativeRegisterContext.h */, - 23EDE3301926839700F6A132 /* NativeRegisterContext.cpp */, - 497E7B331188ED300065CCA1 /* ABI.h */, - 497E7B9D1188F6690065CCA1 /* ABI.cpp */, - 4CB443BB1249920C00C13DC2 /* CPPLanguageRuntime.h */, - 4CB443BC1249920C00C13DC2 /* CPPLanguageRuntime.cpp */, - 26BC7DF110F1B81A00F91463 /* DynamicLoader.h */, - 26BC7E7710F1B85900F91463 /* DynamicLoader.cpp */, - 26BC7DF210F1B81A00F91463 /* ExecutionContext.h */, - 26BC7F3510F1B90C00F91463 /* ExecutionContext.cpp */, - 26DAFD9711529BC7005A394E /* ExecutionContextScope.h */, - 26BC179B18C7F2CB00D2196D /* JITLoader.h */, - 26BC179718C7F2B300D2196D /* JITLoader.cpp */, - 26BC179C18C7F2CB00D2196D /* JITLoaderList.h */, - 26BC179818C7F2B300D2196D /* JITLoaderList.cpp */, - 94B638511B8F8E53004FE1E4 /* Language.h */, - 94B638521B8F8E6C004FE1E4 /* Language.cpp */, - 4CB4430912491DDA00C13DC2 /* LanguageRuntime.h */, - 4CB4430A12491DDA00C13DC2 /* LanguageRuntime.cpp */, - 2690B36F1381D5B600ECFBAE /* Memory.h */, - 2690B3701381D5C300ECFBAE /* Memory.cpp */, - 8C2D6A54197A1EBE006989C9 /* MemoryHistory.h */, - 8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */, - 2360092C193FB21500189DB1 /* MemoryRegionInfo.h */, - 2654A6811E54D5A200DA1013 /* ModuleCache.h */, - 2654A67F1E54D59400DA1013 /* ModuleCache.cpp */, - 4CB443F612499B6E00C13DC2 /* ObjCLanguageRuntime.h */, - 4CB443F212499B5000C13DC2 /* ObjCLanguageRuntime.cpp */, - 495BBACF119A0DE700418BEA /* PathMappingList.h */, - 495BBACB119A0DBE00418BEA /* PathMappingList.cpp */, - 264A43BB1320B3B4005B4096 /* Platform.h */, - 264A43BD1320BCEB005B4096 /* Platform.cpp */, - 26BC7DF310F1B81A00F91463 /* Process.h */, - 26BC7F3610F1B90C00F91463 /* Process.cpp */, - 260A63111860FDB600FECF8E /* Queue.h */, - AF2670381852D01E00B6CC36 /* Queue.cpp */, - 260A63121860FDBD00FECF8E /* QueueItem.h */, - AF0C112718580CD800C4C45B /* QueueItem.cpp */, - 260A63131860FDC700FECF8E /* QueueList.h */, - AF2670391852D01E00B6CC36 /* QueueList.cpp */, - 26AB54111832DC3400EADFF3 /* RegisterCheckpoint.h */, - 26BC7DF410F1B81A00F91463 /* RegisterContext.h */, - 26BC7F3710F1B90C00F91463 /* RegisterContext.cpp */, - 2654A6841E54D5EE00DA1013 /* RegisterNumber.h */, - 2654A6821E54D5E200DA1013 /* RegisterNumber.cpp */, - 26501415221330EE00E16D81 /* RemoteAwarePlatform.h */, - 26501413221330CE00E16D81 /* RemoteAwarePlatform.cpp */, - 262173A018395D3800C52091 /* SectionLoadHistory.h */, - 262173A218395D4600C52091 /* SectionLoadHistory.cpp */, - 2618D78F1240115500F2B8FE /* SectionLoadList.h */, - 2618D7911240116900F2B8FE /* SectionLoadList.cpp */, - 26BC7DF510F1B81A00F91463 /* StackFrame.h */, - 26BC7F3810F1B90C00F91463 /* StackFrame.cpp */, - 26BC7DF610F1B81A00F91463 /* StackFrameList.h */, - 26BC7F3910F1B90C00F91463 /* StackFrameList.cpp */, - 8CFDB67920467B390052B399 /* StackFrameRecognizer.h */, - 8CF46A6120522A9000423DDF /* StackFrameRecognizer.cpp */, - 26BC7DF710F1B81A00F91463 /* StackID.h */, - 26BC7F3A10F1B90C00F91463 /* StackID.cpp */, - 2615DB841208A9C90021781D /* StopInfo.h */, - 2615DB861208A9E40021781D /* StopInfo.cpp */, - 238F2B9F1D2C835A001FF92A /* StructuredDataPlugin.h */, - 238F2B9D1D2C82D0001FF92A /* StructuredDataPlugin.cpp */, - 238F2BA01D2C835A001FF92A /* SystemRuntime.h */, - AF81DEF91828A23F0042CF19 /* SystemRuntime.cpp */, - 26BC7DF810F1B81A00F91463 /* Target.h */, - 26BC7F3B10F1B90C00F91463 /* Target.cpp */, - 26BC7DF910F1B81A00F91463 /* TargetList.h */, - 26BC7F3C10F1B90C00F91463 /* TargetList.cpp */, - 26BC7DFA10F1B81A00F91463 /* Thread.h */, - 26BC7F3D10F1B90C00F91463 /* Thread.cpp */, - 8CCB017C19BA289B0009FD44 /* ThreadCollection.h */, - 8CCB017A19BA283D0009FD44 /* ThreadCollection.cpp */, - 26BC7DFB10F1B81A00F91463 /* ThreadList.h */, - 26BC7F3E10F1B90C00F91463 /* ThreadList.cpp */, - 26BC7DFC10F1B81A00F91463 /* ThreadPlan.h */, - 26BC7F3F10F1B90C00F91463 /* ThreadPlan.cpp */, - 260C847F10F50F0A00BB2B04 /* ThreadPlanBase.h */, - 260C847110F50EFC00BB2B04 /* ThreadPlanBase.cpp */, - 49EC3E9C118F90D400B1265E /* ThreadPlanCallFunction.h */, - 49EC3E98118F90AC00B1265E /* ThreadPlanCallFunction.cpp */, - EB8375E81B553DFE00BA907D /* ThreadPlanCallFunctionUsingABI.h */, - EB8375E61B553DE800BA907D /* ThreadPlanCallFunctionUsingABI.cpp */, - 230EC4581D63C3A7008DF59F /* ThreadPlanCallOnFunctionExit.cpp */, - 4C7CF7E31295E10E00B4FBB5 /* ThreadPlanCallUserExpression.h */, - 4C7CF7E51295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp */, - 4C56543219D1EFB5002E9C44 /* ThreadPlanPython.h */, - 4C56543019D1EFAA002E9C44 /* ThreadPlanPython.cpp */, - 4C43DEF9110641F300E55CBF /* ThreadPlanShouldStopHere.h */, - 4C43DEFA110641F300E55CBF /* ThreadPlanShouldStopHere.cpp */, - 260C848010F50F0A00BB2B04 /* ThreadPlanStepInstruction.h */, - 260C847210F50EFC00BB2B04 /* ThreadPlanStepInstruction.cpp */, - 260C848110F50F0A00BB2B04 /* ThreadPlanStepOut.h */, - 260C847310F50EFC00BB2B04 /* ThreadPlanStepOut.cpp */, - 260C848210F50F0A00BB2B04 /* ThreadPlanStepOverBreakpoint.h */, - 260C847410F50EFC00BB2B04 /* ThreadPlanStepOverBreakpoint.cpp */, - 260C848410F50F0A00BB2B04 /* ThreadPlanStepRange.h */, - 260C847610F50EFC00BB2B04 /* ThreadPlanStepRange.cpp */, - 4C43DF8511069BFD00E55CBF /* ThreadPlanStepInRange.h */, - 4C43DF8911069C3200E55CBF /* ThreadPlanStepInRange.cpp */, - 4C43DF8611069BFD00E55CBF /* ThreadPlanStepOverRange.h */, - 4C43DF8A11069C3200E55CBF /* ThreadPlanStepOverRange.cpp */, - 4CAFCE001101216B00CA63DB /* ThreadPlanRunToAddress.h */, - 4CAFCE031101218900CA63DB /* ThreadPlanRunToAddress.cpp */, - 260C848310F50F0A00BB2B04 /* ThreadPlanStepThrough.h */, - 260C847510F50EFC00BB2B04 /* ThreadPlanStepThrough.cpp */, - 4CEDAED311754F5E00E875A6 /* ThreadPlanStepUntil.h */, - 2660D9FE11922A7F00958FBD /* ThreadPlanStepUntil.cpp */, - 4CC2A14C128C7409001531C4 /* ThreadPlanTracer.h */, - 4CC2A148128C73ED001531C4 /* ThreadPlanTracer.cpp */, - 4C08CDEB11C81F1E001610A8 /* ThreadSpec.h */, - 4C08CDE711C81EF8001610A8 /* ThreadSpec.cpp */, - 4C00986F11500B4300F316B0 /* UnixSignals.h */, - 4C00987011500B4300F316B0 /* UnixSignals.cpp */, - 26E3EEBD11A9870400FBADB6 /* Unwind.h */, - 264D8D4E13661BCC003A368F /* UnwindAssembly.h */, - 264D8D4F13661BD7003A368F /* UnwindAssembly.cpp */, - ); - name = Target; - sourceTree = ""; - }; - 26BC7EE510F1B88100F91463 /* MacOSX */ = { - isa = PBXGroup; - children = ( - AFF81FAA20D1CC210010F95E /* objcxx */, - 26BC7EED10F1B8AD00F91463 /* CFCBundle.cpp */, - 26BC7EEE10F1B8AD00F91463 /* CFCBundle.h */, - 26BC7EEF10F1B8AD00F91463 /* CFCData.cpp */, - 26BC7EF010F1B8AD00F91463 /* CFCData.h */, - 26BC7EF110F1B8AD00F91463 /* CFCMutableArray.cpp */, - 26BC7EF210F1B8AD00F91463 /* CFCMutableArray.h */, - 26BC7EF310F1B8AD00F91463 /* CFCMutableDictionary.cpp */, - 26BC7EF410F1B8AD00F91463 /* CFCMutableDictionary.h */, - 26BC7EF510F1B8AD00F91463 /* CFCMutableSet.cpp */, - 26BC7EF610F1B8AD00F91463 /* CFCMutableSet.h */, - 26BC7EF710F1B8AD00F91463 /* CFCReleaser.h */, - 26BC7EF810F1B8AD00F91463 /* CFCString.cpp */, - 26BC7EF910F1B8AD00F91463 /* CFCString.h */, - 3FDFE52D19A291AF009756A7 /* HostInfoMacOSX.h */, - 3FDFE56719AF9BB2009756A7 /* HostThreadMacOSX.h */, - ); - name = MacOSX; - sourceTree = ""; - }; - 26BF51E91B3C754400016294 /* SysV-hexagon */ = { - isa = PBXGroup; - children = ( - 26BF51EA1B3C754400016294 /* ABISysV_hexagon.cpp */, - 26BF51EB1B3C754400016294 /* ABISysV_hexagon.h */, - ); - path = "SysV-hexagon"; - sourceTree = ""; - }; - 26BF51EE1B3C754400016294 /* SysV-i386 */ = { - isa = PBXGroup; - children = ( - 26BF51EF1B3C754400016294 /* ABISysV_i386.cpp */, - 26BF51F01B3C754400016294 /* ABISysV_i386.h */, - ); - path = "SysV-i386"; - sourceTree = ""; - }; - 26C5577E132575B6008FD8FE /* Platform */ = { - isa = PBXGroup; - children = ( - 6D55BAE61A8CD08C00A70529 /* Android */, - 2694E99814FC0BB30076DE67 /* FreeBSD */, - 264A97BC133918A30017F0BE /* GDB Server */, - 2694E99F14FC0BBD0076DE67 /* Linux */, - 26C5577F132575C8008FD8FE /* MacOSX */, - 26EFB6151BFE8D3E00544801 /* NetBSD */, - 4CE4EFA51E89998800A80C06 /* OpenBSD */, - 9457596415349416005A9070 /* POSIX */, - 490A36BA180F0E6F00BA31F8 /* Windows */, - ); - path = Platform; - sourceTree = ""; - }; - 26C5577F132575C8008FD8FE /* MacOSX */ = { - isa = PBXGroup; - children = ( - AFF81FB120D1CC820010F95E /* objcxx */, - 9455630A1BEAD0570073F75F /* PlatformAppleSimulator.cpp */, - 9455630B1BEAD0570073F75F /* PlatformAppleSimulator.h */, - AF8AD62A1BEC28A400150209 /* PlatformAppleTVSimulator.cpp */, - AF8AD62B1BEC28A400150209 /* PlatformAppleTVSimulator.h */, - AF8AD62C1BEC28A400150209 /* PlatformAppleWatchSimulator.cpp */, - AF8AD62D1BEC28A400150209 /* PlatformAppleWatchSimulator.h */, - AF254E2F170CCC33007AE5C9 /* PlatformDarwinKernel.cpp */, - AF254E30170CCC33007AE5C9 /* PlatformDarwinKernel.h */, - 2697A54B133A6305004E4240 /* PlatformDarwin.cpp */, - 2697A54C133A6305004E4240 /* PlatformDarwin.h */, - 26B7564C14F89356008D9CB3 /* PlatformiOSSimulator.cpp */, - 26B7564D14F89356008D9CB3 /* PlatformiOSSimulator.h */, - 26C5577B132575AD008FD8FE /* PlatformMacOSX.cpp */, - 26C5577C132575AD008FD8FE /* PlatformMacOSX.h */, - AF3A4AD01EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.cpp */, - AF3A4AD11EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.h */, - AF8AD6331BEC28C400150209 /* PlatformRemoteAppleTV.cpp */, - AF8AD6341BEC28C400150209 /* PlatformRemoteAppleTV.h */, - AF66324E216EB9C300BB510D /* PlatformRemoteAppleBridge.cpp */, - AF66324F216EB9C300BB510D /* PlatformRemoteAppleBridge.h */, - AF8AD6351BEC28C400150209 /* PlatformRemoteAppleWatch.cpp */, - AF8AD6361BEC28C400150209 /* PlatformRemoteAppleWatch.h */, - 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */, - 2675F6FF1332BE690067997B /* PlatformRemoteiOS.h */, - ); - path = MacOSX; - sourceTree = ""; - }; - 26D9FDCA12F785120003F2EE /* Instruction */ = { - isa = PBXGroup; - children = ( - AFDBC36A2046638D00B9C8F2 /* PPC64 */, - E778E99D1B062D1700247609 /* MIPS */, - 26D9FDCB12F785270003F2EE /* ARM */, - 264A12F91372522000875C42 /* ARM64 */, - 94A5B3941AB9FE5F00A5EE7F /* MIPS64 */, - ); - path = Instruction; - sourceTree = ""; - }; - 26D9FDCB12F785270003F2EE /* ARM */ = { - isa = PBXGroup; - children = ( - 9A22A15D135E30370024DDC3 /* EmulateInstructionARM.cpp */, - 9A22A15E135E30370024DDC3 /* EmulateInstructionARM.h */, - 9A22A15F135E30370024DDC3 /* EmulationStateARM.cpp */, - 9A22A160135E30370024DDC3 /* EmulationStateARM.h */, - ); - path = ARM; - sourceTree = ""; - }; - 26DB3E051379E7AD0080DC73 /* ABI */ = { - isa = PBXGroup; - children = ( - 26DB3E061379E7AD0080DC73 /* MacOSX-arm */, - 26DB3E0A1379E7AD0080DC73 /* MacOSX-arm64 */, - 26DB3E0E1379E7AD0080DC73 /* MacOSX-i386 */, - AF20F7621AF18F5E00751A6E /* SysV-arm */, - AF20F7631AF18F6800751A6E /* SysV-arm64 */, - 26BF51E91B3C754400016294 /* SysV-hexagon */, - 26BF51EE1B3C754400016294 /* SysV-i386 */, - 9694FA6E1B32AA35005EBB16 /* SysV-mips */, - 263641141B34AEE200145B2F /* SysV-mips64 */, - AF77E08B1A033C3E0096C0EA /* SysV-ppc */, - AF77E08C1A033C4B0096C0EA /* SysV-ppc64 */, - 267F68461CC02DED0086832B /* SysV-s390x */, - 26DB3E121379E7AD0080DC73 /* SysV-x86_64 */, - AF352EDA22C17BD700D058B6 /* Windows-x86_64 */, - ); - path = ABI; - sourceTree = ""; - }; - 26DB3E061379E7AD0080DC73 /* MacOSX-arm */ = { - isa = PBXGroup; - children = ( - 26DB3E071379E7AD0080DC73 /* ABIMacOSX_arm.cpp */, - 26DB3E081379E7AD0080DC73 /* ABIMacOSX_arm.h */, - ); - path = "MacOSX-arm"; - sourceTree = ""; - }; - 26DB3E0A1379E7AD0080DC73 /* MacOSX-arm64 */ = { - isa = PBXGroup; - children = ( - 26DB3E0B1379E7AD0080DC73 /* ABIMacOSX_arm64.cpp */, - 26DB3E0C1379E7AD0080DC73 /* ABIMacOSX_arm64.h */, - ); - path = "MacOSX-arm64"; - sourceTree = ""; - }; - 26DB3E0E1379E7AD0080DC73 /* MacOSX-i386 */ = { - isa = PBXGroup; - children = ( - 26DB3E0F1379E7AD0080DC73 /* ABIMacOSX_i386.cpp */, - 26DB3E101379E7AD0080DC73 /* ABIMacOSX_i386.h */, - ); - path = "MacOSX-i386"; - sourceTree = ""; - }; - 26DB3E121379E7AD0080DC73 /* SysV-x86_64 */ = { - isa = PBXGroup; - children = ( - 26DB3E131379E7AD0080DC73 /* ABISysV_x86_64.cpp */, - 26DB3E141379E7AD0080DC73 /* ABISysV_x86_64.h */, - ); - path = "SysV-x86_64"; - sourceTree = ""; - }; - 26E152221419CACA007967D0 /* PECOFF */ = { - isa = PBXGroup; - children = ( - 26E152231419CACA007967D0 /* ObjectFilePECOFF.cpp */, - 26E152241419CACA007967D0 /* ObjectFilePECOFF.h */, - 26C7C4811BFFEA7E009BD01F /* WindowsMiniDump.cpp */, - 26C7C4821BFFEA7E009BD01F /* WindowsMiniDump.h */, - ); - path = PECOFF; - sourceTree = ""; - }; - 26EFB6151BFE8D3E00544801 /* NetBSD */ = { - isa = PBXGroup; - children = ( - 26EFB6181BFE8D3E00544801 /* PlatformNetBSD.cpp */, - 26EFB6191BFE8D3E00544801 /* PlatformNetBSD.h */, - ); - path = NetBSD; - sourceTree = ""; - }; - 26EFC4C718CFAF0D00865D87 /* JIT */ = { - isa = PBXGroup; - children = ( - 26EFC4CA18CFAF0D00865D87 /* ObjectFileJIT.cpp */, - 26EFC4CB18CFAF0D00865D87 /* ObjectFileJIT.h */, - ); - path = JIT; - sourceTree = ""; - }; - 26F006521B4DD86700B872E5 /* Windows-DYLD */ = { - isa = PBXGroup; - children = ( - 26F006541B4DD86700B872E5 /* DynamicLoaderWindowsDYLD.cpp */, - 26F006551B4DD86700B872E5 /* DynamicLoaderWindowsDYLD.h */, - ); - path = "Windows-DYLD"; - sourceTree = ""; - }; - 26F5C22410F3D950009D5894 /* Tools */ = { - isa = PBXGroup; - children = ( - E769331B1A94D10E00C73337 /* lldb-server */, - 26792615211CA3C100EE1D10 /* lldb-vscode */, - 942829BA1A89830900521B30 /* argdumper */, - 26579F55126A255E0007C5CB /* darwin-debug */, - 265E9BE0115C2B8500D0DCCB /* debugserver */, - 26F5C22510F3D956009D5894 /* Driver */, - 2665CD0915080846002C8FAE /* install-headers */, - ); - name = Tools; - sourceTree = ""; - usesTabs = 0; - }; - 26F5C22510F3D956009D5894 /* Driver */ = { - isa = PBXGroup; - children = ( - DD5F951B21ADE5F000B8265A /* Options.td */, - DD5F951A21ADE5BD00B8265A /* Options.inc */, - 26F5C27210F3D9E4009D5894 /* lldb-Info.plist */, - 26F5C27410F3D9E4009D5894 /* Driver.h */, - 26F5C27310F3D9E4009D5894 /* Driver.cpp */, - ); - name = Driver; - sourceTree = ""; - }; - 26F5C32810F3DF7D009D5894 /* Libraries */ = { - isa = PBXGroup; - children = ( - 26F5C39010F3FA26009D5894 /* CoreFoundation.framework */, - 260C876910F538E700BB2B04 /* Foundation.framework */, - 26709E311964A34000B94724 /* LaunchServices.framework */, - 26F5C32A10F3DFDD009D5894 /* libedit.dylib */, - 2689FFCA13353D7A00698AC0 /* liblldb-core.a */, - 2670F8111862B44A006B332C /* libncurses.dylib */, - 26F5C37410F3F61B009D5894 /* libobjc.dylib */, - 260157C41885F4FF00F875CF /* libpanel.dylib */, - 26F5C32410F3DF23009D5894 /* libpython.dylib */, - 26F5C32B10F3DFDD009D5894 /* libtermcap.dylib */, - 26D55234159A7DB100708D8D /* libxml2.dylib */, - 966C6B7818E6A56A0093F5EC /* libz.dylib */, - EDB919B414F6F10D008FF64B /* Security.framework */, - ); - name = Libraries; - sourceTree = ""; - usesTabs = 0; - }; - 26FFC19214FC072100087D58 /* POSIX-DYLD */ = { - isa = PBXGroup; - children = ( - 26FFC19514FC072100087D58 /* DYLDRendezvous.cpp */, - 26FFC19614FC072100087D58 /* DYLDRendezvous.h */, - 26FFC19714FC072100087D58 /* DynamicLoaderPOSIXDYLD.cpp */, - 26FFC19814FC072100087D58 /* DynamicLoaderPOSIXDYLD.h */, - ); - path = "POSIX-DYLD"; - sourceTree = ""; - }; - 3F8169261ABB73C1001DA9DF /* Initialization */ = { - isa = PBXGroup; - children = ( - 3F8169341ABB7A80001DA9DF /* SystemInitializer.h */, - 3F81692E1ABB7A6D001DA9DF /* SystemInitializer.cpp */, - 3F8169351ABB7A80001DA9DF /* SystemInitializerCommon.h */, - 3F81692F1ABB7A6D001DA9DF /* SystemInitializerCommon.cpp */, - 3F8169361ABB7A80001DA9DF /* SystemLifetimeManager.h */, - 3F8169301ABB7A6D001DA9DF /* SystemLifetimeManager.cpp */, - ); - name = Initialization; - sourceTree = ""; - }; - 3FBA69DA1B6066D20008F44A /* ScriptInterpreter */ = { - isa = PBXGroup; - children = ( - 3FBA69DC1B6066E90008F44A /* None */, - 3FBA69DB1B6066E40008F44A /* Python */, - ); - name = ScriptInterpreter; - sourceTree = ""; - }; - 3FBA69DB1B6066E40008F44A /* Python */ = { - isa = PBXGroup; - children = ( - 3FBA69E21B60672A0008F44A /* lldb-python.h */, - 3FBA69E31B60672A0008F44A /* PythonDataObjects.cpp */, - 3FBA69E41B60672A0008F44A /* PythonDataObjects.h */, - AFCB2BBB1BF577F40018B553 /* PythonExceptionState.cpp */, - AFCB2BBC1BF577F40018B553 /* PythonExceptionState.h */, - 3FBA69E51B60672A0008F44A /* ScriptInterpreterPython.cpp */, - 3FBA69E61B60672A0008F44A /* ScriptInterpreterPython.h */, - ); - name = Python; - sourceTree = ""; - }; - 3FBA69DC1B6066E90008F44A /* None */ = { - isa = PBXGroup; - children = ( - 3FBA69DD1B6067020008F44A /* ScriptInterpreterNone.cpp */, - 3FBA69DE1B6067020008F44A /* ScriptInterpreterNone.h */, - ); - name = None; - sourceTree = ""; - }; - 3FDFDDC4199D37BE009756A7 /* posix */ = { - isa = PBXGroup; - children = ( - 2579065E1BD0488D00178368 /* DomainSocket.cpp */, - 255EFF751AFABA950069F277 /* LockFilePosix.cpp */, - AFDFDFD019E34D3400EAE509 /* ConnectionFileDescriptorPosix.cpp */, - 3FDFDDC5199D37ED009756A7 /* FileSystem.cpp */, - 3FDFE53019A292F0009756A7 /* HostInfoPosix.cpp */, - 3FDFE53219A29304009756A7 /* HostInfoPosix.h */, - 3FDFE56A19AF9C44009756A7 /* HostProcessPosix.cpp */, - 3FDFE56E19AF9C5A009756A7 /* HostProcessPosix.h */, - 3FDFE56B19AF9C44009756A7 /* HostThreadPosix.cpp */, - 3FDFE56F19AF9C5A009756A7 /* HostThreadPosix.h */, - 2377C2F719E613C100737875 /* PipePosix.cpp */, - ); - name = posix; - path = source/Host/posix; - sourceTree = ""; - }; - 3FDFE53919A29399009756A7 /* freebsd */ = { - isa = PBXGroup; - children = ( - 3FDFE53C19A293CA009756A7 /* Config.h */, - 3FDFE55E19AF9B14009756A7 /* Host.cpp */, - 3FDFE53B19A293B3009756A7 /* HostInfoFreeBSD.cpp */, - 3FDFE53D19A293CA009756A7 /* HostInfoFreeBSD.h */, - 3FDFE55F19AF9B14009756A7 /* HostThreadFreeBSD.cpp */, - 3FDFE56019AF9B39009756A7 /* HostThreadFreeBSD.h */, - ); - name = freebsd; - sourceTree = ""; - }; - 3FDFE53E19A2940E009756A7 /* windows */ = { - isa = PBXGroup; - children = ( - 255EFF711AFABA4D0069F277 /* LockFileWindows.cpp */, - 255EFF6F1AFABA320069F277 /* LockFileWindows.h */, - 255EFF701AFABA320069F277 /* PipeWindows.h */, - 3FDFE54719A2946B009756A7 /* AutoHandle.h */, - 3FDFE54819A2946B009756A7 /* editlinewin.h */, - 3FDFE54019A29448009756A7 /* EditLineWin.cpp */, - 3FDFE54119A29448009756A7 /* FileSystem.cpp */, - 3FDFE54219A29448009756A7 /* Host.cpp */, - 3FDFE54319A29448009756A7 /* HostInfoWindows.cpp */, - 3FDFE54919A2946B009756A7 /* HostInfoWindows.h */, - 3FDFE57019AF9CA0009756A7 /* HostProcessWindows.cpp */, - 3FDFE57219AF9CD3009756A7 /* HostProcessWindows.h */, - 3FDFE57119AF9CA0009756A7 /* HostThreadWindows.cpp */, - 3FDFE57319AF9CD3009756A7 /* HostThreadWindows.h */, - 3FDFE54519A29448009756A7 /* ProcessRunLock.cpp */, - 3FDFE54A19A2946B009756A7 /* win32.h */, - 3FDFE54619A29448009756A7 /* Windows.cpp */, - 3FDFE54B19A2946B009756A7 /* windows.h */, - ); - name = windows; - sourceTree = ""; - }; - 490A36BA180F0E6F00BA31F8 /* Windows */ = { - isa = PBXGroup; - children = ( - 490A36BD180F0E6F00BA31F8 /* PlatformWindows.cpp */, - 490A36BE180F0E6F00BA31F8 /* PlatformWindows.h */, - ); - path = Windows; - sourceTree = ""; - }; - 49724D961AD6ECFA0033C538 /* RenderScript */ = { - isa = PBXGroup; - children = ( - 23D065811D4A7BDA0008EDE6 /* CMakeLists.txt */, - 948554591DCBAE3B00345FF5 /* RenderScriptScriptGroup.cpp */, - 948554581DCBAE3200345FF5 /* RenderScriptScriptGroup.h */, - 23D065831D4A7BDA0008EDE6 /* RenderScriptExpressionOpts.h */, - 23D065821D4A7BDA0008EDE6 /* RenderScriptExpressionOpts.cpp */, - 23D065851D4A7BDA0008EDE6 /* RenderScriptRuntime.h */, - 23D065841D4A7BDA0008EDE6 /* RenderScriptRuntime.cpp */, - 23D065871D4A7BDA0008EDE6 /* RenderScriptx86ABIFixups.h */, - 23D065861D4A7BDA0008EDE6 /* RenderScriptx86ABIFixups.cpp */, - ); - name = RenderScript; - path = RenderScript/RenderScriptRuntime; - sourceTree = ""; - }; - 4984BA0B1B975E9F008658D4 /* ExpressionParser */ = { - isa = PBXGroup; - children = ( - 4984BA0C1B97620B008658D4 /* Clang */, - ); - name = ExpressionParser; - sourceTree = ""; - }; - 4984BA0C1B97620B008658D4 /* Clang */ = { - isa = PBXGroup; - children = ( - 4C3DA2301CA0BFB800CEB1D4 /* ClangDiagnostic.h */, - 4C98D3E0118FB98F00E575D0 /* ClangFunctionCaller.h */, - 4C98D3DA118FB96F00E575D0 /* ClangFunctionCaller.cpp */, - 26BC7DC010F1B79500F91463 /* ClangExpressionHelper.h */, - 4CD44D5720C603A90003557C /* ClangHost.h */, - 4CD44D5620C603A80003557C /* ClangHost.cpp */, - 49445E341225AB6A00C11A81 /* ClangUserExpression.h */, - 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */, - 497C86C1122823F300B54702 /* ClangUtilityFunction.h */, - 497C86BD122823D800B54702 /* ClangUtilityFunction.cpp */, - 49D7072611B5AD03001AD875 /* ClangASTSource.h */, - 49D7072811B5AD11001AD875 /* ClangASTSource.cpp */, - 49F1A74911B338AE003ED505 /* ClangExpressionDeclMap.h */, - 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */, - 49445C2912245E5500C11A81 /* ClangExpressionParser.h */, - 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */, - 4C61465D223059B000D686F9 /* ClangExpressionSourceCode.h */, - 4C61465C223059B000D686F9 /* ClangExpressionSourceCode.cpp */, - 4959511B1A1BC48100F6F8FC /* ClangModulesDeclVendor.h */, - 4959511E1A1BC4BC00F6F8FC /* ClangModulesDeclVendor.cpp */, - 49D4FE821210B5FB00CDB854 /* ClangPersistentVariables.h */, - 49D4FE871210B61C00CDB854 /* ClangPersistentVariables.cpp */, - 4906FD4412F2257600A2A77C /* ASTDumper.h */, - 4906FD4012F2255300A2A77C /* ASTDumper.cpp */, - 49A8A3A311D568BF00AD3B68 /* ASTResultSynthesizer.h */, - 49A8A39F11D568A300AD3B68 /* ASTResultSynthesizer.cpp */, - 4911934B1226383D00578B7F /* ASTStructExtractor.h */, - 491193501226386000578B7F /* ASTStructExtractor.cpp */, - 4C0B957E2238342C0026C840 /* ASTUtils.cpp */, - 4C0B957F2238342C0026C840 /* ASTUtils.h */, - 49307AB111DEA4F20081F992 /* IRForTarget.h */, - 49307AAD11DEA4D90081F992 /* IRForTarget.cpp */, - 4984BA0F1B978C3E008658D4 /* ClangExpressionVariable.h */, - 4984BA0E1B978C3E008658D4 /* ClangExpressionVariable.cpp */, - ); - name = Clang; - sourceTree = ""; - }; - 4C14CEF52057258D00DEEF94 /* PPC64 */ = { - isa = PBXGroup; - children = ( - 4C14CEF72057258D00DEEF94 /* ArchitecturePPC64.h */, - 4C14CEF82057258D00DEEF94 /* ArchitecturePPC64.cpp */, - ); - path = PPC64; - sourceTree = ""; - }; - 4C9BF11621C0467700FA4036 /* Breakpad */ = { - isa = PBXGroup; - children = ( - 4CAEC6A721F26D15007C3DD5 /* BreakpadRecords.h */, - 4CAEC6A621F26D15007C3DD5 /* BreakpadRecords.cpp */, - 4C9BF11821C0467700FA4036 /* ObjectFileBreakpad.h */, - 4C9BF11921C0467700FA4036 /* ObjectFileBreakpad.cpp */, - ); - path = Breakpad; - sourceTree = ""; - }; - 4CCA643A13B40B82003BDF98 /* LanguageRuntime */ = { - isa = PBXGroup; - children = ( - 49724D961AD6ECFA0033C538 /* RenderScript */, - 4CCA643B13B40B82003BDF98 /* CPlusPlus */, - 4CCA644013B40B82003BDF98 /* ObjC */, - ); - path = LanguageRuntime; - sourceTree = ""; - }; - 4CCA643B13B40B82003BDF98 /* CPlusPlus */ = { - isa = PBXGroup; - children = ( - 4CCA643C13B40B82003BDF98 /* ItaniumABI */, - ); - path = CPlusPlus; - sourceTree = ""; - }; - 4CCA643C13B40B82003BDF98 /* ItaniumABI */ = { - isa = PBXGroup; - children = ( - 4CCA643D13B40B82003BDF98 /* ItaniumABILanguageRuntime.cpp */, - 4CCA643E13B40B82003BDF98 /* ItaniumABILanguageRuntime.h */, - ); - path = ItaniumABI; - sourceTree = ""; - }; - 4CCA644013B40B82003BDF98 /* ObjC */ = { - isa = PBXGroup; - children = ( - 4CCA644113B40B82003BDF98 /* AppleObjCRuntime */, - ); - path = ObjC; - sourceTree = ""; - }; - 4CCA644113B40B82003BDF98 /* AppleObjCRuntime */ = { - isa = PBXGroup; - children = ( - 94CD7D0719A3FB8600908B7C /* AppleObjCClassDescriptorV2.h */, - 94CD7D0819A3FBA300908B7C /* AppleObjCClassDescriptorV2.cpp */, - 4CCA644213B40B82003BDF98 /* AppleObjCRuntime.cpp */, - 4CCA644313B40B82003BDF98 /* AppleObjCRuntime.h */, - 4CCA644413B40B82003BDF98 /* AppleObjCRuntimeV1.cpp */, - 4CCA644513B40B82003BDF98 /* AppleObjCRuntimeV1.h */, - 4CCA644613B40B82003BDF98 /* AppleObjCRuntimeV2.cpp */, - 4CCA644713B40B82003BDF98 /* AppleObjCRuntimeV2.h */, - 4CCA644813B40B82003BDF98 /* AppleObjCTrampolineHandler.cpp */, - 4CCA644913B40B82003BDF98 /* AppleObjCTrampolineHandler.h */, - 94CD7D0A19A3FBC300908B7C /* AppleObjCTypeEncodingParser.h */, - 94CD7D0B19A3FBCE00908B7C /* AppleObjCTypeEncodingParser.cpp */, - 49DA65041485C942005FF180 /* AppleObjCDeclVendor.h */, - 49DA65021485C92A005FF180 /* AppleObjCDeclVendor.cpp */, - 4CCA644A13B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.cpp */, - 4CCA644B13B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.h */, - ); - path = AppleObjCRuntime; - sourceTree = ""; - }; - 4CE4EFA51E89998800A80C06 /* OpenBSD */ = { - isa = PBXGroup; - children = ( - 4CE4EFA61E8999B000A80C06 /* PlatformOpenBSD.cpp */, - 4CE4EFA71E8999B000A80C06 /* PlatformOpenBSD.h */, - ); - path = OpenBSD; - sourceTree = ""; - }; - 4CEC86A5204738CC009B37B1 /* ARM64 */ = { - isa = PBXGroup; - children = ( - 4CEC86A3204738C5009B37B1 /* TestArm64InstEmulation.cpp */, - ); - name = ARM64; - sourceTree = ""; - }; - 4CEC86A8204738EE009B37B1 /* PPC64 */ = { - isa = PBXGroup; - children = ( - 4CEC86A6204738EA009B37B1 /* TestPPC64InstEmulation.cpp */, - ); - name = PPC64; - sourceTree = ""; - }; - 4CEE62F71145F1C70064CF93 /* GDB Remote */ = { - isa = PBXGroup; - children = ( - 2374D7431D4BAA1D005C9575 /* CMakeLists.txt */, - 2374D74F1D4BB299005C9575 /* GDBRemoteClientBase.h */, - 2374D74E1D4BB299005C9575 /* GDBRemoteClientBase.cpp */, - 6D55B2931A8A808400A70529 /* GDBRemoteCommunicationServerCommon.h */, - 6D55B2941A8A808400A70529 /* GDBRemoteCommunicationServerLLGS.h */, - 6D55B2951A8A808400A70529 /* GDBRemoteCommunicationServerPlatform.h */, - 6D55B28D1A8A806200A70529 /* GDBRemoteCommunicationServerCommon.cpp */, - 6D55B28E1A8A806200A70529 /* GDBRemoteCommunicationServerLLGS.cpp */, - 6D55B28F1A8A806200A70529 /* GDBRemoteCommunicationServerPlatform.cpp */, - 2618EE5B1315B29C001D6D71 /* GDBRemoteCommunication.cpp */, - 2618EE5C1315B29C001D6D71 /* GDBRemoteCommunication.h */, - 26744EED1338317700EF765A /* GDBRemoteCommunicationClient.cpp */, - 26744EEE1338317700EF765A /* GDBRemoteCommunicationClient.h */, - AF8AD943219CD45700614785 /* GDBRemoteCommunicationHistory.cpp */, - AF8AD944219CD45700614785 /* GDBRemoteCommunicationHistory.h */, - AFCB1D57219CD4FD00730AD5 /* GDBRemoteCommunicationReplayServer.cpp */, - AFCB1D56219CD4FD00730AD5 /* GDBRemoteCommunicationReplayServer.h */, - 26744EEF1338317700EF765A /* GDBRemoteCommunicationServer.cpp */, - 26744EF01338317700EF765A /* GDBRemoteCommunicationServer.h */, - 2618EE5D1315B29C001D6D71 /* GDBRemoteRegisterContext.cpp */, - 2618EE5E1315B29C001D6D71 /* GDBRemoteRegisterContext.h */, - 2618EE5F1315B29C001D6D71 /* ProcessGDBRemote.cpp */, - 2618EE601315B29C001D6D71 /* ProcessGDBRemote.h */, - 2618EE611315B29C001D6D71 /* ProcessGDBRemoteLog.cpp */, - 2618EE621315B29C001D6D71 /* ProcessGDBRemoteLog.h */, - 2618EE631315B29C001D6D71 /* ThreadGDBRemote.cpp */, - 2618EE641315B29C001D6D71 /* ThreadGDBRemote.h */, - ); - name = "GDB Remote"; - path = "gdb-remote"; - sourceTree = ""; - }; - 54067BEA1DF2033700749AA5 /* UBSan */ = { - isa = PBXGroup; - children = ( - 54067BEC1DF2034B00749AA5 /* UBSanRuntime.cpp */, - 54067BED1DF2034B00749AA5 /* UBSanRuntime.h */, - ); - path = UBSan; - sourceTree = ""; - }; - 69A01E1A1236C5D400C660B5 /* common */ = { - isa = PBXGroup; - children = ( - D67521351EA17C3900439694 /* MainLoop.cpp */, - 2579065A1BD0488100178368 /* TCPSocket.cpp */, - 2579065B1BD0488100178368 /* UDPSocket.cpp */, - 255EFF731AFABA720069F277 /* LockFileBase.cpp */, - 250D6AE11A9679270049CC70 /* FileSystem.cpp */, - 33E5E8411A672A240024ED68 /* StringConvert.cpp */, - 25420ED11A649D88009ADBCB /* PipeBase.cpp */, - 26CFDCA2186163A4000E63E5 /* Editline.cpp */, - 260C6EA213011581005E16B0 /* File.cpp */, - 69A01E1C1236C5D400C660B5 /* Host.cpp */, - 3FDFE53419A29327009756A7 /* HostInfoBase.cpp */, - 3FDFED2419BA6D96009756A7 /* HostNativeThreadBase.cpp */, - 3FDFED2C19C257A0009756A7 /* HostProcess.cpp */, - 3FDFED2519BA6D96009756A7 /* HostThread.cpp */, - A36FF33B17D8E94600244D40 /* OptionParser.cpp */, - AF37E10917C861F20061E18E /* ProcessRunLock.cpp */, - 236124A31986B4E2004EFC37 /* Socket.cpp */, - 268DA873130095ED00C9483A /* Terminal.cpp */, - 3FDFED2619BA6D96009756A7 /* ThreadLauncher.cpp */, - 3FDFDDBC199C3A06009756A7 /* FileAction.cpp */, - 233B007E1960CB280090E598 /* ProcessLaunchInfo.cpp */, - ); - name = common; - path = source/Host/common; - sourceTree = ""; - }; - 6D55B29B1A8CCFF000A70529 /* android */ = { - isa = PBXGroup; - children = ( - 6D55BAE21A8CD06000A70529 /* Android.h */, - 6D55BAE31A8CD06000A70529 /* Config.h */, - 6D55BAE41A8CD06000A70529 /* HostInfoAndroid.h */, - 6D55BAE01A8CD03D00A70529 /* HostInfoAndroid.cpp */, - ); - name = android; - sourceTree = ""; - }; - 6D55BAE61A8CD08C00A70529 /* Android */ = { - isa = PBXGroup; - children = ( - 25EF23751AC09AD800908DF0 /* AdbClient.cpp */, - 25EF23761AC09AD800908DF0 /* AdbClient.h */, - 6D55BAE91A8CD08C00A70529 /* PlatformAndroid.cpp */, - 6D55BAEA1A8CD08C00A70529 /* PlatformAndroid.h */, - 6D55BAEB1A8CD08C00A70529 /* PlatformAndroidRemoteGDBServer.cpp */, - 6D55BAEC1A8CD08C00A70529 /* PlatformAndroidRemoteGDBServer.h */, - ); - path = Android; - sourceTree = ""; - }; - 8C26C4221C3EA4050031DF7C /* TSan */ = { - isa = PBXGroup; - children = ( - 8C26C4241C3EA4340031DF7C /* TSanRuntime.cpp */, - 8C26C4251C3EA4340031DF7C /* TSanRuntime.h */, - ); - name = TSan; - sourceTree = ""; - }; - 8C2D6A58197A1FB9006989C9 /* MemoryHistory */ = { - isa = PBXGroup; - children = ( - 8C2D6A59197A1FCD006989C9 /* asan */, - ); - path = MemoryHistory; - sourceTree = ""; - }; - 8C2D6A59197A1FCD006989C9 /* asan */ = { - isa = PBXGroup; - children = ( - 8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */, - 8C2D6A5B197A1FDC006989C9 /* MemoryHistoryASan.h */, - ); - path = asan; - sourceTree = ""; - }; - 8C3BD9911EF45D9B0016C343 /* MainThreadChecker */ = { - isa = PBXGroup; - children = ( - 8C3BD9931EF45D9B0016C343 /* MainThreadCheckerRuntime.h */, - 8C3BD9951EF45D9B0016C343 /* MainThreadCheckerRuntime.cpp */, - ); - path = MainThreadChecker; - sourceTree = ""; - }; - 8CF02ADD19DCBEC200B14BE0 /* InstrumentationRuntime */ = { - isa = PBXGroup; - children = ( - 54067BEA1DF2033700749AA5 /* UBSan */, - 8C26C4221C3EA4050031DF7C /* TSan */, - 8CF02ADE19DCBEE600B14BE0 /* ASan */, - 8C3BD9911EF45D9B0016C343 /* MainThreadChecker */, - ); - path = InstrumentationRuntime; - sourceTree = ""; - }; - 8CF02ADE19DCBEE600B14BE0 /* ASan */ = { - isa = PBXGroup; - children = ( - 8CF02AE519DCBF8400B14BE0 /* ASanRuntime.cpp */, - 8CF02AE619DCBF8400B14BE0 /* ASanRuntime.h */, - ); - path = ASan; - sourceTree = ""; - }; - 942829BA1A89830900521B30 /* argdumper */ = { - isa = PBXGroup; - children = ( - 940B04D81A8984FF0045D5F7 /* argdumper.cpp */, - ); - name = argdumper; - sourceTree = ""; - }; - 945261B01B9A11BE00BF138D /* Formatters */ = { - isa = PBXGroup; - children = ( - 4CDB8D671DBA91A6006C5B13 /* LibStdcppUniquePointer.cpp */, - 4CDB8D681DBA91A6006C5B13 /* LibStdcppTuple.cpp */, - 49DEF1201CD7BD90006A7C7D /* BlockPointer.h */, - 49DEF11F1CD7BD90006A7C7D /* BlockPointer.cpp */, - 945261B41B9A11E800BF138D /* CxxStringTypes.h */, - 945261B31B9A11E800BF138D /* CxxStringTypes.cpp */, - 945261B61B9A11E800BF138D /* LibCxx.h */, - 945261B51B9A11E800BF138D /* LibCxx.cpp */, - 9428BC2A1C6E64DC002A24D7 /* LibCxxAtomic.h */, - 9428BC291C6E64DC002A24D7 /* LibCxxAtomic.cpp */, - AFC67B141FBBB03500860ECB /* LibCxxBitset.cpp */, - 945261B71B9A11E800BF138D /* LibCxxInitializerList.cpp */, - 945261B81B9A11E800BF138D /* LibCxxList.cpp */, - 945261B91B9A11E800BF138D /* LibCxxMap.cpp */, - E4A63A9020F55D27000D9548 /* LibCxxOptional.cpp */, - AF9FF1F61FAA79FE00474976 /* LibCxxQueue.cpp */, - AF9FF1F41FAA79A400474976 /* LibCxxTuple.cpp */, - 945261BA1B9A11E800BF138D /* LibCxxUnorderedMap.cpp */, - E414F6ED21388F0200C50BC6 /* LibCxxVariant.h */, - E414F6F021388F6B00C50BC6 /* LibCxxVariant.cpp */, - 945261BB1B9A11E800BF138D /* LibCxxVector.cpp */, - 945261BD1B9A11E800BF138D /* LibStdcpp.h */, - 945261BC1B9A11E800BF138D /* LibStdcpp.cpp */, - ); - name = Formatters; - sourceTree = ""; - }; - 9457596415349416005A9070 /* POSIX */ = { - isa = PBXGroup; - children = ( - 945759651534941F005A9070 /* PlatformPOSIX.cpp */, - 945759661534941F005A9070 /* PlatformPOSIX.h */, - ); - name = POSIX; - sourceTree = ""; - }; - 949EED9D1BA74AB6008C63CF /* Formatters */ = { - isa = PBXGroup; - children = ( - 949EEDAD1BA76719008C63CF /* CF.h */, - 949EEDAC1BA76719008C63CF /* CF.cpp */, - 949EEDA21BA76571008C63CF /* Cocoa.h */, - 949EEDA11BA76571008C63CF /* Cocoa.cpp */, - 949EED9F1BA74B64008C63CF /* CoreMedia.h */, - 949EED9E1BA74B64008C63CF /* CoreMedia.cpp */, - 949EEDA41BA765B5008C63CF /* NSArray.cpp */, - 94B9E50E1BBEFDFE000A48DC /* NSDictionary.h */, - 949EEDA51BA765B5008C63CF /* NSDictionary.cpp */, - 940495781BEC497E00926025 /* NSError.cpp */, - 940495791BEC497E00926025 /* NSException.cpp */, - 949EEDA61BA765B5008C63CF /* NSIndexPath.cpp */, - 94B9E50F1BBF0069000A48DC /* NSSet.h */, - 949EEDA71BA765B5008C63CF /* NSSet.cpp */, - 94B9E5101BBF20B7000A48DC /* NSString.h */, - 94B9E5111BBF20F4000A48DC /* NSString.cpp */, - ); - name = Formatters; - sourceTree = ""; - }; - 94A5B3941AB9FE5F00A5EE7F /* MIPS64 */ = { - isa = PBXGroup; - children = ( - 94A5B3951AB9FE8300A5EE7F /* EmulateInstructionMIPS64.cpp */, - 94A5B3961AB9FE8300A5EE7F /* EmulateInstructionMIPS64.h */, - ); - name = MIPS64; - sourceTree = ""; - }; - 94B638541B8FABEA004FE1E4 /* Language */ = { - isa = PBXGroup; - children = ( - 58A080AD2112AAC500D5580F /* ClangHighlighter.h */, - 58A080AB2112AABB00D5580F /* ClangHighlighter.cpp */, - 94B6385A1B8FB109004FE1E4 /* CPlusPlus */, - 94B638551B8FAC87004FE1E4 /* ObjC */, - 94B638601B8FB7BE004FE1E4 /* ObjCPlusPlus */, - ); - name = Language; - sourceTree = ""; - }; - 94B638551B8FAC87004FE1E4 /* ObjC */ = { - isa = PBXGroup; - children = ( - 949EED9D1BA74AB6008C63CF /* Formatters */, - 94B6385F1B8FB7A2004FE1E4 /* ObjCLanguage.h */, - 94B6385E1B8FB7A2004FE1E4 /* ObjCLanguage.cpp */, - ); - name = ObjC; - sourceTree = ""; - }; - 94B6385A1B8FB109004FE1E4 /* CPlusPlus */ = { - isa = PBXGroup; - children = ( - 945261B01B9A11BE00BF138D /* Formatters */, - 94B6385C1B8FB174004FE1E4 /* CPlusPlusLanguage.h */, - 94B6385B1B8FB174004FE1E4 /* CPlusPlusLanguage.cpp */, - 49F811F01E931B1500F4E163 /* CPlusPlusNameParser.h */, - 49F811EF1E931B1500F4E163 /* CPlusPlusNameParser.cpp */, - AF395C01219254F200894EC3 /* MSVCUndecoratedNameParser.cpp */, - AF395C00219254F200894EC3 /* MSVCUndecoratedNameParser.h */, - ); - name = CPlusPlus; - sourceTree = ""; - }; - 94B638601B8FB7BE004FE1E4 /* ObjCPlusPlus */ = { - isa = PBXGroup; - children = ( - 94B638611B8FB7E9004FE1E4 /* ObjCPlusPlusLanguage.h */, - 94B638621B8FB7F1004FE1E4 /* ObjCPlusPlusLanguage.cpp */, - ); - name = ObjCPlusPlus; - sourceTree = ""; - }; - 94CB255616B0683B0059775D /* DataFormatters */ = { - isa = PBXGroup; - children = ( - 945261C91B9A14E000BF138D /* CXXFunctionPointer.h */, - 945261C71B9A14D300BF138D /* CXXFunctionPointer.cpp */, - 94CB256016B069800059775D /* DataVisualization.h */, - 94CB255816B069770059775D /* DataVisualization.cpp */, - 9447DE411BD5962900E67212 /* DumpValueObjectOptions.h */, - 9447DE421BD5963300E67212 /* DumpValueObjectOptions.cpp */, - 94CB257516B1D3910059775D /* FormatCache.h */, - 94CB257316B1D3870059775D /* FormatCache.cpp */, - 94CB256116B069800059775D /* FormatClasses.h */, - 94CB255916B069770059775D /* FormatClasses.cpp */, - 94CB256216B069800059775D /* FormatManager.h */, - 94CB255A16B069770059775D /* FormatManager.cpp */, - 94EE33F218643C6900CD703B /* FormattersContainer.h */, - 94D0858A1B9675A0000D24BD /* FormattersHelpers.h */, - 94D0858B1B9675B8000D24BD /* FormattersHelpers.cpp */, - 942612F51B94FFE900EF842E /* LanguageCategory.h */, - 942612F61B95000000EF842E /* LanguageCategory.cpp */, - 94F48F231A01C679005C0EC6 /* StringPrinter.h */, - 94F48F241A01C687005C0EC6 /* StringPrinter.cpp */, - 94CB256816B096F90059775D /* TypeCategory.h */, - 94CB256416B096F10059775D /* TypeCategory.cpp */, - 94CB256916B096FA0059775D /* TypeCategoryMap.h */, - 94CB256516B096F10059775D /* TypeCategoryMap.cpp */, - 94CB256A16B0A4030059775D /* TypeFormat.h */, - 94CB256D16B0A4260059775D /* TypeFormat.cpp */, - 94CB256B16B0A4030059775D /* TypeSummary.h */, - 94CB256E16B0A4260059775D /* TypeSummary.cpp */, - 94CB256C16B0A4040059775D /* TypeSynthetic.h */, - 94CB256F16B0A4270059775D /* TypeSynthetic.cpp */, - 94CD131819BA33A100DB7BED /* TypeValidator.h */, - 94CD131919BA33B400DB7BED /* TypeValidator.cpp */, - 945215DD17F639E600521C0B /* ValueObjectPrinter.h */, - 945215DE17F639EE00521C0B /* ValueObjectPrinter.cpp */, - 943B90FC1B991586007BA499 /* VectorIterator.h */, - 9418EBCB1AA9108B0058B02E /* VectorType.h */, - 9418EBCC1AA910910058B02E /* VectorType.cpp */, - ); - name = DataFormatters; - sourceTree = ""; - }; - 9694FA6E1B32AA35005EBB16 /* SysV-mips */ = { - isa = PBXGroup; - children = ( - 9694FA6F1B32AA64005EBB16 /* ABISysV_mips.cpp */, - 9694FA701B32AA64005EBB16 /* ABISysV_mips.h */, - ); - name = "SysV-mips"; - sourceTree = ""; - }; - 9A1890301F47D5BC00394BCA /* TestingSupport */ = { - isa = PBXGroup; - children = ( - 9A1890311F47D5D400394BCA /* CMakeLists.txt */, - 9A1890321F47D5D400394BCA /* MockTildeExpressionResolver.cpp */, - 9A1890331F47D5D400394BCA /* MockTildeExpressionResolver.h */, - 9A1890341F47D5D400394BCA /* TestUtilities.cpp */, - 9A1890351F47D5D400394BCA /* TestUtilities.h */, - ); - name = TestingSupport; - sourceTree = ""; - }; - 9A2057091F3B81DE00F6C293 /* DWARF */ = { - isa = PBXGroup; - children = ( - 9A20570A1F3B81F300F6C293 /* SymbolFileDWARFTests.cpp */, - 9A20570C1F3B81F800F6C293 /* Inputs */, - ); - name = DWARF; - sourceTree = ""; - }; - 9A20570C1F3B81F800F6C293 /* Inputs */ = { - isa = PBXGroup; - children = ( - AFF62FDC2006D4D4003644F9 /* test-dwarf.cpp */, - AFF62FDD2006D4D4003644F9 /* test-dwarf.exe */, - ); - name = Inputs; - sourceTree = ""; - }; - 9A2057191F3B864D00F6C293 /* Platform */ = { - isa = PBXGroup; - children = ( - 9A20571A1F3B866F00F6C293 /* PlatformDarwinTest.cpp */, - ); - name = Platform; - sourceTree = ""; - }; - 9A20571D1F3B8D1100F6C293 /* Signals */ = { - isa = PBXGroup; - children = ( - 9A20571E1F3B8D2100F6C293 /* UnixSignalsTest.cpp */, - ); - name = Signals; - sourceTree = ""; - }; - 9A2057221F3B8DA600F6C293 /* ObjectFile */ = { - isa = PBXGroup; - children = ( - 9A2057231F3B8DC100F6C293 /* ELF */, - ); - name = ObjectFile; - sourceTree = ""; - }; - 9A2057231F3B8DC100F6C293 /* ELF */ = { - isa = PBXGroup; - children = ( - 9A2057251F3B8DD200F6C293 /* TestObjectFileELF.cpp */, - ); - name = ELF; - sourceTree = ""; - }; - 9A20573B1F3B8E8500F6C293 /* linux */ = { - isa = PBXGroup; - children = ( - 9A20573C1F3B8EA200F6C293 /* HostTest.cpp */, - 9A20573D1F3B8EA200F6C293 /* SupportTest.cpp */, - ); - name = linux; - sourceTree = ""; - }; - 9A2057421F3B904C00F6C293 /* debugserver */ = { - isa = PBXGroup; - children = ( - 9A2057441F3B905C00F6C293 /* debugserver_LogCallback.cpp */, - 9A2057451F3B905C00F6C293 /* RNBSocketTest.cpp */, - ); - name = debugserver; - sourceTree = ""; - }; - AEC6FF9D1BE97035007882C1 /* Expression */ = { - isa = PBXGroup; - children = ( - 23CB14F31D66CC9B00EDDDE1 /* CMakeLists.txt */, - ); - path = Expression; - sourceTree = ""; - }; - AF11CB34182CA85A00D9B618 /* SystemRuntime */ = { - isa = PBXGroup; - children = ( - AF11CB35182CA85A00D9B618 /* MacOSX */, - ); - path = SystemRuntime; - sourceTree = ""; - }; - AF11CB35182CA85A00D9B618 /* MacOSX */ = { - isa = PBXGroup; - children = ( - AF0E22EE18A09FB20009B7D1 /* AppleGetItemInfoHandler.cpp */, - AF0E22EF18A09FB20009B7D1 /* AppleGetItemInfoHandler.h */, - AF1F7B05189C904B0087DB9C /* AppleGetPendingItemsHandler.cpp */, - AF1F7B06189C904B0087DB9C /* AppleGetPendingItemsHandler.h */, - AF25AB24188F685C0030DEC3 /* AppleGetQueuesHandler.cpp */, - AF25AB25188F685C0030DEC3 /* AppleGetQueuesHandler.h */, - AF45FDE318A1F3AC0007051C /* AppleGetThreadItemInfoHandler.cpp */, - AF45FDE418A1F3AC0007051C /* AppleGetThreadItemInfoHandler.h */, - AF9B8F31182DB52900DA866F /* SystemRuntimeMacOSX.cpp */, - AF9B8F32182DB52900DA866F /* SystemRuntimeMacOSX.h */, - ); - path = MacOSX; - sourceTree = ""; - }; - AF20F7621AF18F5E00751A6E /* SysV-arm */ = { - isa = PBXGroup; - children = ( - AF20F7641AF18F8500751A6E /* ABISysV_arm.cpp */, - AF20F7651AF18F8500751A6E /* ABISysV_arm.h */, - ); - name = "SysV-arm"; - sourceTree = ""; - }; - AF20F7631AF18F6800751A6E /* SysV-arm64 */ = { - isa = PBXGroup; - children = ( - AF20F7681AF18F9000751A6E /* ABISysV_arm64.cpp */, - AF20F7691AF18F9000751A6E /* ABISysV_arm64.h */, - ); - name = "SysV-arm64"; - sourceTree = ""; - }; - AF2BCA6518C7EFDE005B4526 /* JITLoader */ = { - isa = PBXGroup; - children = ( - AF2BCA6718C7EFDE005B4526 /* GDB */, - ); - path = JITLoader; - sourceTree = ""; - }; - AF2BCA6718C7EFDE005B4526 /* GDB */ = { - isa = PBXGroup; - children = ( - AF2BCA6A18C7EFDE005B4526 /* JITLoaderGDB.h */, - AF2BCA6918C7EFDE005B4526 /* JITLoaderGDB.cpp */, - ); - path = GDB; - sourceTree = ""; - }; - AF2E029F1FA2CE8A00A86C34 /* Architecture */ = { - isa = PBXGroup; - children = ( - 2647B62E21C4364F00A81D15 /* MIPS */, - 4C14CEF52057258D00DEEF94 /* PPC64 */, - AF2E02A01FA2CE9900A86C34 /* Arm */, - ); - path = Architecture; - sourceTree = ""; - }; - AF2E02A01FA2CE9900A86C34 /* Arm */ = { - isa = PBXGroup; - children = ( - AF2E02A11FA2CEAF00A86C34 /* ArchitectureArm.cpp */, - AF2E02A21FA2CEAF00A86C34 /* ArchitectureArm.h */, - ); - path = Arm; - sourceTree = ""; - }; - AF352EDA22C17BD700D058B6 /* Windows-x86_64 */ = { - isa = PBXGroup; - children = ( - AF352EDB22C17BD700D058B6 /* ABIWindows_x86_64.cpp */, - AF352EDC22C17BD700D058B6 /* ABIWindows_x86_64.h */, - AF352EDD22C17BD700D058B6 /* CMakeLists.txt */, - ); - path = "Windows-x86_64"; - sourceTree = ""; - }; - AF6335DF1C87B20A00F7D554 /* PDB */ = { - isa = PBXGroup; - children = ( - 4C562CC21CC07DDD00C52EAC /* PDBASTParser.cpp */, - 4C562CC31CC07DDD00C52EAC /* PDBASTParser.h */, - 4CA0C6CA20F929C600CFE6BB /* PDBLocationToDWARFExpression.cpp */, - 4CA0C6CB20F929C700CFE6BB /* PDBLocationToDWARFExpression.h */, - AF6335E01C87B21E00F7D554 /* SymbolFilePDB.cpp */, - AF6335E11C87B21E00F7D554 /* SymbolFilePDB.h */, - ); - name = PDB; - sourceTree = ""; - }; - AF77E08B1A033C3E0096C0EA /* SysV-ppc */ = { - isa = PBXGroup; - children = ( - AF77E08D1A033C700096C0EA /* ABISysV_ppc.cpp */, - AF77E08E1A033C700096C0EA /* ABISysV_ppc.h */, - ); - name = "SysV-ppc"; - sourceTree = ""; - }; - AF77E08C1A033C4B0096C0EA /* SysV-ppc64 */ = { - isa = PBXGroup; - children = ( - AF77E0911A033C7F0096C0EA /* ABISysV_ppc64.cpp */, - AF77E0921A033C7F0096C0EA /* ABISysV_ppc64.h */, - ); - name = "SysV-ppc64"; - sourceTree = ""; - }; - AF7F97652141FA2100795BC0 /* Disassembler */ = { - isa = PBXGroup; - children = ( - AFEABBF62230BF840097046F /* TestArm64Disassembly.cpp */, - AF7F97662141FA3800795BC0 /* TestArmv7Disassembly.cpp */, - ); - name = Disassembler; - path = ../Disassembler; - sourceTree = ""; - }; - AF97744421E99467006876A7 /* Breakpad */ = { - isa = PBXGroup; - children = ( - AF97744621E9947B006876A7 /* SymbolFileBreakpad.cpp */, - AF97744521E9947B006876A7 /* SymbolFileBreakpad.h */, - ); - name = Breakpad; - path = "New Group"; - sourceTree = ""; - }; - AFAFD8081E57E19E0017A14F /* Target */ = { - isa = PBXGroup; - children = ( - 9A2057061F3B818600F6C293 /* MemoryRegionInfoTest.cpp */, - AFAFD8091E57E1B90017A14F /* ModuleCacheTest.cpp */, - 2668A2ED20AF417D00D94111 /* PathMappingListTest.cpp */, - ); - name = Target; - sourceTree = ""; - }; - AFD966B321714099006714AC /* NativePDB */ = { - isa = PBXGroup; - children = ( - AFD966B4217140B5006714AC /* CompileUnitIndex.cpp */, - AFD966BD217140C8006714AC /* CompileUnitIndex.h */, - 5A6424922204D04F00C3D9DB /* CodeViewRegisterMapping.cpp */, - 5A6424942204D05000C3D9DB /* CodeViewRegisterMapping.h */, - 4C38996221B9AECC002BAEF4 /* DWARFLocationExpression.cpp */, - 4C38996321B9AECC002BAEF4 /* DWARFLocationExpression.h */, - AF815DF721C855B400023A34 /* PdbAstBuilder.cpp */, - AF815DF821C855B400023A34 /* PdbAstBuilder.h */, - 5A6424932204D04F00C3D9DB /* PdbFPOProgramToDWARFExpression.cpp */, - 5A6424912204D04F00C3D9DB /* PdbFPOProgramToDWARFExpression.h */, - AFD966B6217140B6006714AC /* PdbIndex.cpp */, - AFD966BF217140C8006714AC /* PdbIndex.h */, - AF0F459D219FA1C800C1E612 /* PdbSymUid.cpp */, - AFD966BC217140C8006714AC /* PdbSymUid.h */, - AFD966B5217140B6006714AC /* PdbUtil.cpp */, - AFD966BE217140C8006714AC /* PdbUtil.h */, - AFD966B7217140B6006714AC /* SymbolFileNativePDB.cpp */, - AFD966C0217140C8006714AC /* SymbolFileNativePDB.h */, - AF0578C2217FA80700CF9D80 /* UdtRecordCompleter.cpp */, - AF0578C1217FA80700CF9D80 /* UdtRecordCompleter.h */, - ); - name = NativePDB; - path = "New Group"; - sourceTree = ""; - }; - AFDBC36A2046638D00B9C8F2 /* PPC64 */ = { - isa = PBXGroup; - children = ( - AFDBC36C204663AF00B9C8F2 /* EmulateInstructionPPC64.cpp */, - AFDBC36B204663AF00B9C8F2 /* EmulateInstructionPPC64.h */, - ); - name = PPC64; - path = "New Group"; - sourceTree = ""; - }; - AFEC5FD31D94F9130076A480 /* UnwindAssembly */ = { - isa = PBXGroup; - children = ( - 4CEC86A8204738EE009B37B1 /* PPC64 */, - 4CEC86A5204738CC009B37B1 /* ARM64 */, - AFEC5FD41D94F9270076A480 /* x86 */, - ); - name = UnwindAssembly; - sourceTree = ""; - }; - AFEC5FD41D94F9270076A480 /* x86 */ = { - isa = PBXGroup; - children = ( - AFEC5FD51D94F9380076A480 /* Testx86AssemblyInspectionEngine.cpp */, - ); - name = x86; - sourceTree = ""; - }; - AFF81FAA20D1CC210010F95E /* objcxx */ = { - isa = PBXGroup; - children = ( - AFF81FAD20D1CC400010F95E /* Host.mm */, - AFF81FAB20D1CC400010F95E /* HostInfoMacOSX.mm */, - AFF81FAC20D1CC400010F95E /* HostThreadMacOSX.mm */, - ); - name = objcxx; - sourceTree = ""; - }; - AFF81FB120D1CC820010F95E /* objcxx */ = { - isa = PBXGroup; - children = ( - AFF81FB220D1CC910010F95E /* PlatformiOSSimulatorCoreSimulatorSupport.mm */, - AFB1682620D1D4CC00A74F25 /* PlatformiOSSimulatorCoreSimulatorSupport.h */, - ); - name = objcxx; - sourceTree = ""; - }; - E769331B1A94D10E00C73337 /* lldb-server */ = { - isa = PBXGroup; - children = ( - 257906621BD5AFD000178368 /* Acceptor.cpp */, - 257906631BD5AFD000178368 /* Acceptor.h */, - 6D762BEC1B1605CD006C929D /* LLDBServerUtilities.cpp */, - 6D762BED1B1605CD006C929D /* LLDBServerUtilities.h */, - E769331D1A94D18100C73337 /* lldb-server.cpp */, - 26DC6A1C1337FECA00FF7998 /* lldb-platform.cpp */, - 26D6F3F4183E7F9300194858 /* lldb-gdbserver.cpp */, - 4CD44D2020B725DA0003557C /* SystemInitializerLLGS.cpp */, - 4CD44D2320B725F60003557C /* SystemInitializerLLGS.h */, - ); - name = "lldb-server"; - sourceTree = ""; - }; - E778E99D1B062D1700247609 /* MIPS */ = { - isa = PBXGroup; - children = ( - E778E99F1B062D1700247609 /* EmulateInstructionMIPS.cpp */, - E778E9A01B062D1700247609 /* EmulateInstructionMIPS.h */, - ); - path = MIPS; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 26680202115FD0ED008E1FE4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2668020E115FD12C008E1FE4 /* lldb-defines.h in Headers */, - 2668020F115FD12C008E1FE4 /* lldb-enumerations.h in Headers */, - 26DE1E6C11616C2E00A093E2 /* lldb-forward.h in Headers */, - 26680214115FD12C008E1FE4 /* lldb-types.h in Headers */, - 94145431175E63B500284436 /* lldb-versioning.h in Headers */, - 26B42C4D1187ABA50079C8C8 /* LLDB.h in Headers */, - 26DE204311618ACA00A093E2 /* SBAddress.h in Headers */, - 26151DC31B41E4A200FF7F1C /* SharingPtr.h in Headers */, - 26DE205711618FC500A093E2 /* SBBlock.h in Headers */, - 332CCB181AFF41620034D4C4 /* SBLanguageRuntime.h in Headers */, - 26680219115FD13D008E1FE4 /* SBBreakpoint.h in Headers */, - 2668021A115FD13D008E1FE4 /* SBBreakpointLocation.h in Headers */, - 2668021B115FD13D008E1FE4 /* SBBroadcaster.h in Headers */, - 2668021D115FD13D008E1FE4 /* SBCommandInterpreter.h in Headers */, - 2668021E115FD13D008E1FE4 /* SBCommandReturnObject.h in Headers */, - 2668021F115FD13D008E1FE4 /* SBCommunication.h in Headers */, - 26DE205511618FB800A093E2 /* SBCompileUnit.h in Headers */, - 9443B123140C26AB0013457C /* SBData.h in Headers */, - 26680220115FD13D008E1FE4 /* SBDebugger.h in Headers */, - 490A966B1628C3BF00F0002E /* SBDeclaration.h in Headers */, - 254FBBA31A9166F100BD6378 /* SBAttachInfo.h in Headers */, - 26680221115FD13D008E1FE4 /* SBDefines.h in Headers */, - 8CCB018219BA4E270009FD44 /* SBThreadCollection.h in Headers */, - 9A36D24D1EB3BE7F00AAD9EA /* SBTrace.h in Headers */, - AF0EBBEC185941360059E52F /* SBQueue.h in Headers */, - 4C877B391F30EF990068FCFB /* SBProcessInfo.h in Headers */, - 26680222115FD13D008E1FE4 /* SBError.h in Headers */, - 26680223115FD13D008E1FE4 /* SBEvent.h in Headers */, - AFDCDBCB19DD0F42005EA55E /* SBExecutionContext.h in Headers */, - 26680224115FD13D008E1FE4 /* SBFileSpec.h in Headers */, - 4CF52AF51428291E0051E832 /* SBFileSpecList.h in Headers */, - 26680225115FD13D008E1FE4 /* SBFrame.h in Headers */, - 26DE205311618FAC00A093E2 /* SBFunction.h in Headers */, - 9A3576A8116E9AB700E8ED2F /* SBHostOS.h in Headers */, - 264297571D1DF247003F2BF4 /* SBMemoryRegionInfoList.h in Headers */, - 9AC7038E117674FB0086C050 /* SBInstruction.h in Headers */, - 9AC70390117675270086C050 /* SBInstructionList.h in Headers */, - 264297581D1DF250003F2BF4 /* SBMemoryRegionInfo.h in Headers */, - 26DE205911618FE700A093E2 /* SBLineEntry.h in Headers */, - 254FBB971A81B03100BD6378 /* SBLaunchInfo.h in Headers */, - AF0EBBED185941360059E52F /* SBQueueItem.h in Headers */, - 26680227115FD13D008E1FE4 /* SBListener.h in Headers */, - 26DE204F11618E9800A093E2 /* SBModule.h in Headers */, - 2668022A115FD13D008E1FE4 /* SBProcess.h in Headers */, - 26B8283D142D01E9002DBC64 /* SBSection.h in Headers */, - 2668022B115FD13D008E1FE4 /* SBSourceManager.h in Headers */, - 26C72C94124322890068DC16 /* SBStream.h in Headers */, - 9A357671116E7B5200E8ED2F /* SBStringList.h in Headers */, - 26DE205B11618FF600A093E2 /* SBSymbol.h in Headers */, - 4C54B27B1F61CE2800D469CA /* SBBreakpointName.h in Headers */, - 262F12B71835469C00AEB384 /* SBPlatform.h in Headers */, - 23DCBEA31D63E71F0084C36B /* SBStructuredData.h in Headers */, - 26DE204111618AB900A093E2 /* SBSymbolContext.h in Headers */, - 268F9D53123AA15200B91E9B /* SBSymbolContextList.h in Headers */, - 2668022C115FD13D008E1FE4 /* SBTarget.h in Headers */, - 2668022E115FD13D008E1FE4 /* SBThread.h in Headers */, - 4C56543519D2297A002E9C44 /* SBThreadPlan.h in Headers */, - 263C493A178B50CF0070F12D /* SBModuleSpec.h in Headers */, - 2617447A11685869005ADD65 /* SBType.h in Headers */, - 9475C18914E5EA08001BFC6D /* SBTypeCategory.h in Headers */, - 941BCC7F14E48C4000BB969C /* SBTypeFilter.h in Headers */, - 941BCC8014E48C4000BB969C /* SBTypeFormat.h in Headers */, - 9475C18F14E5F858001BFC6D /* SBTypeNameSpecifier.h in Headers */, - 941BCC8114E48C4000BB969C /* SBTypeSummary.h in Headers */, - 9A36D24E1EB3BE7F00AAD9EA /* SBTraceOptions.h in Headers */, - 23059A121958B3B2007B8189 /* SBUnixSignals.h in Headers */, - 941BCC8214E48C4000BB969C /* SBTypeSynthetic.h in Headers */, - 9A19A6AF1163BBB200E0D453 /* SBValue.h in Headers */, - 9A357583116CFDEE00E8ED2F /* SBValueList.h in Headers */, - DD1E0AD1220BC3DC00B815F8 /* SBReproducer.h in Headers */, - B2A58722143119810092BFBA /* SBWatchpoint.h in Headers */, - 26D265BC136B4269002EEE45 /* lldb-public.h in Headers */, - 4CE4F673162C971A00F75CB3 /* SBExpressionOptions.h in Headers */, - 94235B9F1A8D66D600EB2EED /* SBVariablesOptions.h in Headers */, - 23EFE389193D1ABC00E54E54 /* SBTypeEnumMember.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2689FFC813353D7A00698AC0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - AF8AD6381BEC28C400150209 /* PlatformRemoteAppleTV.h in Headers */, - 26EFB61C1BFE8D3E00544801 /* PlatformNetBSD.h in Headers */, - 2647B64321C43BB000A81D15 /* LinuxProcMaps.h in Headers */, - AF3A4AD31EA05C4700B5DEB4 /* PlatformRemoteDarwinDevice.h in Headers */, - AF9113FE1FBE78EA004320CD /* RegisterContextPOSIXCore_ppc64le.h in Headers */, - AF33B4BF1C1FA441001B28D9 /* NetBSDSignals.h in Headers */, - AF6CA6681FBBAF37005A0DC3 /* ArchSpec.h in Headers */, - AF235EB41FBE7858009C5541 /* RegisterInfoPOSIX_ppc64le.h in Headers */, - AF2E02A41FA2CEAF00A86C34 /* ArchitectureArm.h in Headers */, - 2619C4872107A9A2009CDE81 /* RegisterContextMinidump_ARM.h in Headers */, - 267F685A1CC02EBE0086832B /* RegisterInfos_s390x.h in Headers */, - 267F68541CC02E920086832B /* RegisterContextLinux_s390x.h in Headers */, - 2619C4862107A9A2009CDE81 /* RegisterContextMinidump_ARM64.h in Headers */, - 2647B63421C4367A00A81D15 /* Event.h in Headers */, - AF235EB11FBE77B6009C5541 /* RegisterContextPOSIX_ppc64le.h in Headers */, - 267F68501CC02E270086832B /* RegisterContextPOSIXCore_s390x.h in Headers */, - 4FBC04EF211A06820015A814 /* RichManglingContext.h in Headers */, - 4984BA181B979C08008658D4 /* ExpressionVariable.h in Headers */, - 2647B63121C4366300A81D15 /* ArchitectureMips.h in Headers */, - 26C7C4841BFFEA7E009BD01F /* WindowsMiniDump.h in Headers */, - 30B38A001CAAA6D7009524E3 /* ClangUtil.h in Headers */, - AFD65C821D9B5B2E00D93120 /* RegisterContextMinidump_x86_64.h in Headers */, - 2647B63621C4368300A81D15 /* Broadcaster.h in Headers */, - 238F2BA11D2C835A001FF92A /* StructuredDataPlugin.h in Headers */, - AF415AE81D949E4400FCE0D4 /* x86AssemblyInspectionEngine.h in Headers */, - AF8AD62F1BEC28A400150209 /* PlatformAppleTVSimulator.h in Headers */, - 238F2BA91D2C85FA001FF92A /* StructuredDataDarwinLog.h in Headers */, - AF8AD63A1BEC28C400150209 /* PlatformRemoteAppleWatch.h in Headers */, - 257906651BD5AFD000178368 /* Acceptor.h in Headers */, - 2647B63821C4369500A81D15 /* Listener.h in Headers */, - 238F2BA21D2C835A001FF92A /* SystemRuntime.h in Headers */, - 260A63171861008E00FECF8E /* IOHandler.h in Headers */, - 267F68581CC02EAE0086832B /* RegisterContextPOSIX_s390x.h in Headers */, - AF27AD561D3603EA00CF2833 /* DynamicLoaderDarwin.h in Headers */, - AFCB2BBE1BF577F40018B553 /* PythonExceptionState.h in Headers */, - E414F6EE21388F0300C50BC6 /* LibCxxVariant.h in Headers */, - 267F684B1CC02DED0086832B /* ABISysV_s390x.h in Headers */, - AF8AD6311BEC28A400150209 /* PlatformAppleWatchSimulator.h in Headers */, - 5A6424952204D05000C3D9DB /* PdbFPOProgramToDWARFExpression.h in Headers */, - 5A6424982204D05000C3D9DB /* CodeViewRegisterMapping.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXLegacyTarget section */ - 2387551E1C24974600CCE8C3 /* lldb-python-test-suite */ = { - isa = PBXLegacyTarget; - buildArgumentsString = "-u $(SRCROOT)/test/dotest.py --apple-sdk $(PLATFORM_NAME) --executable=$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/lldb -C $(LLDB_PYTHON_TESTSUITE_CC) --arch $(LLDB_PYTHON_TESTSUITE_ARCH) --filecheck $(LLVM_BUILD_DIR)/x86_64/bin/FileCheck --session-file-format fm --results-formatter lldbsuite.test_event.formatter.xunit.XunitFormatter --build-dir $(BUILD_DIR)/lldb-test-build.noindex --results-file $(BUILD_DIR)/test-results-$(LLDB_PYTHON_TESTSUITE_ARCH).xml --rerun-all-issues --env TERM=vt100 -O--xpass=ignore"; - buildConfigurationList = 238755241C24974600CCE8C3 /* Build configuration list for PBXLegacyTarget "lldb-python-test-suite" */; - buildPhases = ( - ); - buildToolPath = /usr/bin/python; - buildWorkingDirectory = "$(BUILD_DIR)"; - dependencies = ( - ); - name = "lldb-python-test-suite"; - passBuildSettingsInEnvironment = 1; - productName = "LLDB Python Test Suite"; - }; - 2687EAC51508110B00DD8C2E /* install-headers */ = { - isa = PBXLegacyTarget; - buildArgumentsString = "$(ACTION)"; - buildConfigurationList = 2687EAC61508110B00DD8C2E /* Build configuration list for PBXLegacyTarget "install-headers" */; - buildPhases = ( - ); - buildToolPath = /usr/bin/make; - buildWorkingDirectory = "$(SRCROOT)/tools/install-headers"; - dependencies = ( - ); - name = "install-headers"; - passBuildSettingsInEnvironment = 1; - productName = "install-headers"; - }; -/* End PBXLegacyTarget section */ - -/* Begin PBXNativeTarget section */ - 239504D31BDD451400963CEA /* lldb-gtest */ = { - isa = PBXNativeTarget; - buildConfigurationList = 239504DD1BDD451400963CEA /* Build configuration list for PBXNativeTarget "lldb-gtest" */; - buildPhases = ( - 239504D01BDD451400963CEA /* Sources */, - 239504D11BDD451400963CEA /* Frameworks */, - 239504D21BDD451400963CEA /* CopyFiles */, - 23B9815E1CB2E2F90059938A /* Run gtests */, - ); - buildRules = ( - ); - dependencies = ( - 23E2E5481D904D72006F38BB /* PBXTargetDependency */, - ); - name = "lldb-gtest"; - productName = "lldb-gtest"; - productReference = 239504D41BDD451400963CEA /* lldb-gtest */; - productType = "com.apple.product-type.tool"; - }; - 23CB152F1D66DA9300EDDDE1 /* lldb-gtest-build */ = { - isa = PBXNativeTarget; - buildConfigurationList = 23CB15511D66DA9300EDDDE1 /* Build configuration list for PBXNativeTarget "lldb-gtest-build" */; - buildPhases = ( - 23CB15321D66DA9300EDDDE1 /* Sources */, - 23CB15481D66DA9300EDDDE1 /* Frameworks */, - 23E2E5461D904B8A006F38BB /* Copy Inputs content to run dir */, - 23CB154F1D66DA9300EDDDE1 /* Copy Files */, - ); - buildRules = ( - ); - dependencies = ( - 23CB15301D66DA9300EDDDE1 /* PBXTargetDependency */, - ); - name = "lldb-gtest-build"; - productName = "lldb-gtest"; - productReference = 23CB15561D66DA9300EDDDE1 /* lldb-gtest */; - productType = "com.apple.product-type.tool"; - }; - 26579F67126A25920007C5CB /* darwin-debug */ = { - isa = PBXNativeTarget; - buildConfigurationList = 26579F6D126A25BF0007C5CB /* Build configuration list for PBXNativeTarget "darwin-debug" */; - buildPhases = ( - 26579F65126A25920007C5CB /* Sources */, - 26579F66126A25920007C5CB /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "darwin-debug"; - productName = "lldb-launcher"; - productReference = 26579F68126A25920007C5CB /* darwin-debug */; - productType = "com.apple.product-type.tool"; - }; - 26680206115FD0ED008E1FE4 /* LLDB */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2668020B115FD0EE008E1FE4 /* Build configuration list for PBXNativeTarget "LLDB" */; - buildPhases = ( - 26DC6A5813380D4300FF7998 /* Prepare Swig Bindings */, - 26680202115FD0ED008E1FE4 /* Headers */, - 26680203115FD0ED008E1FE4 /* Resources */, - 26680204115FD0ED008E1FE4 /* Sources */, - 26680205115FD0ED008E1FE4 /* Frameworks */, - 261B5A7511C3FA6F00AABD0A /* Fixup Framework Headers */, - 9A19ACE2116563A700E0D453 /* Finish swig wrapper classes (lldb) */, - 4959511A1A1ACE9500F6F8FC /* Install Clang compiler headers */, - 940B04E31A89875C0045D5F7 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - 942829CE1A89842900521B30 /* PBXTargetDependency */, - 94E829C9152D33B4006F96A3 /* PBXTargetDependency */, - 2689011513353E9B00698AC0 /* PBXTargetDependency */, - 262CFC7211A450CB00946C6C /* PBXTargetDependency */, - 26368AF6126B95FA00E8659F /* PBXTargetDependency */, - ); - name = LLDB; - productName = LLDB; - productReference = 26680207115FD0ED008E1FE4 /* LLDB.framework */; - productType = "com.apple.product-type.framework"; - }; - 2679260B211CA3AC00EE1D10 /* lldb-vscode */ = { - isa = PBXNativeTarget; - buildConfigurationList = 26792614211CA3AD00EE1D10 /* Build configuration list for PBXNativeTarget "lldb-vscode" */; - buildPhases = ( - 26792608211CA3AC00EE1D10 /* Sources */, - 26792609211CA3AC00EE1D10 /* Frameworks */, - 2679260A211CA3AC00EE1D10 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - 26792620211CA40700EE1D10 /* PBXTargetDependency */, - ); - name = "lldb-vscode"; - productName = "lldb-vscode"; - productReference = 2679260C211CA3AC00EE1D10 /* lldb-vscode */; - productType = "com.apple.product-type.tool"; - }; - 2689FFC913353D7A00698AC0 /* lldb-core */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2689FFD813353D7A00698AC0 /* Build configuration list for PBXNativeTarget "lldb-core" */; - buildPhases = ( - 261EECA21337D399001D193C /* Build llvm and clang */, - 2689FFC613353D7A00698AC0 /* Sources */, - 2689FFC713353D7A00698AC0 /* Frameworks */, - 2689FFC813353D7A00698AC0 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "lldb-core"; - productName = "lldb-core"; - productReference = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; - productType = "com.apple.product-type.library.dynamic"; - }; - 2690CD161A6DC0D000E717C8 /* lldb-mi */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2690CD1F1A6DC0D000E717C8 /* Build configuration list for PBXNativeTarget "lldb-mi" */; - buildPhases = ( - 2690CD131A6DC0D000E717C8 /* Sources */, - 2690CD141A6DC0D000E717C8 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 26DF74601A6DCDB300B85563 /* PBXTargetDependency */, - ); - name = "lldb-mi"; - productName = "lldb-mi"; - productReference = 2690CD171A6DC0D000E717C8 /* lldb-mi */; - productType = "com.apple.product-type.tool"; - }; - 26DC6A0F1337FE6900FF7998 /* lldb-server */ = { - isa = PBXNativeTarget; - buildConfigurationList = 26DC6A1A1337FE8B00FF7998 /* Build configuration list for PBXNativeTarget "lldb-server" */; - buildPhases = ( - 26DC6A0D1337FE6900FF7998 /* Sources */, - 26DC6A0E1337FE6900FF7998 /* Frameworks */, - 4C3326CA18B2A2B800EB5DD7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 26DC6A161337FE7300FF7998 /* PBXTargetDependency */, - ); - name = "lldb-server"; - productName = "lldb-server"; - productReference = 26DC6A101337FE6900FF7998 /* lldb-server */; - productType = "com.apple.product-type.tool"; - }; - 26F5C26910F3D9A4009D5894 /* lldb-tool */ = { - isa = PBXNativeTarget; - buildConfigurationList = 26F5C26E10F3D9C5009D5894 /* Build configuration list for PBXNativeTarget "lldb-tool" */; - buildPhases = ( - DD5F951721ADD0C900B8265A /* Run Tablegen */, - 26F5C26710F3D9A4009D5894 /* Sources */, - 26F5C26810F3D9A4009D5894 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 266803621160110D008E1FE4 /* PBXTargetDependency */, - ); - name = "lldb-tool"; - productName = lldb; - productReference = 26F5C26A10F3D9A4009D5894 /* lldb */; - productType = "com.apple.product-type.tool"; - }; - 942829BF1A89835300521B30 /* lldb-argdumper */ = { - isa = PBXNativeTarget; - buildConfigurationList = 942829C41A89835400521B30 /* Build configuration list for PBXNativeTarget "lldb-argdumper" */; - buildPhases = ( - 942829BC1A89835300521B30 /* Sources */, - 942829BD1A89835300521B30 /* Frameworks */, - 942829BE1A89835300521B30 /* CopyFiles */, - 940B04E21A89871F0045D5F7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 942829CA1A89836A00521B30 /* PBXTargetDependency */, - ); - name = "lldb-argdumper"; - productName = argdumper; - productReference = 942829C01A89835300521B30 /* lldb-argdumper */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0720; - TargetAttributes = { - 2387551E1C24974600CCE8C3 = { - CreatedOnToolsVersion = 7.2; - }; - 239504D31BDD451400963CEA = { - CreatedOnToolsVersion = 7.1; - }; - 2679260B211CA3AC00EE1D10 = { - CreatedOnToolsVersion = 9.4.1; - }; - 2690CD161A6DC0D000E717C8 = { - CreatedOnToolsVersion = 6.3; - }; - 942829BF1A89835300521B30 = { - CreatedOnToolsVersion = 7.0; - }; - DD8DC26B22026E2C00EB6F9E = { - CreatedOnToolsVersion = 11.0; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "lldb" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - en, - ); - mainGroup = 08FB7794FE84155DC02AAC07 /* lldb */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 265E9BE2115C2BAA00D0DCCB /* Products */; - ProjectRef = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 26CEF3B114FD592B007286B2 /* desktop */, - 26CEF3A914FD58BF007286B2 /* desktop_no_xpc */, - 26CEF3BC14FD596A007286B2 /* ios */, - AFA9B71120606A13008E86C6 /* ios-mini */, - 26F5C26910F3D9A4009D5894 /* lldb-tool */, - 26680206115FD0ED008E1FE4 /* LLDB */, - 239504D31BDD451400963CEA /* lldb-gtest */, - 23CB152F1D66DA9300EDDDE1 /* lldb-gtest-build */, - 2387551E1C24974600CCE8C3 /* lldb-python-test-suite */, - 26579F67126A25920007C5CB /* darwin-debug */, - 2689FFC913353D7A00698AC0 /* lldb-core */, - 26DC6A0F1337FE6900FF7998 /* lldb-server */, - 2687EAC51508110B00DD8C2E /* install-headers */, - 2690CD161A6DC0D000E717C8 /* lldb-mi */, - 942829BF1A89835300521B30 /* lldb-argdumper */, - 2679260B211CA3AC00EE1D10 /* lldb-vscode */, - DD8DC26B22026E2C00EB6F9E /* lldb-docs */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 239504C51BDD3FD700963CEA /* debugserver-nonui */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = "debugserver-nonui"; - remoteRef = 239504C41BDD3FD700963CEA /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 26CE05A0115C31E50022F371 /* debugserver */ = { - isa = PBXReferenceProxy; - fileType = "compiled.mach-o.executable"; - path = debugserver; - remoteRef = 26CE059F115C31E50022F371 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 26680203115FD0ED008E1FE4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 94E829CA152D33C1006F96A3 /* lldb-server in Resources */, - 262CFC7711A4510000946C6C /* debugserver in Resources */, - 26368AF7126B960500E8659F /* darwin-debug in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 23B9815E1CB2E2F90059938A /* Run gtests */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run gtests"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = "/bin/sh -x"; - shellScript = "# Run the just-built gtest executable\n\n# Uncomment this to see the steps in action\n# set -x\n\n# We need to hide the lldb.py that goes into BUILT_PRODUCTS\n# because it will conflict with finding the lldb module later,\n# which causes the python exception tests to fail.\nif [ -f \"${BUILT_PRODUCTS_DIR}/lldb.py\" ]; then\n mv -f \"${BUILT_PRODUCTS_DIR}/lldb.py\" \"${BUILT_PRODUCTS_DIR}/park.lldb.py\"\nfi\n\n# Tell lldb-gtest where to find the lldb package\nexport PYTHONPATH=${BUILT_PRODUCTS_DIR}/LLDB.framework/Resources/Python\n\n# Set the terminal to VT100 so that the editline internals don't\n# fail.\nexport TERM=vt100\n\n# We must redirect stdin to /dev/null: without this, xcodebuild\n# will wait forever for input when we run the TestExceptionStateChecking\n# test.\n${BUILT_PRODUCTS_DIR}/lldb-gtest --gtest_output=xml:${BUILD_DIR}/gtest-results.xml < /dev/null\nRETCODE=$?\n\nif [ -f \"${BUILT_PRODUCTS_DIR}/park.lldb.py\" ]; then\nmv -f \"${BUILT_PRODUCTS_DIR}/park.lldb.py\" \"${BUILT_PRODUCTS_DIR}/lldb.py\"\nfi\n\nexit ${RETCODE}\n"; - }; - 23E2E5461D904B8A006F38BB /* Copy Inputs content to run dir */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Inputs content to run dir"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = "/bin/bash +x scripts/Xcode/prepare-gtest-run-dir.sh"; - shellScript = ""; - }; - 261B5A7511C3FA6F00AABD0A /* Fixup Framework Headers */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Fixup Framework Headers"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cd \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}\"\nfor file in *.h\ndo\n /usr/bin/sed -i '' 's/\\(#include\\)[ ]*\"lldb\\/\\(API\\/\\)\\{0,1\\}\\(.*\\)\"/\\1 /1' \"$file\"\n /usr/bin/sed -i '' 's| - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme deleted file mode 100644 index 881829e27febe63..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/Run Testsuite.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/Run Testsuite.xcscheme deleted file mode 100644 index fb4bc136c9e9f2f..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/Run Testsuite.xcscheme +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme deleted file mode 100644 index 74864b2078d8356..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme deleted file mode 100644 index d31912ef4837b57..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/desktop.xcscheme +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme deleted file mode 100644 index 5e1b68cd93b09d8..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme deleted file mode 100644 index 39629e1e145952b..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-gtest.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-gtest.xcscheme deleted file mode 100644 index 4cbbbb38943d660..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-gtest.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-python-test-suite.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-python-test-suite.xcscheme deleted file mode 100644 index dcf0c0f2c7aeb7a..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-python-test-suite.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme deleted file mode 100644 index f13dc970308855e..000000000000000 --- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lldb/lldb.xcworkspace/contents.xcworkspacedata b/lldb/lldb.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3266d5b39e25f85..000000000000000 --- a/lldb/lldb.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/lldb/packages/Python/lldbsuite/test/Makefile b/lldb/packages/Python/lldbsuite/test/Makefile index 4d08ef39d4db9b9..c662fd1af007cc8 100644 --- a/lldb/packages/Python/lldbsuite/test/Makefile +++ b/lldb/packages/Python/lldbsuite/test/Makefile @@ -1,4 +1,3 @@ -LLDB_LEVEL := .. include $(LLDB_LEVEL)/Makefile .PHONY: programs diff --git a/lldb/packages/Python/lldbsuite/test/android/platform/Makefile b/lldb/packages/Python/lldbsuite/test/android/platform/Makefile index 22e42c5a776e125..3d0b98f13f3d7be 100644 --- a/lldb/packages/Python/lldbsuite/test/android/platform/Makefile +++ b/lldb/packages/Python/lldbsuite/test/android/platform/Makefile @@ -1,4 +1,2 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/android/platform/TestDefaultCacheLineSize.py b/lldb/packages/Python/lldbsuite/test/android/platform/TestDefaultCacheLineSize.py index 5eff454c3bfb27e..76df24c68056a08 100644 --- a/lldb/packages/Python/lldbsuite/test/android/platform/TestDefaultCacheLineSize.py +++ b/lldb/packages/Python/lldbsuite/test/android/platform/TestDefaultCacheLineSize.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -16,7 +15,7 @@ class DefaultCacheLineSizeTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) - @skipUnlessPlatform(['android']) + @skipUnlessTargetAndroid def test_cache_line_size(self): self.build(dictionary=self.getBuildFlags()) exe = self.getBuildArtifact("a.out") diff --git a/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/Makefile b/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/Makefile +++ b/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py b/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py index 20fd3030721a1b4..6f95cd7959ea4ec 100644 --- a/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py +++ b/lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import re from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/api/listeners/Makefile b/lldb/packages/Python/lldbsuite/test/api/listeners/Makefile index fbedeab4cb9b16c..692ba1732285987 100644 --- a/lldb/packages/Python/lldbsuite/test/api/listeners/Makefile +++ b/lldb/packages/Python/lldbsuite/test/api/listeners/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/api/listeners/TestListener.py b/lldb/packages/Python/lldbsuite/test/api/listeners/TestListener.py index 6b6a37e5a6b8d85..d0359849683ea36 100644 --- a/lldb/packages/Python/lldbsuite/test/api/listeners/TestListener.py +++ b/lldb/packages/Python/lldbsuite/test/api/listeners/TestListener.py @@ -4,9 +4,6 @@ from __future__ import print_function -import copy -import os -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/Makefile b/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/Makefile index 08f8850e3e8f322..f40386a5227e718 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/Makefile +++ b/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - MAKE_DSYM := NO ENABLE_THREADS := YES CXX_SOURCES := multi-process-driver.cpp testprog.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/TestMultipleDebuggers.py b/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/TestMultipleDebuggers.py index f6bde75dcb79fd4..1447bbdfe42ff3f 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/TestMultipleDebuggers.py +++ b/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/TestMultipleDebuggers.py @@ -4,9 +4,6 @@ import os -import re -import subprocess -import sys import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/api/multiple-targets/Makefile b/lldb/packages/Python/lldbsuite/test/api/multiple-targets/Makefile index bee559c8ecdd198..3316b59b623e5b2 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multiple-targets/Makefile +++ b/lldb/packages/Python/lldbsuite/test/api/multiple-targets/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - MAKE_DSYM := NO ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/api/multiple-targets/TestMultipleTargets.py b/lldb/packages/Python/lldbsuite/test/api/multiple-targets/TestMultipleTargets.py index f4e166955acc981..1268ff9306a38f1 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multiple-targets/TestMultipleTargets.py +++ b/lldb/packages/Python/lldbsuite/test/api/multiple-targets/TestMultipleTargets.py @@ -4,8 +4,6 @@ import os -import re -import subprocess import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/api/multithreaded/Makefile b/lldb/packages/Python/lldbsuite/test/api/multithreaded/Makefile index 37323ea78190bf2..817672190672450 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multithreaded/Makefile +++ b/lldb/packages/Python/lldbsuite/test/api/multithreaded/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules clean:: rm -rf $(wildcard *.o *.d *.dSYM) diff --git a/lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py b/lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py index d91eec1fd51bbf1..436f645e65210bf 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py +++ b/lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py @@ -6,11 +6,9 @@ import os -import re from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil -import subprocess class SBBreakpointCallbackCase(TestBase): @@ -47,7 +45,6 @@ def test_sb_api_listener_event_description(self): self.build_and_test( 'driver.cpp listener_test.cpp test_listener_event_description.cpp', 'test_listener_event_description') - pass @skipIfRemote @skipIfNoSBHeaders @@ -61,7 +58,6 @@ def test_sb_api_listener_event_process_state(self): self.build_and_test( 'driver.cpp listener_test.cpp test_listener_event_process_state.cpp', 'test_listener_event_process_state') - pass @skipIfRemote @skipIfNoSBHeaders @@ -74,7 +70,6 @@ def test_sb_api_listener_resume(self): self.build_and_test( 'driver.cpp listener_test.cpp test_listener_resume.cpp', 'test_listener_resume') - pass def build_and_test(self, sources, test_name, args=None): """ Build LLDB test from sources, and run expecting 0 exit code """ diff --git a/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template b/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template index ebe7b8c8e17b2de..32459425c88c3bb 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template +++ b/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template @@ -32,6 +32,8 @@ int main(int argc, char** argv) { SBDebugger::Initialize(); SBDebugger dbg = SBDebugger::Create(); dbg.HandleCommand("settings set symbols.enable-external-lookup false"); + dbg.HandleCommand( + "settings set plugin.process.gdb-remote.packet-timeout 60"); try { if (!dbg.IsValid()) diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile index 5d2224cb6560d32..dac447e5c70b30a 100644 --- a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile +++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - C_SOURCES := main.c CFLAGS_EXTRAS = -mthumb -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py index e9dbe670dc0bb3d..d13f9812ca8387c 100644 --- a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py +++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-it/TestBreakpointIt.py @@ -6,8 +6,6 @@ import lldb -import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/Makefile b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/Makefile index ea79c55cd4a9b13..0d6bbe2df01089a 100644 --- a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/Makefile +++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - C_SOURCES := main.c CFLAGS_EXTRAS = -mthumb -include $(LEVEL)/Makefile.rules \ No newline at end of file +include Makefile.rules \ No newline at end of file diff --git a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/TestBreakpointThumbCodesection.py b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/TestBreakpointThumbCodesection.py index 6540261262adae2..9403376192f0391 100644 --- a/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/TestBreakpointThumbCodesection.py +++ b/lldb/packages/Python/lldbsuite/test/arm/breakpoint-thumb-codesection/TestBreakpointThumbCodesection.py @@ -6,8 +6,6 @@ import lldb -import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/arm/emulation/TestEmulations.py b/lldb/packages/Python/lldbsuite/test/arm/emulation/TestEmulations.py index 8e9244f3a3e989f..9613edcf3fd9a0b 100644 --- a/lldb/packages/Python/lldbsuite/test/arm/emulation/TestEmulations.py +++ b/lldb/packages/Python/lldbsuite/test/arm/emulation/TestEmulations.py @@ -6,7 +6,6 @@ import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/attic/dotest.pl b/lldb/packages/Python/lldbsuite/test/attic/dotest.pl deleted file mode 100644 index f093ed8f8f22ec9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/attic/dotest.pl +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/perl -w - -# -# Use this script to visit each python test case under the specified directory -# and invoke unittest.main() on each test case. -# - -use strict; -use FindBin; -use File::Find; -use File::Basename; -use Cwd; -use Cwd 'abs_path'; - -scalar(@ARGV) == 1 or die "Usage: dotest.pl testdir"; - -my $scriptDir = $FindBin::Bin; -my $baseDir = abs_path("$scriptDir/.."); -my $pluginDir = "$baseDir/test/plugins"; -my $testDir = $ARGV[0]; - -my $dbgPath = "$baseDir/build/Debug/LLDB.framework/Resources/Python"; -my $relPath = "$baseDir/build/Release/LLDB.framework/Resources/Python"; -if (-d $dbgPath) { - $ENV{'PYTHONPATH'} = "$dbgPath:$scriptDir:$pluginDir"; -} elsif (-d $relPath) { - $ENV{'PYTHONPATH'} = "$relPath:$scriptDir:$pluginDir"; -} -#print("ENV{PYTHONPATH}=$ENV{'PYTHONPATH'}\n"); - -# Traverse the directory to find our python test cases. -find(\&handleFind, $testDir); - -sub handleFind { - my $foundFile = $File::Find::name; - my $dir = getcwd; - #print("foundFile: $foundFile\n"); - - # Test*.py is the naming pattern for our test cases. - if ($foundFile =~ /.*\/(Test.*\.py)$/) { - print("Running python $1 (cwd = $dir)...\n"); - system("python $1"); - } -} diff --git a/lldb/packages/Python/lldbsuite/test/attic/tester.py b/lldb/packages/Python/lldbsuite/test/attic/tester.py deleted file mode 100644 index 2e783512369d48f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/attic/tester.py +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf8 -*- - -from __future__ import print_function - -import math -import os.path -import re -import sys -import time -import unittest - - -def setupSysPath(): - testPath = sys.path[0] - rem = re.match("(^.*/)test$", testPath) - if not rem: - print("This script expects to reside in .../test.") - sys.exit(-1) - lldbBasePath = rem.group(1) - lldbDebugPythonPath = "build/Debug/LLDB.framework/Resources/Python" - lldbReleasePythonPath = "build/Release/LLDB.framework/Resources/Python" - lldbPythonPath = None - if os.path.isfile(lldbDebugPythonPath + "/lldb.py"): - lldbPythonPath = lldbDebugPythonPath - if os.path.isfile(lldbReleasePythonPath + "/lldb.py"): - lldbPythonPath = lldbReleasePythonPath - if not lldbPythonPath: - print( - "This script requires lldb.py to be in either " + - lldbDebugPythonPath, - end='') - print("or" + lldbReleasePythonPath) - sys.exit(-1) - sys.path.append(lldbPythonPath) - - -def prettyTime(t): - if t == 0.0: - return "0s" - if t < 0.000001: - return ("%.3f" % (t * 1000000000.0)) + "ns" - if t < 0.001: - return ("%.3f" % (t * 1000000.0)) + "µs" - if t < 1: - return ("%.3f" % (t * 1000.0)) + "ms" - return str(t) + "s" - - -class ExecutionTimes: - - @classmethod - def executionTimes(cls): - if cls.m_executionTimes is None: - cls.m_executionTimes = ExecutionTimes() - for i in range(100): - cls.m_executionTimes.start() - cls.m_executionTimes.end("null") - return cls.m_executionTimes - - def __init__(self): - self.m_times = dict() - - def start(self): - self.m_start = time.time() - - def end(self, component): - e = time.time() - if component not in self.m_times: - self.m_times[component] = list() - self.m_times[component].append(e - self.m_start) - - def dumpStats(self): - for key in list(self.m_times.keys()): - if len(self.m_times[key]): - sampleMin = float('inf') - sampleMax = float('-inf') - sampleSum = 0.0 - sampleCount = 0.0 - for time in self.m_times[key]: - if time > sampleMax: - sampleMax = time - if time < sampleMin: - sampleMin = time - sampleSum += time - sampleCount += 1.0 - sampleMean = sampleSum / sampleCount - sampleVariance = 0 - for time in self.m_times[key]: - sampleVariance += (time - sampleMean) ** 2 - sampleVariance /= sampleCount - sampleStandardDeviation = math.sqrt(sampleVariance) - print( - key + - ": [" + - prettyTime(sampleMin) + - ", " + - prettyTime(sampleMax) + - "] ", - end='') - print( - "µ " + - prettyTime(sampleMean) + - ", σ " + - prettyTime(sampleStandardDeviation)) - m_executionTimes = None - -setupSysPath() - -import lldb - - -class LLDBTestCase(unittest.TestCase): - - def setUp(self): - debugger = lldb.SBDebugger.Create() - debugger.SetAsync(True) - self.m_commandInterpreter = debugger.GetCommandInterpreter() - if not self.m_commandInterpreter: - print("Couldn't get the command interpreter") - sys.exit(-1) - - def runCommand(self, command, component): - res = lldb.SBCommandReturnObject() - ExecutionTimes.executionTimes().start() - self.m_commandInterpreter.HandleCommand(command, res, False) - ExecutionTimes.executionTimes().end(component) - if res.Succeeded(): - return res.GetOutput() - else: - self.fail("Command " + command + " returned an error") - return None - - def getCategories(self): - return [] - - -class SanityCheckTestCase(LLDBTestCase): - - def runTest(self): - ret = self.runCommand("show arch", "show-arch") - # print(ret) - - def getCategories(self): - return [] - -suite = unittest.TestLoader().loadTestsFromTestCase(SanityCheckTestCase) -unittest.TextTestRunner(verbosity=2).run(suite) -ExecutionTimes.executionTimes().dumpStats() diff --git a/lldb/packages/Python/lldbsuite/test/bench.py b/lldb/packages/Python/lldbsuite/test/bench.py index 41d44bad987ef54..a9661b6d022529f 100644 --- a/lldb/packages/Python/lldbsuite/test/bench.py +++ b/lldb/packages/Python/lldbsuite/test/bench.py @@ -16,8 +16,6 @@ from __future__ import absolute_import import os -import sys -import re from optparse import OptionParser # dotest.py invocation with no '-e exe-path' uses lldb as the inferior program, diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/continue/Makefile b/lldb/packages/Python/lldbsuite/test/benchmarks/continue/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/continue/Makefile +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/continue/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/continue/TestBenchmarkContinue.py b/lldb/packages/Python/lldbsuite/test/benchmarks/continue/TestBenchmarkContinue.py index acc09224050d056..7863481ebe9c68a 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/continue/TestBenchmarkContinue.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/continue/TestBenchmarkContinue.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbbench import * diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/expression/Makefile b/lldb/packages/Python/lldbsuite/test/benchmarks/expression/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/expression/Makefile +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/expression/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestExpressionCmd.py b/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestExpressionCmd.py index 064e7b3f520913a..9e5b0ecc5b36bf2 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestExpressionCmd.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestExpressionCmd.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import sys import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestRepeatedExprs.py b/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestRepeatedExprs.py index dcbd36cc138788c..438a1fdd30a898e 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestRepeatedExprs.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/expression/TestRepeatedExprs.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import sys import lldb from lldbsuite.test.lldbbench import BenchBase diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/frame_variable/TestFrameVariableResponse.py b/lldb/packages/Python/lldbsuite/test/benchmarks/frame_variable/TestFrameVariableResponse.py index 3ed23e615409be5..5261204beeabbf0 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/frame_variable/TestFrameVariableResponse.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/frame_variable/TestFrameVariableResponse.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import sys import lldb from lldbsuite.test import configuration diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/Makefile b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/Makefile +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/TestBenchmarkLibcxxList.py b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/TestBenchmarkLibcxxList.py index 4ebb111c80261ed..5ad59f34dbf9a1b 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/TestBenchmarkLibcxxList.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxlist/TestBenchmarkLibcxxList.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbbench import * diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py index 0c50661c5c7093c..ba5ba084c8b627a 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/libcxxmap/TestBenchmarkLibcxxMap.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbbench import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/startup/TestStartupDelays.py b/lldb/packages/Python/lldbsuite/test/benchmarks/startup/TestStartupDelays.py index baacdc81e2371bf..104b5d74c74aa98 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/startup/TestStartupDelays.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/startup/TestStartupDelays.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import sys import lldb from lldbsuite.test import configuration diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/stepping/TestSteppingSpeed.py b/lldb/packages/Python/lldbsuite/test/benchmarks/stepping/TestSteppingSpeed.py index 2a2a8ef000a7549..e5a8f168b646880 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/stepping/TestSteppingSpeed.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/stepping/TestSteppingSpeed.py @@ -2,7 +2,6 @@ from __future__ import print_function -import os import sys import lldb from lldbsuite.test import configuration diff --git a/lldb/packages/Python/lldbsuite/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py b/lldb/packages/Python/lldbsuite/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py index ab2b2004fc5da1d..5bf78035be4a3a5 100644 --- a/lldb/packages/Python/lldbsuite/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py +++ b/lldb/packages/Python/lldbsuite/test/benchmarks/turnaround/TestCompileRunToBreakpointTurnaround.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import sys import lldb from lldbsuite.test.lldbbench import * diff --git a/lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/Makefile b/lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py b/lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/TestAddDsymCommand.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/warnings/uuid/TestAddDsymCommand.py rename to lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/TestAddDsymCommand.py diff --git a/lldb/packages/Python/lldbsuite/test/warnings/uuid/main.cpp.template b/lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/main.cpp.template similarity index 100% rename from lldb/packages/Python/lldbsuite/test/warnings/uuid/main.cpp.template rename to lldb/packages/Python/lldbsuite/test/commands/add-dsym/uuid/main.cpp.template diff --git a/lldb/packages/Python/lldbsuite/test/commands/apropos/basic/TestApropos.py b/lldb/packages/Python/lldbsuite/test/commands/apropos/basic/TestApropos.py new file mode 100644 index 000000000000000..c4337c7301f66ff --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/apropos/basic/TestApropos.py @@ -0,0 +1,29 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class AproposTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + + @no_debug_info_test + def test_apropos(self): + self.expect("apropos", error=True, + substrs=[' must be called with exactly one argument']) + self.expect("apropos a b", error=True, + substrs=[' must be called with exactly one argument']) + self.expect("apropos ''", error=True, + substrs=['\'\' is not a valid search word']) + + @no_debug_info_test + def test_apropos_variable(self): + """Test that 'apropos variable' prints the fully qualified command name""" + self.expect( + 'apropos variable', + substrs=[ + 'frame variable', + 'target variable', + 'watchpoint set variable']) diff --git a/lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/Makefile b/lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/TestAproposWithProcess.py b/lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/TestAproposWithProcess.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/TestAproposWithProcess.py rename to lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/TestAproposWithProcess.py index aa80c9976eb86f5..1e146d9f62e034c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/TestAproposWithProcess.py +++ b/lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/TestAproposWithProcess.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/apropos/with-process/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/Makefile new file mode 100644 index 000000000000000..8d669cbfd2b7e89 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c a.c b.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestBreakpointCommand.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestBreakpointCommand.py index 8143fa96433f44b..8b3c177b67bb127 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py +++ b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestBreakpointCommand.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -85,16 +83,16 @@ def breakpoint_command_sequence(self): self, "./main.c", self.line, num_expected_locations=1, loc_exact=True) lldbutil.run_break_set_by_file_and_line( - self, "breakpoint_command/main.c", self.line, + self, "basic/main.c", self.line, num_expected_locations=1, loc_exact=True) lldbutil.run_break_set_by_file_and_line( - self, "./breakpoint_command/main.c", self.line, + self, "./basic/main.c", self.line, num_expected_locations=1, loc_exact=True) lldbutil.run_break_set_by_file_and_line( - self, "breakpoint/breakpoint_command/main.c", self.line, + self, "breakpoint/basic/main.c", self.line, num_expected_locations=1, loc_exact=True) lldbutil.run_break_set_by_file_and_line( - self, "./breakpoint/breakpoint_command/main.c", self.line, + self, "./breakpoint/basic/main.c", self.line, num_expected_locations=1, loc_exact=True) # Test relative breakpoints with incorrect paths and make sure we get # no breakpoint locations diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommandsFromPython.py b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestBreakpointCommandsFromPython.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommandsFromPython.py rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestBreakpointCommandsFromPython.py index 7c7aad0bc81e482..962728a324eeb7d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommandsFromPython.py +++ b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestBreakpointCommandsFromPython.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import sys import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestRegexpBreakCommand.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestRegexpBreakCommand.py index d064b75b91cfefe..8774d3763a6aedd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/TestRegexpBreakCommand.py +++ b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/TestRegexpBreakCommand.py @@ -6,7 +6,6 @@ import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/a.c b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/a.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/a.c rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/a.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/b.c b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/b.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/b.c rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/b.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/bktptcmd.py b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/bktptcmd.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/bktptcmd.py rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/bktptcmd.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/main.c b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/main.c rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/main.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/side_effect.py b/lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/side_effect.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/side_effect.py rename to lldb/packages/Python/lldbsuite/test/commands/breakpoint/basic/side_effect.py diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/delete/TestCommandDelete.py b/lldb/packages/Python/lldbsuite/test/commands/command/delete/TestCommandDelete.py new file mode 100644 index 000000000000000..3fa654d20aa902e --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/command/delete/TestCommandDelete.py @@ -0,0 +1,17 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class DeleteCommandTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + def test_delete_builtin(self): + self.expect("command delete settings", error=True, + substrs=["'settings' is a permanent debugger command and cannot be removed."]) + + @no_debug_info_test + def test_delete_alias(self): + self.expect("command delete bt", error=True, + substrs=["'bt' is not a known command."]) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/completion/.categories b/lldb/packages/Python/lldbsuite/test/commands/command/history/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/completion/.categories rename to lldb/packages/Python/lldbsuite/test/commands/command/history/.categories diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_history/TestCommandHistory.py b/lldb/packages/Python/lldbsuite/test/commands/command/history/TestCommandHistory.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_history/TestCommandHistory.py rename to lldb/packages/Python/lldbsuite/test/commands/command/history/TestCommandHistory.py index 17b7b6d395dbed7..2763ab50c8826d4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_history/TestCommandHistory.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/history/TestCommandHistory.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py b/lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py new file mode 100644 index 000000000000000..47d77b0e5696260 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/command/invalid-args/TestInvalidArgsCommand.py @@ -0,0 +1,58 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class InvalidArgsCommandTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + def test_script_add(self): + self.expect("command script add 1 2", error=True, + substrs=["'command script add' requires one argument"]) + + self.expect("command script add", error=True, + substrs=["'command script add' requires one argument"]) + + @no_debug_info_test + def test_script_clear(self): + self.expect("command script clear f", error=True, + substrs=["'command script clear' doesn't take any arguments"]) + + @no_debug_info_test + def test_script_list(self): + self.expect("command script list f", error=True, + substrs=["'command script list' doesn't take any arguments"]) + + @no_debug_info_test + def test_script_import(self): + self.expect("command script import", error=True, + substrs=["command script import needs one or more arguments"]) + + @no_debug_info_test + def test_alias(self): + self.expect("command alias", error=True, + substrs=["'command alias' requires at least two arguments"]) + + self.expect("command alias blub foo", error=True, + substrs=["error: invalid command given to 'command alias'. 'foo' does not begin with a valid command. No alias created."]) + + @no_debug_info_test + def test_unalias(self): + self.expect("command unalias", error=True, + substrs=["must call 'unalias' with a valid alias"]) + + @no_debug_info_test + def test_delete(self): + self.expect("command delete", error=True, + substrs=["must call 'command delete' with one or more valid user"]) + + @no_debug_info_test + def test_regex(self): + self.expect("command regex", error=True, + substrs=["usage: 'command regex "]) + + @no_debug_info_test + def test_source(self): + self.expect("command source", error=True, + substrs=["'command source' takes exactly one executable filename argument."]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/Makefile b/lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py b/lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/TestNestedAlias.py similarity index 90% rename from lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py rename to lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/TestNestedAlias.py index f805b53d3cd4b13..1a7b01ab2605cac 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/TestNestedAlias.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil @@ -91,3 +88,12 @@ def cleanup(): 'Show variables for the current', 'stack frame.'], matching=True) + + # Check that foself was resolved and is now independent of 'fo'. + self.runCmd('command unalias fo') + self.expect( + 'help foself', + substrs=[ + 'Show variables for the current', + 'stack frame.'], + matching=True) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/command/nested_alias/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_history/.categories b/lldb/packages/Python/lldbsuite/test/commands/command/script/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_history/.categories rename to lldb/packages/Python/lldbsuite/test/commands/command/script/.categories diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/script/Makefile b/lldb/packages/Python/lldbsuite/test/commands/command/script/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/TestCommandScript.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/TestCommandScript.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/TestCommandScript.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/TestCommandScript.py index aa0e0a7a6813a59..6531cd672792eb7 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/TestCommandScript.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/TestCommandScript.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/bug11569.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/bug11569.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/bug11569.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/bug11569.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/decorated.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/decorated.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/decorated.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/decorated.py diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/script/import/Makefile b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/Makefile new file mode 100644 index 000000000000000..d9ee1cc4116b489 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/Makefile @@ -0,0 +1,4 @@ +C_SOURCES := main.c +EXE := hello_world + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/TestImport.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/TestImport.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/TestImport.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/TestImport.py index 01e7902b0f3257c..bbeee1a5e32ee58 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/TestImport.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/TestImport.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import sys -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/bar/bar.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/bar/bar.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/bar/bar.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/bar/bar.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/bar/barutil.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/bar/barutil.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/bar/barutil.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/bar/barutil.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/dummymodule.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/dummymodule.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/dummymodule.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/dummymodule.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/foo/bar/foobar.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/foo/bar/foobar.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/foo/bar/foobar.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/foo/bar/foobar.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/foo/foo.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/foo/foo.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/foo/foo.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/foo/foo.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/foo/foo2.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/foo/foo2.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/foo/foo2.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/foo/foo2.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/main.c b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/main.c rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/Makefile b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/Makefile new file mode 100644 index 000000000000000..22f1051530f8712 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/Makefile @@ -0,0 +1 @@ +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/TestRdar12586188.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/TestRdar12586188.py index 01fd513858361b7..fdcf8764e676ca1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/TestRdar12586188.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/TestRdar12586188.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import sys -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/fail12586188.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/fail12586188.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/fail12586188.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/fail12586188.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/fail212586188.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/fail212586188.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/fail212586188.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/rdar-12586188/fail212586188.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/thepackage/TPunitA.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/thepackage/TPunitA.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/thepackage/TPunitA.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/thepackage/TPunitA.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/thepackage/TPunitB.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/thepackage/TPunitB.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/thepackage/TPunitB.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/thepackage/TPunitB.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/thepackage/__init__.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/import/thepackage/__init__.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/thepackage/__init__.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/import/thepackage/__init__.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/command/script/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/command/script/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/mysto.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/mysto.py similarity index 95% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/mysto.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/mysto.py index 88a20cb4567f532..04eceb7eb9398a1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/mysto.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script/mysto.py @@ -1,9 +1,6 @@ from __future__ import print_function import lldb -import sys -import os -import time def StepOver(debugger, args, result, dict): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/py_import b/lldb/packages/Python/lldbsuite/test/commands/command/script/py_import similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/py_import rename to lldb/packages/Python/lldbsuite/test/commands/command/script/py_import diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/welcome.py b/lldb/packages/Python/lldbsuite/test/commands/command/script/welcome.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/welcome.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script/welcome.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/.categories b/lldb/packages/Python/lldbsuite/test/commands/command/script_alias/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script/.categories rename to lldb/packages/Python/lldbsuite/test/commands/command/script_alias/.categories diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py b/lldb/packages/Python/lldbsuite/test/commands/command/script_alias/TestCommandScriptAlias.py similarity index 91% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script_alias/TestCommandScriptAlias.py index eb63c7079893793..515cbf10a6cf7fd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/TestCommandScriptAlias.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script_alias/TestCommandScriptAlias.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * @@ -15,10 +13,7 @@ class CommandScriptAliasTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) - def test(self): - self.pycmd_tests() - - def pycmd_tests(self): + def test_pycmd(self): self.runCmd("command script import tcsacmd.py") self.runCmd("command script add -f tcsacmd.some_command_here attach") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py b/lldb/packages/Python/lldbsuite/test/commands/command/script_alias/tcsacmd.py similarity index 96% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py rename to lldb/packages/Python/lldbsuite/test/commands/command/script_alias/tcsacmd.py index d5bb6131210c57a..8d3248c27234bc0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/tcsacmd.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/script_alias/tcsacmd.py @@ -1,6 +1,5 @@ from __future__ import print_function import lldb -import sys def some_command_here(debugger, command, result, d): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories b/lldb/packages/Python/lldbsuite/test/commands/command/source/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_script_alias/.categories rename to lldb/packages/Python/lldbsuite/test/commands/command/source/.categories diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_source/.lldb b/lldb/packages/Python/lldbsuite/test/commands/command/source/.lldb similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_source/.lldb rename to lldb/packages/Python/lldbsuite/test/commands/command/source/.lldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_source/TestCommandSource.py b/lldb/packages/Python/lldbsuite/test/commands/command/source/TestCommandSource.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_source/TestCommandSource.py rename to lldb/packages/Python/lldbsuite/test/commands/command/source/TestCommandSource.py index 383f2d7cef09a3e..a30f0d497be3b7d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_source/TestCommandSource.py +++ b/lldb/packages/Python/lldbsuite/test/commands/command/source/TestCommandSource.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import sys import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_source/commands.txt b/lldb/packages/Python/lldbsuite/test/commands/command/source/commands.txt similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_source/commands.txt rename to lldb/packages/Python/lldbsuite/test/commands/command/source/commands.txt diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_source/my.py b/lldb/packages/Python/lldbsuite/test/commands/command/source/my.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_source/my.py rename to lldb/packages/Python/lldbsuite/test/commands/command/source/my.py diff --git a/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/TestDisassembleBreakpoint.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py rename to lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/TestDisassembleBreakpoint.py index 91b858b4665ab70..1ad8e23ac9ba5dd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py +++ b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/TestDisassembleBreakpoint.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestFrameDisassemble.py b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/TestFrameDisassemble.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestFrameDisassemble.py rename to lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/TestFrameDisassemble.py index c5fec5b02d6ba65..912b37d6d3ef2a9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestFrameDisassemble.py +++ b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/TestFrameDisassemble.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/disassembly/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/disassemble/basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/.categories b/lldb/packages/Python/lldbsuite/test/commands/expression/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/.categories rename to lldb/packages/Python/lldbsuite/test/commands/expression/.categories diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/TestCallUserAnonTypedef.py b/lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/TestCallUserAnonTypedef.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/anonymous-struct/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/TestArgumentPassingRestrictions.py b/lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/TestArgumentPassingRestrictions.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/argument_passing_restrictions/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/calculator_mode/TestCalculatorMode.py b/lldb/packages/Python/lldbsuite/test/commands/expression/calculator_mode/TestCalculatorMode.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/calculator_mode/TestCalculatorMode.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/calculator_mode/TestCalculatorMode.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/Makefile similarity index 57% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-function/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-function/Makefile index 9d4f3b7f14124bd..31f2d5e8fc296b3 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules clean:: rm -rf $(wildcard *.o *.d *.dSYM) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallBuiltinFunction.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallBuiltinFunction.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallBuiltinFunction.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallBuiltinFunction.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallStdStringFunction.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallStdStringFunction.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallStdStringFunction.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallStdStringFunction.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallStopAndContinue.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallStopAndContinue.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallStopAndContinue.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallStopAndContinue.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallUserDefinedFunction.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallUserDefinedFunction.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-function/TestCallUserDefinedFunction.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-function/TestCallUserDefinedFunction.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-function/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/call-function/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-function/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-function/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/Makefile similarity index 57% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/Makefile index 9d4f3b7f14124bd..31f2d5e8fc296b3 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules clean:: rm -rf $(wildcard *.o *.d *.dSYM) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/TestCallOverriddenMethod.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/TestCallOverriddenMethod.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-overridden-method/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/Makefile new file mode 100644 index 000000000000000..fa5901ebca1ec7d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := lotta-signals.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/TestCallThatRestarts.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/TestCallThatRestarts.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/TestCallThatRestarts.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/TestCallThatRestarts.py index 235ce74fe81eac0..1182b156e80c3f5 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/TestCallThatRestarts.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/TestCallThatRestarts.py @@ -26,7 +26,6 @@ def setUp(self): @skipIfFreeBSD # llvm.org/pr19246: intermittent failure @skipIfDarwin # llvm.org/pr19246: intermittent failure @skipIfWindows # Test relies on signals, unsupported on Windows - @expectedFailureNetBSD @expectedFlakeyAndroid(bugnumber="llvm.org/pr19246") def test(self): """Test calling function that hits a signal and restarts.""" diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/lotta-signals.c b/lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/lotta-signals.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/lotta-signals.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-restarts/lotta-signals.c diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-throws/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/Makefile similarity index 55% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-throws/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/Makefile index ac07b31c48cc983..33746217ecbae5c 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/call-throws/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - OBJC_SOURCES := call-throws.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-throws/TestCallThatThrows.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/TestCallThatThrows.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-throws/TestCallThatThrows.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/TestCallThatThrows.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-throws/call-throws.m b/lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/call-throws.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/call-throws/call-throws.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/call-throws/call-throws.m diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py b/lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/TestCastIntToAnonymousEnum.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/cast_int_to_anonymous_enum/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/char/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/char/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/char/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py b/lldb/packages/Python/lldbsuite/test/commands/expression/char/TestExprsChar.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/char/TestExprsChar.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/char/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/char/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/char/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/char/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py b/lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/class_template_specialization_empty_pack/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-incomplete-record/TestCompletionCrashIncompleteRecord.py b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-incomplete-record/TestCompletionCrashIncompleteRecord.py new file mode 100644 index 000000000000000..68bd864c0088354 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-incomplete-record/TestCompletionCrashIncompleteRecord.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipIf(bugnumber="rdar://53756116")]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-incomplete-record/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-incomplete-record/main.cpp new file mode 100644 index 000000000000000..f7ca83c65408f10 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-incomplete-record/main.cpp @@ -0,0 +1,11 @@ +int i; +struct F { + int &r; + F() : r(i) {} +}; +template struct unique_ptr { + F i; + unique_ptr() : i() {//%self.dbg.GetCommandInterpreter().HandleCompletion("e ", len("e "), 0, -1, lldb.SBStringList()) +} +}; +int main() {unique_ptr u; } diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-lambda/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-lambda/Makefile new file mode 100644 index 000000000000000..3d0b98f13f3d7be --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash-lambda/Makefile @@ -0,0 +1,2 @@ +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash1/TestCompletionCrash1.py b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash1/TestCompletionCrash1.py new file mode 100644 index 000000000000000..3f2a6100607d3dc --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash1/TestCompletionCrash1.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipIf(bugnumber="rdar://53659341")]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash1/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash1/main.cpp new file mode 100644 index 000000000000000..7b123c0662d3eb9 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash1/main.cpp @@ -0,0 +1,12 @@ +namespace std { +struct a { + a() {} + a(a &&); +}; +template struct au { + a ay; + ~au() { //%self.dbg.GetCommandInterpreter().HandleCompletion("e ", len("e "), 0, -1, lldb.SBStringList()) + } +}; +} +int main() { std::au{}; } diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash2/TestCompletionCrash2.py b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash2/TestCompletionCrash2.py new file mode 100644 index 000000000000000..922347aa7810cbe --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash2/TestCompletionCrash2.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipIf(bugnumber="rdar://53754063")]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash2/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash2/main.cpp new file mode 100644 index 000000000000000..02f15c295c2d320 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-crash2/main.cpp @@ -0,0 +1,11 @@ +namespace n { +template class a {}; +template struct shared_ptr { + template + static void make_shared() { //%self.dbg.GetCommandInterpreter().HandleCompletion("e ", len("e "), 0, -1, lldb.SBStringList()) + typedef a c; + c d; + } +}; +} // namespace n +int main() { n::shared_ptr::make_shared(); } diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-in-lambda-and-unnnamed-class/TestCompletionInLambdaAndUnnamedClass.py b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-in-lambda-and-unnnamed-class/TestCompletionInLambdaAndUnnamedClass.py new file mode 100644 index 000000000000000..57fb94b6d662724 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-in-lambda-and-unnnamed-class/TestCompletionInLambdaAndUnnamedClass.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(),) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion-in-lambda-and-unnnamed-class/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-in-lambda-and-unnnamed-class/main.cpp new file mode 100644 index 000000000000000..a3d8ab6532e6e54 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion-in-lambda-and-unnnamed-class/main.cpp @@ -0,0 +1,11 @@ +int main() { + []() + { //%self.dbg.GetCommandInterpreter().HandleCompletion("e ", len("e "), 0, -1, lldb.SBStringList()) + } + (); + struct { + void f() + { //%self.dbg.GetCommandInterpreter().HandleCompletion("e ", len("e "), 0, -1, lldb.SBStringList()) + } + } A; +} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_source/.categories b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/command_source/.categories rename to lldb/packages/Python/lldbsuite/test/commands/expression/completion/.categories diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/completion/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/Makefile new file mode 100644 index 000000000000000..020dce7c31d11de --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp other.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/completion/TestExprCompletion.py b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/TestExprCompletion.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/completion/TestExprCompletion.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/completion/TestExprCompletion.py index 536b9e0abcdd59b..33a423c806bbc32 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/completion/TestExprCompletion.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/TestExprCompletion.py @@ -4,8 +4,6 @@ from __future__ import print_function -import random -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/completion/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/completion/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/completion/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/completion/other.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/completion/other.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/completion/other.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/completion/other.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/Makefile similarity index 52% rename from lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/Makefile index b6592745356d955..2f36b673031d65e 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/TestContextObjectObjc.py b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/TestContextObjectObjc.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/TestContextObjectObjc.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/TestContextObjectObjc.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/main.m b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/main.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc/main.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/context-object-objc/main.m diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/context-object/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/context-object/TestContextObject.py b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object/TestContextObject.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/context-object/TestContextObject.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/context-object/TestContextObject.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/context-object/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/context-object/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/context-object/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/context-object/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/dollar-in-variable/TestDollarInVariable.py b/lldb/packages/Python/lldbsuite/test/commands/expression/dollar-in-variable/TestDollarInVariable.py new file mode 100644 index 000000000000000..7458867527df793 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/dollar-in-variable/TestDollarInVariable.py @@ -0,0 +1,5 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(), + [lldbinline.expectedFailureAll(oslist=["windows"])]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/dollar-in-variable/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/dollar-in-variable/main.c new file mode 100644 index 000000000000000..e5fec25b35b80ae --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/dollar-in-variable/main.c @@ -0,0 +1,21 @@ +// Make sure we correctly handle $ in variable names. + +int main() { + // Some variables that might conflict with our variables below. + int __lldb_expr_result = 2; + int $$foo = 1; + int R0 = 2; + + // Some variables with dollar signs that should work (and shadow + // any built-in LLDB variables). + int $__lldb_expr_result = 11; + int $foo = 12; + int $R0 = 13; + int $0 = 14; + + //%self.expect("expr $__lldb_expr_result", substrs=['(int) $0 = 11']) + //%self.expect("expr $foo", substrs=['(int)', ' = 12']) + //%self.expect("expr $R0", substrs=['(int)', ' = 13']) + //%self.expect("expr int $foo = 123", error=True, substrs=["declaration conflicts"]) + return 0; //%self.expect("expr $0", substrs=['(int)', ' = 14']) +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/Makefile new file mode 100644 index 000000000000000..aa5f222c08e3167 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/Makefile @@ -0,0 +1,4 @@ +C_SOURCES := main.c +CFLAGS_EXTRAS += -std=c99 + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/TestAllowJIT.py b/lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/TestAllowJIT.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/TestAllowJIT.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/TestAllowJIT.py index 05c67902a3ab2d3..19d9fa7e425e191 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/TestAllowJIT.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/TestAllowJIT.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/dont_allow_jit/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/TestExprEntryBP.py b/lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/TestExprEntryBP.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/TestExprEntryBP.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/TestExprEntryBP.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/entry-bp/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/TestExpressionInSyscall.py b/lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/TestExpressionInSyscall.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/TestExpressionInSyscall.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/TestExpressionInSyscall.py index 2ea3952f7f3c43e..6a7e6075253bc39 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/TestExpressionInSyscall.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/TestExpressionInSyscall.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/expr-in-syscall/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/fixits/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/fixits/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/fixits/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py b/lldb/packages/Python/lldbsuite/test/commands/expression/fixits/TestFixIts.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/fixits/TestFixIts.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/fixits/TestFixIts.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/fixits/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/fixits/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/fixits/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/fixits/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py b/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/TestFormatters.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/formatters/TestFormatters.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/formatters/foosynth.py b/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/foosynth.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/formatters/foosynth.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/formatters/foosynth.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/formatters/formatters.py b/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/formatters.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/formatters/formatters.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/formatters/formatters.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/formatters/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/formatters/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/formatters/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/formatters/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/TestFunctionTemplateSpecializationTempArgs.py b/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/TestFunctionTemplateSpecializationTempArgs.py new file mode 100644 index 000000000000000..bd5bc0ec72a97db --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/TestFunctionTemplateSpecializationTempArgs.py @@ -0,0 +1,17 @@ +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestFunctionTemplateSpecializationTempArgs(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test_function_template_specialization_temp_args(self): + self.build() + + (self.target, self.process, _, bkpt) = lldbutil.run_to_source_breakpoint(self, '// break here', + lldb.SBFileSpec("main.cpp", False)) + + self.expect("expr p0", + substrs=['(VType) $0 = {}']) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/main.cpp new file mode 100644 index 000000000000000..6d01288259afe51 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/function_template_specialization_temp_args/main.cpp @@ -0,0 +1,17 @@ +template struct M {}; + +template void f(T &t); + +template <> void f(int &t) { + typedef M VType; + + VType p0; // break here +} + +int main() { + int x; + + f(x); + + return 0; +} diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/Makefile similarity index 61% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/Makefile index 01718d86aa71433..12e489d83b2bc63 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../make USE_LIBCPP := 1 CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/TestImportStdModule.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/TestImportStdModule.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/TestImportStdModule.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/TestImportStdModule.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/basic/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/Makefile similarity index 61% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/Makefile index 01718d86aa71433..12e489d83b2bc63 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../make USE_LIBCPP := 1 CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/TestStdModuleWithConflicts.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/TestStdModuleWithConflicts.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/TestStdModuleWithConflicts.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/TestStdModuleWithConflicts.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/conflicts/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/conflicts/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/Makefile similarity index 61% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/Makefile index 01718d86aa71433..12e489d83b2bc63 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../make USE_LIBCPP := 1 CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/TestBasicDeque.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/TestBasicDeque.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/TestBasicDeque.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/TestBasicDeque.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-basic/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/Makefile similarity index 61% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/Makefile index 01718d86aa71433..12e489d83b2bc63 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../make USE_LIBCPP := 1 CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py similarity index 79% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py index 4df280f32d1cfee..eeea34819dd8c10 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/TestDbgInfoContentDeque.py @@ -25,12 +25,12 @@ def test(self): self.runCmd("settings set target.import-std-module true") self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3']) - self.expect("expr (int)a.front()->a", substrs=['(int) $1 = 3']) - self.expect("expr (int)a.back()->a", substrs=['(int) $2 = 2']) + self.expect("expr (int)a.front().a", substrs=['(int) $1 = 3']) + self.expect("expr (int)a.back().a", substrs=['(int) $2 = 2']) self.expect("expr std::reverse(a.begin(), a.end())") - self.expect("expr (int)a.front()->a", substrs=['(int) $3 = 2']) - self.expect("expr (int)a.back()->a", substrs=['(int) $4 = 3']) + self.expect("expr (int)a.front().a", substrs=['(int) $3 = 2']) + self.expect("expr (int)a.back().a", substrs=['(int) $4 = 3']) self.expect("expr (int)(a.begin()->a)", substrs=['(int) $5 = 2']) self.expect("expr (int)(a.rbegin()->a)", substrs=['(int) $6 = 3']) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/deque-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/deque-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/TestBasicForwardList.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/TestBasicForwardList.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/TestBasicForwardList.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/TestBasicForwardList.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py similarity index 93% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py index 6e7be3ec00f5f75..a2fc55989306826 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/TestDbgInfoContentForwardList.py @@ -25,7 +25,7 @@ def test(self): self.runCmd("settings set target.import-std-module true") self.expect("expr (size_t)std::distance(a.begin(), a.end())", substrs=['(size_t) $0 = 3']) - self.expect("expr (int)a.front()->a", substrs=['(int) $1 = 3']) + self.expect("expr (int)a.front().a", substrs=['(int) $1 = 3']) self.expect("expr (int)(a.begin()->a)", substrs=['(int) $2 = 3']) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/forward_list-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/TestBasicList.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/TestBasicList.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/TestBasicList.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/TestBasicList.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/TestDbgInfoContentList.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/list-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/TestMissingStdModule.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/TestMissingStdModule.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/TestMissingStdModule.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/TestMissingStdModule.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/no-std-module/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/TestQueue.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/TestQueue.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/TestQueue.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/TestQueue.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/queue/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/TestSharedPtrDbgInfoContent.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/TestSharedPtr.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/TestSharedPtr.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/TestSharedPtr.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/TestSharedPtr.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/shared_ptr/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/TestStack.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/TestStack.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/TestStack.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/TestStack.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/stack/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile similarity index 86% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile index e04d73ea4876ecb..459a66c5c8b3fe4 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make # We don't have any standard include directories, so we can't # parse the test_common.h header we usually inject as it includes # system headers. @@ -7,4 +6,4 @@ NO_TEST_COMMON_H := 1 CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) CXXFLAGS += -I $(SRCDIR)/root/usr/include/c++/include/ -I $(SRCDIR)/root/usr/include/ -nostdinc -nostdinc++ -nostdlib++ CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/TestStdModuleSysroot.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/TestStdModuleSysroot.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/TestStdModuleSysroot.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/TestStdModuleSysroot.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/root/usr/include/c++/include/algorithm b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/algorithm similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/root/usr/include/c++/include/algorithm rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/algorithm diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/root/usr/include/c++/include/module.modulemap b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/module.modulemap similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/root/usr/include/c++/include/module.modulemap rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/module.modulemap diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/root/usr/include/libc_header.h b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/libc_header.h similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/sysroot/root/usr/include/libc_header.h rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/libc_header.h diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/TestUniquePtrDbgInfoContent.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/TestUniquePtr.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/TestUniquePtr.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/TestUniquePtr.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/TestUniquePtr.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/unique_ptr/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/TestBasicVector.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/TestBasicVector.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/TestBasicVector.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/TestBasicVector.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/TestBoolVector.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/TestBoolVector.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/TestBoolVector.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/TestBoolVector.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-bool/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/TestDbgInfoContentVector.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/TestVectorOfVectors.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/TestVectorOfVectors.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/TestVectorOfVectors.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/TestVectorOfVectors.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-of-vectors/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/TestDbgInfoContentWeakPtr.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr-dbg-info-content/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/Makefile new file mode 100644 index 000000000000000..12e489d83b2bc63 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/Makefile @@ -0,0 +1,4 @@ +USE_LIBCPP := 1 +CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/TestWeakPtr.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/TestWeakPtr.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/TestWeakPtr.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/TestWeakPtr.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/weak_ptr/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/Makefile similarity index 50% rename from lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/Makefile index 4464e2ee9f5cfb5..780b2660cd076e2 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Cocoa diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/TestImportBuiltinFileID.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/TestImportBuiltinFileID.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/main.m b/lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/main.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/import_builtin_fileid/main.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/import_builtin_fileid/main.m diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/TestInlineNamespace.py b/lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/TestInlineNamespace.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/TestInlineNamespace.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/TestInlineNamespace.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/inline-namespace/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/invalid-args/TestInvalidArgsExpression.py b/lldb/packages/Python/lldbsuite/test/commands/expression/invalid-args/TestInvalidArgsExpression.py new file mode 100644 index 000000000000000..e0ede0a4e2d074d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/invalid-args/TestInvalidArgsExpression.py @@ -0,0 +1,45 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class InvalidArgsExpressionTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + def test_invalid_lang(self): + self.expect("expression -l foo --", error=True, + substrs=["error: unknown language type: 'foo' for expression"]) + + @no_debug_info_test + def test_invalid_all_thread(self): + self.expect("expression -a foo --", error=True, + substrs=['error: invalid all-threads value setting: "foo"']) + + @no_debug_info_test + def test_invalid_ignore_br(self): + self.expect("expression -i foo --", error=True, + substrs=['error: could not convert "foo" to a boolean value.']) + + @no_debug_info_test + def test_invalid_allow_jit(self): + self.expect("expression -j foo --", error=True, + substrs=['error: could not convert "foo" to a boolean value.']) + + @no_debug_info_test + def test_invalid_timeout(self): + self.expect("expression -t foo --", error=True, + substrs=['error: invalid timeout setting "foo"']) + + self.expect("expression -t \"\" --", error=True, + substrs=['error: invalid timeout setting ""']) + + @no_debug_info_test + def test_invalid_unwind(self): + self.expect("expression -u foo --", error=True, + substrs=['error: could not convert "foo" to a boolean value.']) + + @no_debug_info_test + def test_invalid_fixits(self): + self.expect("expression -X foo --", error=True, + substrs=['error: could not convert "foo" to a boolean value.']) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/Makefile new file mode 100644 index 000000000000000..a1f689e07c77ff9 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/Makefile @@ -0,0 +1,4 @@ + +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/TestIRInterpreterPHINodes.py b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/TestIRInterpreterPHINodes.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/TestIRInterpreterPHINodes.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/TestIRInterpreterPHINodes.py index a5607f1950525e0..20a9477b1f7ae5c 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/TestIRInterpreterPHINodes.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/TestIRInterpreterPHINodes.py @@ -2,8 +2,6 @@ Test PHI nodes work in the IR interpreter. """ -import os -import os.path import lldb from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter-phi-nodes/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/Makefile new file mode 100644 index 000000000000000..00a9da08656baa9 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/Makefile @@ -0,0 +1,5 @@ +default: a.out + +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/TestIRInterpreter.py b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/TestIRInterpreter.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/TestIRInterpreter.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/TestIRInterpreter.py index e440f26bbe2b566..509e3fbd6d0309a 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/TestIRInterpreter.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/TestIRInterpreter.py @@ -6,8 +6,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/ir-interpreter/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/Test11588.py b/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/Test11588.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/Test11588.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/Test11588.py index 2efe2df9550fa57..2c20b63cfd938ef 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/Test11588.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/Test11588.py @@ -7,8 +7,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/s11588.py b/lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/s11588.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/s11588.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/issue_11588/s11588.py diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/macros/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/macros/Makefile new file mode 100644 index 000000000000000..59070728a5fa5a9 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/macros/Makefile @@ -0,0 +1,6 @@ +CXX_SOURCES := main.cpp + +DEBUG_INFO_FLAG = -g3 + + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/macros/TestMacros.py b/lldb/packages/Python/lldbsuite/test/commands/expression/macros/TestMacros.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/macros/TestMacros.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/macros/TestMacros.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/macros/macro1.h b/lldb/packages/Python/lldbsuite/test/commands/expression/macros/macro1.h similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/macros/macro1.h rename to lldb/packages/Python/lldbsuite/test/commands/expression/macros/macro1.h diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/macros/macro2.h b/lldb/packages/Python/lldbsuite/test/commands/expression/macros/macro2.h similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/macros/macro2.h rename to lldb/packages/Python/lldbsuite/test/commands/expression/macros/macro2.h diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/macros/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/macros/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/macros/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/macros/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/Makefile new file mode 100644 index 000000000000000..c9319d6e6888a4a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/Makefile @@ -0,0 +1,2 @@ +C_SOURCES := main.c +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/TestMultilineCompletion.py b/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/TestMultilineCompletion.py new file mode 100644 index 000000000000000..7447e1586416fb1 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/TestMultilineCompletion.py @@ -0,0 +1,30 @@ +""" +Test completion for multiline expressions. +""" + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test.lldbpexpect import PExpectTest + +class MultilineCompletionTest(PExpectTest): + + mydir = TestBase.compute_mydir(__file__) + + def test_basic_completion(self): + """Test that we can complete a simple multiline expression""" + self.build() + + self.launch(executable=self.getBuildArtifact("a.out")) + self.expect("b main", substrs=["Breakpoint 1", "address ="]) + self.expect("run", substrs=["stop reason ="]) + + self.child.sendline("expr") + self.child.expect_exact("terminate with an empty line to evaluate") + self.child.send("to_\t") + self.child.expect_exact("to_complete") + + self.child.send("\n\n") + self.expect_prompt() + + self.quit() diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/main.c new file mode 100644 index 000000000000000..6dd3616c1ae40ca --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/multiline-completion/main.c @@ -0,0 +1,4 @@ +int main(int argc, char **argv) { + int to_complete = 0; + return to_complete; +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/TestNamespaceLocalVarSameNameCppAndC.py b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/TestNamespaceLocalVarSameNameCppAndC.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/TestNamespaceLocalVarSameNameCppAndC.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/TestNamespaceLocalVarSameNameCppAndC.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_cpp_and_c/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/Makefile similarity index 57% rename from lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/Makefile index 67553218d802f29..9267f734396cba9 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../make OBJCXX_SOURCES := main.mm util.mm -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/main.mm b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/main.mm similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/main.mm rename to lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/main.mm diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/util.mm b/lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/util.mm similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_obj_c/util.mm rename to lldb/packages/Python/lldbsuite/test/commands/expression/namespace_local_var_same_name_obj_c/util.mm diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/.categories b/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/.categories rename to lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/.categories diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/Makefile new file mode 100644 index 000000000000000..f63adb4f5d2a01e --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/Makefile @@ -0,0 +1,4 @@ +C_SOURCES := locking.c +ENABLE_THREADS := YES + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py b/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/TestExprDoesntBlock.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/TestExprDoesntBlock.py index a498f0a360ee84d..5b5042b63e4b184 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/TestExprDoesntBlock.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/locking.c b/lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/locking.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/locking.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/no-deadlock/locking.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/options/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/options/Makefile new file mode 100644 index 000000000000000..7df22699c57d573 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/options/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp foo.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/options/TestExprOptions.py b/lldb/packages/Python/lldbsuite/test/commands/expression/options/TestExprOptions.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/options/TestExprOptions.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/options/TestExprOptions.py index 13bc3b7ce2acc41..8af0ea1ba0c8477 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/options/TestExprOptions.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/options/TestExprOptions.py @@ -10,8 +10,6 @@ from __future__ import print_function -import os -import time import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/options/foo.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/options/foo.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/options/foo.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/options/foo.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/options/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/options/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/options/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/options/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/Makefile similarity index 60% rename from lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/Makefile index 8066198300fb2e8..add737b47522459 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation -framework CloudKit diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/TestPersistObjCPointeeType.py b/lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/TestPersistObjCPointeeType.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/main.m b/lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/main.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/persist_objc_pointeetype/main.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/persist_objc_pointeetype/main.m diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/Makefile new file mode 100644 index 000000000000000..549336d022352e2 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/Makefile @@ -0,0 +1,5 @@ +C_SOURCES := main.c + +include Makefile.rules + + diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/TestPersistentPtrUpdate.py b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/TestPersistentPtrUpdate.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/TestPersistentPtrUpdate.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/TestPersistentPtrUpdate.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_ptr_update/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/TestNestedPersistentTypes.py b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/TestNestedPersistentTypes.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/TestNestedPersistentTypes.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/TestNestedPersistentTypes.py index 8630d6f41b34087..bde649b0e074878 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/TestNestedPersistentTypes.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/TestNestedPersistentTypes.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/TestPersistentTypes.py b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/TestPersistentTypes.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/TestPersistentTypes.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/TestPersistentTypes.py index 63d8c227a55097e..91681b480ebc203 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/TestPersistentTypes.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/TestPersistentTypes.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_types/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/TestPersistentVariables.py b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/TestPersistentVariables.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/TestPersistentVariables.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/TestPersistentVariables.py index 441a60b5a4636dd..57370f121b43fc5 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/TestPersistentVariables.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/TestPersistentVariables.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/persistent_variables/main.c diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/Makefile similarity index 52% rename from lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/Makefile index b6592745356d955..2f36b673031d65e 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/TestPoVerbosity.py b/lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/TestPoVerbosity.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/TestPoVerbosity.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/TestPoVerbosity.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/main.m b/lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/main.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/po_verbosity/main.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/po_verbosity/main.m diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/pr35310/TestExprsBug35310.py b/lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/TestExprsBug35310.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/pr35310/TestExprsBug35310.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/TestExprsBug35310.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/pr35310/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/pr35310/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/pr35310/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/Test8638051.py b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/Test8638051.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/Test8638051.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/Test8638051.py index 0027fc226e377a1..e7a5f597b706d77 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/Test8638051.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/Test8638051.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/radar_8638051/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/TestPrintfAfterUp.py b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/TestPrintfAfterUp.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/TestPrintfAfterUp.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/TestPrintfAfterUp.py index e6b5285c6774f74..4ff28bdfe86a798 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/TestPrintfAfterUp.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/TestPrintfAfterUp.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/radar_9531204/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/TestExprHelpExamples.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/TestExprHelpExamples.py index d18720ccf3f16fd..5406fb0e987b83a 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/TestExprHelpExamples.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/radar_9673664/main.c diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/rdar42038760/TestScalarURem.py b/lldb/packages/Python/lldbsuite/test/commands/expression/rdar42038760/TestScalarURem.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/rdar42038760/TestScalarURem.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/rdar42038760/TestScalarURem.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/rdar42038760/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/rdar42038760/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/rdar42038760/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/rdar42038760/main.c diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/Test128BitsInteger.py b/lldb/packages/Python/lldbsuite/test/commands/expression/rdar44436068/Test128BitsInteger.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/Test128BitsInteger.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/rdar44436068/Test128BitsInteger.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/rdar44436068/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/rdar44436068/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py b/lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/TestSaveJITObjects.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/TestSaveJITObjects.py index 460536b42dd860f..896e599f59c768e 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/TestSaveJITObjects.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/TestSaveJITObjects.py @@ -5,7 +5,6 @@ from __future__ import print_function import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/main.c rename to lldb/packages/Python/lldbsuite/test/commands/expression/save_jit_objects/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/Makefile new file mode 100644 index 000000000000000..4b46fe22a8b0431 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/Makefile @@ -0,0 +1,4 @@ +CXX_SOURCES := main.cpp +CXXFLAGS += -std=c++11 + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/TestScopedEnumType.py b/lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/TestScopedEnumType.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/TestScopedEnumType.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/TestScopedEnumType.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/scoped_enums/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/test/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/test/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/test/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/test/TestExprs.py b/lldb/packages/Python/lldbsuite/test/commands/expression/test/TestExprs.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/test/TestExprs.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/test/TestExprs.py index 6f0e0ef2bd6dd13..4fe228d40d4c097 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/test/TestExprs.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/test/TestExprs.py @@ -16,8 +16,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py b/lldb/packages/Python/lldbsuite/test/commands/expression/test/TestExprs2.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/test/TestExprs2.py index 88412e6b7c82cae..1a733bebffe6714 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/test/TestExprs2.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/test/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/test/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/test/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/test/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/timeout/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/timeout/Makefile new file mode 100644 index 000000000000000..06a21f5b8b4ef0b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/timeout/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := wait-a-while.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/timeout/TestCallWithTimeout.py b/lldb/packages/Python/lldbsuite/test/commands/expression/timeout/TestCallWithTimeout.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/timeout/TestCallWithTimeout.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/timeout/TestCallWithTimeout.py index f5c55998cd9fcd6..7862477001ead9c 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/timeout/TestCallWithTimeout.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/timeout/TestCallWithTimeout.py @@ -27,7 +27,6 @@ def setUp(self): oslist=[ "windows"], bugnumber="llvm.org/pr21765") - @expectedFailureNetBSD def test(self): """Test calling std::String member function.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/timeout/wait-a-while.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/timeout/wait-a-while.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/timeout/wait-a-while.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/timeout/wait-a-while.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/Makefile similarity index 78% rename from lldb/packages/Python/lldbsuite/test/expression_command/top-level/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/expression/top-level/Makefile index 9e35242c72fad45..1247a8e09b233f2 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp test.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules a.out: dummy diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/TestTopLevelExprs.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/top-level/TestTopLevelExprs.py index 1a8a619b0ed228a..e6a632b7f236d2c 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/TestTopLevelExprs.py @@ -7,8 +7,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/dummy.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/top-level/dummy.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/dummy.mk b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/dummy.mk new file mode 100644 index 000000000000000..59a1cff3803e4f0 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/dummy.mk @@ -0,0 +1,4 @@ +CXX_SOURCES := dummy.cpp +EXE := dummy + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/top-level/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/top-level/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/test.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/top-level/test.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/top-level/test.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/top-level/test.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/two-files/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/two-files/Makefile new file mode 100644 index 000000000000000..b8b1d12fe2ba889 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/two-files/Makefile @@ -0,0 +1,5 @@ +OBJC_SOURCES := main.m foo.m + +include Makefile.rules + +LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/two-files/TestObjCTypeQueryFromOtherCompileUnit.py b/lldb/packages/Python/lldbsuite/test/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/two-files/TestObjCTypeQueryFromOtherCompileUnit.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/two-files/foo.m b/lldb/packages/Python/lldbsuite/test/commands/expression/two-files/foo.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/two-files/foo.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/two-files/foo.m diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/two-files/main.m b/lldb/packages/Python/lldbsuite/test/commands/expression/two-files/main.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/two-files/main.m rename to lldb/packages/Python/lldbsuite/test/commands/expression/two-files/main.m diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/unicode-in-variable/TestUnicodeInVariable.py b/lldb/packages/Python/lldbsuite/test/commands/expression/unicode-in-variable/TestUnicodeInVariable.py new file mode 100644 index 000000000000000..03424658f3ed3da --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/unicode-in-variable/TestUnicodeInVariable.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(), None) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/unicode-in-variable/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/unicode-in-variable/main.cpp new file mode 100644 index 000000000000000..82e38b1ef4c652c --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/unicode-in-variable/main.cpp @@ -0,0 +1,17 @@ +// Make sure we correctly handle unicode in variable names. + +struct A { + // We need a member variable in the context that could shadow our local + // variable. If our optimization code fails to handle this, then we won't + // correctly inject our local variable so that it won't get shadowed. + int foob\u00E1r = 2; + int foo() { + int foob\u00E1r = 3; + return foob\u00E1r; //%self.expect("expr foobár", substrs=['(int)', ' = 3']) + } +}; + +int main() { + A a; + return a.foo(); +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/TestUnwindExpression.py b/lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/TestUnwindExpression.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/TestUnwindExpression.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/TestUnwindExpression.py index 62be09c7a922943..d42ee3de404f54a 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/TestUnwindExpression.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/TestUnwindExpression.py @@ -7,8 +7,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/unwind_expression/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/TestVectorOfEnums.py b/lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/TestVectorOfEnums.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/TestVectorOfEnums.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/TestVectorOfEnums.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/vector_of_enums/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/Makefile new file mode 100644 index 000000000000000..9786ff38a846184 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/Makefile @@ -0,0 +1,25 @@ +CFLAGS_EXTRAS += -std=c99 +LD_FLAGS := -dynamiclib +include Makefile.rules + +all: a.out dylib missing + +dylib: dylib.o + $(CC) $(LD_FLAGS) -o libdylib.dylib dylib.o + +missing: dylib2.o + mkdir hidden + $(CC) $(LD_FLAGS) -o hidden/libdylib.dylib dylib2.o + +a.out: main.o dylib missing + $(CC) $(CFLAGS) -L. -ldylib main.o + +dylib.o: dylib.h $(SRCDIR)/dylib.c + $(CC) -DHAS_THEM $(CFLAGS) -c $(SRCDIR)/dylib.c + +dylib2.o: dylib.h $(SRCDIR)/dylib.c + $(CC) $(CFLAGS) -c $(SRCDIR)/dylib.c -o dylib2.o + +main.o: dylib.h $(SRCDIR)/main.c + $(CC) $(CFLAGS) -c $(SRCDIR)/main.c -fmodules -fmodules-cache-path=$(CLANG_MODULE_CACHE_DIR) + diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py new file mode 100644 index 000000000000000..2999cba7d99daed --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py @@ -0,0 +1,81 @@ +""" +Test that we can compile expressions referring to +absent weak symbols from a dylib. +""" + +from __future__ import print_function + + +import os +import lldb +from lldbsuite.test import decorators +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.lldbtest import * + + +class TestWeakSymbolsInExpressions(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + NO_DEBUG_INFO_TESTCASE = True + + @decorators.skipUnlessDarwin + def test_weak_symbol_in_expr(self): + """Tests that we can refer to weak symbols in expressions.""" + self.build() + self.main_source_file = lldb.SBFileSpec("main.c") + self.do_test() + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + + def run_weak_var_check (self, weak_varname, present): + # The expression will modify present_weak_int to signify which branch + # was taken. Set it to so we don't get confused by a previous run. + value = self.target.FindFirstGlobalVariable("present_weak_int") + value.SetValueFromCString("0") + if present: + correct_value = 10 + else: + correct_value = 20 + + # Note, I'm adding the "; 10" at the end of the expression to work around + # the bug that expressions with no result currently return False for Success()... + expr = "if (&" + weak_varname + " != NULL) { present_weak_int = 10; } else { present_weak_int = 20;}; 10" + result = self.frame.EvaluateExpression(expr) + self.assertTrue(result.GetError().Success(), "absent_weak_int expr failed: %s"%(result.GetError().GetCString())) + self.assertEqual(value.GetValueAsSigned(), correct_value, "Didn't change present_weak_int correctly.") + + def do_test(self): + hidden_dir = os.path.join(self.getBuildDir(), "hidden") + + launch_info = lldb.SBLaunchInfo(None) + launch_info.SetWorkingDirectory(self.getBuildDir()) + # We have to point to the hidden directory to pick up the + # version of the dylib without the weak symbols: + env_expr = self.platformContext.shlib_environment_var + "=" + hidden_dir + launch_info.SetEnvironmentEntries([env_expr], True) + + (self.target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self, + "Set a breakpoint here", self.main_source_file, + launch_info = launch_info) + # First we have to import the Dylib module so we get the type info + # for the weak symbol. We need to add the source dir to the module + # search paths, and then run @import to introduce it into the expression + # context: + self.dbg.HandleCommand("settings set target.clang-module-search-paths " + self.getSourceDir()) + + self.frame = thread.frames[0] + self.assertTrue(self.frame.IsValid(), "Got a good frame") + options = lldb.SBExpressionOptions() + options.SetLanguage(lldb.eLanguageTypeObjC) + result = self.frame.EvaluateExpression("@import Dylib", options) + + # Now run an expression that references an absent weak symbol: + self.run_weak_var_check("absent_weak_int", False) + self.run_weak_var_check("absent_weak_function", False) + + # Make sure we can do the same thing with present weak symbols + self.run_weak_var_check("present_weak_int", True) + self.run_weak_var_check("present_weak_function", True) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/dylib.c b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/dylib.c new file mode 100644 index 000000000000000..dc513e5c5fb5229 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/dylib.c @@ -0,0 +1,14 @@ +#include "dylib.h" + +int present_weak_int = 10; +int present_weak_function() +{ + return present_weak_int; +} + +#if defined HAS_THEM +int absent_weak_int = 10; +int absent_weak_function() { + return absent_weak_int; +} +#endif diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/dylib.h b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/dylib.h new file mode 100644 index 000000000000000..f668ec0a784766f --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/dylib.h @@ -0,0 +1,8 @@ +extern int absent_weak_int __attribute__((weak_import)); + +extern int present_weak_int __attribute__((weak_import)); + +extern int absent_weak_function() __attribute__((weak_import)); + +extern int present_weak_function() __attribute__((weak_import)); + diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/main.c b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/main.c new file mode 100644 index 000000000000000..5ea257bae5b9c7e --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/main.c @@ -0,0 +1,23 @@ +#include "dylib.h" +#include + +int +doSomething() +{ + // Set a breakpoint here. + if (&absent_weak_int != NULL) + printf("In absent_weak_int: %d\n", absent_weak_int); + if (absent_weak_function != NULL) + printf("In absent_weak_func: %p\n", absent_weak_function); + if (&present_weak_int != NULL) + printf("In present_weak_int: %d\n", present_weak_int); + if (present_weak_function != NULL) + printf("In present_weak_func: %p\n", present_weak_function); + +} + +int +main() +{ + return doSomething(); +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/module.modulemap b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/module.modulemap new file mode 100644 index 000000000000000..6f7671400bc330b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/module.modulemap @@ -0,0 +1,3 @@ +module Dylib { + header "dylib.h" +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/xvalue/TestXValuePrinting.py b/lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/TestXValuePrinting.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/xvalue/TestXValuePrinting.py rename to lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/TestXValuePrinting.py diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/xvalue/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/xvalue/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/expression/xvalue/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/TestArray.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/TestArray.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/TestArray.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/TestArray.py index 4abf1a81296334b..741fb7bbaa098f6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/TestArray.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/TestArray.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/array/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/TestBadReference.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/TestBadReference.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/TestBadReference.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/TestBadReference.py index e198720db57dace..3ba0f7a6c42aae9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/TestBadReference.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/TestBadReference.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/bad-reference/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/TestComplicatedExpression.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/TestComplicatedExpression.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/TestComplicatedExpression.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/TestComplicatedExpression.py index 7823c639572cffb..52691d9f471b485 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/TestComplicatedExpression.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/TestComplicatedExpression.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/complicated-expression/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/TestDiagnoseDereferenceArgument.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/TestDiagnoseDereferenceArgument.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/TestDiagnoseDereferenceArgument.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/TestDiagnoseDereferenceArgument.py index 335d61767cd8cc2..c0dac49586fc977 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/TestDiagnoseDereferenceArgument.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/TestDiagnoseDereferenceArgument.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-argument/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/TestDiagnoseDereferenceFunctionReturn.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/TestDiagnoseDereferenceFunctionReturn.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/TestDiagnoseDereferenceFunctionReturn.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/TestDiagnoseDereferenceFunctionReturn.py index 0398a161dcd8822..ebce5ae54c2366a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/TestDiagnoseDereferenceFunctionReturn.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/TestDiagnoseDereferenceFunctionReturn.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-function-return/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/TestDiagnoseDereferenceThis.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/TestDiagnoseDereferenceThis.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/TestDiagnoseDereferenceThis.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/TestDiagnoseDereferenceThis.py index 272a64e117b91bf..1251ad551ace43f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/TestDiagnoseDereferenceThis.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/TestDiagnoseDereferenceThis.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/dereference-this/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/TestDiagnoseInheritance.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/TestDiagnoseInheritance.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/TestDiagnoseInheritance.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/TestDiagnoseInheritance.py index 3d9c893bbd40004..18fb263b47be567 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/TestDiagnoseInheritance.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/TestDiagnoseInheritance.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/inheritance/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/TestLocalVariable.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/TestLocalVariable.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/TestLocalVariable.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/TestLocalVariable.py index da1fd187d142764..e4fd86e0db451e4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/TestLocalVariable.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/TestLocalVariable.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/local-variable/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/TestDiagnoseDereferenceVirtualMethodCall.py b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/TestDiagnoseDereferenceVirtualMethodCall.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/TestDiagnoseDereferenceVirtualMethodCall.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/TestDiagnoseDereferenceVirtualMethodCall.py index 437cdbbc93b7eb5..ed91b487c951e3b 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/TestDiagnoseDereferenceVirtualMethodCall.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/TestDiagnoseDereferenceVirtualMethodCall.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/diagnose/virtual-method-call/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/language/Makefile similarity index 80% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/Makefile index cb1af719ac35595..993dc3f71a8ac35 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/language/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp other.cpp other-2.cpp C_SOURCES := somefunc.c -include $(LEVEL)/Makefile.rules +include Makefile.rules other-2.o: other-2.cpp $(CXX) $(CFLAGS_NO_DEBUG) -c $(SRCDIR)/other-2.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/TestGuessLanguage.py b/lldb/packages/Python/lldbsuite/test/commands/frame/language/TestGuessLanguage.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/TestGuessLanguage.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/TestGuessLanguage.py index 959b621521e9442..19fa3e9f0d882b2 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/TestGuessLanguage.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/language/TestGuessLanguage.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/language/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/other-2.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/language/other-2.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/other-2.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/other-2.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/other.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/language/other.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/other.cpp rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/other.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/other.h b/lldb/packages/Python/lldbsuite/test/commands/frame/language/other.h similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/other.h rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/other.h diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-language/somefunc.c b/lldb/packages/Python/lldbsuite/test/commands/frame/language/somefunc.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-language/somefunc.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/language/somefunc.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/Makefile similarity index 68% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/Makefile index 45f00b3e9861284..b016328910eafce 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/Makefile @@ -1,10 +1,8 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -g0 # No debug info. MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/TestFrameRecognizer.py b/lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/TestFrameRecognizer.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/TestFrameRecognizer.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/TestFrameRecognizer.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/main.m b/lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/main.m similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/main.m rename to lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/main.m diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/recognizer.py b/lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/recognizer.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame-recognizer/recognizer.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/recognizer/recognizer.py diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/select/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/select/Makefile new file mode 100644 index 000000000000000..3d0b98f13f3d7be --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/select/Makefile @@ -0,0 +1,2 @@ +CXX_SOURCES := main.cpp +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py b/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py new file mode 100644 index 000000000000000..c6b665ee94153a9 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/select/TestFrameSelect.py @@ -0,0 +1,38 @@ +""" +Test 'frame select' command. +""" + +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestFrameSelect(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + @skipIfWindows + def test_relative(self): + self.build() + + lldbutil.run_to_source_breakpoint(self, + "// Set break point at this line.", lldb.SBFileSpec("main.cpp")) + + self.expect("frame select -r 1", substrs=["nested2() at"]) + self.expect("frame select -r -1", substrs=["nested3() at"]) + + self.expect("frame select -r -1", error=True, substrs=["Already at the bottom of the stack."]) + self.expect("frame select -r -2147483647", error=True, substrs=["Already at the bottom of the stack."]) + self.expect("frame select -r -2147483648", error=True, substrs=["error: invalid frame offset argument '-2147483648'"]) + self.expect("frame select -r -2147483649", error=True, substrs=["error: invalid frame offset argument '-2147483649'"]) + + self.expect("frame select -r 1", substrs=["nested2() at"]) + self.expect("frame select -r -2", substrs=["nested3() at"]) + self.expect("frame select -r 1", substrs=["nested2() at"]) + self.expect("frame select -r -2147483647", substrs=["nested3() at"]) + self.expect("frame select -r 1", substrs=["nested2() at"]) + self.expect("frame select -r -2147483648", error=True, substrs=["error: invalid frame offset argument '-2147483648'"]) + self.expect("frame select -r -2147483649", error=True, substrs=["error: invalid frame offset argument '-2147483649'"]) + + self.expect("frame select -r 100") + self.expect("frame select -r 1", error=True, substrs=["Already at the top of the stack."]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/select/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/frame/select/main.cpp new file mode 100644 index 000000000000000..c852bdb7e642ebd --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/select/main.cpp @@ -0,0 +1,16 @@ +int nested3() { + return 3; // Set break point at this line. +} + +int nested2() { + return 2 + nested3(); +} + +int nested1() { + return 1 + nested2(); +} + + +int main(int argc, char **argv) { + return nested1(); +} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/TestFrameVariableScope.py b/lldb/packages/Python/lldbsuite/test/commands/frame/var-scope/TestFrameVariableScope.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/TestFrameVariableScope.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/var-scope/TestFrameVariableScope.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/var-scope/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/var-scope/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/frame/var/Makefile b/lldb/packages/Python/lldbsuite/test/commands/frame/var/Makefile new file mode 100644 index 000000000000000..aa5f222c08e3167 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/var/Makefile @@ -0,0 +1,4 @@ +C_SOURCES := main.c +CFLAGS_EXTRAS += -std=c99 + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var/TestFrameVar.py b/lldb/packages/Python/lldbsuite/test/commands/frame/var/TestFrameVar.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame_var/TestFrameVar.py rename to lldb/packages/Python/lldbsuite/test/commands/frame/var/TestFrameVar.py index b4e1b9c07634db3..8b294a71c180620 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var/TestFrameVar.py +++ b/lldb/packages/Python/lldbsuite/test/commands/frame/var/TestFrameVar.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var/main.c b/lldb/packages/Python/lldbsuite/test/commands/frame/var/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/frame_var/main.c rename to lldb/packages/Python/lldbsuite/test/commands/frame/var/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/gui/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/gui/basic/Makefile new file mode 100644 index 000000000000000..c9319d6e6888a4a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/gui/basic/Makefile @@ -0,0 +1,2 @@ +C_SOURCES := main.c +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/gui/basic/TestGuiBasic.py b/lldb/packages/Python/lldbsuite/test/commands/gui/basic/TestGuiBasic.py new file mode 100644 index 000000000000000..89bd3e1109e2083 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/gui/basic/TestGuiBasic.py @@ -0,0 +1,59 @@ +""" +Test that the 'gui' displays the help window and basic UI. +""" + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test.lldbpexpect import PExpectTest + +class BasicGuiCommandTest(PExpectTest): + + mydir = TestBase.compute_mydir(__file__) + + @skipIfCursesSupportMissing + def test_gui(self): + self.build() + + self.launch(executable=self.getBuildArtifact("a.out")) + self.expect('br set -f main.c -p "// Break here"', substrs=["Breakpoint 1", "address ="]) + self.expect("run", substrs=["stop reason ="]) + + + escape_key = chr(27).encode() + + # Start the GUI for the first time and check for the welcome window. + self.child.sendline("gui") + self.child.expect_exact("Welcome to the LLDB curses GUI.") + + # Press escape to quit the welcome screen + self.child.send(escape_key) + # Press escape again to quit the gui + self.child.send(escape_key) + self.expect_prompt() + + # Start the GUI a second time, this time we should have the normal GUI. + self.child.sendline("gui") + # Check for GUI elements in the menu bar. + self.child.expect_exact("Target") + self.child.expect_exact("Process") + self.child.expect_exact("Thread") + self.child.expect_exact("View") + self.child.expect_exact("Help") + + # Check the sources window. + self.child.expect_exact("Sources") + self.child.expect_exact("main") + self.child.expect_exact("funky_var_name_that_should_be_rendered") + + # Check the variable window. + self.child.expect_exact("Variables") + self.child.expect_exact("(int) funky_var_name_that_should_be_rendered = 22") + + # Check the bar at the bottom. + self.child.expect_exact("Frame:") + + # Press escape to quit the gui + self.child.send(escape_key) + + self.quit() diff --git a/lldb/packages/Python/lldbsuite/test/commands/gui/basic/main.c b/lldb/packages/Python/lldbsuite/test/commands/gui/basic/main.c new file mode 100644 index 000000000000000..97d57fc71831d7b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/gui/basic/main.c @@ -0,0 +1,4 @@ +int main(int argc, char **argv) { + int funky_var_name_that_should_be_rendered = 22; + return 0; // Break here +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/gui/invalid-args/TestInvalidArgsGui.py b/lldb/packages/Python/lldbsuite/test/commands/gui/invalid-args/TestInvalidArgsGui.py new file mode 100644 index 000000000000000..11fdc92243bb1ce --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/gui/invalid-args/TestInvalidArgsGui.py @@ -0,0 +1,13 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class GuiTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + @skipIfCursesSupportMissing + def test_reproducer_generate_invalid_invocation(self): + self.expect("gui blub", error=True, + substrs=["the gui command takes no arguments."]) diff --git a/lldb/packages/Python/lldbsuite/test/help/TestHelp.py b/lldb/packages/Python/lldbsuite/test/commands/help/TestHelp.py similarity index 94% rename from lldb/packages/Python/lldbsuite/test/help/TestHelp.py rename to lldb/packages/Python/lldbsuite/test/commands/help/TestHelp.py index 7d66b08b86a242b..55bcbd02be71372 100644 --- a/lldb/packages/Python/lldbsuite/test/help/TestHelp.py +++ b/lldb/packages/Python/lldbsuite/test/commands/help/TestHelp.py @@ -8,7 +8,6 @@ import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -72,7 +71,6 @@ def version_number_string(self): # Just fallthrough... import traceback traceback.print_exc() - pass # Use None to signify that we are not able to grok the version number. return None @@ -241,6 +239,22 @@ def cleanup(): self.expect("help alongaliasna", matching=True, substrs=["'alongaliasna' is an abbreviation for 'help'"]) + @no_debug_info_test + def test_hidden_help(self): + self.expect("help -h", + substrs=["_regexp-bt"]) + + @no_debug_info_test + def test_help_ambiguous(self): + self.expect("help g", + substrs=["Help requested with ambiguous command name, possible completions:", + "gdb-remote", "gui"]) + + @no_debug_info_test + def test_help_unknown_flag(self): + self.expect("help -z", error=True, + substrs=["unknown or ambiguous option"]) + @no_debug_info_test def test_help_format_output(self): """Test that help output reaches TerminalWidth.""" diff --git a/lldb/packages/Python/lldbsuite/test/commands/log/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/log/basic/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/log/basic/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/logging/TestLogging.py b/lldb/packages/Python/lldbsuite/test/commands/log/basic/TestLogging.py similarity index 76% rename from lldb/packages/Python/lldbsuite/test/logging/TestLogging.py rename to lldb/packages/Python/lldbsuite/test/commands/log/basic/TestLogging.py index cafbe437d84d186..5199057cadc15fa 100644 --- a/lldb/packages/Python/lldbsuite/test/logging/TestLogging.py +++ b/lldb/packages/Python/lldbsuite/test/commands/log/basic/TestLogging.py @@ -6,8 +6,6 @@ import os -import time -import string import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -23,21 +21,19 @@ def setUp(self): super(LogTestCase, self).setUp() self.log_file = self.getBuildArtifact("log-file.txt") - def test(self): + def test_file_writing(self): self.build() exe = self.getBuildArtifact("a.out") self.expect("file " + exe, patterns=["Current executable set to .*a.out"]) - log_file = os.path.join(self.getBuildDir(), "lldb-commands-log.txt") - - if (os.path.exists(log_file)): - os.remove(log_file) + if (os.path.exists(self.log_file)): + os.remove(self.log_file) # By default, Debugger::EnableLog() will set log options to # PREPEND_THREAD_NAME + OPTION_THREADSAFE. We don't want the # threadnames here, so we enable just threadsafe (-t). - self.runCmd("log enable -t -f '%s' lldb commands" % (log_file)) + self.runCmd("log enable -t -f '%s' lldb commands" % (self.log_file)) self.runCmd("command alias bp breakpoint") @@ -47,12 +43,12 @@ def test(self): self.runCmd("log disable lldb") - self.assertTrue(os.path.isfile(log_file)) + self.assertTrue(os.path.isfile(self.log_file)) - f = open(log_file) + f = open(self.log_file) log_lines = f.readlines() f.close() - os.remove(log_file) + os.remove(self.log_file) self.assertGreater( len(log_lines), @@ -93,3 +89,15 @@ def test_log_append(self): # check that it is still there self.assertEquals(contents.find("bacon"), 0) + + # Enable all log options and check that nothing crashes. + @skipIfWindows + def test_all_log_options(self): + if (os.path.exists(self.log_file)): + os.remove(self.log_file) + + self.runCmd("log enable -v -t -s -T -p -n -S -F -f '%s' lldb commands" % self.log_file) + self.runCmd("help log") + self.runCmd("log disable lldb") + + self.assertTrue(os.path.isfile(self.log_file)) diff --git a/lldb/packages/Python/lldbsuite/test/logging/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/log/basic/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/logging/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/log/basic/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/log/invalid-args/TestInvalidArgsLog.py b/lldb/packages/Python/lldbsuite/test/commands/log/invalid-args/TestInvalidArgsLog.py new file mode 100644 index 000000000000000..4d3c5733598f26d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/log/invalid-args/TestInvalidArgsLog.py @@ -0,0 +1,22 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class InvalidArgsLogTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + def test_enable_empty(self): + self.expect("log enable", error=True, + substrs=["error: log enable takes a log channel and one or more log types."]) + + @no_debug_info_test + def test_disable_empty(self): + self.expect("log disable", error=True, + substrs=["error: log disable takes a log channel and one or more log types."]) + + @no_debug_info_test + def test_timer_empty(self): + self.expect("log timer", error=True, + substrs=["error: Missing subcommand"]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/platform/TestPlatformCommand.py b/lldb/packages/Python/lldbsuite/test/commands/platform/basic/TestPlatformCommand.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/platform/TestPlatformCommand.py rename to lldb/packages/Python/lldbsuite/test/commands/platform/basic/TestPlatformCommand.py index f6f20b0f53a7243..2e1deefe90e7b2f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/platform/TestPlatformCommand.py +++ b/lldb/packages/Python/lldbsuite/test/commands/platform/basic/TestPlatformCommand.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/platform/TestPlatformPython.py b/lldb/packages/Python/lldbsuite/test/commands/platform/basic/TestPlatformPython.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/platform/TestPlatformPython.py rename to lldb/packages/Python/lldbsuite/test/commands/platform/basic/TestPlatformPython.py index b81446f5a58f059..f105847d0bb2282 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/platform/TestPlatformPython.py +++ b/lldb/packages/Python/lldbsuite/test/commands/platform/basic/TestPlatformPython.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/Makefile b/lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/Makefile similarity index 56% rename from lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/Makefile index 13d40a13b3e3a4d..dc1d28d1c031062 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES EXE := AttachResume -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py b/lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/TestAttachResume.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py rename to lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/TestAttachResume.py index 3ec4f9327df76b7..2c402e6a31a5f9c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/TestAttachResume.py +++ b/lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/TestAttachResume.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/attach-resume/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/process/attach/Makefile b/lldb/packages/Python/lldbsuite/test/commands/process/attach/Makefile new file mode 100644 index 000000000000000..8a52f8fcd470ebd --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/process/attach/Makefile @@ -0,0 +1,5 @@ +CXX_SOURCES := main.cpp + +EXE := ProcessAttach + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/TestProcessAttach.py b/lldb/packages/Python/lldbsuite/test/commands/process/attach/TestProcessAttach.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_attach/TestProcessAttach.py rename to lldb/packages/Python/lldbsuite/test/commands/process/attach/TestProcessAttach.py index 6ea04f9c7b9998d..6210ba0eefc88c6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/TestProcessAttach.py +++ b/lldb/packages/Python/lldbsuite/test/commands/process/attach/TestProcessAttach.py @@ -6,7 +6,6 @@ import os -import time import lldb import shutil from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/Makefile b/lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/Makefile similarity index 75% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/Makefile index 3c1f73515eb7cad..a694d36ac0d22e0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/Makefile @@ -1,12 +1,10 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp EXE := AttachDenied all: AttachDenied sign -include $(LEVEL)/Makefile.rules +include Makefile.rules sign: entitlements.plist AttachDenied ifeq ($(OS),Darwin) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/TestAttachDenied.py b/lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/TestAttachDenied.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/TestAttachDenied.py rename to lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/TestAttachDenied.py index b915b541fb4be82..49499554c2e239d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/TestAttachDenied.py +++ b/lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/TestAttachDenied.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/entitlements.plist b/lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/entitlements.plist similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/entitlements.plist rename to lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/entitlements.plist diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_attach/attach_denied/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/attach/attach_denied/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/attach/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/attach/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/Makefile b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/TestLaunchWithShellExpand.py b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/TestLaunchWithShellExpand.py rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py index b1e89421849b9e5..1ba812159fbeaaa 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/TestLaunchWithShellExpand.py +++ b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py @@ -5,8 +5,6 @@ import lldb -import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file1.txt b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file1.txt similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file1.txt rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file1.txt diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file2.txt b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file2.txt similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file2.txt rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file2.txt diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file3.txt b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file3.txt similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file3.txt rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file3.txt diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file4.txy b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file4.txy similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file4.txy rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file4.txy diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file5.tyx b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file5.tyx similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/file5.tyx rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/file5.tyx diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/foo bar b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/foo bar similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/foo bar rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/foo bar diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/launch-with-shellexpand/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/Makefile b/lldb/packages/Python/lldbsuite/test/commands/process/launch/Makefile similarity index 51% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_launch/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/process/launch/Makefile index 313da706b4a2512..eff77274c7ba9a2 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/process/launch/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp #CXX_SOURCES := print-cwd.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/TestProcessLaunch.py b/lldb/packages/Python/lldbsuite/test/commands/process/launch/TestProcessLaunch.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_launch/TestProcessLaunch.py rename to lldb/packages/Python/lldbsuite/test/commands/process/launch/TestProcessLaunch.py index 44452b7ded92c74..a2b27c2e5900e95 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/TestProcessLaunch.py +++ b/lldb/packages/Python/lldbsuite/test/commands/process/launch/TestProcessLaunch.py @@ -4,9 +4,7 @@ from __future__ import print_function -import copy import os -import time import lldb from lldbsuite.test.decorators import * @@ -166,7 +164,6 @@ def test_set_working_dir_existing(self): try: os.remove(out_file_path) os.remove(err_file_path) - pass except OSError: pass @@ -206,4 +203,3 @@ def test_environment_with_special_char(self): self.assertEqual(value, evil_var) process.Continue() self.assertEqual(process.GetState(), lldb.eStateExited, PROCESS_EXITED) - pass diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/input-file.txt b/lldb/packages/Python/lldbsuite/test/commands/process/launch/input-file.txt similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_launch/input-file.txt rename to lldb/packages/Python/lldbsuite/test/commands/process/launch/input-file.txt diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/launch/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_launch/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/launch/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/print_cwd.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/launch/print_cwd.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_launch/print_cwd.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/launch/print_cwd.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_launch/print_env.cpp b/lldb/packages/Python/lldbsuite/test/commands/process/launch/print_env.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/process_launch/print_env.cpp rename to lldb/packages/Python/lldbsuite/test/commands/process/launch/print_env.cpp diff --git a/lldb/packages/Python/lldbsuite/test/quit/TestQuit.py b/lldb/packages/Python/lldbsuite/test/commands/quit/TestQuit.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/quit/TestQuit.py rename to lldb/packages/Python/lldbsuite/test/commands/quit/TestQuit.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/Makefile b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/Makefile similarity index 60% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/Makefile index 1c1be94b3d00ea6..202f88e410e365d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -mmpx -fcheck-pointer-bounds -fuse-ld=bfd -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/TestMPXRegisters.py b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/TestMPXRegisters.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/TestMPXRegisters.py rename to lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/TestMPXRegisters.py index 00802ff895056fc..f61ba59a5fe39eb 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/TestMPXRegisters.py +++ b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/TestMPXRegisters.py @@ -5,10 +5,6 @@ from __future__ import print_function -import os -import sys -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/Makefile b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/Makefile similarity index 59% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/Makefile index aa88c47ff3f652f..202f88e410e365d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -mmpx -fcheck-pointer-bounds -fuse-ld=bfd -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/TestBoundViolation.py b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/TestBoundViolation.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/TestBoundViolation.py rename to lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/TestBoundViolation.py index 2fd2dab0184c373..5b5f6aa19cbf22d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/TestBoundViolation.py +++ b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/TestBoundViolation.py @@ -5,10 +5,6 @@ from __future__ import print_function -import os -import sys -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/mpx_bound_violation/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/register/register/intel_xtended_registers/mpx_bound_violation/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/Makefile b/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/Makefile new file mode 100644 index 000000000000000..d2bc2ba44a0320c --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp a.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/TestRegisters.py b/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/TestRegisters.py similarity index 94% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/TestRegisters.py rename to lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/TestRegisters.py index df6c92ec3614551..44e02335dab5168 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/TestRegisters.py +++ b/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/TestRegisters.py @@ -7,8 +7,6 @@ import os import sys -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -477,3 +475,29 @@ def convenience_registers_with_process_attach(self, test_16bit_regs): if test_16bit_regs: self.expect("expr -- $ax == (($ah << 8) | $al)", substrs=['true']) + + @skipIfiOSSimulator + @skipIf(archs=no_match(['amd64', 'arm', 'i386', 'x86_64'])) + def test_invalid_invocation(self): + self.build() + self.common_setup() + + self.expect("register read -a arg", error=True, + substrs=["the --all option can't be used when registers names are supplied as arguments"]) + + self.expect("register read --set 0 r", error=True, + substrs=["the --set option can't be used when registers names are supplied as arguments"]) + + self.expect("register write a", error=True, + substrs=["register write takes exactly 2 arguments: "]) + self.expect("register write a b c", error=True, + substrs=["register write takes exactly 2 arguments: "]) + + @skipIfiOSSimulator + @skipIf(archs=no_match(['amd64', 'arm', 'i386', 'x86_64'])) + def test_write_unknown_register(self): + self.build() + self.common_setup() + + self.expect("register write blub 1", error=True, + substrs=["error: Register not found for 'blub'."]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/a.cpp b/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/a.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/a.cpp rename to lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/a.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/register/register/register_command/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/reproducer/invalid-args/TestInvalidArgsReproducer.py b/lldb/packages/Python/lldbsuite/test/commands/reproducer/invalid-args/TestInvalidArgsReproducer.py new file mode 100644 index 000000000000000..74db2fc77567c6f --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/reproducer/invalid-args/TestInvalidArgsReproducer.py @@ -0,0 +1,17 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class ReproducerTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @no_debug_info_test + def test_reproducer_generate_invalid_invocation(self): + self.expect("reproducer generate f", error=True, + substrs=["'reproducer generate' takes no arguments"]) + + @no_debug_info_test + def test_reproducer_status_invalid_invocation(self): + self.expect("reproducer status f", error=True, + substrs=["'reproducer status' takes no arguments"]) diff --git a/lldb/packages/Python/lldbsuite/test/commands/settings/Makefile b/lldb/packages/Python/lldbsuite/test/commands/settings/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/settings/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/settings/TestSettings.py b/lldb/packages/Python/lldbsuite/test/commands/settings/TestSettings.py similarity index 92% rename from lldb/packages/Python/lldbsuite/test/settings/TestSettings.py rename to lldb/packages/Python/lldbsuite/test/commands/settings/TestSettings.py index b46e3b4103c6278..de56195ab2ff6c3 100644 --- a/lldb/packages/Python/lldbsuite/test/settings/TestSettings.py +++ b/lldb/packages/Python/lldbsuite/test/commands/settings/TestSettings.py @@ -6,7 +6,6 @@ import os -import time import re import lldb from lldbsuite.test.decorators import * @@ -482,6 +481,45 @@ def test_settings_with_trailing_whitespace(self): substrs=['disassembly-format (format-string) = "foo "']) self.runCmd("settings clear disassembly-format", check=False) + def test_settings_list(self): + # List settings (and optionally test the filter to only show 'target' settings). + self.expect("settings list target", substrs=["language", "arg0", "detach-on-error"]) + self.expect("settings list target", matching=False, substrs=["packet-timeout"]) + self.expect("settings list", substrs=["language", "arg0", "detach-on-error", "packet-timeout"]) + + def test_settings_remove_single(self): + # Set some environment variables and use 'remove' to delete them. + self.runCmd("settings set target.env-vars a=b c=d") + self.expect("settings show target.env-vars", substrs=["a=b", "c=d"]) + self.runCmd("settings remove target.env-vars a") + self.expect("settings show target.env-vars", matching=False, substrs=["a=b"]) + self.expect("settings show target.env-vars", substrs=["c=d"]) + self.runCmd("settings remove target.env-vars c") + self.expect("settings show target.env-vars", matching=False, substrs=["a=b", "c=d"]) + + def test_settings_remove_multiple(self): + self.runCmd("settings set target.env-vars a=b c=d e=f") + self.expect("settings show target.env-vars", substrs=["a=b", "c=d", "e=f"]) + self.runCmd("settings remove target.env-vars a e") + self.expect("settings show target.env-vars", matching=False, substrs=["a=b", "e=f"]) + self.expect("settings show target.env-vars", substrs=["c=d"]) + + def test_settings_remove_nonexistent_value(self): + self.expect("settings remove target.env-vars doesntexist", error=True, + substrs=["no value found named 'doesntexist'"]) + + def test_settings_remove_nonexistent_settings(self): + self.expect("settings remove doesntexist alsodoesntexist", error=True, + substrs=["error: invalid value path 'doesntexist'"]) + + def test_settings_remove_missing_arg(self): + self.expect("settings remove", error=True, + substrs=["'settings remove' takes an array or dictionary item, or"]) + + def test_settings_remove_empty_arg(self): + self.expect("settings remove ''", error=True, + substrs=["'settings remove' command requires a valid variable name"]) + def test_all_settings_exist(self): self.expect("settings show", substrs=["auto-confirm", diff --git a/lldb/packages/Python/lldbsuite/test/settings/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/settings/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/settings/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/settings/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/settings/quoting/Makefile b/lldb/packages/Python/lldbsuite/test/commands/settings/quoting/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/settings/quoting/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/settings/quoting/TestQuoting.py b/lldb/packages/Python/lldbsuite/test/commands/settings/quoting/TestQuoting.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/settings/quoting/TestQuoting.py rename to lldb/packages/Python/lldbsuite/test/commands/settings/quoting/TestQuoting.py index 51d1e81a6396031..441b1cc3c87406e 100644 --- a/lldb/packages/Python/lldbsuite/test/settings/quoting/TestQuoting.py +++ b/lldb/packages/Python/lldbsuite/test/commands/settings/quoting/TestQuoting.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/settings/quoting/main.c b/lldb/packages/Python/lldbsuite/test/commands/settings/quoting/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/settings/quoting/main.c rename to lldb/packages/Python/lldbsuite/test/commands/settings/quoting/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/source/info/TestSourceInfo.py b/lldb/packages/Python/lldbsuite/test/commands/source/info/TestSourceInfo.py new file mode 100644 index 000000000000000..c8308c16011e0cf --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/source/info/TestSourceInfo.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals()) diff --git a/lldb/packages/Python/lldbsuite/test/commands/source/info/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/source/info/main.cpp new file mode 100644 index 000000000000000..7d714900418f9d3 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/source/info/main.cpp @@ -0,0 +1,14 @@ +int bar(); + +int foo() { + return 3; +} + +int main() { + int f = foo() + bar(); + f++; + return f; //%self.expect("source info", substrs=["Lines found in module ", "main.cpp:10"]) + //%self.expect("source info -f main.cpp -c 10", matching=True, substrs=["main.cpp:10"]) + //%self.expect("source info -f main.cpp -c 1", matching=False, substrs=["main.cpp:10"]) + //%self.expect("source info -f main.cpp -l 10", matching=False, substrs=["main.cpp:7"]) +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/source/info/second.cpp b/lldb/packages/Python/lldbsuite/test/commands/source/info/second.cpp new file mode 100644 index 000000000000000..0e068a691a8ebbb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/source/info/second.cpp @@ -0,0 +1,5 @@ +int bar() { + int i = 3; //%self.expect("source info", substrs=["Lines found in module ", "second.cpp:2"]) + return i; //%self.expect("source info", substrs=["Lines found in module ", "second.cpp:3"]) + //%self.expect("source info --name main", substrs=["Lines found in module ", "main.cpp:7", "main.cpp:10"]) +} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/stats/TestStats.py b/lldb/packages/Python/lldbsuite/test/commands/statistics/basic/TestStats.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/stats/TestStats.py rename to lldb/packages/Python/lldbsuite/test/commands/statistics/basic/TestStats.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/stats/main.c b/lldb/packages/Python/lldbsuite/test/commands/statistics/basic/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/stats/main.c rename to lldb/packages/Python/lldbsuite/test/commands/statistics/basic/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/target/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/target/basic/Makefile new file mode 100644 index 000000000000000..b31e594019f6f47 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/target/basic/Makefile @@ -0,0 +1,6 @@ +# Example: +# +# C_SOURCES := b.c +# EXE := b.out + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/TestTargetCommand.py b/lldb/packages/Python/lldbsuite/test/commands/target/basic/TestTargetCommand.py similarity index 55% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_command/TestTargetCommand.py rename to lldb/packages/Python/lldbsuite/test/commands/target/basic/TestTargetCommand.py index 71bfff1d05d4474..c16c6b46dc81035 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/TestTargetCommand.py +++ b/lldb/packages/Python/lldbsuite/test/commands/target/basic/TestTargetCommand.py @@ -3,10 +3,11 @@ """ from __future__ import print_function - +import os +import stat +import tempfile import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -23,25 +24,27 @@ def setUp(self): self.line_b = line_number('b.c', '// Set break point at this line.') self.line_c = line_number('c.c', '// Set break point at this line.') - def test_target_command(self): - """Test some target commands: create, list, select.""" + def buildB(self): + db = {'C_SOURCES': 'b.c', 'EXE': self.getBuildArtifact('b.out')} + self.build(dictionary=db) + self.addTearDownCleanup(dictionary=db) + + def buildAll(self): da = {'C_SOURCES': 'a.c', 'EXE': self.getBuildArtifact('a.out')} self.build(dictionary=da) self.addTearDownCleanup(dictionary=da) - db = {'C_SOURCES': 'b.c', 'EXE': self.getBuildArtifact('b.out')} - self.build(dictionary=db) - self.addTearDownCleanup(dictionary=db) + self.buildB() dc = {'C_SOURCES': 'c.c', 'EXE': self.getBuildArtifact('c.out')} self.build(dictionary=dc) self.addTearDownCleanup(dictionary=dc) + def test_target_command(self): + """Test some target commands: create, list, select.""" + self.buildAll() self.do_target_command() - # rdar://problem/9763907 - # 'target variable' command fails if the target program has been run - @expectedFailureAndroid(archs=['aarch64']) def test_target_variable_command(self): """Test 'target variable' command before and after starting the inferior.""" d = {'C_SOURCES': 'globals.c', 'EXE': self.getBuildArtifact('globals')} @@ -50,7 +53,6 @@ def test_target_variable_command(self): self.do_target_variable_command('globals') - @expectedFailureAndroid(archs=['aarch64']) def test_target_variable_command_no_fail(self): """Test 'target variable' command before and after starting the inferior.""" d = {'C_SOURCES': 'globals.c', 'EXE': self.getBuildArtifact('globals')} @@ -275,3 +277,164 @@ def do_target_variable_command_no_fail(self, exe_name): substrs=[ "my_global_char", "'X'"]) + + @no_debug_info_test + def test_target_stop_hook_disable_enable(self): + self.buildB() + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + + self.expect("target stop-hook disable 1", error=True, substrs=['unknown stop hook id: "1"']) + self.expect("target stop-hook disable blub", error=True, substrs=['invalid stop hook id: "blub"']) + self.expect("target stop-hook enable 1", error=True, substrs=['unknown stop hook id: "1"']) + self.expect("target stop-hook enable blub", error=True, substrs=['invalid stop hook id: "blub"']) + + @no_debug_info_test + def test_target_stop_hook_delete(self): + self.buildB() + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + + self.expect("target stop-hook delete 1", error=True, substrs=['unknown stop hook id: "1"']) + self.expect("target stop-hook delete blub", error=True, substrs=['invalid stop hook id: "blub"']) + + @no_debug_info_test + def test_target_list_args(self): + self.expect("target list blub", error=True, + substrs=["the 'target list' command takes no arguments"]) + + @no_debug_info_test + def test_target_select_no_index(self): + self.expect("target select", error=True, + substrs=["'target select' takes a single argument: a target index"]) + + @no_debug_info_test + def test_target_select_invalid_index(self): + self.runCmd("target delete --all") + self.expect("target select 0", error=True, + substrs=["index 0 is out of range since there are no active targets"]) + self.buildB() + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.expect("target select 1", error=True, + substrs=["index 1 is out of range, valid target indexes are 0 - 0"]) + + + @no_debug_info_test + def test_target_create_multiple_args(self): + self.expect("target create a b", error=True, + substrs=["'target create' takes exactly one executable path"]) + + @no_debug_info_test + def test_target_create_nonexistent_core_file(self): + self.expect("target create -c doesntexist", error=True, + substrs=["core file 'doesntexist' doesn't exist"]) + + # Write only files don't seem to be supported on Windows. + @skipIfWindows + @no_debug_info_test + def test_target_create_unreadable_core_file(self): + tf = tempfile.NamedTemporaryFile() + os.chmod(tf.name, stat.S_IWRITE) + self.expect("target create -c '" + tf.name + "'", error=True, + substrs=["core file '", "' is not readable"]) + + @no_debug_info_test + def test_target_create_nonexistent_sym_file(self): + self.expect("target create -s doesntexist doesntexisteither", error=True, + substrs=["invalid symbol file path 'doesntexist'"]) + + @skipIfWindows + @no_debug_info_test + def test_target_create_invalid_core_file(self): + invalid_core_path = os.path.join(self.getSourceDir(), "invalid_core_file") + self.expect("target create -c '" + invalid_core_path + "'", error=True, + substrs=["Unable to find process plug-in for core file '"]) + + + # Write only files don't seem to be supported on Windows. + @skipIfWindows + @no_debug_info_test + def test_target_create_unreadable_sym_file(self): + tf = tempfile.NamedTemporaryFile() + os.chmod(tf.name, stat.S_IWRITE) + self.expect("target create -s '" + tf.name + "' no_exe", error=True, + substrs=["symbol file '", "' is not readable"]) + + @no_debug_info_test + def test_target_delete_all(self): + self.buildAll() + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.expect("target delete --all") + self.expect("target list", substrs=["No targets."]) + + @no_debug_info_test + def test_target_delete_by_index(self): + self.buildAll() + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("c.out"), CURRENT_EXECUTABLE_SET) + self.expect("target delete 3", error=True, + substrs=["target index 3 is out of range, valid target indexes are 0 - 2"]) + + self.runCmd("target delete 1") + self.expect("target list", matching=False, substrs=["b.out"]) + self.runCmd("target delete 1") + self.expect("target list", matching=False, substrs=["c.out"]) + + self.expect("target delete 1", error=True, + substrs=["target index 1 is out of range, the only valid index is 0"]) + + self.runCmd("target delete 0") + self.expect("target list", matching=False, substrs=["a.out"]) + + self.expect("target delete 0", error=True, substrs=["no targets to delete"]) + self.expect("target delete 1", error=True, substrs=["no targets to delete"]) + + @no_debug_info_test + def test_target_delete_by_index_multiple(self): + self.buildAll() + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("c.out"), CURRENT_EXECUTABLE_SET) + + self.expect("target delete 0 1 2 3", error=True, + substrs=["target index 3 is out of range, valid target indexes are 0 - 2"]) + self.expect("target list", substrs=["a.out", "b.out", "c.out"]) + + self.runCmd("target delete 0 1 2") + self.expect("target list", matching=False, substrs=["a.out", "c.out"]) + + @no_debug_info_test + def test_target_delete_selected(self): + self.buildAll() + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("file " + self.getBuildArtifact("c.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("target select 1") + self.runCmd("target delete") + self.expect("target list", matching=False, substrs=["b.out"]) + self.runCmd("target delete") + self.runCmd("target delete") + self.expect("target list", substrs=["No targets."]) + self.expect("target delete", error=True, substrs=["no target is currently selected"]) + + @no_debug_info_test + def test_target_modules_search_paths_clear(self): + self.buildB() + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("target modules search-paths add foo bar") + self.runCmd("target modules search-paths add foz baz") + self.runCmd("target modules search-paths clear") + self.expect("target list", matching=False, substrs=["bar", "baz"]) + + @no_debug_info_test + def test_target_modules_search_paths_query(self): + self.buildB() + self.runCmd("file " + self.getBuildArtifact("b.out"), CURRENT_EXECUTABLE_SET) + self.runCmd("target modules search-paths add foo bar") + self.expect("target modules search-paths query foo", substrs=["bar"]) + # Query something that doesn't exist. + self.expect("target modules search-paths query faz", substrs=["faz"]) + + # Invalid arguments. + self.expect("target modules search-paths query faz baz", error=True, + substrs=["query requires one argument"]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/a.c b/lldb/packages/Python/lldbsuite/test/commands/target/basic/a.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_command/a.c rename to lldb/packages/Python/lldbsuite/test/commands/target/basic/a.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/b.c b/lldb/packages/Python/lldbsuite/test/commands/target/basic/b.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_command/b.c rename to lldb/packages/Python/lldbsuite/test/commands/target/basic/b.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/c.c b/lldb/packages/Python/lldbsuite/test/commands/target/basic/c.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_command/c.c rename to lldb/packages/Python/lldbsuite/test/commands/target/basic/c.c diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/globals.c b/lldb/packages/Python/lldbsuite/test/commands/target/basic/globals.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_command/globals.c rename to lldb/packages/Python/lldbsuite/test/commands/target/basic/globals.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/target/basic/invalid_core_file b/lldb/packages/Python/lldbsuite/test/commands/target/basic/invalid_core_file new file mode 100644 index 000000000000000..39802f6428047a6 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/target/basic/invalid_core_file @@ -0,0 +1 @@ +stub diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/Makefile b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/Makefile similarity index 79% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/Makefile rename to lldb/packages/Python/lldbsuite/test/commands/target/create-deps/Makefile index 15cb0b64f218eff..aa9922b390a7064 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/Makefile @@ -1,11 +1,9 @@ -LEVEL := ../../make - LIB_PREFIX := load_ LD_EXTRAS := -L. -l$(LIB_PREFIX)a CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules a.out: lib_a diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/TestTargetCreateDeps.py b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/TestTargetCreateDeps.py similarity index 84% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/TestTargetCreateDeps.py rename to lldb/packages/Python/lldbsuite/test/commands/target/create-deps/TestTargetCreateDeps.py index a3831f10c75f019..2d96433b7d467c6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/TestTargetCreateDeps.py +++ b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/TestTargetCreateDeps.py @@ -30,7 +30,10 @@ def has_exactly_one_image(self, matching, msg=""): self.expect( "image list", msg, matching=should_match, substrs=['[ 1]']) - @expectedFailureAll(oslist=["linux"]) #linux does not support loading dependent files + + @expectedFailureAll(oslist=["linux"], + triple=no_match(".*-android")) + #linux does not support loading dependent files, but android does @expectedFailureNetBSD def test_dependents_implicit_default_exe(self): """Test default behavior""" @@ -38,7 +41,9 @@ def test_dependents_implicit_default_exe(self): self.runCmd("target create " + exe, CURRENT_EXECUTABLE_SET) self.has_exactly_one_image(False) - @expectedFailureAll(oslist=["linux"]) #linux does not support loading dependent files + @expectedFailureAll(oslist=["linux"], + triple=no_match(".*-android")) + #linux does not support loading dependent files, but android does @expectedFailureNetBSD def test_dependents_explicit_default_exe(self): """Test default behavior""" @@ -52,7 +57,9 @@ def test_dependents_explicit_true_exe(self): self.runCmd("target create -dtrue " + exe, CURRENT_EXECUTABLE_SET) self.has_exactly_one_image(True) - @expectedFailureAll(oslist=["linux"]) #linux does not support loading dependent files + @expectedFailureAll(oslist=["linux"], + triple=no_match(".*-android")) + #linux does not support loading dependent files, but android does @expectedFailureNetBSD def test_dependents_explicit_false_exe(self): """Test default behavior""" @@ -66,6 +73,7 @@ def test_dependents_implicit_false_exe(self): self.runCmd("target create -d " + exe, CURRENT_EXECUTABLE_SET) self.has_exactly_one_image(True) + @expectedFailureAndroid # android will return mutiple images def test_dependents_implicit_default_lib(self): ctx = self.platformContext dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension @@ -87,7 +95,9 @@ def test_dependents_explicit_true_lib(self): self.runCmd("target create -dtrue " + lib, CURRENT_EXECUTABLE_SET) self.has_exactly_one_image(True) - @expectedFailureAll(oslist=["linux"]) #linux does not support loading dependent files + @expectedFailureAll(oslist=["linux"], + triple=no_match(".*-android")) + #linux does not support loading dependent files, but android does @expectedFailureNetBSD def test_dependents_explicit_false_lib(self): ctx = self.platformContext diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/a.cpp b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/a.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/a.cpp rename to lldb/packages/Python/lldbsuite/test/commands/target/create-deps/a.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/a.mk b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/a.mk similarity index 64% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/a.mk rename to lldb/packages/Python/lldbsuite/test/commands/target/create-deps/a.mk index f199bfed5b0da2f..80756bbe8f29aac 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/a.mk +++ b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/a.mk @@ -1,9 +1,7 @@ -LEVEL := ../../make - LIB_PREFIX := load_ DYLIB_NAME := $(LIB_PREFIX)a DYLIB_CXX_SOURCES := a.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/target/create-deps/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/target_create_deps/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/target/create-deps/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/Makefile b/lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/TestNoSuchArch.py b/lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/TestNoSuchArch.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/TestNoSuchArch.py rename to lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/TestNoSuchArch.py diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/target/create-no-such-arch/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/Makefile b/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/Makefile new file mode 100644 index 000000000000000..aa5f222c08e3167 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/Makefile @@ -0,0 +1,4 @@ +C_SOURCES := main.c +CFLAGS_EXTRAS += -std=c99 + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/TestStopHooks.py b/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/TestStopHooks.py new file mode 100644 index 000000000000000..b8f04915563e463 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/TestStopHooks.py @@ -0,0 +1,45 @@ +""" +Test that stop hooks trigger on "step-out" +""" + +from __future__ import print_function + + +import lldb +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.lldbtest import * + + +class TestStopHooks(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + # If your test case doesn't stress debug info, the + # set this to true. That way it won't be run once for + # each debug info format. + NO_DEBUG_INFO_TESTCASE = True + + def test_stop_hooks_step_out(self): + """Test that stop hooks fire on step-out.""" + self.build() + self.main_source_file = lldb.SBFileSpec("main.c") + self.step_out_test() + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + + def step_out_test(self): + (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self, + "Set a breakpoint here", self.main_source_file) + + interp = self.dbg.GetCommandInterpreter() + result = lldb.SBCommandReturnObject() + interp.HandleCommand("target stop-hook add -o 'expr g_var++'", result) + self.assertTrue(result.Succeeded, "Set the target stop hook") + thread.StepOut() + var = target.FindFirstGlobalVariable("g_var") + self.assertTrue(var.IsValid()) + self.assertEqual(var.GetValueAsUnsigned(), 1, "Updated g_var") + + diff --git a/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/main.c b/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/main.c new file mode 100644 index 000000000000000..d08ad14776b5adc --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/target/stop-hooks/main.c @@ -0,0 +1,14 @@ +#include + +static int g_var = 0; + +int step_out_of_me() +{ + return g_var; // Set a breakpoint here and step out. +} + +int +main() +{ + return step_out_of_me(); +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/version/TestVersion.py b/lldb/packages/Python/lldbsuite/test/commands/version/TestVersion.py new file mode 100644 index 000000000000000..ec449fd0c39e896 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/version/TestVersion.py @@ -0,0 +1,22 @@ +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class VersionTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + + @no_debug_info_test + def test_version(self): + # Should work even when people patch the output, + # so let's just assume that every vendor at least mentions + # 'lldb' in their version string. + self.expect("version", substrs=['lldb']) + + @no_debug_info_test + def test_version_invalid_invocation(self): + self.expect("version a", error=True, + substrs=['the version command takes no arguments.']) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/.categories b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/.categories similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/.categories rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/.categories diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/Makefile new file mode 100644 index 000000000000000..de4ec12b13cbce3 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/Makefile @@ -0,0 +1,4 @@ +ENABLE_THREADS := YES +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/TestWatchLocation.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/TestWatchLocation.py index 823f26b4cdbed24..da993c049d32fdd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/TestWatchLocation.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.decorators import * @@ -41,8 +39,8 @@ def setUp(self): @expectedFailureAll(triple=re.compile('^mips')) # SystemZ and PowerPC also currently supports only one H/W watchpoint @expectedFailureAll(archs=['powerpc64le', 's390x']) - @skipIfDarwin @expectedFailureNetBSD + @skipIfDarwin def test_hello_watchlocation(self): """Test watching a location with '-s size' option.""" self.build(dictionary=self.d) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchlocation/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/TestMyFirstWatchpoint.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/TestMyFirstWatchpoint.py index bebcc07427011c1..178507dbdf3cbe1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/TestMyFirstWatchpoint.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -34,7 +32,6 @@ def setUp(self): @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") - @expectedFailureNetBSD @add_test_categories(["basic_process"]) def test_hello_watchpoint_using_watchpoint_set(self): """Test a simple sequence of watchpoint creation and watchpoint hit.""" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/hello_watchpoint/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/TestWatchpointMultipleSlots.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/TestWatchpointMultipleSlots.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/TestWatchpointMultipleSlots.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/TestWatchpointMultipleSlots.py index 22dc19ed322ff7a..589e2a3393b2ef0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/TestWatchpointMultipleSlots.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/TestWatchpointMultipleSlots.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/multi_watchpoint_slots/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/TestMultipleHits.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/TestMultipleHits.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/TestMultipleHits.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/TestMultipleHits.py index 73757ae40b74047..59f3d9f716f143a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/TestMultipleHits.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/TestMultipleHits.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -23,7 +21,6 @@ class MultipleHitsTestCase(TestBase): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") @skipIf(bugnumber="llvm.org/pr30758", oslist=["linux"], archs=["arm", "aarch64", "powerpc64le"]) @skipIfwatchOS - @expectedFailureNetBSD def test(self): self.build() exe = self.getBuildArtifact("a.out") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_hits/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/Makefile new file mode 100644 index 000000000000000..de4ec12b13cbce3 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/Makefile @@ -0,0 +1,4 @@ +ENABLE_THREADS := YES +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py index 40f18002c6408f4..90a0b207f64fa33 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.decorators import * @@ -23,7 +21,7 @@ class WatchpointForMultipleThreadsTestCase(TestBase): @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") - @skipIfNetBSD + @expectedFailureNetBSD def test_watchpoint_before_thread_start(self): """Test that we can hit a watchpoint we set before starting another thread""" self.do_watchpoint_test("Before running the thread") @@ -31,7 +29,7 @@ def test_watchpoint_before_thread_start(self): @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") - @skipIfNetBSD + @expectedFailureNetBSD def test_watchpoint_after_thread_start(self): """Test that we can hit a watchpoint we set after starting another thread""" self.do_watchpoint_test("After running the thread") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/multiple_threads/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/TestStepOverWatchpoint.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/TestStepOverWatchpoint.py index bfd9c0d72f29dc5..e0c77b4ea6be09a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/TestStepOverWatchpoint.py @@ -25,7 +25,6 @@ class TestStepOverWatchpoint(TestBase): # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) @expectedFailureAll(oslist=["ios", "watchos", "tvos", "bridgeos"], bugnumber="") # watchpoint tests aren't working on arm64 - @expectedFailureNetBSD @add_test_categories(["basic_process"]) def test(self): """Test stepping over watchpoints.""" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/step_over_watchpoint/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/TestWatchedVarHitWhenInScope.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/TestWatchedVarHitWhenInScope.py index b2f267364dd01e2..79cb5ae47617d0c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/TestWatchedVarHitWhenInScope.py @@ -6,8 +6,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/variable_out_of_scope/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/TestWatchpointCommands.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/TestWatchpointCommands.py index ce2509aa4529654..b17d28082cea5c7 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/TestWatchpointCommands.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -41,7 +39,6 @@ def setUp(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_rw_watchpoint(self): """Test read_write watchpoint and expect to stop two times.""" self.build(dictionary=self.d) @@ -170,7 +167,6 @@ def test_rw_watchpoint_delete(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_rw_watchpoint_set_ignore_count(self): """Test watchpoint ignore count and expect to not to stop at all.""" self.build(dictionary=self.d) @@ -231,7 +227,6 @@ def test_rw_watchpoint_set_ignore_count(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_rw_disable_after_first_stop(self): """Test read_write watchpoint but disable it after the first stop.""" self.build(dictionary=self.d) @@ -302,7 +297,6 @@ def test_rw_disable_after_first_stop(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_rw_disable_then_enable(self): """Test read_write watchpoint, disable initially, then enable it.""" self.build(dictionary=self.d) diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/TestWatchpointCommandLLDB.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/TestWatchpointCommandLLDB.py index 52998c7c657a706..1919602f0c8bcbf 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/TestWatchpointCommandLLDB.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -36,7 +34,8 @@ def setUp(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], - bugnumber="llvm.org/pr27710") + triple=no_match(".*-android"), + bugnumber="llvm.org/pr27710") # work on android @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") @@ -105,11 +104,11 @@ def test_watchpoint_command(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], - bugnumber="llvm.org/pr27710") + triple=no_match(".*-android"), + bugnumber="llvm.org/pr27710") # work on android @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") - @expectedFailureNetBSD def test_watchpoint_command_can_disable_a_watchpoint(self): """Test that 'watchpoint command' action can disable a watchpoint after it is triggered.""" self.build(dictionary=self.d) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/TestWatchpointCommandPython.py similarity index 97% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/TestWatchpointCommandPython.py index 431298a9f997577..e7e17a982de9f11 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/TestWatchpointCommandPython.py @@ -6,7 +6,6 @@ import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -40,7 +39,8 @@ def setUp(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], - bugnumber="llvm.org/pr27710") + triple=no_match(".*-android"), + bugnumber="llvm.org/pr27710") # work on android @expectedFailureNetBSD def test_watchpoint_command(self): """Test 'watchpoint command'.""" @@ -111,7 +111,8 @@ def test_watchpoint_command(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], - bugnumber="llvm.org/pr27710") + triple=no_match(".*-android"), + bugnumber="llvm.org/pr27710") # work on android @expectedFailureNetBSD def test_continue_in_watchpoint_command(self): """Test continue in a watchpoint command.""" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/watchpoint_command.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/watchpoint_command.py similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/watchpoint_command.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/command/watchpoint_command.py diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/Makefile new file mode 100644 index 000000000000000..99998b20bcb0502 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/TestWatchpointConditionCmd.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/TestWatchpointConditionCmd.py index b4b489e89485fc1..edd1cfba26ff9dc 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/TestWatchpointConditionCmd.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -36,6 +34,7 @@ def setUp(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], + triple=no_match(".*-android"), bugnumber="llvm.org/pr27710") @expectedFailureAll( oslist=["windows"], diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/condition/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/TestWatchpointDisable.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/TestWatchpointDisable.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/TestWatchpointDisable.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/TestWatchpointDisable.py index bc02bc06d405d27..7acf4e3ff655fe5 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/TestWatchpointDisable.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/TestWatchpointDisable.py @@ -2,7 +2,6 @@ Test that the SBWatchpoint::SetEnable API works. """ -import os import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * @@ -27,7 +26,6 @@ def test_disable_works (self): @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") - @expectedFailureNetBSD def test_disable_enable_works (self): """Set a watchpoint, disable it, and make sure it doesn't get hit.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_disable/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/TestWatchpointEvents.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/TestWatchpointEvents.py index cedfad9b566f5d2..c14961c8e8f4eee 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/TestWatchpointEvents.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -25,6 +23,7 @@ def setUp(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], + triple=no_match(".*-android"), bugnumber="llvm.org/pr27710") @expectedFailureAll( oslist=["windows"], diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_events/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/TestValueOfVectorVariable.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/TestValueOfVectorVariable.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/TestValueOfVectorVariable.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/TestValueOfVectorVariable.py index 5b72f5edda74eea..4964fbcb217f9c9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/TestValueOfVectorVariable.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/TestValueOfVectorVariable.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_on_vectors/main.c diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/Makefile new file mode 100644 index 000000000000000..de4ec12b13cbce3 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/Makefile @@ -0,0 +1,4 @@ +ENABLE_THREADS := YES +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py similarity index 99% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py index abe678629023bc4..7a00244309af5de 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/main.cpp similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/main.cpp rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_set_command/main.cpp diff --git a/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/Makefile b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/TestWatchpointSizes.py similarity index 98% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/TestWatchpointSizes.py index 7a1abbdae5472bf..bcfc2a45883cb45 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py +++ b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/TestWatchpointSizes.py @@ -7,8 +7,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -36,7 +34,6 @@ def setUp(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_byte_size_watchpoints_with_byte_selection(self): """Test to selectively watch different bytes in a 8-byte array.""" self.run_watchpoint_size_test('byteArray', 8, '1') @@ -46,7 +43,6 @@ def test_byte_size_watchpoints_with_byte_selection(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_two_byte_watchpoints_with_word_selection(self): """Test to selectively watch different words in an 8-byte word array.""" self.run_watchpoint_size_test('wordArray', 4, '2') @@ -56,7 +52,6 @@ def test_two_byte_watchpoints_with_word_selection(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_four_byte_watchpoints_with_dword_selection(self): """Test to selectively watch two double words in an 8-byte dword array.""" self.run_watchpoint_size_test('dwordArray', 2, '4') diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/main.c b/lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/main.c similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/main.c rename to lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_size/main.c diff --git a/lldb/packages/Python/lldbsuite/test/concurrent_base.py b/lldb/packages/Python/lldbsuite/test/concurrent_base.py index 574b305afcbe35a..1a3aa79799737c7 100644 --- a/lldb/packages/Python/lldbsuite/test/concurrent_base.py +++ b/lldb/packages/Python/lldbsuite/test/concurrent_base.py @@ -14,8 +14,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/configuration.py b/lldb/packages/Python/lldbsuite/test/configuration.py index c6cec1a881bf720..8bd17feacb130bf 100644 --- a/lldb/packages/Python/lldbsuite/test/configuration.py +++ b/lldb/packages/Python/lldbsuite/test/configuration.py @@ -12,8 +12,6 @@ # System modules import os -import platform -import subprocess # Third-party modules @@ -45,6 +43,9 @@ arch = None # Must be initialized after option parsing compiler = None # Must be initialized after option parsing +# The overriden dwarf verison. +dwarf_version = 0 + # Path to the FileCheck testing tool. Not optional. filecheck = None @@ -56,13 +57,6 @@ # The filters (testclass.testmethod) used to admit tests into our test suite. filters = [] -# By default, we skip long running test case. Use '-l' option to override. -skip_long_running_test = True - -# Parsable mode silences headers, and any other output this script might generate, and instead -# prints machine-readable output similar to what clang tests produce. -parsable = False - # The regular expression pattern to match against eligible filenames as # our test cases. regexp = None @@ -112,20 +106,16 @@ # The base directory in which the tests are being built. test_build_dir = None +# The clang module cache directory used by lldb. +module_cache_dir = None + # The only directory to scan for tests. If multiple test directories are # specified, and an exclusive test subdirectory is specified, the latter option # takes precedence. exclusive_test_subdir = None -# Parallel execution settings -is_inferior_test_runner = False -num_threads = None -no_multiprocess_test_runner = False -test_runner_name = None - # Test results handling globals results_filename = None -results_port = None results_formatter_name = None results_formatter_object = None results_formatter_options = None @@ -133,7 +123,6 @@ # Test rerun configuration vars rerun_all_issues = False -rerun_max_file_threhold = 0 # The names of all tests. Used to assert we don't have two tests with the # same base name. diff --git a/lldb/packages/Python/lldbsuite/test/darwin_log.py b/lldb/packages/Python/lldbsuite/test/darwin_log.py index 8756eca3016a78b..9d473facb093022 100644 --- a/lldb/packages/Python/lldbsuite/test/darwin_log.py +++ b/lldb/packages/Python/lldbsuite/test/darwin_log.py @@ -6,7 +6,6 @@ from __future__ import print_function import json -import os import platform import re import sys diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py index 7f3eac363c08c57..17b97d572bddf81 100644 --- a/lldb/packages/Python/lldbsuite/test/decorators.py +++ b/lldb/packages/Python/lldbsuite/test/decorators.py @@ -2,9 +2,8 @@ from __future__ import print_function # System modules -from distutils.version import LooseVersion, StrictVersion +from distutils.version import LooseVersion from functools import wraps -import inspect import os import platform import re @@ -17,8 +16,6 @@ import unittest2 # LLDB modules -import use_lldb_suite - import lldb from . import configuration from . import test_categories @@ -197,11 +194,9 @@ def fn(self): macos_version[0], macos_version[1], platform.mac_ver()[0]))) - skip_for_dwarf_version = ( - dwarf_version is None) or ( - (self.getDebugInfo() is 'dwarf') and - _check_expected_version( - dwarf_version[0], dwarf_version[1], self.getDwarfVersion())) + skip_for_dwarf_version = (dwarf_version is None) or ( + _check_expected_version(dwarf_version[0], dwarf_version[1], + self.getDwarfVersion())) # For the test to be skipped, all specified (e.g. not None) parameters must be True. # An unspecified parameter means "any", so those are marked skip by default. And we skip @@ -596,7 +591,6 @@ def skipIfWindows(func): """Decorate the item to skip tests that should be skipped on Windows.""" return skipIfPlatform(["windows"])(func) - def skipUnlessWindows(func): """Decorate the item to skip tests that should be skipped on any non-Windows platform.""" return skipUnlessPlatform(["windows"])(func) @@ -606,6 +600,10 @@ def skipUnlessDarwin(func): """Decorate the item to skip tests that should be skipped on any non Darwin platform.""" return skipUnlessPlatform(lldbplatformutil.getDarwinOSTriples())(func) +def skipUnlessTargetAndroid(func): + return unittest2.skipUnless(lldbplatformutil.target_is_android(), + "requires target to be Android")(func) + def skipIfHostIncompatibleWithRemote(func): """Decorate the item to skip tests if binaries built on this host are incompatible.""" @@ -644,7 +642,7 @@ def skipUnlessPlatform(oslist): "requires one of %s" % (", ".join(oslist))) -def skipIfTargetAndroid(api_levels=None, archs=None): +def skipIfTargetAndroid(bugnumber=None, api_levels=None, archs=None): """Decorator to skip tests when the target is Android. Arguments: @@ -657,7 +655,8 @@ def skipIfTargetAndroid(api_levels=None, archs=None): _skip_for_android( "skipping for android", api_levels, - archs)) + archs), + bugnumber) def skipUnlessSupportedTypeAttribute(attr): """Decorate the item to skip test unless Clang supports type __attribute__(attr).""" @@ -784,13 +783,18 @@ def is_compiler_with_address_sanitizer(self): return None return skipTestIfFn(is_compiler_with_address_sanitizer)(func) -def skipIfXmlSupportMissing(func): +def _get_bool_config_skip_if_decorator(key): config = lldb.SBDebugger.GetBuildConfiguration() - xml = config.GetValueForKey("xml") - + value_node = config.GetValueForKey(key) fail_value = True # More likely to notice if something goes wrong - have_xml = xml.GetValueForKey("value").GetBooleanValue(fail_value) - return unittest2.skipIf(not have_xml, "requires xml support")(func) + have = value_node.GetValueForKey("value").GetBooleanValue(fail_value) + return unittest2.skipIf(not have, "requires " + key) + +def skipIfCursesSupportMissing(func): + return _get_bool_config_skip_if_decorator("curses")(func) + +def skipIfXmlSupportMissing(func): + return _get_bool_config_skip_if_decorator("xml")(func) def skipIfLLVMTargetMissing(target): config = lldb.SBDebugger.GetBuildConfiguration() @@ -820,9 +824,10 @@ def is_feature_enabled(self): return "%s is not supported on this system." % feature return skipTestIfFn(is_feature_enabled) -def skipIfSanitized(func): +def skipIfAsan(func): """Skip this test if the environment is set up to run LLDB itself under ASAN.""" - def is_sanitized(): - return (('DYLD_INSERT_LIBRARIES' in os.environ) and - 'libclang_rt.asan' in os.environ['DYLD_INSERT_LIBRARIES']) - return skipTestIfFn(is_sanitized)(func) + def is_asan(): + if ('ASAN_OPTIONS' in os.environ): + return "ASAN unsupported" + return None + return skipTestIfFn(is_asan)(func) diff --git a/lldb/packages/Python/lldbsuite/test/dosep.py b/lldb/packages/Python/lldbsuite/test/dosep.py deleted file mode 100644 index 21010c28a78c088..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/dosep.py +++ /dev/null @@ -1,1770 +0,0 @@ -""" -Run the test suite using a separate process for each test file. - -Each test will run with a time limit of 10 minutes by default. - -Override the default time limit of 10 minutes by setting -the environment variable LLDB_TEST_TIMEOUT. - -E.g., export LLDB_TEST_TIMEOUT=10m - -Override the time limit for individual tests by setting -the environment variable LLDB_[TEST NAME]_TIMEOUT. - -E.g., export LLDB_TESTCONCURRENTEVENTS_TIMEOUT=2m - -Set to "0" to run without time limit. - -E.g., export LLDB_TEST_TIMEOUT=0 -or export LLDB_TESTCONCURRENTEVENTS_TIMEOUT=0 - -To collect core files for timed out tests, -do the following before running dosep.py - -OSX -ulimit -c unlimited -sudo sysctl -w kern.corefile=core.%P - -Linux: -ulimit -c unlimited -echo core.%p | sudo tee /proc/sys/kernel/core_pattern -""" - -from __future__ import absolute_import -from __future__ import print_function - -# system packages and modules -import asyncore -import distutils.version -import fnmatch -import multiprocessing -import multiprocessing.pool -import os -import platform -import re -import signal -import sys -import threading - -from six import StringIO -from six.moves import queue - -# Our packages and modules -import lldbsuite -import lldbsuite.support.seven as seven - -from . import configuration -from . import dotest_args -from lldbsuite.support import optional_with -from lldbsuite.test_event import dotest_channels -from lldbsuite.test_event.event_builder import EventBuilder -from lldbsuite.test_event import formatter - -from .test_runner import process_control - -# Status codes for running command with timeout. -eTimedOut, ePassed, eFailed = 124, 0, 1 - -g_session_dir = None -g_runner_context = None -output_lock = None -test_counter = None -total_tests = None -test_name_len = None -dotest_options = None -RESULTS_FORMATTER = None -RUNNER_PROCESS_ASYNC_MAP = None -RESULTS_LISTENER_CHANNEL = None - -"""Contains an optional function pointer that can return the worker index - for the given thread/process calling it. Returns a 0-based index.""" -GET_WORKER_INDEX = None - - -def setup_global_variables( - lock, counter, total, name_len, options, worker_index_map): - global output_lock, test_counter, total_tests, test_name_len - global dotest_options - output_lock = lock - test_counter = counter - total_tests = total - test_name_len = name_len - dotest_options = options - - if worker_index_map is not None: - # We'll use the output lock for this to avoid sharing another lock. - # This won't be used much. - index_lock = lock - - def get_worker_index_use_pid(): - """Returns a 0-based, process-unique index for the worker.""" - pid = os.getpid() - with index_lock: - if pid not in worker_index_map: - worker_index_map[pid] = len(worker_index_map) - return worker_index_map[pid] - - global GET_WORKER_INDEX - GET_WORKER_INDEX = get_worker_index_use_pid - - -def report_test_failure(name, command, output, timeout): - global output_lock - with output_lock: - if not (RESULTS_FORMATTER and RESULTS_FORMATTER.is_using_terminal()): - print(file=sys.stderr) - print(output, file=sys.stderr) - if timeout: - timeout_str = " (TIMEOUT)" - else: - timeout_str = "" - print("[%s FAILED]%s" % (name, timeout_str), file=sys.stderr) - print("Command invoked: %s" % ' '.join(command), file=sys.stderr) - update_progress(name) - - -def report_test_pass(name, output): - global output_lock - with output_lock: - update_progress(name) - - -def update_progress(test_name=""): - global output_lock, test_counter, total_tests, test_name_len - with output_lock: - counter_len = len(str(total_tests)) - if not (RESULTS_FORMATTER and RESULTS_FORMATTER.is_using_terminal()): - sys.stderr.write( - "\r%*d out of %d test suites processed - %-*s" % - (counter_len, test_counter.value, total_tests, - test_name_len.value, test_name)) - if len(test_name) > test_name_len.value: - test_name_len.value = len(test_name) - test_counter.value += 1 - sys.stdout.flush() - sys.stderr.flush() - - -def parse_test_results(output): - passes = 0 - failures = 0 - unexpected_successes = 0 - for result in output: - pass_count = re.search("^RESULT:.*([0-9]+) passes", - result, re.MULTILINE) - fail_count = re.search("^RESULT:.*([0-9]+) failures", - result, re.MULTILINE) - error_count = re.search("^RESULT:.*([0-9]+) errors", - result, re.MULTILINE) - unexpected_success_count = re.search( - "^RESULT:.*([0-9]+) unexpected successes", result, re.MULTILINE) - if pass_count is not None: - passes = passes + int(pass_count.group(1)) - if fail_count is not None: - failures = failures + int(fail_count.group(1)) - if unexpected_success_count is not None: - unexpected_successes = unexpected_successes + \ - int(unexpected_success_count.group(1)) - if error_count is not None: - failures = failures + int(error_count.group(1)) - return passes, failures, unexpected_successes - - -class DoTestProcessDriver(process_control.ProcessDriver): - """Drives the dotest.py inferior process and handles bookkeeping.""" - - def __init__(self, output_file, output_file_lock, pid_events, file_name, - soft_terminate_timeout): - super(DoTestProcessDriver, self).__init__( - soft_terminate_timeout=soft_terminate_timeout) - self.output_file = output_file - self.output_lock = optional_with.optional_with(output_file_lock) - self.pid_events = pid_events - self.results = None - self.file_name = file_name - - def write(self, content): - with self.output_lock: - self.output_file.write(content) - - def on_process_started(self): - if self.pid_events: - self.pid_events.put_nowait(('created', self.process.pid)) - - def on_process_exited(self, command, output, was_timeout, exit_status): - if self.pid_events: - # No point in culling out those with no exit_status (i.e. - # those we failed to kill). That would just cause - # downstream code to try to kill it later on a Ctrl-C. At - # this point, a best-effort-to-kill already took place. So - # call it destroyed here. - self.pid_events.put_nowait(('destroyed', self.process.pid)) - - # Override the exit status if it was a timeout. - if was_timeout: - exit_status = eTimedOut - - # If we didn't end up with any output, call it empty for - # stdout/stderr. - if output is None: - output = ('', '') - - # Now parse the output. - passes, failures, unexpected_successes = parse_test_results(output) - if exit_status == 0: - # stdout does not have any useful information from 'dotest.py', - # only stderr does. - report_test_pass(self.file_name, output[1]) - else: - report_test_failure( - self.file_name, - command, - output[1], - was_timeout) - - # Save off the results for the caller. - self.results = ( - self.file_name, - exit_status, - passes, - failures, - unexpected_successes) - - def on_timeout_pre_kill(self): - # We're just about to have a timeout take effect. Here's our chance - # to do a pre-kill action. - - # For now, we look to see if the lldbsuite.pre_kill module has a - # runner for our platform. - module_name = "lldbsuite.pre_kill_hook." + platform.system().lower() - import importlib - try: - module = importlib.import_module(module_name) - except ImportError: - # We don't have one for this platform. Skip. - sys.stderr.write("\nwarning: no timeout handler module: " + - module_name + "\n") - return - - # Try to run the pre-kill-hook method. - try: - # Run the pre-kill command. - output_io = StringIO() - module.do_pre_kill(self.pid, g_runner_context, output_io) - - # Write the output to a filename associated with the test file and - # pid. - MAX_UNCOMPRESSED_BYTE_COUNT = 10 * 1024 - - content = output_io.getvalue() - compress_output = len(content) > MAX_UNCOMPRESSED_BYTE_COUNT - basename = "{}-{}.sample".format(self.file_name, self.pid) - sample_path = os.path.join(g_session_dir, basename) - - if compress_output: - # Write compressed output into a .zip file. - from zipfile import ZipFile, ZIP_DEFLATED - zipfile = sample_path + ".zip" - with ZipFile(zipfile, "w", ZIP_DEFLATED) as sample_zip: - sample_zip.writestr(basename, content) - else: - # Write raw output into a text file. - with open(sample_path, "w") as output_file: - output_file.write(content) - except Exception as e: - sys.stderr.write("caught exception while running " - "pre-kill action: {}\n".format(e)) - return - - def is_exceptional_exit(self): - """Returns whether the process returned a timeout. - - Not valid to call until after on_process_exited() completes. - - @return True if the exit is an exceptional exit (e.g. signal on - POSIX); False otherwise. - """ - if self.results is None: - raise Exception( - "exit status checked before results are available") - return self.process_helper.is_exceptional_exit( - self.results[1]) - - def exceptional_exit_details(self): - if self.results is None: - raise Exception( - "exit status checked before results are available") - return self.process_helper.exceptional_exit_details(self.results[1]) - - def is_timeout(self): - if self.results is None: - raise Exception( - "exit status checked before results are available") - return self.results[1] == eTimedOut - - -def get_soft_terminate_timeout(): - # Defaults to 10 seconds, but can set - # LLDB_TEST_SOFT_TERMINATE_TIMEOUT to a floating point - # number in seconds. This value indicates how long - # the test runner will wait for the dotest inferior to - # handle a timeout via a soft terminate before it will - # assume that failed and do a hard terminate. - - # TODO plumb through command-line option - return float(os.environ.get('LLDB_TEST_SOFT_TERMINATE_TIMEOUT', 10.0)) - - -def want_core_on_soft_terminate(): - # TODO plumb through command-line option - if platform.system() == 'Linux': - return True - else: - return False - - -def send_events_to_collector(events, command): - """Sends the given events to the collector described in the command line. - - @param events the list of events to send to the test event collector. - @param command the inferior command line which contains the details on - how to connect to the test event collector. - """ - if events is None or len(events) == 0: - # Nothing to do. - return - - # Find the port we need to connect to from the --results-port option. - try: - arg_index = command.index("--results-port") + 1 - except ValueError: - # There is no results port, so no way to communicate back to - # the event collector. This is not a problem if we're not - # using event aggregation. - # TODO flag as error once we always use the event system - print( - "INFO: no event collector, skipping post-inferior test " - "event reporting") - return - - if arg_index >= len(command): - raise Exception( - "expected collector port at index {} in {}".format( - arg_index, command)) - event_port = int(command[arg_index]) - - # Create results formatter connected back to collector via socket. - config = formatter.FormatterConfig() - config.port = event_port - formatter_spec = formatter.create_results_formatter(config) - if formatter_spec is None or formatter_spec.formatter is None: - raise Exception( - "Failed to create socket-based ResultsFormatter " - "back to test event collector") - - # Send the events: the port-based event just pickles the content - # and sends over to the server side of the socket. - for event in events: - formatter_spec.formatter.handle_event(event) - - # Cleanup - if formatter_spec.cleanup_func is not None: - formatter_spec.cleanup_func() - - -def send_inferior_post_run_events( - command, worker_index, process_driver, test_filename): - """Sends any test events that should be generated after the inferior runs. - - These events would include timeouts and exceptional (i.e. signal-returning) - process completion results. - - @param command the list of command parameters passed to subprocess.Popen(). - @param worker_index the worker index (possibly None) used to run - this process - @param process_driver the ProcessDriver-derived instance that was used - to run the inferior process. - @param test_filename the full path to the Python test file that is being - run. - """ - if process_driver is None: - raise Exception("process_driver must not be None") - if process_driver.results is None: - # Invalid condition - the results should have been set one way or - # another, even in a timeout. - raise Exception("process_driver.results were not set") - - # The code below fills in the post events struct. If there are any post - # events to fire up, we'll try to make a connection to the socket and - # provide the results. - post_events = [] - - # Handle signal/exceptional exits. - if process_driver.is_exceptional_exit(): - (code, desc) = process_driver.exceptional_exit_details() - post_events.append( - EventBuilder.event_for_job_exceptional_exit( - process_driver.pid, - worker_index, - code, - desc, - test_filename, - command)) - - # Handle timeouts. - if process_driver.is_timeout(): - post_events.append(EventBuilder.event_for_job_timeout( - process_driver.pid, - worker_index, - test_filename, - command)) - - if len(post_events) > 0: - send_events_to_collector(post_events, command) - - -def call_with_timeout( - command, timeout, name, inferior_pid_events, test_filename): - # Add our worker index (if we have one) to all test events - # from this inferior. - worker_index = None - if GET_WORKER_INDEX is not None: - try: - worker_index = GET_WORKER_INDEX() - command.extend([ - "--event-add-entries", - "worker_index={}:int".format(worker_index)]) - except: # pylint: disable=bare-except - # Ctrl-C does bad things to multiprocessing.Manager.dict() - # lookup. Just swallow it. - pass - - # Create the inferior dotest.py ProcessDriver. - soft_terminate_timeout = get_soft_terminate_timeout() - want_core = want_core_on_soft_terminate() - - process_driver = DoTestProcessDriver( - sys.stdout, - output_lock, - inferior_pid_events, - name, - soft_terminate_timeout) - - # Run it with a timeout. - process_driver.run_command_with_timeout(command, timeout, want_core) - - # Return the results. - if not process_driver.results: - # This is truly exceptional. Even a failing or timed out - # binary should have called the results-generation code. - raise Exception("no test results were generated whatsoever") - - # Handle cases where the test inferior cannot adequately provide - # meaningful results to the test event system. - send_inferior_post_run_events( - command, - worker_index, - process_driver, - test_filename) - - return process_driver.results - - -def process_file(test_file, dotest_argv, inferior_pid_events): - """Run tests in the specified file in a subprocess and gather the results.""" - results = [] - base_name = os.path.basename(test_file) - - import __main__ as main - global dotest_options - if not dotest_options.p or re.search(dotest_options.p, base_name): - script_file = main.__file__ - command = ([sys.executable, script_file] + - dotest_argv + - ["-S", dotest_options.session_file_format] + - ["--inferior", "-p", base_name, os.path.dirname(test_file)]) - - timeout_name = os.path.basename(os.path.splitext(base_name)[0]).upper() - - timeout = (os.getenv("LLDB_%s_TIMEOUT" % timeout_name) or - getDefaultTimeout(dotest_options.lldb_platform_name)) - - results.append(call_with_timeout( - command, timeout, base_name, inferior_pid_events, test_file)) - - # result = (name, status, passes, failures, unexpected_successes) - timed_out = [name for name, status, _, _, _ in results - if status == eTimedOut] - passed = [name for name, status, _, _, _ in results - if status == ePassed] - failed = [name for name, status, _, _, _ in results - if status != ePassed] - unexpected_passes = [ - name for name, _, _, _, unexpected_successes in results - if unexpected_successes > 0] - - pass_count = sum([result[2] for result in results]) - fail_count = sum([result[3] for result in results]) - - return ( - timed_out, passed, failed, unexpected_passes, pass_count, fail_count) - -in_q = None -out_q = None - - -def process_dir_worker_multiprocessing( - a_output_lock, a_test_counter, a_total_tests, a_test_name_len, - a_dotest_options, job_queue, result_queue, inferior_pid_events, - worker_index_map): - """Worker thread main loop when in multiprocessing mode. - Takes one directory specification at a time and works on it.""" - - # Shut off interrupt handling in the child process. - signal.signal(signal.SIGINT, signal.SIG_IGN) - if hasattr(signal, 'SIGHUP'): - signal.signal(signal.SIGHUP, signal.SIG_IGN) - - # Setup the global state for the worker process. - setup_global_variables( - a_output_lock, a_test_counter, a_total_tests, a_test_name_len, - a_dotest_options, worker_index_map) - - # Keep grabbing entries from the queue until done. - while not job_queue.empty(): - try: - job = job_queue.get(block=False) - result = process_file(job[0], job[1], job[2], - inferior_pid_events) - result_queue.put(result) - except queue.Empty: - # Fine, we're done. - pass - - -def process_file_worker_multiprocessing_pool(args): - return process_file(*args) - - -def process_file_worker_threading(job_queue, result_queue, inferior_pid_events): - """Worker thread main loop when in threading mode. - - This one supports the hand-rolled pooling support. - - Takes one directory specification at a time and works on it.""" - - # Keep grabbing entries from the queue until done. - while not job_queue.empty(): - try: - job = job_queue.get(block=False) - result = process_file(job[0], job[1], inferior_pid_events) - result_queue.put(result) - except queue.Empty: - # Fine, we're done. - pass - - -def process_file_worker_threading_pool(args): - return process_file(*args) - - -def process_file_mapper_inprocess(args): - """Map adapter for running the subprocess-based, non-threaded test runner. - - @param args the process work item tuple - @return the test result tuple - """ - return process_file(*args) - - -def collect_active_pids_from_pid_events(event_queue): - """ - Returns the set of what should be active inferior pids based on - the event stream. - - @param event_queue a multiprocessing.Queue containing events of the - form: - ('created', pid) - ('destroyed', pid) - - @return set of inferior dotest.py pids activated but never completed. - """ - active_pid_set = set() - while not event_queue.empty(): - pid_event = event_queue.get_nowait() - if pid_event[0] == 'created': - active_pid_set.add(pid_event[1]) - elif pid_event[0] == 'destroyed': - active_pid_set.remove(pid_event[1]) - return active_pid_set - - -def kill_all_worker_processes(workers, inferior_pid_events): - """ - Kills all specified worker processes and their process tree. - - @param workers a list of multiprocess.Process worker objects. - @param inferior_pid_events a multiprocess.Queue that contains - all inferior create and destroy events. Used to construct - the list of child pids still outstanding that need to be killed. - """ - for worker in workers: - worker.terminate() - worker.join() - - # Add all the child test pids created. - active_pid_set = collect_active_pids_from_pid_events( - inferior_pid_events) - for inferior_pid in active_pid_set: - print("killing inferior pid {}".format(inferior_pid)) - os.kill(inferior_pid, signal.SIGKILL) - - -def kill_all_worker_threads(workers, inferior_pid_events): - """ - Kills all specified worker threads and their process tree. - - @param workers a list of multiprocess.Process worker objects. - @param inferior_pid_events a multiprocess.Queue that contains - all inferior create and destroy events. Used to construct - the list of child pids still outstanding that need to be killed. - """ - - # Add all the child test pids created. - active_pid_set = collect_active_pids_from_pid_events( - inferior_pid_events) - for inferior_pid in active_pid_set: - print("killing inferior pid {}".format(inferior_pid)) - os.kill(inferior_pid, signal.SIGKILL) - - # We don't have a way to nuke the threads. However, since we killed - # all the inferiors, and we drained the job queue, this will be - # good enough. Wait cleanly for each worker thread to wrap up. - for worker in workers: - worker.join() - - -def find_test_files_in_dir_tree(dir_root): - """Returns all the test files in the given dir hierarchy. - - @param dir_root the path to the directory to start scanning - for test files. All files in this directory and all its children - directory trees will be searched. - """ - for root, _, files in os.walk(dir_root, topdown=False): - def is_test_filename(test_dir, base_filename): - """Returns True if the given filename matches the test name format. - - @param test_dir the directory to check. Should be absolute or - relative to current working directory. - - @param base_filename the base name of the filename to check for a - dherence to the python test case filename format. - - @return True if name matches the python test case filename format. - """ - # Not interested in symbolically linked files. - if os.path.islink(os.path.join(test_dir, base_filename)): - return False - # Only interested in test files with the "Test*.py" naming pattern. - return (base_filename.startswith("Test") and - base_filename.endswith(".py")) - - for f in files: - if is_test_filename(root, f): - yield os.path.join(root, f) - - -def initialize_global_vars_common(num_threads, test_work_items, session_dir, - runner_context): - global g_session_dir, g_runner_context, total_tests, test_counter - global test_name_len - - total_tests = len(test_work_items) - test_counter = multiprocessing.Value('i', 0) - test_name_len = multiprocessing.Value('i', 0) - g_session_dir = session_dir - g_runner_context = runner_context - if not (RESULTS_FORMATTER and RESULTS_FORMATTER.is_using_terminal()): - print( - "Testing: %d test suites, %d thread%s" % - (total_tests, - num_threads, - (num_threads > 1) * - "s"), - file=sys.stderr) - update_progress() - - -def initialize_global_vars_multiprocessing(num_threads, test_work_items, - session_dir, runner_context): - # Initialize the global state we'll use to communicate with the - # rest of the flat module. - global output_lock - output_lock = multiprocessing.RLock() - - initialize_global_vars_common(num_threads, test_work_items, session_dir, - runner_context) - - -def initialize_global_vars_threading(num_threads, test_work_items, session_dir, - runner_context): - """Initializes global variables used in threading mode. - - @param num_threads specifies the number of workers used. - - @param test_work_items specifies all the work items - that will be processed. - - @param session_dir the session directory where test-run-speciif files are - written. - - @param runner_context a dictionary of platform-related data that is passed - to the timeout pre-kill hook. - """ - # Initialize the global state we'll use to communicate with the - # rest of the flat module. - global output_lock - output_lock = threading.RLock() - - index_lock = threading.RLock() - index_map = {} - - def get_worker_index_threading(): - """Returns a 0-based, thread-unique index for the worker thread.""" - thread_id = threading.current_thread().ident - with index_lock: - if thread_id not in index_map: - index_map[thread_id] = len(index_map) - return index_map[thread_id] - - global GET_WORKER_INDEX - GET_WORKER_INDEX = get_worker_index_threading - - initialize_global_vars_common(num_threads, test_work_items, session_dir, - runner_context) - - -def ctrl_c_loop(main_op_func, done_func, ctrl_c_handler): - """Provides a main loop that is Ctrl-C protected. - - The main loop calls the main_op_func() repeatedly until done_func() - returns true. The ctrl_c_handler() method is called with a single - int parameter that contains the number of times the ctrl_c has been - hit (starting with 1). The ctrl_c_handler() should mutate whatever - it needs to have the done_func() return True as soon as it is desired - to exit the loop. - """ - done = False - ctrl_c_count = 0 - - while not done: - try: - # See if we're done. Start with done check since it is - # the first thing executed after a Ctrl-C handler in the - # following loop. - done = done_func() - if not done: - # Run the main op once. - main_op_func() - - except KeyboardInterrupt: - ctrl_c_count += 1 - ctrl_c_handler(ctrl_c_count) - - -def pump_workers_and_asyncore_map(workers, asyncore_map): - """Prunes out completed workers and maintains the asyncore loop. - - The asyncore loop contains the optional socket listener - and handlers. When all workers are complete, this method - takes care of stopping the listener. It also runs the - asyncore loop for the given async map for 10 iterations. - - @param workers the list of worker Thread/Process instances. - - @param asyncore_map the asyncore threading-aware map that - indicates which channels are in use and still alive. - """ - - # Check on all the workers, removing them from the workers - # list as they complete. - dead_workers = [] - for worker in workers: - # This non-blocking join call is what allows us - # to still receive keyboard interrupts. - worker.join(0.01) - if not worker.is_alive(): - dead_workers.append(worker) - # Clear out the completed workers - for dead_worker in dead_workers: - workers.remove(dead_worker) - - # If there are no more workers and there is a listener, - # close the listener. - global RESULTS_LISTENER_CHANNEL - if len(workers) == 0 and RESULTS_LISTENER_CHANNEL is not None: - RESULTS_LISTENER_CHANNEL.close() - RESULTS_LISTENER_CHANNEL = None - - # Pump the asyncore map if it isn't empty. - if len(asyncore_map) > 0: - asyncore.loop(0.1, False, asyncore_map, 10) - - -def handle_ctrl_c(ctrl_c_count, job_queue, workers, inferior_pid_events, - stop_all_inferiors_func): - """Performs the appropriate ctrl-c action for non-pool parallel test runners - - @param ctrl_c_count starting with 1, indicates the number of times ctrl-c - has been intercepted. The value is 1 on the first intercept, 2 on the - second, etc. - - @param job_queue a Queue object that contains the work still outstanding - (i.e. hasn't been assigned to a worker yet). - - @param workers list of Thread or Process workers. - - @param inferior_pid_events specifies a Queue of inferior process - construction and destruction events. Used to build the list of inferior - processes that should be killed if we get that far. - - @param stop_all_inferiors_func a callable object that takes the - workers and inferior_pid_events parameters (in that order) if a hard - stop is to be used on the workers. - """ - - # Print out which Ctrl-C we're handling. - key_name = [ - "first", - "second", - "third", - "many"] - - if ctrl_c_count < len(key_name): - name_index = ctrl_c_count - 1 - else: - name_index = len(key_name) - 1 - message = "\nHandling {} KeyboardInterrupt".format(key_name[name_index]) - with output_lock: - print(message) - - if ctrl_c_count == 1: - # Remove all outstanding items from the work queue so we stop - # doing any more new work. - while not job_queue.empty(): - try: - # Just drain it to stop more work from being started. - job_queue.get_nowait() - except queue.Empty: - pass - with output_lock: - print("Stopped more work from being started.") - elif ctrl_c_count == 2: - # Try to stop all inferiors, even the ones currently doing work. - stop_all_inferiors_func(workers, inferior_pid_events) - else: - with output_lock: - print("All teardown activities kicked off, should finish soon.") - - -def workers_and_async_done(workers, async_map): - """Returns True if the workers list and asyncore channels are all done. - - @param workers list of workers (threads/processes). These must adhere - to the threading Thread or multiprocessing.Process interface. - - @param async_map the threading-aware asyncore channel map to check - for live channels. - - @return False if the workers list exists and has any entries in it, or - if the async_map exists and has any entries left in it; otherwise, True. - """ - if workers is not None and len(workers) > 0: - # We're not done if we still have workers left. - return False - if async_map is not None and len(async_map) > 0: - return False - # We're done. - return True - - -def multiprocessing_test_runner(num_threads, test_work_items, session_dir, - runner_context): - """Provides hand-wrapped pooling test runner adapter with Ctrl-C support. - - This concurrent test runner is based on the multiprocessing - library, and rolls its own worker pooling strategy so it - can handle Ctrl-C properly. - - This test runner is known to have an issue running on - Windows platforms. - - @param num_threads the number of worker processes to use. - - @param test_work_items the iterable of test work item tuples - to run. - - @param session_dir the session directory where test-run-speciif files are - written. - - @param runner_context a dictionary of platform-related data that is passed - to the timeout pre-kill hook. - """ - - # Initialize our global state. - initialize_global_vars_multiprocessing(num_threads, test_work_items, - session_dir, runner_context) - - # Create jobs. - job_queue = multiprocessing.Queue(len(test_work_items)) - for test_work_item in test_work_items: - job_queue.put(test_work_item) - - result_queue = multiprocessing.Queue(len(test_work_items)) - - # Create queues for started child pids. Terminating - # the multiprocess processes does not terminate the - # child processes they spawn. We can remove this tracking - # if/when we move to having the multiprocess process directly - # perform the test logic. The Queue size needs to be able to - # hold 2 * (num inferior dotest.py processes started) entries. - inferior_pid_events = multiprocessing.Queue(4096) - - # Worker dictionary allows each worker to figure out its worker index. - manager = multiprocessing.Manager() - worker_index_map = manager.dict() - - # Create workers. We don't use multiprocessing.Pool due to - # challenges with handling ^C keyboard interrupts. - workers = [] - for _ in range(num_threads): - worker = multiprocessing.Process( - target=process_file_worker_multiprocessing, - args=(output_lock, - test_counter, - total_tests, - test_name_len, - dotest_options, - job_queue, - result_queue, - inferior_pid_events, - worker_index_map)) - worker.start() - workers.append(worker) - - # Main loop: wait for all workers to finish and wait for - # the socket handlers to wrap up. - ctrl_c_loop( - # Main operation of loop - lambda: pump_workers_and_asyncore_map( - workers, RUNNER_PROCESS_ASYNC_MAP), - - # Return True when we're done with the main loop. - lambda: workers_and_async_done(workers, RUNNER_PROCESS_ASYNC_MAP), - - # Indicate what we do when we receive one or more Ctrl-Cs. - lambda ctrl_c_count: handle_ctrl_c( - ctrl_c_count, job_queue, workers, inferior_pid_events, - kill_all_worker_processes)) - - # Reap the test results. - test_results = [] - while not result_queue.empty(): - test_results.append(result_queue.get(block=False)) - return test_results - - -def map_async_run_loop(future, channel_map, listener_channel): - """Blocks until the Pool.map_async completes and the channel completes. - - @param future an AsyncResult instance from a Pool.map_async() call. - - @param channel_map the asyncore dispatch channel map that should be pumped. - Optional: may be None. - - @param listener_channel the channel representing a listener that should be - closed once the map_async results are available. - - @return the results from the async_result instance. - """ - map_results = None - - done = False - while not done: - # Check if we need to reap the map results. - if map_results is None: - if future.ready(): - # Get the results. - map_results = future.get() - - # Close the runner process listener channel if we have - # one: no more connections will be incoming. - if listener_channel is not None: - listener_channel.close() - - # Pump the asyncore loop if we have a listener socket. - if channel_map is not None: - asyncore.loop(0.01, False, channel_map, 10) - - # Figure out if we're done running. - done = map_results is not None - if channel_map is not None: - # We have a runner process async map. Check if it - # is complete. - if len(channel_map) > 0: - # We still have an asyncore channel running. Not done yet. - done = False - - return map_results - - -def multiprocessing_test_runner_pool(num_threads, test_work_items, session_dir, - runner_context): - # Initialize our global state. - initialize_global_vars_multiprocessing(num_threads, test_work_items, - session_dir, runner_context) - - manager = multiprocessing.Manager() - worker_index_map = manager.dict() - - pool = multiprocessing.Pool( - num_threads, - initializer=setup_global_variables, - initargs=(output_lock, test_counter, total_tests, test_name_len, - dotest_options, worker_index_map)) - - # Start the map operation (async mode). - map_future = pool.map_async( - process_file_worker_multiprocessing_pool, test_work_items) - return map_async_run_loop( - map_future, RUNNER_PROCESS_ASYNC_MAP, RESULTS_LISTENER_CHANNEL) - - -def threading_test_runner(num_threads, test_work_items, session_dir, - runner_context): - """Provides hand-wrapped pooling threading-based test runner adapter - with Ctrl-C support. - - This concurrent test runner is based on the threading - library, and rolls its own worker pooling strategy so it - can handle Ctrl-C properly. - - @param num_threads the number of worker processes to use. - - @param test_work_items the iterable of test work item tuples - to run. - - @param session_dir the session directory where test-run-speciif files are - written. - - @param runner_context a dictionary of platform-related data that is passed - to the timeout pre-kill hook. - """ - - # Initialize our global state. - initialize_global_vars_threading(num_threads, test_work_items, session_dir, - runner_context) - - # Create jobs. - job_queue = queue.Queue() - for test_work_item in test_work_items: - job_queue.put(test_work_item) - - result_queue = queue.Queue() - - # Create queues for started child pids. Terminating - # the threading threads does not terminate the - # child processes they spawn. - inferior_pid_events = queue.Queue() - - # Create workers. We don't use multiprocessing.pool.ThreadedPool - # due to challenges with handling ^C keyboard interrupts. - workers = [] - for _ in range(num_threads): - worker = threading.Thread( - target=process_file_worker_threading, - args=(job_queue, - result_queue, - inferior_pid_events)) - worker.start() - workers.append(worker) - - # Main loop: wait for all workers to finish and wait for - # the socket handlers to wrap up. - ctrl_c_loop( - # Main operation of loop - lambda: pump_workers_and_asyncore_map( - workers, RUNNER_PROCESS_ASYNC_MAP), - - # Return True when we're done with the main loop. - lambda: workers_and_async_done(workers, RUNNER_PROCESS_ASYNC_MAP), - - # Indicate what we do when we receive one or more Ctrl-Cs. - lambda ctrl_c_count: handle_ctrl_c( - ctrl_c_count, job_queue, workers, inferior_pid_events, - kill_all_worker_threads)) - - # Reap the test results. - test_results = [] - while not result_queue.empty(): - test_results.append(result_queue.get(block=False)) - return test_results - - -def threading_test_runner_pool(num_threads, test_work_items, session_dir, - runner_context): - # Initialize our global state. - initialize_global_vars_threading(num_threads, test_work_items, session_dir, - runner_context) - - pool = multiprocessing.pool.ThreadPool(num_threads) - map_future = pool.map_async( - process_file_worker_threading_pool, test_work_items) - - return map_async_run_loop( - map_future, RUNNER_PROCESS_ASYNC_MAP, RESULTS_LISTENER_CHANNEL) - - -def asyncore_run_loop(channel_map): - try: - asyncore.loop(None, False, channel_map) - except: - # Swallow it, we're seeing: - # error: (9, 'Bad file descriptor') - # when the listener channel is closed. Shouldn't be the case. - pass - - -def inprocess_exec_test_runner(test_work_items, session_dir, runner_context): - # Initialize our global state. - initialize_global_vars_multiprocessing(1, test_work_items, session_dir, - runner_context) - - # We're always worker index 0 - def get_single_worker_index(): - return 0 - - global GET_WORKER_INDEX - GET_WORKER_INDEX = get_single_worker_index - - # Run the listener and related channel maps in a separate thread. - # global RUNNER_PROCESS_ASYNC_MAP - global RESULTS_LISTENER_CHANNEL - if RESULTS_LISTENER_CHANNEL is not None: - socket_thread = threading.Thread( - target=lambda: asyncore_run_loop(RUNNER_PROCESS_ASYNC_MAP)) - socket_thread.start() - - # Do the work. - test_results = list(map(process_file_mapper_inprocess, test_work_items)) - - # If we have a listener channel, shut it down here. - if RESULTS_LISTENER_CHANNEL is not None: - # Close down the channel. - RESULTS_LISTENER_CHANNEL.close() - RESULTS_LISTENER_CHANNEL = None - - # Wait for the listener and handlers to complete. - socket_thread.join() - - return test_results - - -def walk_and_invoke(test_files, dotest_argv, num_workers, test_runner_func): - """Invokes the test runner on each test file specified by test_files. - - @param test_files a list of (test_file, full_path_to_test_file) - @param num_workers the number of worker queues working on these test files - @param test_runner_func the test runner configured to run the tests - - @return a tuple of results from the running of the specified tests, - of the form (timed_out, passed, failed, unexpected_successes, pass_count, - fail_count) - """ - # The async_map is important to keep all thread-related asyncore - # channels distinct when we call asyncore.loop() later on. - global RESULTS_LISTENER_CHANNEL, RUNNER_PROCESS_ASYNC_MAP - RUNNER_PROCESS_ASYNC_MAP = {} - - # If we're outputting side-channel test results, create the socket - # listener channel and tell the inferior to send results to the - # port on which we'll be listening. - if RESULTS_FORMATTER is not None: - forwarding_func = RESULTS_FORMATTER.handle_event - RESULTS_LISTENER_CHANNEL = ( - dotest_channels.UnpicklingForwardingListenerChannel( - RUNNER_PROCESS_ASYNC_MAP, "localhost", 0, - 2 * num_workers, forwarding_func)) - # Set the results port command line arg. Might have been - # inserted previous, so first try to replace. - listener_port = str(RESULTS_LISTENER_CHANNEL.address[1]) - try: - port_value_index = dotest_argv.index("--results-port") + 1 - dotest_argv[port_value_index] = listener_port - except ValueError: - # --results-port doesn't exist (yet), add it - dotest_argv.append("--results-port") - dotest_argv.append(listener_port) - - # Build the test work items out of the (dir, file_list) entries passed in. - test_work_items = [] - for test_file in test_files: - test_work_items.append((test_file, dotest_argv, None)) - - # Convert test work items into test results using whatever - # was provided as the test run function. - test_results = test_runner_func(test_work_items) - - # Summarize the results and return to caller. - timed_out = sum([result[0] for result in test_results], []) - passed = sum([result[1] for result in test_results], []) - failed = sum([result[2] for result in test_results], []) - unexpected_successes = sum([result[3] for result in test_results], []) - pass_count = sum([result[4] for result in test_results]) - fail_count = sum([result[5] for result in test_results]) - - return (timed_out, passed, failed, unexpected_successes, pass_count, - fail_count) - - -def getExpectedTimeouts(platform_name): - # returns a set of test filenames that might timeout - # are we running against a remote target? - - # Figure out the target system for which we're collecting - # the set of expected timeout test filenames. - if platform_name is None: - target = sys.platform - else: - m = re.search(r'remote-(\w+)', platform_name) - if m is not None: - target = m.group(1) - else: - target = platform_name - - expected_timeout = set() - - if target.startswith("freebsd"): - expected_timeout |= { - "TestBreakpointConditions.py", - "TestChangeProcessGroup.py", - "TestValueObjectRecursion.py", - "TestWatchpointConditionAPI.py", - } - return expected_timeout - - -def getDefaultTimeout(platform_name): - if os.getenv("LLDB_TEST_TIMEOUT"): - return os.getenv("LLDB_TEST_TIMEOUT") - - if platform_name is None: - platform_name = sys.platform - - if platform_name.startswith("remote-"): - return "10m" - elif platform_name == 'darwin': - # We are consistently needing more time on a few tests. - return "6m" - else: - return "4m" - - -def touch(fname, times=None): - if os.path.exists(fname): - os.utime(fname, times) - - -def find(pattern, path): - result = [] - for root, dirs, files in os.walk(path): - for name in files: - if fnmatch.fnmatch(name, pattern): - result.append(os.path.join(root, name)) - return result - - -def get_test_runner_strategies(num_threads, session_dir, runner_context): - """Returns the test runner strategies by name in a dictionary. - - @param num_threads specifies the number of threads/processes - that will be used for concurrent test runners. - - @param session_dir specifies the session dir to use for - auxiliary files. - - @param runner_context a dictionary of details on the architectures and - platform used to run the test suite. This is passed along verbatim to - the timeout pre-kill handler, allowing that decoupled component to do - process inspection in a platform-specific way. - - @return dictionary with key as test runner strategy name and - value set to a callable object that takes the test work item - and returns a test result tuple. - """ - return { - # multiprocessing supports ctrl-c and does not use - # multiprocessing.Pool. - "multiprocessing": - (lambda work_items: multiprocessing_test_runner( - num_threads, work_items, session_dir, runner_context)), - - # multiprocessing-pool uses multiprocessing.Pool but - # does not support Ctrl-C. - "multiprocessing-pool": - (lambda work_items: multiprocessing_test_runner_pool( - num_threads, work_items, session_dir, runner_context)), - - # threading uses a hand-rolled worker pool much - # like multiprocessing, but instead uses in-process - # worker threads. This one supports Ctrl-C. - "threading": - (lambda work_items: threading_test_runner( - num_threads, work_items, session_dir, runner_context)), - - # threading-pool uses threading for the workers (in-process) - # and uses the multiprocessing.pool thread-enabled pool. - # This does not properly support Ctrl-C. - "threading-pool": - (lambda work_items: threading_test_runner_pool( - num_threads, work_items, session_dir, runner_context)), - - # serial uses the subprocess-based, single process - # test runner. This provides process isolation but - # no concurrent test execution. - "serial": - (lambda work_items: inprocess_exec_test_runner( - work_items, session_dir, runner_context)) - } - - -def _remove_option( - args, long_option_name, short_option_name, takes_arg): - """Removes option and related option arguments from args array. - - This method removes all short/long options that match the given - arguments. - - @param args the array of command line arguments (in/out) - - @param long_option_name the full command line representation of the - long-form option that will be removed (including '--'). - - @param short_option_name the short version of the command line option - that will be removed (including '-'). - - @param takes_arg True if the option takes an argument. - - """ - if long_option_name is not None: - regex_string = "^" + long_option_name + "=" - long_regex = re.compile(regex_string) - if short_option_name is not None: - # Short options we only match the -X and assume - # any arg is one command line argument jammed together. - # i.e. -O--abc=1 is a single argument in the args list. - # We don't handle -O --abc=1, as argparse doesn't handle - # it, either. - regex_string = "^" + short_option_name - short_regex = re.compile(regex_string) - - def remove_long_internal(): - """Removes one matching long option from args. - @returns True if one was found and removed; False otherwise. - """ - try: - index = args.index(long_option_name) - # Handle the exact match case. - if takes_arg: - removal_count = 2 - else: - removal_count = 1 - del args[index:index + removal_count] - return True - except ValueError: - # Thanks to argparse not handling options with known arguments - # like other options parsing libraries (see - # https://bugs.python.org/issue9334), we need to support the - # --results-formatter-options={second-level-arguments} (note - # the equal sign to fool the first-level arguments parser into - # not treating the second-level arguments as first-level - # options). We're certainly at risk of getting this wrong - # since now we're forced into the business of trying to figure - # out what is an argument (although I think this - # implementation will suffice). - for index in range(len(args)): - match = long_regex.search(args[index]) - if match: - del args[index] - return True - return False - - def remove_short_internal(): - """Removes one matching short option from args. - @returns True if one was found and removed; False otherwise. - """ - for index in range(len(args)): - match = short_regex.search(args[index]) - if match: - del args[index] - return True - return False - - removal_count = 0 - while long_option_name is not None and remove_long_internal(): - removal_count += 1 - while short_option_name is not None and remove_short_internal(): - removal_count += 1 - if removal_count == 0: - raise Exception( - "failed to find at least one of '{}', '{}' in options".format( - long_option_name, short_option_name)) - - -def adjust_inferior_options(dotest_argv): - """Adjusts the commandline args array for inferiors. - - This method adjusts the inferior dotest commandline options based - on the parallel test runner's options. Some of the inferior options - will need to change to properly handle aggregation functionality. - """ - global dotest_options - - # If we don't have a session directory, create one. - if not dotest_options.s: - # no session log directory, we need to add this to prevent - # every dotest invocation from creating its own directory - import datetime - # The windows platforms don't like ':' in the pathname. - timestamp_started = (datetime.datetime.now() - .strftime("%Y-%m-%d-%H_%M_%S")) - dotest_argv.append('-s') - dotest_argv.append(timestamp_started) - dotest_options.s = timestamp_started - - # Adjust inferior results formatter options - if the parallel - # test runner is collecting into the user-specified test results, - # we'll have inferiors spawn with the --results-port option and - # strip the original test runner options. - if dotest_options.results_file is not None: - _remove_option(dotest_argv, "--results-file", None, True) - if dotest_options.results_port is not None: - _remove_option(dotest_argv, "--results-port", None, True) - if dotest_options.results_formatter is not None: - _remove_option(dotest_argv, "--results-formatter", None, True) - if dotest_options.results_formatter_options is not None: - _remove_option(dotest_argv, "--results-formatter-option", "-O", - True) - - # Remove the --curses shortcut if specified. - if dotest_options.curses: - _remove_option(dotest_argv, "--curses", None, False) - - # Remove test runner name if present. - if dotest_options.test_runner_name is not None: - _remove_option(dotest_argv, "--test-runner-name", None, True) - - -def is_darwin_version_lower_than(target_version): - """Checks that os is Darwin and version is lower than target_version. - - @param target_version the StrictVersion indicating the version - we're checking against. - - @return True if the OS is Darwin (OS X) and the version number of - the OS is less than target_version; False in all other cases. - """ - if platform.system() != 'Darwin': - # Can't be Darwin lower than a certain version. - return False - - system_version = distutils.version.StrictVersion(platform.mac_ver()[0]) - return seven.cmp_(system_version, target_version) < 0 - - -def default_test_runner_name(num_threads): - """Returns the default test runner name for the configuration. - - @param num_threads the number of threads/workers this test runner is - supposed to use. - - @return the test runner name that should be used by default when - no test runner was explicitly called out on the command line. - """ - if num_threads == 1: - # Use the serial runner. - test_runner_name = "serial" - elif os.name == "nt": - # On Windows, Python uses CRT with a low limit on the number of open - # files. If you have a lot of cores, the threading-pool runner will - # often fail because it exceeds that limit. It's not clear what the - # right balance is, so until we can investigate it more deeply, - # just use the one that works - test_runner_name = "multiprocessing-pool" - elif is_darwin_version_lower_than( - distutils.version.StrictVersion("10.10.0")): - # OS X versions before 10.10 appear to have an issue using - # the threading test runner. Fall back to multiprocessing. - # Supports Ctrl-C. - test_runner_name = "multiprocessing" - else: - # For everyone else, use the ctrl-c-enabled threading support. - # Should use fewer system resources than the multprocessing - # variant. - test_runner_name = "threading" - return test_runner_name - - -def rerun_tests(test_subdir, tests_for_rerun, dotest_argv, session_dir, - runner_context): - # Build the list of test files to rerun. Some future time we'll - # enable re-run by test method so we can constrain the rerun set - # to just the method(s) that were in issued within a file. - - # Sort rerun files into subdirectories. - print("\nRerunning the following files:") - rerun_files = [] - for test_filename in tests_for_rerun.keys(): - # Print the file we'll be rerunning - test_relative_path = os.path.relpath( - test_filename, lldbsuite.lldb_test_root) - print(" {}".format(test_relative_path)) - - rerun_files.append(test_filename) - - # Do not update legacy counts, I am getting rid of - # them so no point adding complicated merge logic here. - rerun_thread_count = 1 - # Force the parallel test runner to choose a multi-worker strategy. - rerun_runner_name = default_test_runner_name(rerun_thread_count + 1) - print("rerun will use the '{}' test runner strategy".format( - rerun_runner_name)) - - runner_strategies_by_name = get_test_runner_strategies( - rerun_thread_count, session_dir, runner_context) - rerun_runner_func = runner_strategies_by_name[ - rerun_runner_name] - if rerun_runner_func is None: - raise Exception( - "failed to find rerun test runner " - "function named '{}'".format(rerun_runner_name)) - - walk_and_invoke( - rerun_files, - dotest_argv, - rerun_thread_count, - rerun_runner_func) - print("\nTest rerun complete\n") - - -def main(num_threads, test_runner_name, results_formatter): - """Run dotest.py in inferior mode in parallel. - - @param num_threads the parsed value of the num-threads command line - argument. - - @param test_subdir optionally specifies a subdir to limit testing - within. May be None if the entire test tree is to be used. This subdir - is assumed to be relative to the lldb/test root of the test hierarchy. - - @param test_runner_name if specified, contains the test runner - name which selects the strategy used to run the isolated and - optionally concurrent test runner. Specify None to allow the - system to choose the most appropriate test runner given desired - thread count and OS type. - - @param results_formatter if specified, provides the TestResultsFormatter - instance that will format and output test result data from the - side-channel test results. When specified, inferior dotest calls - will send test results side-channel data over a socket to the parallel - test runner, which will forward them on to results_formatter. - """ - - # Do not shut down on sighup. - if hasattr(signal, 'SIGHUP'): - signal.signal(signal.SIGHUP, signal.SIG_IGN) - - dotest_argv = sys.argv[1:] - - global RESULTS_FORMATTER - RESULTS_FORMATTER = results_formatter - - # We can't use sys.path[0] to determine the script directory - # because it doesn't work under a debugger - parser = dotest_args.create_parser() - global dotest_options - dotest_options = dotest_args.parse_args(parser, dotest_argv) - - adjust_inferior_options(dotest_argv) - - session_dir = os.path.join(os.getcwd(), dotest_options.s) - - test_subdir = configuration.get_absolute_path_to_root_test_dir() - - # clean core files in test tree from previous runs (Linux) - cores = find('core.*', test_subdir) - for core in cores: - os.unlink(core) - - system_info = " ".join(platform.uname()) - - # Figure out which test files should be enabled for expected - # timeout - expected_timeout = getExpectedTimeouts(dotest_options.lldb_platform_name) - if results_formatter is not None: - results_formatter.set_expected_timeouts_by_basename(expected_timeout) - - # Setup the test runner context. This is a dictionary of information that - # will be passed along to the timeout pre-kill handler and allows for loose - # coupling of its implementation. - runner_context = { - "arch": configuration.arch, - "platform_name": configuration.lldb_platform_name, - "platform_url": configuration.lldb_platform_url, - "platform_working_dir": configuration.lldb_platform_working_dir, - } - - # Figure out which testrunner strategy we'll use. - runner_strategies_by_name = get_test_runner_strategies( - num_threads, session_dir, runner_context) - - # If the user didn't specify a test runner strategy, determine - # the default now based on number of threads and OS type. - if not test_runner_name: - test_runner_name = default_test_runner_name(num_threads) - - if test_runner_name not in runner_strategies_by_name: - raise Exception( - "specified testrunner name '{}' unknown. Valid choices: {}".format( - test_runner_name, - list(runner_strategies_by_name.keys()))) - test_runner_func = runner_strategies_by_name[test_runner_name] - - # Do the first test run phase. - summary_results = walk_and_invoke( - find_test_files_in_dir_tree(test_subdir), - dotest_argv, - num_threads, - test_runner_func) - - (timed_out, passed, failed, unexpected_successes, pass_count, - fail_count) = summary_results - - # Check if we have any tests to rerun as phase 2. - if results_formatter is not None: - tests_for_rerun = results_formatter.tests_for_rerun - results_formatter.tests_for_rerun = {} - - if tests_for_rerun is not None and len(tests_for_rerun) > 0: - rerun_file_count = len(tests_for_rerun) - print("\n{} test files marked for rerun\n".format( - rerun_file_count)) - - # Clear errors charged to any of the files of the tests that - # we are rerunning. - # https://llvm.org/bugs/show_bug.cgi?id=27423 - results_formatter.clear_file_level_issues(tests_for_rerun, - sys.stdout) - - # Check if the number of files exceeds the max cutoff. If so, - # we skip the rerun step. - if rerun_file_count > configuration.rerun_max_file_threshold: - print("Skipping rerun: max rerun file threshold ({}) " - "exceeded".format( - configuration.rerun_max_file_threshold)) - else: - rerun_tests(test_subdir, tests_for_rerun, dotest_argv, - session_dir, runner_context) - - # The results formatter - if present - is done now. Tell it to - # terminate. - if results_formatter is not None: - results_formatter.send_terminate_as_needed() - - timed_out = set(timed_out) - num_test_files = len(passed) + len(failed) - num_test_cases = pass_count + fail_count - - # move core files into session dir - cores = find('core.*', test_subdir) - for core in cores: - dst = core.replace(test_subdir, "")[1:] - dst = dst.replace(os.path.sep, "-") - os.rename(core, os.path.join(session_dir, dst)) - - # remove expected timeouts from failures - for xtime in expected_timeout: - if xtime in timed_out: - timed_out.remove(xtime) - failed.remove(xtime) - result = "ExpectedTimeout" - elif xtime in passed: - result = "UnexpectedCompletion" - else: - result = None # failed - - if result: - test_name = os.path.splitext(xtime)[0] - touch(os.path.join(session_dir, "{}-{}".format(result, test_name))) - - # Only run the old summary logic if we don't have a results formatter - # that already prints the summary. - print_legacy_summary = results_formatter is None - if not print_legacy_summary: - # Print summary results. Summarized results at the end always - # get printed to stdout, even if --results-file specifies a different - # file for, say, xUnit output. - results_formatter.print_results(sys.stdout) - - # Figure out exit code by count of test result types. - issue_count = 0 - for issue_status in EventBuilder.TESTRUN_ERROR_STATUS_VALUES: - issue_count += results_formatter.counts_by_test_result_status( - issue_status) - - # Return with appropriate result code - if issue_count > 0: - sys.exit(1) - else: - sys.exit(0) - else: - # Print the legacy test results summary. - print() - sys.stdout.write("Ran %d test suites" % num_test_files) - if num_test_files > 0: - sys.stdout.write(" (%d failed) (%f%%)" % ( - len(failed), 100.0 * len(failed) / num_test_files)) - print() - sys.stdout.write("Ran %d test cases" % num_test_cases) - if num_test_cases > 0: - sys.stdout.write(" (%d failed) (%f%%)" % ( - fail_count, 100.0 * fail_count / num_test_cases)) - print() - exit_code = 0 - - if len(failed) > 0: - failed.sort() - print("Failing Tests (%d)" % len(failed)) - for f in failed: - print("%s: LLDB (suite) :: %s (%s)" % ( - "TIMEOUT" if f in timed_out else "FAIL", f, system_info - )) - exit_code = 1 - - if len(unexpected_successes) > 0: - unexpected_successes.sort() - print("\nUnexpected Successes (%d)" % len(unexpected_successes)) - for u in unexpected_successes: - print( - "UNEXPECTED SUCCESS: LLDB (suite) :: %s (%s)" % - (u, system_info)) - - sys.exit(exit_code) - -if __name__ == '__main__': - sys.stderr.write( - "error: dosep.py no longer supports being called directly. " - "Please call dotest.py directly. The dosep.py-specific arguments " - "have been added under the Parallel processing arguments.\n") - sys.exit(128) diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py index 5113ccdf114d749..04917185de2653b 100644 --- a/lldb/packages/Python/lldbsuite/test/dotest.py +++ b/lldb/packages/Python/lldbsuite/test/dotest.py @@ -23,13 +23,13 @@ # System modules import atexit -import os +import datetime import errno import logging +import os import platform import re import signal -import socket import subprocess import sys @@ -48,17 +48,20 @@ from lldbsuite.test_event.event_builder import EventBuilder from ..support import seven +def get_dotest_invocation(): + return ' '.join(sys.argv) + def is_exe(fpath): """Returns true if fpath is an executable.""" if fpath == None: - return False + return False return os.path.isfile(fpath) and os.access(fpath, os.X_OK) def which(program): """Returns the full path to a program; None otherwise.""" - fpath, fname = os.path.split(program) + fpath, _ = os.path.split(program) if fpath: if is_exe(program): return program @@ -70,27 +73,6 @@ def which(program): return None -class _WritelnDecorator(object): - """Used to decorate file-like objects with a handy 'writeln' method""" - - def __init__(self, stream): - self.stream = stream - - def __getattr__(self, attr): - if attr in ('stream', '__getstate__'): - raise AttributeError(attr) - return getattr(self.stream, attr) - - def writeln(self, arg=None): - if arg: - self.write(arg) - self.write('\n') # text-mode streams translate to \r\n if needed - -# -# Global variables: -# - - def usage(parser): parser.print_help() if configuration.verbose > 0: @@ -170,9 +152,6 @@ def usage(parser): Writing logs into different files per test case:: -This option is particularly useful when multiple dotest instances are created -by dosep.py - $ ./dotest.py --channel "lldb all" $ ./dotest.py --channel "lldb all" --channel "gdb-remote packets" @@ -188,20 +167,6 @@ def usage(parser): $ ./dotest.py --log-success -Option 2: (DEPRECATED) - -The following options can only enable logs from the host lldb process. -Only categories from the "lldb" or "gdb-remote" channels can be enabled -They also do not automatically enable logs in locally running debug servers. -Also, logs from all test case are written into each log file - -o LLDB_LOG: if defined, specifies the log file pathname for the 'lldb' subsystem - with a default option of 'event process' if LLDB_LOG_OPTION is not defined. - -o GDB_REMOTE_LOG: if defined, specifies the log file pathname for the - 'process.gdb-remote' subsystem with a default option of 'packets' if - GDB_REMOTE_LOG_OPTION is not defined. - """) sys.exit(0) @@ -250,8 +215,12 @@ def parseOptionsAndInitTestdirs(): platform_system = platform.system() platform_machine = platform.machine() - parser = dotest_args.create_parser() - args = dotest_args.parse_args(parser, sys.argv[1:]) + try: + parser = dotest_args.create_parser() + args = parser.parse_args() + except: + print(get_dotest_invocation()) + raise if args.unset_env_varnames: for env_var in args.unset_env_varnames: @@ -273,9 +242,9 @@ def parseOptionsAndInitTestdirs(): if args.set_inferior_env_vars: lldbtest_config.inferior_env = ' '.join(args.set_inferior_env_vars) - # only print the args if being verbose (and parsable is off) - if args.v and not args.q: - print(sys.argv) + # Only print the args if being verbose. + if args.v: + print(get_dotest_invocation()) if args.h: do_help = True @@ -305,10 +274,10 @@ def parseOptionsAndInitTestdirs(): break if args.dsymutil: - os.environ['DSYMUTIL'] = args.dsymutil + os.environ['DSYMUTIL'] = args.dsymutil elif platform_system == 'Darwin': - os.environ['DSYMUTIL'] = seven.get_command_output( - 'xcrun -find -toolchain default dsymutil') + os.environ['DSYMUTIL'] = seven.get_command_output( + 'xcrun -find -toolchain default dsymutil') if args.filecheck: # The lldb-dotest script produced by the CMake build passes in a path @@ -316,13 +285,6 @@ def parseOptionsAndInitTestdirs(): # target. However, when invoking dotest.py directly, a valid --filecheck # option needs to be given. configuration.filecheck = os.path.abspath(args.filecheck) - else: - outputPaths = get_llvm_bin_dirs() - for outputPath in outputPaths: - candidatePath = os.path.join(outputPath, 'FileCheck') - if is_exe(candidatePath): - configuration.filecheck = candidatePath - break if not configuration.get_filecheck_path(): logging.warning('No valid FileCheck executable; some tests may fail...') @@ -368,8 +330,13 @@ def parseOptionsAndInitTestdirs(): args.skipCategories, False) if args.E: - cflags_extras = args.E - os.environ['CFLAGS_EXTRAS'] = cflags_extras + os.environ['CFLAGS_EXTRAS'] = args.E + + if args.dwarf_version: + configuration.dwarf_version = args.dwarf_version + # We cannot modify CFLAGS_EXTRAS because they're used in test cases + # that explicitly require no debug info. + os.environ['CFLAGS'] = '-gdwarf-{}'.format(configuration.dwarf_version) if args.d: sys.stdout.write( @@ -382,20 +349,6 @@ def parseOptionsAndInitTestdirs(): if any([x.startswith('-') for x in args.f]): usage(parser) configuration.filters.extend(args.f) - # Shut off multiprocessing mode when additional filters are specified. - # The rational is that the user is probably going after a very specific - # test and doesn't need a bunch of parallel test runners all looking for - # it in a frenzy. Also, '-v' now spits out all test run output even - # on success, so the standard recipe for redoing a failing test (with -v - # and a -f to filter to the specific test) now causes all test scanning - # (in parallel) to print results for do-nothing runs in a very distracting - # manner. If we really need filtered parallel runs in the future, consider - # adding a --no-output-on-success that prevents -v from setting - # output-on-success. - configuration.no_multiprocess_test_runner = True - - if args.l: - configuration.skip_long_running_test = False if args.framework: configuration.lldbFrameworkPath = args.framework @@ -423,13 +376,12 @@ def parseOptionsAndInitTestdirs(): usage(parser) configuration.regexp = args.p - if args.q: - configuration.parsable = True - if args.s: - if args.s.startswith('-'): - usage(parser) configuration.sdir_name = args.s + else: + timestamp_started = datetime.datetime.now().strftime("%Y-%m-%d-%H_%M_%S") + configuration.sdir_name = os.path.join(os.getcwd(), timestamp_started) + configuration.session_file_format = args.session_file_format if args.t: @@ -450,53 +402,21 @@ def parseOptionsAndInitTestdirs(): if do_help: usage(parser) - if args.no_multiprocess: - configuration.no_multiprocess_test_runner = True - - if args.inferior: - configuration.is_inferior_test_runner = True - - if args.num_threads: - configuration.num_threads = args.num_threads - - if args.test_subdir: - configuration.exclusive_test_subdir = args.test_subdir - - if args.test_runner_name: - configuration.test_runner_name = args.test_runner_name - - # Capture test results-related args. - if args.curses and not args.inferior: - # Act as if the following args were set. - args.results_formatter = "lldbsuite.test_event.formatter.curses.Curses" - args.results_file = "stdout" - if args.results_file: configuration.results_filename = args.results_file - if args.results_port: - configuration.results_port = args.results_port - - if args.results_file and args.results_port: - sys.stderr.write( - "only one of --results-file and --results-port should " - "be specified\n") - usage(args) - if args.results_formatter: configuration.results_formatter_name = args.results_formatter if args.results_formatter_options: configuration.results_formatter_options = args.results_formatter_options - # Default to using the BasicResultsFormatter if no formatter is specified - # and we're not a test inferior. - if not args.inferior and configuration.results_formatter_name is None: + # Default to using the BasicResultsFormatter if no formatter is specified. + if configuration.results_formatter_name is None: configuration.results_formatter_name = ( "lldbsuite.test_event.formatter.results_formatter.ResultsFormatter") # rerun-related arguments configuration.rerun_all_issues = args.rerun_all_issues - configuration.rerun_max_file_threshold = args.rerun_max_file_threshold if args.lldb_platform_name: configuration.lldb_platform_name = args.lldb_platform_name @@ -506,68 +426,18 @@ def parseOptionsAndInitTestdirs(): configuration.lldb_platform_working_dir = args.lldb_platform_working_dir if args.test_build_dir: configuration.test_build_dir = args.test_build_dir - - if args.event_add_entries and len(args.event_add_entries) > 0: - entries = {} - # Parse out key=val pairs, separated by comma - for keyval in args.event_add_entries.split(","): - key_val_entry = keyval.split("=") - if len(key_val_entry) == 2: - (key, val) = key_val_entry - val_parts = val.split(':') - if len(val_parts) > 1: - (val, val_type) = val_parts - if val_type == 'int': - val = int(val) - entries[key] = val - # Tell the event builder to create all events with these - # key/val pairs in them. - if len(entries) > 0: - EventBuilder.add_entries_to_all_events(entries) + if args.module_cache_dir: + configuration.module_cache_dir = args.module_cache_dir + else: + configuration.module_cache_dir = os.path.join(configuration.test_build_dir, + 'module-cache-lldb') # Gather all the dirs passed on the command line. if len(args.args) > 0: configuration.testdirs = [os.path.realpath(os.path.abspath(x)) for x in args.args] - # Shut off multiprocessing mode when test directories are specified. - configuration.no_multiprocess_test_runner = True lldbtest_config.codesign_identity = args.codesign_identity - #print("testdirs:", testdirs) - - -def getXcodeOutputPaths(lldbRootDirectory): - result = [] - - # These are for xcode build directories. - xcode3_build_dir = ['build'] - xcode4_build_dir = ['build', 'lldb', 'Build', 'Products'] - - configurations = [ - ['Debug'], - ['DebugClang'], - ['Release'], - ['BuildAndIntegration']] - xcode_build_dirs = [xcode3_build_dir, xcode4_build_dir] - for configuration in configurations: - for xcode_build_dir in xcode_build_dirs: - outputPath = os.path.join( - lldbRootDirectory, *(xcode_build_dir + configuration)) - result.append(outputPath) - - return result - - -def createSocketToLocalPort(port): - def socket_closer(s): - """Close down an opened socket properly.""" - s.shutdown(socket.SHUT_RDWR) - s.close() - - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect(("localhost", port)) - return (sock, lambda: socket_closer(sock)) - def setupTestResults(): """Sets up test results-related objects based on arg settings.""" @@ -577,7 +447,6 @@ def setupTestResults(): formatter_config.formatter_name = configuration.results_formatter_name formatter_config.formatter_options = ( configuration.results_formatter_options) - formatter_config.port = configuration.results_port # Create the results formatter. formatter_spec = formatter.create_results_formatter( @@ -587,17 +456,7 @@ def setupTestResults(): # Send an initialize message to the formatter. initialize_event = EventBuilder.bare_event("initialize") - if isMultiprocessTestRunner(): - if (configuration.test_runner_name is not None and - configuration.test_runner_name == "serial"): - # Only one worker queue here. - worker_count = 1 - else: - # Workers will be the number of threads specified. - worker_count = configuration.num_threads - else: - worker_count = 1 - initialize_event["worker_count"] = worker_count + initialize_event["worker_count"] = 1 formatter_spec.formatter.handle_event(initialize_event) @@ -606,65 +465,6 @@ def setupTestResults(): atexit.register(formatter_spec.cleanup_func) -def getOutputPaths(lldbRootDirectory): - """ - Returns typical build output paths for the lldb executable - - lldbDirectory - path to the root of the lldb svn/git repo - """ - result = [] - - if sys.platform == 'darwin': - result.extend(getXcodeOutputPaths(lldbRootDirectory)) - - # cmake builds? look for build or build/host folder next to llvm directory - # lldb is located in llvm/tools/lldb so we need to go up three levels - llvmParentDir = os.path.abspath( - os.path.join( - lldbRootDirectory, - os.pardir, - os.pardir, - os.pardir)) - result.append(os.path.join(llvmParentDir, 'build', 'bin')) - result.append(os.path.join(llvmParentDir, 'build', 'host', 'bin')) - - # some cmake developers keep their build directory beside their lldb - # directory - lldbParentDir = os.path.abspath(os.path.join(lldbRootDirectory, os.pardir)) - result.append(os.path.join(lldbParentDir, 'build', 'bin')) - result.append(os.path.join(lldbParentDir, 'build', 'host', 'bin')) - - return result - -def get_llvm_bin_dirs(): - """ - Returns an array of paths that may have the llvm/clang/etc binaries - in them, relative to this current file. - Returns an empty array if none are found. - """ - result = [] - - lldb_root_path = os.path.join( - os.path.dirname(__file__), "..", "..", "..", "..") - paths_to_try = [ - "llvm-build/Release+Asserts/x86_64/bin", - "llvm-build/Debug+Asserts/x86_64/bin", - "llvm-build/Release/x86_64/bin", - "llvm-build/Debug/x86_64/bin", - "llvm-build/Ninja-DebugAssert/llvm-macosx-x86_64/bin", - "llvm-build/Ninja-DebugAssert+asan/llvm-macosx-x86_64/bin", - "llvm-build/Ninja-ReleaseAssert/llvm-macosx-x86_64/bin", - "llvm-build/Ninja-ReleaseAssert+asan/llvm-macosx-x86_64/bin", - "llvm-build/Ninja-RelWithDebInfoAssert/llvm-macosx-x86_64/bin", - "llvm-build/Ninja-RelWithDebInfoAssert+asan/llvm-macosx-x86_64/bin", - ] - for p in paths_to_try: - path = os.path.join(lldb_root_path, p) - if os.path.exists(path): - result.append(path) - - return result - def setupSysPath(): """ Add LLDB.framework/Resources/Python to the search paths for modules. @@ -693,16 +493,11 @@ def setupSysPath(): os.environ["LLDB_SRC"] = lldbsuite.lldb_root pluginPath = os.path.join(scriptPath, 'plugins') - toolsLLDBMIPath = os.path.join(scriptPath, 'tools', 'lldb-mi') toolsLLDBVSCode = os.path.join(scriptPath, 'tools', 'lldb-vscode') toolsLLDBServerPath = os.path.join(scriptPath, 'tools', 'lldb-server') - # Insert script dir, plugin dir, lldb-mi dir and lldb-server dir to the - # sys.path. + # Insert script dir, plugin dir and lldb-server dir to the sys.path. sys.path.insert(0, pluginPath) - # Adding test/tools/lldb-mi to the path makes it easy - sys.path.insert(0, toolsLLDBMIPath) - # to "import lldbmi_testcase" from the MI tests # Adding test/tools/lldb-vscode to the path makes it easy to # "import lldb_vscode_testcase" from the VSCode tests sys.path.insert(0, toolsLLDBVSCode) @@ -727,14 +522,6 @@ def setupSysPath(): if "LLDB_EXEC" in os.environ: lldbtest_config.lldbExec = os.environ["LLDB_EXEC"] - if not lldbtest_config.lldbExec: - outputPaths = getOutputPaths(lldbRootDirectory) - for outputPath in outputPaths: - candidatePath = os.path.join(outputPath, 'lldb') - if is_exe(candidatePath): - lldbtest_config.lldbExec = candidatePath - break - if not lldbtest_config.lldbExec: # Last, check the path lldbtest_config.lldbExec = which('lldb') @@ -761,19 +548,7 @@ def setupSysPath(): print("LLDB import library dir:", os.environ["LLDB_IMPLIB_DIR"]) os.system('%s -v' % lldbtest_config.lldbExec) - # Assume lldb-mi is in same place as lldb - # If not found, disable the lldb-mi tests - # TODO: Append .exe on Windows - # - this will be in a separate commit in case the mi tests fail horribly lldbDir = os.path.dirname(lldbtest_config.lldbExec) - lldbMiExec = os.path.join(lldbDir, "lldb-mi") - if is_exe(lldbMiExec): - os.environ["LLDBMI_EXEC"] = lldbMiExec - else: - if not configuration.shouldSkipBecauseOfCategories(["lldb-mi"]): - print( - "The 'lldb-mi' executable cannot be located. The lldb-mi tests can not be run as a result.") - configuration.skipCategories.append("lldb-mi") lldbVSCodeExec = os.path.join(lldbDir, "lldb-vscode") if is_exe(lldbVSCodeExec): @@ -832,39 +607,23 @@ def setupSysPath(): lldbPythonDir, '..', '..') if not lldbPythonDir: - if platform.system() == "Darwin": - python_resource_dir = ['LLDB.framework', 'Resources', 'Python'] - outputPaths = getXcodeOutputPaths(lldbRootDirectory) - for outputPath in outputPaths: - candidatePath = os.path.join( - outputPath, *python_resource_dir) - if os.path.isfile( - os.path.join( - candidatePath, - init_in_python_dir)): - lldbPythonDir = candidatePath - break - - if not lldbPythonDir: - print("lldb.py is not found, some tests may fail.") - else: - print( - "Unable to load lldb extension module. Possible reasons for this include:") - print(" 1) LLDB was built with LLDB_DISABLE_PYTHON=1") - print( - " 2) PYTHONPATH and PYTHONHOME are not set correctly. PYTHONHOME should refer to") - print( - " the version of Python that LLDB built and linked against, and PYTHONPATH") - print( - " should contain the Lib directory for the same python distro, as well as the") - print(" location of LLDB\'s site-packages folder.") - print( - " 3) A different version of Python than that which was built against is exported in") - print(" the system\'s PATH environment variable, causing conflicts.") - print( - " 4) The executable '%s' could not be found. Please check " % - lldbtest_config.lldbExec) - print(" that it exists and is executable.") + print( + "Unable to load lldb extension module. Possible reasons for this include:") + print(" 1) LLDB was built with LLDB_DISABLE_PYTHON=1") + print( + " 2) PYTHONPATH and PYTHONHOME are not set correctly. PYTHONHOME should refer to") + print( + " the version of Python that LLDB built and linked against, and PYTHONPATH") + print( + " should contain the Lib directory for the same python distro, as well as the") + print(" location of LLDB\'s site-packages folder.") + print( + " 3) A different version of Python than that which was built against is exported in") + print(" the system\'s PATH environment variable, causing conflicts.") + print( + " 4) The executable '%s' could not be found. Please check " % + lldbtest_config.lldbExec) + print(" that it exists and is executable.") if lldbPythonDir: lldbPythonDir = os.path.normpath(lldbPythonDir) @@ -943,7 +702,6 @@ def visit_file(dir, name): unittest2.defaultTestLoader.loadTestsFromName(base)) -# TODO: This should be replaced with a call to find_test_files_in_dir_tree. def visit(prefix, dir, names): """Visitor function for os.path.walk(path, visit, arg).""" @@ -999,64 +757,6 @@ def disabledynamics(): raise Exception('disabling dynamic type support failed') -def lldbLoggings(): - import lldb - """Check and do lldb loggings if necessary.""" - - # Turn on logging for debugging purposes if ${LLDB_LOG} environment variable is - # defined. Use ${LLDB_LOG} to specify the log file. - ci = lldb.DBG.GetCommandInterpreter() - res = lldb.SBCommandReturnObject() - if ("LLDB_LOG" in os.environ): - open(os.environ["LLDB_LOG"], 'w').close() - if ("LLDB_LOG_OPTION" in os.environ): - lldb_log_option = os.environ["LLDB_LOG_OPTION"] - else: - lldb_log_option = "event process expr state api" - ci.HandleCommand( - "log enable -n -f " + - os.environ["LLDB_LOG"] + - " lldb " + - lldb_log_option, - res) - if not res.Succeeded(): - raise Exception('log enable failed (check LLDB_LOG env variable)') - - if ("LLDB_LINUX_LOG" in os.environ): - open(os.environ["LLDB_LINUX_LOG"], 'w').close() - if ("LLDB_LINUX_LOG_OPTION" in os.environ): - lldb_log_option = os.environ["LLDB_LINUX_LOG_OPTION"] - else: - lldb_log_option = "event process expr state api" - ci.HandleCommand( - "log enable -n -f " + - os.environ["LLDB_LINUX_LOG"] + - " linux " + - lldb_log_option, - res) - if not res.Succeeded(): - raise Exception( - 'log enable failed (check LLDB_LINUX_LOG env variable)') - - # Ditto for gdb-remote logging if ${GDB_REMOTE_LOG} environment variable is defined. - # Use ${GDB_REMOTE_LOG} to specify the log file. - if ("GDB_REMOTE_LOG" in os.environ): - if ("GDB_REMOTE_LOG_OPTION" in os.environ): - gdb_remote_log_option = os.environ["GDB_REMOTE_LOG_OPTION"] - else: - gdb_remote_log_option = "packets process" - ci.HandleCommand( - "log enable -n -f " + os.environ["GDB_REMOTE_LOG"] + " gdb-remote " - + gdb_remote_log_option, - res) - if not res.Succeeded(): - raise Exception( - 'log enable failed (check GDB_REMOTE_LOG env variable)') - - -def getMyCommandLine(): - return ' '.join(sys.argv) - # ======================================== # # # # Execution of the test driver starts here # @@ -1088,15 +788,6 @@ def exitTestSuite(exitCode=None): sys.exit(exitCode) -def isMultiprocessTestRunner(): - # We're not multiprocess when we're either explicitly - # the inferior (as specified by the multiprocess test - # runner) OR we've been told to skip using the multiprocess - # test runner - return not ( - configuration.is_inferior_test_runner or configuration.no_multiprocess_test_runner) - - def getVersionForSDK(sdk): sdk = str.lower(sdk) full_path = seven.get_command_output('xcrun -sdk %s --show-sdk-path' % sdk) @@ -1107,14 +798,6 @@ def getVersionForSDK(sdk): return ver -def getPathForSDK(sdk): - sdk = str.lower(sdk) - full_path = seven.get_command_output('xcrun -sdk %s --show-sdk-path' % sdk) - if os.path.exists(full_path): - return full_path - return None - - def setDefaultTripleForPlatform(): if configuration.lldb_platform_name == 'ios-simulator': triple_str = 'x86_64-apple-ios%s' % ( @@ -1171,8 +854,10 @@ def canRunLibstdcxxTests(): from lldbsuite.test import lldbplatformutil platform = lldbplatformutil.getPlatform() + if lldbplatformutil.target_is_android(): + platform = "android" if platform == "linux": - return True, "libstdcxx always present" + return True, "libstdcxx always present" return False, "Don't know how to build with libstdcxx on %s" % platform def checkLibstdcxxSupport(): @@ -1189,16 +874,16 @@ def canRunWatchpointTests(): platform = lldbplatformutil.getPlatform() if platform == "netbsd": - if os.geteuid() == 0: - return True, "root can always write dbregs" - try: - output = subprocess.check_output(["/sbin/sysctl", "-n", - "security.models.extensions.user_set_dbregs"]).decode().strip() - if output == "1": - return True, "security.models.extensions.user_set_dbregs enabled" - except subprocess.CalledProcessError: - pass - return False, "security.models.extensions.user_set_dbregs disabled" + if os.geteuid() == 0: + return True, "root can always write dbregs" + try: + output = subprocess.check_output(["/sbin/sysctl", "-n", + "security.models.extensions.user_set_dbregs"]).decode().strip() + if output == "1": + return True, "security.models.extensions.user_set_dbregs enabled" + except subprocess.CalledProcessError: + pass + return False, "security.models.extensions.user_set_dbregs disabled" return True, "watchpoint support available" def checkWatchpointSupport(): @@ -1232,7 +917,6 @@ def run_suite(): if sys.platform.startswith("darwin"): checkDsymForUUIDIsNotOn() - # # Start the actions by first parsing the options while setting up the test # directories, followed by setting up the search paths for lldb utilities; # then, we walk the directory trees and collect the tests into our test suite. @@ -1242,31 +926,16 @@ def run_suite(): # Setup test results (test results formatter and output handling). setupTestResults() - # If we are running as the multiprocess test runner, kick off the - # multiprocess test runner here. - if isMultiprocessTestRunner(): - from . import dosep - dosep.main( - configuration.num_threads, - configuration.test_runner_name, - configuration.results_formatter_object) - raise Exception("should never get here") - elif configuration.is_inferior_test_runner: - # Shut off Ctrl-C processing in inferiors. The parallel - # test runner handles this more holistically. - signal.signal(signal.SIGINT, signal.SIG_IGN) - setupSysPath() - # - # If '-l' is specified, do not skip the long running tests. - if not configuration.skip_long_running_test: - os.environ["LLDB_SKIP_LONG_RUNNING_TEST"] = "NO" # For the time being, let's bracket the test runner within the # lldb.SBDebugger.Initialize()/Terminate() pair. import lldb + # Now we can also import lldbutil + from lldbsuite.test import lldbutil + # Create a singleton SBDebugger in the lldb namespace. lldb.DBG = lldb.SBDebugger.Create() @@ -1326,7 +995,6 @@ def run_suite(): # Set up the working directory. # Note that it's not dotest's job to clean this directory. - import lldbsuite.test.lldbutil as lldbutil build_dir = configuration.test_build_dir lldbutil.mkdir_p(build_dir) @@ -1340,8 +1008,8 @@ def run_suite(): # Don't do debugserver tests on anything except OS X. configuration.dont_do_debugserver_test = "linux" in target_platform or "freebsd" in target_platform or "windows" in target_platform - # Don't do lldb-server (llgs) tests on anything except Linux. - configuration.dont_do_llgs_test = not ("linux" in target_platform) + # Don't do lldb-server (llgs) tests on anything except Linux and Windows. + configuration.dont_do_llgs_test = not ("linux" in target_platform) and not ("windows" in target_platform) # Collect tests from the specified testing directories. If a test # subdirectory filter is explicitly specified, limit the search to that @@ -1359,48 +1027,27 @@ def run_suite(): # Now that we have loaded all the test cases, run the whole test suite. # - # Turn on lldb loggings if necessary. - lldbLoggings() - # Disable default dynamic types for testing purposes disabledynamics() # Install the control-c handler. unittest2.signals.installHandler() - # If sdir_name is not specified through the '-s sdir_name' option, get a - # timestamp string and export it as LLDB_SESSION_DIR environment var. This will - # be used when/if we want to dump the session info of individual test cases - # later on. - # - # See also TestBase.dumpSessionInfo() in lldbtest.py. - import datetime - # The windows platforms don't like ':' in the pathname. - timestamp_started = datetime.datetime.now().strftime("%Y-%m-%d-%H_%M_%S") - if not configuration.sdir_name: - configuration.sdir_name = timestamp_started - os.environ["LLDB_SESSION_DIRNAME"] = os.path.join( - os.getcwd(), configuration.sdir_name) + lldbutil.mkdir_p(configuration.sdir_name) + os.environ["LLDB_SESSION_DIRNAME"] = configuration.sdir_name sys.stderr.write( "\nSession logs for test failures/errors/unexpected successes" " will go into directory '%s'\n" % configuration.sdir_name) - sys.stderr.write("Command invoked: %s\n" % getMyCommandLine()) - - if not os.path.isdir(configuration.sdir_name): - try: - os.mkdir(configuration.sdir_name) - except OSError as exception: - if exception.errno != errno.EEXIST: - raise + sys.stderr.write("Command invoked: %s\n" % get_dotest_invocation()) # # Invoke the default TextTestRunner to run the test suite # checkCompiler() - if not configuration.parsable: + if configuration.verbose: print("compiler=%s" % configuration.compiler) # Iterating over all possible architecture and compiler combinations. @@ -1409,36 +1056,23 @@ def run_suite(): configString = "arch=%s compiler=%s" % (configuration.arch, configuration.compiler) - # Translate ' ' to '-' for pathname component. - if six.PY2: - import string - tbl = string.maketrans(' ', '-') - else: - tbl = str.maketrans(' ', '-') - configPostfix = configString.translate(tbl) - # Output the configuration. - if not configuration.parsable: + if configuration.verbose: sys.stderr.write("\nConfiguration: " + configString + "\n") # First, write out the number of collected test cases. - if not configuration.parsable: + if configuration.verbose: sys.stderr.write(configuration.separator + "\n") sys.stderr.write( "Collected %d test%s\n\n" % (configuration.suite.countTestCases(), configuration.suite.countTestCases() != 1 and "s" or "")) - if configuration.parsable: - v = 0 - else: - v = configuration.verbose - # Invoke the test runner. if configuration.count == 1: result = unittest2.TextTestRunner( stream=sys.stderr, - verbosity=v, + verbosity=configuration.verbose, resultclass=test_result.LLDBTestResult).run( configuration.suite) else: @@ -1450,13 +1084,13 @@ def run_suite(): result = unittest2.TextTestRunner( stream=sys.stderr, - verbosity=v, + verbosity=configuration.verbose, resultclass=test_result.LLDBTestResult).run( configuration.suite) configuration.failed = not result.wasSuccessful() - if configuration.sdir_has_content and not configuration.parsable: + if configuration.sdir_has_content and configuration.verbose: sys.stderr.write( "Session logs for test failures/errors/unexpected successes" " can be found in directory '%s'\n" % @@ -1470,12 +1104,6 @@ def run_suite(): "%s - %d\n" % (category, configuration.failuresPerCategory[category])) - # Terminate the test suite if ${LLDB_TESTSUITE_FORCE_FINISH} is defined. - # This should not be necessary now. - if ("LLDB_TESTSUITE_FORCE_FINISH" in os.environ): - print("Terminating Test suite...") - subprocess.Popen(["/bin/sh", "-c", "kill %s; exit 0" % (os.getpid())]) - # Exiting. exitTestSuite(configuration.failed) diff --git a/lldb/packages/Python/lldbsuite/test/dotest_args.py b/lldb/packages/Python/lldbsuite/test/dotest_args.py index a673d1d348955ba..8de4d8dbb2f7915 100644 --- a/lldb/packages/Python/lldbsuite/test/dotest_args.py +++ b/lldb/packages/Python/lldbsuite/test/dotest_args.py @@ -4,45 +4,13 @@ # System modules import argparse import sys -import multiprocessing import os import textwrap -# Third-party modules - # LLDB modules from . import configuration -class ArgParseNamespace(object): - pass - - -def parse_args(parser, argv): - """ Returns an argument object. LLDB_TEST_ARGUMENTS environment variable can - be used to pass additional arguments. - """ - args = ArgParseNamespace() - - if ('LLDB_TEST_ARGUMENTS' in os.environ): - print( - "Arguments passed through environment: '%s'" % - os.environ['LLDB_TEST_ARGUMENTS']) - args = parser.parse_args([sys.argv[0]].__add__( - os.environ['LLDB_TEST_ARGUMENTS'].split()), namespace=args) - - return parser.parse_args(args=argv, namespace=args) - - -def default_thread_count(): - # Check if specified in the environment - num_threads_str = os.environ.get("LLDB_TEST_THREADS") - if num_threads_str: - return int(num_threads_str) - else: - return multiprocessing.cpu_count() - - def create_parser(): parser = argparse.ArgumentParser( description='description', @@ -94,7 +62,6 @@ def create_parser(): metavar='filterspec', action='append', help='Specify a filter, which consists of the test class name, a dot, followed by the test method, to only admit such test into the test suite') # FIXME: Example? - X('-l', "Don't skip long running tests") group.add_argument( '-p', metavar='pattern', @@ -135,6 +102,12 @@ def create_parser(): dest='out_of_tree_debugserver', action='store_true', help='A flag to indicate an out-of-tree debug server is being used') + group.add_argument( + '--dwarf-version', + metavar='dwarf_version', + dest='dwarf_version', + type=int, + help='Override the DWARF version.') group.add_argument( '-s', metavar='name', @@ -174,6 +147,11 @@ def create_parser(): metavar='Test build directory', default='lldb-test-build.noindex', help='The root build directory for the tests. It will be removed before running.') + group.add_argument( + '--module-cache-dir', + dest='module_cache_dir', + metavar='The clang module cache directory used by LLDB', + help='The clang module cache directory used by LLDB. This is not the one used by the makefiles. Defaults to /module-cache-lldb.') # Configuration options group = parser.add_argument_group('Remote platform options') @@ -196,7 +174,6 @@ def create_parser(): # Test-suite behaviour group = parser.add_argument_group('Runtime behaviour options') X('-d', 'Suspend the process after launch to wait indefinitely for a debugger to attach') - X('-q', "Don't print extra output from this script.") X('-t', 'Turn on tracing of lldb command and other detailed test executions') group.add_argument( '-u', @@ -224,52 +201,13 @@ def create_parser(): help='(Windows only) When LLDB crashes, display the Windows crash dialog.') group.set_defaults(disable_crash_dialog=True) - group = parser.add_argument_group('Parallel execution options') - group.add_argument( - '--inferior', - action='store_true', - help=('specify this invocation is a multiprocess inferior, ' - 'used internally')) - group.add_argument( - '--no-multiprocess', - action='store_true', - help='skip running the multiprocess test runner') - group.add_argument( - '--threads', - type=int, - dest='num_threads', - default=default_thread_count(), - help=('The number of threads/processes to use when running tests ' - 'separately, defaults to the number of CPU cores available')) - group.add_argument( - '--test-subdir', - action='store', - help='Specify a test subdirectory to use relative to the test root dir' - ) - group.add_argument( - '--test-runner-name', - action='store', - help=('Specify a test runner strategy. Valid values: multiprocessing,' - ' multiprocessing-pool, serial, threading, threading-pool') - ) - # Test results support. group = parser.add_argument_group('Test results options') - group.add_argument( - '--curses', - action='store_true', - help='Shortcut for specifying test results using the curses formatter') group.add_argument( '--results-file', action='store', help=('Specifies the file where test results will be written ' 'according to the results-formatter class used')) - group.add_argument( - '--results-port', - action='store', - type=int, - help=('Specifies the localhost port to which the results ' - 'formatted output should be sent')) group.add_argument( '--results-formatter', action='store', @@ -284,13 +222,6 @@ def create_parser(): help=('Specify an option to pass to the formatter. ' 'Use --results-formatter-option="--option1=val1" ' 'syntax. Note the "=" is critical, don\'t include whitespace.')) - group.add_argument( - '--event-add-entries', - action='store', - help=('Specify comma-separated KEY=VAL entries to add key and value ' - 'pairs to all test events generated by this test run. VAL may ' - 'be specified as VAL:TYPE, where TYPE may be int to convert ' - 'the value to an int')) # Re-run related arguments group = parser.add_argument_group('Test Re-run Options') @@ -301,15 +232,6 @@ def create_parser(): 'irrespective of the test method\'s marking as flakey. ' 'Default behavior is to apply re-runs only to flakey ' 'tests that generate issues.')) - group.add_argument( - '--rerun-max-file-threshold', - action='store', - type=int, - default=50, - help=('Maximum number of files requiring a rerun beyond ' - 'which the rerun will not occur. This is meant to ' - 'stop a catastrophically failing test suite from forcing ' - 'all tests to be rerun in the single-worker phase.')) # Remove the reference to our helper function del X diff --git a/lldb/packages/Python/lldbsuite/test/driver/batch_mode/Makefile b/lldb/packages/Python/lldbsuite/test/driver/batch_mode/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/driver/batch_mode/Makefile +++ b/lldb/packages/Python/lldbsuite/test/driver/batch_mode/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py b/lldb/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py index e61da05a792ff8c..b474207e0b25ab4 100644 --- a/lldb/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py +++ b/lldb/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py @@ -5,108 +5,82 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil +from lldbsuite.test.lldbpexpect import PExpectTest -class DriverBatchModeTest (TestBase): +class DriverBatchModeTest(PExpectTest): mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Our simple source filename. - self.source = 'main.c' - self.victim = None - - def expect_string(self, string): - import pexpect - """This expects for "string", with timeout & EOF being test fails.""" - try: - self.child.expect_exact(string) - except pexpect.EOF: - self.fail("Got EOF waiting for '%s'" % (string)) - except pexpect.TIMEOUT: - self.fail("Timed out waiting for '%s'" % (string)) + source = 'main.c' @skipIfRemote # test not remote-ready llvm.org/pr24813 @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") - @expectedFlakeyLinux("llvm.org/pr25172") - @expectedFailureAll( - oslist=["windows"], - bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") def test_batch_mode_run_crash(self): """Test that the lldb driver's batch mode works correctly.""" self.build() - self.setTearDownCleanup() - import pexpect exe = self.getBuildArtifact("a.out") module_cache = self.getBuildArtifact("module.cache") - prompt = "(lldb) " # Pass CRASH so the process will crash and stop in batch mode. - run_commands = ' -b -o "settings set symbols.clang-modules-cache-path %s" -o "break set -n main" -o "run" -o "continue" -k "frame var touch_me_not"' % module_cache - self.child = pexpect.spawn( - '%s %s %s %s -- CRASH' % - (lldbtest_config.lldbExec, self.lldbOption, run_commands, exe)) + extra_args = ['-b', + '-o', "settings set symbols.clang-modules-cache-path '%s'"%module_cache, + '-o', 'break set -n main', + '-o', 'run', + '-o', 'continue', + '-k', 'frame var touch_me_not', + '--', 'CRASH', + ] + self.launch(executable=exe, extra_args=extra_args) child = self.child # We should see the "run": - self.expect_string("run") + child.expect_exact("run") # We should have hit the breakpoint & continued: - self.expect_string("continue") + child.expect_exact("continue") # The App should have crashed: - self.expect_string("About to crash") + child.expect_exact("About to crash") # The -k option should have printed the frame variable once: - self.expect_string('(char *) touch_me_not') + child.expect_exact('(char *) touch_me_not') # Then we should have a live prompt: - self.expect_string(prompt) - self.child.sendline("frame variable touch_me_not") - self.expect_string('(char *) touch_me_not') - - self.deletePexpectChild() + self.expect_prompt() + self.expect("frame variable touch_me_not", substrs='(char *) touch_me_not') @skipIfRemote # test not remote-ready llvm.org/pr24813 @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") - @expectedFlakeyLinux("llvm.org/pr25172") - @expectedFailureAll( - oslist=["windows"], - bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") def test_batch_mode_run_exit(self): """Test that the lldb driver's batch mode works correctly.""" self.build() - self.setTearDownCleanup() - import pexpect exe = self.getBuildArtifact("a.out") module_cache = self.getBuildArtifact("module.cache") - prompt = "(lldb) " # Now do it again, and make sure if we don't crash, we quit: - run_commands = ' -b -o "settings set symbols.clang-modules-cache-path %s" -o "break set -n main" -o "run" -o "continue" '%module_cache - self.child = pexpect.spawn( - '%s %s %s %s -- NOCRASH' % - (lldbtest_config.lldbExec, self.lldbOption, run_commands, exe)) + extra_args = ['-b', + '-o', "settings set symbols.clang-modules-cache-path '%s'"%module_cache, + '-o', 'break set -n main', + '-o', 'run', + '-o', 'continue', + '--', 'NOCRASH', + ] + self.launch(executable=exe, extra_args=extra_args) child = self.child # We should see the "run": - self.expect_string("run") + child.expect_exact("run") # We should have hit the breakpoint & continued: - self.expect_string("continue") + child.expect_exact("continue") # The App should have not have crashed: - self.expect_string("Got there on time and it did not crash.") - # Then we should have a live prompt: - self.expect_string("exited") - index = self.child.expect([pexpect.EOF, pexpect.TIMEOUT]) - self.assertTrue( - index == 0, - "lldb didn't close on successful batch completion.") + child.expect_exact("Got there on time and it did not crash.") + + # Then lldb should exit. + child.expect_exact("exited") + import pexpect + child.expect(pexpect.EOF) def closeVictim(self): if self.victim is not None: @@ -115,27 +89,21 @@ def closeVictim(self): @skipIfRemote # test not remote-ready llvm.org/pr24813 @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") - @expectedFlakeyLinux("llvm.org/pr25172") @expectedFailureNetBSD - @expectedFailureAll( - oslist=["windows"], - bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") def test_batch_mode_attach_exit(self): """Test that the lldb driver's batch mode works correctly.""" self.build() self.setTearDownCleanup() - import pexpect exe = self.getBuildArtifact("a.out") module_cache = self.getBuildArtifact("module.cache") - prompt = "(lldb) " - # Finally, start up the process by hand, attach to it, and wait for its completion. + # Start up the process by hand, attach to it, and wait for its completion. # Attach is funny, since it looks like it stops with a signal on most Unixen so # care must be taken not to treat that as a reason to exit batch mode. # Start up the process by hand and wait for it to get to the wait loop. - + import pexpect self.victim = pexpect.spawn('%s WAIT' % (exe)) if self.victim is None: self.fail("Could not spawn ", exe, ".") @@ -143,38 +111,31 @@ def test_batch_mode_attach_exit(self): self.addTearDownHook(self.closeVictim) self.victim.expect("PID: ([0-9]+) END") - if self.victim.match is None: - self.fail("Couldn't get the target PID.") - victim_pid = int(self.victim.match.group(1)) self.victim.expect("Waiting") - run_commands = ' -b -o "settings set symbols.clang-modules-cache-path %s" -o "process attach -p %d" -o "breakpoint set --file %s -p \'Stop here to unset keep_waiting\' -N keep_waiting" -o "continue" -o "break delete keep_waiting" -o "expr keep_waiting = 0" -o "continue" ' % ( - module_cache, victim_pid, self.source) - self.child = pexpect.spawn( - '%s %s %s %s' % - (lldbtest_config.lldbExec, - self.lldbOption, - run_commands, - exe)) - + extra_args = [ + '-b', + '-o', "settings set symbols.clang-modules-cache-path '%s'"%module_cache, + '-o', 'process attach -p %d'%victim_pid, + '-o', "breakpoint set --file '%s' -p 'Stop here to unset keep_waiting' -N keep_waiting"%self.source, + '-o', 'continue', + '-o', 'break delete keep_waiting', + '-o', 'expr keep_waiting = 0', + '-o', 'continue', + ] + self.launch(executable=exe, extra_args=extra_args) child = self.child - # We should see the "run": - self.expect_string("attach") + child.expect_exact("attach") - self.expect_string(prompt + "continue") + child.expect_exact(self.PROMPT + "continue") - self.expect_string(prompt + "continue") + child.expect_exact(self.PROMPT + "continue") # Then we should see the process exit: - self.expect_string("Process %d exited with status" % (victim_pid)) - - victim_index = self.victim.expect([pexpect.EOF, pexpect.TIMEOUT]) - self.assertTrue(victim_index == 0, "Victim didn't really exit.") + child.expect_exact("Process %d exited with status" % (victim_pid)) - index = self.child.expect([pexpect.EOF, pexpect.TIMEOUT]) - self.assertTrue( - index == 0, - "lldb didn't close on successful batch completion.") + self.victim.expect(pexpect.EOF) + child.expect(pexpect.EOF) diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/anonymous-struct/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/argument_passing_restrictions/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/Makefile deleted file mode 100644 index 1c93ae1de439f67..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/call-restarts/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := lotta-signals.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/cast_int_to_anonymous_enum/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/char/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/char/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/char/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/class_template_specialization_empty_pack/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/completion/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/completion/Makefile deleted file mode 100644 index 6fc26a9193f0bd0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/completion/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp other.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/context-object/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/context-object/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/context-object/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/Makefile deleted file mode 100644 index 50d4ab65a6ece95..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/dont_allow_jit/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/expr-in-syscall/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/fixits/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/fixits/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/fixits/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/formatters/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/formatters/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/formatters/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-basic/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/forward_list-dbg-info-content/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-basic/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/list-dbg-info-content/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/no-std-module/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/queue/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr-dbg-info-content/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/shared_ptr/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/stack/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr-dbg-info-content/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/unique_ptr/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-basic/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-bool/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-dbg-info-content/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/vector-of-vectors/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr-dbg-info-content/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile deleted file mode 100644 index 01718d86aa71433..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/import-std-module/weak_ptr/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -USE_LIBCPP := 1 -CXXFLAGS += $(MANDATORY_CXXMODULE_BUILD_CFLAGS) -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/inline-namespace/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/Makefile deleted file mode 100644 index bf2c0b2c1087664..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter-phi-nodes/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/Makefile deleted file mode 100644 index c4169a9b1012183..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/ir-interpreter/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../make - -default: a.out - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/issue_11588/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/macros/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/macros/Makefile deleted file mode 100644 index 1ecd744be14b8c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/macros/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -DEBUG_INFO_FLAG = -g3 - - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/namespace_local_var_same_name_cpp_and_c/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/options/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/options/Makefile deleted file mode 100644 index 81ae6f6f16ec77e..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/options/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp foo.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/Makefile deleted file mode 100644 index db5f575866d94f0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_ptr_update/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules - - diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_types/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/persistent_variables/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/pr35310/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/pr35310/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/pr35310/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_8638051/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9531204/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_9673664/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/Makefile deleted file mode 100644 index f5a47fcc46ccf27..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/rdar44436068/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../make -C_SOURCES := main.c -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/save_jit_objects/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/Makefile deleted file mode 100644 index 83b24da17b4d999..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/scoped_enums/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp -CXXFLAGS += -std=c++11 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/test/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/test/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/test/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/timeout/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/timeout/Makefile deleted file mode 100644 index c9cff412c1b2d64..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/timeout/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := wait-a-while.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.mk b/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.mk deleted file mode 100644 index af97678b2cf530a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.mk +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := dummy.cpp -EXE := dummy - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/two-files/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/two-files/Makefile deleted file mode 100644 index 5974461e256f634..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/two-files/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../make - -OBJC_SOURCES := main.m foo.m - -include $(LEVEL)/Makefile.rules - -LDFLAGS += -framework Foundation \ No newline at end of file diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/unwind_expression/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/vector_of_enums/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/xvalue/Makefile b/lldb/packages/Python/lldbsuite/test/expression_command/xvalue/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/expression_command/xvalue/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py b/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py index b3095c758f9bc40..285445b29ef33c3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py b/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py index 519b93efebe2258..fc231de10556912 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/apropos_with_process/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile index 64da83becbdad00..4d1950cf34aa6ab 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../make - C_SOURCES := main.c MAKE_DSYM := NO ARCHIVE_NAME := libfoo.a ARCHIVE_C_SOURCES := a.c b.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py b/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py index a0c0968655589ec..eb3eefaa4e749c5 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/asan/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/asan/Makefile index dc8d682f831a4b9..4913a18d8cc6f9f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/asan/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/asan/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=address -g -gcolumn-info -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py b/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py index 17edf850eaa134e..6b299e6c3b8c062 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py b/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py index fcb2f47caddee4b..d523b472b3e7789 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import json import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/TestFdLeak.py b/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/TestFdLeak.py index 38848e87cc4a033..2593525189b41fa 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/TestFdLeak.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/avoids-fd-leak/TestFdLeak.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test import lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/backticks/TestBackticksWithoutATarget.py b/lldb/packages/Python/lldbsuite/test/functionalities/backticks/TestBackticksWithoutATarget.py index 528e52565b5ed45..37b652dded5366f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/backticks/TestBackticksWithoutATarget.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/backticks/TestBackticksWithoutATarget.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/Makefile deleted file mode 100644 index 6067ee45e984893..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/TestAddressBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/TestAddressBreakpoints.py deleted file mode 100644 index 46191d85296abbd..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/TestAddressBreakpoints.py +++ /dev/null @@ -1,99 +0,0 @@ -""" -Test address breakpoints set with shared library of SBAddress work correctly. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -import lldbsuite.test.lldbutil as lldbutil -from lldbsuite.test.lldbtest import * - - -class AddressBreakpointTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - NO_DEBUG_INFO_TESTCASE = True - - def test_address_breakpoints(self): - """Test address breakpoints set with shared library of SBAddress work correctly.""" - self.build() - self.address_breakpoints() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - - def address_breakpoints(self): - """Test address breakpoints set with shared library of SBAddress work correctly.""" - exe = self.getBuildArtifact("a.out") - - # Create a target by the debugger. - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # Now create a breakpoint on main.c by name 'c'. - breakpoint = target.BreakpointCreateBySourceRegex( - "Set a breakpoint here", lldb.SBFileSpec("main.c")) - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() >= 1, - VALID_BREAKPOINT) - - # Get the breakpoint location from breakpoint after we verified that, - # indeed, it has one location. - location = breakpoint.GetLocationAtIndex(0) - self.assertTrue(location and - location.IsEnabled(), - VALID_BREAKPOINT_LOCATION) - - # Next get the address from the location, and create an address breakpoint using - # that address: - - address = location.GetAddress() - target.BreakpointDelete(breakpoint.GetID()) - - breakpoint = target.BreakpointCreateBySBAddress(address) - - # Disable ASLR. This will allow us to actually test (on platforms that support this flag) - # that the breakpoint was able to track the module. - - launch_info = lldb.SBLaunchInfo(None) - flags = launch_info.GetLaunchFlags() - flags &= ~lldb.eLaunchFlagDisableASLR - launch_info.SetLaunchFlags(flags) - - error = lldb.SBError() - - process = target.Launch(launch_info, error) - self.assertTrue(process, PROCESS_IS_VALID) - - # Did we hit our breakpoint? - from lldbsuite.test.lldbutil import get_threads_stopped_at_breakpoint - threads = get_threads_stopped_at_breakpoint(process, breakpoint) - self.assertTrue( - len(threads) == 1, - "There should be a thread stopped at our breakpoint") - - # The hit count for the breakpoint should be 1. - self.assertTrue(breakpoint.GetHitCount() == 1) - - process.Kill() - - # Now re-launch and see that we hit the breakpoint again: - launch_info.Clear() - launch_info.SetLaunchFlags(flags) - - process = target.Launch(launch_info, error) - self.assertTrue(process, PROCESS_IS_VALID) - - thread = get_threads_stopped_at_breakpoint(process, breakpoint) - self.assertTrue( - len(threads) == 1, - "There should be a thread stopped at our breakpoint") - - # The hit count for the breakpoint should now be 2. - self.assertTrue(breakpoint.GetHitCount() == 2) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py deleted file mode 100644 index 460e07ceadf00da..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/TestBadAddressBreakpoints.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -Test that breakpoints set on a bad address say they are bad. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -import lldbsuite.test.lldbutil as lldbutil -from lldbsuite.test.lldbtest import * - - -class BadAddressBreakpointTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - NO_DEBUG_INFO_TESTCASE = True - - def test_bad_address_breakpoints(self): - """Test that breakpoints set on a bad address say they are bad.""" - self.build() - self.address_breakpoints() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - - def address_breakpoints(self): - """Test that breakpoints set on a bad address say they are bad.""" - target, process, thread, bkpt = \ - lldbutil.run_to_source_breakpoint(self, - "Set a breakpoint here", - lldb.SBFileSpec("main.c")) - - # Now see if we can read from 0. If I can't do that, I don't - # have a good way to know what an illegal address is... - error = lldb.SBError() - - ptr = process.ReadPointerFromMemory(0x0, error) - - if not error.Success(): - bkpt = target.BreakpointCreateByAddress(0x0) - for bp_loc in bkpt: - self.assertTrue(bp_loc.IsResolved() == False) - else: - self.fail( - "Could not find an illegal address at which to set a bad breakpoint.") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/main.c deleted file mode 100644 index 6b779296e188359..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/address_breakpoints/main.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -int -main() -{ - printf ("Set a breakpoint here.\n"); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/Makefile deleted file mode 100644 index 6067ee45e984893..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/TestBreakpointAutoContinue.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/TestBreakpointAutoContinue.py deleted file mode 100644 index b5e38eec5793717..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/TestBreakpointAutoContinue.py +++ /dev/null @@ -1,104 +0,0 @@ -""" -Test that the breakpoint auto-continue flag works correctly. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -import lldbsuite.test.lldbutil as lldbutil -from lldbsuite.test.lldbtest import * - - -class BreakpointAutoContinue(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - NO_DEBUG_INFO_TESTCASE = True - - def test_breakpoint_auto_continue(self): - """Make sure the auto continue continues with no other complications""" - self.build() - self.simple_auto_continue() - - def test_auto_continue_with_command(self): - """Add a command, make sure the command gets run""" - self.build() - self.auto_continue_with_command() - - def test_auto_continue_on_location(self): - """Set auto-continue on a location and make sure only that location continues""" - self.build() - self.auto_continue_location() - - def make_target_and_bkpt(self, additional_options=None, num_expected_loc=1, - pattern="Set a breakpoint here"): - exe = self.getBuildArtifact("a.out") - self.target = self.dbg.CreateTarget(exe) - self.assertTrue(self.target.IsValid(), "Target is not valid") - - extra_options_txt = "--auto-continue 1 " - if additional_options: - extra_options_txt += additional_options - bpno = lldbutil.run_break_set_by_source_regexp(self, pattern, - extra_options = extra_options_txt, - num_expected_locations = num_expected_loc) - return bpno - - def launch_it (self, expected_state): - error = lldb.SBError() - launch_info = lldb.SBLaunchInfo(None) - launch_info.SetWorkingDirectory(self.get_process_working_directory()) - - process = self.target.Launch(launch_info, error) - self.assertTrue(error.Success(), "Launch failed.") - - state = process.GetState() - self.assertEqual(state, expected_state, "Didn't get expected state") - - return process - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - - def simple_auto_continue(self): - bpno = self.make_target_and_bkpt() - process = self.launch_it(lldb.eStateExited) - - bkpt = self.target.FindBreakpointByID(bpno) - self.assertEqual(bkpt.GetHitCount(), 2, "Should have run through the breakpoint twice") - - def auto_continue_with_command(self): - bpno = self.make_target_and_bkpt("-N BKPT -C 'break modify --auto-continue 0 BKPT'") - process = self.launch_it(lldb.eStateStopped) - state = process.GetState() - self.assertEqual(state, lldb.eStateStopped, "Process should be stopped") - bkpt = self.target.FindBreakpointByID(bpno) - threads = lldbutil.get_threads_stopped_at_breakpoint(process, bkpt) - self.assertEqual(len(threads), 1, "There was a thread stopped at our breakpoint") - self.assertEqual(bkpt.GetHitCount(), 2, "Should have hit the breakpoint twice") - - def auto_continue_location(self): - bpno = self.make_target_and_bkpt(pattern="Set a[^ ]* breakpoint here", num_expected_loc=2) - bkpt = self.target.FindBreakpointByID(bpno) - bkpt.SetAutoContinue(False) - - loc = lldb.SBBreakpointLocation() - for i in range(0,2): - func_name = bkpt.location[i].GetAddress().function.name - if func_name == "main": - loc = bkpt.location[i] - - self.assertTrue(loc.IsValid(), "Didn't find a location in main") - loc.SetAutoContinue(True) - - process = self.launch_it(lldb.eStateStopped) - - threads = lldbutil.get_threads_stopped_at_breakpoint(process, bkpt) - self.assertEqual(len(threads), 1, "Didn't get one thread stopped at our breakpoint") - func_name = threads[0].frame[0].function.name - self.assertEqual(func_name, "call_me") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/main.c deleted file mode 100644 index a37f05e0290a9ee..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/auto_continue/main.c +++ /dev/null @@ -1,19 +0,0 @@ -#include - -void -call_me() -{ - printf("Set another breakpoint here.\n"); -} - -int -main() -{ - int change_me = 0; - for (int i = 0; i < 2; i++) - { - printf ("Set a breakpoint here: %d with: %d.\n", i, change_me); - } - call_me(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/Makefile deleted file mode 100644 index 6c22351dc3b545a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 -gcolumn-info - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py deleted file mode 100644 index f06fb07b3bf63a4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -Test setting a breakpoint by line and column. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointByLineAndColumnTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - ## Skip gcc version less 7.1 since it doesn't support -gcolumn-info - @skipIf(compiler="gcc", compiler_version=['<', '7.1']) - def testBreakpointByLineAndColumn(self): - self.build() - main_c = lldb.SBFileSpec("main.c") - _, _, _, breakpoint = lldbutil.run_to_line_breakpoint(self, - main_c, 19, 50) - self.expect("fr v did_call", substrs='1') - in_then = False - for i in range(breakpoint.GetNumLocations()): - b_loc = breakpoint.GetLocationAtIndex(i).GetAddress().GetLineEntry() - self.assertEqual(b_loc.GetLine(), 19) - in_then |= b_loc.GetColumn() == 50 - self.assertTrue(in_then) - - ## Skip gcc version less 7.1 since it doesn't support -gcolumn-info - @skipIf(compiler="gcc", compiler_version=['<', '7.1']) - def testBreakpointByLine(self): - self.build() - main_c = lldb.SBFileSpec("main.c") - _, _, _, breakpoint = lldbutil.run_to_line_breakpoint(self, main_c, 19) - self.expect("fr v did_call", substrs='0') - in_condition = False - for i in range(breakpoint.GetNumLocations()): - b_loc = breakpoint.GetLocationAtIndex(i).GetAddress().GetLineEntry() - self.assertEqual(b_loc.GetLine(), 19) - in_condition |= b_loc.GetColumn() < 30 - self.assertTrue(in_condition) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/main.c deleted file mode 100644 index f9adad3057553a0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_by_line_and_column/main.c +++ /dev/null @@ -1,22 +0,0 @@ -//===-- main.c --------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int square(int x) -{ - return x * x; -} - -int main (int argc, char const *argv[]) -{ - int did_call = 0; - - // Line 20. v Column 50. - if(square(argc+1) != 0) { did_call = 1; return square(argc); } - // ^ - return square(0); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/Makefile deleted file mode 100644 index a6376f9b165d4f8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_command/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c a.c b.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/Makefile deleted file mode 100644 index 6067ee45e984893..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py deleted file mode 100644 index 959c7e8f95cce47..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py +++ /dev/null @@ -1,237 +0,0 @@ -""" -Test breakpoint conditions with 'breakpoint modify -c id'. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointConditionsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - # Requires EE to support COFF on Windows (http://llvm.org/pr22232) - @skipIfWindows - def test_breakpoint_condition_and_run_command(self): - """Exercise breakpoint condition with 'breakpoint modify -c id'.""" - self.build() - self.breakpoint_conditions() - - # Requires EE to support COFF on Windows (http://llvm.org/pr22232) - @skipIfWindows - def test_breakpoint_condition_inline_and_run_command(self): - """Exercise breakpoint condition inline with 'breakpoint set'.""" - self.build() - self.breakpoint_conditions(inline=True) - - # Requires EE to support COFF on Windows (http://llvm.org/pr22232) - @skipIfWindows - @add_test_categories(['pyapi']) - def test_breakpoint_condition_and_python_api(self): - """Use Python APIs to set breakpoint conditions.""" - self.build() - self.breakpoint_conditions_python() - - # Requires EE to support COFF on Windows (http://llvm.org/pr22232) - @skipIfWindows - @add_test_categories(['pyapi']) - def test_breakpoint_invalid_condition_and_python_api(self): - """Use Python APIs to set breakpoint conditions.""" - self.build() - self.breakpoint_invalid_conditions_python() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to of function 'c'. - self.line1 = line_number( - 'main.c', '// Find the line number of function "c" here.') - self.line2 = line_number( - 'main.c', "// Find the line number of c's parent call here.") - - def breakpoint_conditions(self, inline=False): - """Exercise breakpoint condition with 'breakpoint modify -c id'.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - if inline: - # Create a breakpoint by function name 'c' and set the condition. - lldbutil.run_break_set_by_symbol( - self, - "c", - extra_options="-c 'val == 3'", - num_expected_locations=1, - sym_exact=True) - else: - # Create a breakpoint by function name 'c'. - lldbutil.run_break_set_by_symbol( - self, "c", num_expected_locations=1, sym_exact=True) - - # And set a condition on the breakpoint to stop on when 'val == 3'. - self.runCmd("breakpoint modify -c 'val == 3' 1") - - # Now run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # The process should be stopped at this point. - self.expect("process status", PROCESS_STOPPED, - patterns=['Process .* stopped']) - - # 'frame variable --show-types val' should return 3 due to breakpoint condition. - self.expect( - "frame variable --show-types val", - VARIABLES_DISPLAYED_CORRECTLY, - startstr='(int) val = 3') - - # Also check the hit count, which should be 3, by design. - self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE, - substrs=["resolved = 1", - "Condition: val == 3", - "hit count = 1"]) - - # The frame #0 should correspond to main.c:36, the executable statement - # in function name 'c'. And the parent frame should point to - # main.c:24. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT_CONDITION, - #substrs = ["stop reason = breakpoint"], - patterns=["frame #0.*main.c:%d" % self.line1, - "frame #1.*main.c:%d" % self.line2]) - - # Test that "breakpoint modify -c ''" clears the condition for the last - # created breakpoint, so that when the breakpoint hits, val == 1. - self.runCmd("process kill") - self.runCmd("breakpoint modify -c ''") - self.expect( - "breakpoint list -f", - BREAKPOINT_STATE_CORRECT, - matching=False, - substrs=["Condition:"]) - - # Now run the program again. - self.runCmd("run", RUN_SUCCEEDED) - - # The process should be stopped at this point. - self.expect("process status", PROCESS_STOPPED, - patterns=['Process .* stopped']) - - # 'frame variable --show-types val' should return 1 since it is the first breakpoint hit. - self.expect( - "frame variable --show-types val", - VARIABLES_DISPLAYED_CORRECTLY, - startstr='(int) val = 1') - - self.runCmd("process kill") - - def breakpoint_conditions_python(self): - """Use Python APIs to set breakpoint conditions.""" - exe = self.getBuildArtifact("a.out") - - # Create a target by the debugger. - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # Now create a breakpoint on main.c by name 'c'. - breakpoint = target.BreakpointCreateByName('c', 'a.out') - #print("breakpoint:", breakpoint) - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() == 1, - VALID_BREAKPOINT) - - # We didn't associate a thread index with the breakpoint, so it should - # be invalid. - self.assertTrue(breakpoint.GetThreadIndex() == lldb.UINT32_MAX, - "The thread index should be invalid") - # The thread name should be invalid, too. - self.assertTrue(breakpoint.GetThreadName() is None, - "The thread name should be invalid") - - # Let's set the thread index for this breakpoint and verify that it is, - # indeed, being set correctly. - # There's only one thread for the process. - breakpoint.SetThreadIndex(1) - self.assertTrue(breakpoint.GetThreadIndex() == 1, - "The thread index has been set correctly") - - # Get the breakpoint location from breakpoint after we verified that, - # indeed, it has one location. - location = breakpoint.GetLocationAtIndex(0) - self.assertTrue(location and - location.IsEnabled(), - VALID_BREAKPOINT_LOCATION) - - # Set the condition on the breakpoint location. - location.SetCondition('val == 3') - self.expect(location.GetCondition(), exe=False, - startstr='val == 3') - - # Now launch the process, and do not stop at entry point. - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - # Frame #0 should be on self.line1 and the break condition should hold. - from lldbsuite.test.lldbutil import get_stopped_thread - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint condition") - frame0 = thread.GetFrameAtIndex(0) - var = frame0.FindValue('val', lldb.eValueTypeVariableArgument) - self.assertTrue(frame0.GetLineEntry().GetLine() == self.line1 and - var.GetValue() == '3') - - # The hit count for the breakpoint should be 1. - self.assertTrue(breakpoint.GetHitCount() == 1) - - # Test that the condition expression didn't create a result variable: - options = lldb.SBExpressionOptions() - value = frame0.EvaluateExpression("$0", options) - self.assertTrue(value.GetError().Fail(), - "Conditions should not make result variables.") - process.Continue() - - def breakpoint_invalid_conditions_python(self): - """Use Python APIs to set breakpoint conditions.""" - exe = self.getBuildArtifact("a.out") - - # Create a target by the debugger. - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # Now create a breakpoint on main.c by name 'c'. - breakpoint = target.BreakpointCreateByName('c', 'a.out') - #print("breakpoint:", breakpoint) - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() == 1, - VALID_BREAKPOINT) - - # Set the condition on the breakpoint. - breakpoint.SetCondition('no_such_variable == not_this_one_either') - self.expect(breakpoint.GetCondition(), exe=False, - startstr='no_such_variable == not_this_one_either') - - # Now launch the process, and do not stop at entry point. - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - # Frame #0 should be on self.line1 and the break condition should hold. - from lldbsuite.test.lldbutil import get_stopped_thread - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint condition") - frame0 = thread.GetFrameAtIndex(0) - var = frame0.FindValue('val', lldb.eValueTypeVariableArgument) - self.assertTrue(frame0.GetLineEntry().GetLine() == self.line1) - - # The hit count for the breakpoint should be 1. - self.assertTrue(breakpoint.GetHitCount() == 1) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/main.c deleted file mode 100644 index c830b17a3ce7ae4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_conditions/main.c +++ /dev/null @@ -1,53 +0,0 @@ -//===-- main.c --------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include - -// This simple program is to demonstrate the capability of the lldb command -// "breakpoint modify -c 'val == 3' breakpt-id" to break within c(int val) only -// when the value of the arg is 3. - -int a(int); -int b(int); -int c(int); - -int a(int val) -{ - if (val <= 1) - return b(val); - else if (val >= 3) - return c(val); // Find the line number of c's parent call here. - - return val; -} - -int b(int val) -{ - return c(val); -} - -int c(int val) -{ - return val + 3; // Find the line number of function "c" here. -} - -int main (int argc, char const *argv[]) -{ - int A1 = a(1); // a(1) -> b(1) -> c(1) - printf("a(1) returns %d\n", A1); - - int B2 = b(2); // b(2) -> c(2) - printf("b(2) returns %d\n", B2); - - int A3 = a(3); // a(3) -> c(3) - printf("a(3) returns %d\n", A3); - - for (int i = 0; i < 2; ++i) - printf("Loop\n"); - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/TestBreakpointHitCount.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/TestBreakpointHitCount.py deleted file mode 100644 index 6f696be83249d28..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/TestBreakpointHitCount.py +++ /dev/null @@ -1,134 +0,0 @@ -""" -Test breakpoint hit count features. -""" - -from __future__ import print_function - -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointHitCountTestCase(TestBase): - - NO_DEBUG_INFO_TESTCASE = True - - mydir = TestBase.compute_mydir(__file__) - - @add_test_categories(['pyapi']) - def test_breakpoint_location_hit_count(self): - """Use Python APIs to check breakpoint hit count.""" - self.build() - self.do_test_breakpoint_location_hit_count() - - def test_breakpoint_one_shot(self): - """Check that one-shot breakpoints trigger only once.""" - self.build() - - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - self.runCmd("tb a") - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - from lldbsuite.test.lldbutil import get_stopped_thread - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint") - - frame0 = thread.GetFrameAtIndex(0) - self.assertTrue(frame0.GetFunctionName() == "a(int)" or frame0.GetFunctionName() == "int a(int)"); - - process.Continue() - self.assertEqual(process.GetState(), lldb.eStateExited) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - self.a_int_body_line_no = line_number( - 'main.cpp', '// Breakpoint Location 1') - self.a_float_body_line_no = line_number( - 'main.cpp', '// Breakpoint Location 2') - - def do_test_breakpoint_location_hit_count(self): - """Use Python APIs to check breakpoint hit count.""" - exe = self.getBuildArtifact("a.out") - - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # Create a breakpoint in main.cpp by name 'a', - # there should be two locations. - breakpoint = target.BreakpointCreateByName('a', 'a.out') - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() == 2, - VALID_BREAKPOINT) - - # Verify all breakpoint locations are enabled. - location1 = breakpoint.GetLocationAtIndex(0) - self.assertTrue(location1 and - location1.IsEnabled(), - VALID_BREAKPOINT_LOCATION) - - location2 = breakpoint.GetLocationAtIndex(1) - self.assertTrue(location2 and - location2.IsEnabled(), - VALID_BREAKPOINT_LOCATION) - - # Launch the process, and do not stop at entry point. - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - # Verify 1st breakpoint location is hit. - from lldbsuite.test.lldbutil import get_stopped_thread - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint") - - frame0 = thread.GetFrameAtIndex(0) - location1 = breakpoint.FindLocationByAddress(frame0.GetPC()) - self.assertTrue( - frame0.GetLineEntry().GetLine() == self.a_int_body_line_no, - "Stopped in int a(int)") - self.assertTrue(location1) - self.assertEqual(location1.GetHitCount(), 1) - self.assertEqual(breakpoint.GetHitCount(), 1) - - process.Continue() - - # Verify 2nd breakpoint location is hit. - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint") - - frame0 = thread.GetFrameAtIndex(0) - location2 = breakpoint.FindLocationByAddress(frame0.GetPC()) - self.assertTrue( - frame0.GetLineEntry().GetLine() == self.a_float_body_line_no, - "Stopped in float a(float)") - self.assertTrue(location2) - self.assertEqual(location2.GetHitCount(), 1) - self.assertEqual(location1.GetHitCount(), 1) - self.assertEqual(breakpoint.GetHitCount(), 2) - - process.Continue() - - # Verify 2nd breakpoint location is hit again. - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint") - - self.assertEqual(location2.GetHitCount(), 2) - self.assertEqual(location1.GetHitCount(), 1) - self.assertEqual(breakpoint.GetHitCount(), 3) - - process.Continue() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/main.cpp deleted file mode 100644 index 9fc133f2400670d..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_hit_count/main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int a(int val) -{ - return val; // Breakpoint Location 1 -} - -float a(float val) -{ - return val; // Breakpoint Location 2 -} - -int main (int argc, char const *argv[]) -{ - int A1 = a(1); - float A2 = a(2.0f); - float A3 = a(3.0f); - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/Makefile deleted file mode 100644 index f89b52a972e9f76..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -ifneq (,$(findstring icc,$(CC))) - CXXFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py deleted file mode 100644 index 02fb1e0f49d4ee5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/TestBreakpointIDs.py +++ /dev/null @@ -1,60 +0,0 @@ -""" -Test lldb breakpoint ids. -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil - - -class BreakpointIDTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def test(self): - self.build() - - exe = self.getBuildArtifact("a.out") - self.expect("file " + exe, - patterns=["Current executable set to .*a.out"]) - - bpno = lldbutil.run_break_set_by_symbol( - self, 'product', num_expected_locations=-1, sym_exact=False) - self.assertTrue(bpno == 1, "First breakpoint number is 1.") - - bpno = lldbutil.run_break_set_by_symbol( - self, 'sum', num_expected_locations=-1, sym_exact=False) - self.assertTrue(bpno == 2, "Second breakpoint number is 2.") - - bpno = lldbutil.run_break_set_by_symbol( - self, 'junk', num_expected_locations=0, sym_exact=False) - self.assertTrue(bpno == 3, "Third breakpoint number is 3.") - - self.expect( - "breakpoint disable 1.1 - 2.2 ", - COMMAND_FAILED_AS_EXPECTED, - error=True, - startstr="error: Invalid range: Ranges that specify particular breakpoint locations must be within the same major breakpoint; you specified two different major breakpoints, 1 and 2.") - - self.expect( - "breakpoint disable 2 - 2.2", - COMMAND_FAILED_AS_EXPECTED, - error=True, - startstr="error: Invalid breakpoint id range: Either both ends of range must specify a breakpoint location, or neither can specify a breakpoint location.") - - self.expect( - "breakpoint disable 2.1 - 2", - COMMAND_FAILED_AS_EXPECTED, - error=True, - startstr="error: Invalid breakpoint id range: Either both ends of range must specify a breakpoint location, or neither can specify a breakpoint location.") - - self.expect("breakpoint disable 2.1 - 2.2", - startstr="2 breakpoints disabled.") - - self.expect("breakpoint enable 2.*", - patterns=[".* breakpoints enabled."]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/main.cpp deleted file mode 100644 index 3c98e147f221797..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ids/main.cpp +++ /dev/null @@ -1,64 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include -#include -#include - - -#define INLINE inline __attribute__((always_inline)) - -INLINE int -product (int x, int y) -{ - int result = x * y; - return result; -} - -INLINE int -sum (int a, int b) -{ - int result = a + b; - return result; -} - -int -strange_max (int m, int n) -{ - if (m > n) - return m; - else if (n > m) - return n; - else - return 0; -} - -int -foo (int i, int j) -{ - if (strange_max (i, j) == i) - return product (i, j); - else if (strange_max (i, j) == j) - return sum (i, j); - else - return product (sum (i, i), sum (j, j)); -} - -int -main(int argc, char const *argv[]) -{ - - int array[3]; - - array[0] = foo (1238, 78392); - array[1] = foo (379265, 23674); - array[2] = foo (872934, 234); - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py deleted file mode 100644 index e3bf4c27f31e749..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py +++ /dev/null @@ -1,154 +0,0 @@ -""" -Test breakpoint ignore count features. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointIgnoreCountTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # This test will hang on windows llvm.org/pr21753 - def test_with_run_command(self): - """Exercise breakpoint ignore count with 'breakpoint set -i '.""" - self.build() - self.breakpoint_ignore_count() - - @add_test_categories(['pyapi']) - @skipIfWindows # This test will hang on windows llvm.org/pr21753 - def test_with_python_api(self): - """Use Python APIs to set breakpoint ignore count.""" - self.build() - self.breakpoint_ignore_count_python() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to of function 'c'. - self.line1 = line_number( - 'main.c', '// Find the line number of function "c" here.') - self.line2 = line_number( - 'main.c', '// b(2) -> c(2) Find the call site of b(2).') - self.line3 = line_number( - 'main.c', '// a(3) -> c(3) Find the call site of c(3).') - self.line4 = line_number( - 'main.c', '// a(3) -> c(3) Find the call site of a(3).') - self.line5 = line_number( - 'main.c', '// Find the call site of c in main.') - - def breakpoint_ignore_count(self): - """Exercise breakpoint ignore count with 'breakpoint set -i '.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # Create a breakpoint in main.c at line1. - lldbutil.run_break_set_by_file_and_line( - self, - 'main.c', - self.line1, - extra_options='-i 1', - num_expected_locations=1, - loc_exact=True) - - # Now run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # The process should be stopped at this point. - self.expect("process status", PROCESS_STOPPED, - patterns=['Process .* stopped']) - - # Also check the hit count, which should be 2, due to ignore count of - # 1. - self.expect("breakpoint list -f", BREAKPOINT_HIT_THRICE, - substrs=["resolved = 1", - "hit count = 2"]) - - # The frame #0 should correspond to main.c:37, the executable statement - # in function name 'c'. And frame #2 should point to main.c:45. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT_IGNORE_COUNT, - #substrs = ["stop reason = breakpoint"], - patterns=["frame #0.*main.c:%d" % self.line1, - "frame #2.*main.c:%d" % self.line2]) - - # continue -i 1 is the same as setting the ignore count to 1 again, try that: - # Now run the program. - self.runCmd("process continue -i 1", RUN_SUCCEEDED) - - # The process should be stopped at this point. - self.expect("process status", PROCESS_STOPPED, - patterns=['Process .* stopped']) - - # Also check the hit count, which should be 2, due to ignore count of - # 1. - self.expect("breakpoint list -f", BREAKPOINT_HIT_THRICE, - substrs=["resolved = 1", - "hit count = 4"]) - - # The frame #0 should correspond to main.c:37, the executable statement - # in function name 'c'. And frame #2 should point to main.c:45. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT_IGNORE_COUNT, - #substrs = ["stop reason = breakpoint"], - patterns=["frame #0.*main.c:%d" % self.line1, - "frame #1.*main.c:%d" % self.line5]) - - def breakpoint_ignore_count_python(self): - """Use Python APIs to set breakpoint ignore count.""" - exe = self.getBuildArtifact("a.out") - - # Create a target by the debugger. - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # Now create a breakpoint on main.c by name 'c'. - breakpoint = target.BreakpointCreateByName('c', 'a.out') - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() == 1, - VALID_BREAKPOINT) - - # Get the breakpoint location from breakpoint after we verified that, - # indeed, it has one location. - location = breakpoint.GetLocationAtIndex(0) - self.assertTrue(location and - location.IsEnabled(), - VALID_BREAKPOINT_LOCATION) - - # Set the ignore count on the breakpoint location. - location.SetIgnoreCount(2) - self.assertTrue(location.GetIgnoreCount() == 2, - "SetIgnoreCount() works correctly") - - # Now launch the process, and do not stop at entry point. - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - # Frame#0 should be on main.c:37, frame#1 should be on main.c:25, and - # frame#2 should be on main.c:48. - # lldbutil.print_stacktraces(process) - from lldbsuite.test.lldbutil import get_stopped_thread - thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint) - self.assertTrue( - thread.IsValid(), - "There should be a thread stopped due to breakpoint") - frame0 = thread.GetFrameAtIndex(0) - frame1 = thread.GetFrameAtIndex(1) - frame2 = thread.GetFrameAtIndex(2) - self.assertTrue(frame0.GetLineEntry().GetLine() == self.line1 and - frame1.GetLineEntry().GetLine() == self.line3 and - frame2.GetLineEntry().GetLine() == self.line4, - STOPPED_DUE_TO_BREAKPOINT_IGNORE_COUNT) - - # The hit count for the breakpoint should be 3. - self.assertTrue(breakpoint.GetHitCount() == 3) - - process.Continue() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/main.c deleted file mode 100644 index b1ed4465c1d4eb4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_ignore_count/main.c +++ /dev/null @@ -1,53 +0,0 @@ -//===-- main.c --------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include - -// This simple program is to demonstrate the capability of the lldb command -// "breakpoint modify -i breakpt-id" to set the number of times a -// breakpoint is skipped before stopping. Ignore count can also be set upon -// breakpoint creation by 'breakpoint set ... -i '. - -int a(int); -int b(int); -int c(int); - -int a(int val) -{ - if (val <= 1) - return b(val); - else if (val >= 3) - return c(val); // a(3) -> c(3) Find the call site of c(3). - - return val; -} - -int b(int val) -{ - return c(val); -} - -int c(int val) -{ - return val + 3; // Find the line number of function "c" here. -} - -int main (int argc, char const *argv[]) -{ - int A1 = a(1); // a(1) -> b(1) -> c(1) - printf("a(1) returns %d\n", A1); - - int B2 = b(2); // b(2) -> c(2) Find the call site of b(2). - printf("b(2) returns %d\n", B2); - - int A3 = a(3); // a(3) -> c(3) Find the call site of a(3). - printf("a(3) returns %d\n", A3); - - int C1 = c(5); // Find the call site of c in main. - printf ("c(5) returns %d\n", C1); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/Makefile deleted file mode 100644 index 77aa24afc0f7f9f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/TestAvoidBreakpointInDelaySlot.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/TestAvoidBreakpointInDelaySlot.py deleted file mode 100644 index 6eaab0c680f5091..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/TestAvoidBreakpointInDelaySlot.py +++ /dev/null @@ -1,89 +0,0 @@ -""" -Test specific to MIPS -""" - -from __future__ import print_function - -import os -import time -import re -import unittest2 -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class AvoidBreakpointInDelaySlotAPITestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIf(archs=no_match(re.compile('mips*'))) - def test(self): - self.build() - exe = self.getBuildArtifact("a.out") - self.expect("file " + exe, - patterns=["Current executable set to .*a.out.*"]) - - # Create a target by the debugger. - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - breakpoint = target.BreakpointCreateByName('main', 'a.out') - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() == 1, - VALID_BREAKPOINT) - - # Now launch the process, and do not stop at entry point. - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - list = target.FindFunctions('foo', lldb.eFunctionNameTypeAuto) - self.assertTrue(list.GetSize() == 1) - sc = list.GetContextAtIndex(0) - self.assertTrue(sc.GetSymbol().GetName() == "foo") - function = sc.GetFunction() - self.assertTrue(function) - self.function(function, target) - - def function(self, function, target): - """Iterate over instructions in function and place a breakpoint on delay slot instruction""" - # Get the list of all instructions in the function - insts = function.GetInstructions(target) - print(insts) - i = 0 - for inst in insts: - if (inst.HasDelaySlot()): - # Remember the address of branch instruction. - branchinstaddress = inst.GetAddress().GetLoadAddress(target) - - # Get next instruction i.e delay slot instruction. - delayinst = insts.GetInstructionAtIndex(i + 1) - delayinstaddr = delayinst.GetAddress().GetLoadAddress(target) - - # Set breakpoint on delay slot instruction - breakpoint = target.BreakpointCreateByAddress(delayinstaddr) - - # Verify the breakpoint. - self.assertTrue(breakpoint and - breakpoint.GetNumLocations() == 1, - VALID_BREAKPOINT) - # Get the location from breakpoint - location = breakpoint.GetLocationAtIndex(0) - - # Get the address where breakpoint is actually set. - bpaddr = location.GetLoadAddress() - - # Breakpoint address should be adjusted to the address of - # branch instruction. - self.assertTrue(branchinstaddress == bpaddr) - i += 1 - else: - i += 1 - -if __name__ == '__main__': - import atexit - lldb.SBDebugger.Initialize() - atexit.register(lambda: lldb.SBDebugger.Terminate()) - unittest2.main() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/main.c deleted file mode 100644 index bc3eceea7693963..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_in_delayslot/main.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -foo (int a, int b) -{ - int c; - if (a<=b) - c=b-a; - else - c=b+a; - return c; -} - -int main() -{ - int a=7, b=8, c; - - c = foo(a, b); - -return 0; -} - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/Makefile deleted file mode 100644 index 4f6b058fa32489a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := a.c -CXX_SOURCES := main.cpp b.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/TestBreakpointLanguage.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/TestBreakpointLanguage.py deleted file mode 100644 index b69007014b10c29..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/TestBreakpointLanguage.py +++ /dev/null @@ -1,137 +0,0 @@ -""" -Test that the language option for breakpoints works correctly -parser. -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil -import shutil -import subprocess - - -class TestBreakpointLanguage(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - - def check_location_file(self, bp, loc, test_name): - bp_loc = bp.GetLocationAtIndex(loc) - addr = bp_loc.GetAddress() - comp_unit = addr.GetCompileUnit() - comp_name = comp_unit.GetFileSpec().GetFilename() - return comp_name == test_name - - def test_regex_breakpoint_language(self): - """Test that the name regex breakpoint commands obey the language filter.""" - - self.build() - # Create a target by the debugger. - exe = self.getBuildArtifact("a.out") - error = lldb.SBError() - # Don't read in dependencies so we don't come across false matches that - # add unwanted breakpoint hits. - self.target = self.dbg.CreateTarget(exe, None, None, False, error) - self.assertTrue(self.target, VALID_TARGET) - - cpp_bp = self.target.BreakpointCreateByRegex( - "func_from", - lldb.eLanguageTypeC_plus_plus, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - cpp_bp.GetNumLocations() == 1, - "Only one C++ symbol matches") - self.assertTrue(self.check_location_file(cpp_bp, 0, "b.cpp")) - - c_bp = self.target.BreakpointCreateByRegex( - "func_from", - lldb.eLanguageTypeC, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - c_bp.GetNumLocations() == 1, - "Only one C symbol matches") - self.assertTrue(self.check_location_file(c_bp, 0, "a.c")) - - objc_bp = self.target.BreakpointCreateByRegex( - "func_from", - lldb.eLanguageTypeObjC, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - objc_bp.GetNumLocations() == 0, - "No ObjC symbol matches") - - def test_by_name_breakpoint_language(self): - """Test that the name regex breakpoint commands obey the language filter.""" - - self.build() - # Create a target by the debugger. - exe = self.getBuildArtifact("a.out") - error = lldb.SBError() - # Don't read in dependencies so we don't come across false matches that - # add unwanted breakpoint hits. - self.target = self.dbg.CreateTarget(exe, None, None, False, error) - self.assertTrue(self.target, VALID_TARGET) - - cpp_bp = self.target.BreakpointCreateByName( - "func_from_cpp", - lldb.eFunctionNameTypeAuto, - lldb.eLanguageTypeC_plus_plus, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - cpp_bp.GetNumLocations() == 1, - "Only one C++ symbol matches") - self.assertTrue(self.check_location_file(cpp_bp, 0, "b.cpp")) - - no_cpp_bp = self.target.BreakpointCreateByName( - "func_from_c", - lldb.eFunctionNameTypeAuto, - lldb.eLanguageTypeC_plus_plus, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - no_cpp_bp.GetNumLocations() == 0, - "And the C one doesn't match") - - c_bp = self.target.BreakpointCreateByName( - "func_from_c", - lldb.eFunctionNameTypeAuto, - lldb.eLanguageTypeC, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - c_bp.GetNumLocations() == 1, - "Only one C symbol matches") - self.assertTrue(self.check_location_file(c_bp, 0, "a.c")) - - no_c_bp = self.target.BreakpointCreateByName( - "func_from_cpp", - lldb.eFunctionNameTypeAuto, - lldb.eLanguageTypeC, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - no_c_bp.GetNumLocations() == 0, - "And the C++ one doesn't match") - - objc_bp = self.target.BreakpointCreateByName( - "func_from_cpp", - lldb.eFunctionNameTypeAuto, - lldb.eLanguageTypeObjC, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - objc_bp.GetNumLocations() == 0, - "No ObjC symbol matches") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/a.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/a.c deleted file mode 100644 index b90e2bdcca5d0ce..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/a.c +++ /dev/null @@ -1,5 +0,0 @@ -int -func_from_c () -{ - return 5; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/b.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/b.cpp deleted file mode 100644 index 89373445b9aae8f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/b.cpp +++ /dev/null @@ -1,5 +0,0 @@ -int -func_from_cpp() -{ - return 10; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/main.cpp deleted file mode 100644 index b7d00a602029047..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_language/main.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include -extern "C" int func_from_c(); -extern int func_from_cpp(); - -int -main() -{ - func_from_c(); - func_from_cpp(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/Makefile deleted file mode 100644 index 7934cd5db427b7b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -ifneq (,$(findstring icc,$(CC))) - CFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py deleted file mode 100644 index f4835a9b9c447b2..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py +++ /dev/null @@ -1,200 +0,0 @@ -""" -Test breakpoint commands for a breakpoint ID with multiple locations. -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointLocationsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24528") - def test_enable(self): - """Test breakpoint enable/disable for a breakpoint ID with multiple locations.""" - self.build() - self.breakpoint_locations_test() - - def test_shadowed_cond_options(self): - """Test that options set on the breakpoint and location behave correctly.""" - self.build() - self.shadowed_bkpt_cond_test() - - - def test_shadowed_command_options(self): - """Test that options set on the breakpoint and location behave correctly.""" - self.build() - self.shadowed_bkpt_command_test() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line = line_number('main.c', '// Set break point at this line.') - - def set_breakpoint (self): - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, "Target %s is not valid"%(exe)) - - # This should create a breakpoint with 3 locations. - - bkpt = target.BreakpointCreateByLocation("main.c", self.line) - - # The breakpoint list should show 3 locations. - self.assertEqual(bkpt.GetNumLocations(), 3, "Wrong number of locations") - - self.expect( - "breakpoint list -f", - "Breakpoint locations shown correctly", - substrs=[ - "1: file = 'main.c', line = %d, exact_match = 0, locations = 3" % - self.line], - patterns=[ - "where = a.out`func_inlined .+unresolved, hit count = 0", - "where = a.out`main .+\[inlined\].+unresolved, hit count = 0"]) - - return bkpt - - def shadowed_bkpt_cond_test(self): - """Test that options set on the breakpoint and location behave correctly.""" - # Breakpoint option propagation from bkpt to loc used to be done the first time - # a breakpoint location option was specifically set. After that the other options - # on that location would stop tracking the breakpoint. That got fixed, and this test - # makes sure only the option touched is affected. - - bkpt = self.set_breakpoint() - bkpt_cond = "1 == 0" - bkpt.SetCondition(bkpt_cond) - self.assertEqual(bkpt.GetCondition(), bkpt_cond,"Successfully set condition") - self.assertTrue(bkpt.location[0].GetCondition() == bkpt.GetCondition(), "Conditions are the same") - - # Now set a condition on the locations, make sure that this doesn't effect the bkpt: - bkpt_loc_1_cond = "1 == 1" - bkpt.location[0].SetCondition(bkpt_loc_1_cond) - self.assertEqual(bkpt.location[0].GetCondition(), bkpt_loc_1_cond, "Successfully changed location condition") - self.assertNotEqual(bkpt.GetCondition(), bkpt_loc_1_cond, "Changed location changed Breakpoint condition") - self.assertEqual(bkpt.location[1].GetCondition(), bkpt_cond, "Changed another location's condition") - - # Now make sure that setting one options doesn't fix the value of another: - bkpt.SetIgnoreCount(10) - self.assertEqual(bkpt.GetIgnoreCount(), 10, "Set the ignore count successfully") - self.assertEqual(bkpt.location[0].GetIgnoreCount(), 10, "Location doesn't track top-level bkpt.") - - # Now make sure resetting the condition to "" resets the tracking: - bkpt.location[0].SetCondition("") - bkpt_new_cond = "1 == 3" - bkpt.SetCondition(bkpt_new_cond) - self.assertEqual(bkpt.location[0].GetCondition(), bkpt_new_cond, "Didn't go back to tracking condition") - - def shadowed_bkpt_command_test(self): - """Test that options set on the breakpoint and location behave correctly.""" - # Breakpoint option propagation from bkpt to loc used to be done the first time - # a breakpoint location option was specifically set. After that the other options - # on that location would stop tracking the breakpoint. That got fixed, and this test - # makes sure only the option touched is affected. - - bkpt = self.set_breakpoint() - commands = ["AAAAAA", "BBBBBB", "CCCCCC"] - str_list = lldb.SBStringList() - str_list.AppendList(commands, len(commands)) - - bkpt.SetCommandLineCommands(str_list) - cmd_list = lldb.SBStringList() - bkpt.GetCommandLineCommands(cmd_list) - list_size = str_list.GetSize() - self.assertEqual(cmd_list.GetSize() , list_size, "Added the right number of commands") - for i in range(0,list_size): - self.assertEqual(str_list.GetStringAtIndex(i), cmd_list.GetStringAtIndex(i), "Mismatched commands.") - - commands = ["DDDDDD", "EEEEEE", "FFFFFF", "GGGGGG"] - loc_list = lldb.SBStringList() - loc_list.AppendList(commands, len(commands)) - bkpt.location[1].SetCommandLineCommands(loc_list) - loc_cmd_list = lldb.SBStringList() - bkpt.location[1].GetCommandLineCommands(loc_cmd_list) - - loc_list_size = loc_list.GetSize() - - # Check that the location has the right commands: - self.assertEqual(loc_cmd_list.GetSize() , loc_list_size, "Added the right number of commands to location") - for i in range(0,loc_list_size): - self.assertEqual(loc_list.GetStringAtIndex(i), loc_cmd_list.GetStringAtIndex(i), "Mismatched commands.") - - # Check that we didn't mess up the breakpoint level commands: - self.assertEqual(cmd_list.GetSize() , list_size, "Added the right number of commands") - for i in range(0,list_size): - self.assertEqual(str_list.GetStringAtIndex(i), cmd_list.GetStringAtIndex(i), "Mismatched commands.") - - # And check we didn't mess up another location: - untouched_loc_cmds = lldb.SBStringList() - bkpt.location[0].GetCommandLineCommands(untouched_loc_cmds) - self.assertEqual(untouched_loc_cmds.GetSize() , 0, "Changed the wrong location") - - def breakpoint_locations_test(self): - """Test breakpoint enable/disable for a breakpoint ID with multiple locations.""" - self.set_breakpoint() - - # The 'breakpoint disable 3.*' command should fail gracefully. - self.expect("breakpoint disable 3.*", - "Disabling an invalid breakpoint should fail gracefully", - error=True, - startstr="error: '3' is not a valid breakpoint ID.") - - # The 'breakpoint disable 1.*' command should disable all 3 locations. - self.expect( - "breakpoint disable 1.*", - "All 3 breakpoint locatons disabled correctly", - startstr="3 breakpoints disabled.") - - # Run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # We should not stopped on any breakpoint at all. - self.expect("process status", "No stopping on any disabled breakpoint", - patterns=["^Process [0-9]+ exited with status = 0"]) - - # The 'breakpoint enable 1.*' command should enable all 3 breakpoints. - self.expect( - "breakpoint enable 1.*", - "All 3 breakpoint locatons enabled correctly", - startstr="3 breakpoints enabled.") - - # The 'breakpoint disable 1.1' command should disable 1 location. - self.expect( - "breakpoint disable 1.1", - "1 breakpoint locatons disabled correctly", - startstr="1 breakpoints disabled.") - - # Run the program again. We should stop on the two breakpoint - # locations. - self.runCmd("run", RUN_SUCCEEDED) - - # Stopped once. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 1."]) - - # Continue the program, there should be another stop. - self.runCmd("process continue") - - # Stopped again. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 1."]) - - # At this point, 1.1 has a hit count of 0 and the other a hit count of - # 1". - self.expect( - "breakpoint list -f", - "The breakpoints should report correct hit counts", - patterns=[ - "1\.1: .+ unresolved, hit count = 0 +Options: disabled", - "1\.2: .+ resolved, hit count = 1", - "1\.3: .+ resolved, hit count = 1"]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/main.c deleted file mode 100644 index 7ec3ded67b74f60..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_locations/main.c +++ /dev/null @@ -1,43 +0,0 @@ -#include - -#define INLINE inline __attribute__((always_inline)) - -int -func_not_inlined (void) -{ - printf ("Called func_not_inlined.\n"); - return 0; -} - -INLINE int -func_inlined (void) -{ - static int func_inline_call_count = 0; - printf ("Called func_inlined.\n"); - ++func_inline_call_count; - printf ("Returning func_inlined call count: %d.\n", func_inline_call_count); - return func_inline_call_count; // Set break point at this line. -} - -extern int func_inlined (void); - -int -main (int argc, char **argv) -{ - printf ("Starting...\n"); - - int (*func_ptr) (void); - func_ptr = func_inlined; - - int a = func_inlined(); - printf("First call to func_inlined() returns: %d.\n", a); - - func_not_inlined (); - - func_ptr (); - - printf("Last call to func_inlined() returns: %d.\n", func_inlined ()); - return 0; -} - - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py deleted file mode 100644 index b36e915e2204899..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py +++ /dev/null @@ -1,367 +0,0 @@ -""" -Test breakpoint names. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointNames(TestBase): - - mydir = TestBase.compute_mydir(__file__) - NO_DEBUG_INFO_TESTCASE = True - - @add_test_categories(['pyapi']) - def test_setting_names(self): - """Use Python APIs to test that we can set breakpoint names.""" - self.build() - self.setup_target() - self.do_check_names() - - def test_illegal_names(self): - """Use Python APIs to test that we don't allow illegal names.""" - self.build() - self.setup_target() - self.do_check_illegal_names() - - def test_using_names(self): - """Use Python APIs to test that operations on names works correctly.""" - self.build() - self.setup_target() - self.do_check_using_names() - - def test_configuring_names(self): - """Use Python APIs to test that configuring options on breakpoint names works correctly.""" - self.build() - self.make_a_dummy_name() - self.setup_target() - self.do_check_configuring_names() - - def test_configuring_permissions_sb(self): - """Use Python APIs to test that configuring permissions on names works correctly.""" - self.build() - self.setup_target() - self.do_check_configuring_permissions_sb() - - def test_configuring_permissions_cli(self): - """Use Python APIs to test that configuring permissions on names works correctly.""" - self.build() - self.setup_target() - self.do_check_configuring_permissions_cli() - - def setup_target(self): - exe = self.getBuildArtifact("a.out") - - # Create a targets we are making breakpoint in and copying to: - self.target = self.dbg.CreateTarget(exe) - self.assertTrue(self.target, VALID_TARGET) - self.main_file_spec = lldb.SBFileSpec(os.path.join(self.getSourceDir(), "main.c")) - - def check_name_in_target(self, bkpt_name): - name_list = lldb.SBStringList() - self.target.GetBreakpointNames(name_list) - found_it = False - for name in name_list: - if name == bkpt_name: - found_it = True - break - self.assertTrue(found_it, "Didn't find the name %s in the target's name list:"%(bkpt_name)) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - - # These are the settings we're going to be putting into names & breakpoints: - self.bp_name_string = "ABreakpoint" - self.is_one_shot = True - self.ignore_count = 1000 - self.condition = "1 == 2" - self.auto_continue = True - self.tid = 0xaaaa - self.tidx = 10 - self.thread_name = "Fooey" - self.queue_name = "Blooey" - self.cmd_list = lldb.SBStringList() - self.cmd_list.AppendString("frame var") - self.cmd_list.AppendString("bt") - self.help_string = "I do something interesting" - - - def do_check_names(self): - """Use Python APIs to check that we can set & retrieve breakpoint names""" - bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - bkpt_name = "ABreakpoint" - other_bkpt_name = "_AnotherBreakpoint" - - # Add a name and make sure we match it: - success = bkpt.AddName(bkpt_name) - self.assertTrue(success, "We couldn't add a legal name to a breakpoint.") - - matches = bkpt.MatchesName(bkpt_name) - self.assertTrue(matches, "We didn't match the name we just set") - - # Make sure we don't match irrelevant names: - matches = bkpt.MatchesName("NotABreakpoint") - self.assertTrue(not matches, "We matched a name we didn't set.") - - # Make sure the name is also in the target: - self.check_name_in_target(bkpt_name) - - # Add another name, make sure that works too: - bkpt.AddName(other_bkpt_name) - - matches = bkpt.MatchesName(bkpt_name) - self.assertTrue(matches, "Adding a name means we didn't match the name we just set") - self.check_name_in_target(other_bkpt_name) - - # Remove the name and make sure we no longer match it: - bkpt.RemoveName(bkpt_name) - matches = bkpt.MatchesName(bkpt_name) - self.assertTrue(not matches,"We still match a name after removing it.") - - # Make sure the name list has the remaining name: - name_list = lldb.SBStringList() - bkpt.GetNames(name_list) - num_names = name_list.GetSize() - self.assertTrue(num_names == 1, "Name list has %d items, expected 1."%(num_names)) - - name = name_list.GetStringAtIndex(0) - self.assertTrue(name == other_bkpt_name, "Remaining name was: %s expected %s."%(name, other_bkpt_name)) - - def do_check_illegal_names(self): - """Use Python APIs to check that we reject illegal names.""" - bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - bad_names = ["-CantStartWithADash", - "1CantStartWithANumber", - "^CantStartWithNonAlpha", - "CantHave-ADash", - "Cant Have Spaces"] - for bad_name in bad_names: - success = bkpt.AddName(bad_name) - self.assertTrue(not success,"We allowed an illegal name: %s"%(bad_name)) - bp_name = lldb.SBBreakpointName(self.target, bad_name) - self.assertFalse(bp_name.IsValid(), "We made a breakpoint name with an illegal name: %s"%(bad_name)); - - retval =lldb.SBCommandReturnObject() - self.dbg.GetCommandInterpreter().HandleCommand("break set -n whatever -N '%s'"%(bad_name), retval) - self.assertTrue(not retval.Succeeded(), "break set succeeded with: illegal name: %s"%(bad_name)) - - def do_check_using_names(self): - """Use Python APIs to check names work in place of breakpoint ID's.""" - - bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - bkpt_name = "ABreakpoint" - other_bkpt_name= "_AnotherBreakpoint" - - # Add a name and make sure we match it: - success = bkpt.AddName(bkpt_name) - self.assertTrue(success, "We couldn't add a legal name to a breakpoint.") - - bkpts = lldb.SBBreakpointList(self.target) - self.target.FindBreakpointsByName(bkpt_name, bkpts) - - self.assertTrue(bkpts.GetSize() == 1, "One breakpoint matched.") - found_bkpt = bkpts.GetBreakpointAtIndex(0) - self.assertTrue(bkpt.GetID() == found_bkpt.GetID(),"The right breakpoint.") - - retval = lldb.SBCommandReturnObject() - self.dbg.GetCommandInterpreter().HandleCommand("break disable %s"%(bkpt_name), retval) - self.assertTrue(retval.Succeeded(), "break disable failed with: %s."%(retval.GetError())) - self.assertTrue(not bkpt.IsEnabled(), "We didn't disable the breakpoint.") - - # Also make sure we don't apply commands to non-matching names: - self.dbg.GetCommandInterpreter().HandleCommand("break modify --one-shot 1 %s"%(other_bkpt_name), retval) - self.assertTrue(retval.Succeeded(), "break modify failed with: %s."%(retval.GetError())) - self.assertTrue(not bkpt.IsOneShot(), "We applied one-shot to the wrong breakpoint.") - - def check_option_values(self, bp_object): - self.assertEqual(bp_object.IsOneShot(), self.is_one_shot, "IsOneShot") - self.assertEqual(bp_object.GetIgnoreCount(), self.ignore_count, "IgnoreCount") - self.assertEqual(bp_object.GetCondition(), self.condition, "Condition") - self.assertEqual(bp_object.GetAutoContinue(), self.auto_continue, "AutoContinue") - self.assertEqual(bp_object.GetThreadID(), self.tid, "Thread ID") - self.assertEqual(bp_object.GetThreadIndex(), self.tidx, "Thread Index") - self.assertEqual(bp_object.GetThreadName(), self.thread_name, "Thread Name") - self.assertEqual(bp_object.GetQueueName(), self.queue_name, "Queue Name") - set_cmds = lldb.SBStringList() - bp_object.GetCommandLineCommands(set_cmds) - self.assertEqual(set_cmds.GetSize(), self.cmd_list.GetSize(), "Size of command line commands") - for idx in range(0, set_cmds.GetSize()): - self.assertEqual(self.cmd_list.GetStringAtIndex(idx), set_cmds.GetStringAtIndex(idx), "Command %d"%(idx)) - - def make_a_dummy_name(self): - "This makes a breakpoint name in the dummy target to make sure it gets copied over" - - dummy_target = self.dbg.GetDummyTarget() - self.assertTrue(dummy_target.IsValid(), "Dummy target was not valid.") - - def cleanup (): - self.dbg.GetDummyTarget().DeleteBreakpointName(self.bp_name_string) - - # Execute the cleanup function during test case tear down. - self.addTearDownHook(cleanup) - - # Now find it in the dummy target, and make sure these settings took: - bp_name = lldb.SBBreakpointName(dummy_target, self.bp_name_string) - # Make sure the name is right: - self.assertTrue (bp_name.GetName() == self.bp_name_string, "Wrong bp_name: %s"%(bp_name.GetName())) - bp_name.SetOneShot(self.is_one_shot) - bp_name.SetIgnoreCount(self.ignore_count) - bp_name.SetCondition(self.condition) - bp_name.SetAutoContinue(self.auto_continue) - bp_name.SetThreadID(self.tid) - bp_name.SetThreadIndex(self.tidx) - bp_name.SetThreadName(self.thread_name) - bp_name.SetQueueName(self.queue_name) - bp_name.SetCommandLineCommands(self.cmd_list) - - # Now look it up again, and make sure it got set correctly. - bp_name = lldb.SBBreakpointName(dummy_target, self.bp_name_string) - self.assertTrue(bp_name.IsValid(), "Failed to make breakpoint name.") - self.check_option_values(bp_name) - - def do_check_configuring_names(self): - """Use Python APIs to check that configuring breakpoint names works correctly.""" - other_bp_name_string = "AnotherBreakpointName" - cl_bp_name_string = "CLBreakpointName" - - # Now find the version copied in from the dummy target, and make sure these settings took: - bp_name = lldb.SBBreakpointName(self.target, self.bp_name_string) - self.assertTrue(bp_name.IsValid(), "Failed to make breakpoint name.") - self.check_option_values(bp_name) - - # Now add this name to a breakpoint, and make sure it gets configured properly - bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - success = bkpt.AddName(self.bp_name_string) - self.assertTrue(success, "Couldn't add this name to the breakpoint") - self.check_option_values(bkpt) - - # Now make a name from this breakpoint, and make sure the new name is properly configured: - new_name = lldb.SBBreakpointName(bkpt, other_bp_name_string) - self.assertTrue(new_name.IsValid(), "Couldn't make a valid bp_name from a breakpoint.") - self.check_option_values(bkpt) - - # Now change the name's option and make sure it gets propagated to - # the breakpoint: - new_auto_continue = not self.auto_continue - bp_name.SetAutoContinue(new_auto_continue) - self.assertEqual(bp_name.GetAutoContinue(), new_auto_continue, "Couldn't change auto-continue on the name") - self.assertEqual(bkpt.GetAutoContinue(), new_auto_continue, "Option didn't propagate to the breakpoint.") - - # Now make this same breakpoint name - but from the command line - cmd_str = "breakpoint name configure %s -o %d -i %d -c '%s' -G %d -t %d -x %d -T '%s' -q '%s' -H '%s'"%(cl_bp_name_string, - self.is_one_shot, - self.ignore_count, - self.condition, - self.auto_continue, - self.tid, - self.tidx, - self.thread_name, - self.queue_name, - self.help_string) - for cmd in self.cmd_list: - cmd_str += " -C '%s'"%(cmd) - - self.runCmd(cmd_str, check=True) - # Now look up this name again and check its options: - cl_name = lldb.SBBreakpointName(self.target, cl_bp_name_string) - self.check_option_values(cl_name) - # Also check the help string: - self.assertEqual(self.help_string, cl_name.GetHelpString(), "Help string didn't match") - # Change the name and make sure that works: - new_help = "I do something even more interesting" - cl_name.SetHelpString(new_help) - self.assertEqual(new_help, cl_name.GetHelpString(), "SetHelpString didn't") - - # We should have three names now, make sure the target can list them: - name_list = lldb.SBStringList() - self.target.GetBreakpointNames(name_list) - for name_string in [self.bp_name_string, other_bp_name_string, cl_bp_name_string]: - self.assertTrue(name_string in name_list, "Didn't find %s in names"%(name_string)) - - # Delete the name from the current target. Make sure that works and deletes the - # name from the breakpoint as well: - self.target.DeleteBreakpointName(self.bp_name_string) - name_list.Clear() - self.target.GetBreakpointNames(name_list) - self.assertTrue(self.bp_name_string not in name_list, "Didn't delete %s from a real target"%(self.bp_name_string)) - # Also make sure the name got removed from breakpoints holding it: - self.assertFalse(bkpt.MatchesName(self.bp_name_string), "Didn't remove the name from the breakpoint.") - - # Test that deleting the name we injected into the dummy target works (there's also a - # cleanup that will do this, but that won't test the result... - dummy_target = self.dbg.GetDummyTarget() - dummy_target.DeleteBreakpointName(self.bp_name_string) - name_list.Clear() - dummy_target.GetBreakpointNames(name_list) - self.assertTrue(self.bp_name_string not in name_list, "Didn't delete %s from the dummy target"%(self.bp_name_string)) - # Also make sure the name got removed from breakpoints holding it: - self.assertFalse(bkpt.MatchesName(self.bp_name_string), "Didn't remove the name from the breakpoint.") - - def check_permission_results(self, bp_name): - self.assertEqual(bp_name.GetAllowDelete(), False, "Didn't set allow delete.") - protected_bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - protected_id = protected_bkpt.GetID() - - unprotected_bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - unprotected_id = unprotected_bkpt.GetID() - - success = protected_bkpt.AddName(self.bp_name_string) - self.assertTrue(success, "Couldn't add this name to the breakpoint") - - self.target.DisableAllBreakpoints() - self.assertEqual(protected_bkpt.IsEnabled(), True, "Didnt' keep breakpoint from being disabled") - self.assertEqual(unprotected_bkpt.IsEnabled(), False, "Protected too many breakpoints from disabling.") - - # Try from the command line too: - unprotected_bkpt.SetEnabled(True) - result = lldb.SBCommandReturnObject() - self.dbg.GetCommandInterpreter().HandleCommand("break disable", result) - self.assertTrue(result.Succeeded()) - self.assertEqual(protected_bkpt.IsEnabled(), True, "Didnt' keep breakpoint from being disabled") - self.assertEqual(unprotected_bkpt.IsEnabled(), False, "Protected too many breakpoints from disabling.") - - self.target.DeleteAllBreakpoints() - bkpt = self.target.FindBreakpointByID(protected_id) - self.assertTrue(bkpt.IsValid(), "Didn't keep the breakpoint from being deleted.") - bkpt = self.target.FindBreakpointByID(unprotected_id) - self.assertFalse(bkpt.IsValid(), "Protected too many breakpoints from deletion.") - - # Remake the unprotected breakpoint and try again from the command line: - unprotected_bkpt = self.target.BreakpointCreateByLocation(self.main_file_spec, 10) - unprotected_id = unprotected_bkpt.GetID() - - self.dbg.GetCommandInterpreter().HandleCommand("break delete -f", result) - self.assertTrue(result.Succeeded()) - bkpt = self.target.FindBreakpointByID(protected_id) - self.assertTrue(bkpt.IsValid(), "Didn't keep the breakpoint from being deleted.") - bkpt = self.target.FindBreakpointByID(unprotected_id) - self.assertFalse(bkpt.IsValid(), "Protected too many breakpoints from deletion.") - - def do_check_configuring_permissions_sb(self): - bp_name = lldb.SBBreakpointName(self.target, self.bp_name_string) - - # Make a breakpoint name with delete disallowed: - bp_name = lldb.SBBreakpointName(self.target, self.bp_name_string) - self.assertTrue(bp_name.IsValid(), "Failed to make breakpoint name for valid name.") - - bp_name.SetAllowDelete(False) - bp_name.SetAllowDisable(False) - bp_name.SetAllowList(False) - self.check_permission_results(bp_name) - - def do_check_configuring_permissions_cli(self): - # Make the name with the right options using the command line: - self.runCmd("breakpoint name configure -L 0 -D 0 -A 0 %s"%(self.bp_name_string), check=True) - # Now look up the breakpoint we made, and check that it works. - bp_name = lldb.SBBreakpointName(self.target, self.bp_name_string) - self.assertTrue(bp_name.IsValid(), "Didn't make a breakpoint name we could find.") - self.check_permission_results(bp_name) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/main.c deleted file mode 100644 index b1ed4465c1d4eb4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_names/main.c +++ /dev/null @@ -1,53 +0,0 @@ -//===-- main.c --------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include - -// This simple program is to demonstrate the capability of the lldb command -// "breakpoint modify -i breakpt-id" to set the number of times a -// breakpoint is skipped before stopping. Ignore count can also be set upon -// breakpoint creation by 'breakpoint set ... -i '. - -int a(int); -int b(int); -int c(int); - -int a(int val) -{ - if (val <= 1) - return b(val); - else if (val >= 3) - return c(val); // a(3) -> c(3) Find the call site of c(3). - - return val; -} - -int b(int val) -{ - return c(val); -} - -int c(int val) -{ - return val + 3; // Find the line number of function "c" here. -} - -int main (int argc, char const *argv[]) -{ - int A1 = a(1); // a(1) -> b(1) -> c(1) - printf("a(1) returns %d\n", A1); - - int B2 = b(2); // b(2) -> c(2) Find the call site of b(2). - printf("b(2) returns %d\n", B2); - - int A3 = a(3); // a(3) -> c(3) Find the call site of a(3). - printf("a(3) returns %d\n", A3); - - int C1 = c(5); // Find the call site of c in main. - printf ("c(5) returns %d\n", C1); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/Makefile deleted file mode 100644 index 457c4972f2d5650..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp foo.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py deleted file mode 100644 index c9ef2a7300106e9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py +++ /dev/null @@ -1,115 +0,0 @@ -""" -Test breakpoint command for different options. -""" - -from __future__ import print_function - - -import os -import lldb -from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil - - -class BreakpointOptionsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def test(self): - """Test breakpoint command for different options.""" - self.build() - self.breakpoint_options_test() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line = line_number('main.cpp', '// Set break point at this line.') - - def breakpoint_options_test(self): - """Test breakpoint command for different options.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # This should create a breakpoint with 1 locations. - lldbutil.run_break_set_by_file_and_line( - self, - "main.cpp", - self.line, - extra_options="-K 1", - num_expected_locations=1) - lldbutil.run_break_set_by_file_and_line( - self, - "main.cpp", - self.line, - extra_options="-K 0", - num_expected_locations=1) - - # Run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # Stopped once. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 2."]) - - # Check the list of breakpoint. - self.expect( - "breakpoint list -f", - "Breakpoint locations shown correctly", - substrs=[ - "1: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % - self.line, - "2: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % - self.line]) - - # Continue the program, there should be another stop. - self.runCmd("process continue") - - # Stopped again. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 1."]) - - # Continue the program, we should exit. - self.runCmd("process continue") - - # We should exit. - self.expect("process status", "Process exited successfully", - patterns=["^Process [0-9]+ exited with status = 0"]) - - def breakpoint_options_language_test(self): - """Test breakpoint command for language option.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # This should create a breakpoint with 1 locations. - lldbutil.run_break_set_by_symbol( - self, - 'ns::func', - sym_exact=False, - extra_options="-L c++", - num_expected_locations=1) - - # This should create a breakpoint with 0 locations. - lldbutil.run_break_set_by_symbol( - self, - 'ns::func', - sym_exact=False, - extra_options="-L c", - num_expected_locations=0) - self.runCmd("settings set target.language c") - lldbutil.run_break_set_by_symbol( - self, 'ns::func', sym_exact=False, num_expected_locations=0) - - # Run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # Stopped once. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 1."]) - - # Continue the program, we should exit. - self.runCmd("process continue") - - # We should exit. - self.expect("process status", "Process exited successfully", - patterns=["^Process [0-9]+ exited with status = 0"]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/foo.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/foo.cpp deleted file mode 100644 index e5d0e09803e60ea..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/foo.cpp +++ /dev/null @@ -1,12 +0,0 @@ - -namespace ns { - int func(void) - { - return 0; - } -} - -extern "C" int foo(void) -{ - return ns::func(); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/main.cpp deleted file mode 100644 index b2e8f523c84d4ff..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_options/main.cpp +++ /dev/null @@ -1,4 +0,0 @@ -extern "C" int foo(void); -int main (int argc, char **argv) { // Set break point at this line. - return foo(); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/TestBreakpointSetRestart.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/TestBreakpointSetRestart.py deleted file mode 100644 index f784e68560dcc1f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/TestBreakpointSetRestart.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -Test inferior restart when breakpoint is set on running target. -""" - -import os -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * - - -class BreakpointSetRestart(TestBase): - - mydir = TestBase.compute_mydir(__file__) - BREAKPOINT_TEXT = 'Set a breakpoint here' - - @skipIfNetBSD - def test_breakpoint_set_restart(self): - self.build() - - exe = self.getBuildArtifact("a.out") - - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - self.dbg.SetAsync(True) - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - event = lldb.SBEvent() - # Wait for inferior to transition to running state - while self.dbg.GetListener().WaitForEvent(2, event): - if lldb.SBProcess.GetStateFromEvent(event) == lldb.eStateRunning: - break - - bp = target.BreakpointCreateBySourceRegex( - self.BREAKPOINT_TEXT, lldb.SBFileSpec('main.cpp')) - self.assertTrue( - bp.IsValid() and bp.GetNumLocations() == 1, - VALID_BREAKPOINT) - - while self.dbg.GetListener().WaitForEvent(2, event): - if lldb.SBProcess.GetStateFromEvent( - event) == lldb.eStateStopped and lldb.SBProcess.GetRestartedFromEvent(event): - continue - if lldb.SBProcess.GetStateFromEvent(event) == lldb.eStateRunning: - continue - self.fail( - "Setting a breakpoint generated an unexpected event: %s" % - lldb.SBDebugger.StateAsCString( - lldb.SBProcess.GetStateFromEvent(event))) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/main.cpp deleted file mode 100644 index 46682ec264dc4ca..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/breakpoint_set_restart/main.cpp +++ /dev/null @@ -1,24 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include -#include - - -int main(int argc, char const *argv[]) -{ - static bool done = false; - while (!done) - { - std::this_thread::sleep_for(std::chrono::milliseconds{100}); - } - printf("Set a breakpoint here.\n"); - return 0; -} - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/Makefile deleted file mode 100644 index 2d7f20f43fed0a5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := relative.cpp - -EXE := CompDirSymLink - -include $(LEVEL)/Makefile.rules - -# Force relative filenames by copying it into the build directory. -relative.cpp: main.cpp - cp -f $< $@ - -clean:: - rm -rf relative.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.py deleted file mode 100644 index 29778aad95ac3f0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/TestCompDirSymLink.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -Test breakpoint command with AT_comp_dir set to symbolic link. -""" -from __future__ import print_function - - -import os -import shutil -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -_EXE_NAME = 'CompDirSymLink' # Must match Makefile -_SRC_FILE = 'relative.cpp' -_COMP_DIR_SYM_LINK_PROP = 'plugin.symbol-file.dwarf.comp-dir-symlink-paths' - - -class CompDirSymLinkTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line = line_number( - os.path.join(self.getSourceDir(), "main.cpp"), - '// Set break point at this line.') - - @skipIf(hostoslist=["windows"]) - def test_symlink_paths_set(self): - pwd_symlink = self.create_src_symlink() - self.doBuild(pwd_symlink) - self.runCmd( - "settings set %s %s" % - (_COMP_DIR_SYM_LINK_PROP, pwd_symlink)) - src_path = self.getBuildArtifact(_SRC_FILE) - lldbutil.run_break_set_by_file_and_line(self, src_path, self.line) - - @skipIf(hostoslist=no_match(["linux"])) - def test_symlink_paths_set_procselfcwd(self): - os.chdir(self.getBuildDir()) - pwd_symlink = '/proc/self/cwd' - self.doBuild(pwd_symlink) - self.runCmd( - "settings set %s %s" % - (_COMP_DIR_SYM_LINK_PROP, pwd_symlink)) - src_path = self.getBuildArtifact(_SRC_FILE) - # /proc/self/cwd points to a realpath form of current directory. - src_path = os.path.realpath(src_path) - lldbutil.run_break_set_by_file_and_line(self, src_path, self.line) - - @skipIf(hostoslist=["windows"]) - def test_symlink_paths_unset(self): - pwd_symlink = self.create_src_symlink() - self.doBuild(pwd_symlink) - self.runCmd('settings clear ' + _COMP_DIR_SYM_LINK_PROP) - src_path = self.getBuildArtifact(_SRC_FILE) - self.assertRaises( - AssertionError, - lldbutil.run_break_set_by_file_and_line, - self, - src_path, - self.line) - - def create_src_symlink(self): - pwd_symlink = self.getBuildArtifact('pwd_symlink') - if os.path.exists(pwd_symlink): - os.unlink(pwd_symlink) - os.symlink(self.getBuildDir(), pwd_symlink) - self.addTearDownHook(lambda: os.remove(pwd_symlink)) - return pwd_symlink - - def doBuild(self, pwd_symlink): - self.build(None, None, {'PWD': pwd_symlink}) - - exe = self.getBuildArtifact(_EXE_NAME) - self.runCmd('file ' + exe, CURRENT_EXECUTABLE_SET) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/main.cpp deleted file mode 100644 index 13e5e3e891f9adc..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/comp_dir_symlink/main.cpp +++ /dev/null @@ -1,12 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int main (int argc, char const *argv[]) -{ - return 0; // Set break point at this line. -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/Makefile deleted file mode 100644 index f89b52a972e9f76..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -ifneq (,$(findstring icc,$(CC))) - CXXFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py deleted file mode 100644 index 6afde150d8d7114..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py +++ /dev/null @@ -1,104 +0,0 @@ -""" -Test that we handle breakpoints on consecutive instructions correctly. -""" - -from __future__ import print_function - - -import unittest2 -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class ConsecutiveBreakpointsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def prepare_test(self): - self.build() - - (self.target, self.process, self.thread, bkpt) = lldbutil.run_to_source_breakpoint( - self, "Set breakpoint here", lldb.SBFileSpec("main.cpp")) - - # Set breakpoint to the next instruction - frame = self.thread.GetFrameAtIndex(0) - - address = frame.GetPCAddress() - instructions = self.target.ReadInstructions(address, 2) - self.assertTrue(len(instructions) == 2) - self.bkpt_address = instructions[1].GetAddress() - self.breakpoint2 = self.target.BreakpointCreateByAddress( - self.bkpt_address.GetLoadAddress(self.target)) - self.assertTrue( - self.breakpoint2 and self.breakpoint2.GetNumLocations() == 1, - VALID_BREAKPOINT) - - def finish_test(self): - # Run the process until termination - self.process.Continue() - self.assertEquals(self.process.GetState(), lldb.eStateExited) - - @no_debug_info_test - def test_continue(self): - """Test that continue stops at the second breakpoint.""" - self.prepare_test() - - self.process.Continue() - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - # We should be stopped at the second breakpoint - self.thread = lldbutil.get_one_thread_stopped_at_breakpoint( - self.process, self.breakpoint2) - self.assertIsNotNone( - self.thread, - "Expected one thread to be stopped at breakpoint 2") - - self.finish_test() - - @no_debug_info_test - def test_single_step(self): - """Test that single step stops at the second breakpoint.""" - self.prepare_test() - - step_over = False - self.thread.StepInstruction(step_over) - - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - self.assertEquals( - self.thread.GetFrameAtIndex(0).GetPCAddress().GetLoadAddress( - self.target), self.bkpt_address.GetLoadAddress( - self.target)) - self.thread = lldbutil.get_one_thread_stopped_at_breakpoint( - self.process, self.breakpoint2) - self.assertIsNotNone( - self.thread, - "Expected one thread to be stopped at breakpoint 2") - - self.finish_test() - - @no_debug_info_test - def test_single_step_thread_specific(self): - """Test that single step stops, even though the second breakpoint is not valid.""" - self.prepare_test() - - # Choose a thread other than the current one. A non-existing thread is - # fine. - thread_index = self.process.GetNumThreads() + 1 - self.assertFalse(self.process.GetThreadAtIndex(thread_index).IsValid()) - self.breakpoint2.SetThreadIndex(thread_index) - - step_over = False - self.thread.StepInstruction(step_over) - - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - self.assertEquals( - self.thread.GetFrameAtIndex(0).GetPCAddress().GetLoadAddress( - self.target), self.bkpt_address.GetLoadAddress( - self.target)) - self.assertEquals( - self.thread.GetStopReason(), - lldb.eStopReasonPlanComplete, - "Stop reason should be 'plan complete'") - - self.finish_test() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/main.cpp deleted file mode 100644 index 94d0a0415d755b3..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int -main(int argc, char const *argv[]) -{ - int a = 0; - int b = 1; - a = b + 1; // Set breakpoint here - b = a + 1; - return 0; -} - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/Makefile deleted file mode 100644 index f89b52a972e9f76..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -ifneq (,$(findstring icc,$(CC))) - CXXFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py deleted file mode 100644 index e4c19fd0d3da2eb..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py +++ /dev/null @@ -1,114 +0,0 @@ -""" -Test lldb breakpoint ids. -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class TestCPPBreakpointLocations(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764") - def test(self): - self.build() - self.breakpoint_id_tests() - - def verify_breakpoint_locations(self, target, bp_dict): - - name = bp_dict['name'] - names = bp_dict['loc_names'] - bp = target.BreakpointCreateByName(name) - self.assertEquals( - bp.GetNumLocations(), - len(names), - "Make sure we find the right number of breakpoint locations") - - bp_loc_names = list() - for bp_loc in bp: - bp_loc_names.append(bp_loc.GetAddress().GetFunction().GetName()) - - for name in names: - found = name in bp_loc_names - if not found: - print("Didn't find '%s' in: %s" % (name, bp_loc_names)) - self.assertTrue(found, "Make sure we find all required locations") - - def breakpoint_id_tests(self): - - # Create a target by the debugger. - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - bp_dicts = [ - {'name': 'func1', 'loc_names': ['a::c::func1()', 'b::c::func1()']}, - {'name': 'func2', 'loc_names': ['a::c::func2()', 'c::d::func2()']}, - {'name': 'func3', 'loc_names': ['a::c::func3()', 'b::c::func3()', 'c::d::func3()']}, - {'name': 'c::func1', 'loc_names': ['a::c::func1()', 'b::c::func1()']}, - {'name': 'c::func2', 'loc_names': ['a::c::func2()']}, - {'name': 'c::func3', 'loc_names': ['a::c::func3()', 'b::c::func3()']}, - {'name': 'a::c::func1', 'loc_names': ['a::c::func1()']}, - {'name': 'b::c::func1', 'loc_names': ['b::c::func1()']}, - {'name': 'c::d::func2', 'loc_names': ['c::d::func2()']}, - {'name': 'a::c::func1()', 'loc_names': ['a::c::func1()']}, - {'name': 'b::c::func1()', 'loc_names': ['b::c::func1()']}, - {'name': 'c::d::func2()', 'loc_names': ['c::d::func2()']}, - ] - - for bp_dict in bp_dicts: - self.verify_breakpoint_locations(target, bp_dict) - - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764") - def test_destructors(self): - self.build() - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - - # Don't skip prologue, so we can check the breakpoint address more - # easily - self.runCmd("settings set target.skip-prologue false") - try: - names = ['~c', 'c::~c', 'c::~c()'] - loc_names = {'a::c::~c()', 'b::c::~c()'} - # TODO: For windows targets we should put windows mangled names - # here - symbols = [ - '_ZN1a1cD1Ev', - '_ZN1a1cD2Ev', - '_ZN1b1cD1Ev', - '_ZN1b1cD2Ev'] - - for name in names: - bp = target.BreakpointCreateByName(name) - - bp_loc_names = {bp_loc.GetAddress().GetFunction().GetName() - for bp_loc in bp} - self.assertEquals( - bp_loc_names, - loc_names, - "Breakpoint set on the correct symbol") - - bp_addresses = {bp_loc.GetLoadAddress() for bp_loc in bp} - symbol_addresses = set() - for symbol in symbols: - sc_list = target.FindSymbols(symbol, lldb.eSymbolTypeCode) - self.assertEquals( - sc_list.GetSize(), 1, "Found symbol " + symbol) - symbol = sc_list.GetContextAtIndex(0).GetSymbol() - symbol_addresses.add( - symbol.GetStartAddress().GetLoadAddress(target)) - - self.assertEquals( - symbol_addresses, - bp_addresses, - "Breakpoint set on correct address") - finally: - self.runCmd("settings clear target.skip-prologue") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/main.cpp deleted file mode 100644 index 4afabcbd36e160d..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp/main.cpp +++ /dev/null @@ -1,82 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include -#include - -namespace a { - class c { - public: - c(); - ~c(); - void func1() - { - puts (__PRETTY_FUNCTION__); - } - void func2() - { - puts (__PRETTY_FUNCTION__); - } - void func3() - { - puts (__PRETTY_FUNCTION__); - } - }; - - c::c() {} - c::~c() {} -} - -namespace b { - class c { - public: - c(); - ~c(); - void func1() - { - puts (__PRETTY_FUNCTION__); - } - void func3() - { - puts (__PRETTY_FUNCTION__); - } - }; - - c::c() {} - c::~c() {} -} - -namespace c { - class d { - public: - d () {} - ~d() {} - void func2() - { - puts (__PRETTY_FUNCTION__); - } - void func3() - { - puts (__PRETTY_FUNCTION__); - } - }; -} - -int main (int argc, char const *argv[]) -{ - a::c ac; - b::c bc; - c::d cd; - ac.func1(); - ac.func2(); - ac.func3(); - bc.func1(); - bc.func3(); - cd.func2(); - cd.func3(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py deleted file mode 100644 index df6b8042967a260..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py +++ /dev/null @@ -1,55 +0,0 @@ -""" -Test that you can set breakpoint and hit the C++ language exception breakpoint -""" - -from __future__ import print_function - - -import os -import re -import sys -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class TestCPPExceptionBreakpoint (TestBase): - - mydir = TestBase.compute_mydir(__file__) - my_var = 10 - - @add_test_categories(['pyapi']) - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24538") - @expectedFailureNetBSD - def test_cpp_exception_breakpoint(self): - """Test setting and hitting the C++ exception breakpoint.""" - self.build() - self.do_cpp_exception_bkpt() - - def setUp(self): - TestBase.setUp(self) - self.main_source = "main.c" - self.main_source_spec = lldb.SBFileSpec(self.main_source) - - def do_cpp_exception_bkpt(self): - exe = self.getBuildArtifact("a.out") - error = lldb.SBError() - - self.target = self.dbg.CreateTarget(exe) - self.assertTrue(self.target, VALID_TARGET) - - exception_bkpt = self.target.BreakpointCreateForException( - lldb.eLanguageTypeC_plus_plus, False, True) - self.assertTrue( - exception_bkpt.IsValid(), - "Created exception breakpoint.") - - process = self.target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertTrue(process, PROCESS_IS_VALID) - - thread_list = lldbutil.get_threads_stopped_at_breakpoint( - process, exception_bkpt) - self.assertTrue(len(thread_list) == 1, - "One thread stopped at the exception breakpoint.") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/main.cpp deleted file mode 100644 index 76cb22735a71b85..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/cpp_exception/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include - -void -throws_int () -{ - throw 5; -} - -int -main () -{ - throws_int(); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/TestDebugBreak.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/TestDebugBreak.py deleted file mode 100644 index 11ec67d910978f8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/TestDebugBreak.py +++ /dev/null @@ -1,59 +0,0 @@ -""" -Test embedded breakpoints, like `asm int 3;` in x86 or or `__debugbreak` on Windows. -""" - -from __future__ import print_function - -import os -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class DebugBreakTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIf(archs=no_match(["i386", "i686", "x86_64"])) - @no_debug_info_test - def test_asm_int_3(self): - """Test that intrinsics like `__debugbreak();` and `asm {"int3"}` are treated like breakpoints.""" - self.build() - exe = self.getBuildArtifact("a.out") - - # Run the program. - target = self.dbg.CreateTarget(exe) - process = target.LaunchSimple( - None, None, self.get_process_working_directory()) - - # We've hit the first stop, so grab the frame. - self.assertEqual(process.GetState(), lldb.eStateStopped) - stop_reason = lldb.eStopReasonException if (lldbplatformutil.getPlatform( - ) == "windows" or lldbplatformutil.getPlatform() == "macosx") else lldb.eStopReasonSignal - thread = lldbutil.get_stopped_thread(process, stop_reason) - self.assertIsNotNone( - thread, "Unable to find thread stopped at the __debugbreak()") - frame = thread.GetFrameAtIndex(0) - - # We should be in funciton 'bar'. - self.assertTrue(frame.IsValid()) - function_name = frame.GetFunctionName() - self.assertTrue('bar' in function_name, - "Unexpected function name {}".format(function_name)) - - # We should be able to evaluate the parameter foo. - value = frame.EvaluateExpression('*foo') - self.assertEqual(value.GetValueAsSigned(), 42) - - # The counter should be 1 at the first stop and increase by 2 for each - # subsequent stop. - counter = 1 - while counter < 20: - value = frame.EvaluateExpression('count') - self.assertEqual(value.GetValueAsSigned(), counter) - counter += 2 - process.Continue() - - # The inferior should exit after the last iteration. - self.assertEqual(process.GetState(), lldb.eStateExited) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/main.c deleted file mode 100644 index 5f936327e4eaeed..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/main.c +++ /dev/null @@ -1,29 +0,0 @@ -#ifdef _MSC_VER -#include -#define BREAKPOINT_INTRINSIC() __debugbreak() -#else -#define BREAKPOINT_INTRINSIC() __asm__ __volatile__ ("int3") -#endif - -int -bar(int const *foo) -{ - int count = 0, i = 0; - for (; i < 10; ++i) - { - count += 1; - BREAKPOINT_INTRINSIC(); - count += 1; - } - return *foo; -} - -int -main(int argc, char **argv) -{ - int foo = 42; - bar(&foo); - return 0; -} - - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/Makefile deleted file mode 100644 index 7934cd5db427b7b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -ifneq (,$(findstring icc,$(CC))) - CFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py deleted file mode 100644 index 4b595ab7819e3a9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py +++ /dev/null @@ -1,74 +0,0 @@ -""" -Test breakpoint commands set before we have a target -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil - - -class BreakpointInDummyTarget (TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def test(self): - """Test breakpoint set before we have a target. """ - self.build() - self.dummy_breakpoint_test() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line = line_number('main.c', 'Set a breakpoint on this line.') - self.line2 = line_number('main.c', 'Set another on this line.') - - def dummy_breakpoint_test(self): - """Test breakpoint set before we have a target. """ - - # This should create a breakpoint with 3 locations. - lldbutil.run_break_set_by_file_and_line( - self, "main.c", self.line, num_expected_locations=0) - lldbutil.run_break_set_by_file_and_line( - self, "main.c", self.line2, num_expected_locations=0) - - # This is the function to remove breakpoints from the dummy target - # to get a clean slate for the next test case. - def cleanup(): - self.runCmd('breakpoint delete -D -f', check=False) - self.runCmd('breakpoint list', check=False) - - # Execute the cleanup function during test case tear down. - self.addTearDownHook(cleanup) - - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # The breakpoint list should show 3 locations. - self.expect( - "breakpoint list -f", - "Breakpoint locations shown correctly", - substrs=[ - "1: file = 'main.c', line = %d, exact_match = 0, locations = 1" % - self.line, - "2: file = 'main.c', line = %d, exact_match = 0, locations = 1" % - self.line2]) - - # Run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # Stopped once. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 1."]) - - # Continue the program, there should be another stop. - self.runCmd("process continue") - - # Stopped again. - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs=["stop reason = breakpoint 2."]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/main.c deleted file mode 100644 index e1f03237cd1193a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/dummy_target_breakpoints/main.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -int -main (int argc, char **argv) -{ - printf ("Set a breakpoint on this line.\n"); - - return 0; // Set another on this line. -} - - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/Makefile deleted file mode 100644 index 06ef85cf908dd94..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../../make - -DYLIB_NAME := foo -DYLIB_CXX_SOURCES := foo.cpp -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py deleted file mode 100644 index 6be3a2266541531..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -Test that we can hit breakpoints in global constructors -""" - -from __future__ import print_function - - -import os -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class TestBreakpointInGlobalConstructors(TestBase): - - mydir = TestBase.compute_mydir(__file__) - NO_DEBUG_INFO_TESTCASE = True - - @expectedFailureNetBSD - def test(self): - self.build() - self.line_foo = line_number('foo.cpp', '// !BR_foo') - self.line_main = line_number('main.cpp', '// !BR_main') - - target = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) - self.assertTrue(target, VALID_TARGET) - - env= self.registerSharedLibrariesWithTarget(target, ["foo"]) - - bp_main = lldbutil.run_break_set_by_file_and_line( - self, 'main.cpp', self.line_main) - - bp_foo = lldbutil.run_break_set_by_file_and_line( - self, 'foo.cpp', self.line_foo, num_expected_locations=-2) - - process = target.LaunchSimple( - None, env, self.get_process_working_directory()) - - self.assertIsNotNone( - lldbutil.get_one_thread_stopped_at_breakpoint_id( - self.process(), bp_foo)) - - self.runCmd("continue") - - self.assertIsNotNone( - lldbutil.get_one_thread_stopped_at_breakpoint_id( - self.process(), bp_main)) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/foo.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/foo.cpp deleted file mode 100644 index f959a295467f720..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/foo.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "foo.h" - -Foo::Foo() : x(42) { - bool some_code = x == 42; // !BR_foo -} - -Foo FooObj; diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/foo.h b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/foo.h deleted file mode 100644 index 3bc63fed7555b8d..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/foo.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef FOO_H -#define FOO_H - -struct LLDB_TEST_API Foo { - Foo(); - int x; -}; - -extern LLDB_TEST_API Foo FooObj; - -#endif diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/main.cpp deleted file mode 100644 index d1c8038dfadbd76..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/global_constructor/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "foo.h" - -struct Main { - Main(); - int x; -}; - -Main::Main() : x(47) { - bool some_code = x == 47; // !BR_main -} - -Main MainObj; - -int main() { return MainObj.x + FooObj.x; } diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/Makefile deleted file mode 100644 index 3665ae323e7b828..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../../make - -ENABLE_THREADS := YES -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py deleted file mode 100644 index 99b54329a0e1594..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py +++ /dev/null @@ -1,110 +0,0 @@ -""" -Test hardware breakpoints for multiple threads. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -# Hardware breakpoints are supported only by platforms mentioned in oslist. -@skipUnlessPlatform(oslist=['linux']) -class HardwareBreakpointMultiThreadTestCase(TestBase): - NO_DEBUG_INFO_TESTCASE = True - - mydir = TestBase.compute_mydir(__file__) - - # LLDB supports hardware breakpoints for arm and aarch64 architectures. - @skipIf(archs=no_match(['arm', 'aarch64'])) - @expectedFailureAndroid - def test_hw_break_set_delete_multi_thread(self): - self.build() - self.setTearDownCleanup() - self.break_multi_thread('delete') - - # LLDB supports hardware breakpoints for arm and aarch64 architectures. - @skipIf(archs=no_match(['arm', 'aarch64'])) - @expectedFailureAndroid - def test_hw_break_set_disable_multi_thread(self): - self.build() - self.setTearDownCleanup() - self.break_multi_thread('disable') - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Our simple source filename. - self.source = 'main.cpp' - # Find the line number to break inside main(). - self.first_stop = line_number( - self.source, 'Starting thread creation with hardware breakpoint set') - - def break_multi_thread(self, removal_type): - """Test that lldb hardware breakpoints work for multiple threads.""" - self.runCmd("file " + self.getBuildArtifact("a.out"), - CURRENT_EXECUTABLE_SET) - - # Stop in main before creating any threads. - lldbutil.run_break_set_by_file_and_line( - self, None, self.first_stop, num_expected_locations=1) - - # Run the program. - self.runCmd("run", RUN_SUCCEEDED) - - # We should be stopped again due to the breakpoint. - # The stop reason of the thread should be breakpoint. - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, - substrs=['stopped', - 'stop reason = breakpoint']) - - # Now set a hardware breakpoint in thread function. - self.expect("breakpoint set -b hw_break_function --hardware", - substrs=[ - 'Breakpoint', - 'hw_break_function', - 'address = 0x']) - - # We should stop in hw_break_function function for 4 threads. - count = 0 - - while count < 2 : - - self.runCmd("process continue") - - # We should be stopped in hw_break_function - # The stop reason of the thread should be breakpoint. - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, - substrs=[ - 'stop reason = breakpoint', - 'hw_break_function']) - - # Continue the loop and test that we are stopped 4 times. - count += 1 - - if removal_type == 'delete': - self.runCmd("settings set auto-confirm true") - - # Now 'breakpoint delete' should just work fine without confirmation - # prompt from the command interpreter. - self.expect("breakpoint delete", - startstr="All breakpoints removed") - - # Restore the original setting of auto-confirm. - self.runCmd("settings clear auto-confirm") - - elif removal_type == 'disable': - self.expect("breakpoint disable", - startstr="All breakpoints disabled.") - - # Continue. Program should exit without stopping anywhere. - self.runCmd("process continue") - - # Process should have stopped and exited with status = 0 - self.expect("process status", PROCESS_STOPPED, - patterns=['Process .* exited with status = 0']) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/main.cpp deleted file mode 100644 index 94a12c6241d9028..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/main.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include -#include -#include -#include - -#define NUM_OF_THREADS 4 - -std::mutex hw_break_mutex; - -void -hw_break_function (uint32_t thread_index) { - printf ("%s called by Thread #%u...\n", __FUNCTION__, thread_index); -} - - -void -thread_func (uint32_t thread_index) { - printf ("%s (thread index = %u) starting...\n", __FUNCTION__, thread_index); - - hw_break_mutex.lock(); - - hw_break_function(thread_index); // Call hw_break_function - - hw_break_mutex.unlock(); -} - - -int main (int argc, char const *argv[]) -{ - std::thread threads[NUM_OF_THREADS]; - - printf ("Starting thread creation with hardware breakpoint set...\n"); - - for (auto &thread : threads) - thread = std::thread{thread_func, std::distance(threads, &thread)}; - - for (auto &thread : threads) - thread.join(); - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/Makefile deleted file mode 100644 index 5b73ae626f3498f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := int.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py deleted file mode 100644 index ee67dda624204b7..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/TestInlinedBreakpoints.py +++ /dev/null @@ -1,69 +0,0 @@ -""" -Test that inlined breakpoints (breakpoint set on a file/line included from -another source file) works correctly. -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil - - -class InlinedBreakpointsTestCase(TestBase): - """Bug fixed: rdar://problem/8464339""" - - mydir = TestBase.compute_mydir(__file__) - - def test_with_run_command(self): - """Test 'b basic_types.cpp:176' does break (where int.cpp includes basic_type.cpp).""" - self.build() - self.inlined_breakpoints() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside basic_type.cpp. - self.line = line_number( - 'basic_type.cpp', - '// Set break point at this line.') - - def inlined_breakpoints(self): - """Test 'b basic_types.cpp:176' does break (where int.cpp includes basic_type.cpp).""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # With the inline-breakpoint-strategy, our file+line breakpoint should - # not resolve to a location. - self.runCmd('settings set target.inline-breakpoint-strategy headers') - - # Set a breakpoint and fail because it is in an inlined source - # implemenation file - lldbutil.run_break_set_by_file_and_line( - self, "basic_type.cpp", self.line, num_expected_locations=0) - - # Now enable breakpoints in implementation files and see the breakpoint - # set succeed - self.runCmd('settings set target.inline-breakpoint-strategy always') - # And add hooks to restore the settings during tearDown(). - self.addTearDownHook(lambda: self.runCmd( - "settings set target.inline-breakpoint-strategy always")) - - lldbutil.run_break_set_by_file_and_line( - self, - "basic_type.cpp", - self.line, - num_expected_locations=1, - loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - # The stop reason of the thread should be breakpoint. - # And it should break at basic_type.cpp:176. - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, - substrs=['stopped', - 'stop reason = breakpoint', - 'basic_type.cpp:%d' % self.line]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/basic_type.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/basic_type.cpp deleted file mode 100644 index 75d2c3690c898e2..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/basic_type.cpp +++ /dev/null @@ -1,178 +0,0 @@ -// This file must have the following defined before it is included: -// T defined to the type to test (int, float, etc) -// T_CSTR a C string representation of the type T ("int", "float") -// T_VALUE_1 defined to a valid initializer value for TEST_TYPE (7 for int, 2.0 for float) -// T_VALUE_2, T_VALUE_3, T_VALUE_4 defined to a valid initializer value for TEST_TYPE that is different from TEST_VALUE_1 -// T_PRINTF_FORMAT defined if T can be printed with printf -// -// An example for integers is below -#if 0 - -#define T int -#define T_CSTR "int" -#define T_VALUE_1 11001110 -#define T_VALUE_2 22002220 -#define T_VALUE_3 33003330 -#define T_VALUE_4 44044440 -#define T_PRINTF_FORMAT "%i" - -#include "basic_type.cpp" - -#endif - -#include -#include - -class a_class -{ -public: - a_class (const T& a, const T& b) : - m_a (a), - m_b (b) - { - } - - ~a_class () - { - } - - const T& - get_a() - { - return m_a; - } - - void - set_a (const T& a) - { - m_a = a; - } - - const T& - get_b() - { - return m_b; - } - - void - set_b (const T& b) - { - m_b = b; - } - -protected: - T m_a; - T m_b; -}; - -typedef struct a_struct_tag { - T a; - T b; -} a_struct_t; - - -typedef union a_union_zero_tag { - T a; - double a_double; -} a_union_zero_t; - -typedef struct a_union_nonzero_tag { - double a_double; - a_union_zero_t u; -} a_union_nonzero_t; - - -void Puts(char const *msg) -{ - std::puts(msg); -} - -int -main (int argc, char const *argv[]) -{ - T a = T_VALUE_1; - T* a_ptr = &a; - T& a_ref = a; - T a_array_bounded[2] = { T_VALUE_1, T_VALUE_2 }; - T a_array_unbounded[] = { T_VALUE_1, T_VALUE_2 }; - - a_class a_class_instance (T_VALUE_1, T_VALUE_2); - a_class *a_class_ptr = &a_class_instance; - a_class &a_class_ref = a_class_instance; - - a_struct_t a_struct = { T_VALUE_1, T_VALUE_2 }; - a_struct_t *a_struct_ptr = &a_struct; - a_struct_t &a_struct_ref = a_struct; - - // Create a union with type T at offset zero - a_union_zero_t a_union_zero; - a_union_zero.a = T_VALUE_1; - a_union_zero_t *a_union_zero_ptr = &a_union_zero; - a_union_zero_t &a_union_zero_ref = a_union_zero; - - // Create a union with type T at a non-zero offset - a_union_nonzero_t a_union_nonzero; - a_union_nonzero.u.a = T_VALUE_1; - a_union_nonzero_t *a_union_nonzero_ptr = &a_union_nonzero; - a_union_nonzero_t &a_union_nonzero_ref = a_union_nonzero; - - a_struct_t a_struct_array_bounded[2] = {{ T_VALUE_1, T_VALUE_2 }, { T_VALUE_3, T_VALUE_4 }}; - a_struct_t a_struct_array_unbounded[] = {{ T_VALUE_1, T_VALUE_2 }, { T_VALUE_3, T_VALUE_4 }}; - a_union_zero_t a_union_zero_array_bounded[2]; - a_union_zero_array_bounded[0].a = T_VALUE_1; - a_union_zero_array_bounded[1].a = T_VALUE_2; - a_union_zero_t a_union_zero_array_unbounded[] = {{ T_VALUE_1 }, { T_VALUE_2 }}; - -#ifdef T_PRINTF_FORMAT - std::printf ("%s: a = '" T_PRINTF_FORMAT "'\n", T_CSTR, a); - std::printf ("%s*: %p => *a_ptr = '" T_PRINTF_FORMAT "'\n", T_CSTR, a_ptr, *a_ptr); - std::printf ("%s&: @%p => a_ref = '" T_PRINTF_FORMAT "'\n", T_CSTR, &a_ref, a_ref); - - std::printf ("%s[2]: a_array_bounded[0] = '" T_PRINTF_FORMAT "'\n", T_CSTR, a_array_bounded[0]); - std::printf ("%s[2]: a_array_bounded[1] = '" T_PRINTF_FORMAT "'\n", T_CSTR, a_array_bounded[1]); - - std::printf ("%s[]: a_array_unbounded[0] = '" T_PRINTF_FORMAT "'\n", T_CSTR, a_array_unbounded[0]); - std::printf ("%s[]: a_array_unbounded[1] = '" T_PRINTF_FORMAT "'\n", T_CSTR, a_array_unbounded[1]); - - std::printf ("(a_class) a_class_instance.m_a = '" T_PRINTF_FORMAT "'\n", a_class_instance.get_a()); - std::printf ("(a_class) a_class_instance.m_b = '" T_PRINTF_FORMAT "'\n", a_class_instance.get_b()); - std::printf ("(a_class*) a_class_ptr = %p, a_class_ptr->m_a = '" T_PRINTF_FORMAT "'\n", a_class_ptr, a_class_ptr->get_a()); - std::printf ("(a_class*) a_class_ptr = %p, a_class_ptr->m_b = '" T_PRINTF_FORMAT "'\n", a_class_ptr, a_class_ptr->get_b()); - std::printf ("(a_class&) a_class_ref = %p, a_class_ref.m_a = '" T_PRINTF_FORMAT "'\n", &a_class_ref, a_class_ref.get_a()); - std::printf ("(a_class&) a_class_ref = %p, a_class_ref.m_b = '" T_PRINTF_FORMAT "'\n", &a_class_ref, a_class_ref.get_b()); - - std::printf ("(a_struct_t) a_struct.a = '" T_PRINTF_FORMAT "'\n", a_struct.a); - std::printf ("(a_struct_t) a_struct.b = '" T_PRINTF_FORMAT "'\n", a_struct.b); - std::printf ("(a_struct_t*) a_struct_ptr = %p, a_struct_ptr->a = '" T_PRINTF_FORMAT "'\n", a_struct_ptr, a_struct_ptr->a); - std::printf ("(a_struct_t*) a_struct_ptr = %p, a_struct_ptr->b = '" T_PRINTF_FORMAT "'\n", a_struct_ptr, a_struct_ptr->b); - std::printf ("(a_struct_t&) a_struct_ref = %p, a_struct_ref.a = '" T_PRINTF_FORMAT "'\n", &a_struct_ref, a_struct_ref.a); - std::printf ("(a_struct_t&) a_struct_ref = %p, a_struct_ref.b = '" T_PRINTF_FORMAT "'\n", &a_struct_ref, a_struct_ref.b); - - std::printf ("(a_union_zero_t) a_union_zero.a = '" T_PRINTF_FORMAT "'\n", a_union_zero.a); - std::printf ("(a_union_zero_t*) a_union_zero_ptr = %p, a_union_zero_ptr->a = '" T_PRINTF_FORMAT "'\n", a_union_zero_ptr, a_union_zero_ptr->a); - std::printf ("(a_union_zero_t&) a_union_zero_ref = %p, a_union_zero_ref.a = '" T_PRINTF_FORMAT "'\n", &a_union_zero_ref, a_union_zero_ref.a); - - std::printf ("(a_union_nonzero_t) a_union_nonzero.u.a = '" T_PRINTF_FORMAT "'\n", a_union_nonzero.u.a); - std::printf ("(a_union_nonzero_t*) a_union_nonzero_ptr = %p, a_union_nonzero_ptr->u.a = '" T_PRINTF_FORMAT "'\n", a_union_nonzero_ptr, a_union_nonzero_ptr->u.a); - std::printf ("(a_union_nonzero_t&) a_union_nonzero_ref = %p, a_union_nonzero_ref.u.a = '" T_PRINTF_FORMAT "'\n", &a_union_nonzero_ref, a_union_nonzero_ref.u.a); - - std::printf ("(a_struct_t[2]) a_struct_array_bounded[0].a = '" T_PRINTF_FORMAT "'\n", a_struct_array_bounded[0].a); - std::printf ("(a_struct_t[2]) a_struct_array_bounded[0].b = '" T_PRINTF_FORMAT "'\n", a_struct_array_bounded[0].b); - std::printf ("(a_struct_t[2]) a_struct_array_bounded[1].a = '" T_PRINTF_FORMAT "'\n", a_struct_array_bounded[1].a); - std::printf ("(a_struct_t[2]) a_struct_array_bounded[1].b = '" T_PRINTF_FORMAT "'\n", a_struct_array_bounded[1].b); - - std::printf ("(a_struct_t[]) a_struct_array_unbounded[0].a = '" T_PRINTF_FORMAT "'\n", a_struct_array_unbounded[0].a); - std::printf ("(a_struct_t[]) a_struct_array_unbounded[0].b = '" T_PRINTF_FORMAT "'\n", a_struct_array_unbounded[0].b); - std::printf ("(a_struct_t[]) a_struct_array_unbounded[1].a = '" T_PRINTF_FORMAT "'\n", a_struct_array_unbounded[1].a); - std::printf ("(a_struct_t[]) a_struct_array_unbounded[1].b = '" T_PRINTF_FORMAT "'\n", a_struct_array_unbounded[1].b); - - std::printf ("(a_union_zero_t[2]) a_union_zero_array_bounded[0].a = '" T_PRINTF_FORMAT "'\n", a_union_zero_array_bounded[0].a); - std::printf ("(a_union_zero_t[2]) a_union_zero_array_bounded[1].a = '" T_PRINTF_FORMAT "'\n", a_union_zero_array_bounded[1].a); - - std::printf ("(a_union_zero_t[]) a_union_zero_array_unbounded[0].a = '" T_PRINTF_FORMAT "'\n", a_union_zero_array_unbounded[0].a); - std::printf ("(a_union_zero_t[]) a_union_zero_array_unbounded[1].a = '" T_PRINTF_FORMAT "'\n", a_union_zero_array_unbounded[1].a); - -#endif - Puts("About to exit, break here to check values..."); // Set break point at this line. - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/int.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/int.cpp deleted file mode 100644 index 922398b1c6e35c3..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/inlined_breakpoints/int.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define T int -#define T_CSTR "int" -#define T_VALUE_1 11001110 -#define T_VALUE_2 22002220 -#define T_VALUE_3 33003330 -#define T_VALUE_4 44004440 -#define T_PRINTF_FORMAT "%i" - -#include "basic_type.cpp" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/Makefile deleted file mode 100644 index 06ef85cf908dd94..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../../make - -DYLIB_NAME := foo -DYLIB_CXX_SOURCES := foo.cpp -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/TestMoveNearest.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/TestMoveNearest.py deleted file mode 100644 index b8281e9c85bdf87..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/TestMoveNearest.py +++ /dev/null @@ -1,69 +0,0 @@ -from __future__ import print_function - - -import unittest2 -import lldb -from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil - - -class TestMoveNearest(TestBase): - - mydir = TestBase.compute_mydir(__file__) - NO_DEBUG_INFO_TESTCASE = True - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line1 = line_number('foo.h', '// !BR1') - self.line2 = line_number('foo.h', '// !BR2') - self.line_between = line_number('main.cpp', "// BR_Between") - print("BR_Between found at", self.line_between) - self.line_main = line_number('main.cpp', '// !BR_main') - - def test(self): - """Test target.move-to-nearest logic""" - - self.build() - target = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) - self.assertTrue(target, VALID_TARGET) - - lldbutil.run_break_set_by_symbol(self, 'main', sym_exact=True) - environment = self.registerSharedLibrariesWithTarget(target, ["foo"]) - process = target.LaunchSimple(None, environment, self.get_process_working_directory()) - self.assertEquals(process.GetState(), lldb.eStateStopped) - - # Regardless of the -m value the breakpoint should have exactly one - # location on the foo functions - self.runCmd("settings set target.move-to-nearest-code true") - lldbutil.run_break_set_by_file_and_line(self, 'foo.h', self.line1, - loc_exact=True, extra_options="-m 1") - lldbutil.run_break_set_by_file_and_line(self, 'foo.h', self.line2, - loc_exact=True, extra_options="-m 1") - - self.runCmd("settings set target.move-to-nearest-code false") - lldbutil.run_break_set_by_file_and_line(self, 'foo.h', self.line1, - loc_exact=True, extra_options="-m 0") - lldbutil.run_break_set_by_file_and_line(self, 'foo.h', self.line2, - loc_exact=True, extra_options="-m 0") - - - # Make sure we set a breakpoint in main with -m 1 for various lines in - # the function declaration - # "int" - lldbutil.run_break_set_by_file_and_line(self, 'main.cpp', - self.line_main-1, extra_options="-m 1") - # "main()" - lldbutil.run_break_set_by_file_and_line(self, 'main.cpp', - self.line_main, extra_options="-m 1") - # "{" - lldbutil.run_break_set_by_file_and_line(self, 'main.cpp', - self.line_main+1, extra_options="-m 1") - # "return .." - lldbutil.run_break_set_by_file_and_line(self, 'main.cpp', - self.line_main+2, extra_options="-m 1") - - # Make sure we don't put move the breakpoint if it is set between two functions: - lldbutil.run_break_set_by_file_and_line(self, 'main.cpp', - self.line_between, extra_options="-m 1", num_expected_locations=0) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/foo.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/foo.cpp deleted file mode 100644 index 8dad0a23f368242..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/foo.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "foo.h" - -int call_foo1() { return foo1(); } diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/foo.h b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/foo.h deleted file mode 100644 index 9f0e56dd22ee850..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/foo.h +++ /dev/null @@ -1,5 +0,0 @@ -inline int foo1() { return 1; } // !BR1 - -inline int foo2() { return 2; } // !BR2 - -LLDB_TEST_API extern int call_foo1(); diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/main.cpp deleted file mode 100644 index 76a22a5420fed75..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/move_nearest/main.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "foo.h" - -int call_foo2() { return foo2(); } -// BR_Between -int -main() // !BR_main -{ - return call_foo1() + call_foo2(); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/Makefile deleted file mode 100644 index ad3cb3fadcde348..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../../make - -OBJC_SOURCES := main.m - -include $(LEVEL)/Makefile.rules - -LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/TestObjCBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/TestObjCBreakpoints.py deleted file mode 100644 index e5e8473eedd6546..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/TestObjCBreakpoints.py +++ /dev/null @@ -1,132 +0,0 @@ -""" -Test that objective-c constant strings are generated correctly by the expression -parser. -""" - -from __future__ import print_function - - -import os -import time -import shutil -import subprocess -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -@skipUnlessDarwin -class TestObjCBreakpoints(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def test_break(self): - """Test setting Objective-C specific breakpoints (DWARF in .o files).""" - self.build() - self.setTearDownCleanup() - self.check_objc_breakpoints(False) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.main_source = "main.m" - self.line = line_number(self.main_source, '// Set breakpoint here') - - def check_category_breakpoints(self): - name_bp = self.target.BreakpointCreateByName("myCategoryFunction") - selector_bp = self.target.BreakpointCreateByName( - "myCategoryFunction", - lldb.eFunctionNameTypeSelector, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - name_bp.GetNumLocations() == selector_bp.GetNumLocations(), - 'Make sure setting a breakpoint by name "myCategoryFunction" sets a breakpoint even though it is in a category') - for bp_loc in selector_bp: - function_name = bp_loc.GetAddress().GetSymbol().GetName() - self.assertTrue( - " myCategoryFunction]" in function_name, - 'Make sure all function names have " myCategoryFunction]" in their names') - - category_bp = self.target.BreakpointCreateByName( - "-[MyClass(MyCategory) myCategoryFunction]") - stripped_bp = self.target.BreakpointCreateByName( - "-[MyClass myCategoryFunction]") - stripped2_bp = self.target.BreakpointCreateByName( - "[MyClass myCategoryFunction]") - self.assertTrue( - category_bp.GetNumLocations() == 1, - "Make sure we can set a breakpoint using a full objective C function name with the category included (-[MyClass(MyCategory) myCategoryFunction])") - self.assertTrue( - stripped_bp.GetNumLocations() == 1, - "Make sure we can set a breakpoint using a full objective C function name without the category included (-[MyClass myCategoryFunction])") - self.assertTrue( - stripped2_bp.GetNumLocations() == 1, - "Make sure we can set a breakpoint using a full objective C function name without the category included ([MyClass myCategoryFunction])") - - def check_objc_breakpoints(self, have_dsym): - """Test constant string generation amd comparison by the expression parser.""" - - # Set debugger into synchronous mode - self.dbg.SetAsync(False) - - # Create a target by the debugger. - exe = self.getBuildArtifact("a.out") - self.target = self.dbg.CreateTarget(exe) - self.assertTrue(self.target, VALID_TARGET) - - #---------------------------------------------------------------------- - # Set breakpoints on all selectors whose name is "count". This should - # catch breakpoints that are both C functions _and_ anything whose - # selector is "count" because just looking at "count" we can't tell - # definitively if the name is a selector or a C function - #---------------------------------------------------------------------- - name_bp = self.target.BreakpointCreateByName("count") - selector_bp = self.target.BreakpointCreateByName( - "count", - lldb.eFunctionNameTypeSelector, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - name_bp.GetNumLocations() >= selector_bp.GetNumLocations(), - 'Make sure we get at least the same amount of breakpoints if not more when setting by name "count"') - self.assertTrue( - selector_bp.GetNumLocations() > 50, - 'Make sure we find a lot of "count" selectors') # There are 93 on the latest MacOSX - for bp_loc in selector_bp: - function_name = bp_loc.GetAddress().GetSymbol().GetName() - self.assertTrue( - " count]" in function_name, - 'Make sure all function names have " count]" in their names') - - #---------------------------------------------------------------------- - # Set breakpoints on all selectors whose name is "isEqual:". This should - # catch breakpoints that are only ObjC selectors because no C function - # can end with a : - #---------------------------------------------------------------------- - name_bp = self.target.BreakpointCreateByName("isEqual:") - selector_bp = self.target.BreakpointCreateByName( - "isEqual:", - lldb.eFunctionNameTypeSelector, - lldb.SBFileSpecList(), - lldb.SBFileSpecList()) - self.assertTrue( - name_bp.GetNumLocations() == selector_bp.GetNumLocations(), - 'Make sure setting a breakpoint by name "isEqual:" only sets selector breakpoints') - for bp_loc in selector_bp: - function_name = bp_loc.GetAddress().GetSymbol().GetName() - self.assertTrue( - " isEqual:]" in function_name, - 'Make sure all function names have " isEqual:]" in their names') - - self.check_category_breakpoints() - - if have_dsym: - shutil.rmtree(exe + ".dSYM") - self.assertTrue(subprocess.call( - ['/usr/bin/strip', '-Sx', exe]) == 0, 'stripping dylib succeeded') - - # Check breakpoints again, this time using the symbol table only - self.check_category_breakpoints() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/main.m b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/main.m deleted file mode 100644 index 53567491219ba95..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/objc/main.m +++ /dev/null @@ -1,98 +0,0 @@ -#import -#include - -@interface MyClass : NSObject -@end - -@implementation MyClass : NSObject -@end - -@implementation MyClass (MyCategory) - - -- (void) myCategoryFunction { - NSLog (@"myCategoryFunction"); -} - -@end - - - -int -Test_Selector () -{ - SEL sel = @selector(length); - printf("sel = %p\n", sel); - // Expressions to test here for selector: - // expression (char *)sel_getName(sel) - // The expression above should return "sel" as it should be just - // a uniqued C string pointer. We were seeing the result pointer being - // truncated with recent LLDBs. - return 0; // Break here for selector: tests -} - -int -Test_NSString (const char *program) -{ - NSString *str = [NSString stringWithFormat:@"Hello from '%s'", program]; - NSLog(@"NSString instance: %@", str); - printf("str = '%s'\n", [str cStringUsingEncoding: [NSString defaultCStringEncoding]]); - printf("[str length] = %zu\n", (size_t)[str length]); - printf("[str description] = %s\n", [[str description] UTF8String]); - id str_id = str; - // Expressions to test here for NSString: - // expression (char *)sel_getName(sel) - // expression [str length] - // expression [str_id length] - // expression [str description] - // expression [str_id description] - // expression str.length - // expression str.description - // expression str = @"new" - // expression str = [NSString stringWithFormat: @"%cew", 'N'] - return 0; // Break here for NSString tests -} - -NSString *my_global_str = NULL; - -int -Test_NSArray () -{ - NSMutableArray *nil_mutable_array = nil; - NSArray *array1 = [NSArray arrayWithObjects: @"array1 object1", @"array1 object2", @"array1 object3", nil]; - NSArray *array2 = [NSArray arrayWithObjects: array1, @"array2 object2", @"array2 object3", nil]; - // Expressions to test here for NSArray: - // expression [nil_mutable_array count] - // expression [array1 count] - // expression array1.count - // expression [array2 count] - // expression array2.count - id obj; - // After each object at index call, use expression and validate object - obj = [array1 objectAtIndex: 0]; // Break here for NSArray tests - obj = [array1 objectAtIndex: 1]; - obj = [array1 objectAtIndex: 2]; - - obj = [array2 objectAtIndex: 0]; - obj = [array2 objectAtIndex: 1]; - obj = [array2 objectAtIndex: 2]; - NSUInteger count = [nil_mutable_array count]; - return 0; -} - - -int main (int argc, char const *argv[]) -{ - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - Test_Selector(); // Set breakpoint here - Test_NSArray (); - Test_NSString (argv[0]); - MyClass *my_class = [[MyClass alloc] init]; - [my_class myCategoryFunction]; - printf("sizeof(id) = %zu\n", sizeof(id)); - printf("sizeof(Class) = %zu\n", sizeof(Class)); - printf("sizeof(SEL) = %zu\n", sizeof(SEL)); - - [pool release]; - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/Makefile deleted file mode 100644 index 7934cd5db427b7b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -ifneq (,$(findstring icc,$(CC))) - CFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/TestRequireHWBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/TestRequireHWBreakpoints.py deleted file mode 100644 index c058794626151e7..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/TestRequireHWBreakpoints.py +++ /dev/null @@ -1,105 +0,0 @@ -""" -Test require hardware breakpoints. -""" - -from __future__ import print_function - -import os -import time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointLocationsTestCase(TestBase): - NO_DEBUG_INFO_TESTCASE = True - mydir = TestBase.compute_mydir(__file__) - - def test_breakpoint(self): - """Test regular breakpoints when hardware breakpoints are required.""" - self.build() - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - - self.runCmd("settings set target.require-hardware-breakpoint true") - - breakpoint = target.BreakpointCreateByLocation("main.c", 1) - self.assertTrue(breakpoint.IsHardware()) - - @skipIfWindows - def test_step_range(self): - """Test stepping when hardware breakpoints are required.""" - self.build() - - _, _, thread, _ = lldbutil.run_to_line_breakpoint( - self, lldb.SBFileSpec("main.c"), 1) - - self.runCmd("settings set target.require-hardware-breakpoint true") - - # Ensure we fail in the interpreter. - self.expect("thread step-in") - self.expect("thread step-in", error=True) - - # Ensure we fail when stepping through the API. - error = lldb.SBError() - thread.StepInto('', 4, error) - self.assertTrue(error.Fail()) - self.assertTrue("Could not create hardware breakpoint for thread plan" - in error.GetCString()) - - @skipIfWindows - def test_step_out(self): - """Test stepping out when hardware breakpoints are required.""" - self.build() - - _, _, thread, _ = lldbutil.run_to_line_breakpoint( - self, lldb.SBFileSpec("main.c"), 1) - - self.runCmd("settings set target.require-hardware-breakpoint true") - - # Ensure this fails in the command interpreter. - self.expect("thread step-out", error=True) - - # Ensure we fail when stepping through the API. - error = lldb.SBError() - thread.StepOut(error) - self.assertTrue(error.Fail()) - self.assertTrue("Could not create hardware breakpoint for thread plan" - in error.GetCString()) - - @skipIfWindows - def test_step_over(self): - """Test stepping over when hardware breakpoints are required.""" - self.build() - - _, _, thread, _ = lldbutil.run_to_line_breakpoint( - self, lldb.SBFileSpec("main.c"), 7) - - self.runCmd("settings set target.require-hardware-breakpoint true") - - # Step over doesn't fail immediately but fails later on. - self.expect( - "thread step-over", - error=True, - substrs=[ - 'error: Could not create hardware breakpoint for thread plan.' - ]) - - @skipIfWindows - def test_step_until(self): - """Test stepping until when hardware breakpoints are required.""" - self.build() - - _, _, thread, _ = lldbutil.run_to_line_breakpoint( - self, lldb.SBFileSpec("main.c"), 7) - - self.runCmd("settings set target.require-hardware-breakpoint true") - - self.expect("thread until 5", error=True) - - # Ensure we fail when stepping through the API. - error = thread.StepOverUntil(lldb.SBFrame(), lldb.SBFileSpec(), 5) - self.assertTrue(error.Fail()) - self.assertTrue("Could not create hardware breakpoint for thread plan" - in error.GetCString()) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/main.c deleted file mode 100644 index 7d49a57d4c7b9f5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/require_hw_breakpoints/main.c +++ /dev/null @@ -1,9 +0,0 @@ -int break_on_me() { - int i = 10; - i++; - return i; -} - -int main() { - return break_on_me(); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/Makefile deleted file mode 100644 index 6067ee45e984893..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/TestScriptedResolver.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/TestScriptedResolver.py deleted file mode 100644 index 64f6acccac3b00f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/TestScriptedResolver.py +++ /dev/null @@ -1,199 +0,0 @@ -""" -Test setting breakpoints using a scripted resolver -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -import lldbsuite.test.lldbutil as lldbutil -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * - - -class TestScriptedResolver(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - NO_DEBUG_INFO_TESTCASE = True - - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24528") - def test_scripted_resolver(self): - """Use a scripted resolver to set a by symbol name breakpoint""" - self.build() - self.do_test() - - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24528") - def test_search_depths(self): - """ Make sure we are called at the right depths depending on what we return - from __get_depth__""" - self.build() - self.do_test_depths() - - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24528") - def test_command_line(self): - """ Make sure we are called at the right depths depending on what we return - from __get_depth__""" - self.build() - self.do_test_cli() - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - - def make_target_and_import(self): - target = lldbutil.run_to_breakpoint_make_target(self) - interp = self.dbg.GetCommandInterpreter() - error = lldb.SBError() - - script_name = os.path.join(self.getSourceDir(), "resolver.py") - source_name = os.path.join(self.getSourceDir(), "main.c") - - command = "command script import " + script_name - result = lldb.SBCommandReturnObject() - interp.HandleCommand(command, result) - self.assertTrue(result.Succeeded(), "com scr imp failed: %s"%(result.GetError())) - return target - - def make_extra_args(self): - json_string = '{"symbol":"break_on_me", "test1": "value1"}' - json_stream = lldb.SBStream() - json_stream.Print(json_string) - extra_args = lldb.SBStructuredData() - error = extra_args.SetFromJSON(json_stream) - self.assertTrue(error.Success(), "Error making SBStructuredData: %s"%(error.GetCString())) - return extra_args - - def do_test(self): - """This reads in a python file and sets a breakpoint using it.""" - - target = self.make_target_and_import() - extra_args = self.make_extra_args() - - file_list = lldb.SBFileSpecList() - module_list = lldb.SBFileSpecList() - - # Make breakpoints with this resolver using different filters, first ones that will take: - right = [] - # one with no file or module spec - this one should fire: - right.append(target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list)) - - # one with the right source file and no module - should also fire: - file_list.Append(lldb.SBFileSpec("main.c")) - right.append(target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list)) - # Make sure the help text shows up in the "break list" output: - self.expect("break list", substrs=["I am a python breakpoint resolver"], msg="Help is listed in break list") - - # one with the right source file and right module - should also fire: - module_list.Append(lldb.SBFileSpec("a.out")) - right.append(target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list)) - - # And one with no source file but the right module: - file_list.Clear() - right.append(target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list)) - - # Make sure these all got locations: - for i in range (0, len(right)): - self.assertTrue(right[i].GetNumLocations() >= 1, "Breakpoint %d has no locations."%(i)) - - # Now some ones that won't take: - - module_list.Clear() - file_list.Clear() - wrong = [] - - # one with the wrong module - should not fire: - module_list.Append(lldb.SBFileSpec("noSuchModule")) - wrong.append(target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list)) - - # one with the wrong file - also should not fire: - file_list.Clear() - module_list.Clear() - file_list.Append(lldb.SBFileSpec("noFileOfThisName.xxx")) - wrong.append(target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list)) - - # Now make sure the CU level iteration obeys the file filters: - file_list.Clear() - module_list.Clear() - file_list.Append(lldb.SBFileSpec("no_such_file.xxx")) - wrong.append(target.BreakpointCreateFromScript("resolver.ResolverCUDepth", extra_args, module_list, file_list)) - - # And the Module filters: - file_list.Clear() - module_list.Clear() - module_list.Append(lldb.SBFileSpec("NoSuchModule.dylib")) - wrong.append(target.BreakpointCreateFromScript("resolver.ResolverCUDepth", extra_args, module_list, file_list)) - - # Now make sure the Function level iteration obeys the file filters: - file_list.Clear() - module_list.Clear() - file_list.Append(lldb.SBFileSpec("no_such_file.xxx")) - wrong.append(target.BreakpointCreateFromScript("resolver.ResolverFuncDepth", extra_args, module_list, file_list)) - - # And the Module filters: - file_list.Clear() - module_list.Clear() - module_list.Append(lldb.SBFileSpec("NoSuchModule.dylib")) - wrong.append(target.BreakpointCreateFromScript("resolver.ResolverFuncDepth", extra_args, module_list, file_list)) - - # Make sure these didn't get locations: - for i in range(0, len(wrong)): - self.assertEqual(wrong[i].GetNumLocations(), 0, "Breakpoint %d has locations."%(i)) - - # Now run to main and ensure we hit the breakpoints we should have: - - lldbutil.run_to_breakpoint_do_run(self, target, right[0]) - - # Test the hit counts: - for i in range(0, len(right)): - self.assertEqual(right[i].GetHitCount(), 1, "Breakpoint %d has the wrong hit count"%(i)) - - for i in range(0, len(wrong)): - self.assertEqual(wrong[i].GetHitCount(), 0, "Breakpoint %d has the wrong hit count"%(i)) - - def do_test_depths(self): - """This test uses a class variable in resolver.Resolver which gets set to 1 if we saw - compile unit and 2 if we only saw modules. If the search depth is module, you get passed just - the modules with no comp_unit. If the depth is comp_unit you get comp_units. So we can use - this to test that our callback gets called at the right depth.""" - - target = self.make_target_and_import() - extra_args = self.make_extra_args() - - file_list = lldb.SBFileSpecList() - module_list = lldb.SBFileSpecList() - module_list.Append(lldb.SBFileSpec("a.out")) - - # Make a breakpoint that has no __get_depth__, check that that is converted to eSearchDepthModule: - bkpt = target.BreakpointCreateFromScript("resolver.Resolver", extra_args, module_list, file_list) - self.assertTrue(bkpt.GetNumLocations() > 0, "Resolver got no locations.") - self.expect("script print(resolver.Resolver.got_files)", substrs=["2"], msg="Was only passed modules") - - # Make a breakpoint that asks for modules, check that we didn't get any files: - bkpt = target.BreakpointCreateFromScript("resolver.ResolverModuleDepth", extra_args, module_list, file_list) - self.assertTrue(bkpt.GetNumLocations() > 0, "ResolverModuleDepth got no locations.") - self.expect("script print(resolver.Resolver.got_files)", substrs=["2"], msg="Was only passed modules") - - # Make a breakpoint that asks for compile units, check that we didn't get any files: - bkpt = target.BreakpointCreateFromScript("resolver.ResolverCUDepth", extra_args, module_list, file_list) - self.assertTrue(bkpt.GetNumLocations() > 0, "ResolverCUDepth got no locations.") - self.expect("script print(resolver.Resolver.got_files)", substrs=["1"], msg="Was passed compile units") - - # Make a breakpoint that returns a bad value - we should convert that to "modules" so check that: - bkpt = target.BreakpointCreateFromScript("resolver.ResolverBadDepth", extra_args, module_list, file_list) - self.assertTrue(bkpt.GetNumLocations() > 0, "ResolverBadDepth got no locations.") - self.expect("script print(resolver.Resolver.got_files)", substrs=["2"], msg="Was only passed modules") - - # Make a breakpoint that searches at function depth: - bkpt = target.BreakpointCreateFromScript("resolver.ResolverFuncDepth", extra_args, module_list, file_list) - self.assertTrue(bkpt.GetNumLocations() > 0, "ResolverFuncDepth got no locations.") - self.expect("script print(resolver.Resolver.got_files)", substrs=["3"], msg="Was only passed modules") - self.expect("script print(resolver.Resolver.func_list)", substrs=["break_on_me", "main", "test_func"], msg="Saw all the functions") - - def do_test_cli(self): - target = self.make_target_and_import() - - lldbutil.run_break_set_by_script(self, "resolver.Resolver", extra_options="-k symbol -v break_on_me") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/main.c deleted file mode 100644 index b91ccfc1b43e3c5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/main.c +++ /dev/null @@ -1,21 +0,0 @@ -#include - -int -test_func() -{ - return printf("I am a test function."); -} - -void -break_on_me() -{ - printf("I was called.\n"); -} - -int -main() -{ - break_on_me(); - test_func(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/resolver.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/resolver.py deleted file mode 100644 index 61f5f2df20acd70..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/scripted_bkpt/resolver.py +++ /dev/null @@ -1,54 +0,0 @@ -import lldb - -class Resolver: - got_files = 0 - func_list = [] - - def __init__(self, bkpt, extra_args, dict): - self.bkpt = bkpt - self.extra_args = extra_args - Resolver.func_list = [] - Resolver.got_files = 0 - - def __callback__(self, sym_ctx): - sym_name = "not_a_real_function_name" - sym_item = self.extra_args.GetValueForKey("symbol") - if sym_item.IsValid(): - sym_name = sym_item.GetStringValue(1000) - - if sym_ctx.compile_unit.IsValid(): - Resolver.got_files = 1 - else: - Resolver.got_files = 2 - - if sym_ctx.function.IsValid(): - Resolver.got_files = 3 - func_name = sym_ctx.function.GetName() - Resolver.func_list.append(func_name) - if sym_name == func_name: - self.bkpt.AddLocation(sym_ctx.function.GetStartAddress()) - return - - if sym_ctx.module.IsValid(): - sym = sym_ctx.module.FindSymbol(sym_name, lldb.eSymbolTypeCode) - if sym.IsValid(): - self.bkpt.AddLocation(sym.GetStartAddress()) - - def get_short_help(self): - return "I am a python breakpoint resolver" - -class ResolverModuleDepth(Resolver): - def __get_depth__ (self): - return lldb.eSearchDepthModule - -class ResolverCUDepth(Resolver): - def __get_depth__ (self): - return lldb.eSearchDepthCompUnit - -class ResolverFuncDepth(Resolver): - def __get_depth__ (self): - return lldb.eSearchDepthFunction - -class ResolverBadDepth(Resolver): - def __get_depth__ (self): - return lldb.kLastSearchDepthKind + 1 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/TestBreakpointSerialization.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/TestBreakpointSerialization.py deleted file mode 100644 index e84cbf48654a851..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/TestBreakpointSerialization.py +++ /dev/null @@ -1,293 +0,0 @@ -""" -Test breakpoint serialization. -""" - -from __future__ import print_function - - -import os -import time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class BreakpointSerialization(TestBase): - - mydir = TestBase.compute_mydir(__file__) - NO_DEBUG_INFO_TESTCASE = True - - @add_test_categories(['pyapi']) - def test_resolvers(self): - """Use Python APIs to test that we serialize resolvers.""" - self.build() - self.setup_targets_and_cleanup() - self.do_check_resolvers() - - def test_filters(self): - """Use Python APIs to test that we serialize search filters correctly.""" - self.build() - self.setup_targets_and_cleanup() - self.do_check_filters() - - def test_options(self): - """Use Python APIs to test that we serialize breakpoint options correctly.""" - self.build() - self.setup_targets_and_cleanup() - self.do_check_options() - - def test_appending(self): - """Use Python APIs to test that we serialize breakpoint options correctly.""" - self.build() - self.setup_targets_and_cleanup() - self.do_check_appending() - - def test_name_filters(self): - """Use python APIs to test that reading in by name works correctly.""" - self.build() - self.setup_targets_and_cleanup() - self.do_check_names() - - def setup_targets_and_cleanup(self): - def cleanup (): - self.RemoveTempFile(self.bkpts_file_path) - - if self.orig_target.IsValid(): - self.dbg.DeleteTarget(self.orig_target) - self.dbg.DeleteTarget(self.copy_target) - - self.addTearDownHook(cleanup) - self.RemoveTempFile(self.bkpts_file_path) - - exe = self.getBuildArtifact("a.out") - - # Create the targets we are making breakpoints in and copying them to: - self.orig_target = self.dbg.CreateTarget(exe) - self.assertTrue(self.orig_target, VALID_TARGET) - - self.copy_target = self.dbg.CreateTarget(exe) - self.assertTrue(self.copy_target, VALID_TARGET) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - - self.bkpts_file_path = self.getBuildArtifact("breakpoints.json") - self.bkpts_file_spec = lldb.SBFileSpec(self.bkpts_file_path) - - def check_equivalence(self, source_bps, do_write = True): - - error = lldb.SBError() - - if (do_write): - error = self.orig_target.BreakpointsWriteToFile(self.bkpts_file_spec, source_bps) - self.assertTrue(error.Success(), "Failed writing breakpoints to file: %s."%(error.GetCString())) - - copy_bps = lldb.SBBreakpointList(self.copy_target) - error = self.copy_target.BreakpointsCreateFromFile(self.bkpts_file_spec, copy_bps) - self.assertTrue(error.Success(), "Failed reading breakpoints from file: %s"%(error.GetCString())) - - num_source_bps = source_bps.GetSize() - num_copy_bps = copy_bps.GetSize() - self.assertTrue(num_source_bps == num_copy_bps, "Didn't get same number of input and output breakpoints - orig: %d copy: %d"%(num_source_bps, num_copy_bps)) - - for i in range(0, num_source_bps): - source_bp = source_bps.GetBreakpointAtIndex(i) - source_desc = lldb.SBStream() - source_bp.GetDescription(source_desc, False) - source_text = source_desc.GetData() - - # I am assuming here that the breakpoints will get written out in breakpoint ID order, and - # read back in ditto. That is true right now, and I can't see any reason to do it differently - # but if we do we can go to writing the breakpoints one by one, or sniffing the descriptions to - # see which one is which. - copy_id = source_bp.GetID() - copy_bp = copy_bps.FindBreakpointByID(copy_id) - self.assertTrue(copy_bp.IsValid(), "Could not find copy breakpoint %d."%(copy_id)) - - copy_desc = lldb.SBStream() - copy_bp.GetDescription(copy_desc, False) - copy_text = copy_desc.GetData() - - # These two should be identical. - # print ("Source text for %d is %s."%(i, source_text)) - self.assertTrue (source_text == copy_text, "Source and dest breakpoints are not identical: \nsource: %s\ndest: %s"%(source_text, copy_text)) - - def do_check_resolvers(self): - """Use Python APIs to check serialization of breakpoint resolvers""" - - empty_module_list = lldb.SBFileSpecList() - empty_cu_list = lldb.SBFileSpecList() - blubby_file_spec = lldb.SBFileSpec(os.path.join(self.getSourceDir(), "blubby.c")) - - # It isn't actually important for these purposes that these breakpoint - # actually have locations. - source_bps = lldb.SBBreakpointList(self.orig_target) - source_bps.Append(self.orig_target.BreakpointCreateByLocation("blubby.c", 666)) - # Make sure we do one breakpoint right: - self.check_equivalence(source_bps) - source_bps.Clear() - - source_bps.Append(self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeAuto, empty_module_list, empty_cu_list)) - source_bps.Append(self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeFull, empty_module_list,empty_cu_list)) - source_bps.Append(self.orig_target.BreakpointCreateBySourceRegex("dont really care", blubby_file_spec)) - - # And some number greater than one: - self.check_equivalence(source_bps) - - def do_check_filters(self): - """Use Python APIs to check serialization of breakpoint filters.""" - module_list = lldb.SBFileSpecList() - module_list.Append(lldb.SBFileSpec("SomeBinary")) - module_list.Append(lldb.SBFileSpec("SomeOtherBinary")) - - cu_list = lldb.SBFileSpecList() - cu_list.Append(lldb.SBFileSpec("SomeCU.c")) - cu_list.Append(lldb.SBFileSpec("AnotherCU.c")) - cu_list.Append(lldb.SBFileSpec("ThirdCU.c")) - - blubby_file_spec = lldb.SBFileSpec(os.path.join(self.getSourceDir(), "blubby.c")) - - # It isn't actually important for these purposes that these breakpoint - # actually have locations. - source_bps = lldb.SBBreakpointList(self.orig_target) - bkpt = self.orig_target.BreakpointCreateByLocation(blubby_file_spec, 666, 0, module_list) - source_bps.Append(bkpt) - - # Make sure we do one right: - self.check_equivalence(source_bps) - source_bps.Clear() - - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeAuto, module_list, cu_list) - source_bps.Append(bkpt) - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeFull, module_list, cu_list) - source_bps.Append(bkpt) - bkpt = self.orig_target.BreakpointCreateBySourceRegex("dont really care", blubby_file_spec) - source_bps.Append(bkpt) - - # And some number greater than one: - self.check_equivalence(source_bps) - - def do_check_options(self): - """Use Python APIs to check serialization of breakpoint options.""" - - empty_module_list = lldb.SBFileSpecList() - empty_cu_list = lldb.SBFileSpecList() - blubby_file_spec = lldb.SBFileSpec(os.path.join(self.getSourceDir(), "blubby.c")) - - # It isn't actually important for these purposes that these breakpoint - # actually have locations. - source_bps = lldb.SBBreakpointList(self.orig_target) - - bkpt = self.orig_target.BreakpointCreateByLocation( - lldb.SBFileSpec("blubby.c"), 666, 333, 0, lldb.SBFileSpecList()) - bkpt.SetEnabled(False) - bkpt.SetOneShot(True) - bkpt.SetThreadID(10) - source_bps.Append(bkpt) - - # Make sure we get one right: - self.check_equivalence(source_bps) - source_bps.Clear() - - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeAuto, empty_module_list, empty_cu_list) - bkpt.SetIgnoreCount(10) - bkpt.SetThreadName("grubby") - source_bps.Append(bkpt) - - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeAuto, empty_module_list, empty_cu_list) - bkpt.SetCondition("gonna remove this") - bkpt.SetCondition("") - source_bps.Append(bkpt) - - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeFull, empty_module_list,empty_cu_list) - bkpt.SetCondition("something != something_else") - bkpt.SetQueueName("grubby") - bkpt.AddName("FirstName") - bkpt.AddName("SecondName") - bkpt.SetScriptCallbackBody('\tprint("I am a function that prints.")\n\tprint("I don\'t do anything else")\n') - source_bps.Append(bkpt) - - bkpt = self.orig_target.BreakpointCreateBySourceRegex("dont really care", blubby_file_spec) - cmd_list = lldb.SBStringList() - cmd_list.AppendString("frame var") - cmd_list.AppendString("thread backtrace") - - bkpt.SetCommandLineCommands(cmd_list) - source_bps.Append(bkpt) - - self.check_equivalence(source_bps) - - def do_check_appending(self): - """Use Python APIs to check appending to already serialized options.""" - - empty_module_list = lldb.SBFileSpecList() - empty_cu_list = lldb.SBFileSpecList() - blubby_file_spec = lldb.SBFileSpec(os.path.join(self.getSourceDir(), "blubby.c")) - - # It isn't actually important for these purposes that these breakpoint - # actually have locations. - - all_bps = lldb.SBBreakpointList(self.orig_target) - source_bps = lldb.SBBreakpointList(self.orig_target) - - bkpt = self.orig_target.BreakpointCreateByLocation( - lldb.SBFileSpec("blubby.c"), 666, 333, 0, lldb.SBFileSpecList()) - bkpt.SetEnabled(False) - bkpt.SetOneShot(True) - bkpt.SetThreadID(10) - source_bps.Append(bkpt) - all_bps.Append(bkpt) - - error = lldb.SBError() - error = self.orig_target.BreakpointsWriteToFile(self.bkpts_file_spec, source_bps) - self.assertTrue(error.Success(), "Failed writing breakpoints to file: %s."%(error.GetCString())) - - source_bps.Clear() - - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeAuto, empty_module_list, empty_cu_list) - bkpt.SetIgnoreCount(10) - bkpt.SetThreadName("grubby") - source_bps.Append(bkpt) - all_bps.Append(bkpt) - - bkpt = self.orig_target.BreakpointCreateByName("blubby", lldb.eFunctionNameTypeFull, empty_module_list,empty_cu_list) - bkpt.SetCondition("something != something_else") - bkpt.SetQueueName("grubby") - bkpt.AddName("FirstName") - bkpt.AddName("SecondName") - - source_bps.Append(bkpt) - all_bps.Append(bkpt) - - error = self.orig_target.BreakpointsWriteToFile(self.bkpts_file_spec, source_bps, True) - self.assertTrue(error.Success(), "Failed appending breakpoints to file: %s."%(error.GetCString())) - - self.check_equivalence(all_bps) - - def do_check_names(self): - bkpt = self.orig_target.BreakpointCreateByLocation( - lldb.SBFileSpec("blubby.c"), 666, 333, 0, lldb.SBFileSpecList()) - good_bkpt_name = "GoodBreakpoint" - write_bps = lldb.SBBreakpointList(self.orig_target) - bkpt.AddName(good_bkpt_name) - write_bps.Append(bkpt) - - error = lldb.SBError() - error = self.orig_target.BreakpointsWriteToFile(self.bkpts_file_spec, write_bps) - self.assertTrue(error.Success(), "Failed writing breakpoints to file: %s."%(error.GetCString())) - - copy_bps = lldb.SBBreakpointList(self.copy_target) - names_list = lldb.SBStringList() - names_list.AppendString("NoSuchName") - - error = self.copy_target.BreakpointsCreateFromFile(self.bkpts_file_spec, names_list, copy_bps) - self.assertTrue(error.Success(), "Failed reading breakpoints from file: %s"%(error.GetCString())) - self.assertTrue(copy_bps.GetSize() == 0, "Found breakpoints with a nonexistent name.") - - names_list.AppendString(good_bkpt_name) - error = self.copy_target.BreakpointsCreateFromFile(self.bkpts_file_spec, names_list, copy_bps) - self.assertTrue(error.Success(), "Failed reading breakpoints from file: %s"%(error.GetCString())) - self.assertTrue(copy_bps.GetSize() == 1, "Found the matching breakpoint.") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/main.c deleted file mode 100644 index b1ed4465c1d4eb4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/serialize/main.c +++ /dev/null @@ -1,53 +0,0 @@ -//===-- main.c --------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include - -// This simple program is to demonstrate the capability of the lldb command -// "breakpoint modify -i breakpt-id" to set the number of times a -// breakpoint is skipped before stopping. Ignore count can also be set upon -// breakpoint creation by 'breakpoint set ... -i '. - -int a(int); -int b(int); -int c(int); - -int a(int val) -{ - if (val <= 1) - return b(val); - else if (val >= 3) - return c(val); // a(3) -> c(3) Find the call site of c(3). - - return val; -} - -int b(int val) -{ - return c(val); -} - -int c(int val) -{ - return val + 3; // Find the line number of function "c" here. -} - -int main (int argc, char const *argv[]) -{ - int A1 = a(1); // a(1) -> b(1) -> c(1) - printf("a(1) returns %d\n", A1); - - int B2 = b(2); // b(2) -> c(2) Find the call site of b(2). - printf("b(2) returns %d\n", B2); - - int A3 = a(3); // a(3) -> c(3) Find the call site of a(3). - printf("a(3) returns %d\n", A3); - - int C1 = c(5); // Find the call site of c in main. - printf ("c(5) returns %d\n", C1); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/Makefile deleted file mode 100644 index ac984f101c18901..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c a.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/TestSourceRegexBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/TestSourceRegexBreakpoints.py deleted file mode 100644 index 4256c70a026504c..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/TestSourceRegexBreakpoints.py +++ /dev/null @@ -1,106 +0,0 @@ -""" -Test lldb breakpoint setting by source regular expression. -This test just tests the source file & function restrictions. -""" - -from __future__ import print_function - -import os -import time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class TestSourceRegexBreakpoints(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def test_location(self): - self.build() - self.source_regex_locations() - - def test_restrictions(self): - self.build() - self.source_regex_restrictions() - - def source_regex_locations(self): - """ Test that restricting source expressions to files & to functions. """ - # Create a target by the debugger. - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # First look just in main: - target_files = lldb.SBFileSpecList() - target_files.Append(lldb.SBFileSpec("a.c")) - - func_names = lldb.SBStringList() - func_names.AppendString("a_func") - - source_regex = "Set . breakpoint here" - main_break = target.BreakpointCreateBySourceRegex( - source_regex, lldb.SBFileSpecList(), target_files, func_names) - num_locations = main_break.GetNumLocations() - self.assertTrue( - num_locations == 1, - "a.c in a_func should give one breakpoint, got %d." % - (num_locations)) - - loc = main_break.GetLocationAtIndex(0) - self.assertTrue(loc.IsValid(), "Got a valid location.") - address = loc.GetAddress() - self.assertTrue( - address.IsValid(), - "Got a valid address from the location.") - - a_func_line = line_number("a.c", "Set A breakpoint here") - line_entry = address.GetLineEntry() - self.assertTrue(line_entry.IsValid(), "Got a valid line entry.") - self.assertTrue(line_entry.line == a_func_line, - "Our line number matches the one lldbtest found.") - - def source_regex_restrictions(self): - """ Test that restricting source expressions to files & to functions. """ - # Create a target by the debugger. - exe = self.getBuildArtifact("a.out") - target = self.dbg.CreateTarget(exe) - self.assertTrue(target, VALID_TARGET) - - # First look just in main: - target_files = lldb.SBFileSpecList() - target_files.Append(lldb.SBFileSpec("main.c")) - source_regex = "Set . breakpoint here" - main_break = target.BreakpointCreateBySourceRegex( - source_regex, lldb.SBFileSpecList(), target_files, lldb.SBStringList()) - - num_locations = main_break.GetNumLocations() - self.assertTrue( - num_locations == 2, - "main.c should have 2 matches, got %d." % - (num_locations)) - - # Now look in both files: - target_files.Append(lldb.SBFileSpec("a.c")) - - main_break = target.BreakpointCreateBySourceRegex( - source_regex, lldb.SBFileSpecList(), target_files, lldb.SBStringList()) - - num_locations = main_break.GetNumLocations() - self.assertTrue( - num_locations == 4, - "main.c and a.c should have 4 matches, got %d." % - (num_locations)) - - # Now restrict it to functions: - func_names = lldb.SBStringList() - func_names.AppendString("main_func") - main_break = target.BreakpointCreateBySourceRegex( - source_regex, lldb.SBFileSpecList(), target_files, func_names) - - num_locations = main_break.GetNumLocations() - self.assertTrue( - num_locations == 2, - "main_func in main.c and a.c should have 2 matches, got %d." % - (num_locations)) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/a.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/a.c deleted file mode 100644 index 056583f1c42cd45..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/a.c +++ /dev/null @@ -1,16 +0,0 @@ -#include - -#include "a.h" - -static int -main_func(int input) -{ - return printf("Set B breakpoint here: %d", input); -} - -int -a_func(int input) -{ - input += 1; // Set A breakpoint here; - return main_func(input); -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/a.h b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/a.h deleted file mode 100644 index f578ac0304cdc56..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/a.h +++ /dev/null @@ -1 +0,0 @@ -int a_func(int); diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/main.c deleted file mode 100644 index 9c8625e877f5823..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/source_regexp/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include "a.h" - -int -main_func(int input) -{ - return printf("Set B breakpoint here: %d.\n", input); -} - -int -main() -{ - a_func(10); - main_func(10); - printf("Set a breakpoint here:\n"); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/Makefile deleted file mode 100644 index f89b52a972e9f76..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -ifneq (,$(findstring icc,$(CC))) - CXXFLAGS += -debug inline-debug-info -endif - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py deleted file mode 100644 index 07fd04940d96ca2..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py +++ /dev/null @@ -1,119 +0,0 @@ -""" -Test that breakpoints do not affect stepping. -Check for correct StopReason when stepping to the line with breakpoint -which chould be eStopReasonBreakpoint in general, -and eStopReasonPlanComplete when breakpoint's condition fails. -""" - -from __future__ import print_function - -import unittest2 -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -class StepOverBreakpointsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - TestBase.setUp(self) - - self.build() - exe = self.getBuildArtifact("a.out") - src = lldb.SBFileSpec("main.cpp") - - # Create a target by the debugger. - self.target = self.dbg.CreateTarget(exe) - self.assertTrue(self.target, VALID_TARGET) - - # Setup four breakpoints, two of them with false condition - self.line1 = line_number('main.cpp', "breakpoint_1") - self.line4 = line_number('main.cpp', "breakpoint_4") - - self.breakpoint1 = self.target.BreakpointCreateByLocation(src, self.line1) - self.assertTrue( - self.breakpoint1 and self.breakpoint1.GetNumLocations() == 1, - VALID_BREAKPOINT) - - self.breakpoint2 = self.target.BreakpointCreateBySourceRegex("breakpoint_2", src) - self.breakpoint2.GetLocationAtIndex(0).SetCondition('false') - - self.breakpoint3 = self.target.BreakpointCreateBySourceRegex("breakpoint_3", src) - self.breakpoint3.GetLocationAtIndex(0).SetCondition('false') - - self.breakpoint4 = self.target.BreakpointCreateByLocation(src, self.line4) - - # Start debugging - self.process = self.target.LaunchSimple( - None, None, self.get_process_working_directory()) - self.assertIsNotNone(self.process, PROCESS_IS_VALID) - self.thread = lldbutil.get_one_thread_stopped_at_breakpoint(self.process, self.breakpoint1) - self.assertIsNotNone(self.thread, "Didn't stop at breakpoint 1.") - - def test_step_instruction(self): - # Count instructions between breakpoint_1 and breakpoint_4 - contextList = self.target.FindFunctions('main', lldb.eFunctionNameTypeAuto) - self.assertEquals(contextList.GetSize(), 1) - symbolContext = contextList.GetContextAtIndex(0) - function = symbolContext.GetFunction() - self.assertTrue(function) - instructions = function.GetInstructions(self.target) - addr_1 = self.breakpoint1.GetLocationAtIndex(0).GetAddress() - addr_4 = self.breakpoint4.GetLocationAtIndex(0).GetAddress() - - # if third argument is true then the count will be the number of - # instructions on which a breakpoint can be set. - # start = addr_1, end = addr_4, canSetBreakpoint = True - steps_expected = instructions.GetInstructionsCount(addr_1, addr_4, True) - step_count = 0 - # Step from breakpoint_1 to breakpoint_4 - while True: - self.thread.StepInstruction(True) - step_count = step_count + 1 - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - self.assertTrue(self.thread.GetStopReason() == lldb.eStopReasonPlanComplete or - self.thread.GetStopReason() == lldb.eStopReasonBreakpoint) - if (self.thread.GetStopReason() == lldb.eStopReasonBreakpoint) : - # we should not stop on breakpoint_2 and _3 because they have false condition - self.assertEquals(self.thread.GetFrameAtIndex(0).GetLineEntry().GetLine(), self.line4) - # breakpoint_2 and _3 should not affect step count - self.assertTrue(step_count >= steps_expected) - break - - # Run the process until termination - self.process.Continue() - self.assertEquals(self.process.GetState(), lldb.eStateExited) - - @skipIf(bugnumber="llvm.org/pr31972", hostoslist=["windows"]) - def test_step_over(self): - #lldb.DBG.EnableLog("lldb", ["step","breakpoint"]) - - self.thread.StepOver() - # We should be stopped at the breakpoint_2 line with stop plan complete reason - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - self.assertEquals(self.thread.GetStopReason(), lldb.eStopReasonPlanComplete) - - self.thread.StepOver() - # We should be stopped at the breakpoint_3 line with stop plan complete reason - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - self.assertEquals(self.thread.GetStopReason(), lldb.eStopReasonPlanComplete) - - self.thread.StepOver() - # We should be stopped at the breakpoint_4 - self.assertEquals(self.process.GetState(), lldb.eStateStopped) - self.assertEquals(self.thread.GetStopReason(), lldb.eStopReasonBreakpoint) - thread1 = lldbutil.get_one_thread_stopped_at_breakpoint(self.process, self.breakpoint4) - self.assertEquals(self.thread, thread1, "Didn't stop at breakpoint 4.") - - # Check that stepping does not affect breakpoint's hit count - self.assertEquals(self.breakpoint1.GetHitCount(), 1) - self.assertEquals(self.breakpoint2.GetHitCount(), 0) - self.assertEquals(self.breakpoint3.GetHitCount(), 0) - self.assertEquals(self.breakpoint4.GetHitCount(), 1) - - # Run the process until termination - self.process.Continue() - self.assertEquals(self.process.GetState(), lldb.eStateExited) - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/main.cpp deleted file mode 100644 index 8cfd34b73b55bdf..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/main.cpp +++ /dev/null @@ -1,12 +0,0 @@ - -int func() { return 1; } - -int -main(int argc, char const *argv[]) -{ - int a = 0; // breakpoint_1 - int b = func(); // breakpoint_2 - a = b + func(); // breakpoint_3 - return 0; // breakpoint_4 -} - diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/command_script/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/Makefile deleted file mode 100644 index 9374aef487fe1f9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c -EXE := hello_world - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/Makefile deleted file mode 100644 index 7913aaa4b746bc5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/command_script/import/rdar-12586188/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../../make - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/completion/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/completion/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/completion/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/completion/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py b/lldb/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py index c073425a93fb90a..537c447c07a895e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py @@ -84,6 +84,73 @@ def test_process_attach_dash_dash_con(self): 'process attach --con', 'process attach --continue ') + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_process_launch_arch(self): + self.complete_from_to('process launch --arch ', + ['mips', + 'arm64']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_ambiguous_long_opt(self): + self.completions_match('breakpoint modify --th', + ['--thread-id', + '--thread-index', + '--thread-name']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_plugin_load(self): + self.complete_from_to('plugin load ', []) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_quoted_command(self): + self.complete_from_to('"set', + ['"settings" ']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_quoted_arg_with_quoted_command(self): + self.complete_from_to('"settings" "repl', + ['"replace" ']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_quoted_arg_without_quoted_command(self): + self.complete_from_to('settings "repl', + ['"replace" ']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_single_quote_command(self): + self.complete_from_to("'set", + ["'settings' "]) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_terminated_quote_command(self): + # This should not crash, but we don't get any + # reasonable completions from this. + self.complete_from_to("'settings'", []) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_process_launch_arch_arm(self): + self.complete_from_to('process launch --arch arm', + ['arm64']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_target_symbols_add_shlib(self): + # Doesn't seem to work, but at least it shouldn't crash. + self.complete_from_to('target symbols add --shlib ', []) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_log_file(self): + # Complete in our source directory which contains a 'main.cpp' file. + src_dir = os.path.dirname(os.path.realpath(__file__)) + '/' + self.complete_from_to('log enable lldb expr -f ' + src_dir, + ['main.cpp']) + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_log_dir(self): + # Complete our source directory. + src_dir = os.path.dirname(os.path.realpath(__file__)) + self.complete_from_to('log enable lldb expr -f ' + src_dir, + [src_dir + os.sep], turn_off_re_match=True) + # @skipIfFreeBSD # timing out on the FreeBSD buildbot def test_infinite_loop_while_completing(self): @@ -162,6 +229,24 @@ def test_settings_replace_target_ru(self): 'settings replace target.ru', 'settings replace target.run-args') + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_settings_show_term(self): + self.complete_from_to( + 'settings show term-', + 'settings show term-width') + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_settings_list_term(self): + self.complete_from_to( + 'settings list term-', + 'settings list term-width') + + @skipIfFreeBSD # timing out on the FreeBSD buildbot + def test_settings_remove_term(self): + self.complete_from_to( + 'settings remove term-', + 'settings remove term-width') + @skipIfFreeBSD # timing out on the FreeBSD buildbot def test_settings_s(self): """Test that 'settings s' completes to ['set', 'show'].""" @@ -290,6 +375,30 @@ def test_completion_description_commands(self): self.check_completion_with_desc("comman", []) self.check_completion_with_desc("non-existent-command", []) + def test_completion_description_command_options(self): + """Test descriptions of command options""" + # Short options + self.check_completion_with_desc("breakpoint set -", [ + ["-h", "Set the breakpoint on exception catcH."], + ["-w", "Set the breakpoint on exception throW."] + ]) + + # Long options. + self.check_completion_with_desc("breakpoint set --", [ + ["--on-catch", "Set the breakpoint on exception catcH."], + ["--on-throw", "Set the breakpoint on exception throW."] + ]) + + # Ambiguous long options. + self.check_completion_with_desc("breakpoint set --on-", [ + ["--on-catch", "Set the breakpoint on exception catcH."], + ["--on-throw", "Set the breakpoint on exception throW."] + ]) + + # Unknown long option. + self.check_completion_with_desc("breakpoint set --Z", [ + ]) + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24489") def test_symbol_name(self): self.build() @@ -297,3 +406,6 @@ def test_symbol_name(self): self.complete_from_to('breakpoint set -n Fo', 'breakpoint set -n Foo::Bar(int,\\ int)', turn_off_re_match=True) + # No completion for Qu because the candidate is + # (anonymous namespace)::Quux(). + self.complete_from_to('breakpoint set -n Qu', '') diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/completion/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/completion/main.cpp index 0814bb9cc0acf71..eba81dc4c54cd70 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/completion/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/completion/main.cpp @@ -7,6 +7,8 @@ class Foo } }; +namespace { int Quux (void) { return 0; } } + struct Container { int MemberVar; }; int main() @@ -17,5 +19,6 @@ int main() Container container; Container *ptr_container = &container; + int q = Quux(); return container.MemberVar = 3; // Break here } diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/TestConditionalBreak.py b/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/TestConditionalBreak.py index 7b123950c23d975..cc48a63972427f7 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/TestConditionalBreak.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/TestConditionalBreak.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/conditional_break.py b/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/conditional_break.py index a62dd923af9d0c5..4f2746428cd4ddb 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/conditional_break.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/conditional_break/conditional_break.py @@ -1,4 +1,3 @@ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/TestDarwinLogFilterMatchActivityChain.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/TestDarwinLogFilterMatchActivityChain.py index c8f93c1db3a8afe..019d5c2c25b7381 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/TestDarwinLogFilterMatchActivityChain.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity-chain/TestDarwinLogFilterMatchActivityChain.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/TestDarwinLogFilterMatchActivity.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/TestDarwinLogFilterMatchActivity.py index 32b2623dfb98155..77956ba41396381 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/TestDarwinLogFilterMatchActivity.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/activity/TestDarwinLogFilterMatchActivity.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/TestDarwinLogFilterMatchCategory.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/TestDarwinLogFilterMatchCategory.py index 088d1036d1c4c7c..e660e11983c97d0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/TestDarwinLogFilterMatchCategory.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/category/TestDarwinLogFilterMatchCategory.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/TestDarwinLogFilterMatchMessage.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/TestDarwinLogFilterMatchMessage.py index 5a377f99128b19e..4dbf44bcf4d9f6f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/TestDarwinLogFilterMatchMessage.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/message/TestDarwinLogFilterMatchMessage.py @@ -9,7 +9,6 @@ from __future__ import print_function import lldb -import os import re from lldbsuite.test import decorators diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/TestDarwinLogFilterMatchSubsystem.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/TestDarwinLogFilterMatchSubsystem.py index f3d4d4de92f0e0b..7e8c154b2e6d2c3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/TestDarwinLogFilterMatchSubsystem.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/exact_match/subsystem/TestDarwinLogFilterMatchSubsystem.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/TestDarwinLogFilterRegexActivityChain.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/TestDarwinLogFilterRegexActivityChain.py index 16d678aa24175f5..87bd4f1b45d9f0a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/TestDarwinLogFilterRegexActivityChain.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity-chain/TestDarwinLogFilterRegexActivityChain.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/TestDarwinLogFilterRegexActivity.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/TestDarwinLogFilterRegexActivity.py index e017d56af31c472..313855cd0a94d6e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/TestDarwinLogFilterRegexActivity.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/activity/TestDarwinLogFilterRegexActivity.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/TestDarwinLogFilterRegexCategory.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/TestDarwinLogFilterRegexCategory.py index 5a618b11680c416..2cad7b5c6dcaa51 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/TestDarwinLogFilterRegexCategory.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/category/TestDarwinLogFilterRegexCategory.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/TestDarwinLogFilterRegexMessage.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/TestDarwinLogFilterRegexMessage.py index eceedce2954e25c..566e86ff5dd229c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/TestDarwinLogFilterRegexMessage.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/message/TestDarwinLogFilterRegexMessage.py @@ -9,7 +9,6 @@ # System imports from __future__ import print_function -import re # LLDB imports import lldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/Makefile index 4f4176f23f3c4bb..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/TestDarwinLogFilterRegexSubsystem.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/TestDarwinLogFilterRegexSubsystem.py index 679db2ea37bba7b..9fc8b85caad5430 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/TestDarwinLogFilterRegexSubsystem.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/filter/regex/subsystem/TestDarwinLogFilterRegexSubsystem.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/format/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/format/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/format/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/format/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/Makefile index 214cedd96f1a7f4..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/TestDarwinLogSourceDebug.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/TestDarwinLogSourceDebug.py index 89791097a3f8de2..7c5d5c4b4ec6452 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/TestDarwinLogSourceDebug.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/debug/TestDarwinLogSourceDebug.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/Makefile index 214cedd96f1a7f4..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/TestDarwinLogSourceInfo.py b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/TestDarwinLogSourceInfo.py index 865eea2419816b9..3779f18c81fd201 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/TestDarwinLogSourceInfo.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/darwin_log/source/info/TestDarwinLogSourceInfo.py @@ -9,8 +9,6 @@ from __future__ import print_function import lldb -import os -import re from lldbsuite.test import decorators from lldbsuite.test import lldbtest diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/Makefile index 261658b10ae8a48..377a1a0373a0d13 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py index 18aac237672c0db..6ffe495bcf9662b 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/Makefile index 9b06ad7d705a91a..86bbe461026ecb4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Accelerate \ No newline at end of file diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/TestCompactVectors.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/TestCompactVectors.py index 891448f00d29ba5..957a855db4a2801 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/TestCompactVectors.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/compactvectors/TestCompactVectors.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py index 6d8a794070d7740..8615fe65dd57743 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py index efc911fe3d3ed90..842146844231a8b 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-categories/TestDataFormatterCategories.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py index 4b9de961724bf55..ccb9d13597bbbd2 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py index c451d0f82792ae5..4b71bdd628356d7 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-disabling/TestDataFormatterDisabling.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/TestDataFormatterEnumFormat.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/TestDataFormatterEnumFormat.py index 2d09be5441baa3b..89dd48d2c3328ba 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/TestDataFormatterEnumFormat.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-enum-format/TestDataFormatterEnumFormat.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py index 81ddf597def6364..635a6aef79e06f8 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py index 8b354d764e58363..26ee26d757ce14d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-named-summaries/TestDataFormatterNamedSummaries.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/Makefile index 9f7fb1ca623175c..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/Makefile index 0d94c2247f14e60..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py index 605b543a1b93576..c6dddff8550575d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import datetime import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/Makefile index 0d94c2247f14e60..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py index 497a44671f43e05..baf79a3b0bc3626 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import datetime import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/Makefile index 9f7fb1ca623175c..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py index 2c5041142fa9bcf..54f5d01c5cd038e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/TestPtrToArrayFormatting.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/TestPtrToArrayFormatting.py index 397a461db683f62..1b0eec11301293a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/TestPtrToArrayFormatting.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-ptr-to-array/TestPtrToArrayFormatting.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py index cc4cfd2ceb7274d..5f908f76b0abc91 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py index 1dd1912f4c73e7b..5b9b62ec14f823b 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-script/TestDataFormatterScript.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/Makefile index 637404f1bd0a5d5..720d1b1ca5afb32 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp USE_LIBSTDCPP := 0 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py index 4ec7f13d1152578..21107b7020edce6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-skip-summary/TestDataFormatterSkipSummary.py @@ -6,7 +6,6 @@ import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py index e4ca6033f8a8d00..ed670ed9320a730 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/Makefile index fdd717119d95b83..22307c41c1c325a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../../../make CXX_SOURCES := main.cpp CXXFLAGS += -std=c++11 USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/TestLibCxxAtomic.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/TestLibCxxAtomic.py index 1f7a175974f954c..48e77c1a885d17c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/TestLibCxxAtomic.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/atomic/TestLibCxxAtomic.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/Makefile index bf75013f531d28a..680e1abfbef58d9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/bitset/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/forward_list/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/forward_list/Makefile index bf75013f531d28a..680e1abfbef58d9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/forward_list/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/forward_list/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/Makefile index fdd717119d95b83..22307c41c1c325a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../../../make CXX_SOURCES := main.cpp CXXFLAGS += -std=c++11 USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/TestLibCxxFunction.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/TestLibCxxFunction.py index 0254bf54d916a3d..f06ab5d70ba3021 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/TestLibCxxFunction.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/function/TestLibCxxFunction.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -23,6 +21,9 @@ def get_variable(self, name): var.SetPreferSyntheticValue(True) return var + # Temporarily skipping for everywhere b/c we are disabling the std::function formatter + # due to performance issues but plan on turning it back on once they are addressed. + @skipIf @add_test_categories(["libc++"]) def test(self): """Test that std::function as defined by libc++ is correctly printed by LLDB""" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile index d37bef7dc5cc3ce..29c68ae57401666 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../../../make CXX_SOURCES := main.cpp CXXFLAGS += -std=c++11 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py index 9c9b2473aa7461e..7d7d453dbcd3b33 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py index b36fa6ee1dc8299..1fc3517a62cdd27 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py index 957f2bf53da550f..e114da90613b388 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/Makefile index a5dabdb6349d093..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/TestDataFormatterLibcxxListLoop.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/TestDataFormatterLibcxxListLoop.py index d76c43ec3adc171..cca7620e5305c56 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/TestDataFormatterLibcxxListLoop.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/TestDataFormatterLibcxxListLoop.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py index 0f57f0abd9ce712..3e127306e94c031 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py index cbcce47d364d11e..5628bb837ec5e90 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py index 0732c03de837cb3..588ee40126f9989 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/Makefile index 19d6fc3e3c25ee2..5ad5241858d80e9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -std=c++17 -fno-exceptions diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/TestDataFormatterLibcxxOptional.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/TestDataFormatterLibcxxOptional.py index 7826305931da09e..3c5838568d31ea3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/TestDataFormatterLibcxxOptional.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/optional/TestDataFormatterLibcxxOptional.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/queue/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/queue/Makefile index bf75013f531d28a..680e1abfbef58d9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/queue/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/queue/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py index 8d83f2b081f8e5a..f15c9e040865533 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile index 937b47ea06b0f21..8b7b61c59c094f9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -std=c++11 -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py index 63164f78e00efa8..e2048e9e99c64aa 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile index bf75013f531d28a..680e1abfbef58d9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile index 24d7c220d075bce..442886ce40f9faf 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp # Work around "exception specification in declaration does not match previous @@ -8,5 +6,5 @@ CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -fno-exceptions USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py index 4c60e403f6b0db1..b0d952265174480 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile index a6ea665ef63c1fd..3fc4d802718675c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -std=c++17 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py index e1f6961b465d8b9..d481ab2e46a4329 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile index 637fa7e80bfd335..c7df6a4cbf9b82e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py index 1aa93d718fc96be..bf8fd9ef3c0facf 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile index 1f609a41d908676..4a33784693a211d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -O0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py index 06d3cda61be20f6..aa08bb08523e6a5 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile index 2e8bcb9079bdfdb..7d43aa33e9ae7ec 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -O0 USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py index 463e2a9f190dcbd..357f1a4c18423e4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/Makefile index 2e8bcb9079bdfdb..7d43aa33e9ae7ec 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -O0 USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py index 7f3755660543c49..daea6b5626fe7f7 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/Makefile index 17868d8a95fc70f..bf8e6b8703f3685 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py index 267e3beedb4cc26..50c18292b95fcbd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/Makefile index 63f2aaf9c75a4f2..654e4b15bd568e3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp CXXFLAGS := -O0 USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py index 1ca4a15d85cc6ae..a341c517663544c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/smart_ptr/TestDataFormatterStdSmartPtr.py @@ -4,8 +4,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/Makefile index 2e8bcb9079bdfdb..7d43aa33e9ae7ec 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -O0 USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py index 042d9fbcd6a000b..183aabe64935281 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile index 17868d8a95fc70f..bf8e6b8703f3685 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py index 4f9047b84d0f928..92ea3a059de821d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py @@ -4,8 +4,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/Makefile index 17868d8a95fc70f..bf8e6b8703f3685 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/TestDataFormatterStdUniquePtr.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/TestDataFormatterStdUniquePtr.py index f782a2a8baeab25..a61a0c4199a62e0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/TestDataFormatterStdUniquePtr.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/unique_ptr/TestDataFormatterStdUniquePtr.py @@ -4,8 +4,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/Makefile index 2e8bcb9079bdfdb..7d43aa33e9ae7ec 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -O0 USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py index fb37838bdaffba5..8b59d70216c7193 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/Makefile index 63f2aaf9c75a4f2..654e4b15bd568e3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../../../make - CXX_SOURCES := main.cpp CXXFLAGS := -O0 USE_LIBSTDCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py index 712de3d41f74a6e..d5eb8a9fca58490 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py index 0e3bcc0e73986a8..659977f35a5af92 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synth/TestDataFormatterSynth.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/TestDataFormatterSynthType.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/TestDataFormatterSynthType.py index 8bb60b8d679a57c..771b566c6536fd6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/TestDataFormatterSynthType.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthtype/TestDataFormatterSynthType.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py index 138b3280295192d..fc7ffa0e78f3b74 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/dump_dynamic/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/dump_dynamic/Makefile deleted file mode 100644 index 872bf6d2087707b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/dump_dynamic/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -CXXFLAGS += -std=c++11 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py index 00eb3d00f783fc1..0ed804317dab3bc 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/format-propagation/TestFormatPropagation.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/TestFrameFormatSmallStruct.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/TestFrameFormatSmallStruct.py index d7507626e145bb5..62c58c2b6037a16 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/TestFrameFormatSmallStruct.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/frameformat_smallstruct/TestFrameFormatSmallStruct.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/TestDataFormatterHexCaps.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/TestDataFormatterHexCaps.py index cc22eca993e2292..8c613d1c9e63520 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/TestDataFormatterHexCaps.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/hexcaps/TestDataFormatterHexCaps.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py index 55855dc8432b4c7..bf87c9891ac86c4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/Makefile index 9f7fb1ca623175c..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py index 1ae5e40f9780831..c6c7b09181f3405 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/Makefile index 9f7fb1ca623175c..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py index 65e32643dde360f..7e52b4895835458 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/Makefile index 9f7fb1ca623175c..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py index a3657026faefcc7..ef04cfc6f609413 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/Makefile index 261658b10ae8a48..377a1a0373a0d13 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py index 87265087744cbd4..2173a2b401cfab9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/TestPrintArray.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/TestPrintArray.py index 0bfd8df7b44ee31..0914c629ef46069 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/TestPrintArray.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/parray/TestPrintArray.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/Makefile index 261658b10ae8a48..377a1a0373a0d13 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/TestPrintObjectArray.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/TestPrintObjectArray.py index 4326574c254c032..e4797b1c4aa0a10 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/TestPrintObjectArray.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/poarray/TestPrintObjectArray.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/Makefile index d85e665333eaa6f..348edcd88b4439d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS += -std=c++11 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/TestPtrRef2Typedef.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/TestPtrRef2Typedef.py index 862e2b57342d2fd..516fdb3b415441e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/TestPtrRef2Typedef.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/ptr_ref_typedef/TestPtrRef2Typedef.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/TestPyObjSynthProvider.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/TestPyObjSynthProvider.py index 5e01f4e1cbbee87..91bd86f20bac7b6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/TestPyObjSynthProvider.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/pyobjsynthprovider/TestPyObjSynthProvider.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/TestDataFormatterRefPtrRecursion.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/TestDataFormatterRefPtrRecursion.py index 09888e1b469bb30..eac455f7d7619cc 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/TestDataFormatterRefPtrRecursion.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/refpointer-recursion/TestDataFormatterRefPtrRecursion.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/setvaluefromcstring/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/setvaluefromcstring/Makefile deleted file mode 100644 index 62a57f6cd9bed8e..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/setvaluefromcstring/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -LEVEL = ../../../make -OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules -LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/stringprinter/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/stringprinter/Makefile deleted file mode 100644 index 872bf6d2087707b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/stringprinter/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -CXXFLAGS += -std=c++11 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Test-rdar-9974002.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Test-rdar-9974002.py index f766699bd8523b8..b5e9a31f03890ad 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Test-rdar-9974002.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/summary-string-onfail/Test-rdar-9974002.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/TestSyntheticCapping.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/TestSyntheticCapping.py index e94f6c4cc4072d5..31be87a7f3de5bd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/TestSyntheticCapping.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthcapping/TestSyntheticCapping.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/Makefile index a8e1853a12900b6..9048c7205237ebe 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/Makefile @@ -1,10 +1,8 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py index 54e9a321577706c..022ac2e8480ffce 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_arg/TestTypeSummaryListArg.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_arg/TestTypeSummaryListArg.py index 1cc2a0e431ade97..451fe2ec0057b59 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_arg/TestTypeSummaryListArg.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_arg/TestTypeSummaryListArg.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/TestTypeSummaryListScript.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/TestTypeSummaryListScript.py index 9435e80573e1c65..e32ed38a30b772d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/TestTypeSummaryListScript.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/type_summary_list_script/TestTypeSummaryListScript.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/typedef_array/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/typedef_array/Makefile deleted file mode 100644 index 3e2b0187b954617..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/typedef_array/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -CXXFLAGS += -std=c++11 -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/TestUserFormatVsSummary.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/TestUserFormatVsSummary.py index d3cc4d98aff7199..1b795ee91e5d842 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/TestUserFormatVsSummary.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/user-format-vs-summary/TestUserFormatVsSummary.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/TestVarInAggregateMisuse.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/TestVarInAggregateMisuse.py index f6dc47f358693ae..39ce0c1ecd8750d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/TestVarInAggregateMisuse.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/var-in-aggregate-misuse/TestVarInAggregateMisuse.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/TestDataFormatterVarScriptFormatting.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/TestDataFormatterVarScriptFormatting.py index 670edad37f9e000..ee1c716e55b1eb9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/TestDataFormatterVarScriptFormatting.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/varscript_formatting/TestDataFormatterVarScriptFormatting.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import os.path import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/TestVectorTypesFormatting.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/TestVectorTypesFormatting.py index c1dc15224b1ecf7..e4632afe7b92845 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/TestVectorTypesFormatting.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/vector-types/TestVectorTypesFormatting.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/Makefile index c60ecd41463537b..c39b681d18704fa 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c ifeq "$(OS)" "" @@ -15,4 +13,4 @@ endif MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/TestDeadStrip.py b/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/TestDeadStrip.py index 9ba3d2d0ac75ecc..8a2dfa76f4df033 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/TestDeadStrip.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/dead-strip/TestDeadStrip.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py b/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py index 3657dd744caf33f..a2fd77dc7c41318 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py @@ -1,12 +1,11 @@ """ -Test process attach/resume. +Test process attach when executable was deleted. """ from __future__ import print_function import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -18,14 +17,30 @@ class TestDeletedExecutable(TestBase): NO_DEBUG_INFO_TESTCASE = True @skipIfWindows # cannot delete a running executable - @expectedFailureAll(oslist=["linux"]) # determining the architecture of the process fails + @expectedFailureAll(oslist=["linux"], + triple=no_match('aarch64-.*-android')) + # determining the architecture of the process fails @expectedFailureNetBSD def test(self): self.build() exe = self.getBuildArtifact("a.out") - popen = self.spawnSubprocess(exe) + # Use a file as a synchronization point between test and inferior. + pid_file_path = lldbutil.append_to_process_working_directory(self, + "token_pid_%d" % (int(os.getpid()))) + self.addTearDownHook( + lambda: self.run_platform_command( + "rm %s" % + (pid_file_path))) + + # Spawn a new process + popen = self.spawnSubprocess(exe, [pid_file_path]) self.addTearDownHook(self.cleanupSubprocesses) + + # Wait until process has fully started up. + pid = lldbutil.wait_for_file_on_target(self, pid_file_path) + + # Now we can safely remove the executable and test if we can attach. os.remove(exe) self.runCmd("process attach -p " + str(popen.pid)) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp index ad5d18732eac4df..af00ac263cc1b2c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp @@ -1,9 +1,15 @@ #include +#include #include -int main(int argc, char const *argv[]) -{ +int main(int argc, char const *argv[]) { lldb_enable_attach(); - std::this_thread::sleep_for(std::chrono::seconds(30)); + { + // Create file to signal that this process has started up. + std::ofstream f; + f.open(argv[1]); + } + + std::this_thread::sleep_for(std::chrono::seconds(60)); } diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/Makefile index ceb406ee2eab3dd..2bba8e757f79b71 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := pass-to-base.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/TestDynamicValueChildCount.py b/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/TestDynamicValueChildCount.py index aaba15653763922..731cd474cb59384 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/TestDynamicValueChildCount.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/dynamic_value_child_count/TestDynamicValueChildCount.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/exec/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/exec/Makefile index 784a53da4776e06..b3af2bb69fe04cd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/exec/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/exec/Makefile @@ -1,10 +1,8 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp all: a.out secondprog -include $(LEVEL)/Makefile.rules +include Makefile.rules secondprog: $(MAKE) VPATH=$(VPATH) -f $(SRCDIR)/secondprog.mk diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py b/lldb/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py index 48bd515c963db5a..019df21771371fd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py @@ -5,8 +5,6 @@ import lldb -import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -18,17 +16,19 @@ class ExecTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) - @skipUnlessDarwin @expectedFailureAll(archs=['i386'], bugnumber="rdar://28656532") @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://problem/34559552") # this exec test has problems on ios systems - @skipIfSanitized # rdar://problem/43756823 + @expectedFailureNetBSD + @skipIfAsan # rdar://problem/43756823 + @skipIfWindows def test_hitting_exec (self): self.do_test(False) - @skipUnlessDarwin @expectedFailureAll(archs=['i386'], bugnumber="rdar://28656532") @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://problem/34559552") # this exec test has problems on ios systems - @skipIfSanitized # rdar://problem/43756823 + @expectedFailureNetBSD + @skipIfAsan # rdar://problem/43756823 + @skipIfWindows def test_skipping_exec (self): self.do_test(True) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp index 92206b2d88ef7f1..4475bbe4452f389 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/exec/main.cpp @@ -1,76 +1,16 @@ -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include #include #include +#include -static void -exit_with_errno (int err, const char *prefix) -{ - if (err) - { - fprintf (stderr, - "%s%s", - prefix ? prefix : "", - strerror(err)); - exit (err); - } -} - -static pid_t -spawn_process (const char *progname, - const char **argv, - const char **envp, - int &err) -{ - pid_t pid = 0; - - const posix_spawn_file_actions_t *file_actions = NULL; - posix_spawnattr_t attr; - err = posix_spawnattr_init (&attr); - if (err) - return pid; - - short flags = POSIX_SPAWN_SETEXEC | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK; - err = posix_spawnattr_setflags (&attr, flags); - if (err == 0) - { - // Use the default signal masks - sigset_t no_signals; - sigset_t all_signals; - sigemptyset (&no_signals); - sigfillset (&all_signals); - posix_spawnattr_setsigmask(&attr, &no_signals); - posix_spawnattr_setsigdefault(&attr, &all_signals); - - err = posix_spawn (&pid, - progname, - file_actions, - &attr, - (char * const *)argv, - (char * const *)envp); - - posix_spawnattr_destroy(&attr); - } - return pid; -} - -int -main (int argc, char const **argv) -{ - char *buf = (char*) malloc (strlen (argv[0]) + 12); - strlcpy (buf, argv[0], strlen (argv[0]) + 1); - std::string directory_name (::dirname (buf)); +int main(int argc, char const **argv) { + char *buf = strdup(argv[0]); // Set breakpoint 1 here + std::string directory_name(::dirname(buf)); - std::string other_program = directory_name + "/secondprog"; - int err = 0; // Set breakpoint 1 here - spawn_process (other_program.c_str(), argv, NULL, err); - if (err) - exit_with_errno (err, "posix_spawn x86_64 error"); - return 0; + std::string other_program = directory_name + "/secondprog"; + execve(other_program.c_str(), const_cast(argv), nullptr); + perror("execve"); + abort(); } diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/exec/secondprog.mk b/lldb/packages/Python/lldbsuite/test/functionalities/exec/secondprog.mk index 88f76b5113b4fe9..63efccc68ede28e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/exec/secondprog.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/exec/secondprog.mk @@ -1,6 +1,4 @@ -LEVEL = ../../make - CXX_SOURCES := secondprog.cpp EXE = secondprog -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/Makefile deleted file mode 100644 index a10791d5890770a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/expr-doesnt-deadlock/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := locking.c -ENABLE_THREADS := YES - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/expr-entry-bp/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile index c7c5ef405459e90..7fed83dc9eb0730 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile @@ -1,5 +1,4 @@ SRCDIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))/ - all: a.c clean $(CC) -arch i386 -g -c $(SRCDIR)/a.c ar -q liba-i386.a a.o diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py b/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py index 1c237bb1cc84dcd..04f1b2bf3df5df6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py @@ -5,8 +5,6 @@ import lldb -import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/rdar42038760/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/float-display/Makefile similarity index 100% rename from lldb/packages/Python/lldbsuite/test/expression_command/rdar42038760/Makefile rename to lldb/packages/Python/lldbsuite/test/functionalities/float-display/Makefile diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py b/lldb/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py new file mode 100644 index 000000000000000..48e49ed009bacea --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/float-display/TestFloatDisplay.py @@ -0,0 +1,5 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest( + __file__, globals(), []) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/float-display/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/float-display/main.c new file mode 100644 index 000000000000000..7e89225a4cbd01c --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/float-display/main.c @@ -0,0 +1,121 @@ +float f_neg3 = 1.234567 / 1e3; +float f_neg4 = 1.234567 / 1e4; +float f_neg5 = 1.234567 / 1e5; +float f_neg6 = 1.234567 / 1e6; +float f_neg7 = 1.234567 / 1e7; +float f_neg8 = 1.234567 / 1e8; +float f_neg20 = 1.234567 / 1e20; +float f_neg30 = 1.234567 / 1e30; + +float f_3 = 1.234567 * 1e3; +float f_4 = 1.234567 * 1e4; +float f_5 = 1.234567 * 1e5; +float f_6 = 1.234567 * 1e6; +float f_7 = 1.234567 * 1e7; +float f_8 = 1.234567 * 1e8; +float f_20 = 1.234567 * 1e20; +float f_30 = 1.234567 * 1e30; + +double d_neg3 = 1.234567 / 1e3; +double d_neg4 = 1.234567 / 1e4; +double d_neg5 = 1.234567 / 1e5; +double d_neg6 = 1.234567 / 1e6; +double d_neg7 = 1.234567 / 1e7; +double d_neg8 = 1.234567 / 1e8; +double d_neg20 = 1.234567 / 1e20; +double d_neg30 = 1.234567 / 1e30; +double d_neg50 = 1.234567 / 1e50; +double d_neg250 = 1.234567 / 1e250; + +double d_3 = 1.234567 * 1e3; +double d_4 = 1.234567 * 1e4; +double d_5 = 1.234567 * 1e5; +double d_6 = 1.234567 * 1e6; +double d_7 = 1.234567 * 1e7; +double d_8 = 1.234567 * 1e8; +double d_20 = 1.234567 * 1e20; +double d_30 = 1.234567 * 1e30; +double d_50 = 1.234567 * 1e50; +double d_250 = 1.234567 * 1e250; + +int main (int argc, char const *argv[]) { + //% # Default setting should be 6. + //% self.expect("frame variable f_neg3", substrs=["0.00123456"]) + //% self.expect("frame variable f_neg4", substrs=["0.000123456"]) + //% self.expect("frame variable f_neg5", substrs=["0.0000123456"]) + //% self.expect("frame variable f_neg6", substrs=["0.00000123456"]) + //% self.expect("frame variable f_neg7", substrs=["1.234567", "E-7"]) + //% self.expect("frame variable f_neg8", substrs=["1.23456", "E-8"]) + //% self.expect("frame variable f_neg20", substrs=["E-20"]) + //% self.expect("frame variable f_neg30", substrs=["E-30"]) + //% self.expect("frame variable f_3", substrs=["1234.56"]) + //% self.expect("frame variable f_4", substrs=["12345.6"]) + //% self.expect("frame variable f_5", substrs=["123456"]) + //% self.expect("frame variable f_6", substrs=["123456"]) + //% self.expect("frame variable f_7", substrs=["123456"]) + //% self.expect("frame variable f_8", substrs=["123456"]) + //% self.expect("frame variable f_20", substrs=["E+20"]) + //% self.expect("frame variable f_30", substrs=["E+30"]) + //% self.expect("frame variable d_neg3", substrs=["0.00123456"]) + //% self.expect("frame variable d_neg4", substrs=["0.000123456"]) + //% self.expect("frame variable d_neg5", substrs=["0.0000123456"]) + //% self.expect("frame variable d_neg6", substrs=["0.00000123456"]) + //% self.expect("frame variable d_neg7", substrs=["1.23456", "E-7"]) + //% self.expect("frame variable d_neg8", substrs=["1.23456", "E-8"]) + //% self.expect("frame variable d_neg20", substrs=["1.23456", "E-20"]) + //% self.expect("frame variable d_neg30", substrs=["1.23456", "E-30"]) + //% self.expect("frame variable d_neg50", substrs=["1.23456", "E-50"]) + //% self.expect("frame variable d_neg250", substrs=["E-250"]) + //% self.expect("frame variable d_3", substrs=["1234.56"]) + //% self.expect("frame variable d_4", substrs=["12345.6"]) + //% self.expect("frame variable d_5", substrs=["123456"]) + //% self.expect("frame variable d_6", substrs=["1234567"]) + //% self.expect("frame variable d_7", substrs=["1234567"]) + //% self.expect("frame variable d_8", substrs=["1234567"]) + //% self.expect("frame variable d_20", substrs=["1.23456", "E+20"]) + //% self.expect("frame variable d_30", substrs=["1.23456", "E+30"]) + //% self.expect("frame variable d_50", substrs=["1.23456", "E+50"]) + //% self.expect("frame variable d_250", substrs=["1.23456", "E+250"]) + //% # Now change the setting to print all the zeroes. + //% # Note that changing this setting should invalidate the data visualizer + //% # cache so that the new setting is used in the following calls. + //% self.runCmd("settings set target.max-zero-padding-in-float-format 9999") + //% self.expect("frame variable f_neg3", substrs=["0.00123456"]) + //% self.expect("frame variable f_neg4", substrs=["0.000123456"]) + //% self.expect("frame variable f_neg5", substrs=["0.0000123456"]) + //% self.expect("frame variable f_neg6", substrs=["0.00000123456"]) + //% self.expect("frame variable f_neg7", substrs=["0.000000123456"]) + //% self.expect("frame variable f_neg8", substrs=["0.0000000123456"]) + //% self.expect("frame variable f_neg20", substrs=["0.0000000000000000000123456"]) + //% self.expect("frame variable f_neg30", substrs=["0.00000000000000000000000000000123456"]) + //% self.expect("frame variable f_3", substrs=["1234.56"]) + //% self.expect("frame variable f_4", substrs=["12345.6"]) + //% self.expect("frame variable f_5", substrs=["123456"]) + //% self.expect("frame variable f_6", substrs=["1234567"]) + //% self.expect("frame variable f_7", substrs=["1234567"]) + //% self.expect("frame variable f_8", substrs=["1234567"]) + //% self.expect("frame variable f_20", substrs=["E+20"]) + //% self.expect("frame variable f_30", substrs=["E+30"]) + //% self.expect("frame variable d_neg3", substrs=["0.00123456"]) + //% self.expect("frame variable d_neg4", substrs=["0.000123456"]) + //% self.expect("frame variable d_neg5", substrs=["0.0000123456"]) + //% self.expect("frame variable d_neg6", substrs=["0.00000123456"]) + //% self.expect("frame variable d_neg7", substrs=["0.000000123456"]) + //% self.expect("frame variable d_neg8", substrs=["0.0000000123456"]) + //% self.expect("frame variable d_neg20", substrs=["0.0000000000000000000123456"]) + //% self.expect("frame variable d_neg30", substrs=["0.000000000000000000000000000001234567"]) + //% self.expect("frame variable d_neg50", substrs=["0.0000000000000000000000000000000000000000000000000123456"]) + //% self.expect("frame variable d_neg250", substrs=["0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123456"]) + //% self.expect("frame variable d_3", substrs=["1234.56"]) + //% self.expect("frame variable d_4", substrs=["12345.6"]) + //% self.expect("frame variable d_5", substrs=["123456"]) + //% self.expect("frame variable d_6", substrs=["1234567"]) + //% self.expect("frame variable d_7", substrs=["1234567"]) + //% self.expect("frame variable d_8", substrs=["1234567"]) + //% # Positive numbers are not affected by this setting. + //% self.expect("frame variable d_20", substrs=["1.23456", "E+20"]) + //% self.expect("frame variable d_30", substrs=["1.23456", "E+30"]) + //% self.expect("frame variable d_50", substrs=["1.23456", "E+50"]) + //% self.expect("frame variable d_250", substrs=["1.23456", "E+250"]) + return 0; +} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/format/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/format/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/format/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/format/TestFormats.py b/lldb/packages/Python/lldbsuite/test/functionalities/format/TestFormats.py deleted file mode 100644 index 9f3a8cd8044568f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/format/TestFormats.py +++ /dev/null @@ -1,39 +0,0 @@ -""" -Test the command history mechanism -""" - -from __future__ import print_function - - -import os -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class TestFormats(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @expectedFailureAll( - hostoslist=["windows"], - bugnumber="llvm.org/pr22274: need a pexpect replacement for windows") - def test_formats(self): - """Test format string functionality.""" - self.build() - exe = self.getBuildArtifact("a.out") - import pexpect - prompt = "(lldb) " - child = pexpect.spawn( - '%s %s -x -o "b main" -o r %s' % - (lldbtest_config.lldbExec, self.lldbOption, exe)) - # So that the spawned lldb session gets shutdown durng teardown. - self.child = child - - # Substitute 'Help!' for 'help' using the 'commands regex' mechanism. - child.expect_exact(prompt + 'target create "%s"' % exe) - child.expect_exact(prompt + 'b main') - child.expect_exact(prompt + 'r') - child.expect_exact(prompt) - child.sendline() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/format/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/format/main.c deleted file mode 100644 index b37bb22de77400e..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/format/main.c +++ /dev/null @@ -1,14 +0,0 @@ -//===-- main.c --------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -int main (int argc, char const *argv[]) -{ - printf("testing\n"); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/array/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/bad-reference/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/complicated-expression/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-argument/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-function-return/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/dereference-this/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/inheritance/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/local-variable/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame-diagnose/virtual-method-call/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame_var/Makefile deleted file mode 100644 index 50d4ab65a6ece95..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c -CFLAGS_EXTRAS += -std=c99 - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/Makefile deleted file mode 100644 index f5a47fcc46ccf27..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/frame_var_scope/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../make -C_SOURCES := main.c -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py index a9ae29d97ecbf7d..3bf22d376b2bf61 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py @@ -21,6 +21,7 @@ def haltReason(self): def threadStopInfo(self, threadnum): if threadnum == 0x1ff0d: return "T02thread:1ff0d;thread-pcs:10001bc00;" + return "" def setBreakpoint(self, packet): if packet.startswith("Z2,"): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestRecognizeBreakpoint.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestRecognizeBreakpoint.py new file mode 100644 index 000000000000000..335a1a132a78c09 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestRecognizeBreakpoint.py @@ -0,0 +1,140 @@ +from __future__ import print_function +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * +from gdbclientutils import * + + +class TestRecognizeBreakpoint(GDBRemoteTestBase): + """ This tests the case where the gdb-remote server doesn't support any + of the thread-info packets, and just tells which thread got the stop + signal with: + T05thread:01; + There was a bug in lldb that we would set the stop reason from this + packet too early - before we had updated the thread list. So when we + later updated the thread list, we would throw away this info. Normally + we would be able to reconstruct it from the thread info, but not if the + stub doesn't support it """ + + @skipIfXmlSupportMissing + def test(self): + class MyResponder(MockGDBServerResponder): + def __init__(self): + MockGDBServerResponder.__init__(self) + self.thread_info_count = 0 + self.after_cont = False + self.current_thread = 0 + + def cont(self): + # Simulate process stopping due to a breakpoint: + self.after_cont = True + return "T05thread:01;" + + def vCont(self, packet): + self.after_cont = True + return "T05thread:01;" + + def haltReason(self): + return "T02thread:01;" + + def threadStopInfo(self, num): + return "" + + def QThreadSuffixSupported(self): + return "" + + def QListThreadsInStopReply(self): + return "" + + def setBreakpoint(self, packet): + return "OK" + + def qfThreadInfo(self): + return "m1" + + def qsThreadInfo(self): + if (self.thread_info_count % 2) == 0: + str = "m2" + else: + str = "l" + self.thread_info_count += 1 + return str + + def readRegisters(self): + if self.after_cont and self.current_thread == 1: + return "c01e990080ffffff" + else: + return "badcfe10325476980" + + def readRegister(self, regno): + return "" + + def qXferRead(self, obj, annex, offset, length): + if annex == "target.xml": + return """ + + i386:x86-64 + + + + """, False + else: + return None, False + + def selectThread(self, op, thread): + if op != 'g': + return '' + + self.current_thread = thread + return "OK" + + def other (self, packet): + if packet == "vCont?": + return "vCont;c;C;s;S" + return '' + + python_os_plugin_path = os.path.join(self.getSourceDir(), + 'operating_system_2.py') + command ="settings set target.process.python-os-plugin-path '{}'".format( + python_os_plugin_path) + self.runCmd(command) + + self.server.responder = MyResponder() + target = self.dbg.CreateTarget("") + process = self.connect(target) + + bkpt = target.BreakpointCreateByAddress(0xffffff8000991ec0) + self.assertEqual(bkpt.GetNumLocations(), 1, "Fake breakpoint was resolved.") + + # Get the initial stop, and we should have two threads. + num_threads = len(process.threads) + self.assertEqual(num_threads, 2, "Got two threads") + + thread_0 = process.threads[0] + self.assertEqual(thread_0.GetStopReason(), 1, "Thread_0 stopped for no reason") + self.assertEqual(thread_0.GetName(), "one", "Thread_0 is called one") + + thread_1 = process.threads[1] + self.assertEqual(thread_1.GetStopReason(), 5, "Thread_0 stopped for SIGSTOP") + self.assertEqual(thread_1.GetName(), "two", "Thread_0 is called two") + + # Now continue and we will fake hitting a breakpoint. + process.Continue() + + self.assertEqual(process.GetState(),lldb.eStateStopped, "Process is stopped") + num_threads = len(process.threads) + + num_threads = len(process.threads) + self.assertEqual(num_threads, 2, "Got two threads") + + thread_0 = process.threads[0] + self.assertEqual(thread_0.GetStopReason(), 1, "Thread_0 stopped for no reason") + self.assertEqual(thread_0.GetName(), "one", "Thread_0 is called one") + + thread_1 = process.threads[1] + self.assertEqual(thread_1.GetStopReason(), 3, "Thread_0 stopped for SIGTRAP") + self.assertEqual(thread_1.GetName(), "three", "Thread_0 is called three") + + self.assertTrue(thread_1.IsValid(), "Thread_1 is valid") + self.assertEqual(thread_1.GetStopReason(), lldb.eStopReasonBreakpoint, "Stopped at breakpoint") + diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py index 465a9352ad5094e..10cbf9f48678f5d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestWriteMemory.py @@ -13,6 +13,14 @@ class MyResponder(MockGDBServerResponder): def setBreakpoint(self, packet): return "OK" + def setUp(self): + super(TestWriteMemory, self).setUp() + self._initial_platform = lldb.DBG.GetSelectedPlatform() + + def tearDown(self): + lldb.DBG.SetSelectedPlatform(self._initial_platform) + super(TestWriteMemory, self).tearDown() + self.server.responder = MyResponder() target = self.dbg.CreateTargetWithFileAndTargetTriple('', 'x86_64-pc-linux') process = self.connect(target) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py index fb8f61bdf8c4e55..fad41f8a83a4042 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py @@ -1,6 +1,5 @@ import os import os.path -import subprocess import threading import socket import lldb @@ -103,6 +102,8 @@ def respond(self, packet): return self.interrupt() if packet == "c": return self.cont() + if packet.startswith("vCont;c"): + return self.vCont(packet) if packet[0] == "g": return self.readRegisters() if packet[0] == "G": @@ -168,6 +169,9 @@ def interrupt(self): def cont(self): raise self.UnexpectedPacketException() + def vCont(self, packet): + raise self.UnexpectedPacketException() + def readRegisters(self): return "00000000" * self.registerCount diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system.py index ad9b6fd4e55ae87..83180c51492a37b 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system.py @@ -1,5 +1,4 @@ import lldb -import struct class OperatingSystemPlugIn(object): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system_2.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system_2.py new file mode 100644 index 000000000000000..91b2ffeecb39b39 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/operating_system_2.py @@ -0,0 +1,61 @@ +import lldb + + +class OperatingSystemPlugIn(object): + """Class that provides data for an instance of a LLDB 'OperatingSystemPython' plug-in class + This version stops once with threads 0x111 and 0x222, then stops a second time with threads + 0x111 and 0x333.""" + + def __init__(self, process): + '''Initialization needs a valid.SBProcess object. + + This plug-in will get created after a live process is valid and has stopped for the first time. + ''' + self.process = None + self.registers = None + self.threads = None + self.times_called = 0 + if isinstance(process, lldb.SBProcess) and process.IsValid(): + self.process = process + self.threads = None # Will be an dictionary containing info for each thread + + def get_target(self): + return self.process.target + + def get_thread_info(self): + self.times_called += 1 + + if self.times_called == 1: + self.threads = [{ + 'tid': 0x111, + 'name': 'one', + 'queue': 'queue1', + 'state': 'stopped', + 'stop_reason': 'none', + 'core': 1 + }, { + 'tid': 0x222, + 'name': 'two', + 'queue': 'queue2', + 'state': 'stopped', + 'stop_reason': 'none', + 'core': 0 + }] + else: + self.threads = [{ + 'tid': 0x111, + 'name': 'one', + 'queue': 'queue1', + 'state': 'stopped', + 'stop_reason': 'none', + 'core': 1 + }, { + 'tid': 0x333, + 'name': 'three', + 'queue': 'queue3', + 'state': 'stopped', + 'stop_reason': 'none', + 'core': 0 + }] + return self.threads + diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/history/TestHistoryRecall.py b/lldb/packages/Python/lldbsuite/test/functionalities/history/TestHistoryRecall.py index 7956120bad327dc..e7ed8553fd1e766 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/history/TestHistoryRecall.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/history/TestHistoryRecall.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py index ec3f32114ba963d..b2e6dadfe31fe8f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test import lldbutil from lldbsuite.test import lldbplatformutil @@ -51,6 +49,7 @@ def test_inferior_asserting_register(self): archs=[ "aarch64", "arm"], + triple=no_match(".*-android"), bugnumber="llvm.org/pr25338") @expectedFailureAll(bugnumber="llvm.org/pr26592", triple='^mips') @expectedFailureNetBSD @@ -76,6 +75,7 @@ def test_inferior_asserting_python(self): archs=[ "aarch64", "arm"], + triple=no_match(".*-android"), bugnumber="llvm.org/pr25338") @expectedFailureAll(bugnumber="llvm.org/pr26592", triple='^mips') @expectedFailureNetBSD @@ -92,6 +92,7 @@ def test_inferior_asserting_expr(self): archs=[ "aarch64", "arm"], + triple=no_match(".*-android"), bugnumber="llvm.org/pr25338") @expectedFailureAll(bugnumber="llvm.org/pr26592", triple='^mips') @expectedFailureNetBSD diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/TestInferiorChanged.py b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/TestInferiorChanged.py index b1b9f4bc04c7b14..9e32446d14c9058 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/TestInferiorChanged.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-changed/TestInferiorChanged.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashing.py b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashing.py index 17c56e891564c7d..32900651df2e382 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashing.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashing.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test import lldbutil from lldbsuite.test import lldbplatformutil @@ -40,29 +38,6 @@ def test_inferior_crashing_expr(self): self.build() self.inferior_crashing_expr() - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") - def test_inferior_crashing_step(self): - """Test that stepping after a crash behaves correctly.""" - self.build() - self.inferior_crashing_step() - - @skipIfTargetAndroid() # debuggerd interferes with this test on Android - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") - def test_inferior_crashing_step_after_break(self): - """Test that lldb functions correctly after stepping through a crash.""" - self.build() - self.inferior_crashing_step_after_break() - - # Inferior exits after stepping after a segfault. This is working as - # intended IMHO. - @skipIfLinux - @skipIfFreeBSD - @expectedFailureNetBSD - def test_inferior_crashing_expr_step_and_expr(self): - """Test that lldb expressions work before and after stepping after a crash.""" - self.build() - self.inferior_crashing_expr_step_expr() - def set_breakpoint(self, line): lldbutil.run_break_set_by_file_and_line( self, "main.c", line, num_expected_locations=1, loc_exact=True) @@ -158,79 +133,3 @@ def inferior_crashing_expr(self): self.expect("p hello_world", substrs=['Hello']) - - def inferior_crashing_step(self): - """Test that lldb functions correctly after stepping through a crash.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.set_breakpoint(self.line) - self.runCmd("run", RUN_SUCCEEDED) - - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, - substrs=['main.c:%d' % self.line, - 'stop reason = breakpoint']) - - self.runCmd("next") - self.check_stop_reason() - - # The lldb expression interpreter should be able to read from addresses - # of the inferior after a crash. - self.expect("p argv[0]", - substrs=['a.out']) - self.expect("p null_ptr", - substrs=['= 0x0']) - - # lldb should be able to read from registers from the inferior after - # crashing. - lldbplatformutil.check_first_register_readable(self) - - # And it should report the correct line number. - self.expect("thread backtrace all", - substrs=['main.c:%d' % self.line]) - - def inferior_crashing_step_after_break(self): - """Test that lldb behaves correctly when stepping after a crash.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.runCmd("run", RUN_SUCCEEDED) - self.check_stop_reason() - - expected_state = 'exited' # Provide the exit code. - if self.platformIsDarwin(): - # TODO: Determine why 'next' and 'continue' have no effect after a - # crash. - expected_state = 'stopped' - - self.expect("next", - substrs=['Process', expected_state]) - - if expected_state == 'exited': - self.expect( - "thread list", - error=True, - substrs=['Process must be launched']) - else: - self.check_stop_reason() - - def inferior_crashing_expr_step_expr(self): - """Test that lldb expressions work before and after stepping after a crash.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.runCmd("run", RUN_SUCCEEDED) - self.check_stop_reason() - - # The lldb expression interpreter should be able to read from addresses - # of the inferior after a crash. - self.expect("p argv[0]", - substrs=['a.out']) - - self.runCmd("next") - self.check_stop_reason() - - # The lldb expression interpreter should be able to read from addresses - # of the inferior after a crash. - self.expect("p argv[0]", - substrs=['a.out']) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashingStep.py b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashingStep.py new file mode 100644 index 000000000000000..e60946955db54bb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/TestInferiorCrashingStep.py @@ -0,0 +1,228 @@ +"""Test that lldb steps correctly after the inferior has crashed.""" + +from __future__ import print_function + +import lldb +from lldbsuite.test import lldbutil +from lldbsuite.test import lldbplatformutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + + +class CrashingInferiorStepTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") + @expectedFailureNetBSD + def test_inferior_crashing(self): + """Test that lldb reliably catches the inferior crashing (command).""" + self.build() + self.inferior_crashing() + + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") + def test_inferior_crashing_register(self): + """Test that lldb reliably reads registers from the inferior after crashing (command).""" + self.build() + self.inferior_crashing_registers() + + @add_test_categories(['pyapi']) + def test_inferior_crashing_python(self): + """Test that lldb reliably catches the inferior crashing (Python API).""" + self.build() + self.inferior_crashing_python() + + def test_inferior_crashing_expr(self): + """Test that the lldb expression interpreter can read from the inferior after crashing (command).""" + self.build() + self.inferior_crashing_expr() + + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") + def test_inferior_crashing_step(self): + """Test that stepping after a crash behaves correctly.""" + self.build() + self.inferior_crashing_step() + + @skipIfTargetAndroid() # debuggerd interferes with this test on Android + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") + def test_inferior_crashing_step_after_break(self): + """Test that lldb functions correctly after stepping through a crash.""" + self.build() + self.inferior_crashing_step_after_break() + + # Inferior exits after stepping after a segfault. This is working as + # intended IMHO. + @skipIfLinux + @skipIfFreeBSD + @expectedFailureNetBSD + def test_inferior_crashing_expr_step_and_expr(self): + """Test that lldb expressions work before and after stepping after a crash.""" + self.build() + self.inferior_crashing_expr_step_expr() + + def set_breakpoint(self, line): + lldbutil.run_break_set_by_file_and_line( + self, "main.c", line, num_expected_locations=1, loc_exact=True) + + def check_stop_reason(self): + # We should have one crashing thread + self.assertEqual( + len( + lldbutil.get_crashed_threads( + self, + self.dbg.GetSelectedTarget().GetProcess())), 1, + STOPPED_DUE_TO_EXC_BAD_ACCESS) + + def get_api_stop_reason(self): + return lldb.eStopReasonException + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + # Find the line number of the crash. + self.line = line_number('main.c', '// Crash here.') + + def inferior_crashing(self): + """Inferior crashes upon launching; lldb should catch the event and stop.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + # The exact stop reason depends on the platform + if self.platformIsDarwin(): + stop_reason = 'stop reason = EXC_BAD_ACCESS' + elif self.getPlatform() == "linux" or self.getPlatform() == "freebsd": + stop_reason = 'stop reason = signal SIGSEGV' + else: + stop_reason = 'stop reason = invalid address' + self.expect( + "thread list", + STOPPED_DUE_TO_EXC_BAD_ACCESS, + substrs=['stopped', stop_reason]) + + # And it should report the correct line number. + self.expect( + "thread backtrace all", + substrs=[stop_reason, 'main.c:%d' % self.line]) + + def inferior_crashing_python(self): + """Inferior crashes upon launching; lldb should catch the event and stop.""" + exe = self.getBuildArtifact("a.out") + + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + + # Now launch the process, and do not stop at entry point. + # Both argv and envp are null. + process = target.LaunchSimple(None, None, + self.get_process_working_directory()) + + if process.GetState() != lldb.eStateStopped: + self.fail("Process should be in the 'stopped' state, " + "instead the actual state is: '%s'" % + lldbutil.state_type_to_str(process.GetState())) + + threads = lldbutil.get_crashed_threads(self, process) + self.assertEqual( + len(threads), 1, + "Failed to stop the thread upon bad access exception") + + if self.TraceOn(): + lldbutil.print_stacktrace(threads[0]) + + def inferior_crashing_registers(self): + """Test that lldb can read registers after crashing.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + self.check_stop_reason() + + # lldb should be able to read from registers from the inferior after + # crashing. + lldbplatformutil.check_first_register_readable(self) + + def inferior_crashing_expr(self): + """Test that the lldb expression interpreter can read symbols after crashing.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + self.check_stop_reason() + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a crash. + self.expect("p argc", startstr='(int) $0 = 1') + + self.expect("p hello_world", substrs=['Hello']) + + def inferior_crashing_step(self): + """Test that lldb functions correctly after stepping through a crash.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.set_breakpoint(self.line) + self.runCmd("run", RUN_SUCCEEDED) + + self.expect( + "thread list", + STOPPED_DUE_TO_BREAKPOINT, + substrs=['main.c:%d' % self.line, 'stop reason = breakpoint']) + + self.runCmd("next") + self.check_stop_reason() + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a crash. + self.expect("p argv[0]", substrs=['a.out']) + self.expect("p null_ptr", substrs=['= 0x0']) + + # lldb should be able to read from registers from the inferior after + # crashing. + lldbplatformutil.check_first_register_readable(self) + + # And it should report the correct line number. + self.expect("thread backtrace all", substrs=['main.c:%d' % self.line]) + + def inferior_crashing_step_after_break(self): + """Test that lldb behaves correctly when stepping after a crash.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + self.check_stop_reason() + + expected_state = 'exited' # Provide the exit code. + if self.platformIsDarwin(): + # TODO: Determine why 'next' and 'continue' have no effect after a + # crash. + expected_state = 'stopped' + + self.expect("next", substrs=['Process', expected_state]) + + if expected_state == 'exited': + self.expect( + "thread list", + error=True, + substrs=['Process must be launched']) + else: + self.check_stop_reason() + + def inferior_crashing_expr_step_expr(self): + """Test that lldb expressions work before and after stepping after a crash.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + self.check_stop_reason() + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a crash. + self.expect("p argv[0]", substrs=['a.out']) + + self.runCmd("next") + self.check_stop_reason() + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a crash. + self.expect("p argv[0]", substrs=['a.out']) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/Makefile index 0f8e92e9193ce37..62c0a39c94a4462 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS += -fomit-frame-pointer -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py index f678b0c324c1bce..afe41142e835103 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -40,29 +38,6 @@ def test_recursive_inferior_crashing_expr(self): self.build() self.recursive_inferior_crashing_expr() - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") - def test_recursive_inferior_crashing_step(self): - """Test that stepping after a crash behaves correctly.""" - self.build() - self.recursive_inferior_crashing_step() - - @skipIfTargetAndroid() # debuggerd interferes with this test on Android - @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") - def test_recursive_inferior_crashing_step_after_break(self): - """Test that lldb functions correctly after stepping through a crash.""" - self.build() - self.recursive_inferior_crashing_step_after_break() - - # Inferior exits after stepping after a segfault. This is working as - # intended IMHO. - @skipIfLinux - @skipIfFreeBSD - @expectedFailureNetBSD - def test_recursive_inferior_crashing_expr_step_and_expr(self): - """Test that lldb expressions work before and after stepping after a crash.""" - self.build() - self.recursive_inferior_crashing_expr_step_expr() - def set_breakpoint(self, line): lldbutil.run_break_set_by_file_and_line( self, "main.c", line, num_expected_locations=1, loc_exact=True) @@ -165,77 +140,3 @@ def recursive_inferior_crashing_expr(self): self.expect("p i", startstr='(int) $0 =') - def recursive_inferior_crashing_step(self): - """Test that lldb functions correctly after stepping through a crash.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.set_breakpoint(self.line) - self.runCmd("run", RUN_SUCCEEDED) - - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, - substrs=['main.c:%d' % self.line, - 'stop reason = breakpoint']) - - self.runCmd("next") - self.check_stop_reason() - - # The lldb expression interpreter should be able to read from addresses - # of the inferior after a crash. - self.expect("p i", - substrs=['(int) $0 =']) - - # lldb should be able to read from registers from the inferior after - # crashing. - lldbplatformutil.check_first_register_readable(self) - - # And it should report the correct line number. - self.expect("thread backtrace all", - substrs=['main.c:%d' % self.line]) - - def recursive_inferior_crashing_step_after_break(self): - """Test that lldb behaves correctly when stepping after a crash.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.runCmd("run", RUN_SUCCEEDED) - self.check_stop_reason() - - expected_state = 'exited' # Provide the exit code. - if self.platformIsDarwin(): - # TODO: Determine why 'next' and 'continue' have no effect after a - # crash. - expected_state = 'stopped' - - self.expect("next", - substrs=['Process', expected_state]) - - if expected_state == 'exited': - self.expect( - "thread list", - error=True, - substrs=['Process must be launched']) - else: - self.check_stop_reason() - - def recursive_inferior_crashing_expr_step_expr(self): - """Test that lldb expressions work before and after stepping after a crash.""" - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.runCmd("run", RUN_SUCCEEDED) - self.check_stop_reason() - - # The lldb expression interpreter should be able to read from addresses - # of the inferior after a crash. - self.expect("p null", - startstr='(char *) $0 = 0x0') - - self.runCmd("next") - - # The lldb expression interpreter should be able to read from addresses - # of the inferior after a step. - self.expect("p null", - startstr='(char *) $1 = 0x0') - - self.check_stop_reason() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py new file mode 100644 index 000000000000000..06dfc05097a0c72 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py @@ -0,0 +1,127 @@ +"""Test that lldb steps correctly after the inferior has crashed while in a recursive routine.""" + +from __future__ import print_function + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbplatformutil +from lldbsuite.test import lldbutil + + +class CrashingRecursiveInferiorStepTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") + def test_recursive_inferior_crashing_step(self): + """Test that stepping after a crash behaves correctly.""" + self.build() + self.recursive_inferior_crashing_step() + + @skipIfTargetAndroid() # debuggerd interferes with this test on Android + @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778") + def test_recursive_inferior_crashing_step_after_break(self): + """Test that lldb functions correctly after stepping through a crash.""" + self.build() + self.recursive_inferior_crashing_step_after_break() + + # Inferior exits after stepping after a segfault. This is working as + # intended IMHO. + @skipIfLinux + @skipIfFreeBSD + @expectedFailureNetBSD + def test_recursive_inferior_crashing_expr_step_and_expr(self): + """Test that lldb expressions work before and after stepping after a crash.""" + self.build() + self.recursive_inferior_crashing_expr_step_expr() + + def set_breakpoint(self, line): + lldbutil.run_break_set_by_file_and_line( + self, "main.c", line, num_expected_locations=1, loc_exact=True) + + def check_stop_reason(self): + # We should have one crashing thread + self.assertEqual( + len( + lldbutil.get_crashed_threads( + self, + self.dbg.GetSelectedTarget().GetProcess())), 1, + STOPPED_DUE_TO_EXC_BAD_ACCESS) + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + # Find the line number of the crash. + self.line = line_number('main.c', '// Crash here.') + + def recursive_inferior_crashing_step(self): + """Test that lldb functions correctly after stepping through a crash.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.set_breakpoint(self.line) + self.runCmd("run", RUN_SUCCEEDED) + + self.expect( + "thread list", + STOPPED_DUE_TO_BREAKPOINT, + substrs=['main.c:%d' % self.line, 'stop reason = breakpoint']) + + self.runCmd("next") + self.check_stop_reason() + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a crash. + self.expect("p i", substrs=['(int) $0 =']) + + # lldb should be able to read from registers from the inferior after + # crashing. + lldbplatformutil.check_first_register_readable(self) + + # And it should report the correct line number. + self.expect("thread backtrace all", substrs=['main.c:%d' % self.line]) + + def recursive_inferior_crashing_step_after_break(self): + """Test that lldb behaves correctly when stepping after a crash.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + self.check_stop_reason() + + expected_state = 'exited' # Provide the exit code. + if self.platformIsDarwin(): + # TODO: Determine why 'next' and 'continue' have no effect after a + # crash. + expected_state = 'stopped' + + self.expect("next", substrs=['Process', expected_state]) + + if expected_state == 'exited': + self.expect( + "thread list", + error=True, + substrs=['Process must be launched']) + else: + self.check_stop_reason() + + def recursive_inferior_crashing_expr_step_expr(self): + """Test that lldb expressions work before and after stepping after a crash.""" + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.runCmd("run", RUN_SUCCEEDED) + self.check_stop_reason() + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a crash. + self.expect("p null", startstr='(char *) $0 = 0x0') + + self.runCmd("next") + + # The lldb expression interpreter should be able to read from addresses + # of the inferior after a step. + self.expect("p null", startstr='(char *) $1 = 0x0') + + self.check_stop_reason() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/Makefile index 532f49555e5fe86..d94874a7a05cafd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../make - CXX_SOURCES := calling.cpp ifneq (,$(findstring icc,$(CC))) CXXFLAGS += -debug inline-debug-info endif -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py b/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py index 4513db2ccdfcf11..a52cd4dd686530a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import time -import sys import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/Makefile index f94c29bd44d3737..a783487bd1c32aa 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/Makefile @@ -1,10 +1,8 @@ -LEVEL = ../../make - C_SOURCES := main.c all: a.out simple -include $(LEVEL)/Makefile.rules +include Makefile.rules simple: $(MAKE) VPATH=$(VPATH) -f $(SRCDIR)/simple.mk diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/TestJITLoaderGDB.py b/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/TestJITLoaderGDB.py index 90d3a2cdbe6f48e..2c3a49cee8583c8 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/TestJITLoaderGDB.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/TestJITLoaderGDB.py @@ -8,7 +8,6 @@ from lldbsuite.test import lldbutil from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * -import re file_index = 0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/simple.mk b/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/simple.mk index 9f0c165515adf33..e2043c3b9c6d8e6 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/simple.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/jitloader_gdb/simple.mk @@ -1,6 +1,4 @@ -LEVEL = ../../make - C_SOURCES := simple.c EXE = simple -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/launch_with_shellexpand/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/Makefile index 6574478c8f47d68..cf6b391cb187d09 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/Makefile @@ -1,12 +1,10 @@ -LEVEL := ../../make - LIB_PREFIX := loadunload_ LD_EXTRAS := -L. -l$(LIB_PREFIX)d CXX_SOURCES := main.cpp USE_LIBDL := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules a.out: lib_a lib_b lib_c lib_d hidden_lib_d install_name_tool diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/TestLoadUnload.py b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/TestLoadUnload.py index 59412cbf85fdf24..02e9198e38dffb0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/TestLoadUnload.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/TestLoadUnload.py @@ -6,7 +6,6 @@ import os -import time import re import lldb from lldbsuite.test.decorators import * @@ -93,6 +92,13 @@ def copy_shlibs_to_remote(self, hidden_dir=False): "Unable copy 'libloadunload_d.so' to '%s'.\n>>> %s" % (wd, err.GetCString())) + def setSvr4Support(self, enabled): + self.runCmd( + "settings set plugin.process.gdb-remote.use-libraries-svr4 {enabled}".format( + enabled="true" if enabled else "false" + ) + ) + # libloadunload_d.so does not appear in the image list because executable # dependencies are resolved relative to the debuggers PWD. Bug? @expectedFailureAll(oslist=["linux"]) @@ -224,6 +230,20 @@ def test_dyld_library_path(self): @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support @skipIfWindows # Windows doesn't have dlopen and friends, dynamic libraries work differently def test_lldb_process_load_and_unload_commands(self): + self.setSvr4Support(False) + self.run_lldb_process_load_and_unload_commands() + + @expectedFailureAll( + bugnumber="llvm.org/pr25805", + hostoslist=["windows"], + triple='.*-android') + @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support + @skipIfWindows # Windows doesn't have dlopen and friends, dynamic libraries work differently + def test_lldb_process_load_and_unload_commands_with_svr4(self): + self.setSvr4Support(True) + self.run_lldb_process_load_and_unload_commands() + + def run_lldb_process_load_and_unload_commands(self): """Test that lldb process load/unload command work correctly.""" self.copy_shlibs_to_remote() @@ -260,7 +280,7 @@ def test_lldb_process_load_and_unload_commands(self): "process load %s --install=%s" % (localDylibPath, remoteDylibPath), "%s loaded correctly" % dylibName, patterns=[ - 'Loading "%s".*ok' % localDylibPath, + 'Loading "%s".*ok' % re.escape(localDylibPath), 'Image [0-9]+ loaded']) # Search for and match the "Image ([0-9]+) loaded" pattern. @@ -295,6 +315,15 @@ def test_lldb_process_load_and_unload_commands(self): @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support def test_load_unload(self): + self.setSvr4Support(False) + self.run_load_unload() + + @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support + def test_load_unload_with_svr4(self): + self.setSvr4Support(True) + self.run_load_unload() + + def run_load_unload(self): """Test breakpoint by name works correctly with dlopen'ing.""" self.copy_shlibs_to_remote() @@ -335,6 +364,16 @@ def test_load_unload(self): @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support @skipIfWindows # Windows doesn't have dlopen and friends, dynamic libraries work differently def test_step_over_load(self): + self.setSvr4Support(False) + self.run_step_over_load() + + @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support + @skipIfWindows # Windows doesn't have dlopen and friends, dynamic libraries work differently + def test_step_over_load_with_svr4(self): + self.setSvr4Support(True) + self.run_step_over_load() + + def run_step_over_load(self): """Test stepping over code that loads a shared library works correctly.""" self.copy_shlibs_to_remote() @@ -363,7 +402,7 @@ def test_step_over_load(self): # We can't find a breakpoint location for d_init before launching because # executable dependencies are resolved relative to the debuggers PWD. Bug? - @expectedFailureAll(oslist=["linux"]) + @expectedFailureAll(oslist=["linux"], triple=no_match('aarch64-.*-android')) @skipIfFreeBSD # llvm.org/pr14424 - missing FreeBSD Makefiles/testcase support @skipIfWindows # Windows doesn't have dlopen and friends, dynamic libraries work differently @expectedFailureNetBSD diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/a.mk b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/a.mk index fddca925dea2e07..6ee9dc41a1085e2 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/a.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/a.mk @@ -1,5 +1,3 @@ -LEVEL := ../../make - LIB_PREFIX := loadunload_ LD_EXTRAS := -L. -l$(LIB_PREFIX)b @@ -8,7 +6,7 @@ DYLIB_NAME := $(LIB_PREFIX)a DYLIB_CXX_SOURCES := a.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules $(DYLIB_FILENAME): lib_b diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/b.mk b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/b.mk index 2fcdbea3a1c4831..9d36fcac8efd730 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/b.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/b.mk @@ -1,9 +1,7 @@ -LEVEL := ../../make - LIB_PREFIX := loadunload_ DYLIB_NAME := $(LIB_PREFIX)b DYLIB_CXX_SOURCES := b.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/c.mk b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/c.mk index d40949b146307b8..0869ab615828c6f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/c.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/c.mk @@ -1,9 +1,7 @@ -LEVEL := ../../make - LIB_PREFIX := loadunload_ DYLIB_NAME := $(LIB_PREFIX)c DYLIB_CXX_SOURCES := c.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/d.mk b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/d.mk index a5db3c7c31f0a1a..111988a314d5a86 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/d.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/d.mk @@ -1,5 +1,3 @@ -LEVEL := ../../make - LIB_PREFIX := loadunload_ DYLIB_EXECUTABLE_PATH := $(CURDIR) @@ -8,4 +6,4 @@ DYLIB_NAME := $(LIB_PREFIX)d DYLIB_CXX_SOURCES := d.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/hidden/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/hidden/Makefile index 271117a0ad88a6e..17fe6582a9eb997 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/hidden/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_unload/hidden/Makefile @@ -1,9 +1,7 @@ -LEVEL := ../../../make - LIB_PREFIX := loadunload_ DYLIB_NAME := $(LIB_PREFIX)d DYLIB_CXX_SOURCES := d.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/Makefile index 0b7e66870303ff5..ff8e6268d573717 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/Makefile @@ -1,9 +1,7 @@ -LEVEL := ../../make - CXX_SOURCES := main.cpp USE_LIBDL := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules all: hidden_lib a.out diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/TestLoadUsingPaths.py b/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/TestLoadUsingPaths.py index 694d28b78c468b9..0ffce6213ef4e0e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/TestLoadUsingPaths.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/TestLoadUsingPaths.py @@ -6,8 +6,6 @@ import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/hidden/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/hidden/Makefile index bebfa92ecfb2571..5e22c8a8ea784b2 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/hidden/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/load_using_paths/hidden/Makefile @@ -1,7 +1,5 @@ -LEVEL := ../../../make - DYLIB_NAME := loadunload DYLIB_CXX_SOURCES := d.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/TestLongjmp.py b/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/TestLongjmp.py index 09eac714e939337..07ba7c7d7a6a407 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/TestLongjmp.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/longjmp/TestLongjmp.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile index 9d4f3b7f14124bd..31f2d5e8fc296b3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory-region/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules clean:: rm -rf $(wildcard *.o *.d *.dSYM) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/TestMemoryCache.py b/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/TestMemoryCache.py index 56984885104ecb4..7e072024d472c7f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/TestMemoryCache.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory/cache/TestMemoryCache.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/TestMemoryFind.py b/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/TestMemoryFind.py index 245aaa819c7f3ef..b0feb3762477a97 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/TestMemoryFind.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory/find/TestMemoryFind.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/TestMemoryRead.py b/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/TestMemoryRead.py index 2e4bbbd53f0fe22..06ed508475fb3f3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/TestMemoryRead.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/memory/read/TestMemoryRead.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/Makefile index 5665652329dc08e..5a7351146d2417e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -framework AppKit -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py b/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py index b871b90961c96bd..0b4c0d1e0fa0dc2 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py @@ -2,8 +2,6 @@ Tests basic Main Thread Checker support (detecting a main-thread-only violation). """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/multidebugger_commands/TestMultipleDebuggersCommands.py b/lldb/packages/Python/lldbsuite/test/functionalities/multidebugger_commands/TestMultipleDebuggersCommands.py index 9cdd7158516dd16..845950758f8ef00 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/multidebugger_commands/TestMultipleDebuggersCommands.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/multidebugger_commands/TestMultipleDebuggersCommands.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/nosucharch/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/paths/TestPaths.py b/lldb/packages/Python/lldbsuite/test/functionalities/paths/TestPaths.py index 816751cd8795c2b..bdb0a589466f120 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/paths/TestPaths.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/paths/TestPaths.py @@ -6,7 +6,6 @@ import lldb import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -38,7 +37,6 @@ def test_directory_doesnt_end_with_slash(self): current_directory_spec = lldb.SBFileSpec(os.path.curdir) current_directory_string = current_directory_spec.GetDirectory() self.assertNotEqual(current_directory_string[-1:], '/') - pass @skipUnlessPlatform(["windows"]) @no_debug_info_test diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/Makefile similarity index 61% rename from lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/Makefile rename to lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/Makefile index 8af06446eceff9d..3119c3707841d4a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - DYLIB_CXX_SOURCES := plugin.cpp DYLIB_NAME := plugin DYLIB_ONLY := YES MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/TestPluginCommands.py similarity index 79% rename from lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py rename to lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/TestPluginCommands.py index 25b83ed5532fd4a..e81d4076574df13 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/TestPluginCommands.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -67,3 +64,15 @@ def test_load_plugin(self): print(retobj.GetOutput()) self.expect(retobj, substrs=['abc def ghi'], exe=False) + + @no_debug_info_test + def test_invalid_plugin_invocation(self): + self.expect("plugin load a b", + error=True, startstr="error: 'plugin load' requires one argument") + self.expect("plugin load", + error=True, startstr="error: 'plugin load' requires one argument") + + @no_debug_info_test + def test_invalid_plugin_target(self): + self.expect("plugin load ThisIsNotAValidPluginName", + error=True, startstr="error: no such file") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp.template b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/plugin.cpp.template similarity index 100% rename from lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp.template rename to lldb/packages/Python/lldbsuite/test/functionalities/plugins/command_plugin/plugin.cpp.template diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/Makefile index cd9ca5c86d84cb0..c9319d6e6888a4a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/Makefile @@ -1,3 +1,2 @@ -LEVEL = ../../../make C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py index f10523746dc5b08..9bfb5f8472f28b3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py @@ -6,8 +6,6 @@ import os -import time -import re import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/TestGCore.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/TestGCore.py index 5a11a52e93a6d00..e69a4b5e3591d64 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/TestGCore.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/TestGCore.py @@ -4,8 +4,6 @@ from __future__ import print_function -import shutil -import struct import lldb from lldbsuite.test.decorators import * @@ -17,7 +15,13 @@ class GCoreTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True mydir = TestBase.compute_mydir(__file__) - _initial_platform = lldb.DBG.GetSelectedPlatform() + def setUp(self): + super(GCoreTestCase, self).setUp() + self._initial_platform = lldb.DBG.GetSelectedPlatform() + + def tearDown(self): + lldb.DBG.SetSelectedPlatform(self._initial_platform) + super(GCoreTestCase, self).tearDown() _i386_pid = 5586 _x86_64_pid = 5669 @@ -49,4 +53,3 @@ def do_test(self, filename, pid): self.assertEqual(signal, 19) self.dbg.DeleteTarget(target) - lldb.DBG.SetSelectedPlatform(self._initial_platform) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/main.mk b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/main.mk index ff874a21f76028e..566938ca0cc4e14 100755 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/main.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/gcore/main.mk @@ -1,5 +1,3 @@ -LEVEL = ../../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/TestLinuxCoreThreads.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/TestLinuxCoreThreads.py index 7cc3c0775cedcdd..b167b3fdf3b2cd5 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/TestLinuxCoreThreads.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/TestLinuxCoreThreads.py @@ -4,8 +4,6 @@ from __future__ import print_function -import shutil -import struct import lldb from lldbsuite.test.decorators import * @@ -17,7 +15,14 @@ class LinuxCoreThreadsTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True mydir = TestBase.compute_mydir(__file__) - _initial_platform = lldb.DBG.GetSelectedPlatform() + + def setUp(self): + super(LinuxCoreThreadsTestCase, self).setUp() + self._initial_platform = lldb.DBG.GetSelectedPlatform() + + def tearDown(self): + lldb.DBG.SetSelectedPlatform(self._initial_platform) + super(LinuxCoreThreadsTestCase, self).tearDown() _i386_pid = 5193 _x86_64_pid = 5222 @@ -58,4 +63,3 @@ def do_test(self, filename, pid, tid): self.assertEqual(signal, 0) self.dbg.DeleteTarget(target) - lldb.DBG.SetSelectedPlatform(self._initial_platform) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/main.mk b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/main.mk index ff874a21f76028e..566938ca0cc4e14 100755 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/main.mk +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/thread_crash/main.mk @@ -1,5 +1,3 @@ -LEVEL = ../../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/TestMachCore.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/TestMachCore.py index a299a4308bc8d63..dbc8828b63a1be4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/TestMachCore.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/TestMachCore.py @@ -4,8 +4,6 @@ from __future__ import print_function -import shutil -import struct import lldb from lldbsuite.test.decorators import * @@ -26,7 +24,10 @@ def tearDown(self): lldb.DBG.SetSelectedPlatform(self._initial_platform) super(MachCoreTestCase, self).tearDown() - @expectedFailureAll(bugnumber="llvm.org/pr37371", hostoslist=["windows"]) + # This was originally marked as expected failure on Windows, but it has + # started timing out instead, so the expectedFailure attribute no longer + # correctly tracks it: llvm.org/pr37371 + @skipIfWindows def test_selected_thread(self): """Test that the right thread is selected after a core is loaded.""" # Create core form YAML. diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/operating_system.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/operating_system.py index de6c3b7dd56ff54..95a5bdc9dd86008 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/operating_system.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/mach-core/operating_system.py @@ -1,5 +1,4 @@ import lldb -import struct class OperatingSystemPlugIn(object): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py index b0e9f1dff223cab..74241a5fe60c902 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py @@ -5,7 +5,6 @@ from __future__ import print_function from six import iteritems -import shutil import lldb import os diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/Makefile index b3034c12abd9e1b..65e9dd2fa9e337f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py index 320a5666b33fbdc..067b04d997d0f46 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py @@ -4,9 +4,7 @@ from __future__ import division, print_function -import shutil import signal -import struct import os import lldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile index 624a6e1584e4251..032f9cda29cd844 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - DYLIB_NAME := unlikely_name DYLIB_CXX_SOURCES := foo.cpp CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/Makefile deleted file mode 100644 index a964853f534bb51..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -EXE := ProcessAttach - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_group/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/process_group/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_group/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_group/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile index b76d2cdb93f1e9b..65e9dd2fa9e337f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py index 55dbc4223711a16..66c47344613c7a9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_save_core/TestProcessSaveCore.py @@ -5,7 +5,6 @@ from __future__ import print_function import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/TestPtrRefs.py b/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/TestPtrRefs.py index 80ace219aeb1b8f..ed7b40d5ffb90dd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/TestPtrRefs.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/ptr_refs/TestPtrRefs.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/recursion/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/recursion/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/recursion/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/recursion/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/recursion/TestValueObjectRecursion.py b/lldb/packages/Python/lldbsuite/test/functionalities/recursion/TestValueObjectRecursion.py index 569ecd249b21e43..e949f1a1a07e91f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/recursion/TestValueObjectRecursion.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/recursion/TestValueObjectRecursion.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/Makefile deleted file mode 100644 index 3c6deff2d97257b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp a.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/rerun/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/rerun/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/rerun/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/rerun/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/rerun/TestRerun.py b/lldb/packages/Python/lldbsuite/test/functionalities/rerun/TestRerun.py index 044d3d25b7246f4..fc316e50a60ff8b 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/rerun/TestRerun.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/rerun/TestRerun.py @@ -5,8 +5,6 @@ import lldb -import os -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/return-value/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/return-value/Makefile index fd4e3086346540b..138642ce2062d7d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/return-value/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/return-value/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := call-func.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py b/lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py index cbc8cd83c4fced0..cb5dad50df8f795 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/set-data/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/set-data/Makefile index 9e1d63a183bce16..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/set-data/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/set-data/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/set-data/TestSetData.py b/lldb/packages/Python/lldbsuite/test/functionalities/set-data/TestSetData.py index 6e4dbf40e467709..c7c6f62e0694000 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/set-data/TestSetData.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/set-data/TestSetData.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/signal/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/signal/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/TestSendSignal.py b/lldb/packages/Python/lldbsuite/test/functionalities/signal/TestSendSignal.py index cda69f70cd265b6..1d2353c84372398 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/signal/TestSendSignal.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/TestSendSignal.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import time -import signal import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -26,7 +23,6 @@ def setUp(self): oslist=['freebsd'], bugnumber="llvm.org/pr23318: does not report running state") @skipIfWindows # Windows does not support signals - @expectedFailureNetBSD def test_with_run_command(self): """Test that lldb command 'process signal SIGUSR1' sends a signal to the inferior process.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/Makefile new file mode 100644 index 000000000000000..10495940055b63d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/Makefile @@ -0,0 +1,3 @@ +C_SOURCES := main.c + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/TestHandleAbort.py b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/TestHandleAbort.py new file mode 100644 index 000000000000000..1869eff0d281d60 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/TestHandleAbort.py @@ -0,0 +1,71 @@ +"""Test that we can unwind out of a SIGABRT handler""" + +from __future__ import print_function + + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class HandleAbortTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + NO_DEBUG_INFO_TESTCASE = True + + @skipIfWindows # signals do not exist on Windows + @expectedFailureNetBSD + def test_inferior_handle_sigabrt(self): + """Inferior calls abort() and handles the resultant SIGABRT. + Stopped at a breakpoint in the handler, verify that the backtrace + includes the function that called abort().""" + self.build() + exe = self.getBuildArtifact("a.out") + + # Create a target by the debugger. + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + + # launch + process = target.LaunchSimple( + None, None, self.get_process_working_directory()) + self.assertTrue(process, PROCESS_IS_VALID) + self.assertEqual(process.GetState(), lldb.eStateStopped) + signo = process.GetUnixSignals().GetSignalNumberFromName("SIGABRT") + + thread = lldbutil.get_stopped_thread(process, lldb.eStopReasonSignal) + self.assertTrue( + thread and thread.IsValid(), + "Thread should be stopped due to a signal") + self.assertTrue( + thread.GetStopReasonDataCount() >= 1, + "There should be data in the event.") + self.assertEqual(thread.GetStopReasonDataAtIndex(0), + signo, "The stop signal should be SIGABRT") + + # Continue to breakpoint in abort handler + bkpt = target.FindBreakpointByID( + lldbutil.run_break_set_by_source_regexp(self, "Set a breakpoint here")) + threads = lldbutil.continue_to_breakpoint(process, bkpt) + self.assertEqual(len(threads), 1, "Expected single thread") + thread = threads[0] + + # Expect breakpoint in 'handler' + frame = thread.GetFrameAtIndex(0) + self.assertEqual(frame.GetDisplayFunctionName(), "handler", "Unexpected break?") + + # Expect that unwinding should find 'abort_caller' + foundFoo = False + for frame in thread: + if frame.GetDisplayFunctionName() == "abort_caller": + foundFoo = True + + self.assertTrue(foundFoo, "Unwinding did not find func that called abort") + + # Continue until we exit. + process.Continue() + self.assertEqual(process.GetState(), lldb.eStateExited) + self.assertEqual(process.GetExitStatus(), 0) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c new file mode 100644 index 000000000000000..c2daea1e84e9dd9 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-abrt/main.c @@ -0,0 +1,25 @@ +#include +#include +#include + +void handler(int sig) +{ + printf("Set a breakpoint here.\n"); + exit(0); +} + +void abort_caller() { + abort(); +} + +int main() +{ + if (signal(SIGABRT, handler) == SIG_ERR) + { + perror("signal"); + return 1; + } + + abort_caller(); + return 2; +} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/TestHandleSegv.py b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/TestHandleSegv.py index 1ebab8837b92c81..40d14c5d26da68e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/TestHandleSegv.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/handle-segv/TestHandleSegv.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/TestRaise.py b/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/TestRaise.py index 6b52540b5e3a000..2dc5692c299c408 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/TestRaise.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/signal/raise/TestRaise.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import lldb import re from lldbsuite.test.lldbplatformutil import getDarwinOSTriples diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/stats/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/stats/Makefile deleted file mode 100644 index f5a47fcc46ccf27..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/stats/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../make -C_SOURCES := main.c -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile index f5a47fcc46ccf27..c9319d6e6888a4a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/stats_api/Makefile @@ -1,3 +1,2 @@ -LEVEL = ../../make C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/Makefile index 4f71dc87646da94..374e58b89a81c90 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - C_SOURCES := with-debug.c without-debug.c -include $(LEVEL)/Makefile.rules +include Makefile.rules without-debug.o: without-debug.c $(CC) $(CFLAGS_NO_DEBUG) -c $< diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/TestStepNoDebug.py b/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/TestStepNoDebug.py index 446c2675f884058..14184d6acd7ce32 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/TestStepNoDebug.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/step-avoids-no-debug/TestStepNoDebug.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import sys import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/step_scripted/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/step_scripted/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/step_scripted/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/step_scripted/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_or_return/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_or_return/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_or_return/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/thread_step_out_or_return/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/Makefile index 15bc2e7f415b85b..41c46c6626b3ef1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules CXXFLAGS += -g -O1 -glldb diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py index aec4d503fd730c2..fbd629672be0534 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py @@ -2,4 +2,5 @@ from lldbsuite.test import decorators lldbinline.MakeInlineTest(__file__, globals(), - [decorators.skipUnlessHasCallSiteInfo]) + [decorators.skipUnlessHasCallSiteInfo, + decorators.skipIf(dwarf_version=['<', '4'])]) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/TestModuleLoadedNotifys.py b/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/TestModuleLoadedNotifys.py index e6614b0a9576c31..b3db5f7a85da746 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/TestModuleLoadedNotifys.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/target-new-solib-notifications/TestModuleLoadedNotifys.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/target_command/Makefile deleted file mode 100644 index 9117ab9388b7c2a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_command/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -LEVEL = ../../make - -# Example: -# -# C_SOURCES := b.c -# EXE := b.out - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_var/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/target_var/Makefile index bb9cc4f2f66d69e..806c96740af1452 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_var/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/target_var/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - -include $(LEVEL)/Makefile.rules +include Makefile.rules a.out: globals.ll $(CC) $(CFLAGS) -g -c $^ -o globals.o diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/target_var/TestTargetVar.py b/lldb/packages/Python/lldbsuite/test/functionalities/target_var/TestTargetVar.py index d3afacca72f56e0..f8c2a6901472054 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/target_var/TestTargetVar.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/target_var/TestTargetVar.py @@ -3,7 +3,6 @@ """ import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/Makefile index 24e68012ebd3480..78f60047cd7878a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXXFLAGS += -std=c++11 CXX_SOURCES := ParallelTask.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/TestBacktraceAll.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/TestBacktraceAll.py index e2026267c60e87e..870b6b223c8d6b5 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/TestBacktraceAll.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_all/TestBacktraceAll.py @@ -2,8 +2,6 @@ Test regression for Bug 25251. """ -import os -import time import unittest2 import lldb from lldbsuite.test.decorators import * @@ -11,7 +9,7 @@ from lldbsuite.test import lldbutil -class BreakpointAfterJoinTestCase(TestBase): +class BacktraceAllTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_limit/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_limit/Makefile index f0bcf9752de219e..1e84d63f106af60 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_limit/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/backtrace_limit/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXXFLAGS += -std=c++11 CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py index 6b4d9be99549f19..f0e6d7ad91ac863 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/break_after_join/TestBreakAfterJoin.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/Makefile index 469c0809aa24a46..c33ae5685efc706 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py index a9f3fbb799f175b..9814c0ba9ad5557 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py @@ -12,11 +12,9 @@ class ConcurrentManyBreakpoints(ConcurrentEventsBase): mydir = ConcurrentEventsBase.compute_mydir(__file__) - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") # Atomic sequences are not supported yet for MIPS in LLDB. @skipIf(triple='^mips') + @expectedFailureNetBSD def test(self): """Test 100 breakpoints from 100 threads.""" self.build(dictionary=self.getBuildFlags()) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py index 88ab1d5e204cc59..c4e8f11b8233d90 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py @@ -12,11 +12,9 @@ class ConcurrentManyCrash(ConcurrentEventsBase): mydir = ConcurrentEventsBase.compute_mydir(__file__) - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") # Atomic sequences are not supported yet for MIPS in LLDB. @skipIf(triple='^mips') + @expectedFailureNetBSD def test(self): """Test 100 threads that cause a segfault.""" self.build(dictionary=self.getBuildFlags()) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManySignals.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManySignals.py index 232b694c80f4096..ca179cf4ca98027 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManySignals.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManySignals.py @@ -12,11 +12,11 @@ class ConcurrentManySignals(ConcurrentEventsBase): mydir = ConcurrentEventsBase.compute_mydir(__file__) - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") # Atomic sequences are not supported yet for MIPS in LLDB. @skipIf(triple='^mips') + # This test is flaky on Darwin. + @skipIfDarwin + @expectedFailureNetBSD def test(self): """Test 100 signals from 100 threads.""" self.build(dictionary=self.getBuildFlags()) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py index 96b610f2b90bb3d..25a40d2c768dbe0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py @@ -12,11 +12,9 @@ class ConcurrentManyWatchpoints(ConcurrentEventsBase): mydir = ConcurrentEventsBase.compute_mydir(__file__) - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") # Atomic sequences are not supported yet for MIPS in LLDB. @skipIf(triple='^mips') + @expectedFailureNetBSD @add_test_categories(["watchpoint"]) def test(self): """Test 100 watchpoints from 100 threads.""" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/Makefile index 26db4816b6ea652..3d0b98f13f3d7be 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/Makefile @@ -1,4 +1,2 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py index fa96db06a59de1d..36ae1b755f87d94 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py index 31c26e5fe2b4093..9f26a090ec86b76 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/TestCreateAfterAttach.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/TestCreateDuringStep.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/TestCreateDuringStep.py index 8a23182d5d72ccc..a1e294b4b6ae4f7 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/TestCreateDuringStep.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_during_step/TestCreateDuringStep.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py index 115a994bd28494a..585c2ea2a53398a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_break/TestExitDuringBreak.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/Makefile index d06a7d4685f3a92..ebecfbf92416a9e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/TestExitDuringStep.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/TestExitDuringStep.py index 91682f6b91cebf9..23b5a29a9a19cdd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/TestExitDuringStep.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/exit_during_step/TestExitDuringStep.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/Makefile index b726fc3695fdd85..6e962b972091580 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp other.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py index 7194dafe0ac121e..8b4e16fe08928f0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py index 4a1759e407a598c..01d999e9b934f3c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/multi_break/TestMultipleBreakpoints.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py index 88f22930f22e0f7..2913f891d7673bf 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/num_threads/TestNumThreads.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/Makefile index 26db4816b6ea652..3d0b98f13f3d7be 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/Makefile @@ -1,4 +1,2 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py index 5d384872330c400..546a2971c4d534e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py @@ -6,8 +6,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -194,7 +192,6 @@ def thread_state_after_expression_test(self): oslist=["windows"], bugnumber="llvm.org/pr24668: Breakpoints not resolved correctly") @skipIfDarwin # llvm.org/pr15824 thread states not properly maintained and - @expectedFailureNetBSD @no_debug_info_test def test_process_interrupt(self): """Test process interrupt and continue.""" diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/Makefile index 035413ff763dff6..c46619c66234817 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/TestThreadStepOut.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/TestThreadStepOut.py index 410c7514b2ed724..866f2152151c007 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/TestThreadStepOut.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_out/TestThreadStepOut.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/TestStepUntil.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/TestStepUntil.py index b0e7add37297e3b..28cc87553f2685e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/TestStepUntil.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/step_until/TestStepUntil.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/Makefile index d06a7d4685f3a92..ebecfbf92416a9e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py index 6f0beebfd7b6255..8eb8b22e54e2c0f 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/Makefile index 035413ff763dff6..c46619c66234817 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py index 487beb89523e0a4..236f8cc964065fe 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -27,7 +24,6 @@ class ThreadSpecificBreakTestCase(TestBase): @add_test_categories(['pyapi']) - @expectedFailureAll(oslist=["windows"]) @expectedFailureAll(oslist=['ios', 'watchos', 'tvos', 'bridgeos'], archs=['armv7', 'armv7k'], bugnumber='rdar://problem/34563920') # armv7 ios problem - breakpoint with tid qualifier isn't working @expectedFailureNetBSD def test_thread_id(self): @@ -46,13 +42,6 @@ def do_test(self, setter_method): (target, process, main_thread, main_breakpoint) = lldbutil.run_to_source_breakpoint(self, "Set main breakpoint here", main_source_spec) - main_thread_id = main_thread.GetThreadID() - - # This test works by setting a breakpoint in a function conditioned to stop only on - # the main thread, and then calling this function on a secondary thread, joining, - # and then calling again on the main thread. If the thread specific breakpoint works - # then it should not be hit on the secondary thread, only on the main - # thread. thread_breakpoint = target.BreakpointCreateBySourceRegex( "Set thread-specific breakpoint here", main_source_spec) self.assertGreater( @@ -60,11 +49,11 @@ def do_test(self, setter_method): 0, "thread breakpoint has no locations associated with it.") - # Set the thread-specific breakpoint to only stop on the main thread. The run the function - # on another thread and join on it. If the thread-specific breakpoint works, the next - # stop should be on the main thread. - - main_thread_id = main_thread.GetThreadID() + # Set the thread-specific breakpoint to stop only on the main thread + # before the secondary thread has a chance to execute it. The main + # thread joins the secondary thread, and then the main thread will + # execute the code at the breakpoint. If the thread-specific + # breakpoint works, the next stop will be on the main thread. setter_method(main_thread, thread_breakpoint) process.Continue() @@ -81,5 +70,5 @@ def do_test(self, setter_method): "thread breakpoint stopped at unexpected number of threads") self.assertEqual( stopped_threads[0].GetThreadID(), - main_thread_id, + main_thread.GetThreadID(), "thread breakpoint stopped at the wrong thread") diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/main.cpp index 0509b3d37a7ffff..03e93bd41259a9c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break/main.cpp @@ -5,7 +5,14 @@ void thread_function () { // Set thread-specific breakpoint here. - std::this_thread::sleep_for(std::chrono::microseconds(100)); + std::this_thread::sleep_for(std::chrono::milliseconds(20)); + // On Windows, a sleep_for of less than about 16 ms effectively calls + // Sleep(0). The MS standard thread implementation uses a system thread + // pool, which can deadlock on a Sleep(0), hanging not only the secondary + // thread but the entire test. I increased the delay to 20 ms to ensure + // Sleep is called with a delay greater than 0. The deadlock potential + // is described here: + // https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep#remarks } int diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/Makefile index 035413ff763dff6..c46619c66234817 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py index 0d08af85e6da43d..e5a92ef0b398c55 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/Makefile index c930ae563fc1d0d..07133cff3589df4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=thread -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/TestTsanBasic.py b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/TestTsanBasic.py index 53276287898ac18..1b71de5d2732bea 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/TestTsanBasic.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/TestTsanBasic.py @@ -2,8 +2,6 @@ Tests basic ThreadSanitizer support (detecting a data race). """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile index a5819477907468c..5f671971d593c4c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS_EXTRAS := -fsanitize=thread -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py index ae79476e00d4f7e..aaf2cd3a26c1d65 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/cpp_global_location/TestTsanCPPGlobalLocation.py @@ -2,8 +2,6 @@ Tests that TSan correctly reports the filename and line number of a racy global C++ variable. """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/Makefile index c930ae563fc1d0d..07133cff3589df4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=thread -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/TestTsanGlobalLocation.py b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/TestTsanGlobalLocation.py index f1078913d63fad1..ad4f34b4822aa18 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/TestTsanGlobalLocation.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/global_location/TestTsanGlobalLocation.py @@ -2,8 +2,6 @@ Tests that TSan correctly reports the filename and line number of a racy global variable. """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/Makefile index c930ae563fc1d0d..07133cff3589df4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=thread -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py index 24d187bee2f1152..6dd94c62f9c7e95 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/multiple/TestTsanMultiple.py @@ -2,8 +2,6 @@ Test ThreadSanitizer when multiple different issues are found. """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/Makefile index c930ae563fc1d0d..07133cff3589df4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=thread -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/TestTsanThreadLeak.py b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/TestTsanThreadLeak.py index e89b2a7c1ed387c..09704e40cd3aeaf 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/TestTsanThreadLeak.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_leak/TestTsanThreadLeak.py @@ -2,13 +2,10 @@ Tests ThreadSanitizer's support to detect a leaked thread. """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * import lldbsuite.test.lldbutil as lldbutil -import json class TsanThreadLeakTestCase(TestBase): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/Makefile index c930ae563fc1d0d..07133cff3589df4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=thread -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/TestTsanThreadNumbers.py b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/TestTsanThreadNumbers.py index 03092ab32ef0bd0..4eda59ee43902ae 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/TestTsanThreadNumbers.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/thread_numbers/TestTsanThreadNumbers.py @@ -2,8 +2,6 @@ Tests that TSan and LLDB have correct thread numbers. """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tty/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/tty/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tty/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tty/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tty/TestTerminal.py b/lldb/packages/Python/lldbsuite/test/functionalities/tty/TestTerminal.py index c4d31df0989bdc2..bf5f1200ace8ed1 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tty/TestTerminal.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tty/TestTerminal.py @@ -7,7 +7,6 @@ import unittest2 import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/TestTypeCompletion.py b/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/TestTypeCompletion.py index 2c7fb01f2f26947..e08f4be08942144 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/TestTypeCompletion.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/type_completion/TestTypeCompletion.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/Makefile index 7fb4d7a5ab1ba3b..377a1a0373a0d13 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../make - OBJCXX_SOURCES := main.mm CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/TestTypeLookup.py b/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/TestTypeLookup.py index 272634fcab91dcf..6695d7b5d2acdd0 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/TestTypeLookup.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/type_lookup/TestTypeLookup.py @@ -5,9 +5,6 @@ from __future__ import print_function -import datetime -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/Makefile index 6e7d19b6f48c2b9..b27db90a40de2f3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=undefined -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/TestUbsanBasic.py b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/TestUbsanBasic.py index 5dfa08e783084ce..76fdb33fd3295a9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/TestUbsanBasic.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/basic/TestUbsanBasic.py @@ -3,7 +3,6 @@ """ import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/Makefile index 6e7d19b6f48c2b9..b27db90a40de2f3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS := -fsanitize=undefined -g -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/TestUbsanUserExpression.py b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/TestUbsanUserExpression.py index d0502cc052a56c8..68f8c0360ff3e82 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/TestUbsanUserExpression.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/ubsan/user-expression/TestUbsanUserExpression.py @@ -2,13 +2,10 @@ Test that hitting a UBSan issue while running user expression doesn't break the evaluation. """ -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * import lldbsuite.test.lldbutil as lldbutil -import json class UbsanUserExpressionTestCase(TestBase): diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/Makefile index 289d25698ffb7fd..493ea3f7f68dad9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS ?= -g -fomit-frame-pointer -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/TestEhFrameUnwind.py b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/TestEhFrameUnwind.py index 9c87d1759f8c389..24d621b0ce8ba51 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/TestEhFrameUnwind.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/TestEhFrameUnwind.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/Makefile index ede25f029bcd6b5..36cf5a296e53754 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS ?= -g -Os -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/TestNoreturnUnwind.py b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/TestNoreturnUnwind.py index 9f69f60f6210caf..1086a34d3dd36c4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/TestNoreturnUnwind.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/TestNoreturnUnwind.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/module-end/TestNoReturnModuleEnd.py b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/module-end/TestNoReturnModuleEnd.py index 3aa6a230e8b6cc6..a196658feffb639 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/module-end/TestNoReturnModuleEnd.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/module-end/TestNoReturnModuleEnd.py @@ -5,8 +5,6 @@ from __future__ import print_function -import shutil -import struct import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/TestSigtrampUnwind.py b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/TestSigtrampUnwind.py index f971942322b1631..bf19cacac06d57e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/TestSigtrampUnwind.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/sigtramp/TestSigtrampUnwind.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/Makefile index 146da30b12cb809..22f1051530f8712 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/Makefile @@ -1,3 +1 @@ -LEVEL = ../../../make - -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/TestStandardUnwind.py b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/TestStandardUnwind.py index 4bacb0bd98848cf..032b9e1aa61885e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/TestStandardUnwind.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/standard/TestStandardUnwind.py @@ -15,7 +15,6 @@ import unittest2 import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -145,10 +144,8 @@ def standard_unwind_tests(self): # Generate test cases based on the collected source files for f in test_source_files: if f.endswith(".cpp") or f.endswith(".c"): + @skipIfWindows @add_test_categories(["dwarf"]) - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") def test_function_dwarf(self, f=f): if f.endswith(".cpp"): d = {'CXX_SOURCES': f} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/TestValueMD5Crash.py b/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/TestValueMD5Crash.py index 1a8fbdf5e2ba3d3..eda1c6cfae0f9db 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/TestValueMD5Crash.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/value_md5_crash/TestValueMD5Crash.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/var_path/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/var_path/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/var_path/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/var_path/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/var_path/TestVarPath.py b/lldb/packages/Python/lldbsuite/test/functionalities/var_path/TestVarPath.py index d50c318babda4bf..67d42a2755e33d4 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/var_path/TestVarPath.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/var_path/TestVarPath.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/Makefile deleted file mode 100644 index 8817fff55e8c036..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -ENABLE_THREADS := YES -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchpoint/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multi_watchpoint_slots/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_hits/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/Makefile deleted file mode 100644 index 8817fff55e8c036..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/multiple_threads/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -ENABLE_THREADS := YES -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/Makefile deleted file mode 100644 index ee6b9cc62b40940..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/command/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/Makefile deleted file mode 100644 index ee6b9cc62b40940..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_commands/condition/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_disable/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_events/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_on_vectors/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/Makefile deleted file mode 100644 index 8817fff55e8c036..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -ENABLE_THREADS := YES -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile deleted file mode 100644 index b09a579159d4855..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py b/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py index c25f9afbfa4eda9..d5aa417b23add5a 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/wrong_commands/TestWrongCommands.py @@ -4,8 +4,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/help/TestApropos.py b/lldb/packages/Python/lldbsuite/test/help/TestApropos.py deleted file mode 100644 index 8bf75ab68801b51..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/help/TestApropos.py +++ /dev/null @@ -1,28 +0,0 @@ -""" -Test some lldb apropos commands. -""" - -from __future__ import print_function - - -import os -import time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class AproposCommandTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - @no_debug_info_test - def test_apropos_variable(self): - """Test that 'apropos variable' prints the fully qualified command name""" - self.expect( - 'apropos variable', - substrs=[ - 'frame variable', - 'target variable', - 'watchpoint set variable']) diff --git a/lldb/packages/Python/lldbsuite/test/iohandler/completion/TestIOHandlerCompletion.py b/lldb/packages/Python/lldbsuite/test/iohandler/completion/TestIOHandlerCompletion.py new file mode 100644 index 000000000000000..d202887902e9000 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/iohandler/completion/TestIOHandlerCompletion.py @@ -0,0 +1,52 @@ +""" +Test completion in our IOHandlers. +""" + +import os + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test.lldbpexpect import PExpectTest + +class IOHandlerCompletionTest(PExpectTest): + + mydir = TestBase.compute_mydir(__file__) + + def test_completion(self): + self.launch(dimensions=(100,500)) + + # Start tab completion, go to the next page and then display all with 'a'. + self.child.send("\t\ta") + self.child.expect_exact("register") + + # Try tab completing regi to register. + self.child.send("regi\t") + self.child.expect_exact(self.PROMPT + "register") + self.child.send("\n") + self.expect_prompt() + + # Try tab completing directories and files. Also tests the partial + # completion where LLDB shouldn't print a space after the directory + # completion (as it didn't completed the full token). + dir_without_slashes = os.path.realpath(os.path.dirname(__file__)).rstrip("/") + self.child.send("file " + dir_without_slashes + "\t") + self.child.expect_exact("iohandler/completion/") + # If we get a correct partial completion without a trailing space, then this + # should complete the current test file. + self.child.send("TestIOHandler\t") + self.child.expect_exact("TestIOHandlerCompletion.py") + self.child.send("\n") + self.expect_prompt() + + # Start tab completion and abort showing more commands with 'n'. + self.child.send("\t") + self.child.expect_exact("More (Y/n/a)") + self.child.send("n") + self.expect_prompt() + + # Shouldn't crash or anything like that. + self.child.send("regoinvalid\t") + self.expect_prompt() + + self.quit() diff --git a/lldb/packages/Python/lldbsuite/test/iohandler/completion/main.c b/lldb/packages/Python/lldbsuite/test/iohandler/completion/main.c new file mode 100644 index 000000000000000..03350dd8299a624 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/iohandler/completion/main.c @@ -0,0 +1,5 @@ +int main(int argc, char **argv) { + lldb_enable_attach(); + int to_complete = 0; + return to_complete; +} diff --git a/lldb/packages/Python/lldbsuite/test/issue_verification/Makefile b/lldb/packages/Python/lldbsuite/test/issue_verification/Makefile deleted file mode 100644 index e7bd3f4dd792460..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/issue_verification/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -LEVEL = ../make -CXX_SOURCES := inline_rerun_inferior.cpp -CXXFLAGS += -std=c++11 -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/TestAnonymous.py b/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/TestAnonymous.py index e3ae93d3a5ba3c6..00c416554d2a076 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/TestAnonymous.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/anonymous/TestAnonymous.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/array_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/array_types/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/array_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/array_types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/array_types/TestArrayTypes.py b/lldb/packages/Python/lldbsuite/test/lang/c/array_types/TestArrayTypes.py index da3a46ac0bca631..db05c04b6ab3788 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/array_types/TestArrayTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/array_types/TestArrayTypes.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/TestBitfields.py b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/TestBitfields.py index 54f71f49dfad66c..d5580ac86cce9d4 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/TestBitfields.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/TestBitfields.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -148,6 +146,9 @@ def test_and_run_command(self): '(uint8_t:1) b17 = \'\\0\'', ]) + self.expect("v/x large_packed", VARIABLES_DISPLAYED_CORRECTLY, + substrs=["a = 0x0000000cbbbbaaaa", "b = 0x0000000dffffeee"]) + @add_test_categories(['pyapi']) # BitFields exhibit crashes in record layout on Windows diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c index c21cfc9a9fbeb8d..be3a1af76baf92c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c +++ b/lldb/packages/Python/lldbsuite/test/lang/c/bitfields/main.c @@ -90,6 +90,14 @@ int main (int argc, char const *argv[]) packed.b = 10; packed.c = 0x7112233; + struct LargePackedBits { + uint64_t a: 36; + uint64_t b: 36; + } __attribute__((packed)); + + struct LargePackedBits large_packed = + (struct LargePackedBits){ 0xcbbbbaaaa, 0xdffffeeee }; + return 0; //// Set break point at this line. } diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/blocks/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/blocks/Makefile index 752b7aed397016e..a90dc493b8c38ec 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/blocks/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/blocks/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS += -fblocks -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/blocks/TestBlocks.py b/lldb/packages/Python/lldbsuite/test/lang/c/blocks/TestBlocks.py index c7693c98f5455f7..47e6cd1c67ed84c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/blocks/TestBlocks.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/blocks/TestBlocks.py @@ -4,8 +4,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile index 979cefe9b7fe52a..59778ab5d9f1bf4 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile @@ -1,9 +1,7 @@ -LEVEL := ../../../make - LD_EXTRAS := -L. -LOne -l$(LIB_PREFIX)One -LTwo -l$(LIB_PREFIX)Two C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules .PHONY: a.out: lib_One lib_Two diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk index 130c7dd511bb892..18f3725d22fff43 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk +++ b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk @@ -1,10 +1,8 @@ -LEVEL := ../../../make - DYLIB_NAME := One DYLIB_C_SOURCES := One.c OneConstant.c DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules OneConstant.o: OneConstant.c $(CC) $(CFLAGS_NO_DEBUG) -c $< -o $@ diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py index d0d0e9879681d24..2d36cdeb42e4e52 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk index ebe58cc743fcf25..79b256a0e858990 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk +++ b/lldb/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk @@ -1,10 +1,8 @@ -LEVEL := ../../../make - DYLIB_NAME := Two DYLIB_C_SOURCES := Two.c TwoConstant.c DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules TwoConstant.o: TwoConstant.c $(CC) $(CFLAGS_NO_DEBUG) -c $< -o $@ diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/Makefile index 51adad1d0622e93..47b3ca4be66a022 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - C_SOURCES := main.c functions.c CFLAGS_EXTRAS += -O3 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/TestConstVariables.py b/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/TestConstVariables.py index 8e5fd6ccf0c029b..5977908100633dd 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/TestConstVariables.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/const_variables/TestConstVariables.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -31,6 +29,7 @@ class ConstVariableTestCase(TestBase): archs=[ 'arm', 'aarch64'], + triple=no_match(".*-android"), bugnumber="llvm.org/pr27883") @expectedFailureAll( oslist=["windows"], diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py index 53ee2196aa42ef4..f6cf3c7f67c8e65 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/enum_types/TestEnumTypes.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/Makefile index cd9ca5c86d84cb0..c9319d6e6888a4a 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/Makefile @@ -1,3 +1,2 @@ -LEVEL = ../../../make C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/TestFindStructTypes.py b/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/TestFindStructTypes.py index 6827fb4af0e62ae..6a171c93698b7f2 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/TestFindStructTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/find_struct_type/TestFindStructTypes.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/forward/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/forward/Makefile index 1db43ab479b2305..472e733aaadb232 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/forward/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/forward/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c foo.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/forward/TestForwardDeclaration.py b/lldb/packages/Python/lldbsuite/test/lang/c/forward/TestForwardDeclaration.py index 2537beb87df7988..6d8b87ca8bd867c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/forward/TestForwardDeclaration.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/forward/TestForwardDeclaration.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/function_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/function_types/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/function_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/function_types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/function_types/TestFunctionTypes.py b/lldb/packages/Python/lldbsuite/test/lang/c/function_types/TestFunctionTypes.py index 9fc0b1cedf22321..7c903b238c08069 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/function_types/TestFunctionTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/function_types/TestFunctionTypes.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/Makefile index b1b77dacc01ea7a..7b94b6556f25453 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - C_SOURCES := main.c DYLIB_NAME := a DYLIB_C_SOURCES := a.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py b/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py index 57cec918ba0a9b4..61657e751fd2bdf 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/global_variables/TestGlobalVariables.py @@ -22,7 +22,10 @@ def setUp(self): self.shlib_names = ["a"] @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764") - @expectedFailureAll(oslist=["linux"], archs=["aarch64"], bugnumber="llvm.org/pr37301") + @expectedFailureAll(oslist=["linux"], + archs=["aarch64"], + triple=no_match(".*-android"), + bugnumber="llvm.org/pr37301") def test_without_process(self): """Test that static initialized variables can be inspected without process.""" diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/local_types/TestUseClosestType.py b/lldb/packages/Python/lldbsuite/test/lang/c/local_types/TestUseClosestType.py new file mode 100644 index 000000000000000..3c53de1fe3988f3 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/c/local_types/TestUseClosestType.py @@ -0,0 +1,53 @@ +""" +If there is a definition of a type in the current +Execution Context's CU, then we should use that type +even if there are other definitions of the type in other +CU's. Assert that that is true. +""" + +from __future__ import print_function + + +import lldb +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + + +class TestUseClosestType(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + NO_DEBUG_INFO_TESTCASE = True + + @expectedFailureAll(bugnumber="") + def test_use_in_expr(self): + """Use the shadowed type directly, see if we get a conflicting type definition.""" + self.build() + self.main_source_file = lldb.SBFileSpec("main.c") + self.expr_test() + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + + def run_and_check_expr(self, num_children, child_type): + frame = self.thread.GetFrameAtIndex(0) + result = frame.EvaluateExpression("struct Foo *$mine = (struct Foo *) malloc(sizeof(struct Foo)); $mine") + self.assertTrue(result.GetError().Success(), "Failed to parse an expression using a multiply defined type: %s"%(result.GetError().GetCString()), ) + self.assertEqual(result.GetTypeName(), "struct Foo *", "The result has the right typename.") + self.assertEqual(result.GetNumChildren(), num_children, "Got the right number of children") + self.assertEqual(result.GetChildAtIndex(0).GetTypeName(), child_type, "Got the right type.") + + def expr_test(self): + """ Run to a breakpoint in main.c, check that an expression referring to Foo gets the + local three int version. Then run to a breakpoint in other.c and check that an + expression referring to Foo gets the two char* version. """ + + (target, process, self.thread, bkpt) = lldbutil.run_to_source_breakpoint(self, + "Set a breakpoint in main", self.main_source_file) + + self.run_and_check_expr(3, "int") + lldbutil.run_to_source_breakpoint(self, "Set a breakpoint in other", lldb.SBFileSpec("other.c")) + self.run_and_check_expr(2, "char *") + diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/local_types/main.c b/lldb/packages/Python/lldbsuite/test/lang/c/local_types/main.c new file mode 100644 index 000000000000000..321facfee21a7bb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/c/local_types/main.c @@ -0,0 +1,16 @@ +extern int callme(int input); + +struct Foo { + int a; + int b; + int c; +}; + +int +main(int argc, char **argv) +{ + // Set a breakpoint in main + struct Foo mine = {callme(argc), 10, 20}; + return mine.a; +} + diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/local_types/other.c b/lldb/packages/Python/lldbsuite/test/lang/c/local_types/other.c new file mode 100644 index 000000000000000..24b72d45ea8833f --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/c/local_types/other.c @@ -0,0 +1,11 @@ +struct Foo { + char *ptr1; + char *ptr2; +}; + +int +callme(int input) +{ + struct Foo myFoo = { "string one", "Set a breakpoint in other"}; + return myFoo.ptr1[0] + myFoo.ptr2[0] + input; +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/local_variables/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/local_variables/Makefile index fd72018865868c5..ae2e4c45e1162ca 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/local_variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/local_variables/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS += -O1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/modules/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/modules/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/modules/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/modules/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/modules/TestCModules.py b/lldb/packages/Python/lldbsuite/test/lang/c/modules/TestCModules.py index 455704280d143d9..ce4664c53d3abee 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/modules/TestCModules.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/modules/TestCModules.py @@ -3,10 +3,7 @@ from __future__ import print_function -from distutils.version import StrictVersion import os -import time -import platform import lldb from lldbsuite.test.decorators import * @@ -47,6 +44,10 @@ def test_expr(self): self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE, substrs=[' resolved, hit count = 1']) + # Enable logging of the imported AST. + log_file = os.path.join(self.getBuildDir(), "lldb-ast-log.txt") + self.runCmd("log enable lldb ast -f '%s'" % log_file) + self.expect( "expr -l objc++ -- @import Darwin; 3", VARIABLES_DISPLAYED_CORRECTLY, @@ -54,6 +55,8 @@ def test_expr(self): "int", "3"]) + # This expr command imports __sFILE with definition + # (FILE is a typedef to __sFILE.) self.expect( "expr *fopen(\"/dev/zero\", \"w\")", VARIABLES_DISPLAYED_CORRECTLY, @@ -61,6 +64,14 @@ def test_expr(self): "FILE", "_close"]) + # Check that the AST log contains exactly one definition of __sFILE. + f = open(log_file) + log_lines = f.readlines() + f.close() + os.remove(log_file) + self.assertEqual(" ".join(log_lines).count("struct __sFILE definition"), + 1) + self.expect("expr *myFile", VARIABLES_DISPLAYED_CORRECTLY, substrs=["a", "5", "b", "9"]) diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/modules/main.c b/lldb/packages/Python/lldbsuite/test/lang/c/modules/main.c index 2b244bc38d02f87..df321a75faaf1dc 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/modules/main.c +++ b/lldb/packages/Python/lldbsuite/test/lang/c/modules/main.c @@ -5,11 +5,11 @@ int printf(const char * __restrict format, ...); typedef struct { int a; int b; -} FILE; +} MYFILE; int main() { - FILE *myFile = malloc(sizeof(FILE)); + MYFILE *myFile = malloc(sizeof(MYFILE)); myFile->a = 5; myFile->b = 9; diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/offsetof/TestOffsetof.py b/lldb/packages/Python/lldbsuite/test/lang/c/offsetof/TestOffsetof.py new file mode 100644 index 000000000000000..1311a149326219b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/c/offsetof/TestOffsetof.py @@ -0,0 +1,3 @@ +from lldbsuite.test import lldbinline + +lldbinline.MakeInlineTest(__file__, globals()) diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/offsetof/main.c b/lldb/packages/Python/lldbsuite/test/lang/c/offsetof/main.c new file mode 100644 index 000000000000000..cbb4a14441844a0 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/c/offsetof/main.c @@ -0,0 +1,12 @@ +#include + +struct Foo { + int8_t a; + int16_t b; +}; + +int main (int argc, char const *argv[]) { + struct Foo f; + return f.a; //% self.expect("expr offsetof(Foo, a)", substrs = ['= 0']) + //% self.expect("expr offsetof(Foo, b)", substrs = ['= 2']) +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/recurse/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/recurse/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/recurse/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/recurse/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/Makefile index a98622100ff4d08..569979a0653ca59 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - C_SOURCES := test.c CFLAGS_EXTRAS += -O1 -D_FORTIFY_SOURCE=0 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/TestRegisterVariables.py b/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/TestRegisterVariables.py index 8221148c29afcf0..af0ad2a08719deb 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/TestRegisterVariables.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/register_variables/TestRegisterVariables.py @@ -2,8 +2,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/set_values/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/set_values/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/set_values/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/set_values/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/set_values/TestSetValues.py b/lldb/packages/Python/lldbsuite/test/lang/c/set_values/TestSetValues.py index 14677fc548a2c3a..b17fb8662878787 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/set_values/TestSetValues.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/set_values/TestSetValues.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib/Makefile index 35d712c3f17f26c..5e26f2748c073d9 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - DYLIB_NAME := foo DYLIB_C_SOURCES := foo.c C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib_stripped_symbols/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib_stripped_symbols/Makefile index 6d1f1071bf2fd89..f3285de39e0eb50 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib_stripped_symbols/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/shared_lib_stripped_symbols/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - DYLIB_NAME := foo DYLIB_C_SOURCES := foo.c C_SOURCES := main.c SPLIT_DEBUG_SYMBOLS = YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/step-target/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/step-target/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/step-target/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/step-target/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/step-target/TestStepTarget.py b/lldb/packages/Python/lldbsuite/test/lang/c/step-target/TestStepTarget.py index aeda9ff41eb2efd..c694bda97c2824d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/step-target/TestStepTarget.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/step-target/TestStepTarget.py @@ -2,8 +2,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/stepping/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/stepping/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/stepping/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/stepping/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestStepAndBreakpoints.py b/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestStepAndBreakpoints.py index e10e23890602023..c9460b787d40be8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestStepAndBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestStepAndBreakpoints.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestThreadStepping.py b/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestThreadStepping.py index 62a0bf8e33eb9d7..c7e23069dac761d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestThreadStepping.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/stepping/TestThreadStepping.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/strings/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/strings/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/strings/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/strings/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/struct_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/struct_types/Makefile deleted file mode 100644 index cd9ca5c86d84cb0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/c/struct_types/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -C_SOURCES := main.c -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/Makefile index 0faad10b24af79e..b26ce5c8b144923 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c DYLIB_NAME := a @@ -7,4 +5,4 @@ DYLIB_C_SOURCES := a.c ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/TestTlsGlobals.py b/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/TestTlsGlobals.py index b76cd411b5caeb8..52e63ecac995084 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/TestTlsGlobals.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/tls_globals/TestTlsGlobals.py @@ -5,7 +5,6 @@ import unittest2 import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Testtypedef.py b/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Testtypedef.py index bbae76b5752a954..6321426974c4705 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Testtypedef.py +++ b/lldb/packages/Python/lldbsuite/test/lang/c/typedef/Testtypedef.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/unicode/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/unicode/Makefile index efabc4d4335ce9f..db8ac60dd1931f5 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/unicode/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/unicode/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c CFLAGS_EXTRAS += -finput-charset=UTF-8 -fextended-identifiers -std=c99 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/unions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/unions/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/unions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/unions/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/c/vla/Makefile b/lldb/packages/Python/lldbsuite/test/lang/c/vla/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/c/vla/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/c/vla/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/auto/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/auto/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/auto/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/auto/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/bool/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/bool/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/bool/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/bool/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/Makefile index 1d1f38f7fd0e6cc..6afea39f81c7e71 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := nested.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/TestCPPBreakpointCommands.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/TestCPPBreakpointCommands.py index a12051014dab352..6a6ae14fefbcebd 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/TestCPPBreakpointCommands.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands/TestCPPBreakpointCommands.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/Makefile new file mode 100644 index 000000000000000..dc53622129f6090 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/Makefile @@ -0,0 +1,4 @@ +CXX_SOURCES = main.cpp a.cpp +CFLAGS_EXTRAS = $(MANDATORY_CXXMODULE_BUILD_CFLAGS) + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/TestBreakpointInMemberFuncWNonPrimitiveParams.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/TestBreakpointInMemberFuncWNonPrimitiveParams.py new file mode 100644 index 000000000000000..1e46f73cb298923 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/TestBreakpointInMemberFuncWNonPrimitiveParams.py @@ -0,0 +1,26 @@ +""" +This is a regression test for an assert that happens while setting a breakpoint. +The root cause of the assert was attempting to add a ParmVarDecl to a CXXRecordDecl +when it should have been added to a CXXMethodDecl. + +We can reproduce with a module build and setting a breakpoint in a member function +of a class with a non-primitive type as a parameter. +""" + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestBreakpointInMemberFuncWNonPrimitiveParams(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @add_test_categories(["gmodules"]) + def test_breakpint_in_member_func_w_non_primitie_params(self): + self.build() + + (self.target, self.process, _, bkpt) = lldbutil.run_to_source_breakpoint(self, '// break here', + lldb.SBFileSpec("main.cpp", False)) + + self.runCmd("b a.cpp:11"); diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/a.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/a.cpp new file mode 100644 index 000000000000000..64e142c53790f1b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/a.cpp @@ -0,0 +1,14 @@ +#include "a.h" + +bool A::b(int x) { + if (x) + return true; + + return false; +} + +bool B::member_func_a(A a) { + return a.b(10); // We will try and add a breakpoint here which + // trigger an assert since we will attempt to + // to add ParamVarDecl a to CXXRecordDecl A +}; diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/a.h b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/a.h new file mode 100644 index 000000000000000..cb31d3efe8fb7e2 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/a.h @@ -0,0 +1,7 @@ +struct A { + bool b(int x); +}; + +struct B { + bool member_func_a(A a); +}; diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/main.cpp new file mode 100644 index 000000000000000..779ef04072b2c93 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/main.cpp @@ -0,0 +1,15 @@ +#include "a.h" +#include + +bool foo() { + A a1; + B b1; + + return b1.member_func_a(a1); // break here +} + +int main() { + int x = 0; + + return foo(); +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/module.modulemap b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/module.modulemap new file mode 100644 index 000000000000000..bbd9d674c946470 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint_in_member_func_w_non_primitive_params/module.modulemap @@ -0,0 +1,3 @@ +module A { + header "a.h" +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/call-function/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/call-function/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/call-function/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/call-function/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/chained-calls/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/chained-calls/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/chained-calls/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/chained-calls/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/Makefile index 932046f2696855b..64fd6effcee41ee 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS :=-g -O0 -std=c++11 clean: OBJECTS+=$(wildcard main.d.*) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/TestChar1632T.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/TestChar1632T.py index e37e76ae9c0dfbf..e2f13c608b4946c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/TestChar1632T.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/TestChar1632T.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile new file mode 100644 index 000000000000000..c69bf503a34a6e7 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/Makefile @@ -0,0 +1,4 @@ +CXX_SOURCES := main.cpp +CFLAGS_EXTRAS := -std=c++2a -fchar8_t + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py new file mode 100644 index 000000000000000..ddbe3733a7e1204 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/TestCxxChar8_t.py @@ -0,0 +1,40 @@ +# coding=utf8 +""" +Test that C++ supports char8_t correctly. +""" + +from __future__ import print_function + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +import lldbsuite.test.lldbutil as lldbutil + + +class CxxChar8_tTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipIf(compiler="clang", compiler_version=['<', '7.0']) + def test(self): + """Test that C++ supports char8_t correctly.""" + self.build() + exe = self.getBuildArtifact("a.out") + + # Create a target by the debugger. + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + + # FIXME: We should be able to test this with target variable, but the + # data formatter output is broken. + lldbutil.run_break_set_by_symbol(self, 'main') + self.runCmd("run", RUN_SUCCEEDED) + + self.expect( + "frame variable a", substrs=["(char8_t)", "0x61 u8'a'"]) + + self.expect( + "frame variable ab", substrs=['(const char8_t *)' , 'u8"你好"']) + + self.expect( + "frame variable abc", substrs=['(char8_t [9])', 'u8"你好"']) diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp new file mode 100644 index 000000000000000..b73ba0c4e61045c --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/char8_t/main.cpp @@ -0,0 +1,5 @@ +char8_t a = u8'a'; +const char8_t* ab = u8"你好"; +char8_t abc[9] = u8"你好"; + +int main (int argc, char const *argv[]) { return 0; } diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/TestStaticVariables.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/TestStaticVariables.py index eead3c509ff00f1..8f941af68d0b649 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/TestStaticVariables.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_static/TestStaticVariables.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypes.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypes.py index 759da716b1872eb..6971e5693a2b9fe 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypes.py @@ -4,7 +4,6 @@ import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypesDisassembly.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypesDisassembly.py index c838178747533db..ad187d0394b6dd9 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypesDisassembly.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/class_types/TestClassTypesDisassembly.py @@ -6,7 +6,6 @@ import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/const_this/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/const_this/Makefile deleted file mode 100644 index 52a92c0b61ae411..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/const_this/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -CXXFLAGS += -std=c++11 -include $(LEVEL)/Makefile.rules - -cleanup: - rm -f Makefile *.d - diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/diamond/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/diamond/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/diamond/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/diamond/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/TestDynamicValueSameBase.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/TestDynamicValueSameBase.py index c0afb3cf49198a0..fa9bcf14e1573d9 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/TestDynamicValueSameBase.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value-same-basename/TestDynamicValueSameBase.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/Makefile index 8770b2343ef08a8..2bba8e757f79b71 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := pass-to-base.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestCppValueCast.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestCppValueCast.py index 497f17f4454c5d9..609dd608aa4c634 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestCppValueCast.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestCppValueCast.py @@ -6,9 +6,6 @@ import unittest2 -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestDynamicValue.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestDynamicValue.py index acda4261b1135e5..2b887ebc2a61be9 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestDynamicValue.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/dynamic-value/TestDynamicValue.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/Makefile index 0e0f5d1dad3d420..ac4b37c7c7bfa13 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/Makefile @@ -1,10 +1,8 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CXXFLAGS += -std=c++11 clean: OBJECTS+=$(wildcard main.d.*) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py index d091387241607a3..8157b1c25754e6b 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/Makefile index a6bd8463ad548ec..edb53da7b8e5e6c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := exceptions.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py index bbe34e728ec42f2..93ada9bd15cb656 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/extern_c/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/extern_c/Makefile deleted file mode 100644 index 99bfa7e03b479d8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/extern_c/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/frame-var-anon-unions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/frame-var-anon-unions/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/frame-var-anon-unions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/frame-var-anon-unions/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/Makefile deleted file mode 100644 index 99bfa7e03b479d8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/function_refs/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/function_refs/Makefile deleted file mode 100644 index 99bfa7e03b479d8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/function_refs/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_operators/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_operators/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_operators/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_operators/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/global_variables/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules-templates/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules-templates/Makefile deleted file mode 100644 index 0497d78fec3cd58..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules-templates/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES = main.cpp -# CFLAGS_EXTRAS += $(MODULE_DEBUG_INFO_FLAGS) - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules/Makefile index da6f39a7488cfb6..4a430eccc701d59 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/gmodules/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - PCH_CXX_SOURCE = pch.h CXX_SOURCES = main.cpp CFLAGS_EXTRAS += $(MODULE_DEBUG_INFO_FLAGS) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/incomplete-types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/incomplete-types/Makefile index 2ce96e90d2d8e1f..769920c28336cfc 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/incomplete-types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/incomplete-types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES = main.cpp length.cpp a.cpp CFLAGS_LIMIT = -c $(CXXFLAGS) @@ -32,4 +30,4 @@ a.o: a.cpp clean: OBJECTS += limit nolimit length_limit.o length_nolimit.o length_limit.dwo length_nolimit.dwo -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile index 8f67abdf2b34ce3..055e318e2208ee4 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := inlines.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py index f7b92e8328e8fe0..f94c6c34ddd888a 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py @@ -2,8 +2,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/limit-debug-info/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/limit-debug-info/Makefile index b9a3d3fe1c81ef8..8e811fdeb67a590 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/limit-debug-info/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/limit-debug-info/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES = main.cpp derived.cpp base.cpp CFLAGS_EXTRAS += $(LIMIT_DEBUG_INFO_FLAGS) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/llvm-style/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/llvm-style/Makefile deleted file mode 100644 index aae93a20b9c8c84..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/llvm-style/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules \ No newline at end of file diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/Makefile index 35eb63f922f7b51..82f96b62609fb9b 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/member-and-local-vars-with-same-name/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES = main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/modules-import/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/modules-import/Makefile index 2b8f23bcec7795b..9e7837a7695380d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/modules-import/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/modules-import/Makefile @@ -1,5 +1,4 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp CFLAGS_EXTRAS = $(MANDATORY_MODULE_BUILD_CFLAGS) -I$(BUILDDIR)/include -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/Makefile index 7dd5eb4c11f1378..638974fafd6dfb2 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ns.cpp ns2.cpp ns3.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py index 593911b15dd2d22..3d2a54219299df5 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespace.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespaceLookup.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespaceLookup.py index 9c65966b348a6b5..1860daabffc810d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespaceLookup.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace/TestNamespaceLookup.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_conflicts/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_conflicts/Makefile deleted file mode 100644 index 99bfa7e03b479d8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_conflicts/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/Makefile index 9e52bacd5fc9c2d..a8ed4b5ecf177f6 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/Makefile @@ -1,9 +1,7 @@ -LEVEL := ../../../make - LD_EXTRAS := -L. -l$(LIB_PREFIX)a -l$(LIB_PREFIX)b CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules .PHONY: a.out: lib_a lib_b diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/a.mk b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/a.mk index e53570873a3adc6..b214267c0624462 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/a.mk +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/a.mk @@ -1,7 +1,5 @@ -LEVEL := ../../../make - DYLIB_NAME := a DYLIB_CXX_SOURCES := a.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/b.mk b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/b.mk index 54a1d8dea5a6580..7fc442d2ae0ab79 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/b.mk +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/namespace_definitions/b.mk @@ -1,7 +1,5 @@ -LEVEL := ../../../make - DYLIB_NAME := b DYLIB_CXX_SOURCES := b.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/nsimport/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/nsimport/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/nsimport/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/nsimport/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/offsetof/TestOffsetofCpp.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/offsetof/TestOffsetofCpp.py new file mode 100644 index 000000000000000..1311a149326219b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/offsetof/TestOffsetofCpp.py @@ -0,0 +1,3 @@ +from lldbsuite.test import lldbinline + +lldbinline.MakeInlineTest(__file__, globals()) diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/offsetof/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/offsetof/main.cpp new file mode 100644 index 000000000000000..ab379f839c86dbc --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/offsetof/main.cpp @@ -0,0 +1,25 @@ +#include + +class Base { + int32_t a; +}; +class Class1 : Base { +public: + int32_t b; +}; + +class EmptyBase { +}; +class Class2 : EmptyBase { +public: + int32_t b; +}; + +int main(int argc, char **argv) { + Class1 c1; + Class2 c2; + //% self.expect("expr offsetof(Base, a)", substrs=["= 0"]) + //% self.expect("expr offsetof(Class1, b)", substrs=["= 4"]) + //% self.expect("expr offsetof(Class2, b)", substrs=["= 0"]) + return c1.b + c2.b; +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/operator-overload/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/operator-overload/Makefile index bd8116b91c3c471..80b3ee02c3e934f 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/operator-overload/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/operator-overload/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CXX_SOURCES = a.cpp b.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules a.o: a.cpp $(CC) $(CFLAGS_NO_DEBUG) -c $< -o $@ diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/TestCppOperators.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/TestCppOperators.py new file mode 100644 index 000000000000000..c8308c16011e0cf --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/TestCppOperators.py @@ -0,0 +1,4 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals()) diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp new file mode 100644 index 000000000000000..892d0bae42af4bb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp @@ -0,0 +1,181 @@ +#include + +int side_effect = 0; + +struct B { int dummy = 2324; }; +struct C { + void *operator new(size_t size) { C* r = ::new C; r->custom_new = true; return r; } + void *operator new[](size_t size) { C* r = static_cast(std::malloc(size)); r->custom_new = true; return r; } + void operator delete(void *p) { std::free(p); side_effect = 1; } + void operator delete[](void *p) { std::free(p); side_effect = 2; } + + bool custom_new = false; + B b; + B* operator->() { return &b; } + int operator->*(int) { return 2; } + int operator+(int) { return 44; } + int operator+=(int) { return 42; } + int operator++(int) { return 123; } + int operator++() { return 1234; } + int operator-(int) { return 34; } + int operator-=(int) { return 32; } + int operator--() { return 321; } + int operator--(int) { return 4321; } + + int operator*(int) { return 51; } + int operator*=(int) { return 52; } + int operator%(int) { return 53; } + int operator%=(int) { return 54; } + int operator/(int) { return 55; } + int operator/=(int) { return 56; } + int operator^(int) { return 57; } + int operator^=(int) { return 58; } + + int operator|(int) { return 61; } + int operator|=(int) { return 62; } + int operator||(int) { return 63; } + int operator&(int) { return 64; } + int operator&=(int) { return 65; } + int operator&&(int) { return 66; } + + int operator~() { return 71; } + int operator!() { return 72; } + int operator!=(int) { return 73; } + int operator=(int) { return 74; } + int operator==(int) { return 75; } + + int operator<(int) { return 81; } + int operator<<(int) { return 82; } + int operator<=(int) { return 83; } + int operator<<=(int) { return 84; } + int operator>(int) { return 85; } + int operator>>(int) { return 86; } + int operator>=(int) { return 87; } + int operator>>=(int) { return 88; } + + int operator,(int) { return 2012; } + int operator&() { return 2013; } + + int operator()(int) { return 91; } + int operator[](int) { return 92; } + + operator int() { return 11; } + operator long() { return 12; } + + // Make sure this doesn't collide with + // the real operator int. + int operatorint() { return 13; } + int operatornew() { return 14; } +}; + +int main(int argc, char **argv) { + C c; + int result = c->dummy; + result = c->*4; + result += c+1; + result += c+=1; + result += c++; + result += ++c; + result += c-1; + result += c-=1; + result += c--; + result += --c; + + result += c * 4; + result += c *= 4; + result += c % 4; + result += c %= 4; + result += c / 4; + result += c /= 4; + result += c ^ 4; + result += c ^= 4; + + result += c | 4; + result += c |= 4; + result += c || 4; + result += c & 4; + result += c &= 4; + result += c && 4; + + result += ~c; + result += !c; + result += c!=1; + result += c=2; + result += c==2; + + result += c<2; + result += c<<2; + result += c<=2; + result += c<<=2; + result += c>2; + result += c>>2; + result += c>=2; + result += c>>=2; + + result += (c , 2); + result += &c; + + result += c(1); + result += c[1]; + + result += static_cast(c); + result += static_cast(c); + result += c.operatorint(); + result += c.operatornew(); + + C *c2 = new C(); + C *c3 = new C[3]; + + //% self.expect("expr c->dummy", endstr=" 2324\n") + //% self.expect("expr c->*2", endstr=" 2\n") + //% self.expect("expr c + 44", endstr=" 44\n") + //% self.expect("expr c += 42", endstr=" 42\n") + //% self.expect("expr c++", endstr=" 123\n") + //% self.expect("expr ++c", endstr=" 1234\n") + //% self.expect("expr c - 34", endstr=" 34\n") + //% self.expect("expr c -= 32", endstr=" 32\n") + //% self.expect("expr c--", endstr=" 4321\n") + //% self.expect("expr --c", endstr=" 321\n") + //% self.expect("expr c * 3", endstr=" 51\n") + //% self.expect("expr c *= 3", endstr=" 52\n") + //% self.expect("expr c % 3", endstr=" 53\n") + //% self.expect("expr c %= 3", endstr=" 54\n") + //% self.expect("expr c / 3", endstr=" 55\n") + //% self.expect("expr c /= 3", endstr=" 56\n") + //% self.expect("expr c ^ 3", endstr=" 57\n") + //% self.expect("expr c ^= 3", endstr=" 58\n") + //% self.expect("expr c | 3", endstr=" 61\n") + //% self.expect("expr c |= 3", endstr=" 62\n") + //% self.expect("expr c || 3", endstr=" 63\n") + //% self.expect("expr c & 3", endstr=" 64\n") + //% self.expect("expr c &= 3", endstr=" 65\n") + //% self.expect("expr c && 3", endstr=" 66\n") + //% self.expect("expr ~c", endstr=" 71\n") + //% self.expect("expr !c", endstr=" 72\n") + //% self.expect("expr c!=1", endstr=" 73\n") + //% self.expect("expr c=1", endstr=" 74\n") + //% self.expect("expr c==1", endstr=" 75\n") + //% self.expect("expr c<1", endstr=" 81\n") + //% self.expect("expr c<<1", endstr=" 82\n") + //% self.expect("expr c<=1", endstr=" 83\n") + //% self.expect("expr c<<=1", endstr=" 84\n") + //% self.expect("expr c>1", endstr=" 85\n") + //% self.expect("expr c>>1", endstr=" 86\n") + //% self.expect("expr c>=1", endstr=" 87\n") + //% self.expect("expr c>>=1", endstr=" 88\n") + //% self.expect("expr c,1", endstr=" 2012\n") + //% self.expect("expr &c", endstr=" 2013\n") + //% self.expect("expr c(1)", endstr=" 91\n") + //% self.expect("expr c[1]", endstr=" 92\n") + //% self.expect("expr static_cast(c)", endstr=" 11\n") + //% self.expect("expr static_cast(c)", endstr=" 12\n") + //% self.expect("expr c.operatorint()", endstr=" 13\n") + //% self.expect("expr c.operatornew()", endstr=" 14\n") + //% self.expect("expr (new C)->custom_new", endstr=" true\n") + //% self.expect("expr (new struct C[1])->custom_new", endstr=" true\n") + //% self.expect("expr delete c2; side_effect", endstr=" = 1\n") + //% self.expect("expr delete[] c3; side_effect", endstr=" = 2\n") + delete c2; + delete[] c3; + return 0; +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/overloaded-functions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/overloaded-functions/Makefile index a8d5c4eb026831e..1185ed0c1e891b1 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/overloaded-functions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/overloaded-functions/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp static-a.cpp static-b.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/rvalue-references/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/rvalue-references/Makefile index 3a1d8a57935090d..57ee6052ae9ce7d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/rvalue-references/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/rvalue-references/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CXXFLAGS += -std=c++11 -include $(LEVEL)/Makefile.rules \ No newline at end of file +include Makefile.rules \ No newline at end of file diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/scope/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/TestSignedTypes.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/TestSignedTypes.py index 2b67bb4c35e59b8..3bb415ebb59e708 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/TestSignedTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/signed_types/TestSignedTypes.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/static_members/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/static_members/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/static_members/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/static_members/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/static_methods/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/static_methods/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/static_methods/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/static_methods/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/Makefile index a42bb089d15a3b0..f96dd95399ee91e 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CXXFLAGS += -std=c++11 USE_LIBCPP := 1 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py index abd35acd15bbe3c..3d2e03219834c3c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py @@ -6,7 +6,6 @@ import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/Makefile index fe27980afe9bbc3..a4b03ae0aab2479 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS := -g -O0 clean: OBJECTS+=$(wildcard main.d.*) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestSTL.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestSTL.py index d11004e66d0a473..9f2965a2de1fa85 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestSTL.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestSTL.py @@ -6,8 +6,6 @@ import unittest2 -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestStdCXXDisassembly.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestStdCXXDisassembly.py index 23e94e9addc03b5..49aa16ce1060da1 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestStdCXXDisassembly.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/stl/TestStdCXXDisassembly.py @@ -7,11 +7,10 @@ import unittest2 import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil - +from lldbsuite.test.decorators import * class StdCXXDisassembleTestCase(TestBase): @@ -23,11 +22,8 @@ def setUp(self): # Find the line number to break inside main(). self.line = line_number('main.cpp', '// Set break point at this line.') - # rdar://problem/8504895 - # Crash while doing 'disassemble -n "-[NSNumber descriptionWithLocale:]" - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") + @skipIfWindows + @expectedFailureNetBSD def test_stdcxx_disasm(self): """Do 'disassemble' on each and every 'Code' symbol entry from the std c++ lib.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/symbols/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/symbols/Makefile deleted file mode 100644 index 99bfa7e03b479d8..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/symbols/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -LEVEL = ../../../make -CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/template-function/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/template-function/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/template-function/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/template-function/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/template/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/template/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/template/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/template/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/this/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/this/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/this/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/this/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/class-template-parameter-pack/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/Makefile similarity index 100% rename from lldb/packages/Python/lldbsuite/test/lang/cpp/class-template-parameter-pack/Makefile rename to lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/Makefile diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/TestThreadLocal.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/TestThreadLocal.py new file mode 100644 index 000000000000000..9f8ed89375eb510 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/TestThreadLocal.py @@ -0,0 +1,5 @@ +from lldbsuite.test import lldbinline +from lldbsuite.test import decorators + +lldbinline.MakeInlineTest(__file__, globals(), + lldbinline.expectedFailureAll(oslist=["windows", "linux"])) diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/main.cpp new file mode 100644 index 000000000000000..1855b7c5f34411c --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/thread_local/main.cpp @@ -0,0 +1,17 @@ +int storage = 45; +thread_local int tl_global_int = 123; +thread_local int *tl_global_ptr = &storage; + +int main(int argc, char **argv) { + //% self.expect("expr tl_local_int", error=True, substrs=["couldn't get the value of variable tl_local_int"]) + //% self.expect("expr *tl_local_ptr", error=True, substrs=["couldn't get the value of variable tl_local_ptr"]) + thread_local int tl_local_int = 321; + thread_local int *tl_local_ptr = nullptr; + tl_local_ptr = &tl_local_int; + tl_local_int++; + //% self.expect("expr tl_local_int + 1", substrs=["int", "= 323"]) + //% self.expect("expr *tl_local_ptr + 2", substrs=["int", "= 324"]) + //% self.expect("expr tl_global_int", substrs=["int", "= 123"]) + //% self.expect("expr *tl_global_ptr", substrs=["int", "= 45"]) + return 0; +} diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/TestTrivialABI.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/TestTrivialABI.py index 9c69da2ef12004d..9a203ef3a3088e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/TestTrivialABI.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/trivial_abi/TestTrivialABI.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/type_lookup/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/type_lookup/Makefile index 99bfa7e03b479d8..3d0b98f13f3d7be 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/type_lookup/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/type_lookup/Makefile @@ -1,3 +1,2 @@ -LEVEL = ../../../make CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile index 1476447db355e2b..bf443d855cef0e9 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS := -g -O0 -std=c++11 clean: OBJECTS+=$(wildcard main.d.*) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py index 1a50c9dfc69fa2b..b59e323894a9ecb 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unicode-literals/TestUnicodeLiterals.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unique-types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/unique-types/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/unique-types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unique-types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/TestUnsignedTypes.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/TestUnsignedTypes.py index 27b2a0b357af404..12055a970c0369f 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/TestUnsignedTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/unsigned_types/TestUnsignedTypes.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual-overload/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual-overload/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual-overload/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py index c91da34a838b3bd..3f3f92416cbade5 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py @@ -5,7 +5,6 @@ from __future__ import print_function import os -import time import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/Makefile b/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/Makefile index fe27980afe9bbc3..a4b03ae0aab2479 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp CFLAGS := -g -O0 clean: OBJECTS+=$(wildcard main.d.*) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/TestCxxWCharT.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/TestCxxWCharT.py index f31ba9b5c8b4f22..21093298da025a3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/TestCxxWCharT.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/wchar_t/TestCxxWCharT.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/lang/mixed/Makefile b/lldb/packages/Python/lldbsuite/test/lang/mixed/Makefile index 860343ee907ccf5..12db32c506f5323 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/mixed/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/mixed/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - CXX_SOURCES := foo.cpp C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/mixed/TestMixedLanguages.py b/lldb/packages/Python/lldbsuite/test/lang/mixed/TestMixedLanguages.py index a69e8a7aa1f976a..d015413f5880e67 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/mixed/TestMixedLanguages.py +++ b/lldb/packages/Python/lldbsuite/test/lang/mixed/TestMixedLanguages.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/Makefile index 0af83591826f12f..48c06c712cdb2a6 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := ivars-in-blocks.m main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py b/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py index d2798d601f78d62..3e549f7b46c010a 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Makefile index 346fc4b1fbc5b46..e079ba94e38293a 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - LD_EXTRAS = -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules all: a.out diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Test/Test.mk b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Test/Test.mk index be758ac07d85d18..7c36e32ac9d4a1d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Test/Test.mk +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/Test/Test.mk @@ -1,5 +1,3 @@ -LEVEL = ../../../make - DYLIB_NAME := Test DYLIB_ONLY := YES CFLAGS_EXTRAS = -I$(SRCDIR)/.. @@ -7,4 +5,4 @@ LD_EXTRAS = -lobjc -framework Foundation DYLIB_OBJC_SOURCES = Test/Test.m -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestConflictingDefinition.py b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestConflictingDefinition.py index 264a17c379601d4..8813d66d0721ee3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestConflictingDefinition.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestConflictingDefinition.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestExt/TestExt.mk b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestExt/TestExt.mk index 285d7262ce82e09..5455a856e502d65 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestExt/TestExt.mk +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/conflicting-definition/TestExt/TestExt.mk @@ -1,5 +1,3 @@ -LEVEL = ../../../make - DYLIB_NAME := TestExt DYLIB_ONLY := YES CFLAGS_EXTRAS = -I$(SRCDIR)/.. @@ -7,4 +5,4 @@ LD_EXTRAS = -L. -lTest -lobjc -framework Foundation DYLIB_OBJC_SOURCES = TestExt/TestExt.m -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/Makefile index 261658b10ae8a48..377a1a0373a0d13 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/exceptions/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/Makefile index b99925b50b38a05..b9d3a985fbe9b1f 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - DYLIB_NAME := Container DYLIB_OBJC_SOURCES := Container.m OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/TestForwardDecl.py b/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/TestForwardDecl.py index 218d73c72fdb712..1f1e36acbe4d3bc 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/TestForwardDecl.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/forward-decl/TestForwardDecl.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/Makefile index ce2ccd28321d36d..38ef76b8d5852ea 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m my-base.m #OBJC_SOURCES := const-strings.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestConstStrings.py b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestConstStrings.py index 95c5575385c5403..fb946acd7b46654 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestConstStrings.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestConstStrings.py @@ -6,8 +6,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestFoundationDisassembly.py b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestFoundationDisassembly.py index 345e41b2b04ea21..329407d448a2d90 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestFoundationDisassembly.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestFoundationDisassembly.py @@ -2,12 +2,8 @@ Test the lldb disassemble command on foundation framework. """ -from __future__ import print_function - - import unittest2 import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -19,11 +15,6 @@ class FoundationDisassembleTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) - # rdar://problem/8504895 - # Crash while doing 'disassemble -n "-[NSNumber descriptionWithLocale:]" - @unittest2.skipIf( - TestBase.skipLongRunningTest(), - "Skip this long running test") def test_foundation_disasm(self): """Do 'disassemble -n func' on each and every 'Code' symbol entry from the Foundation.framework.""" self.build() @@ -42,7 +33,6 @@ def test_foundation_disasm(self): foundation_framework = None for module in target.modules: - print(module) if module.file.basename == "Foundation": foundation_framework = module.file.fullpath break @@ -67,8 +57,7 @@ def test_foundation_disasm(self): match = codeRE.search(line) if match: func = match.group(1) - #print("line:", line) - #print("func:", func) + self.runCmd('image lookup -s "%s"' % func) self.runCmd('disassemble -n "%s"' % func) def test_simple_disasm(self): @@ -79,10 +68,6 @@ def test_simple_disasm(self): target = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) self.assertTrue(target, VALID_TARGET) - print(target) - for module in target.modules: - print(module) - # Stop at +[NSString stringWithFormat:]. symbol_name = "+[NSString stringWithFormat:]" break_results = lldbutil.run_break_set_command( diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods.py b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods.py index dd53407fa44d3d4..85d34c3d5006217 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods.py @@ -8,9 +8,7 @@ import os import os.path -import time import lldb -import string from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjectDescriptionAPI.py b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjectDescriptionAPI.py index 82e08584702f4c5..803cbfe1218c204 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjectDescriptionAPI.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjectDescriptionAPI.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestRuntimeTypes.py b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestRuntimeTypes.py index c52ac8c2e6d028d..d23428e7fca4006 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestRuntimeTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestRuntimeTypes.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestSymbolTable.py b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestSymbolTable.py index bfb9e0b4479d3e4..a199dfae950d38c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestSymbolTable.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/foundation/TestSymbolTable.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/Makefile index a1608fe5a664c9e..32d01e345df68ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/TestGlobalObjects.py b/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/TestGlobalObjects.py index dcabd72dd0c0ac2..7cc83300dbfb670 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/TestGlobalObjects.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/global_ptrs/TestGlobalObjects.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/Makefile index 1768d11ca279ccc..0664769456eff47 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - DYLIB_NAME := InternalDefiner DYLIB_OBJC_SOURCES := InternalDefiner.m OBJC_SOURCES := main.m LD_EXTRAS = -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/TestHiddenIvars.py b/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/TestHiddenIvars.py index 2fad51eefd570c9..ce62c6ae0c297c7 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/TestHiddenIvars.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/hidden-ivars/TestHiddenIvars.py @@ -4,9 +4,7 @@ import unittest2 -import os import subprocess -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/Makefile index f69da9a64be07fa..843400a08cfcead 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CC ?= clang ifeq "$(ARCH)" "" ARCH = x86_64 @@ -25,4 +23,4 @@ aout: clean:: rm -f myclass.o -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/TestObjCiVarIMP.py b/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/TestObjCiVarIMP.py index bffe5d15e940883..1fe4e84f5e8b3b4 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/TestObjCiVarIMP.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/ivar-IMP/TestObjCiVarIMP.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile index ca099e1e9611630..c6bd24d99ada4d1 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile @@ -1,6 +1,5 @@ -LEVEL = ../../../make OBJC_SOURCES := main.m CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py index 264631805ed2a8c..e2f546c88fdf5d8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py @@ -3,12 +3,8 @@ from __future__ import print_function -from distutils.version import StrictVersion import unittest2 -import os -import time import lldb -import platform from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/Makefile index 00cb9b6be34a4a0..d0aadc1af9e5875 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/Makefile @@ -1,3 +1,2 @@ -LEVEL = ../../../make OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/TestClangModulesCache.py b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/TestClangModulesCache.py index 0cff6916e7f102d..4d177b60ce52ec2 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/TestClangModulesCache.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-cache/TestClangModulesCache.py @@ -5,8 +5,6 @@ import unittest2 import os -import time -import platform import shutil import lldb diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile index b8462bc818caf22..c32d0fb655d06a3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m myModule.m -include $(LEVEL)/Makefile.rules +include Makefile.rules CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS) LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py index 7bde8fc96896039..63d0a36227bacf8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py @@ -4,8 +4,6 @@ import unittest2 -import platform -from distutils.version import StrictVersion from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile index 320e13ed5c5fbd4..78d1c67dec16797 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - C_SOURCES := myModule.c OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS) -I$(PWD) diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py index e9dbe6af864f196..6e9e4f7bd8d328c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py @@ -3,12 +3,8 @@ from __future__ import print_function -from distutils.version import StrictVersion import unittest2 -import os -import time -import platform import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/modules/Makefile index ad3cb3fadcde348..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py b/lldb/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py index 8f5c407000c8f91..336b61404405ecd 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules/TestObjCModules.py @@ -4,10 +4,6 @@ import unittest2 -import os -import time -import platform -from distutils.version import StrictVersion import lldb from lldbsuite.test.decorators import * @@ -60,6 +56,10 @@ def test_expr(self): "int", "4"]) + # Type lookup should still work and print something reasonable + # for types from the module. + self.expect("type lookup NSObject", substrs=["instanceMethod"]) + self.expect("expr string.length", VARIABLES_DISPLAYED_CORRECTLY, substrs=["NSUInteger", "5"]) diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/Makefile index 910d4943ef0549b..e8a4b0cc29c7bdf 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm LD_EXTRAS = -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/TestObjCXX.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/TestObjCXX.py index 996ec6ccdac85ef..f9df8302425de1f 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/TestObjCXX.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc++/TestObjCXX.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/Makefile index 7f7baeb3cf1cc6b..ad28ecfeb5d12a3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LD_EXTRAS = -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py index 7bba071922ce62f..6135bd9f6e89028 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py index 0aa831850198c17..9f82ee08ba1ed37 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/Makefile index a1608fe5a664c9e..32d01e345df68ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/TestObjCCheckers.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/TestObjCCheckers.py index 7c3bafaeb4e8324..8a7d4f6fbb7106a 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/TestObjCCheckers.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-checker/TestObjCCheckers.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/Makefile index c2d07910a6e8d99..e0c4678f5d90295 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := class.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/TestObjCClassMethod.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/TestObjCClassMethod.py index 8470d77db9b2483..46cddd635c0ccee 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/TestObjCClassMethod.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-class-method/TestObjCClassMethod.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/Makefile index dd909afba21bdd3..9ff3ce6e4a550ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LD_EXTRAS = -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py index 6e95b4fa4b967cf..b148cf9e2812350 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/Makefile index a981f4b9035ecae..8677e226556816c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := dynamic-value.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py index e9df6be81cdbdbe..e62ab67a8fbf479 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/Makefile index fdd3b5ebfa9e6e7..701fd53ab273d6d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := objc-ivar-offsets.m main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py index 6b928450ceaea92..53d84e9f2873aff 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/Makefile index b93a8a13379d88a..32c0f4aef4086f7 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation @@ -12,4 +10,4 @@ clean:: rm -f a.out.stripped rm -rf a.out.stripped.dSYM -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py index f5997eb389fd698..78b6f0e083d6d5c 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-new-syntax/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-new-syntax/Makefile index ad3cb3fadcde348..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-new-syntax/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-new-syntax/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/Makefile index aa6a7520525e496..9be48503826ae37 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m CFLAGS ?= -arch $(ARCH) -g -O2 LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/TestObjcOptimized.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/TestObjcOptimized.py index c7e012db1461d9e..3a8630b7a005558 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/TestObjcOptimized.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-optimized/TestObjcOptimized.py @@ -9,8 +9,6 @@ from __future__ import print_function -import os -import time import lldb import re diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/Makefile index a1608fe5a664c9e..32d01e345df68ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py index 2a9a5afc3503590..eb71dd062183866 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-runtime-ivars/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-runtime-ivars/Makefile index a1608fe5a664c9e..32d01e345df68ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-runtime-ivars/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-runtime-ivars/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/Makefile index 6c5492dade11c89..5ba751c1567e7b0 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - OBJC_SOURCES := static.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation @@ -13,4 +11,4 @@ clean:: rm -f a.out.stripped rm -rf $(wildcard *.dSYM) -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py index ed969414c12234c..9dae4468c670070 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/Makefile index a8e973f6d3b1ab0..1c9e629925f8178 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := static.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/TestObjCStaticMethod.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/TestObjCStaticMethod.py index 37b41cd13fda998..324bd098794ba23 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/TestObjCStaticMethod.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-static-method/TestObjCStaticMethod.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/Makefile index b097fe65fce7255..09e6a5ea3387d28 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := stepping-tests.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/TestObjCStepping.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/TestObjCStepping.py index 9e949dc627b2dff..bf80995b109d7c1 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/TestObjCStepping.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-stepping/TestObjCStepping.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/Makefile index c16802966cffa6f..1db77a61ecdd82d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := test.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/TestObjCStructArgument.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/TestObjCStructArgument.py index 4195f60cf60e8af..faf0661cca92369 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/TestObjCStructArgument.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-argument/TestObjCStructArgument.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/Makefile index c16802966cffa6f..1db77a61ecdd82d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := test.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/TestObjCStructReturn.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/TestObjCStructReturn.py index 6f6fd92992f9b60..3a29f1058c85de3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/TestObjCStructReturn.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-struct-return/TestObjCStructReturn.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/Makefile index c2d07910a6e8d99..e0c4678f5d90295 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := class.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/TestObjCSuper.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/TestObjCSuper.py index 5b10bc5b81d6576..399440f6a389eac 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/TestObjCSuper.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-super/TestObjCSuper.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/orderedset/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/orderedset/Makefile index a1608fe5a664c9e..32d01e345df68ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/orderedset/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/orderedset/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/Makefile index dba1065cd71405d..1d34d4ed2fff078 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := blocked.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/TestPrintObj.py b/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/TestPrintObj.py index 57a572c6bb4b5ee..9b3ec33db4e736d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/TestPrintObj.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/print-obj/TestPrintObj.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/Makefile index b05ff34b739b436..845553d5e3f2f3e 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/TestPtrRefsObjC.py b/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/TestPtrRefsObjC.py index 74d08f70cafa7f0..d46a48ed9b929c6 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/TestPtrRefsObjC.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/ptr_refs/TestPtrRefsObjC.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/Makefile index ad3cb3fadcde348..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py b/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py index 737b0dc328675f3..b8eb21c48a141fa 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/Makefile index ad3cb3fadcde348..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/TestRdar10967107.py b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/TestRdar10967107.py index ed60e5f98c2f577..cf4cf05678736c0 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/TestRdar10967107.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-10967107/TestRdar10967107.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/Makefile index ad3cb3fadcde348..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/TestRdar11355592.py b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/TestRdar11355592.py index 8619ce1ebd387fb..d4ab1b1fff672b4 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/TestRdar11355592.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-11355592/TestRdar11355592.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/Makefile index 385b557c9af0a61..919000e6402f131 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules ifneq (,$(findstring arm,$(ARCH))) LD_EXTRAS = -framework Foundation -framework UIKit diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/TestRdar12408181.py b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/TestRdar12408181.py index 00fffc8176abd43..af9714f042b483b 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/TestRdar12408181.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/rdar-12408181/TestRdar12408181.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/Makefile index 61cc3b3b6db8062..1b3732be2528e6d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := Bar.m Foo.m main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/TestRealDefinition.py b/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/TestRealDefinition.py index d4760079814a2b1..2595119a1eb1fec 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/TestRealDefinition.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/real-definition/TestRealDefinition.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/sample/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/sample/Makefile index a1608fe5a664c9e..32d01e345df68ae 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/sample/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/sample/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/self/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/self/Makefile index bdae30428be4903..644046c69eac6d8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/self/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/self/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m LD_EXTRAS ?= -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/Makefile index ad3cb3fadcde348..7202932571dc3e8 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - OBJC_SOURCES := main.m -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py b/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py index 21f0892044ad0ea..7e712961cd799d3 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py @@ -4,11 +4,7 @@ import unittest2 -import os -import time -import platform -from distutils.version import StrictVersion import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile index 579600704dcdfd5..bae88debbb1b887 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objcxx/class-name-clash/Makefile @@ -1,7 +1,10 @@ -LEVEL = ../../../make OBJCXX_SOURCES := main.mm myobject.mm -include $(LEVEL)/Makefile.rules +include Makefile.rules +CFLAGS_NO_DEBUG = +ifeq "$(OS)" "Darwin" + CFLAGS_NO_DEBUG += -arch $(ARCH) +endif # myobject.o needs to be built without debug info myobject.o: myobject.mm - $(CXX) -c -o $@ $< + $(CXX) $(CFLAGS_NO_DEBUG) -c -o $@ $< diff --git a/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile index c258c4de49ec8b8..7423b54218a5257 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objcxx/cxx-bridged-po/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm LDFLAGS = $(CFLAGS) -lobjc -framework CoreFoundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile index edd3430de7c87e7..c0b4b1a3470aa82 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py b/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py index 5fe14fe5e5a35ae..3ba8e0824fa85da 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py @@ -2,7 +2,6 @@ from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * import lldbsuite.test.lldbutil as lldbutil -import os import unittest2 diff --git a/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile b/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile index edd3430de7c87e7..c0b4b1a3470aa82 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile +++ b/lldb/packages/Python/lldbsuite/test/lang/objcxx/sample/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - OBJCXX_SOURCES := main.mm LDFLAGS = $(CFLAGS) -lobjc -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/linux/add-symbols/Makefile b/lldb/packages/Python/lldbsuite/test/linux/add-symbols/Makefile index 71a5c11a83d135f..fa3eadef65f569c 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/add-symbols/Makefile +++ b/lldb/packages/Python/lldbsuite/test/linux/add-symbols/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../make CXX_SOURCES := main.cpp LD_EXTRAS += -Wl,--build-id=none @@ -10,4 +9,4 @@ stripped.out : a.out clean:: $(RM) stripped.out -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/linux/add-symbols/TestTargetSymbolsAddCommand.py b/lldb/packages/Python/lldbsuite/test/linux/add-symbols/TestTargetSymbolsAddCommand.py index 946c151bb8faf8d..33975d2583d5ca0 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/add-symbols/TestTargetSymbolsAddCommand.py +++ b/lldb/packages/Python/lldbsuite/test/linux/add-symbols/TestTargetSymbolsAddCommand.py @@ -1,8 +1,5 @@ """ Testing explicit symbol loading via target symbols add. """ -import os -import time import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile b/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile +++ b/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py b/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py index 7ffc29fd49816c2..951f59e611e2f79 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py +++ b/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py @@ -6,7 +6,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/Makefile b/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/Makefile index 7cfad32f8272ce5..169460598a25c56 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/Makefile +++ b/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/Makefile @@ -1,9 +1,7 @@ -LEVEL := ../../make - C_SOURCES := a.c b.c a.o: CFLAGS_EXTRAS += -gsplit-dwarf -include $(LEVEL)/Makefile.rules +include Makefile.rules .PHONY: clean clean:: diff --git a/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py b/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py index db91c39c39838f8..6d5dcc7cfe64079 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py +++ b/lldb/packages/Python/lldbsuite/test/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py @@ -1,7 +1,5 @@ """ Testing debugging of a binary with "mixed" dwarf (with/without fission). """ -import os import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile b/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile index 3fd14a74bf36069..a290c8c6f2e8077 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile +++ b/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile @@ -1,4 +1,3 @@ -LEVEL = ../../make C_SOURCES := main.c all: dirsymlink @@ -17,4 +16,4 @@ dirsymlink: dirreal clean:: $(RM) -r dirreal dirsymlink -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py b/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py index 12506811c5e21ac..7338332dcfc4d35 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py +++ b/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py @@ -1,8 +1,5 @@ """ Testing separate debug info loading for base binary with a symlink. """ -import os -import time import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/Makefile b/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/Makefile index 67aa16625bff423..566938ca0cc4e14 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/Makefile +++ b/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp ENABLE_THREADS := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py b/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py index 702d124834b2ea4..792dab443cbecf2 100644 --- a/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py +++ b/lldb/packages/Python/lldbsuite/test/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py @@ -6,7 +6,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/lldbcurses.py b/lldb/packages/Python/lldbsuite/test/lldbcurses.py deleted file mode 100644 index ae0082ce9b7f11e..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/lldbcurses.py +++ /dev/null @@ -1,1308 +0,0 @@ -from __future__ import absolute_import - -# System modules -import curses -import curses.panel -import sys -import time - -# Third-party modules -import six - -# LLDB modules - - -class Point(object): - - def __init__(self, x, y): - self.x = x - self.y = y - - def __repr__(self): - return str(self) - - def __str__(self): - return "(x=%u, y=%u)" % (self.x, self.y) - - def __eq__(self, rhs): - return self.x == rhs.x and self.y == rhs.y - - def __ne__(self, rhs): - return self.x != rhs.x or self.y != rhs.y - - def is_valid_coordinate(self): - return self.x >= 0 and self.y >= 0 - - -class Size(object): - - def __init__(self, w, h): - self.w = w - self.h = h - - def __repr__(self): - return str(self) - - def __str__(self): - return "(w=%u, h=%u)" % (self.w, self.h) - - def __eq__(self, rhs): - return self.w == rhs.w and self.h == rhs.h - - def __ne__(self, rhs): - return self.w != rhs.w or self.h != rhs.h - - -class Rect(object): - - def __init__(self, x=0, y=0, w=0, h=0): - self.origin = Point(x, y) - self.size = Size(w, h) - - def __repr__(self): - return str(self) - - def __str__(self): - return "{ %s, %s }" % (str(self.origin), str(self.size)) - - def get_min_x(self): - return self.origin.x - - def get_max_x(self): - return self.origin.x + self.size.w - - def get_min_y(self): - return self.origin.y - - def get_max_y(self): - return self.origin.y + self.size.h - - def contains_point(self, pt): - if pt.x < self.get_max_x(): - if pt.y < self.get_max_y(): - if pt.x >= self.get_min_y(): - return pt.y >= self.get_min_y() - return False - - def __eq__(self, rhs): - return self.origin == rhs.origin and self.size == rhs.size - - def __ne__(self, rhs): - return self.origin != rhs.origin or self.size != rhs.size - - -class QuitException(Exception): - - def __init__(self): - super(QuitException, self).__init__('QuitException') - - -class Window(object): - - def __init__(self, window, delegate=None, can_become_first_responder=True): - self.window = window - self.parent = None - self.delegate = delegate - self.children = list() - self.first_responders = list() - self.can_become_first_responder = can_become_first_responder - self.key_actions = dict() - - def add_child(self, window): - self.children.append(window) - window.parent = self - - def resize(self, size): - self.window.resize(size.h, size.w) - - def resize_child(self, child, delta_size, adjust_neighbors): - if child in self.children: - frame = self.get_frame() - orig_frame = child.get_frame() - new_frame = Rect( - x=orig_frame.origin.x, - y=orig_frame.origin.y, - w=orig_frame.size.w + - delta_size.w, - h=orig_frame.size.h + - delta_size.h) - old_child_max_x = orig_frame.get_max_x() - new_child_max_x = new_frame.get_max_x() - window_max_x = frame.get_max_x() - if new_child_max_x < window_max_x: - child.resize(new_frame.size) - if old_child_max_x == window_max_x: - new_frame.origin.x += window_max_x - new_child_max_x - child.set_position(new_frame.origin) - elif new_child_max_x > window_max_x: - new_frame.origin.x -= new_child_max_x - window_max_x - child.set_position(new_frame.origin) - child.resize(new_frame.size) - - if adjust_neighbors: - #print('orig_frame = %s\r\n' % (str(orig_frame)), end='') - for curr_child in self.children: - if curr_child is child: - continue - curr_child_frame = curr_child.get_frame() - if delta_size.w != 0: - #print('curr_child_frame = %s\r\n' % (str(curr_child_frame)), end='') - if curr_child_frame.get_min_x() == orig_frame.get_max_x(): - curr_child_frame.origin.x += delta_size.w - curr_child_frame.size.w -= delta_size.w - #print('adjusted curr_child_frame = %s\r\n' % (str(curr_child_frame)), end='') - curr_child.resize(curr_child_frame.size) - curr_child.slide_position( - Size(w=delta_size.w, h=0)) - elif curr_child_frame.get_max_x() == orig_frame.get_min_x(): - curr_child_frame.size.w -= delta_size.w - #print('adjusted curr_child_frame = %s\r\n' % (str(curr_child_frame)), end='') - curr_child.resize(curr_child_frame.size) - - def add_key_action(self, arg, callback, decription): - if isinstance(arg, list): - for key in arg: - self.add_key_action(key, callback, description) - else: - if isinstance(arg, six.integer_types): - key_action_dict = {'key': arg, - 'callback': callback, - 'description': decription} - self.key_actions[arg] = key_action_dict - elif isinstance(arg, basestring): - key_integer = ord(arg) - key_action_dict = {'key': key_integer, - 'callback': callback, - 'description': decription} - self.key_actions[key_integer] = key_action_dict - else: - raise ValueError - - def draw_title_box(self, title): - is_in_first_responder_chain = self.is_in_first_responder_chain() - if is_in_first_responder_chain: - self.attron(curses.A_REVERSE) - self.box() - if is_in_first_responder_chain: - self.attroff(curses.A_REVERSE) - if title: - self.addstr(Point(x=2, y=0), ' ' + title + ' ') - - def remove_child(self, window): - self.children.remove(window) - - def get_first_responder(self): - if len(self.first_responders): - return self.first_responders[-1] - else: - return None - - def set_first_responder(self, window): - if window.can_become_first_responder: - if six.callable( - getattr( - window, - "hidden", - None)) and window.hidden(): - return False - if window not in self.children: - self.add_child(window) - # See if we have a current first responder, and if we do, let it know that - # it will be resigning as first responder - first_responder = self.get_first_responder() - if first_responder: - first_responder.relinquish_first_responder() - # Now set the first responder to "window" - if len(self.first_responders) == 0: - self.first_responders.append(window) - else: - self.first_responders[-1] = window - return True - else: - return False - - def push_first_responder(self, window): - # Only push the window as the new first responder if the window isn't - # already the first responder - if window != self.get_first_responder(): - self.first_responders.append(window) - - def pop_first_responder(self, window): - # Only pop the window from the first responder list if it is the first - # responder - if window == self.get_first_responder(): - old_first_responder = self.first_responders.pop() - old_first_responder.relinquish_first_responder() - return True - else: - return False - - def relinquish_first_responder(self): - '''Override if there is something that you need to do when you lose first responder status.''' - pass - - # def resign_first_responder(self, remove_from_parent, new_first_responder): - # success = False - # if self.parent: - # if self.is_first_responder(): - # self.relinquish_first_responder() - # if len(self.parent.first_responder): - # self.parent.first_responder = None - # success = True - # if remove_from_parent: - # self.parent.remove_child(self) - # if new_first_responder: - # self.parent.set_first_responder(new_first_responder) - # else: - # self.parent.select_next_first_responder() - # return success - - def is_first_responder(self): - if self.parent: - return self.parent.get_first_responder() == self - else: - return False - - def is_in_first_responder_chain(self): - if self.parent: - return self in self.parent.first_responders - else: - return False - - def select_next_first_responder(self): - if len(self.first_responders) > 1: - self.pop_first_responder(self.first_responders[-1]) - else: - num_children = len(self.children) - if num_children == 1: - return self.set_first_responder(self.children[0]) - for (i, window) in enumerate(self.children): - if window.is_first_responder(): - break - if i < num_children: - for i in range(i + 1, num_children): - if self.set_first_responder(self.children[i]): - return True - for i in range(0, i): - if self.set_first_responder(self.children[i]): - return True - - def point_in_window(self, pt): - size = self.get_size() - return pt.x >= 0 and pt.x < size.w and pt.y >= 0 and pt.y < size.h - - def addch(self, c): - try: - self.window.addch(c) - except: - pass - - def addch_at_point(self, pt, c): - try: - self.window.addch(pt.y, pt.x, c) - except: - pass - - def addstr(self, pt, str): - try: - self.window.addstr(pt.y, pt.x, str) - except: - pass - - def addnstr_at_point(self, pt, str, n): - try: - self.window.addnstr(pt.y, pt.x, str, n) - except: - pass - - def addnstr(self, str, n): - try: - self.window.addnstr(str, n) - except: - pass - - def attron(self, attr): - return self.window.attron(attr) - - def attroff(self, attr): - return self.window.attroff(attr) - - def box(self, vertch=0, horch=0): - if vertch == 0: - vertch = curses.ACS_VLINE - if horch == 0: - horch = curses.ACS_HLINE - self.window.box(vertch, horch) - - def get_contained_rect( - self, - top_inset=0, - bottom_inset=0, - left_inset=0, - right_inset=0, - height=-1, - width=-1): - '''Get a rectangle based on the top "height" lines of this window''' - rect = self.get_frame() - x = rect.origin.x + left_inset - y = rect.origin.y + top_inset - if height == -1: - h = rect.size.h - (top_inset + bottom_inset) - else: - h = height - if width == -1: - w = rect.size.w - (left_inset + right_inset) - else: - w = width - return Rect(x=x, y=y, w=w, h=h) - - def erase(self): - self.window.erase() - - def get_cursor(self): - (y, x) = self.window.getyx() - return Point(x=x, y=y) - - def get_frame(self): - position = self.get_position() - size = self.get_size() - return Rect(x=position.x, y=position.y, w=size.w, h=size.h) - - def get_frame_in_parent(self): - position = self.get_position_in_parent() - size = self.get_size() - return Rect(x=position.x, y=position.y, w=size.w, h=size.h) - - def get_position_in_parent(self): - (y, x) = self.window.getparyx() - return Point(x, y) - - def get_position(self): - (y, x) = self.window.getbegyx() - return Point(x, y) - - def get_size(self): - (y, x) = self.window.getmaxyx() - return Size(w=x, h=y) - - def move(self, pt): - self.window.move(pt.y, pt.x) - - def refresh(self): - self.update() - curses.panel.update_panels() - self.move(Point(x=0, y=0)) - return self.window.refresh() - - def resize(self, size): - return self.window.resize(size.h, size.w) - - def timeout(self, timeout_msec): - return self.window.timeout(timeout_msec) - - def handle_key(self, key, check_parent=True): - '''Handle a key press in this window.''' - - # First try the first responder if this window has one, but don't allow - # it to check with its parent (False second parameter) so we don't recurse - # and get a stack overflow - for first_responder in reversed(self.first_responders): - if first_responder.handle_key(key, False): - return True - - # Check our key map to see if we have any actions. Actions don't take - # any arguments, they must be callable - if key in self.key_actions: - key_action = self.key_actions[key] - key_action['callback']() - return True - # Check if there is a wildcard key for any key - if -1 in self.key_actions: - key_action = self.key_actions[-1] - key_action['callback']() - return True - # Check if the window delegate wants to handle this key press - if self.delegate: - if six.callable(getattr(self.delegate, "handle_key", None)): - if self.delegate.handle_key(self, key): - return True - if self.delegate(self, key): - return True - # Check if we have a parent window and if so, let the parent - # window handle the key press - if check_parent and self.parent: - return self.parent.handle_key(key, True) - else: - return False # Key not handled - - def update(self): - for child in self.children: - child.update() - - def quit_action(self): - raise QuitException - - def get_key(self, timeout_msec=-1): - self.timeout(timeout_msec) - done = False - c = self.window.getch() - if c == 27: - self.timeout(0) - escape_key = 0 - while True: - escape_key = self.window.getch() - if escape_key == -1: - break - else: - c = c << 8 | escape_key - self.timeout(timeout_msec) - return c - - def key_event_loop(self, timeout_msec=-1, n=sys.maxsize): - '''Run an event loop to receive key presses and pass them along to the - responder chain. - - timeout_msec is the timeout it milliseconds. If the value is -1, an - infinite wait will be used. It the value is zero, a non-blocking mode - will be used, and if greater than zero it will wait for a key press - for timeout_msec milliseconds. - - n is the number of times to go through the event loop before exiting''' - done = False - while not done and n > 0: - c = self.get_key(timeout_msec) - if c != -1: - try: - self.handle_key(c) - except QuitException: - done = True - n -= 1 - - -class Panel(Window): - - def __init__(self, frame, delegate=None, can_become_first_responder=True): - window = curses.newwin( - frame.size.h, - frame.size.w, - frame.origin.y, - frame.origin.x) - super( - Panel, - self).__init__( - window, - delegate, - can_become_first_responder) - self.panel = curses.panel.new_panel(window) - - def hide(self): - return self.panel.hide() - - def hidden(self): - return self.panel.hidden() - - def show(self): - return self.panel.show() - - def top(self): - return self.panel.top() - - def set_position(self, pt): - self.panel.move(pt.y, pt.x) - - def slide_position(self, size): - new_position = self.get_position() - new_position.x = new_position.x + size.w - new_position.y = new_position.y + size.h - self.set_position(new_position) - - -class BoxedPanel(Panel): - - def __init__(self, frame, title, delegate=None, - can_become_first_responder=True): - super( - BoxedPanel, - self).__init__( - frame, - delegate, - can_become_first_responder) - self.title = title - self.lines = list() - self.first_visible_idx = 0 - self.selected_idx = -1 - self.add_key_action( - curses.KEY_UP, - self.select_prev, - "Select the previous item") - self.add_key_action( - curses.KEY_DOWN, - self.select_next, - "Select the next item") - self.add_key_action( - curses.KEY_HOME, - self.scroll_begin, - "Go to the beginning of the list") - self.add_key_action( - curses.KEY_END, - self.scroll_end, - "Go to the end of the list") - self.add_key_action( - 0x1b4f48, - self.scroll_begin, - "Go to the beginning of the list") - self.add_key_action( - 0x1b4f46, - self.scroll_end, - "Go to the end of the list") - self.add_key_action( - curses.KEY_PPAGE, - self.scroll_page_backward, - "Scroll to previous page") - self.add_key_action( - curses.KEY_NPAGE, - self.scroll_page_forward, - "Scroll to next forward") - self.update() - - def clear(self, update=True): - self.lines = list() - self.first_visible_idx = 0 - self.selected_idx = -1 - if update: - self.update() - - def get_usable_width(self): - '''Valid usable width is 0 to (width - 3) since the left and right lines display the box around - this frame and we skip a leading space''' - w = self.get_size().w - if w > 3: - return w - 3 - else: - return 0 - - def get_usable_height(self): - '''Valid line indexes are 0 to (height - 2) since the top and bottom lines display the box around this frame.''' - h = self.get_size().h - if h > 2: - return h - 2 - else: - return 0 - - def get_point_for_line(self, global_line_idx): - '''Returns the point to use when displaying a line whose index is "line_idx"''' - line_idx = global_line_idx - self.first_visible_idx - num_lines = self.get_usable_height() - if line_idx < num_lines: - return Point(x=2, y=1 + line_idx) - else: - # return an invalid coordinate if the line index isn't valid - return Point(x=-1, y=-1) - - def set_title(self, title, update=True): - self.title = title - if update: - self.update() - - def scroll_to_line(self, idx): - if idx < len(self.lines): - self.selected_idx = idx - max_visible_lines = self.get_usable_height() - if idx < self.first_visible_idx or idx >= self.first_visible_idx + max_visible_lines: - self.first_visible_idx = idx - self.refresh() - - def scroll_begin(self): - self.first_visible_idx = 0 - if len(self.lines) > 0: - self.selected_idx = 0 - else: - self.selected_idx = -1 - self.update() - - def scroll_end(self): - max_visible_lines = self.get_usable_height() - num_lines = len(self.lines) - if num_lines > max_visible_lines: - self.first_visible_idx = num_lines - max_visible_lines - else: - self.first_visible_idx = 0 - self.selected_idx = num_lines - 1 - self.update() - - def scroll_page_backward(self): - num_lines = len(self.lines) - max_visible_lines = self.get_usable_height() - new_index = self.first_visible_idx - max_visible_lines - if new_index < 0: - self.first_visible_idx = 0 - else: - self.first_visible_idx = new_index - self.refresh() - - def scroll_page_forward(self): - max_visible_lines = self.get_usable_height() - self.first_visible_idx += max_visible_lines - self._adjust_first_visible_line() - self.refresh() - - def select_next(self): - self.selected_idx += 1 - if self.selected_idx >= len(self.lines): - self.selected_idx = len(self.lines) - 1 - self.refresh() - - def select_prev(self): - self.selected_idx -= 1 - if self.selected_idx < 0: - if len(self.lines) > 0: - self.selected_idx = 0 - else: - self.selected_idx = -1 - self.refresh() - - def get_selected_idx(self): - return self.selected_idx - - def _adjust_first_visible_line(self): - num_lines = len(self.lines) - max_visible_lines = self.get_usable_height() - if (self.first_visible_idx >= num_lines) or ( - num_lines - self.first_visible_idx) > max_visible_lines: - self.first_visible_idx = num_lines - max_visible_lines - - def append_line(self, s, update=True): - self.lines.append(s) - self._adjust_first_visible_line() - if update: - self.update() - - def set_line(self, line_idx, s, update=True): - '''Sets a line "line_idx" within the boxed panel to be "s"''' - if line_idx < 0: - return - while line_idx >= len(self.lines): - self.lines.append('') - self.lines[line_idx] = s - self._adjust_first_visible_line() - if update: - self.update() - - def update(self): - self.erase() - self.draw_title_box(self.title) - max_width = self.get_usable_width() - for line_idx in range(self.first_visible_idx, len(self.lines)): - pt = self.get_point_for_line(line_idx) - if pt.is_valid_coordinate(): - is_selected = line_idx == self.selected_idx - if is_selected: - self.attron(curses.A_REVERSE) - self.move(pt) - self.addnstr(self.lines[line_idx], max_width) - if is_selected: - self.attroff(curses.A_REVERSE) - else: - return - - def load_file(self, path): - f = open(path) - if f: - self.lines = f.read().splitlines() - for (idx, line) in enumerate(self.lines): - # Remove any tabs from lines since they hose up the display - if "\t" in line: - self.lines[idx] = (8 * ' ').join(line.split('\t')) - self.selected_idx = 0 - self.first_visible_idx = 0 - self.refresh() - - -class Item(object): - - def __init__(self, title, action): - self.title = title - self.action = action - - -class TreeItemDelegate(object): - - def might_have_children(self): - return False - - def update_children(self, item): - '''Return a list of child Item objects''' - return None - - def draw_item_string(self, tree_window, item, s): - pt = tree_window.get_cursor() - width = tree_window.get_size().w - 1 - if width > pt.x: - tree_window.addnstr(s, width - pt.x) - - def draw_item(self, tree_window, item): - self.draw_item_string(tree_window, item, item.title) - - def do_action(self): - pass - - -class TreeItem(object): - - def __init__( - self, - delegate, - parent=None, - title=None, - action=None, - is_expanded=False): - self.parent = parent - self.title = title - self.action = action - self.delegate = delegate - self.is_expanded = not parent or is_expanded - self._might_have_children = None - self.children = None - self._children_might_have_children = False - - def get_children(self): - if self.is_expanded and self.might_have_children(): - if self.children is None: - self._children_might_have_children = False - self.children = self.update_children() - for child in self.children: - if child.might_have_children(): - self._children_might_have_children = True - break - else: - self._children_might_have_children = False - self.children = None - return self.children - - def append_visible_items(self, items): - items.append(self) - children = self.get_children() - if children: - for child in children: - child.append_visible_items(items) - - def might_have_children(self): - if self._might_have_children is None: - if not self.parent: - # Root item always might have children - self._might_have_children = True - else: - # Check with the delegate to see if the item might have - # children - self._might_have_children = self.delegate.might_have_children() - return self._might_have_children - - def children_might_have_children(self): - return self._children_might_have_children - - def update_children(self): - if self.is_expanded and self.might_have_children(): - self.children = self.delegate.update_children(self) - for child in self.children: - child.update_children() - else: - self.children = None - return self.children - - def get_num_visible_rows(self): - rows = 1 - if self.is_expanded: - children = self.get_children() - if children: - for child in children: - rows += child.get_num_visible_rows() - return rows - - def draw(self, tree_window, row): - display_row = tree_window.get_display_row(row) - if display_row >= 0: - tree_window.move(tree_window.get_item_draw_point(row)) - if self.parent: - self.parent.draw_tree_for_child(tree_window, self, 0) - if self.might_have_children(): - tree_window.addch(curses.ACS_DIAMOND) - tree_window.addch(curses.ACS_HLINE) - elif self.parent and self.parent.children_might_have_children(): - if self.parent.parent: - tree_window.addch(curses.ACS_HLINE) - tree_window.addch(curses.ACS_HLINE) - else: - tree_window.addch(' ') - tree_window.addch(' ') - is_selected = tree_window.is_selected(row) - if is_selected: - tree_window.attron(curses.A_REVERSE) - self.delegate.draw_item(tree_window, self) - if is_selected: - tree_window.attroff(curses.A_REVERSE) - - def draw_tree_for_child(self, tree_window, child, reverse_depth): - if self.parent: - self.parent.draw_tree_for_child( - tree_window, self, reverse_depth + 1) - if self.children[-1] == child: - # Last child - if reverse_depth == 0: - tree_window.addch(curses.ACS_LLCORNER) - tree_window.addch(curses.ACS_HLINE) - else: - tree_window.addch(' ') - tree_window.addch(' ') - else: - # Middle child - if reverse_depth == 0: - tree_window.addch(curses.ACS_LTEE) - tree_window.addch(curses.ACS_HLINE) - else: - tree_window.addch(curses.ACS_VLINE) - tree_window.addch(' ') - - def was_selected(self): - self.delegate.do_action() - - -class TreePanel(Panel): - - def __init__(self, frame, title, root_item): - self.root_item = root_item - self.title = title - self.first_visible_idx = 0 - self.selected_idx = 0 - self.items = None - super(TreePanel, self).__init__(frame) - self.add_key_action( - curses.KEY_UP, - self.select_prev, - "Select the previous item") - self.add_key_action( - curses.KEY_DOWN, - self.select_next, - "Select the next item") - self.add_key_action( - curses.KEY_RIGHT, - self.right_arrow, - "Expand an item") - self.add_key_action( - curses.KEY_LEFT, - self.left_arrow, - "Unexpand an item or navigate to parent") - self.add_key_action( - curses.KEY_HOME, - self.scroll_begin, - "Go to the beginning of the tree") - self.add_key_action( - curses.KEY_END, - self.scroll_end, - "Go to the end of the tree") - self.add_key_action( - 0x1b4f48, - self.scroll_begin, - "Go to the beginning of the tree") - self.add_key_action( - 0x1b4f46, - self.scroll_end, - "Go to the end of the tree") - self.add_key_action( - curses.KEY_PPAGE, - self.scroll_page_backward, - "Scroll to previous page") - self.add_key_action( - curses.KEY_NPAGE, - self.scroll_page_forward, - "Scroll to next forward") - - def get_selected_item(self): - if self.selected_idx < len(self.items): - return self.items[self.selected_idx] - else: - return None - - def select_item(self, item): - if self.items and item in self.items: - self.selected_idx = self.items.index(item) - return True - else: - return False - - def get_visible_items(self): - # Clear self.items when you want to update all chidren - if self.items is None: - self.items = list() - children = self.root_item.get_children() - if children: - for child in children: - child.append_visible_items(self.items) - return self.items - - def update(self): - self.erase() - self.draw_title_box(self.title) - visible_items = self.get_visible_items() - for (row, child) in enumerate(visible_items): - child.draw(self, row) - - def get_item_draw_point(self, row): - display_row = self.get_display_row(row) - if display_row >= 0: - return Point(2, display_row + 1) - else: - return Point(-1, -1) - - def get_display_row(self, row): - if row >= self.first_visible_idx: - display_row = row - self.first_visible_idx - if display_row < self.get_size().h - 2: - return display_row - return -1 - - def is_selected(self, row): - return row == self.selected_idx - - def get_num_lines(self): - self.get_visible_items() - return len(self.items) - - def get_num_visible_lines(self): - return self.get_size().h - 2 - - def select_next(self): - self.selected_idx += 1 - num_lines = self.get_num_lines() - if self.selected_idx >= num_lines: - self.selected_idx = num_lines - 1 - self._selection_changed() - self.refresh() - - def select_prev(self): - self.selected_idx -= 1 - if self.selected_idx < 0: - num_lines = self.get_num_lines() - if num_lines > 0: - self.selected_idx = 0 - else: - self.selected_idx = -1 - self._selection_changed() - self.refresh() - - def scroll_begin(self): - self.first_visible_idx = 0 - num_lines = self.get_num_lines() - if num_lines > 0: - self.selected_idx = 0 - else: - self.selected_idx = -1 - self.refresh() - - def redisplay_tree(self): - self.items = None - self.refresh() - - def right_arrow(self): - selected_item = self.get_selected_item() - if selected_item and selected_item.is_expanded == False: - selected_item.is_expanded = True - self.redisplay_tree() - - def left_arrow(self): - selected_item = self.get_selected_item() - if selected_item: - if selected_item.is_expanded: - selected_item.is_expanded = False - self.redisplay_tree() - elif selected_item.parent: - if self.select_item(selected_item.parent): - self.refresh() - - def scroll_end(self): - num_visible_lines = self.get_num_visible_lines() - num_lines = self.get_num_lines() - if num_lines > num_visible_lines: - self.first_visible_idx = num_lines - num_visible_lines - else: - self.first_visible_idx = 0 - self.selected_idx = num_lines - 1 - self.refresh() - - def scroll_page_backward(self): - num_visible_lines = self.get_num_visible_lines() - new_index = self.selected_idx - num_visible_lines - if new_index < 0: - self.selected_idx = 0 - else: - self.selected_idx = new_index - self._selection_changed() - self.refresh() - - def scroll_page_forward(self): - num_lines = self.get_num_lines() - num_visible_lines = self.get_num_visible_lines() - new_index = self.selected_idx + num_visible_lines - if new_index >= num_lines: - new_index = num_lines - 1 - self.selected_idx = new_index - self._selection_changed() - self.refresh() - - def _selection_changed(self): - num_lines = self.get_num_lines() - num_visible_lines = self.get_num_visible_lines() - last_visible_index = self.first_visible_idx + num_visible_lines - if self.selected_idx >= last_visible_index: - self.first_visible_idx += (self.selected_idx - - last_visible_index + 1) - if self.selected_idx < self.first_visible_idx: - self.first_visible_idx = self.selected_idx - if self.selected_idx >= 0 and self.selected_idx < len(self.items): - item = self.items[self.selected_idx] - item.was_selected() - - -class Menu(BoxedPanel): - - def __init__(self, title, items): - max_title_width = 0 - for item in items: - if max_title_width < len(item.title): - max_title_width = len(item.title) - frame = Rect(x=0, y=0, w=max_title_width + 4, h=len(items) + 2) - super( - Menu, - self).__init__( - frame, - title=None, - delegate=None, - can_become_first_responder=True) - self.selected_idx = 0 - self.title = title - self.items = items - for (item_idx, item) in enumerate(items): - self.set_line(item_idx, item.title) - self.hide() - - def update(self): - super(Menu, self).update() - - def relinquish_first_responder(self): - if not self.hidden(): - self.hide() - - def perform_action(self): - selected_idx = self.get_selected_idx() - if selected_idx < len(self.items): - action = self.items[selected_idx].action - if action: - action() - - -class MenuBar(Panel): - - def __init__(self, frame): - super(MenuBar, self).__init__(frame, can_become_first_responder=True) - self.menus = list() - self.selected_menu_idx = -1 - self.add_key_action( - curses.KEY_LEFT, - self.select_prev, - "Select the previous menu") - self.add_key_action( - curses.KEY_RIGHT, - self.select_next, - "Select the next menu") - self.add_key_action( - curses.KEY_DOWN, - lambda: self.select(0), - "Select the first menu") - self.add_key_action( - 27, - self.relinquish_first_responder, - "Hide current menu") - self.add_key_action( - curses.KEY_ENTER, - self.perform_action, - "Select the next menu item") - self.add_key_action( - 10, - self.perform_action, - "Select the next menu item") - - def insert_menu(self, menu, index=sys.maxsize): - if index >= len(self.menus): - self.menus.append(menu) - else: - self.menus.insert(index, menu) - pt = self.get_position() - for menu in self.menus: - menu.set_position(pt) - pt.x += len(menu.title) + 5 - - def perform_action(self): - '''If no menu is visible, show the first menu. If a menu is visible, perform the action - associated with the selected menu item in the menu''' - menu_visible = False - for menu in self.menus: - if not menu.hidden(): - menu_visible = True - break - if menu_visible: - menu.perform_action() - self.selected_menu_idx = -1 - self._selected_menu_changed() - else: - self.select(0) - - def relinquish_first_responder(self): - if self.selected_menu_idx >= 0: - self.selected_menu_idx = -1 - self._selected_menu_changed() - - def _selected_menu_changed(self): - for (menu_idx, menu) in enumerate(self.menus): - is_hidden = menu.hidden() - if menu_idx != self.selected_menu_idx: - if not is_hidden: - if self.parent.pop_first_responder(menu) == False: - menu.hide() - for (menu_idx, menu) in enumerate(self.menus): - is_hidden = menu.hidden() - if menu_idx == self.selected_menu_idx: - if is_hidden: - menu.show() - self.parent.push_first_responder(menu) - menu.top() - self.parent.refresh() - - def select(self, index): - if index < len(self.menus): - self.selected_menu_idx = index - self._selected_menu_changed() - - def select_next(self): - num_menus = len(self.menus) - if self.selected_menu_idx == -1: - if num_menus > 0: - self.selected_menu_idx = 0 - self._selected_menu_changed() - else: - if self.selected_menu_idx + 1 < num_menus: - self.selected_menu_idx += 1 - else: - self.selected_menu_idx = -1 - self._selected_menu_changed() - - def select_prev(self): - num_menus = len(self.menus) - if self.selected_menu_idx == -1: - if num_menus > 0: - self.selected_menu_idx = num_menus - 1 - self._selected_menu_changed() - else: - if self.selected_menu_idx - 1 >= 0: - self.selected_menu_idx -= 1 - else: - self.selected_menu_idx = -1 - self._selected_menu_changed() - - def update(self): - self.erase() - is_in_first_responder_chain = self.is_in_first_responder_chain() - if is_in_first_responder_chain: - self.attron(curses.A_REVERSE) - pt = Point(x=0, y=0) - for menu in self.menus: - self.addstr(pt, '| ' + menu.title + ' ') - pt.x += len(menu.title) + 5 - self.addstr(pt, '|') - width = self.get_size().w - while pt.x < width: - self.addch_at_point(pt, ' ') - pt.x += 1 - if is_in_first_responder_chain: - self.attroff(curses.A_REVERSE) - - for menu in self.menus: - menu.update() - - -class StatusPanel(Panel): - - def __init__(self, frame): - super( - StatusPanel, - self).__init__( - frame, - delegate=None, - can_become_first_responder=False) - self.status_items = list() - self.status_dicts = dict() - self.next_status_x = 1 - - def add_status_item(self, name, title, format, width, value, update=True): - status_item_dict = {'name': name, - 'title': title, - 'width': width, - 'format': format, - 'value': value, - 'x': self.next_status_x} - index = len(self.status_items) - self.status_items.append(status_item_dict) - self.status_dicts[name] = index - self.next_status_x += width + 2 - if update: - self.update() - - def increment_status(self, name, update=True): - if name in self.status_dicts: - status_item_idx = self.status_dicts[name] - status_item_dict = self.status_items[status_item_idx] - status_item_dict['value'] = status_item_dict['value'] + 1 - if update: - self.update() - - def update_status(self, name, value, update=True): - if name in self.status_dicts: - status_item_idx = self.status_dicts[name] - status_item_dict = self.status_items[status_item_idx] - status_item_dict['value'] = status_item_dict['format'] % (value) - if update: - self.update() - - def update(self): - self.erase() - for status_item_dict in self.status_items: - self.addnstr_at_point( - Point( - x=status_item_dict['x'], - y=0), - '%s: %s' % - (status_item_dict['title'], - status_item_dict['value']), - status_item_dict['width']) - -stdscr = None - - -def intialize_curses(): - global stdscr - stdscr = curses.initscr() - curses.noecho() - curses.cbreak() - stdscr.keypad(1) - try: - curses.start_color() - except: - pass - return Window(stdscr) - - -def terminate_curses(): - global stdscr - if stdscr: - stdscr.keypad(0) - curses.echo() - curses.nocbreak() - curses.endwin() diff --git a/lldb/packages/Python/lldbsuite/test/lldbinline.py b/lldb/packages/Python/lldbsuite/test/lldbinline.py index 4c3b08bf1d0e439..22668b673fdafd0 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbinline.py +++ b/lldb/packages/Python/lldbsuite/test/lldbinline.py @@ -101,11 +101,6 @@ def BuildMakefile(self): makefile = open(makefilePath, 'w+') - level = os.sep.join( - [".."] * len(self.mydir.split(os.sep))) + os.sep + "make" - - makefile.write("LEVEL = " + level + "\n") - for t in list(categories.keys()): line = t + " := " + " ".join(categories[t]) makefile.write(line + "\n") @@ -118,7 +113,7 @@ def BuildMakefile(self): if ('CXX_SOURCES' in list(categories.keys())): makefile.write("CXXFLAGS += -std=c++11\n") - makefile.write("include $(LEVEL)/Makefile.rules\n") + makefile.write("include Makefile.rules\n") makefile.write("\ncleanup:\n\trm -f Makefile *.d\n\n") makefile.flush() makefile.close() diff --git a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py index d67a2f3e998aa8f..402148a9534fd1e 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py +++ b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py @@ -2,7 +2,6 @@ from __future__ import absolute_import # System modules -import os import sys # Third-party modules @@ -14,82 +13,50 @@ from . import lldbutil if sys.platform.startswith('win32'): - class PExpectTest(TestBase): + # llvm.org/pr22274: need a pexpect replacement for windows + class PExpectTest(object): pass else: import pexpect class PExpectTest(TestBase): - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - TestBase.setUp(self) - - def launchArgs(self): - return "" - - def launch(self, timeout=None): - if timeout is None: - timeout = 30 - logfile = sys.stdout if self.TraceOn() else None + NO_DEBUG_INFO_TESTCASE = True + PROMPT = "(lldb) " + + def expect_prompt(self): + self.child.expect_exact(self.PROMPT) + + def launch(self, executable=None, extra_args=None, timeout=30, dimensions=None): + logfile = getattr(sys.stdout, 'buffer', + sys.stdout) if self.TraceOn() else None + args = ['--no-lldbinit', '--no-use-colors'] + for cmd in self.setUpCommands(): + args += ['-O', cmd] + if executable is not None: + args += ['--file', executable] + if extra_args is not None: + args.extend(extra_args) self.child = pexpect.spawn( - '%s --no-use-colors %s' % - (lldbtest_config.lldbExec, self.launchArgs()), logfile=logfile) - self.child.timeout = timeout - self.timeout = timeout - - def expect(self, patterns=None, timeout=None, exact=None): - if patterns is None: - return None - if timeout is None: - timeout = self.timeout - if exact is None: - exact = False - if exact: - return self.child.expect_exact(patterns, timeout=timeout) - else: - return self.child.expect(patterns, timeout=timeout) - - def expectall(self, patterns=None, timeout=None, exact=None): - if patterns is None: - return None - if timeout is None: - timeout = self.timeout - if exact is None: - exact = False - for pattern in patterns: - self.expect(pattern, timeout=timeout, exact=exact) - - def sendimpl( - self, - sender, - command, - patterns=None, - timeout=None, - exact=None): - sender(command) - return self.expect(patterns=patterns, timeout=timeout, exact=exact) - - def send(self, command, patterns=None, timeout=None, exact=None): - return self.sendimpl( - self.child.send, - command, - patterns, - timeout, - exact) - - def sendline(self, command, patterns=None, timeout=None, exact=None): - return self.sendimpl( - self.child.sendline, - command, - patterns, - timeout, - exact) - - def quit(self, gracefully=None): - if gracefully is None: - gracefully = True + lldbtest_config.lldbExec, args=args, logfile=logfile, + timeout=timeout, dimensions=dimensions) + self.expect_prompt() + for cmd in self.setUpCommands(): + self.child.expect_exact(cmd) + self.expect_prompt() + if executable is not None: + self.child.expect_exact("target create") + self.child.expect_exact("Current executable set to") + self.expect_prompt() + + def expect(self, cmd, substrs=None): + self.child.sendline(cmd) + if substrs is not None: + for s in substrs: + self.child.expect_exact(s) + self.expect_prompt() + + def quit(self, gracefully=True): self.child.sendeof() self.child.close(force=not gracefully) self.child = None diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatform.py b/lldb/packages/Python/lldbsuite/test/lldbplatform.py index 23d93e19d948667..365c752758d8c28 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbplatform.py +++ b/lldb/packages/Python/lldbsuite/test/lldbplatform.py @@ -9,7 +9,6 @@ import six # LLDB modules -import use_lldb_suite import lldb windows, linux, macosx, darwin, ios, tvos, watchos, bridgeos, darwin_all, darwin_embedded, freebsd, netbsd, bsd_all, android = range( diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py index 940b01e2fccbb30..6e382d28c1edb33 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py @@ -16,7 +16,6 @@ # LLDB modules from . import configuration -import use_lldb_suite import lldb diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 0fbdfd82f53e235..48dc81780e9b4c4 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -36,12 +36,10 @@ # System modules import abc -import collections from distutils.version import LooseVersion from functools import wraps import gc import glob -import inspect import io import os.path import re @@ -51,7 +49,6 @@ import sys import time import traceback -import types import distutils.spawn # Third-party modules @@ -61,7 +58,6 @@ import six # LLDB modules -import use_lldb_suite import lldb from . import configuration from . import decorators @@ -117,11 +113,11 @@ BREAKPOINT_PENDING_CREATED = "Pending breakpoint created successfully" -BREAKPOINT_HIT_ONCE = "Breakpoint resolved with hit cout = 1" +BREAKPOINT_HIT_ONCE = "Breakpoint resolved with hit count = 1" -BREAKPOINT_HIT_TWICE = "Breakpoint resolved with hit cout = 2" +BREAKPOINT_HIT_TWICE = "Breakpoint resolved with hit count = 2" -BREAKPOINT_HIT_THRICE = "Breakpoint resolved with hit cout = 3" +BREAKPOINT_HIT_THRICE = "Breakpoint resolved with hit count = 3" MISSING_EXPECTED_REGISTERS = "At least one expected register is unavailable." @@ -144,6 +140,8 @@ STOPPED_DUE_TO_BREAKPOINT_IGNORE_COUNT = "Stopped due to breakpoint and ignore count" +STOPPED_DUE_TO_BREAKPOINT_JITTED_CONDITION = "Stopped due to breakpoint jitted condition" + STOPPED_DUE_TO_SIGNAL = "Process state is stopped due to signal" STOPPED_DUE_TO_STEP_IN = "Process state is stopped due to step in" @@ -562,18 +560,6 @@ def tearDownClass(cls): print("Restore dir to:", cls.oldcwd, file=sys.stderr) os.chdir(cls.oldcwd) - @classmethod - def skipLongRunningTest(cls): - """ - By default, we skip long running test case. - This can be overridden by passing '-l' to the test driver (dotest.py). - """ - if "LLDB_SKIP_LONG_RUNNING_TEST" in os.environ and "NO" == os.environ[ - "LLDB_SKIP_LONG_RUNNING_TEST"]: - return False - else: - return True - def enableLogChannelsForCurrentTest(self): if len(lldbtest_config.channels) == 0: return @@ -698,6 +684,17 @@ def getSourcePath(self, name): """Return absolute path to a file in the test's source directory.""" return os.path.join(self.getSourceDir(), name) + @staticmethod + def setUpCommands(): + return [ + # Disable Spotlight lookup. The testsuite creates + # different binaries with the same UUID, because they only + # differ in the debug info, which is not being hashed. + "settings set symbols.enable-external-lookup false", + + # Testsuite runs in parallel and the host can have also other load. + "settings set plugin.process.gdb-remote.packet-timeout 60"] + def setUp(self): """Fixture for unittest test case setup. @@ -711,17 +708,13 @@ def setUp(self): else: self.libcxxPath = None - if "LLDBMI_EXEC" in os.environ: - self.lldbMiExec = os.environ["LLDBMI_EXEC"] - else: - self.lldbMiExec = None - if "LLDBVSCODE_EXEC" in os.environ: self.lldbVSCodeExec = os.environ["LLDBVSCODE_EXEC"] else: self.lldbVSCodeExec = None - self.lldbOption = "-o 'settings set symbols.enable-external-lookup false'" + self.lldbOption = " ".join( + "-o '" + s + "'" for s in self.setUpCommands()) # If we spawn an lldb process for test (via pexpect), do not load the # init file unless told otherwise. @@ -971,7 +964,6 @@ def deletePexpectChild(self): # unexpected error raise # child is already terminated - pass finally: # Give it one final blow to make sure the child is terminated. self.child.close() @@ -1288,11 +1280,14 @@ def getCompilerVersion(self): def getDwarfVersion(self): """ Returns the dwarf version generated by clang or '0'. """ + if configuration.dwarf_version: + return str(configuration.dwarf_version) if 'clang' in self.getCompiler(): try: driver_output = check_output( [self.getCompiler()] + '-g -c -x c - -o - -###'.split(), stderr=STDOUT) + driver_output = driver_output.decode("utf-8") for line in driver_output.split(os.linesep): m = re.search('dwarf-version=([0-9])', line) if m: @@ -1856,23 +1851,25 @@ def setUp(self): # decorators. Base.setUp(self) - if lldbtest_config.inferior_env: - self.runCmd('settings set target.env-vars {}'.format(lldbtest_config.inferior_env)) - # Set the clang modules cache path used by LLDB. - mod_cache = os.path.join(os.environ["LLDB_BUILD"], "module-cache-lldb") - self.runCmd('settings set symbols.clang-modules-cache-path "%s"' - % mod_cache) + self.runCmd( + 'settings set symbols.clang-modules-cache-path "{}"'.format( + configuration.module_cache_dir)) + + for s in self.setUpCommands(): + self.runCmd(s) - # Disable Spotlight lookup. The testsuite creates - # different binaries with the same UUID, because they only - # differ in the debug info, which is not being hashed. - self.runCmd('settings set symbols.enable-external-lookup false') + # Disable color. + self.runCmd("settings set use-color false") # Make sure that a sanitizer LLDB's environment doesn't get passed on. if 'DYLD_LIBRARY_PATH' in os.environ: self.runCmd('settings set target.env-vars DYLD_LIBRARY_PATH=') + # Set environment variables for the inferior. + if lldbtest_config.inferior_env: + self.runCmd('settings set target.env-vars {}'.format(lldbtest_config.inferior_env)) + if "LLDB_MAX_LAUNCH_COUNT" in os.environ: self.maxLaunchCount = int(os.environ["LLDB_MAX_LAUNCH_COUNT"]) @@ -2061,13 +2058,13 @@ def runCmd(self, cmd, msg=None, check=True, trace=False, inHistory=False): if check: output = "" if self.res.GetOutput(): - output += "\nCommand output:\n" + self.res.GetOutput() + output += "\nCommand output:\n" + self.res.GetOutput() if self.res.GetError(): - output += "\nError output:\n" + self.res.GetError() + output += "\nError output:\n" + self.res.GetError() if msg: - msg += output + msg += output if cmd: - cmd += output + cmd += output self.assertTrue(self.res.Succeeded(), msg if (msg) else CMD_MSG(cmd)) @@ -2197,6 +2194,16 @@ def complete_from_to(self, str_input, patterns, turn_off_re_match=False): compare_string, msg=COMPLETION_MSG( str_input, p, match_strings), exe=False, patterns=[p]) + def completions_match(self, command, completions): + """Checks that the completions for the given command are equal to the + given list of completions""" + interp = self.dbg.GetCommandInterpreter() + match_strings = lldb.SBStringList() + interp.HandleCompletion(command, len(command), 0, -1, match_strings) + # match_strings is a 1-indexed list, so we have to slice... + self.assertItemsEqual(completions, list(match_strings)[1:], + "List of returned completion is wrong") + def filecheck( self, command, @@ -2314,8 +2321,6 @@ def expect( with recording(self, trace) as sbuf: print("looking at:", output, file=sbuf) - if output is None: - output = "" # The heading says either "Expecting" or "Not expecting". heading = "Expecting" if matching else "Not expecting" diff --git a/lldb/packages/Python/lldbsuite/test/lldbutil.py b/lldb/packages/Python/lldbsuite/test/lldbutil.py index dbdc0f59c66c2b6..6d82eb30f2c7662 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbutil.py @@ -8,12 +8,10 @@ from __future__ import absolute_import # System modules -import collections import errno import os import re import sys -import time # Third-party modules from six import StringIO as SixStringIO diff --git a/lldb/packages/Python/lldbsuite/test/lock.py b/lldb/packages/Python/lldbsuite/test/lock.py index 0e3af4a6b16e3fa..e9970e135f933f4 100644 --- a/lldb/packages/Python/lldbsuite/test/lock.py +++ b/lldb/packages/Python/lldbsuite/test/lock.py @@ -3,7 +3,6 @@ """ import fcntl -import os class Lock: diff --git a/lldb/packages/Python/lldbsuite/test/logging/Makefile b/lldb/packages/Python/lldbsuite/test/logging/Makefile deleted file mode 100644 index d4bc9c6890432f5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/logging/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py b/lldb/packages/Python/lldbsuite/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py index be122f4f500d93a..b509865fb434f4f 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/add-dsym/TestAddDsymMidExecutionCommand.py @@ -3,10 +3,7 @@ from __future__ import print_function -import os -import time import lldb -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/Makefile index 5bb3a3ce3f10229..b880d9e722bf1f2 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c # Make an archive that has two object files with the same name, but @@ -14,7 +12,7 @@ libfoo.a: a.c sub1/a.c $(AR) $(ARFLAGS) $@ a.o sub1/a.o rm a.o sub1/a.o -include $(LEVEL)/Makefile.rules +include Makefile.rules # Needs to come after include OBJECTS += libfoo.a diff --git a/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/TestDuplicateMembers.py b/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/TestDuplicateMembers.py index 1af2463fe7b84a8..5be73700d20513f 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/TestDuplicateMembers.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/duplicate-archive-members/TestDuplicateMembers.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/Makefile index 18a4934cca3708e..68012d22f5b9fd0 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/Makefile @@ -1,5 +1,4 @@ SRCDIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))/ - CC ?= clang ifeq "$(ARCH)" "" diff --git a/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/TestFindAppInBundle.py b/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/TestFindAppInBundle.py index c380d5379962d58..371c9b14f574815 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/TestFindAppInBundle.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/find-app-in-bundle/TestFindAppInBundle.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/bundle-with-dot-in-filename/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/bundle-with-dot-in-filename/Makefile index 313c83e990d564c..658c9a938705021 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/bundle-with-dot-in-filename/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/bundle-with-dot-in-filename/Makefile @@ -1,5 +1,4 @@ SRCDIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))/ - CC ?= clang ifeq "$(ARCH)" "" diff --git a/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/Makefile index d52d6f1f0d37d37..b2a66c2ad41e9b1 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/Makefile @@ -1,5 +1,4 @@ SRCDIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))/ - CC ?= clang ifeq "$(ARCH)" "" diff --git a/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/TestDeepBundle.py b/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/TestDeepBundle.py index 2ed7fdfd3fe4278..cb4f00bc9ab248e 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/TestDeepBundle.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/find-dsym/deep-bundle/TestDeepBundle.py @@ -3,7 +3,6 @@ from __future__ import print_function #import unittest2 -import os.path from time import sleep import lldb diff --git a/lldb/packages/Python/lldbsuite/test/macosx/function-starts/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/function-starts/Makefile index 091876d51c35052..0d6f517293930c2 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/function-starts/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/function-starts/Makefile @@ -1,10 +1,8 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp EXE := StripMe MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules main.o: main.cpp $(CC) $(CFLAGS_NO_DEBUG) -c $< -o $@ diff --git a/lldb/packages/Python/lldbsuite/test/macosx/function-starts/TestFunctionStarts.py b/lldb/packages/Python/lldbsuite/test/macosx/function-starts/TestFunctionStarts.py index ae3b825f95cbd97..65708765d39eb80 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/function-starts/TestFunctionStarts.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/function-starts/TestFunctionStarts.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -45,8 +43,20 @@ def do_function_starts(self, in_memory): except CalledProcessError as cmd_error: self.fail("Strip failed: %d"%(cmd_error.returncode)) - popen = self.spawnSubprocess(exe) + # Use a file as a synchronization point between test and inferior. + pid_file_path = lldbutil.append_to_process_working_directory(self, + "token_pid_%d" % (int(os.getpid()))) + self.addTearDownHook( + lambda: self.run_platform_command( + "rm %s" % + (pid_file_path))) + + popen = self.spawnSubprocess(exe, [pid_file_path]) self.addTearDownHook(self.cleanupSubprocesses) + + # Wait until process has fully started up. + pid = lldbutil.wait_for_file_on_target(self, pid_file_path) + if in_memory: remove_file(exe) @@ -70,7 +80,8 @@ def do_function_starts(self, in_memory): thread = threads[0] self.assertTrue(thread.num_frames > 1, "Couldn't backtrace.") name = thread.frame[1].GetFunctionName() - self.assertEqual("___lldb_unnamed_symbol1$$StripMe", name, "Frame name not synthetic") + self.assertTrue(name.startswith("___lldb_unnamed_symbol")) + self.assertTrue(name.endswith("$$StripMe")) diff --git a/lldb/packages/Python/lldbsuite/test/macosx/function-starts/main.cpp b/lldb/packages/Python/lldbsuite/test/macosx/function-starts/main.cpp index 5a14506d6913341..188078a22ed91a6 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/function-starts/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/macosx/function-starts/main.cpp @@ -2,6 +2,7 @@ #include #include +#include #include extern void dont_strip_me() @@ -21,6 +22,11 @@ static void *a_function() int main(int argc, char const *argv[]) { + { + // Create file to signal that this process has started up. + std::ofstream f; + f.open(argv[1]); + } a_function(); return 0; } diff --git a/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/Makefile index 69fd86e575e6da7..5bea8dc4ab5157b 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - -include $(LEVEL)/Makefile.rules +include Makefile.rules LIB_PREFIX := lib diff --git a/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py b/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py index a87a6289310932b..4aa0681f8dc9aca 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/indirect_symbol/TestIndirectSymbols.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/Makefile new file mode 100644 index 000000000000000..af03cf6ff5dce9d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/Makefile @@ -0,0 +1,13 @@ +MAKE_DSYM := NO + +C_SOURCES := main.c + +all: a.out create-empty-corefile + +create-empty-corefile: + $(MAKE) VPATH=$(VPATH) -f $(SRCDIR)/create-empty-corefile.mk + +clean:: + $(MAKE) -f create-empty-corefile.mk clean + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py new file mode 100644 index 000000000000000..edf8ffb7a668a89 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py @@ -0,0 +1,100 @@ +"""Test that corefiles with an LC_NOTE "kern ver str" load command is used.""" + +from __future__ import print_function + + +import os +import re +import subprocess + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestKernVerStrLCNOTE(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipIf(debug_info=no_match(["dsym"]), bugnumber="This test is looking explicitly for a dSYM") + @skipIfDarwinEmbedded + @skipUnlessDarwin + def test_lc_note(self): + self.build() + self.test_exe = self.getBuildArtifact("a.out") + self.create_corefile = self.getBuildArtifact("create-empty-corefile") + self.dsym_for_uuid = self.getBuildArtifact("dsym-for-uuid.sh") + self.corefile = self.getBuildArtifact("core") + + ## We can hook in our dsym-for-uuid shell script to lldb with this env + ## var instead of requiring a defaults write. + os.environ['LLDB_APPLE_DSYMFORUUID_EXECUTABLE'] = self.dsym_for_uuid + self.addTearDownHook(lambda: os.environ.pop('LLDB_APPLE_DSYMFORUUID_EXECUTABLE', None)) + + dwarfdump_uuid_regex = re.compile( + 'UUID: ([-0-9a-fA-F]+) \(([^\(]+)\) .*') + dwarfdump_cmd_output = subprocess.check_output( + ('/usr/bin/dwarfdump --uuid "%s"' % self.test_exe), shell=True).decode("utf-8") + aout_uuid = None + for line in dwarfdump_cmd_output.splitlines(): + match = dwarfdump_uuid_regex.search(line) + if match: + aout_uuid = match.group(1) + self.assertNotEqual(aout_uuid, None, "Could not get uuid of built a.out") + + ### Create our dsym-for-uuid shell script which returns self.test_exe + ### and its dSYM when given self.test_exe's UUID. + shell_cmds = [ + '#! /bin/sh', + 'ret=0', + 'echo ""', + 'echo ""', + 'echo ""', + '', + '# the last arugment is probably the uuid', + 'while [ $# -gt 1 ]', + 'do', + ' shift', + 'done', + 'echo "$1"', + '', + 'if [ "$1" = "%s" ]' % aout_uuid, + 'then', + ' echo "DBGArchitecturex86_64"', + ' echo "DBGDSYMPath%s.dSYM/Contents/Resources/DWARF/%s"' % (self.test_exe, os.path.basename(self.test_exe)), + ' echo "DBGSymbolRichExecutable%s"' % self.test_exe, + 'else', + ' echo "DBGErrornot found"', + ' ret=1', + 'fi', + 'echo ""', + 'exit $ret' + ] + + with open(self.dsym_for_uuid, "w") as writer: + for l in shell_cmds: + writer.write(l + '\n') + + os.chmod(self.dsym_for_uuid, 0o755) + + ### Create our corefile + retcode = call(self.create_corefile + " " + self.corefile + " " + self.test_exe, shell=True) + + ### Now run lldb on the corefile + ### which will give us a UUID + ### which we call dsym-for-uuid.sh with + ### which gives us a binary and dSYM + ### which lldb should load! + + + self.target = self.dbg.CreateTarget('') + err = lldb.SBError() + self.process = self.target.LoadCore(self.corefile) + self.assertEqual(self.process.IsValid(), True) + if self.TraceOn(): + self.runCmd("image list") + self.assertEqual(self.target.GetNumModules(), 1) + fspec = self.target.GetModuleAtIndex(0).GetFileSpec() + filepath = fspec.GetDirectory() + "/" + fspec.GetFilename() + self.assertEqual(filepath, self.test_exe) diff --git a/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/create-empty-corefile.cpp b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/create-empty-corefile.cpp new file mode 100644 index 000000000000000..8a8115af967289d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/create-empty-corefile.cpp @@ -0,0 +1,315 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +// Create an empty corefile with a "kern ver str" LC_NOTE. +// If an existing binary is given as an optional 2nd argument on the cmd line, +// the UUID from that binary will be encoded in the corefile. +// Otherwise a pre-set UUID will be put in the corefile that +// is created. + + +union uint32_buf { + uint8_t bytebuf[4]; + uint32_t val; +}; + +union uint64_buf { + uint8_t bytebuf[8]; + uint64_t val; +}; + +void +add_uint64(std::vector &buf, uint64_t val) +{ + uint64_buf conv; + conv.val = val; + for (int i = 0; i < 8; i++) + buf.push_back(conv.bytebuf[i]); +} + +void +add_uint32(std::vector &buf, uint32_t val) +{ + uint32_buf conv; + conv.val = val; + for (int i = 0; i < 4; i++) + buf.push_back(conv.bytebuf[i]); +} + +std::vector +x86_lc_thread_load_command () +{ + std::vector data; + add_uint32 (data, LC_THREAD); // thread_command.cmd + add_uint32 (data, 184); // thread_command.cmdsize + add_uint32 (data, x86_THREAD_STATE64); // thread_command.flavor + add_uint32 (data, x86_THREAD_STATE64_COUNT); // thread_command.count + add_uint64 (data, 0x0000000000000000); // rax + add_uint64 (data, 0x0000000000000400); // rbx + add_uint64 (data, 0x0000000000000000); // rcx + add_uint64 (data, 0x0000000000000000); // rdx + add_uint64 (data, 0x0000000000000000); // rdi + add_uint64 (data, 0x0000000000000000); // rsi + add_uint64 (data, 0xffffff9246e2ba20); // rbp + add_uint64 (data, 0xffffff9246e2ba10); // rsp + add_uint64 (data, 0x0000000000000000); // r8 + add_uint64 (data, 0x0000000000000000); // r9 + add_uint64 (data, 0x0000000000000000); // r10 + add_uint64 (data, 0x0000000000000000); // r11 + add_uint64 (data, 0xffffff7f96ce5fe1); // r12 + add_uint64 (data, 0x0000000000000000); // r13 + add_uint64 (data, 0x0000000000000000); // r14 + add_uint64 (data, 0xffffff9246e2bac0); // r15 + add_uint64 (data, 0xffffff8015a8f6d0); // rip + add_uint64 (data, 0x0000000000011111); // rflags + add_uint64 (data, 0x0000000000022222); // cs + add_uint64 (data, 0x0000000000033333); // fs + add_uint64 (data, 0x0000000000044444); // gs + return data; +} + +void +add_lc_note_kern_ver_str_load_command (std::vector > &loadcmds, + std::vector &payload, + int payload_file_offset, + std::string ident) +{ + std::vector loadcmd_data; + + add_uint32 (loadcmd_data, LC_NOTE); // note_command.cmd + add_uint32 (loadcmd_data, 40); // note_command.cmdsize + char lc_note_name[16]; + memset (lc_note_name, 0, 16); + strcpy (lc_note_name, "kern ver str"); + + // lc_note.data_owner + for (int i = 0; i < 16; i++) + loadcmd_data.push_back (lc_note_name[i]); + + // we start writing the payload at payload_file_offset to leave + // room at the start for the header & the load commands. + uint64_t current_payload_offset = payload.size() + payload_file_offset; + + add_uint64 (loadcmd_data, current_payload_offset); // note_command.offset + add_uint64 (loadcmd_data, 4 + ident.size() + 1); // note_command.size + + loadcmds.push_back (loadcmd_data); + + add_uint32 (payload, 1); // kerneL_version_string.version + for (int i = 0; i < ident.size() + 1; i++) + { + payload.push_back (ident[i]); + } +} + +void +add_lc_segment (std::vector > &loadcmds, + std::vector &payload, + int payload_file_offset) +{ + std::vector loadcmd_data; + struct segment_command_64 seg; + seg.cmd = LC_SEGMENT_64; + seg.cmdsize = sizeof (struct segment_command_64); // no sections + memset (seg.segname, 0, 16); + seg.vmaddr = 0xffffff7f96400000; + seg.vmsize = 4096; + seg.fileoff = payload.size() + payload_file_offset; + seg.filesize = 0; + seg.maxprot = 1; + seg.initprot = 1; + seg.nsects = 0; + seg.flags = 0; + + uint8_t *p = (uint8_t*) &seg; + for (int i = 0; i < sizeof (struct segment_command_64); i++) + { + loadcmd_data.push_back (*(p + i)); + } + loadcmds.push_back (loadcmd_data); +} + +std::string +get_uuid_from_binary (const char *fn) +{ + FILE *f = fopen(fn, "r"); + if (f == nullptr) + { + fprintf (stderr, "Unable to open binary '%s' to get uuid\n", fn); + exit(1); + } + uint32_t num_of_load_cmds = 0; + uint32_t size_of_load_cmds = 0; + std::string uuid; + off_t file_offset = 0; + + uint8_t magic[4]; + if (::fread (magic, 1, 4, f) != 4) + { + fprintf (stderr, "Failed to read magic number from input file %s\n", fn); + exit (1); + } + uint8_t magic_32_be[] = {0xfe, 0xed, 0xfa, 0xce}; + uint8_t magic_32_le[] = {0xce, 0xfa, 0xed, 0xfe}; + uint8_t magic_64_be[] = {0xfe, 0xed, 0xfa, 0xcf}; + uint8_t magic_64_le[] = {0xcf, 0xfa, 0xed, 0xfe}; + + if (memcmp (magic, magic_32_be, 4) == 0 || memcmp (magic, magic_64_be, 4) == 0) + { + fprintf (stderr, "big endian corefiles not supported\n"); + exit (1); + } + + ::fseeko (f, 0, SEEK_SET); + if (memcmp (magic, magic_32_le, 4) == 0) + { + struct mach_header mh; + if (::fread (&mh, 1, sizeof (mh), f) != sizeof (mh)) + { + fprintf (stderr, "error reading mach header from input file\n"); + exit (1); + } + if (mh.cputype != CPU_TYPE_X86_64) + { + fprintf (stderr, "This tool creates an x86_64 corefile but " + "the supplied binary '%s' is cputype 0x%x\n", + fn, (uint32_t) mh.cputype); + exit (1); + } + num_of_load_cmds = mh.ncmds; + size_of_load_cmds = mh.sizeofcmds; + file_offset += sizeof (struct mach_header); + } + else + { + struct mach_header_64 mh; + if (::fread (&mh, 1, sizeof (mh), f) != sizeof (mh)) + { + fprintf (stderr, "error reading mach header from input file\n"); + exit (1); + } + if (mh.cputype != CPU_TYPE_X86_64) + { + fprintf (stderr, "This tool creates an x86_64 corefile but " + "the supplied binary '%s' is cputype 0x%x\n", + fn, (uint32_t) mh.cputype); + exit (1); + } + num_of_load_cmds = mh.ncmds; + size_of_load_cmds = mh.sizeofcmds; + file_offset += sizeof (struct mach_header_64); + } + + off_t load_cmds_offset = file_offset; + + for (int i = 0; i < num_of_load_cmds && (file_offset - load_cmds_offset) < size_of_load_cmds; i++) + { + ::fseeko (f, file_offset, SEEK_SET); + uint32_t cmd; + uint32_t cmdsize; + ::fread (&cmd, sizeof (uint32_t), 1, f); + ::fread (&cmdsize, sizeof (uint32_t), 1, f); + if (cmd == LC_UUID) + { + struct uuid_command uuidcmd; + ::fseeko (f, file_offset, SEEK_SET); + if (::fread (&uuidcmd, 1, sizeof (uuidcmd), f) != sizeof (uuidcmd)) + { + fprintf (stderr, "Unable to read LC_UUID load command.\n"); + exit (1); + } + uuid_string_t uuidstr; + uuid_unparse (uuidcmd.uuid, uuidstr); + uuid = uuidstr; + break; + } + file_offset += cmdsize; + } + return uuid; +} + +int main (int argc, char **argv) +{ + if (argc != 2 && argc != 3) + { + fprintf (stderr, "usage: create-empty-corefile [binary-to-copy-uuid-from]\n"); + fprintf (stderr, "Create a Mach-O corefile with an LC_NOTE 'kern ver str' load command/payload\n"); + fprintf (stderr, "If a binary is given as a second argument, the Mach-O UUID of that file will\n"); + fprintf (stderr, "be read and used in the corefile's LC_NOTE payload.\n"); + exit (1); + } + + std::string ident = "EFI UUID=3F9BA21F-55EA-356A-A349-BBA6F51FE8B1"; + if (argc == 3) + { + std::string uuid_from_file = get_uuid_from_binary (argv[2]); + if (!uuid_from_file.empty()) + { + ident = "EFI UUID="; + ident += uuid_from_file; + } + } + + // An array of load commands (in the form of byte arrays) + std::vector > load_commands; + + // An array of corefile contents (page data, lc_note data, etc) + std::vector payload; + + // First add all the load commands / payload so we can figure out how large + // the load commands will actually be. + load_commands.push_back (x86_lc_thread_load_command()); + add_lc_note_kern_ver_str_load_command (load_commands, payload, 0, ident); + add_lc_segment (load_commands, payload, 0); + + int size_of_load_commands = 0; + for (const auto &lc : load_commands) + size_of_load_commands += lc.size(); + + int header_and_load_cmd_room = sizeof (struct mach_header_64) + size_of_load_commands; + + // Erease the load commands / payload now that we know how much space is needed, + // redo it. + load_commands.clear(); + payload.clear(); + + load_commands.push_back (x86_lc_thread_load_command()); + add_lc_note_kern_ver_str_load_command (load_commands, payload, header_and_load_cmd_room, ident); + add_lc_segment (load_commands, payload, header_and_load_cmd_room); + + struct mach_header_64 mh; + mh.magic = MH_MAGIC_64; + mh.cputype = CPU_TYPE_X86_64; + mh.cpusubtype = CPU_SUBTYPE_X86_64_ALL; + mh.filetype = MH_CORE; + mh.ncmds = load_commands.size(); + mh.sizeofcmds = size_of_load_commands; + mh.flags = 0; + mh.reserved = 0; + + + FILE *f = fopen (argv[1], "w"); + + if (f == nullptr) + { + fprintf (stderr, "Unable to open file %s for writing\n", argv[1]); + exit (1); + } + + fwrite (&mh, sizeof (struct mach_header_64), 1, f); + + for (const auto &lc : load_commands) + fwrite (lc.data(), lc.size(), 1, f); + + fseek (f, header_and_load_cmd_room, SEEK_SET); + + fwrite (payload.data(), payload.size(), 1, f); + + fclose (f); +} diff --git a/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/create-empty-corefile.mk b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/create-empty-corefile.mk new file mode 100644 index 000000000000000..4967e956679a250 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/create-empty-corefile.mk @@ -0,0 +1,6 @@ +MAKE_DSYM := NO + +CXX_SOURCES := create-empty-corefile.cpp +EXE = create-empty-corefile + +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/main.c b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/main.c new file mode 100644 index 000000000000000..70a72e0b80b1ea5 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/lc-note/kern-ver-str/main.c @@ -0,0 +1,2 @@ +#include +int main () { puts ("this is the lc-note test program."); } diff --git a/lldb/packages/Python/lldbsuite/test/macosx/load-kext/TestLoadKext.py b/lldb/packages/Python/lldbsuite/test/macosx/load-kext/TestLoadKext.py index 1bd5ec020dbeaa1..8431e8cd43889ec 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/load-kext/TestLoadKext.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/load-kext/TestLoadKext.py @@ -4,8 +4,6 @@ from __future__ import print_function -import shutil -import struct import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/macabi/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/macabi/Makefile new file mode 100644 index 000000000000000..f035d912b106a8a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/macabi/Makefile @@ -0,0 +1,18 @@ +LEVEL = ../../make + +C_SOURCES := main.c +LD_EXTRAS := -L. -lfoo + +TRIPLE := x86_64-apple-ios13.0-macabi +CFLAGS_EXTRAS := -target $(TRIPLE) + +all: libfoo.dylib a.out + +lib%.dylib: %.c + $(MAKE) MAKE_DSYM=YES CC=$(CC) \ + ARCH=$(ARCH) DSYMUTIL=$(DSYMUTIL) \ + BASENAME=$(shell basename $< .c) \ + TRIPLE=x86_64-apple-macosx10.15 SDKROOT=$(SDKROOT) \ + VPATH=$(SRCDIR) -I $(SRCDIR) -f $(SRCDIR)/dylib.mk all + +include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/macabi/TestMacABImacOSFramework.py b/lldb/packages/Python/lldbsuite/test/macosx/macabi/TestMacABImacOSFramework.py new file mode 100644 index 000000000000000..23b26772554d4c5 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/macabi/TestMacABImacOSFramework.py @@ -0,0 +1,28 @@ +# TestMacABImacOSFramework.py +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * +import lldbsuite.test.lldbutil as lldbutil +import os +import unittest2 + + +class TestMacABImacOSFramework(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipIf(macos_version=["<", "10.15"]) + @skipUnlessDarwin + @skipIfDarwinEmbedded + # There is a Clang driver change missing on llvm.org. + @expectedFailureAll(bugnumber="rdar://problem/54986190>") + def test_macabi(self): + """Test the x86_64-apple-ios-macabi target linked against a macos dylib""" + self.build() + lldbutil.run_to_source_breakpoint(self, "break here", + lldb.SBFileSpec('main.c')) + self.expect("image list -t -b", + patterns=["x86_64.*-apple-ios.*-macabi a\.out", + "x86_64.*-apple-macosx.* libfoo.dylib[^(]"]) + self.expect("fr v s", "Hello MacABI") + self.expect("p s", "Hello MacABI") diff --git a/lldb/packages/Python/lldbsuite/test/macosx/macabi/dylib.mk b/lldb/packages/Python/lldbsuite/test/macosx/macabi/dylib.mk new file mode 100644 index 000000000000000..6f2c17adbf0779a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/macabi/dylib.mk @@ -0,0 +1,6 @@ +LEVEL = ../../make +DYLIB_ONLY := YES +DYLIB_NAME := $(BASENAME) +DYLIB_C_SOURCES := $(DYLIB_NAME).c + +include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/macabi/foo.c b/lldb/packages/Python/lldbsuite/test/macosx/macabi/foo.c new file mode 100644 index 000000000000000..9c29d590f2699fe --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/macabi/foo.c @@ -0,0 +1,8 @@ +#include "foo.h" + +void stop() {} + +int foo() { + stop(); + return 0; +} diff --git a/lldb/packages/Python/lldbsuite/test/macosx/macabi/foo.h b/lldb/packages/Python/lldbsuite/test/macosx/macabi/foo.h new file mode 100644 index 000000000000000..5d5f8f0c9e786ec --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/macabi/foo.h @@ -0,0 +1 @@ +int foo(); diff --git a/lldb/packages/Python/lldbsuite/test/macosx/macabi/main.c b/lldb/packages/Python/lldbsuite/test/macosx/macabi/main.c new file mode 100644 index 000000000000000..92069d902fd0b9a --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/macosx/macabi/main.c @@ -0,0 +1,5 @@ +#include "foo.h" +int main() { + const char *s = "Hello MacABI!"; + return foo(); // break here +} diff --git a/lldb/packages/Python/lldbsuite/test/macosx/nslog/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/nslog/Makefile index de2b618b3d707ca..a68dad547ec637a 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/nslog/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/nslog/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m LD_EXTRAS = -framework Foundation -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/nslog/TestDarwinNSLogOutput.py b/lldb/packages/Python/lldbsuite/test/macosx/nslog/TestDarwinNSLogOutput.py index a69ba9e5d0b941b..9a9efae5c47d7a3 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/nslog/TestDarwinNSLogOutput.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/nslog/TestDarwinNSLogOutput.py @@ -9,10 +9,8 @@ from __future__ import print_function import lldb -import os import platform import re -import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/order/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/order/Makefile index ff5f1886ef56161..357a6032bcd29bc 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/order/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/order/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../make - C_SOURCES := main.c LDFLAGS = $(CFLAGS) -Xlinker -order_file -Xlinker $(SRCDIR)/order-file MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/order/TestOrderFile.py b/lldb/packages/Python/lldbsuite/test/macosx/order/TestOrderFile.py index e7a4b20cd6bc037..2cff74e9c7ef800 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/order/TestOrderFile.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/order/TestOrderFile.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/queues/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/queues/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/queues/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/queues/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/queues/TestQueues.py b/lldb/packages/Python/lldbsuite/test/macosx/queues/TestQueues.py index 369809e2c9fc2ea..805ad21a41375e0 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/queues/TestQueues.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/queues/TestQueues.py @@ -5,7 +5,6 @@ import unittest2 import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/TestSafeFuncCalls.py b/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/TestSafeFuncCalls.py index 314084d0b158439..ba6c2457e39207a 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/TestSafeFuncCalls.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/safe-to-func-call/TestSafeFuncCalls.py @@ -3,8 +3,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/thread-names/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/thread-names/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/thread-names/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/thread-names/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/macosx/thread-names/TestInterruptThreadNames.py b/lldb/packages/Python/lldbsuite/test/macosx/thread-names/TestInterruptThreadNames.py index c1ab00eee306639..8685243941f75bb 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/thread-names/TestInterruptThreadNames.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/thread-names/TestInterruptThreadNames.py @@ -2,7 +2,6 @@ from __future__ import print_function -import os import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/universal/Makefile b/lldb/packages/Python/lldbsuite/test/macosx/universal/Makefile index a83de2a6c7e6596..efdeb1fd1313987 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/universal/Makefile +++ b/lldb/packages/Python/lldbsuite/test/macosx/universal/Makefile @@ -1,8 +1,6 @@ -LEVEL := ../../make - EXE := testit -include $(LEVEL)/Makefile.rules +include Makefile.rules all: testit diff --git a/lldb/packages/Python/lldbsuite/test/macosx/universal/TestUniversal.py b/lldb/packages/Python/lldbsuite/test/macosx/universal/TestUniversal.py index 93fb358f4c8469c..c8a060c28a4dbdc 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/universal/TestUniversal.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/universal/TestUniversal.py @@ -5,7 +5,6 @@ import unittest2 import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/macosx/version_zero/TestGetVersionZeroVersion.py b/lldb/packages/Python/lldbsuite/test/macosx/version_zero/TestGetVersionZeroVersion.py index 82dacc3420e6d2a..506f6079e2563a1 100644 --- a/lldb/packages/Python/lldbsuite/test/macosx/version_zero/TestGetVersionZeroVersion.py +++ b/lldb/packages/Python/lldbsuite/test/macosx/version_zero/TestGetVersionZeroVersion.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test import decorators import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/make/Android.rules b/lldb/packages/Python/lldbsuite/test/make/Android.rules index fab956e23641a71..7339c22d2e4c468 100644 --- a/lldb/packages/Python/lldbsuite/test/make/Android.rules +++ b/lldb/packages/Python/lldbsuite/test/make/Android.rules @@ -72,23 +72,18 @@ endif ARCH_CFLAGS += --sysroot=$(NDK_ROOT)/sysroot \ -isystem $(NDK_ROOT)/sysroot/usr/include/$(TOOL_PREFIX) \ - -D__ANDROID_API__=$(API_LEVEL) -ARCH_LDFLAGS += --sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH) -lm + -D__ANDROID_API__=$(API_LEVEL) \ + -isystem $(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH)/usr/include -ifeq (1,$(USE_LIBSTDCPP)) - ARCH_CFLAGS += \ - -isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include \ - -isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/$(STL_ARCH)/include \ - -isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include/backward +ARCH_LDFLAGS += --sysroot=$(NDK_ROOT)/platforms/android-$(API_LEVEL)/arch-$(SYSROOT_ARCH) -lm - ARCH_LDFLAGS += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/$(STL_ARCH)/libgnustl_static.a -else - ARCH_CXXFLAGS += \ - -isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \ - -isystem $(NDK_ROOT)/sources/android/support/include \ - -isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/include +ARCH_CXXFLAGS += \ + -isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \ + -isystem $(NDK_ROOT)/sources/android/support/include \ + -isystem $(NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/include - ARCH_LDFLAGS += \ - -L$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH) \ - $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH)/libc++.a -endif +ARCH_LDFLAGS += \ + -L$(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH) \ + $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/$(STL_ARCH)/libc++_static.a \ + -lc++abi \ + -nostdlib++ diff --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules index ecfed7efc5376f2..784307b98acef9d 100644 --- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules +++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules @@ -88,6 +88,7 @@ ifneq "$(TRIPLE)" "" triple_os_and_version =$(shell echo $(word 3, $(triple_space)) | sed 's/\([a-z]*\)\(.*\)/\1 \2/') TRIPLE_OS =$(word 1, $(triple_os_and_version)) TRIPLE_VERSION =$(word 2, $(triple_os_and_version)) + TRIPLE_ENV =$(word 4, $(triple_space)) ifeq "$(TRIPLE_VENDOR)" "apple" ifeq "$(TRIPLE_OS)" "ios" CODESIGN := codesign @@ -100,11 +101,19 @@ ifneq "$(TRIPLE)" "" endif ARCH_CFLAGS :=-mios-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)" else - SDKROOT = $(shell xcrun --sdk iphonesimulator --show-sdk-path) + ifeq "$(TRIPLE_ENV)" "macabi" + SDKROOT = $(shell xcrun --sdk macosx --show-sdk-path) + else + SDKROOT = $(shell xcrun --sdk iphonesimulator --show-sdk-path) + endif ifeq "$(TRIPLE_VERSION)" "" TRIPLE_VERSION =$(shell echo $(notdir $(SDKROOT)) | sed -e 's/.*\([0-9]\.[0-9]\).*/\1/') endif - ARCH_CFLAGS :=-mios-simulator-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)" + ifeq "$(TRIPLE_ENV)" "macabi" + ARCH_CFLAGS :=-mios-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)" + else + ARCH_CFLAGS :=-mios-simulator-version-min=$(TRIPLE_VERSION) -isysroot "$(SDKROOT)" + endif endif endif endif diff --git a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h index 592000ddea4d2bd..e4066b72e02ef84 100644 --- a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h +++ b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h @@ -1,10 +1,11 @@ #include // Note that although hogging the CPU while waiting for a variable to change -// would be terrible in production code, it's great for testing since it -// avoids a lot of messy context switching to get multiple threads synchronized. +// would be terrible in production code, it's great for testing since it avoids +// a lot of messy context switching to get multiple threads synchronized. typedef std::atomic pseudo_barrier_t; + #define pseudo_barrier_wait(barrier) \ do \ { \ diff --git a/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py b/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py index be891da2d08673e..e6bc9a0838097ae 100644 --- a/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py +++ b/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py @@ -75,6 +75,7 @@ def getMake(test_subdir, test_name): "VPATH="+src_dir, "-C", build_dir, "-I", src_dir, + "-I", os.path.join(lldb_test, "make"), "-f", makefile] @@ -116,7 +117,7 @@ def getCmdLine(d): pattern = '%s="%s"' if "win32" in sys.platform else "%s='%s'" def setOrAppendVariable(k, v): - append_vars = ["CFLAGS_EXTRAS", "LD_EXTRAS"] + append_vars = ["CFLAGS", "CFLAGS_EXTRAS", "LD_EXTRAS"] if k in append_vars and k in os.environ: v = os.environ[k] + " " + v return pattern % (k, v) diff --git a/lldb/packages/Python/lldbsuite/test/plugins/builder_darwin.py b/lldb/packages/Python/lldbsuite/test/plugins/builder_darwin.py index 1cee39bbb4cb364..591b1c71f05d52e 100644 --- a/lldb/packages/Python/lldbsuite/test/plugins/builder_darwin.py +++ b/lldb/packages/Python/lldbsuite/test/plugins/builder_darwin.py @@ -1,6 +1,5 @@ from __future__ import print_function -import os import lldbsuite.test.lldbtest as lldbtest from builder_base import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py index 5e21471e7c15fd1..17fb4b0895dad17 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/class_members/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/class_members/Makefile index 0d7550f9f282a6e..6f34ff7dd843b15 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/class_members/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/class_members/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - OBJCXX_SOURCES := main.mm -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/class_members/TestSBTypeClassMembers.py b/lldb/packages/Python/lldbsuite/test/python_api/class_members/TestSBTypeClassMembers.py index 074bbc76fd19a0c..960df3f184db19b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/class_members/TestSBTypeClassMembers.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/class_members/TestSBTypeClassMembers.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/debugger/TestDebuggerAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/debugger/TestDebuggerAPI.py index fcb17cbb8e7239d..f6f4377754ea85b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/debugger/TestDebuggerAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/debugger/TestDebuggerAPI.py @@ -2,7 +2,6 @@ Test Debugger APIs. """ -import os import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py index 5c0c7bbd766acf8..e48b90e2ee940db 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py @@ -14,9 +14,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_block.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_block.py index 00654ca1246c43c..299ca08910c171a 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_block.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_block.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointlocation.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointlocation.py index 26bf6f69c5de8f5..5ac1c065efedfae 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointlocation.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointlocation.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointname.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointname.py index 56016c05c3131e9..b32ed0d11aa18f5 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointname.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_breakpointname.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_broadcaster.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_broadcaster.py index b2f5ab5b2c5c79b..59491a762db9d89 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_broadcaster.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_broadcaster.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_communication.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_communication.py index 9793e9be20e3373..1f5aefbc0d5fd72 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_communication.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_communication.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_compileunit.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_compileunit.py index 77fa4694b14715a..4caef33a75f5141 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_compileunit.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_compileunit.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_debugger.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_debugger.py index ac0f9a8aeb94076..16b61091420ac06 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_debugger.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_debugger.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_error.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_error.py index 9c0f8d8e6d829cc..7d14c3e5844b6d8 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_error.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_error.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_event.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_event.py index 4c24c606fa21a51..aaf71d03051245f 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_event.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_event.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_filespec.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_filespec.py index 33b4d69cd6ae39b..4ab5c49c37eb5af 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_filespec.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_filespec.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_frame.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_frame.py index 4637fc428d8c665..b81f1af7b0e8af5 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_frame.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_frame.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_function.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_function.py index bd9c887e50fd696..764fb373b626a13 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_function.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_function.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instruction.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instruction.py index e0be4132fc09c7e..aca1d8a02b377ca 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instruction.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instruction.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instructionlist.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instructionlist.py index 8870bf5de472d3e..88fbc065c55bfb7 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instructionlist.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_instructionlist.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_lineentry.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_lineentry.py index 9c89792791f7989..53761a0c1fa01ae 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_lineentry.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_lineentry.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_listener.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_listener.py index 5f0ebdae73b56ef..b40cfd4d1c2fdb6 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_listener.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_listener.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process.py index d8c441ece580358..eed197a63efecd4 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process_info.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process_info.py index 020ad4e10664380..0c4562f9be92a99 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process_info.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_process_info.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_section.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_section.py index 4b00276fb4b339e..d6118186b4b9506 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_section.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_section.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_stringlist.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_stringlist.py index 44111addba59c4c..015de7aa7ac9735 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_stringlist.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_stringlist.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbol.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbol.py index d2d107a13c2a388..ce942a9daa49e7e 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbol.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbol.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbolcontext.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbolcontext.py index ac4392539db1e51..e46e4714be03c37 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbolcontext.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_symbolcontext.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_target.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_target.py index af7f17b69e7b73f..3b521dcf6dde76d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_target.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_target.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_thread.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_thread.py index 3234bf2625e596d..0e5f9445db08bb1 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_thread.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_thread.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_type.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_type.py index 6016a9004ec2d02..54ab482484fe8d1 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_type.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_type.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_value.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_value.py index f283177425a77b3..9e31a70a79ba49f 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_value.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_value.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_valuelist.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_valuelist.py index cbd9810c44edc44..f20c87752499e4d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_valuelist.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_valuelist.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_watchpoint.py b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_watchpoint.py index b30d3bb8014dc0c..8aa38126ad4d61f 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_watchpoint.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/default-constructor/sb_watchpoint.py @@ -2,7 +2,6 @@ Fuzz tests an object after the default construction to make sure it does not crash lldb. """ -import sys import lldb diff --git a/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py b/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py index deb0c7a9fcbb4df..8e2bc4ac45d4974 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py b/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py index 1e1e4d74f416838..d171b02f77ee3bb 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassemble_VST1_64.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/event/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/event/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/event/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/event/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py b/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py index 82e8f8e0596d4fe..d1ec3b2e1ac2ae0 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/event/TestEvents.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/Makefile index ddffdcfb62d6125..b5256564c2f1627 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp # Clean renamed executable on 'make clean' clean: OBJECTS+=no_synth -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/TestSBFrameFindValue.py b/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/TestSBFrameFindValue.py index c066dc58003d9f0..8de1bec86988854 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/TestSBFrameFindValue.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/findvalue_duplist/TestSBFrameFindValue.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import sys -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/formatters/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/formatters/Makefile index ddffdcfb62d6125..b5256564c2f1627 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/formatters/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/formatters/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp # Clean renamed executable on 'make clean' clean: OBJECTS+=no_synth -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/formatters/TestFormattersSBAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/formatters/TestFormattersSBAPI.py index 8548506fdc463b6..1bc52b3e6676967 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/formatters/TestFormattersSBAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/formatters/TestFormattersSBAPI.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import sys -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/frame/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/frame/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/frame/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/frame/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/frame/TestFrames.py b/lldb/packages/Python/lldbsuite/test/python_api/frame/TestFrames.py index fc2f03f9e61728d..91ac30e36e36e91 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/frame/TestFrames.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/frame/TestFrames.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/TestGetVariables.py b/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/TestGetVariables.py index 1bd54c39fa0b19c..7ced4ddb98f6b1c 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/TestGetVariables.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/frame/get-variables/TestGetVariables.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/Makefile index 641ee5d96ca6810..4cb3dc98c8c1e3b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../../make - C_SOURCES := inlines.c ifneq (,$(findstring icc,$(CC))) CFLAGS += -debug inline-debug-info endif -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/TestInlinedFrame.py b/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/TestInlinedFrame.py index 8b8f81ff4c4b485..da4e9cb06e7b507 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/TestInlinedFrame.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/frame/inlines/TestInlinedFrame.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestDisasmAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestDisasmAPI.py index f657d19764ba884..2278d69fbbe3b90 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestDisasmAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestDisasmAPI.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestSymbolAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestSymbolAPI.py index 6644b81ef2a9d59..56fa73c84ad664b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestSymbolAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/function_symbol/TestSymbolAPI.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/hello_world/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/hello_world/Makefile index 9976203b63bb0d7..73625f4733f0f53 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/hello_world/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/hello_world/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../make - C_SOURCES := main.c # See TestHelloWorld.py, which specifies the executable name with a dictionary. EXE := hello_world -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py b/lldb/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py index 79f52d3ef8e81f8..a762dc97e39a8ab 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py @@ -4,8 +4,6 @@ import os -import sys -import time import lldb from lldbsuite.test.decorators import * @@ -108,7 +106,8 @@ def test_with_attach_to_process_with_id_api(self): @add_test_categories(['pyapi']) @skipIfiOSSimulator - @skipIfSanitized # FIXME: Hangs indefinitely. + @skipIfAsan # FIXME: Hangs indefinitely. + @expectedFailureNetBSD def test_with_attach_to_process_with_name_api(self): """Create target, spawn a process, and attach to it with process name.""" exe = '%s_%d'%(self.getBuildArtifact(self.testMethodName), os.getpid()) diff --git a/lldb/packages/Python/lldbsuite/test/python_api/interpreter/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/interpreter/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/interpreter/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/interpreter/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/interpreter/TestCommandInterpreterAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/interpreter/TestCommandInterpreterAPI.py index 2f31b0aebaa26d5..a920ce845b82044 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/interpreter/TestCommandInterpreterAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/interpreter/TestCommandInterpreterAPI.py @@ -3,7 +3,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -13,6 +12,7 @@ class CommandInterpreterAPICase(TestBase): mydir = TestBase.compute_mydir(__file__) + NO_DEBUG_INFO_TESTCASE = True def setUp(self): # Call super's setUp(). @@ -73,3 +73,19 @@ def test_with_process_launch_api(self): if self.TraceOn(): lldbutil.print_stacktraces(process) + + @add_test_categories(['pyapi']) + def test_command_output(self): + """Test command output handling.""" + ci = self.dbg.GetCommandInterpreter() + self.assertTrue(ci, VALID_COMMAND_INTERPRETER) + + # Test that a command which produces no output returns "" instead of + # None. + res = lldb.SBCommandReturnObject() + ci.HandleCommand("settings set use-color false", res) + self.assertTrue(res.Succeeded()) + self.assertIsNotNone(res.GetOutput()) + self.assertEquals(res.GetOutput(), "") + self.assertIsNotNone(res.GetError()) + self.assertEquals(res.GetError(), "") diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/Makefile index 69b74b5d7531337..c5fa38429c63a2d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c MAKE_DSYM :=NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/TestFrameUtils.py b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/TestFrameUtils.py index 4db6322e7513425..ec8d1f84ded8f86 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/TestFrameUtils.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/frame/TestFrameUtils.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/Makefile index 051354123495ed0..200bdafd69fe427 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CFLAGS_EXTRAS += -D__STDC_LIMIT_MACROS ENABLE_THREADS := YES CXX_SOURCES := main.cpp MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestLLDBIterator.py b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestLLDBIterator.py index a52b00e5faca580..52daaf5dc5830e1 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestLLDBIterator.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestLLDBIterator.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestRegistersIterator.py b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestRegistersIterator.py index 43ed1c93b51424b..fbb8bff412879c8 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestRegistersIterator.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/iter/TestRegistersIterator.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/Makefile index 93fc28b4ee0712e..938161724be55fa 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CFLAGS_EXTRAS += -D__STDC_LIMIT_MACROS ENABLE_THREADS := YES CXX_SOURCES := main.cpp MAKE_DSYM :=NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/TestPrintStackTraces.py b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/TestPrintStackTraces.py index 531f30e7af71762..805bb3152430cbd 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/TestPrintStackTraces.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/lldbutil/process/TestPrintStackTraces.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/module_section/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/module_section/Makefile index ee74ebae1f42e3b..5eed4cb698c425b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/module_section/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/module_section/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CFLAGS_EXTRAS += -D__STDC_LIMIT_MACROS ENABLE_THREADS := YES CXX_SOURCES := main.cpp b.cpp c.cpp MAKE_DSYM :=NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/module_section/TestModuleAndSection.py b/lldb/packages/Python/lldbsuite/test/python_api/module_section/TestModuleAndSection.py index 09dfcc5895aeb85..95d457697e7cf56 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/module_section/TestModuleAndSection.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/module_section/TestModuleAndSection.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/TestNameLookup.py b/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/TestNameLookup.py index ba68ca926d83135..e3678d97c83428e 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/TestNameLookup.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/name_lookup/TestNameLookup.py @@ -6,9 +6,6 @@ import unittest2 -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/objc_type/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/objc_type/Makefile index 31e57fe28a5856c..03b578913862cf3 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/objc_type/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/objc_type/Makefile @@ -1,9 +1,7 @@ -LEVEL = ../../make - OBJC_SOURCES := main.m CFLAGS_EXTRAS += -w -include $(LEVEL)/Makefile.rules +include Makefile.rules LDFLAGS += -framework Foundation diff --git a/lldb/packages/Python/lldbsuite/test/python_api/objc_type/TestObjCType.py b/lldb/packages/Python/lldbsuite/test/python_api/objc_type/TestObjCType.py index fd3bfa858e1253c..782ff8e771a780d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/objc_type/TestObjCType.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/objc_type/TestObjCType.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/process/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/process/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/process/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/process/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/process/TestProcessAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/process/TestProcessAPI.py index fc17e4a76c54e7a..d26933a4289d118 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/process/TestProcessAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/process/TestProcessAPI.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/process/io/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/process/io/Makefile index 5361f2a5bbeaa14..4aa78325888a4cb 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/process/io/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/process/io/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c EXE := process_io -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/process/io/TestProcessIO.py b/lldb/packages/Python/lldbsuite/test/python_api/process/io/TestProcessIO.py index e25083d6efb2908..99b91280e7840d8 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/process/io/TestProcessIO.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/process/io/TestProcessIO.py @@ -4,8 +4,6 @@ import os -import sys -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/process/read-mem-cstring/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/process/read-mem-cstring/Makefile index f3414925f32bc86..6bc1b47f1f3df03 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/process/read-mem-cstring/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/process/read-mem-cstring/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - C_SOURCES := main.c EXE := read-mem-cstring -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Test-rdar-12481949.py b/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Test-rdar-12481949.py index 1d042b69287f5dd..8d6a6f14f68e50c 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Test-rdar-12481949.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/rdar-12481949/Test-rdar-12481949.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbdata/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/sbdata/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbdata/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/sbdata/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py b/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py index ee43cea9de48eaf..e5ee7687268747b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py @@ -4,7 +4,6 @@ from math import fabs -import os import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbstructureddata/TestStructuredDataAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/sbstructureddata/TestStructuredDataAPI.py index f19d01d5e695e3c..48c701ccce7b73c 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbstructureddata/TestStructuredDataAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/sbstructureddata/TestStructuredDataAPI.py @@ -4,9 +4,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_const_addrof/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_const_addrof/Makefile deleted file mode 100644 index a9c1edd1bdcf690..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_const_addrof/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -LEVEL = ../../make -CXX_SOURCES := main.cpp -CXXFLAGS += -std=c++11 -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/Makefile index ddffdcfb62d6125..b5256564c2f1627 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp # Clean renamed executable on 'make clean' clean: OBJECTS+=no_synth -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/TestSBValuePersist.py b/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/TestSBValuePersist.py index 3d0c72146d5ccbc..c7b3cdd1f1cb28b 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/TestSBValuePersist.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/sbvalue_persist/TestSBValuePersist.py @@ -3,9 +3,6 @@ from __future__ import print_function -import os -import sys -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/section/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/section/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/section/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/section/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/signals/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/signals/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/signals/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/signals/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/signals/TestSignalsAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/signals/TestSignalsAPI.py index 482f4a829b204ea..c06ee1411e22752 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/signals/TestSignalsAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/signals/TestSignalsAPI.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/TestSymbolContext.py b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/TestSymbolContext.py index 57988da1ed99b30..0c1ad83c84d6e4f 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/TestSymbolContext.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/TestSymbolContext.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile index 650a8b261bea9cb..ccaa0edcf5f77ea 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := file1.cpp file2.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py index 8640abe5625bce2..0025aa8ab95c8c3 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py @@ -4,7 +4,6 @@ from __future__ import print_function -import os import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/target/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/target/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/target/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/target/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/target/TestTargetAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/target/TestTargetAPI.py index 224dca77daa3efb..6e5be6e8f17a7af 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/target/TestTargetAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/target/TestTargetAPI.py @@ -7,8 +7,6 @@ import unittest2 import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/thread/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/thread/Makefile index aa257ae2bd2aced..30749db9a67cfd7 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/thread/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/thread/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES ?= main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/thread/TestThreadAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/thread/TestThreadAPI.py index d470d47b60b8e99..21c32fb257fa698 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/thread/TestThreadAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/thread/TestThreadAPI.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/type/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/type/Makefile index 8a7102e347af282..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/type/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/type/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/type/TestTypeList.py b/lldb/packages/Python/lldbsuite/test/python_api/type/TestTypeList.py index 40128d3ce94e37c..b3b321c6ca8c547 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/type/TestTypeList.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/type/TestTypeList.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/value/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py index 2299f1f1432dc15..bf8cbe34320be66 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py @@ -4,9 +4,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * @@ -163,11 +160,22 @@ def test(self): val_i.GetType()).AddressOf(), VALID_VARIABLE) + # Check that lldb.value implements truth testing. + self.assertFalse(lldb.value(frame0.FindVariable('bogus'))) + self.assertTrue(lldb.value(frame0.FindVariable('uinthex'))) + self.assertTrue(int(lldb.value(frame0.FindVariable('uinthex'))) == 3768803088, 'uinthex == 3768803088') self.assertTrue(int(lldb.value(frame0.FindVariable('sinthex'))) == -526164208, 'sinthex == -526164208') + # Check value_iter works correctly. + for v in [ + lldb.value(frame0.FindVariable('uinthex')), + lldb.value(frame0.FindVariable('sinthex')) + ]: + self.assertTrue(v) + self.assertTrue( frame0.FindVariable('uinthex').GetValueAsUnsigned() == 3768803088, 'unsigned uinthex == 3768803088') diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/TestChangeValueAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/TestChangeValueAPI.py index 18d39d9675c8686..108e813a61a47e9 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/TestChangeValueAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/change_values/TestChangeValueAPI.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/TestValueAPIEmptyClass.py b/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/TestValueAPIEmptyClass.py index 6fa72837484ee97..e17d5740258d7f4 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/TestValueAPIEmptyClass.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/empty_class/TestValueAPIEmptyClass.py @@ -1,8 +1,5 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/TestValueAPILinkedList.py b/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/TestValueAPILinkedList.py index 1b009521d253ad6..2f74ac669d2d993 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/TestValueAPILinkedList.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/value/linked_list/TestValueAPILinkedList.py @@ -6,9 +6,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/Makefile index 4b0e5814e3e3ec7..95cdf295fbcf9c5 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - C_SOURCES := main.c CFLAGS_EXTRAS += -std=c99 # See TestHelloWorld.py, which specifies the executable name with a dictionary. EXE := hello_world -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/TestValueVarUpdate.py b/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/TestValueVarUpdate.py index a83fd6e1239046a..b7d2c8ecbc84f1a 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/TestValueVarUpdate.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/value_var_update/TestValueVarUpdate.py @@ -3,17 +3,13 @@ from __future__ import print_function -import os -import sys -import time import lldb -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil -class HelloWorldTestCase(TestBase): +class ValueVarUpdateTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/Makefile index 0d70f25950192c1..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestSetWatchpoint.py b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestSetWatchpoint.py index de182fb30ee8215..b42a7552daedf58 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestSetWatchpoint.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestSetWatchpoint.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -33,7 +30,6 @@ def setUp(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_watch_val(self): """Exercise SBValue.Watch() API to set a watchpoint.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIgnoreCount.py b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIgnoreCount.py index 7f0e262b1c4af00..975273d1139c9cb 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIgnoreCount.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIgnoreCount.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -33,7 +30,6 @@ def setUp(self): bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") # Read-write watchpoints not supported on SystemZ @expectedFailureAll(archs=['s390x']) - @expectedFailureNetBSD def test_set_watch_ignore_count(self): """Test SBWatchpoint.SetIgnoreCount() API.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIter.py b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIter.py index d3aac68149d8d51..b60f6c5591c22ea 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIter.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/TestWatchpointIter.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * @@ -36,7 +33,6 @@ def setUp(self): @expectedFailureAll( oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") - @expectedFailureNetBSD def test_watch_iter(self): """Exercise SBTarget.watchpoint_iter() API to iterate on the available watchpoints.""" self.build() diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py index 3252dee88e01a4d..fda13cc8b384a99 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py @@ -5,8 +5,6 @@ from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -36,9 +34,9 @@ def setUp(self): @expectedFailureAll( oslist=["linux"], archs=["aarch64"], + triple=no_match(".*-android"), bugnumber="llvm.org/pr27710") @skipIfWindows # Watchpoints not supported on Windows, and this test hangs - @expectedFailureNetBSD def test_watchpoint_cond_api(self): """Test watchpoint condition API.""" self.build(dictionary=self.d) diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/Makefile b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/Makefile index 8817fff55e8c036..de4ec12b13cbce3 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/Makefile +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py index f3b3d9383bd3c0d..e45e70c647fc0b0 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import re -import time import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py index 0471bb5727d2801..b4b49aa673270f6 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/sample_test/Makefile b/lldb/packages/Python/lldbsuite/test/sample_test/Makefile index 0e5a537bbec8d2b..aa5f222c08e3167 100644 --- a/lldb/packages/Python/lldbsuite/test/sample_test/Makefile +++ b/lldb/packages/Python/lldbsuite/test/sample_test/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../make - C_SOURCES := main.c CFLAGS_EXTRAS += -std=c99 -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/sample_test/TestSampleTest.py b/lldb/packages/Python/lldbsuite/test/sample_test/TestSampleTest.py index 97674f5336a9c8f..a22670a72a1a47e 100644 --- a/lldb/packages/Python/lldbsuite/test/sample_test/TestSampleTest.py +++ b/lldb/packages/Python/lldbsuite/test/sample_test/TestSampleTest.py @@ -5,9 +5,6 @@ from __future__ import print_function -import os -import time -import re import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/sanity/TestModuleCacheSanity.py b/lldb/packages/Python/lldbsuite/test/sanity/TestModuleCacheSanity.py new file mode 100644 index 000000000000000..2ce00d4e7ca138d --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/sanity/TestModuleCacheSanity.py @@ -0,0 +1,22 @@ +""" +This is a sanity check that verifies that the module cache path is set +correctly and points inside the default test build directory. +""" + +from __future__ import print_function + +import lldb +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.lldbtest import * + + +class ModuleCacheSanityTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + NO_DEBUG_INFO_TESTCASE = True + + def test(self): + self.expect( + 'settings show symbols.clang-modules-cache-path', + substrs=['lldb-test-build.noindex', 'module-cache-lldb']) diff --git a/lldb/packages/Python/lldbsuite/test/settings/Makefile b/lldb/packages/Python/lldbsuite/test/settings/Makefile deleted file mode 100644 index d4bc9c6890432f5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/settings/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/settings/quoting/Makefile b/lldb/packages/Python/lldbsuite/test/settings/quoting/Makefile deleted file mode 100644 index 0d70f25950192c1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/settings/quoting/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -C_SOURCES := main.c - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/source-manager/Makefile b/lldb/packages/Python/lldbsuite/test/source-manager/Makefile index 5d19a27a2df2ea1..a78dc11e07134bb 100644 --- a/lldb/packages/Python/lldbsuite/test/source-manager/Makefile +++ b/lldb/packages/Python/lldbsuite/test/source-manager/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../make - C_SOURCES := main-copy.c -include $(LEVEL)/Makefile.rules +include Makefile.rules # Copy file into the build folder to enable the test to modify it. main-copy.c: main.c diff --git a/lldb/packages/Python/lldbsuite/test/source-manager/TestSourceManager.py b/lldb/packages/Python/lldbsuite/test/source-manager/TestSourceManager.py index 2ee691621c72a5f..6831e99836927b1 100644 --- a/lldb/packages/Python/lldbsuite/test/source-manager/TestSourceManager.py +++ b/lldb/packages/Python/lldbsuite/test/source-manager/TestSourceManager.py @@ -10,7 +10,6 @@ """ from __future__ import print_function -import re import lldb from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/terminal/TestSTTYBeforeAndAfter.py b/lldb/packages/Python/lldbsuite/test/terminal/TestSTTYBeforeAndAfter.py index a2d8be94acf7e2f..cb5a5cb934777ed 100644 --- a/lldb/packages/Python/lldbsuite/test/terminal/TestSTTYBeforeAndAfter.py +++ b/lldb/packages/Python/lldbsuite/test/terminal/TestSTTYBeforeAndAfter.py @@ -5,7 +5,6 @@ from __future__ import print_function -import os import lldb import six from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/test_categories.py b/lldb/packages/Python/lldbsuite/test/test_categories.py index 8a9fd742111874d..07f6e335edeee76 100644 --- a/lldb/packages/Python/lldbsuite/test/test_categories.py +++ b/lldb/packages/Python/lldbsuite/test/test_categories.py @@ -34,7 +34,6 @@ 'dyntype': 'Tests related to dynamic type support', 'stresstest': 'Tests related to stressing lldb limits', 'flakey': 'Flakey test cases, i.e. tests that do not reliably pass at each execution', - 'lldb-mi': 'lldb-mi tests', 'darwin-log': 'Darwin log tests', 'watchpoint': 'Watchpoint-related tests', } diff --git a/lldb/packages/Python/lldbsuite/test/test_result.py b/lldb/packages/Python/lldbsuite/test/test_result.py index de6fbea9dd28ac3..8573b3b6be6f5c9 100644 --- a/lldb/packages/Python/lldbsuite/test/test_result.py +++ b/lldb/packages/Python/lldbsuite/test/test_result.py @@ -45,7 +45,6 @@ def ioctl_GWINSZ(fd): import fcntl import termios import struct - import os cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) except: @@ -181,10 +180,9 @@ def addSuccess(self, test): return super(LLDBTestResult, self).addSuccess(test) - if configuration.parsable: - self.stream.write( - "PASS: LLDB (%s) :: %s\n" % - (self._config_string(test), str(test))) + self.stream.write( + "PASS: LLDB (%s) :: %s\n" % + (self._config_string(test), str(test))) if self.results_formatter: self.results_formatter.handle_event( EventBuilder.event_for_success(test)) @@ -221,10 +219,9 @@ def addError(self, test, err): method = getattr(test, "markError", None) if method: method() - if configuration.parsable: - self.stream.write( - "FAIL: LLDB (%s) :: %s\n" % - (self._config_string(test), str(test))) + self.stream.write( + "FAIL: LLDB (%s) :: %s\n" % + (self._config_string(test), str(test))) if self.results_formatter: # Handle build errors as a separate event type if self._isBuildError(err): @@ -239,10 +236,9 @@ def addCleanupError(self, test, err): method = getattr(test, "markCleanupError", None) if method: method() - if configuration.parsable: - self.stream.write( - "CLEANUP ERROR: LLDB (%s) :: %s\n" % - (self._config_string(test), str(test))) + self.stream.write( + "CLEANUP ERROR: LLDB (%s) :: %s\n" % + (self._config_string(test), str(test))) if self.results_formatter: self.results_formatter.handle_event( EventBuilder.event_for_cleanup_error( @@ -259,10 +255,9 @@ def addFailure(self, test, err): method = getattr(test, "markFailure", None) if method: method() - if configuration.parsable: - self.stream.write( - "FAIL: LLDB (%s) :: %s\n" % - (self._config_string(test), str(test))) + self.stream.write( + "FAIL: LLDB (%s) :: %s\n" % + (self._config_string(test), str(test))) if configuration.useCategories: test_categories = self.getCategoriesForTest(test) for category in test_categories: @@ -281,10 +276,9 @@ def addExpectedFailure(self, test, err, bugnumber): method = getattr(test, "markExpectedFailure", None) if method: method(err, bugnumber) - if configuration.parsable: - self.stream.write( - "XFAIL: LLDB (%s) :: %s\n" % - (self._config_string(test), str(test))) + self.stream.write( + "XFAIL: LLDB (%s) :: %s\n" % + (self._config_string(test), str(test))) if self.results_formatter: self.results_formatter.handle_event( EventBuilder.event_for_expected_failure( @@ -296,10 +290,9 @@ def addSkip(self, test, reason): method = getattr(test, "markSkippedTest", None) if method: method() - if configuration.parsable: - self.stream.write( - "UNSUPPORTED: LLDB (%s) :: %s (%s) \n" % - (self._config_string(test), str(test), reason)) + self.stream.write( + "UNSUPPORTED: LLDB (%s) :: %s (%s) \n" % + (self._config_string(test), str(test), reason)) if self.results_formatter: self.results_formatter.handle_event( EventBuilder.event_for_skip(test, reason)) @@ -310,10 +303,9 @@ def addUnexpectedSuccess(self, test, bugnumber): method = getattr(test, "markUnexpectedSuccess", None) if method: method(bugnumber) - if configuration.parsable: - self.stream.write( - "XPASS: LLDB (%s) :: %s\n" % - (self._config_string(test), str(test))) + self.stream.write( + "XPASS: LLDB (%s) :: %s\n" % + (self._config_string(test), str(test))) if self.results_formatter: self.results_formatter.handle_event( EventBuilder.event_for_unexpected_success( diff --git a/lldb/packages/Python/lldbsuite/test/test_runner/process_control.py b/lldb/packages/Python/lldbsuite/test/test_runner/process_control.py index 17a0b0f49630a9f..687f1058a11472a 100644 --- a/lldb/packages/Python/lldbsuite/test/test_runner/process_control.py +++ b/lldb/packages/Python/lldbsuite/test/test_runner/process_control.py @@ -503,7 +503,6 @@ def on_timeout_pre_kill(self): Do not attempt to reap the process (i.e. use wait()) in this method. That will interfere with the kill mechanism and return code processing. """ - pass def write(self, content): # pylint: disable=no-self-use diff --git a/lldb/packages/Python/lldbsuite/test/test_runner/test/test_process_control.py b/lldb/packages/Python/lldbsuite/test/test_runner/test/test_process_control.py index d1f7da67dc1bd3d..f31e33c292a6ef1 100755 --- a/lldb/packages/Python/lldbsuite/test/test_runner/test/test_process_control.py +++ b/lldb/packages/Python/lldbsuite/test/test_runner/test/test_process_control.py @@ -16,7 +16,6 @@ # System imports. import os import os.path -import platform import unittest import sys import threading diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/.categories b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/.categories deleted file mode 100644 index 8b5f00ce15ae4e5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/.categories +++ /dev/null @@ -1 +0,0 @@ -lldb-mi diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiEnvironmentCd.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiEnvironmentCd.py deleted file mode 100644 index d62224d976c9a2a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiEnvironmentCd.py +++ /dev/null @@ -1,38 +0,0 @@ -""" -Test lldb-mi -environment-cd command. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiEnvironmentCdTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin # Disabled while I investigate the failure on buildbot. - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_environment_cd(self): - """Test that 'lldb-mi --interpreter' changes working directory for inferior.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # cd to a different directory - self.runCmd("-environment-cd /tmp") - self.expect("\^done") - - # Run to the end - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("@\"cwd: /tmp\\r\\n\"", exactly=True) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiLibraryLoaded.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiLibraryLoaded.py deleted file mode 100644 index 92b7fdaca662761..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiLibraryLoaded.py +++ /dev/null @@ -1,60 +0,0 @@ -""" -Test lldb-mi =library-loaded notifications. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiLibraryLoadedTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_library_loaded(self): - """Test that 'lldb-mi --interpreter' shows the =library-loaded notifications.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Test =library-loaded - import os - path = self.getBuildArtifact(self.myexe) - symbols_path = os.path.join( - path + ".dSYM", - "Contents", - "Resources", - "DWARF", - "a.out") - - def add_slashes(x): return x.replace( - "\\", - "\\\\").replace( - "\"", - "\\\"").replace( - "\'", - "\\\'").replace( - "\0", - "\\\0") - self.expect( - [ - "=library-loaded,id=\"%s\",target-name=\"%s\",host-name=\"%s\",symbols-loaded=\"1\",symbols-path=\"%s\",loaded_addr=\"-\",size=\"[0-9]+\"" % - (add_slashes(path), - add_slashes(path), - add_slashes(path), - add_slashes(symbols_path)), - "=library-loaded,id=\"%s\",target-name=\"%s\",host-name=\"%s\",symbols-loaded=\"0\",loaded_addr=\"-\",size=\"[0-9]+\"" % - (add_slashes(path), - add_slashes(path), - add_slashes(path))]) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiPrompt.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiPrompt.py deleted file mode 100644 index 20e48ac8dc7c98a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/TestMiPrompt.py +++ /dev/null @@ -1,58 +0,0 @@ -""" -Test that the lldb-mi driver prints prompt properly. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiPromptTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_prompt(self): - """Test that 'lldb-mi --interpreter' echos '(gdb)' after commands and events.""" - - self.spawnLldbMi(args=None) - - # Test that lldb-mi is ready after unknown command - self.runCmd("-unknown-command") - self.expect( - "\^error,msg=\"Driver\. Received command '-unknown-command'\. It was not handled\. Command 'unknown-command' not in Command Factory\"") - self.expect(self.child_prompt, exactly=True) - - # Test that lldb-mi is ready after -file-exec-and-symbols - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - self.expect(self.child_prompt, exactly=True) - - # Test that lldb-mi is ready after -break-insert - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.expect(self.child_prompt, exactly=True) - - # Test that lldb-mi is ready after -exec-run - self.runCmd("-exec-run") - self.expect("\*running") - self.expect(self.child_prompt, exactly=True) - - # Test that lldb-mi is ready after BP hit - self.expect("\*stopped,reason=\"breakpoint-hit\"") - self.expect(self.child_prompt, exactly=True) - - # Test that lldb-mi is ready after -exec-continue - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect(self.child_prompt, exactly=True) - - # Test that lldb-mi is ready after program exited - self.expect("\*stopped,reason=\"exited-normally\"") - self.expect(self.child_prompt, exactly=True) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/TestMiBreak.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/TestMiBreak.py deleted file mode 100644 index eefc13feca49054..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/TestMiBreak.py +++ /dev/null @@ -1,361 +0,0 @@ -""" -Test lldb-mi -break-xxx commands. -""" - -from __future__ import print_function - - -import unittest2 -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiBreakTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr24717 - @expectedFailureNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_break_insert_function_pending(self): - """Test that 'lldb-mi --interpreter' works for pending function breakpoints.""" - - self.spawnLldbMi(args=None) - - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - self.runCmd("-break-insert -f printf") - # FIXME function name is unknown on Darwin, fullname should be ??, line is -1 - # self.expect("\^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"0xffffffffffffffff\",func=\"printf\",file=\"\?\?\",fullname=\"\?\?\",line=\"-1\",pending=\[\"printf\"\],times=\"0\",original-location=\"printf\"}") - self.expect( - "\^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"0xffffffffffffffff\",func=\"\?\?\",file=\"\?\?\",fullname=\"\?\?/\?\?\",line=\"0\",pending=\[\"printf\"\],times=\"0\",original-location=\"printf\"}") - # FIXME function name is unknown on Darwin, fullname should be ??, line -1 - # self.expect("=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"0xffffffffffffffff\",func=\"printf\",file=\"\?\?\",fullname=\"\?\?\",line=\"-1\",pending=\[\"printf\"\],times=\"0\",original-location=\"printf\"}") - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"0xffffffffffffffff\",func=\"\?\?\",file=\"\?\?\",fullname=\"\?\?/\?\?\",line=\"0\",pending=\[\"printf\"\],times=\"0\",original-location=\"printf\"}") - - self.runCmd("-exec-run") - self.expect("\^running") - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\".+?\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",pending=\[\"printf\"\],times=\"0\",original-location=\"printf\"}") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @expectedFailureNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_break_insert_function(self): - """Test that 'lldb-mi --interpreter' works for function breakpoints.""" - - self.spawnLldbMi(args=None) - - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - self.runCmd("-break-insert -f main") - self.expect( - "\^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",pending=\[\"main\"\],times=\"0\",original-location=\"main\"}") - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",pending=\[\"main\"\],times=\"0\",original-location=\"main\"}") - - self.runCmd("-exec-run") - self.expect("\^running") - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",pending=\[\"main\"\],times=\"0\",original-location=\"main\"}") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that -break-insert can set non-pending BP - self.runCmd("-break-insert printf") - # FIXME function name is unknown on Darwin - # self.expect("\^done,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"printf\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",times=\"0\",original-location=\"printf\"}") - self.expect( - "\^done,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\".+?\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",times=\"0\",original-location=\"printf\"}") - # FIXME function name is unknown on Darwin - # self.expect("=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"printf\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",times=\"0\",original-location=\"printf\"}") - self.expect( - "=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\".+?\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",times=\"0\",original-location=\"printf\"}") - # FIXME function name is unknown on Darwin - # self.expect("=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"printf\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",times=\"0\",original-location=\"printf\"}") - self.expect( - "=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\".+?\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\",times=\"0\",original-location=\"printf\"}") - - # Test that -break-insert fails if non-pending BP can't be resolved - self.runCmd("-break-insert unknown_func") - self.expect( - "\^error,msg=\"Command 'break-insert'. Breakpoint location 'unknown_func' not found\"") - - # Test that non-pending BP was set correctly - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\".*bkptno=\"2\"") - - # Test that we can set a BP using the file:func syntax - self.runCmd("-break-insert main.cpp:main") - self.expect("\^done,bkpt={number=\"4\"") - self.runCmd("-break-insert main.cpp:ns::foo1") - self.expect("\^done,bkpt={number=\"5\"") - # FIXME: quotes on filenames aren't handled correctly in lldb-mi. - #self.runCmd("-break-insert \"main.cpp\":main") - # self.expect("\^done,bkpt={number=\"6\"") - - # We should hit BP #5 on 'main.cpp:ns::foo1' - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\".*bkptno=\"5\"") - - # FIXME: this test is disabled due to lldb bug llvm.org/pr24271. - # Test that we can set a BP using the global namespace token - #self.runCmd("-break-insert ::main") - # self.expect("\^done,bkpt={number=\"7\"") - #self.runCmd("-break-insert main.cpp:::main") - # self.expect("\^done,bkpt={number=\"8\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_break_insert_file_line_pending(self): - """Test that 'lldb-mi --interpreter' works for pending file:line breakpoints.""" - - self.spawnLldbMi(args=None) - - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Find the line number to break inside main() and set - # pending BP - line = line_number('main.cpp', '// BP_return') - self.runCmd("-break-insert -f main.cpp:%d" % line) - self.expect( - "\^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"%d\",pending=\[\"main.cpp:%d\"\],times=\"0\",original-location=\"main.cpp:%d\"}" % - (line, - line, - line)) - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"%d\",pending=\[\"main.cpp:%d\"\],times=\"0\",original-location=\"main.cpp:%d\"}" % - (line, - line, - line)) - - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_break_insert_file_line(self): - """Test that 'lldb-mi --interpreter' works for file:line breakpoints.""" - - self.spawnLldbMi(args=None) - - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that -break-insert can set non-pending BP - line = line_number('main.cpp', '// BP_return') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect( - "\^done,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"%d\",times=\"0\",original-location=\"main.cpp:%d\"}" % - (line, line)) - self.expect( - "=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"%d\",times=\"0\",original-location=\"main.cpp:%d\"}" % - (line, line)) - - # Test that -break-insert fails if non-pending BP can't be resolved - self.runCmd("-break-insert unknown_file:1") - self.expect( - "\^error,msg=\"Command 'break-insert'. Breakpoint location 'unknown_file:1' not found\"") - - # Test that non-pending BP was set correctly - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_break_insert_file_line_absolute_path(self): - """Test that 'lldb-mi --interpreter' works for file:line breakpoints.""" - - self.spawnLldbMi(args=None) - - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - import os - path = os.path.join(self.getSourceDir(), "main.cpp") - line = line_number('main.cpp', '// BP_return') - self.runCmd("-break-insert %s:%d" % (path, line)) - self.expect("\^done,bkpt={number=\"2\"") - - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_break_insert_settings(self): - """Test that 'lldb-mi --interpreter' can set breakpoints accoridng to global options.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Set target.move-to-nearest-code=off and try to set BP #1 that - # shouldn't be hit - self.runCmd( - "-interpreter-exec console \"settings set target.move-to-nearest-code off\"") - self.expect("\^done") - line_decl = line_number('main.cpp', '// BP_main_decl') - line_in = line_number('main.cpp', '// BP_in_main') - self.runCmd("-break-insert -f main.cpp:%d" % line_in) - self.expect("\^done,bkpt={number=\"1\"") - - # Test that non-pending BP will not be set on non-existing line if target.move-to-nearest-code=off - # Note: this increases the BP number by 1 even though BP #2 is invalid. - self.runCmd("-break-insert main.cpp:%d" % line_in) - self.expect( - "\^error,msg=\"Command 'break-insert'. Breakpoint location 'main.cpp:%d' not found\"" % - line_in) - - # Set target.move-to-nearest-code=on and target.skip-prologue=on and - # set BP #3 & #4 - self.runCmd( - "-interpreter-exec console \"settings set target.move-to-nearest-code on\"") - self.runCmd( - "-interpreter-exec console \"settings set target.skip-prologue on\"") - self.expect("\^done") - self.runCmd("-break-insert main.cpp:%d" % line_in) - self.expect("\^done,bkpt={number=\"3\"") - self.runCmd("-break-insert main.cpp:%d" % line_decl) - self.expect("\^done,bkpt={number=\"4\"") - - # Set target.skip-prologue=off and set BP #5 - self.runCmd( - "-interpreter-exec console \"settings set target.skip-prologue off\"") - self.expect("\^done") - self.runCmd("-break-insert main.cpp:%d" % line_decl) - self.expect("\^done,bkpt={number=\"5\"") - - # Test that BP #5 is located before BP #4 - self.runCmd("-exec-run") - self.expect("\^running") - self.expect( - "\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"5\"") - - # Test that BP #4 is hit - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect( - "\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"4\"") - - # Test that BP #3 is hit - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect( - "\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"3\"") - - # Test that the target.language=pascal setting works and that BP #6 is - # NOT set - self.runCmd( - "-interpreter-exec console \"settings set target.language c\"") - self.expect("\^done") - self.runCmd("-break-insert ns.foo1") - self.expect("\^error") - - # Test that the target.language=c++ setting works and that BP #7 is hit - self.runCmd( - "-interpreter-exec console \"settings set target.language c++\"") - self.expect("\^done") - self.runCmd("-break-insert ns::foo1") - self.expect("\^done,bkpt={number=\"7\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect( - "\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"7\"") - - # Test that BP #1 and #2 weren't set by running to program exit - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfNetBSD - def test_lldbmi_break_enable_disable(self): - """Test that 'lldb-mi --interpreter' works for enabling / disabling breakpoints.""" - - self.spawnLldbMi(args=None) - - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - self.runCmd("-break-insert main") - self.expect( - "\^done,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\"") - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"main\"}") - - self.runCmd("-exec-run") - self.expect("\^running") - self.expect( - "=breakpoint-modified,bkpt={number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"main\"}") - self.expect( - "\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"1\"") - - self.runCmd("-break-insert ns::foo1") - self.expect( - "\^done,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo1\(\)\"") - self.expect( - "=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo1\(\)\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"ns::foo1\"}") - - self.runCmd("-break-insert ns::foo2") - self.expect( - "\^done,bkpt={number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo2\(\)\"") - self.expect( - "=breakpoint-modified,bkpt={number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo2\(\)\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"ns::foo2\"}") - - # disable the 2nd breakpoint - self.runCmd("-break-disable 2") - self.expect("\^done") - self.expect( - "=breakpoint-modified,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"n\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo1\(\)\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"ns::foo1\"}") - - # disable the 3rd breakpoint and re-enable - self.runCmd("-break-disable 3") - self.expect("\^done") - self.expect( - "=breakpoint-modified,bkpt={number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"n\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo2\(\)\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"ns::foo2\"}") - - self.runCmd("-break-enable 3") - self.expect("\^done") - self.expect( - "=breakpoint-modified,bkpt={number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"(?!0xffffffffffffffff)0x[0-9a-f]+\",func=\"ns::foo2\(\)\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\",times=\"0\",original-location=\"ns::foo2\"}") - - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect( - "\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"3\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/main.cpp deleted file mode 100644 index d81365ff415cdae..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/breakpoint/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -namespace ns -{ - int foo1(void) { printf("In foo1\n"); return 1; } - int foo2(void) { printf("In foo2\n"); return 2; } -} - -int x; -int main(int argc, char const *argv[]) { // BP_main_decl - printf("Print a formatted string so that GCC does not optimize this printf call: %s\n", argv[0]); - // This is a long comment with no code inside - // This is a long comment with no code inside - // This is a long comment with no code inside - // BP_in_main - // This is a long comment with no code inside - // This is a long comment with no code inside - // This is a long comment with no code inside - x = ns::foo1() + ns::foo2(); - return 0; // BP_return -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/TestMiExec.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/TestMiExec.py deleted file mode 100644 index 00c52dbe97aa94a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/TestMiExec.py +++ /dev/null @@ -1,141 +0,0 @@ -""" -Test lldb-mi -exec-xxx commands. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiExecTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_exec_abort(self): - """Test that 'lldb-mi --interpreter' works for -exec-abort.""" - - self.spawnLldbMi(args=None) - - # Test that -exec-abort fails on invalid process - self.runCmd("-exec-abort") - self.expect( - "\^error,msg=\"Command 'exec-abort'\. Invalid process during debug session\"") - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Set arguments - self.runCmd("-exec-arguments arg1") - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that arguments were passed - self.runCmd("-data-evaluate-expression argc") - self.expect("\^done,value=\"2\"") - - # Test that program may be aborted - self.runCmd("-exec-abort") - self.expect("\^done") - self.expect("\*stopped,reason=\"exited-normally\"") - - # Test that program can be run again - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that arguments were passed again - self.runCmd("-data-evaluate-expression argc") - self.expect("\^done,value=\"2\"") - - # Test that program may be aborted again - self.runCmd("-exec-abort") - self.expect("\^done") - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_exec_arguments_set(self): - """Test that 'lldb-mi --interpreter' can pass args using -exec-arguments.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Set arguments - self.runCmd( - "-exec-arguments --arg1 \"2nd arg\" third_arg fourth=\"4th arg\"") - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Check argc and argv to see if arg passed - # Note that exactly=True is needed to avoid extra escaping for re - self.runCmd("-data-evaluate-expression argc") - self.expect("\^done,value=\"5\"") - #self.runCmd("-data-evaluate-expression argv[1]") - # self.expect("\^done,value=\"--arg1\"") - self.runCmd("-interpreter-exec command \"print argv[1]\"") - self.expect("\\\"--arg1\\\"", exactly=True) - #self.runCmd("-data-evaluate-expression argv[2]") - #self.expect("\^done,value=\"2nd arg\"") - self.runCmd("-interpreter-exec command \"print argv[2]\"") - self.expect("\\\"2nd arg\\\"", exactly=True) - #self.runCmd("-data-evaluate-expression argv[3]") - # self.expect("\^done,value=\"third_arg\"") - self.runCmd("-interpreter-exec command \"print argv[3]\"") - self.expect("\\\"third_arg\\\"", exactly=True) - #self.runCmd("-data-evaluate-expression argv[4]") - #self.expect("\^done,value=\"fourth=\\\\\\\"4th arg\\\\\\\"\"") - self.runCmd("-interpreter-exec command \"print argv[4]\"") - self.expect("\\\"fourth=\\\\\\\"4th arg\\\\\\\"\\\"", exactly=True) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_exec_arguments_reset(self): - """Test that 'lldb-mi --interpreter' can reset previously set args using -exec-arguments.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Set arguments - self.runCmd("-exec-arguments arg1") - self.expect("\^done") - self.runCmd("-exec-arguments") - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Check argc to see if arg passed - self.runCmd("-data-evaluate-expression argc") - self.expect("\^done,value=\"1\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/main.cpp deleted file mode 100644 index 03f5b85ed3858b1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/control/main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -void -g_MyFunction(void) -{ - printf("g_MyFunction"); -} - -static void -s_MyFunction(void) -{ - g_MyFunction(); - printf("s_MyFunction"); -} - -int -main(int argc, char const *argv[]) -{ - printf("start"); - g_MyFunction(); - s_MyFunction(); - printf("exit"); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py deleted file mode 100644 index e138851d5cca36a..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py +++ /dev/null @@ -1,365 +0,0 @@ -""" -Test lldb-mi -data-xxx commands. -""" - -from __future__ import print_function - - -import unittest2 -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiDataTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_data_disassemble(self): - """Test that 'lldb-mi --interpreter' works for -data-disassemble.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Get an address for disassembling: use main - self.runCmd("-data-evaluate-expression main") - self.expect( - "\^done,value=\"0x[0-9a-f]+ \(a.out`main at main.cpp:[0-9]+\)\"") - addr = int(self.child.after.split("\"")[1].split(" ")[0], 16) - - # Test -data-disassemble: try to disassemble some address - self.runCmd( - "-data-disassemble -s %#x -e %#x -- 0" % - (addr, addr + 0x10)) - self.expect( - "\^done,asm_insns=\[{address=\"0x0*%x\",func-name=\"main\",offset=\"0\",size=\"[1-9]+\",inst=\".+?\"}," % - addr) - - # Test -data-disassemble without "--" - self.runCmd("-data-disassemble -s %#x -e %#x 0" % (addr, addr + 0x10)) - self.expect( - "\^done,asm_insns=\[{address=\"0x0*%x\",func-name=\"main\",offset=\"0\",size=\"[1-9]+\",inst=\".+?\"}," % - addr) - - # Test -data-disassemble with source line information - self.runCmd("-data-disassemble -s %#x -e %#x -- 1" % (addr, addr + 0x10)) - self.expect( - '\^done,asm_insns=\[src_and_asm_line={line="\d+",file="main.cpp",' - 'line_asm_insn=\[{address="0x0*%x",func-name="main",offset="0",size="[1-9]+",inst=".+?"}\],' - 'fullname="%s"}' % - (addr, os.path.abspath("main.cpp")) ) - - # Run to hello_world - self.runCmd("-break-insert -f hello_world") - self.expect("\^done,bkpt={number=\"2\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Get an address for disassembling: use hello_world - self.runCmd("-data-evaluate-expression hello_world") - self.expect( - "\^done,value=\"0x[0-9a-f]+ \(a.out`hello_world\(\) at main.cpp:[0-9]+\)\"") - addr = int(self.child.after.split("\"")[1].split(" ")[0], 16) - - # Test -data-disassemble: try to disassemble some address - self.runCmd( - "-data-disassemble -s %#x -e %#x -- 0" % - (addr, addr + 0x10)) - - # This matches a line similar to: - # Darwin: {address="0x0000000100000f18",func-name="hello_world()",offset="8",size="7",inst="leaq 0x65(%rip), %rdi; \"Hello, World!\\n\""}, - # Linux: {address="0x0000000000400642",func-name="hello_world()",offset="18",size="5",inst="callq 0x4004d0; symbol stub for: printf"} - # To match the escaped characters in the ouptut, we must use four backslashes per matches backslash - # See https://docs.python.org/2/howto/regex.html#the-backslash-plague - - # The MIPS and PPC64le disassemblers never print stub name - if self.isMIPS() or self.isPPC64le(): - self.expect(["{address=\"0x[0-9a-f]+\",func-name=\"hello_world\(\)\",offset=\"[0-9]+\",size=\"[0-9]+\",inst=\".+?; \\\\\"Hello, World!\\\\\\\\n\\\\\"\"}", - "{address=\"0x[0-9a-f]+\",func-name=\"hello_world\(\)\",offset=\"[0-9]+\",size=\"[0-9]+\",inst=\".+?\"}"]) - else: - self.expect(["{address=\"0x[0-9a-f]+\",func-name=\"hello_world\(\)\",offset=\"[0-9]+\",size=\"[0-9]+\",inst=\".+?; \\\\\"Hello, World!\\\\\\\\n\\\\\"\"}", - "{address=\"0x[0-9a-f]+\",func-name=\"hello_world\(\)\",offset=\"[0-9]+\",size=\"[0-9]+\",inst=\".+?; symbol stub for: printf\"}"]) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_data_read_memory_bytes_global(self): - """Test that -data-read-memory-bytes can access global buffers.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Get address of char[] (global) - self.runCmd("-data-evaluate-expression &g_CharArray") - self.expect("\^done,value=\"0x[0-9a-f]+\"") - addr = int(self.child.after.split("\"")[1], 16) - size = 5 - - # Test that -data-read-memory-bytes works for char[] type (global) - self.runCmd("-data-read-memory-bytes %#x %d" % (addr, size)) - self.expect( - "\^done,memory=\[{begin=\"0x0*%x\",offset=\"0x0+\",end=\"0x0*%x\",contents=\"1011121300\"}\]" % - (addr, addr + size)) - - # Get address of static char[] - self.runCmd("-data-evaluate-expression &s_CharArray") - self.expect("\^done,value=\"0x[0-9a-f]+\"") - addr = int(self.child.after.split("\"")[1], 16) - size = 5 - - # Test that -data-read-memory-bytes works for static char[] type - self.runCmd("-data-read-memory-bytes %#x %d" % (addr, size)) - self.expect( - "\^done,memory=\[{begin=\"0x0*%x\",offset=\"0x0+\",end=\"0x0*%x\",contents=\"2021222300\"}\]" % - (addr, addr + size)) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_data_read_memory_bytes_local(self): - """Test that -data-read-memory-bytes can access local buffers.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd('-file-exec-and-symbols %s' % self.myexe) - self.expect(r'\^done') - - # Run to BP_local_array_test_inner - line = line_number('main.cpp', '// BP_local_array_test_inner') - self.runCmd('-break-insert main.cpp:%d' % line) - self.expect(r'\^done,bkpt=\{number="1"') - self.runCmd('-exec-run') - self.expect(r'\^running') - self.expect(r'\*stopped,reason="breakpoint-hit"') - - # Get address of local char[] - self.runCmd('-data-evaluate-expression "(void *)&array"') - self.expect(r'\^done,value="0x[0-9a-f]+"') - addr = int(self.child.after.split('"')[1], 16) - size = 4 - - # Test that an unquoted hex literal address works - self.runCmd('-data-read-memory-bytes %#x %d' % (addr, size)) - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - # Test that a double-quoted hex literal address works - self.runCmd('-data-read-memory-bytes "%#x" %d' % (addr, size)) - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - # Test that unquoted expressions work - self.runCmd('-data-read-memory-bytes &array %d' % size) - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - # This doesn't work, and perhaps that makes sense, but it does work on - # GDB - self.runCmd('-data-read-memory-bytes array 4') - self.expect(r'\^error') - #self.expect(r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % (addr, addr + size)) - - self.runCmd('-data-read-memory-bytes &array[2] 2') - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="0304"\}\]' % - (addr + 2, addr + size)) - - self.runCmd('-data-read-memory-bytes first_element_ptr %d' % size) - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - # Test that double-quoted expressions work - self.runCmd('-data-read-memory-bytes "&array" %d' % size) - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - self.runCmd('-data-read-memory-bytes "&array[0] + 1" 3') - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="020304"\}\]' % - (addr + 1, addr + size)) - - self.runCmd('-data-read-memory-bytes "first_element_ptr + 1" 3') - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="020304"\}\]' % - (addr + 1, addr + size)) - - # Test the -o (offset) option - self.runCmd('-data-read-memory-bytes -o 1 &array 3') - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="020304"\}\]' % - (addr + 1, addr + size)) - - # Test the --thread option - self.runCmd('-data-read-memory-bytes --thread 1 &array 4') - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - # Test the --thread option with an invalid value - self.runCmd('-data-read-memory-bytes --thread 999 &array 4') - self.expect(r'\^error') - - # Test the --frame option (current frame) - self.runCmd('-data-read-memory-bytes --frame 0 &array 4') - self.expect( - r'\^done,memory=\[\{begin="0x0*%x",offset="0x0+",end="0x0*%x",contents="01020304"\}\]' % - (addr, addr + size)) - - # Test the --frame option (outer frame) - self.runCmd('-data-read-memory-bytes --frame 1 &array 4') - self.expect( - r'\^done,memory=\[\{begin="0x[0-9a-f]+",offset="0x0+",end="0x[0-9a-f]+",contents="05060708"\}\]') - - # Test the --frame option with an invalid value - self.runCmd('-data-read-memory-bytes --frame 999 &array 4') - self.expect(r'\^error') - - # Test all the options at once - self.runCmd( - '-data-read-memory-bytes --thread 1 --frame 1 -o 2 &array 2') - self.expect( - r'\^done,memory=\[\{begin="0x[0-9a-f]+",offset="0x0+",end="0x[0-9a-f]+",contents="0708"\}\]') - - # Test that an expression that references undeclared variables doesn't - # work - self.runCmd( - '-data-read-memory-bytes "&undeclared_array1 + undeclared_array2[1]" 2') - self.expect(r'\^error') - - # Test that the address argument is required - self.runCmd('-data-read-memory-bytes') - self.expect(r'\^error') - - # Test that the count argument is required - self.runCmd('-data-read-memory-bytes &array') - self.expect(r'\^error') - - # Test that the address and count arguments are required when other - # options are present - self.runCmd('-data-read-memory-bytes --thread 1') - self.expect(r'\^error') - - self.runCmd('-data-read-memory-bytes --thread 1 --frame 0') - self.expect(r'\^error') - - # Test that the count argument is required when other options are - # present - self.runCmd('-data-read-memory-bytes --thread 1 &array') - self.expect(r'\^error') - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_data_list_register_names(self): - """Test that 'lldb-mi --interpreter' works for -data-list-register-names.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -data-list-register-names: try to get all registers - self.runCmd("-data-list-register-names") - self.expect("\^done,register-names=\[\".+?\",") - - # Test -data-list-register-names: try to get specified registers - self.runCmd("-data-list-register-names 0") - self.expect("\^done,register-names=\[\".+?\"\]") - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_data_list_register_values(self): - """Test that 'lldb-mi --interpreter' works for -data-list-register-values.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -data-list-register-values: try to get all registers - self.runCmd("-data-list-register-values x") - self.expect( - "\^done,register-values=\[{number=\"0\",value=\"0x[0-9a-f]+\"") - - # Test -data-list-register-values: try to get specified registers - self.runCmd("-data-list-register-values x 0") - self.expect( - "\^done,register-values=\[{number=\"0\",value=\"0x[0-9a-f]+\"}\]") - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - def test_lldbmi_data_evaluate_expression(self): - """Test that 'lldb-mi --interpreter' works for -data-evaluate-expression.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - line = line_number('main.cpp', '// BP_local_2d_array_test') - self.runCmd('-break-insert main.cpp:%d' % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Check 2d array - self.runCmd("-data-evaluate-expression array2d") - self.expect( - "\^done,value=\"\{\[0\] = \{\[0\] = 1, \[1\] = 2, \[2\] = 3\}, \[1\] = \{\[0\] = 4, \[1\] = 5, \[2\] = 6\}\}\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/main.cpp deleted file mode 100644 index 5cac8fcc39094b0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/main.cpp +++ /dev/null @@ -1,60 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -const char g_CharArray[] = "\x10\x11\x12\x13"; -static const char s_CharArray[] = "\x20\x21\x22\x23"; - -void -local_array_test_inner() -{ - char array[] = { 0x01, 0x02, 0x03, 0x04 }; - char *first_element_ptr = &array[0]; - char g = g_CharArray[0]; - char s = s_CharArray[0]; - // BP_local_array_test_inner - return; -} - -void -local_array_test() -{ - char array[] = { 0x05, 0x06, 0x07, 0x08 }; - // BP_local_array_test - local_array_test_inner(); - return; -} - -void -local_2d_array_test() -{ - int array2d[2][3]; - array2d[0][0] = 1; - array2d[0][1] = 2; - array2d[0][2] = 3; - array2d[1][0] = 4; - array2d[1][1] = 5; - array2d[1][2] = 6; - return; // BP_local_2d_array_test -} - -void -hello_world() -{ - printf("Hello, World!\n"); // BP_hello_world -} - -int -main(int argc, char const *argv[]) -{ // FUNC_main - local_array_test(); - hello_world(); - local_2d_array_test(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/TestMiCliSupport.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/TestMiCliSupport.py deleted file mode 100644 index 21c08ab74f1723d..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/TestMiCliSupport.py +++ /dev/null @@ -1,240 +0,0 @@ -""" -Test lldb-mi can interpret CLI commands directly. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiCliSupportTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_target_create(self): - """Test that 'lldb-mi --interpreter' can create target by 'target create' command.""" - - self.spawnLldbMi(args=None) - - # Test that "target create" loads executable - self.runCmd("target create \"%s\"" % self.myexe) - self.expect("\^done") - - # Test that executable was loaded properly - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows. - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races. - def test_lldbmi_target_list(self): - """Test that 'lldb-mi --interpreter' can list targets by 'target list' command.""" - - self.spawnLldbMi(args=None) - - # Test that initially there are no targets. - self.runCmd("target list") - self.expect(r"~\"No targets.\\n\"") - self.expect("\^done") - - # Add target. - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - - # Test that "target list" lists added target. - self.runCmd("target list") - self.expect(r"~\"Current targets:\\n\* target #0: %s" % self.myexe) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_breakpoint_set(self): - """Test that 'lldb-mi --interpreter' can set breakpoint by 'breakpoint set' command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Test that "breakpoint set" sets a breakpoint - self.runCmd("breakpoint set --name main") - self.expect("\^done") - self.expect("=breakpoint-created,bkpt={number=\"1\"") - - # Test that breakpoint was set properly - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("=breakpoint-modified,bkpt={number=\"1\"") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_settings_set_target_run_args_before(self): - """Test that 'lldb-mi --interpreter' can set target arguments by 'setting set target.run-args' command before than target was created.""" - - self.spawnLldbMi(args=None) - - # Test that "settings set target.run-args" passes arguments to executable - # FIXME: --arg1 causes an error - self.runCmd( - "setting set target.run-args arg1 \"2nd arg\" third_arg fourth=\"4th arg\"") - self.expect("\^done") - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - - # Test that arguments were passed properly - self.expect("@\"argc=5\\\\r\\\\n\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_settings_set_target_run_args_after(self): - """Test that 'lldb-mi --interpreter' can set target arguments by 'setting set target.run-args' command after than target was created.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Test that "settings set target.run-args" passes arguments to executable - # FIXME: --arg1 causes an error - self.runCmd( - "setting set target.run-args arg1 \"2nd arg\" third_arg fourth=\"4th arg\"") - self.expect("\^done") - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - - # Test that arguments were passed properly - self.expect("@\"argc=5\\\\r\\\\n\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_process_launch(self): - """Test that 'lldb-mi --interpreter' can launch process by "process launch" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Set breakpoint - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - - # Test that "process launch" launches executable - self.runCmd("process launch") - self.expect("\^done") - - # Test that breakpoint hit - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_thread_step_in(self): - """Test that 'lldb-mi --interpreter' can step in by "thread step-in" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that "thread step-in" steps into (or not) printf depending on debug info - # Note that message is different in Darwin and Linux: - # Darwin: "*stopped,reason=\"end-stepping-range\",frame={addr=\"0x[0-9a-f]+\",func=\"main\",args=[{name=\"argc\",value=\"1\"},{name=\"argv\",value="0x[0-9a-f]+\"}],file=\"main.cpp\",fullname=\".+main.cpp\",line=\"\d\"},thread-id=\"1\",stopped-threads=\"all\" - # Linux: - # "*stopped,reason=\"end-stepping-range\",frame={addr="0x[0-9a-f]+\",func=\"__printf\",args=[{name=\"format\",value=\"0x[0-9a-f]+\"}],file=\"printf.c\",fullname=\".+printf.c\",line="\d+"},thread-id=\"1\",stopped-threads=\"all\" - self.runCmd("thread step-in") - self.expect("\^done") - it = self.expect(["@\"argc=1\\\\r\\\\n\"", - "\*stopped,reason=\"end-stepping-range\".+?func=\"(?!main).+?\""]) - if it == 0: - self.expect( - "\*stopped,reason=\"end-stepping-range\".+?func=\"main\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_thread_step_over(self): - """Test that 'lldb-mi --interpreter' can step over by "thread step-over" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that "thread step-over" steps over - self.runCmd("thread step-over") - self.expect("\^done") - self.expect("@\"argc=1\\\\r\\\\n\"") - self.expect("\*stopped,reason=\"end-stepping-range\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_thread_continue(self): - """Test that 'lldb-mi --interpreter' can continue execution by "thread continue" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that "thread continue" continues execution - self.runCmd("thread continue") - self.expect("\^done") - self.expect("@\"argc=1\\\\r\\\\n") - self.expect("\*stopped,reason=\"exited-normally\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/TestMiInterpreterExec.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/TestMiInterpreterExec.py deleted file mode 100644 index 67dbf9122d04216..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/TestMiInterpreterExec.py +++ /dev/null @@ -1,227 +0,0 @@ -""" -Test lldb-mi -interpreter-exec command. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiInterpreterExecTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_target_create(self): - """Test that 'lldb-mi --interpreter' can create target by 'target create' command.""" - - self.spawnLldbMi(args=None) - - # Test that "target create" loads executable - self.runCmd( - "-interpreter-exec console \"target create \\\"%s\\\"\"" % - self.myexe) - self.expect("\^done") - - # Test that executable was loaded properly - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows. - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races. - @skipIfDarwin - def test_lldbmi_target_list(self): - """Test that 'lldb-mi --interpreter' can list targets by 'target list' command.""" - - self.spawnLldbMi(args=None) - - # Test that initially there are no targets. - self.runCmd("-interpreter-exec console \"target list\"") - self.expect(r"~\"No targets.\\n\"") - - # Add target. - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - - # Test that "target list" lists added target. - self.runCmd("-interpreter-exec console \"target list\"") - self.expect(r"~\"Current targets:\\n\* target #0: %s" % self.myexe) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_breakpoint_set(self): - """Test that 'lldb-mi --interpreter' can set breakpoint by 'breakpoint set' command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Test that "breakpoint set" sets a breakpoint - self.runCmd("-interpreter-exec console \"breakpoint set --name main\"") - self.expect("\^done") - self.expect("=breakpoint-created,bkpt={number=\"1\"") - - # Test that breakpoint was set properly - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("=breakpoint-modified,bkpt={number=\"1\"") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - @skipIfLinux - def test_lldbmi_settings_set_target_run_args_before(self): - """Test that 'lldb-mi --interpreter' can set target arguments by 'setting set target.run-args' command before than target was created.""" - - self.spawnLldbMi(args=None) - - # Test that "settings set target.run-args" passes arguments to executable - # FIXME: --arg1 causes an error - self.runCmd( - "-interpreter-exec console \"setting set target.run-args arg1 \\\"2nd arg\\\" third_arg fourth=\\\"4th arg\\\"\"") - self.expect("\^done") - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - - # Test that arguments were passed properly - self.expect("@\"argc=5\\\\r\\\\n\"") - self.expect("@\"argv.0.=.*lldb-mi") - self.expect("@\"argv.1.=arg1\\\\r\\\\n\"") - self.expect("@\"argv.2.=2nd arg\\\\r\\\\n\"") - self.expect("@\"argv.3.=third_arg\\\\r\\\\n\"") - self.expect("@\"argv.4.=fourth=4th arg\\\\r\\\\n\"") - - # Test that program exited normally - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_process_launch(self): - """Test that 'lldb-mi --interpreter' can launch process by "process launch" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Set breakpoint - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - - # Test that "process launch" launches executable - self.runCmd("-interpreter-exec console \"process launch\"") - self.expect("\^done") - - # Test that breakpoint hit - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_thread_step_in(self): - """Test that 'lldb-mi --interpreter' can step in by "thread step-in" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that "thread step-in" steps into (or not) printf depending on debug info - # Note that message is different in Darwin and Linux: - # Darwin: "*stopped,reason=\"end-stepping-range\",frame={addr=\"0x[0-9a-f]+\",func=\"main\",args=[{name=\"argc\",value=\"1\"},{name=\"argv\",value="0x[0-9a-f]+\"}],file=\"main.cpp\",fullname=\".+main.cpp\",line=\"\d\"},thread-id=\"1\",stopped-threads=\"all\" - # Linux: - # "*stopped,reason=\"end-stepping-range\",frame={addr="0x[0-9a-f]+\",func=\"__printf\",args=[{name=\"format\",value=\"0x[0-9a-f]+\"}],file=\"printf.c\",fullname=\".+printf.c\",line="\d+"},thread-id=\"1\",stopped-threads=\"all\" - self.runCmd("-interpreter-exec console \"thread step-in\"") - self.expect("\^done") - it = self.expect(["@\"argc=1\\\\r\\\\n\"", - "\*stopped,reason=\"end-stepping-range\".+?func=\"(?!main).+?\""]) - if it == 0: - self.expect( - "\*stopped,reason=\"end-stepping-range\".+?func=\"main\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_thread_step_over(self): - """Test that 'lldb-mi --interpreter' can step over by "thread step-over" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that "thread step-over" steps over - self.runCmd("-interpreter-exec console \"thread step-over\"") - self.expect("\^done") - self.expect("@\"argc=1\\\\r\\\\n\"") - self.expect("\*stopped,reason=\"end-stepping-range\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @expectedFlakeyLinux("llvm.org/pr25470") - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_thread_continue(self): - """Test that 'lldb-mi --interpreter' can continue execution by "thread continue" command.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that "thread continue" continues execution - self.runCmd("-interpreter-exec console \"thread continue\"") - self.expect("\^done") - self.expect("@\"argc=1\\\\r\\\\n") - self.expect("\*stopped,reason=\"exited-normally\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/main.cpp deleted file mode 100644 index 131b5d596d39e01..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/interpreter/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -int -main(int argc, char const *argv[]) -{ - printf("argc=%d\n", argc); // BP_printf - for (int i = 0; i < argc; ++i) - printf("argv[%d]=%s\n", i, argv[i]); - return 0; // BP_return -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/TestMiLexicalScope.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/TestMiLexicalScope.py deleted file mode 100644 index a4186fdc4d01f14..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/TestMiLexicalScope.py +++ /dev/null @@ -1,68 +0,0 @@ -""" -Test lldb-mi -stack-list-locals -stack-list-variables and -var-create commands -for variables with the same name in sibling lexical scopes. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiLexicalScopeTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_var_create_in_sibling_scope(self): - """Test that 'lldb-mi --interpreter' works with sibling lexical scopes.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Breakpoint inside first scope - line = line_number('main.cpp', '// BP_first') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"\d+\"") - - # Breakpoint inside second scope - line = line_number('main.cpp', '// BP_second') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"\d+\"") - - # Run to the first scope - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Check that only variables a and b exist with expected values - self.runCmd("-stack-list-locals --thread 1 --frame 0 --all-values") - self.expect("\^done,locals=\[{name=\"a\",value=\"1\"},{name=\"b\",value=\"2\"}\]") - - # Create variable object for local variable b - self.runCmd("-var-create - * \"b\"") - self.expect( - "\^done,name=\"var\d+\",numchild=\"0\",value=\"2\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - - # Run to the second scope - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Check that only variables a and b exist with expected values, - # but variable b is different from previous breakpoint - self.runCmd("-stack-list-variables --thread 1 --frame 0 --all-values") - self.expect("\^done,variables=\[{name=\"a\",value=\"1\"},{name=\"b\",value=\"3\"}\]") - - # Create variable object for local variable b - self.runCmd("-var-create - * \"b\"") - self.expect( - "\^done,name=\"var\d+\",numchild=\"0\",value=\"3\",type=\"short\",thread-id=\"1\",has_more=\"0\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/main.cpp deleted file mode 100644 index facaa919b92dadf..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lexical_scope/main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -void -some_func (void) -{ -} - -void test_sibling_scope (void) -{ - int a = 1; - { - int b = 2; - some_func(); // BP_first - } - { - short b = 3; - some_func(); // BP_second - } -} - -int -main (int argc, char **argv) -{ - test_sibling_scope(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lldbmi_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lldbmi_testcase.py deleted file mode 100644 index 45af45701d639ea..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/lldbmi_testcase.py +++ /dev/null @@ -1,72 +0,0 @@ -""" -Base class for lldb-mi test cases. -""" - -from __future__ import print_function - - -from lldbsuite.test.lldbtest import * - - -class MiTestCaseBase(Base): - - mydir = None - myexe = None - mylog = None - NO_DEBUG_INFO_TESTCASE = True - - @classmethod - def classCleanup(cls): - if cls.myexe: - TestBase.RemoveTempFile(cls.myexe) - if cls.mylog: - TestBase.RemoveTempFile(cls.mylog) - - def setUp(self): - if not self.mydir: - raise("mydir is empty") - - Base.setUp(self) - self.buildDefault() - self.child_prompt = "(gdb)" - self.myexe = self.getBuildArtifact("a.out") - - def tearDown(self): - if self.TraceOn(): - print("\n\nContents of %s:" % self.mylog) - try: - print(open(self.mylog, "r").read()) - except IOError: - pass - Base.tearDown(self) - - def spawnLldbMi(self, exe=None, args=None, preconfig=True): - import pexpect - import sys - if sys.version_info.major == 3: - self.child = pexpect.spawnu("%s --interpreter %s" % ( - self.lldbMiExec, args if args else ""), cwd=self.getBuildDir()) - else: - self.child = pexpect.spawn("%s --interpreter %s" % ( - self.lldbMiExec, args if args else ""), cwd=self.getBuildDir()) - self.child.setecho(True) - self.mylog = self.getBuildArtifact("child.log") - self.child.logfile_read = open(self.mylog, "w") - # wait until lldb-mi has started up and is ready to go - self.expect(self.child_prompt, exactly=True) - if preconfig: - self.runCmd("settings set symbols.enable-external-lookup false") - self.expect("\^done") - self.expect(self.child_prompt, exactly=True) - if exe: - self.runCmd("-file-exec-and-symbols \"%s\"" % exe) - # Testcases expect to be able to match output of this command, - # see test_lldbmi_specialchars. - - def runCmd(self, cmd): - self.child.sendline(cmd) - - def expect(self, pattern, exactly=False, *args, **kwargs): - if exactly: - return self.child.expect_exact(pattern, *args, **kwargs) - return self.child.expect(pattern, *args, **kwargs) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/main.cpp deleted file mode 100644 index 10cd97eb1494a27..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -#ifdef _WIN32 - #include - #define getcwd _getcwd // suppress "deprecation" warning -#else - #include -#endif - -int -main(int argc, char const *argv[]) -{ - int a = 10; - - char buf[512]; - char *ans = getcwd(buf, sizeof(buf)); - if (ans) { - printf("cwd: %s\n", ans); - } - - printf("argc=%d\n", argc); // BP_printf - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/TestMiSignal.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/TestMiSignal.py deleted file mode 100644 index 303a9f65e94c7f1..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/TestMiSignal.py +++ /dev/null @@ -1,236 +0,0 @@ -""" -Test that the lldb-mi handles signals properly. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiSignalTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Fails on FreeBSD apparently due to thread race conditions - @expectedFailureNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfLinux - def test_lldbmi_stopped_when_interrupt(self): - """Test that 'lldb-mi --interpreter' interrupt and resume a looping app.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Set doloop=1 and run (to loop forever) - self.runCmd("-data-evaluate-expression \"do_loop=1\"") - self.expect("\^done,value=\"1\"") - self.runCmd("-exec-continue") - self.expect("\^running") - - # Test that -exec-interrupt can interrupt an execution - self.runCmd("-exec-interrupt") - self.expect( - "\*stopped,reason=\"signal-received\",signal-name=\"SIGINT\",signal-meaning=\"Interrupt\",.+?thread-id=\"1\",stopped-threads=\"all\"") - - # Continue (to loop forever) - self.runCmd("-exec-continue") - self.expect("\^running") - - # There's a chance that lldb didn't resume the process, we send an interruput but - # the process is not running yet. Give it some time to restart. 5 seconds ought to - # be enough for every modern CPU out there. - import time - time.sleep(5) - - # Test that Ctrl+C can interrupt an execution - self.child.sendintr() # FIXME: here uses self.child directly - self.expect( - "\*stopped,reason=\"signal-received\",signal-name=\"SIGINT\",signal-meaning=\"Interrupt\",.*thread-id=\"1\",stopped-threads=\"all\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Fails on FreeBSD apparently due to thread race conditions - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @expectedFailureNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stopped_when_stopatentry_local(self): - """Test that 'lldb-mi --interpreter' notifies after it was stopped on entry (local).""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run with stop-at-entry flag - self.runCmd("-interpreter-exec command \"process launch -s\"") - self.expect("\^done") - - # Test that *stopped is printed - # Note that message is different in Darwin and Linux: - # Darwin: "*stopped,reason=\"signal-received\",signal-name=\"SIGSTOP\",signal-meaning=\"Stop\",frame={level=\"0\",addr=\"0x[0-9a-f]+\",func=\"_dyld_start\",file=\"??\",fullname=\"??\",line=\"-1\"},thread-id=\"1\",stopped-threads=\"all\" - # Linux: - # "*stopped,reason=\"end-stepping-range\",frame={addr=\"0x[0-9a-f]+\",func=\"??\",args=[],file=\"??\",fullname=\"??\",line=\"-1\"},thread-id=\"1\",stopped-threads=\"all\" - self.expect( - [ - "\*stopped,reason=\"signal-received\",signal-name=\"SIGSTOP\",signal-meaning=\"Stop\",frame=\{level=\"0\",addr=\"0x[0-9a-f]+\",func=\"_dyld_start\",file=\"\?\?\",fullname=\"\?\?\",line=\"-1\"\},thread-id=\"1\",stopped-threads=\"all\"", - "\*stopped,reason=\"end-stepping-range\",frame={addr=\"0x[0-9a-f]+\",func=\"\?\?\",args=\[\],file=\"\?\?\",fullname=\"\?\?\",line=\"-1\"},thread-id=\"1\",stopped-threads=\"all\""]) - - # Run to main to make sure we have not exited the application - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfDarwin # pexpect is known to be unreliable on Darwin - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stopped_when_stopatentry_remote(self): - """Test that 'lldb-mi --interpreter' notifies after it was stopped on entry (remote).""" - - # Prepare debugserver - import lldbgdbserverutils - debugserver_exe = lldbgdbserverutils.get_debugserver_exe() - if not debugserver_exe: - self.skipTest("debugserver exe not found") - hostname = "localhost" - import random - # the same as GdbRemoteTestCaseBase.get_next_port - port = 12000 + random.randint(0, 3999) - import pexpect - debugserver_child = pexpect.spawn( - "%s %s:%d" % - (debugserver_exe, hostname, port)) - self.addTearDownHook(lambda: debugserver_child.terminate(force=True)) - - self.spawnLldbMi(args=None) - - # Connect to debugserver - self.runCmd( - "-interpreter-exec command \"platform select remote-macosx --sysroot /\"") - self.expect("\^done") - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - self.runCmd( - "-interpreter-exec command \"process connect connect://%s:%d\"" % - (hostname, port)) - self.expect("\^done") - - # Run with stop-at-entry flag - self.runCmd("-interpreter-exec command \"process launch -s\"") - self.expect("\^done") - - # Test that *stopped is printed - self.expect( - "\*stopped,reason=\"signal-received\",signal-name=\"SIGSTOP\",signal-meaning=\"Stop\",.+?thread-id=\"1\",stopped-threads=\"all\"") - - # Exit - self.runCmd("-gdb-exit") - self.expect("\^exit") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @expectedFailureNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stopped_when_segfault_local(self): - """Test that 'lldb-mi --interpreter' notifies after it was stopped when segfault occurred (local).""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Set do_segfault=1 and run (to cause a segfault error) - self.runCmd("-data-evaluate-expression \"do_segfault=1\"") - self.expect("\^done,value=\"1\"") - self.runCmd("-exec-continue") - self.expect("\^running") - - # Test that *stopped is printed - # Note that message is different in Darwin and Linux: - # Darwin: "*stopped,reason=\"exception-received\",exception=\"EXC_BAD_ACCESS (code=1, address=0x0)\",thread-id=\"1\",stopped-threads=\"all\"" - # Linux: "*stopped,reason=\"exception-received\",exception=\"invalid - # address (fault address: - # 0x0)\",thread-id=\"1\",stopped-threads=\"all\"" - self.expect(["\*stopped,reason=\"exception-received\",exception=\"EXC_BAD_ACCESS \(code=1, address=0x0\)\",thread-id=\"1\",stopped-threads=\"all\"", - "\*stopped,reason=\"exception-received\",exception=\"invalid address \(fault address: 0x0\)\",thread-id=\"1\",stopped-threads=\"all\""]) - - @skipUnlessDarwin - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stopped_when_segfault_remote(self): - """Test that 'lldb-mi --interpreter' notifies after it was stopped when segfault occurred (remote).""" - - # Prepare debugserver - import lldbgdbserverutils - debugserver_exe = lldbgdbserverutils.get_debugserver_exe() - if not debugserver_exe: - self.skipTest("debugserver exe not found") - hostname = "localhost" - import random - # the same as GdbRemoteTestCaseBase.get_next_port - port = 12000 + random.randint(0, 3999) - import pexpect - debugserver_child = pexpect.spawn( - "%s %s:%d" % - (debugserver_exe, hostname, port)) - self.addTearDownHook(lambda: debugserver_child.terminate(force=True)) - - self.spawnLldbMi(args=None) - - # Connect to debugserver - self.runCmd( - "-interpreter-exec command \"platform select remote-macosx --sysroot /\"") - self.expect("\^done") - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - self.runCmd( - "-interpreter-exec command \"process connect connect://%s:%d\"" % - (hostname, port)) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - # FIXME -exec-run doesn't work - # FIXME: self.runCmd("-exec-run") - self.runCmd("-interpreter-exec command \"process launch\"") - self.expect("\^done") # FIXME: self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Set do_segfault=1 and run (to cause a segfault error) - self.runCmd("-data-evaluate-expression \"do_segfault=1\"") - self.expect("\^done,value=\"1\"") - self.runCmd("-exec-continue") - self.expect("\^running") - - # Test that *stopped is printed - self.expect( - "\*stopped,reason=\"exception-received\",exception=\"EXC_BAD_ACCESS \(code=1, address=0x0\)\",thread-id=\"1\",stopped-threads=\"all\"") - - # Exit - self.runCmd("-gdb-exit") - self.expect("\^exit") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/main.cpp deleted file mode 100644 index a0c5637b82442b4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/signal/main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include - -int do_loop; -int do_segfault; - -int -main(int argc, char const *argv[]) -{ - if (do_loop) - { - do - sleep(1); - while (do_loop); // BP_loop_condition - } - - if (do_segfault) - { - int *null_ptr = NULL; - return *null_ptr; - } - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/TestMiStack.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/TestMiStack.py deleted file mode 100644 index c5c10bc139f5bf4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/TestMiStack.py +++ /dev/null @@ -1,558 +0,0 @@ -""" -Test lldb-mi -stack-xxx commands. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiStackTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_list_arguments(self): - """Test that 'lldb-mi --interpreter' can shows arguments.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that -stack-list-arguments lists empty stack arguments if range - # is empty - self.runCmd("-stack-list-arguments 0 1 0") - self.expect("\^done,stack-args=\[\]") - - # Test that -stack-list-arguments lists stack arguments without values - # (and that low-frame and high-frame are optional) - self.runCmd("-stack-list-arguments 0") - self.expect( - "\^done,stack-args=\[frame={level=\"0\",args=\[name=\"argc\",name=\"argv\"\]}") - self.runCmd("-stack-list-arguments --no-values") - self.expect( - "\^done,stack-args=\[frame={level=\"0\",args=\[name=\"argc\",name=\"argv\"\]}") - - # Test that -stack-list-arguments lists stack arguments with all values - self.runCmd("-stack-list-arguments 1 0 0") - self.expect( - "\^done,stack-args=\[frame={level=\"0\",args=\[{name=\"argc\",value=\"1\"},{name=\"argv\",value=\".*\"}\]}\]") - self.runCmd("-stack-list-arguments --all-values 0 0") - self.expect( - "\^done,stack-args=\[frame={level=\"0\",args=\[{name=\"argc\",value=\"1\"},{name=\"argv\",value=\".*\"}\]}\]") - - # Test that -stack-list-arguments lists stack arguments with simple - # values - self.runCmd("-stack-list-arguments 2 0 1") - self.expect( - "\^done,stack-args=\[frame={level=\"0\",args=\[{name=\"argc\",type=\"int\",value=\"1\"},{name=\"argv\",type=\"const char \*\*\",value=\".*\"}\]}") - self.runCmd("-stack-list-arguments --simple-values 0 1") - self.expect( - "\^done,stack-args=\[frame={level=\"0\",args=\[{name=\"argc\",type=\"int\",value=\"1\"},{name=\"argv\",type=\"const char \*\*\",value=\".*\"}\]}") - - # Test that an invalid low-frame is handled - # FIXME: -1 is treated as unsigned int - self.runCmd("-stack-list-arguments 0 -1 0") - # self.expect("\^error") - self.runCmd("-stack-list-arguments 0 0") - self.expect( - "\^error,msg=\"Command 'stack-list-arguments'\. Thread frame range invalid\"") - - # Test that an invalid high-frame is handled - # FIXME: -1 is treated as unsigned int - self.runCmd("-stack-list-arguments 0 0 -1") - # self.expect("\^error") - - # Test that a missing low-frame or high-frame is handled - self.runCmd("-stack-list-arguments 0 0") - self.expect( - "\^error,msg=\"Command 'stack-list-arguments'\. Thread frame range invalid\"") - - # Test that an invalid low-frame is handled - self.runCmd("-stack-list-arguments 0 0") - self.expect( - "\^error,msg=\"Command 'stack-list-arguments'\. Thread frame range invalid\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_list_locals(self): - """Test that 'lldb-mi --interpreter' can shows local variables.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test int local variables: - # Run to BP_local_int_test - line = line_number('main.cpp', '// BP_local_int_test') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"2\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-locals: use 0 or --no-values - self.runCmd("-stack-list-locals 0") - self.expect("\^done,locals=\[name=\"a\",name=\"b\"\]") - self.runCmd("-stack-list-locals --no-values") - self.expect("\^done,locals=\[name=\"a\",name=\"b\"\]") - - # Test -stack-list-locals: use 1 or --all-values - self.runCmd("-stack-list-locals 1") - self.expect( - "\^done,locals=\[{name=\"a\",value=\"10\"},{name=\"b\",value=\"20\"}\]") - self.runCmd("-stack-list-locals --all-values") - self.expect( - "\^done,locals=\[{name=\"a\",value=\"10\"},{name=\"b\",value=\"20\"}\]") - - # Test -stack-list-locals: use 2 or --simple-values - self.runCmd("-stack-list-locals 2") - self.expect( - "\^done,locals=\[{name=\"a\",type=\"int\",value=\"10\"},{name=\"b\",type=\"int\",value=\"20\"}\]") - self.runCmd("-stack-list-locals --simple-values") - self.expect( - "\^done,locals=\[{name=\"a\",type=\"int\",value=\"10\"},{name=\"b\",type=\"int\",value=\"20\"}\]") - - # Test struct local variable: - # Run to BP_local_struct_test - line = line_number('main.cpp', '// BP_local_struct_test') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"3\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-locals: use 0 or --no-values - self.runCmd("-stack-list-locals 0") - self.expect("\^done,locals=\[name=\"var_c\"\]") - self.runCmd("-stack-list-locals --no-values") - self.expect("\^done,locals=\[name=\"var_c\"\]") - - # Test -stack-list-locals: use 1 or --all-values - self.runCmd("-stack-list-locals 1") - self.expect( - "\^done,locals=\[{name=\"var_c\",value=\"{var_a = 10, var_b = 97 'a', inner_ = {var_d = 30}}\"}\]") - self.runCmd("-stack-list-locals --all-values") - self.expect( - "\^done,locals=\[{name=\"var_c\",value=\"{var_a = 10, var_b = 97 'a', inner_ = {var_d = 30}}\"}\]") - - # Test -stack-list-locals: use 2 or --simple-values - self.runCmd("-stack-list-locals 2") - self.expect("\^done,locals=\[{name=\"var_c\",type=\"my_type\"}\]") - self.runCmd("-stack-list-locals --simple-values") - self.expect("\^done,locals=\[{name=\"var_c\",type=\"my_type\"}\]") - - # Test array local variable: - # Run to BP_local_array_test - line = line_number('main.cpp', '// BP_local_array_test') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"4\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-locals: use 0 or --no-values - self.runCmd("-stack-list-locals 0") - self.expect("\^done,locals=\[name=\"array\"\]") - self.runCmd("-stack-list-locals --no-values") - self.expect("\^done,locals=\[name=\"array\"\]") - - # Test -stack-list-locals: use 1 or --all-values - self.runCmd("-stack-list-locals 1") - self.expect( - "\^done,locals=\[{name=\"array\",value=\"{\[0\] = 100, \[1\] = 200, \[2\] = 300}\"}\]") - self.runCmd("-stack-list-locals --all-values") - self.expect( - "\^done,locals=\[{name=\"array\",value=\"{\[0\] = 100, \[1\] = 200, \[2\] = 300}\"}\]") - - # Test -stack-list-locals: use 2 or --simple-values - self.runCmd("-stack-list-locals 2") - self.expect("\^done,locals=\[{name=\"array\",type=\"int \[3\]\"}\]") - self.runCmd("-stack-list-locals --simple-values") - self.expect("\^done,locals=\[{name=\"array\",type=\"int \[3\]\"}\]") - - # Test pointers as local variable: - # Run to BP_local_pointer_test - line = line_number('main.cpp', '// BP_local_pointer_test') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"5\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-locals: use 0 or --no-values - self.runCmd("-stack-list-locals 0") - self.expect( - "\^done,locals=\[name=\"test_str\",name=\"var_e\",name=\"ptr\"\]") - self.runCmd("-stack-list-locals --no-values") - self.expect( - "\^done,locals=\[name=\"test_str\",name=\"var_e\",name=\"ptr\"\]") - - # Test -stack-list-locals: use 1 or --all-values - self.runCmd("-stack-list-locals 1") - self.expect( - "\^done,locals=\[{name=\"test_str\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",value=\"24\"},{name=\"ptr\",value=\".*?\"}\]") - self.runCmd("-stack-list-locals --all-values") - self.expect( - "\^done,locals=\[{name=\"test_str\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",value=\"24\"},{name=\"ptr\",value=\".*?\"}\]") - - # Test -stack-list-locals: use 2 or --simple-values - self.runCmd("-stack-list-locals 2") - self.expect( - "\^done,locals=\[{name=\"test_str\",type=\"const char \*\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",type=\"int\",value=\"24\"},{name=\"ptr\",type=\"int \*\",value=\".*?\"}\]") - self.runCmd("-stack-list-locals --simple-values") - self.expect( - "\^done,locals=\[{name=\"test_str\",type=\"const char \*\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",type=\"int\",value=\"24\"},{name=\"ptr\",type=\"int \*\",value=\".*?\"}\]") - - # Test -stack-list-locals in a function with catch clause, - # having unnamed parameter - # Run to BP_catch_unnamed - line = line_number('main.cpp', '// BP_catch_unnamed') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"6\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-locals: use --no-values - self.runCmd("-stack-list-locals --no-values") - self.expect("\^done,locals=\[name=\"i\",name=\"j\"\]") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_list_variables(self): - """Test that 'lldb-mi --interpreter' can shows local variables and arguments.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test int local variables: - # Run to BP_local_int_test - line = line_number('main.cpp', '// BP_local_int_test_with_args') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"2\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-variables: use 0 or --no-values - self.runCmd("-stack-list-variables 0") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"c\"},{arg=\"1\",name=\"d\"},{name=\"a\"},{name=\"b\"}\]") - self.runCmd("-stack-list-variables --no-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"c\"},{arg=\"1\",name=\"d\"},{name=\"a\"},{name=\"b\"}\]") - - # Test -stack-list-variables: use 1 or --all-values - self.runCmd("-stack-list-variables 1") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"c\",value=\"30\"},{arg=\"1\",name=\"d\",value=\"40\"},{name=\"a\",value=\"10\"},{name=\"b\",value=\"20\"}\]") - self.runCmd("-stack-list-variables --all-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"c\",value=\"30\"},{arg=\"1\",name=\"d\",value=\"40\"},{name=\"a\",value=\"10\"},{name=\"b\",value=\"20\"}\]") - - # Test -stack-list-variables: use 2 or --simple-values - self.runCmd("-stack-list-variables 2") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"c\",type=\"int\",value=\"30\"},{arg=\"1\",name=\"d\",type=\"int\",value=\"40\"},{name=\"a\",type=\"int\",value=\"10\"},{name=\"b\",type=\"int\",value=\"20\"}\]") - self.runCmd("-stack-list-variables --simple-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"c\",type=\"int\",value=\"30\"},{arg=\"1\",name=\"d\",type=\"int\",value=\"40\"},{name=\"a\",type=\"int\",value=\"10\"},{name=\"b\",type=\"int\",value=\"20\"}\]") - - # Test struct local variable: - # Run to BP_local_struct_test - line = line_number('main.cpp', '// BP_local_struct_test_with_args') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"3\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-variables: use 0 or --no-values - self.runCmd("-stack-list-variables 0") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"var_e\"},{name=\"var_c\"}\]") - self.runCmd("-stack-list-variables --no-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"var_e\"},{name=\"var_c\"}\]") - - # Test -stack-list-variables: use 1 or --all-values - self.runCmd("-stack-list-variables 1") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"var_e\",value=\"{var_a = 20, var_b = 98 'b', inner_ = {var_d = 40}}\"},{name=\"var_c\",value=\"{var_a = 10, var_b = 97 'a', inner_ = {var_d = 30}}\"}\]") - self.runCmd("-stack-list-variables --all-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"var_e\",value=\"{var_a = 20, var_b = 98 'b', inner_ = {var_d = 40}}\"},{name=\"var_c\",value=\"{var_a = 10, var_b = 97 'a', inner_ = {var_d = 30}}\"}\]") - - # Test -stack-list-variables: use 2 or --simple-values - self.runCmd("-stack-list-variables 2") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"var_e\",type=\"my_type\"},{name=\"var_c\",type=\"my_type\"}\]") - self.runCmd("-stack-list-variables --simple-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"var_e\",type=\"my_type\"},{name=\"var_c\",type=\"my_type\"}\]") - - # Test array local variable: - # Run to BP_local_array_test - line = line_number('main.cpp', '// BP_local_array_test_with_args') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"4\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-variables: use 0 or --no-values - self.runCmd("-stack-list-variables 0") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"other_array\"},{name=\"array\"}\]") - self.runCmd("-stack-list-variables --no-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"other_array\"},{name=\"array\"}\]") - - # Test -stack-list-variables: use 1 or --all-values - self.runCmd("-stack-list-variables 1") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"other_array\",value=\".*?\"},{name=\"array\",value=\"{\[0\] = 100, \[1\] = 200, \[2\] = 300}\"}\]") - self.runCmd("-stack-list-variables --all-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"other_array\",value=\".*?\"},{name=\"array\",value=\"{\[0\] = 100, \[1\] = 200, \[2\] = 300}\"}\]") - - # Test -stack-list-variables: use 2 or --simple-values - self.runCmd("-stack-list-variables 2") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"other_array\",type=\"int \*\",value=\".*?\"},{name=\"array\",type=\"int \[3\]\"}\]") - self.runCmd("-stack-list-variables --simple-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"other_array\",type=\"int \*\",value=\".*?\"},{name=\"array\",type=\"int \[3\]\"}\]") - - # Test pointers as local variable: - # Run to BP_local_pointer_test - line = line_number('main.cpp', '// BP_local_pointer_test_with_args') - self.runCmd("-break-insert --file main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"5\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test -stack-list-variables: use 0 or --no-values - self.runCmd("-stack-list-variables 0") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"arg_str\"},{arg=\"1\",name=\"arg_ptr\"},{name=\"test_str\"},{name=\"var_e\"},{name=\"ptr\"}\]") - self.runCmd("-stack-list-variables --no-values") - self.expect( - "\^done,variables=\[{arg=\"1\",name=\"arg_str\"},{arg=\"1\",name=\"arg_ptr\"},{name=\"test_str\"},{name=\"var_e\"},{name=\"ptr\"}\]") - - # Test -stack-list-variables: use 1 or --all-values - self.runCmd("-stack-list-variables 1") - self.expect("\^done,variables=\[{arg=\"1\",name=\"arg_str\",value=\".*?String.*?\"},{arg=\"1\",name=\"arg_ptr\",value=\".*?\"},{name=\"test_str\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",value=\"24\"},{name=\"ptr\",value=\".*?\"}\]") - self.runCmd("-stack-list-variables --all-values") - self.expect("\^done,variables=\[{arg=\"1\",name=\"arg_str\",value=\".*?String.*?\"},{arg=\"1\",name=\"arg_ptr\",value=\".*?\"},{name=\"test_str\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",value=\"24\"},{name=\"ptr\",value=\".*?\"}\]") - - # Test -stack-list-variables: use 2 or --simple-values - self.runCmd("-stack-list-variables 2") - self.expect("\^done,variables=\[{arg=\"1\",name=\"arg_str\",type=\"const char \*\",value=\".*?String.*?\"},{arg=\"1\",name=\"arg_ptr\",type=\"int \*\",value=\".*?\"},{name=\"test_str\",type=\"const char \*\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",type=\"int\",value=\"24\"},{name=\"ptr\",type=\"int \*\",value=\".*?\"}\]") - self.runCmd("-stack-list-variables --simple-values") - self.expect("\^done,variables=\[{arg=\"1\",name=\"arg_str\",type=\"const char \*\",value=\".*?String.*?\"},{arg=\"1\",name=\"arg_ptr\",type=\"int \*\",value=\".*?\"},{name=\"test_str\",type=\"const char \*\",value=\".*?Rakaposhi.*?\"},{name=\"var_e\",type=\"int\",value=\"24\"},{name=\"ptr\",type=\"int \*\",value=\".*?\"}\]") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_info_depth(self): - """Test that 'lldb-mi --interpreter' can shows depth of the stack.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that -stack-info-depth works - # (and that max-depth is optional) - self.runCmd("-stack-info-depth") - self.expect("\^done,depth=\"[1-9]\"") - - # Test that max-depth restricts check of stack depth - # FIXME: max-depth argument is ignored - self.runCmd("-stack-info-depth 1") - # self.expect("\^done,depth=\"1\"") - - # Test that invalid max-depth argument is handled - # FIXME: max-depth argument is ignored - self.runCmd("-stack-info-depth -1") - # self.expect("\^error") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipUnlessDarwin - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_info_frame(self): - """Test that 'lldb-mi --interpreter' can show information about current frame.""" - - self.spawnLldbMi(args=None) - - # Test that -stack-info-frame fails when program isn't running - self.runCmd("-stack-info-frame") - self.expect( - "\^error,msg=\"Command 'stack-info-frame'\. Invalid process during debug session\"") - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that -stack-info-frame works when program was stopped on BP - self.runCmd("-stack-info-frame") - self.expect( - "\^done,frame=\{level=\"0\",addr=\"0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\"\}") - - # Select frame #1 - self.runCmd("-stack-select-frame 1") - self.expect("\^done") - - # Test that -stack-info-frame works when specified frame was selected - self.runCmd("-stack-info-frame") - self.expect( - "\^done,frame=\{level=\"1\",addr=\"0x[0-9a-f]+\",func=\".+?\",file=\"\?\?\",fullname=\"\?\?\",line=\"-1\"\}") - - # Test that -stack-info-frame fails when an argument is specified - # FIXME: unknown argument is ignored - self.runCmd("-stack-info-frame unknown_arg") - # self.expect("\^error") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_list_frames(self): - """Test that 'lldb-mi --interpreter' can lists the frames on the stack.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test stack frame: get frame #0 info - self.runCmd("-stack-list-frames 0 0") - self.expect( - "\^done,stack=\[frame=\{level=\"0\",addr=\"0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\"\}\]") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_stack_select_frame(self): - """Test that 'lldb-mi --interpreter' can choose current frame.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that -stack-select-frame requires 1 mandatory argument - self.runCmd("-stack-select-frame") - self.expect( - "\^error,msg=\"Command 'stack-select-frame'\. Command Args\. Validation failed. Mandatory args not found: frame_id\"") - - # Test that -stack-select-frame fails on invalid frame number - self.runCmd("-stack-select-frame 99") - self.expect( - "\^error,msg=\"Command 'stack-select-frame'\. Frame ID invalid\"") - - # Test that current frame is #0 - self.runCmd("-stack-info-frame") - self.expect( - "\^done,frame=\{level=\"0\",addr=\"0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\"\}") - - # Test that -stack-select-frame can select the selected frame - self.runCmd("-stack-select-frame 0") - self.expect("\^done") - - # Test that current frame is still #0 - self.runCmd("-stack-info-frame") - self.expect( - "\^done,frame=\{level=\"0\",addr=\"0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\"\}") - - # Test that -stack-select-frame can select frame #1 (parent frame) - self.runCmd("-stack-select-frame 1") - self.expect("\^done") - - # Test that current frame is #1 - # Note that message is different in Darwin and Linux: - # Darwin: "^done,frame={level=\"1\",addr=\"0x[0-9a-f]+\",func=\"start\",file=\"??\",fullname=\"??\",line=\"-1\"}" - # Linux: - # "^done,frame={level=\"1\",addr=\"0x[0-9a-f]+\",func=\".+\",file=\".+\",fullname=\".+\",line=\"\d+\"}" - self.runCmd("-stack-info-frame") - self.expect( - "\^done,frame=\{level=\"1\",addr=\"0x[0-9a-f]+\",func=\".+?\",file=\".+?\",fullname=\".+?\",line=\"(-1|\d+)\"\}") - - # Test that -stack-select-frame can select frame #0 (child frame) - self.runCmd("-stack-select-frame 0") - self.expect("\^done") - - # Test that current frame is #0 and it has the same information - self.runCmd("-stack-info-frame") - self.expect( - "\^done,frame=\{level=\"0\",addr=\"0x[0-9a-f]+\",func=\"main\",file=\"main\.cpp\",fullname=\".+?main\.cpp\",line=\"\d+\"\}") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/main.cpp deleted file mode 100644 index b054753a95c71a3..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/stack/main.cpp +++ /dev/null @@ -1,141 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -struct inner -{ - int var_d; -}; - -struct my_type -{ - int var_a; - char var_b; - struct inner inner_; -}; - -int -local_int_test(void) -{ - int a = 10, b = 20; - return 0; // BP_local_int_test -} - -int -local_int_test_with_args(int c, int d) -{ - int a = 10, b = 20; - return 0; // BP_local_int_test_with_args -} - -int -local_struct_test(void) -{ - struct my_type var_c; - var_c.var_a = 10; - var_c.var_b = 'a'; - var_c.inner_.var_d = 30; - return 0; // BP_local_struct_test -} - -int local_struct_test_with_args(struct my_type var_e) -{ - struct my_type var_c; - var_c.var_a = 10; - var_c.var_b = 'a'; - var_c.inner_.var_d = 30; - return 0; // BP_local_struct_test_with_args -} - -int -local_array_test(void) -{ - int array[3]; - array[0] = 100; - array[1] = 200; - array[2] = 300; - return 0; // BP_local_array_test -} - -int -local_array_test_with_args(int* other_array) -{ - int array[3]; - array[0] = 100; - array[1] = 200; - array[2] = 300; - return 0; // BP_local_array_test_with_args -} - -int -local_pointer_test(void) -{ - const char *test_str = "Rakaposhi"; - int var_e = 24; - int *ptr = &var_e; - return 0; // BP_local_pointer_test -} - -int -local_pointer_test_with_args(const char *arg_str, int *arg_ptr) -{ - const char *test_str = "Rakaposhi"; - int var_e = 24; - int *ptr = &var_e; - return 0; // BP_local_pointer_test_with_args -} - -int do_tests_with_args() -{ - local_int_test_with_args(30, 40); - - struct my_type var_e; - var_e.var_a = 20; - var_e.var_b = 'b'; - var_e.inner_.var_d = 40; - local_struct_test_with_args(var_e); - - int array[3]; - array[0] = 400; - array[1] = 500; - array[2] = 600; - local_array_test_with_args(array); - - const char *test_str = "String"; - int var_z = 25; - int *ptr = &var_z; - local_pointer_test_with_args(test_str, ptr); - - return 0; -} - -void catch_unnamed_test() -{ - try - { - int i = 1, j = 2; - throw std::exception(); // BP_catch_unnamed - } - catch(std::exception&) - { - } -} - -int -main(int argc, char const *argv[]) -{ - local_int_test(); - local_struct_test(); - local_array_test(); - local_pointer_test(); - catch_unnamed_test(); - - do_tests_with_args(); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/TestMiStartupOptions.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/TestMiStartupOptions.py deleted file mode 100644 index f94564e23c4f8fa..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/TestMiStartupOptions.py +++ /dev/null @@ -1,335 +0,0 @@ -""" -Test lldb-mi startup options. -""" - -from __future__ import print_function - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -import os - -class MiStartupOptionsTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - @skipIfLinux - def test_lldbmi_executable_option_file(self): - """Test that 'lldb-mi --interpreter %s' loads executable file.""" - - self.spawnLldbMi(exe=self.myexe) - - # Test that the executable is loaded when file was specified - self.expect("-file-exec-and-symbols \"%s\"" % self.myexe) - self.expect("\^done") - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Continue - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - def test_lldbmi_executable_option_unknown_file(self): - """Test that 'lldb-mi --interpreter %s' fails on unknown executable file.""" - - # Prepare path to executable - path = "unknown_file" - - self.spawnLldbMi(exe=path) - - # Test that the executable isn't loaded when unknown file was specified - self.expect("-file-exec-and-symbols \"%s\"" % path) - self.expect( - "\^error,msg=\"Command 'file-exec-and-symbols'. Target binary '%s' is invalid. error: unable to find executable for '%s'\"" % - (path, path)) - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - @skipIfLinux - def test_lldbmi_executable_option_absolute_path(self): - """Test that 'lldb-mi --interpreter %s' loads executable which is specified via absolute path.""" - - # Prepare path to executable - self.spawnLldbMi(exe=self.myexe) - - # Test that the executable is loaded when file was specified using - # absolute path - self.expect("-file-exec-and-symbols \"%s\"" % self.myexe) - self.expect("\^done") - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - @skipIfLinux - def test_lldbmi_executable_option_relative_path(self): - """Test that 'lldb-mi --interpreter %s' loads executable which is specified via relative path.""" - - # Prepare path to executable - path = os.path.relpath(self.myexe, self.getBuildDir()) - self.spawnLldbMi(exe=path) - - # Test that the executable is loaded when file was specified using - # relative path - self.expect("-file-exec-and-symbols \"%s\"" % path) - self.expect("\^done") - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - def test_lldbmi_executable_option_unknown_path(self): - """Test that 'lldb-mi --interpreter %s' fails on executable file which is specified via unknown path.""" - - # Prepare path to executable - path = "unknown_dir" + self.myexe - - self.spawnLldbMi(exe=path) - - # Test that the executable isn't loaded when file was specified using - # unknown path - self.expect("-file-exec-and-symbols \"%s\"" % path) - self.expect( - "\^error,msg=\"Command 'file-exec-and-symbols'. Target binary '%s' is invalid. error: unable to find executable for '%s'\"" % - (path, path)) - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - def copyScript(self, sourceFile): - """copy the script to builddir and replace a.out with the full path""" - destFile = os.path.join(os.path.dirname(self.myexe), - sourceFile+'.script') - with open(sourceFile, 'r') as src: - with open(destFile, 'w+') as dest: - dest.write(src.read().replace("a.out", self.myexe)) - return destFile - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @expectedFailureNetBSD - @skipIfDarwin - def test_lldbmi_source_option_start_script(self): - """Test that 'lldb-mi --interpreter' can execute user's commands after initial commands were executed.""" - - # Prepared source file - sourceFile = self.copyScript("start_script") - self.spawnLldbMi(args="--source %s" % sourceFile) - - # After '-file-exec-and-symbols a.out' - self.expect("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # After '-break-insert -f main' - self.expect("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - - # After '-exec-run' - self.expect("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # After '-break-insert main.cpp:BP_return' - line = line_number('main.cpp', '//BP_return') - self.expect("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"2\"") - - # After '-exec-continue' - self.expect("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that lldb-mi is ready after execution of --source start_script - self.expect(self.child_prompt, exactly=True) - - # Try to evaluate 'a' expression - self.runCmd("-data-evaluate-expression a") - self.expect("\^done,value=\"10\"") - self.expect(self.child_prompt, exactly=True) - os.unlink(sourceFile) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @expectedFailureNetBSD - @skipIfDarwin - def test_lldbmi_source_option_start_script_exit(self): - """Test that 'lldb-mi --interpreter' can execute a prepared file which passed via --source option.""" - - # Prepared source file - sourceFile = self.copyScript("start_script_exit") - self.spawnLldbMi(args="--source %s" % sourceFile) - - # After '-file-exec-and-symbols a.out' - self.expect("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # After '-break-insert -f main' - self.expect("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - - # After '-exec-run' - self.expect("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # After '-break-insert main.cpp:BP_return' - line = line_number('main.cpp', '//BP_return') - self.expect("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"2\"") - - # After '-exec-continue' - self.expect("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # After '-data-evaluate-expression a' - self.expect("-data-evaluate-expression a") - self.expect("\^done,value=\"10\"") - - # After '-gdb-exit' - self.expect("-gdb-exit") - self.expect("\^exit") - self.expect("\*stopped,reason=\"exited-normally\"") - os.unlink(sourceFile) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - def test_lldbmi_source_option_start_script_error(self): - """Test that 'lldb-mi --interpreter' stops execution of initial commands in case of error.""" - - # Prepared source file - sourceFile = self.copyScript("start_script_error") - self.spawnLldbMi(args="--source %s" % sourceFile, preconfig=False) - - # After 'settings set symbols.enable-external-lookup false' - self.expect("settings set symbols.enable-external-lookup false") - self.expect("\^done") - - # After '-file-exec-and-symbols a.out' - self.expect("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # After '-break-ins -f main' - self.expect("-break-ins -f main") - self.expect("\^error") - - # Test that lldb-mi is ready after execution of --source start_script - self.expect(self.child_prompt, exactly=True) - os.unlink(sourceFile) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - @skipIfLinux - def test_lldbmi_log_option(self): - """Test that 'lldb-mi --log' creates a log file in the current directory.""" - - logDirectory = self.getBuildDir() - self.spawnLldbMi(exe=self.myexe, args="--log") - - # Test that the executable is loaded when file was specified - self.expect("-file-exec-and-symbols \"%s\"" % self.myexe) - self.expect("\^done") - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - # Check log file is created - import glob - import os - logFile = glob.glob(logDirectory + "/lldb-mi-*.log") - - if not logFile: - self.fail("log file not found") - - # Delete log - for f in logFile: - os.remove(f) - - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - @skipIfLinux - def test_lldbmi_log_directory_option(self): - """Test that 'lldb-mi --log --log-dir' creates a log file in the directory specified by --log-dir.""" - - # Create log in temp directory - import tempfile - logDirectory = tempfile.gettempdir() - - self.spawnLldbMi(exe=self.myexe, - args="--log --log-dir=%s" % logDirectory) - - # Test that the executable is loaded when file was specified - self.expect("-file-exec-and-symbols \"%s\"" % self.myexe) - self.expect("\^done") - - # Test that lldb-mi is ready when executable was loaded - self.expect(self.child_prompt, exactly=True) - - # Run - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - # Check log file is created - import glob - import os - logFile = glob.glob(logDirectory + "/lldb-mi-*.log") - - if not logFile: - self.fail("log file not found") - - # Delete log - for f in logFile: - os.remove(f) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/main.cpp deleted file mode 100644 index 4a5aef94946f6d7..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -int -main(int argc, char const *argv[]) -{ - int a = 10; - return 0; //BP_return -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script deleted file mode 100644 index 511c02248258c9f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script +++ /dev/null @@ -1,5 +0,0 @@ --file-exec-and-symbols a.out --break-insert -f main --exec-run --break-insert main.cpp:14 --exec-continue diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script_error b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script_error deleted file mode 100644 index a1c581b08e0e2b0..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script_error +++ /dev/null @@ -1,3 +0,0 @@ -settings set symbols.enable-external-lookup false --file-exec-and-symbols a.out --break-ins -f main diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script_exit b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script_exit deleted file mode 100644 index 8379018c29df878..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/startup_options/start_script_exit +++ /dev/null @@ -1,7 +0,0 @@ --file-exec-and-symbols a.out --break-insert -f main --exec-run --break-insert main.cpp:14 --exec-continue --data-evaluate-expression a --gdb-exit diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/TestMiSyntax.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/TestMiSyntax.py deleted file mode 100644 index d9af9f55f93cac4..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/TestMiSyntax.py +++ /dev/null @@ -1,174 +0,0 @@ -""" -Test that the lldb-mi driver understands MI command syntax. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil -from functools import reduce - - -class MiSyntaxTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - @skipIfLinux - def test_lldbmi_tokens(self): - """Test that 'lldb-mi --interpreter' prints command tokens.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("000-file-exec-and-symbols %s" % self.myexe) - self.expect("000\^done") - - # Run to main - self.runCmd("100000001-break-insert -f main") - self.expect("100000001\^done,bkpt={number=\"1\"") - self.runCmd("2-exec-run") - self.expect("2\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Exit - self.runCmd("0000000000000000000003-exec-continue") - self.expect("0000000000000000000003\^running") - self.expect("\*stopped,reason=\"exited-normally\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_specialchars(self): - """Test that 'lldb-mi --interpreter' handles complicated strings.""" - - # Create an alias for myexe - complicated_myexe = self.getBuildArtifact("C--mpl-x file's`s @#$%^&*()_+-={}[]| name") - os.symlink(self.myexe, complicated_myexe) - self.addTearDownHook(lambda: os.unlink(complicated_myexe)) - - self.spawnLldbMi(exe=complicated_myexe) - - # Test that the executable was loaded - self.expect( - "-file-exec-and-symbols \"%s\"" % - complicated_myexe, exactly=True) - self.expect("\^done") - - # Check that it was loaded correctly - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfDarwin - @expectedFlakeyNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_output_grammar(self): - """Test that 'lldb-mi --interpreter' uses standard output syntax.""" - - self.spawnLldbMi(args=None) - self.child.setecho(False) - - # Run all commands simultaneously - self.runCmd("-unknown-command") - self.runCmd("-interpreter-exec command help") - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.runCmd("-break-insert -f main") - self.runCmd("-gdb-set target-async off") - self.runCmd("-exec-run") - self.runCmd("-gdb-set target-async on") - self.runCmd("-exec-continue") - self.runCmd("-gdb-exit") - - # Test that the program's output matches to the following pattern: - # ( async-record | stream-record )* [ result-record ] "(gdb)" nl - async_record = "^[0-9]*(\*|\+|=).+?\n" # 1 - stream_record = "^(~|@|&).+?\n" # 2 - result_record = "^[0-9]*\^.+?\n" # 3 - prompt = "^\(gdb\)\r\n" # 4 - command = "^\r\n" # 5 (it looks like empty line for pexpect) - error = "^.+?\n" # 6 - import pexpect # 7 (EOF) - all_patterns = [ - async_record, - stream_record, - result_record, - prompt, - command, - error, - pexpect.EOF] - - # Routines to get a bit-mask for the specified list of patterns - def get_bit(pattern): return all_patterns.index(pattern) - def get_mask(pattern): return 1 << get_bit(pattern) - def or_op(x, y): return x | y - def get_state(*args): return reduce(or_op, map(get_mask, args)) - - next_state = get_state(command) - while True: - it = self.expect(all_patterns) - matched_pattern = all_patterns[it] - - # Check that state is acceptable - if not (next_state & get_mask(matched_pattern)): - self.fail( - "error: inconsistent pattern '%s' for state %#x (matched string: %s)" % - (repr(matched_pattern), next_state, self.child.after)) - elif matched_pattern == async_record or matched_pattern == stream_record: - next_state = get_state( - async_record, - stream_record, - result_record, - prompt) - elif matched_pattern == result_record: - # FIXME lldb-mi prints async-records out of turn - # ``` - # ^done - # (gdb) - # ^running - # =thread-group-started,id="i1",pid="13875" - # (gdb) - # ``` - # Therefore to pass that test I changed the grammar's rule: - # next_state = get_state(prompt) - # to: - next_state = get_state(async_record, prompt) - elif matched_pattern == prompt: - # FIXME lldb-mi prints the prompt out of turn - # ``` - # ^done - # (gdb) - # ^running - # (gdb) - # (gdb) - # ``` - # Therefore to pass that test I changed the grammar's rule: - # next_state = get_state(async_record, stream_record, result_record, command, pexpect.EOF) - # to: - next_state = get_state( - async_record, - stream_record, - result_record, - prompt, - command, - pexpect.EOF) - elif matched_pattern == command: - next_state = get_state( - async_record, - stream_record, - result_record) - elif matched_pattern == pexpect.EOF: - break - else: - self.fail("error: pexpect returned an unknown state") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/main.cpp deleted file mode 100644 index 08afcc483d5ef10..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/syntax/main.cpp +++ /dev/null @@ -1,16 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -int -main(int argc, char const *argv[]) -{ - printf("'\n` - it's \\n\x12\"\\\""); - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/Makefile deleted file mode 100644 index b2550fe780d9fec..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := test_attach.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/TestMiTarget.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/TestMiTarget.py deleted file mode 100644 index f56d7ae8b6f815b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/TestMiTarget.py +++ /dev/null @@ -1,137 +0,0 @@ -""" -Test lldb-mi -target-xxx commands. -""" - -from __future__ import print_function - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiTargetTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # cannot attach to process on linux - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - @expectedFailureNetBSD - def test_lldbmi_target_attach_wait_for(self): - """Test that 'lldb-mi --interpreter' works for -target-attach -n --waitfor.""" - - # Build target executable with unique name - exeName = self.testMethodName - d = {'EXE': exeName} - self.buildProgram("test_attach.cpp", exeName) - self.addTearDownCleanup(dictionary=d) - - self.spawnLldbMi(args=None) - - # Load executable - # FIXME: -file-exec-and-sybmols is not required for target attach, but - # the test will not pass without this - self.runCmd("-file-exec-and-symbols %s" % self.getBuildArtifact(exeName)) - self.expect("\^done") - - # Set up attach - self.runCmd("-target-attach -n %s --waitfor" % exeName) - time.sleep(4) # Give attach time to setup - - # Start target process - self.spawnSubprocess(self.getBuildArtifact(exeName)) - self.addTearDownHook(self.cleanupSubprocesses) - self.expect("\^done") - - # Set breakpoint on printf - line = line_number('test_attach.cpp', '// BP_i++') - self.runCmd("-break-insert -f test_attach.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - - # Continue to breakpoint - self.runCmd("-exec-continue") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Detach - self.runCmd("-target-detach") - self.expect("\^done") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # cannot attach to process on linux - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - @expectedFailureNetBSD - def test_lldbmi_target_attach_name(self): - """Test that 'lldb-mi --interpreter' works for -target-attach -n .""" - - # Build target executable with unique name - exeName = self.testMethodName - d = {'EXE': exeName} - self.buildProgram("test_attach.cpp", exeName) - self.addTearDownCleanup(dictionary=d) - - # Start target process - targetProcess = self.spawnSubprocess(self.getBuildArtifact(exeName)) - self.addTearDownHook(self.cleanupSubprocesses) - - self.spawnLldbMi(args=None) - - # Set up atatch - self.runCmd("-target-attach -n %s" % exeName) - self.expect("\^done") - - # Set breakpoint on printf - line = line_number('test_attach.cpp', '// BP_i++') - self.runCmd("-break-insert -f test_attach.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - - # Continue to breakpoint - self.runCmd("-exec-continue") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Detach - self.runCmd("-target-detach") - self.expect("\^done") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # cannot attach to process on linux - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - @expectedFailureNetBSD - def test_lldbmi_target_attach_pid(self): - """Test that 'lldb-mi --interpreter' works for -target-attach .""" - - # Build target executable with unique name - exeName = self.testMethodName - d = {'EXE': exeName} - self.buildProgram("test_attach.cpp", exeName) - self.addTearDownCleanup(dictionary=d) - - # Start target process - targetProcess = self.spawnSubprocess( - self.getBuildArtifact(exeName)) - self.addTearDownHook(self.cleanupSubprocesses) - - self.spawnLldbMi(args=None) - - # Set up atatch - self.runCmd("-target-attach %d" % targetProcess.pid) - self.expect("\^done") - - # Set breakpoint on printf - line = line_number('test_attach.cpp', '// BP_i++') - self.runCmd("-break-insert -f test_attach.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - - # Continue to breakpoint - self.runCmd("-exec-continue") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Detach - self.runCmd("-target-detach") - self.expect("\^done") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/test_attach.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/test_attach.cpp deleted file mode 100644 index 8dca63fe55244e5..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/target/test_attach.cpp +++ /dev/null @@ -1,20 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -int -main(int argc, char const *argv[]) -{ - int i = 0; - for (;;) - { - i++; // BP_i++ - } - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/Makefile deleted file mode 100644 index b6fad6778428305..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := test_threadinfo.cpp - -ENABLE_THREADS := YES - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/TestMiThreadInfo.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/TestMiThreadInfo.py deleted file mode 100644 index 1d627baf378ca30..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/TestMiThreadInfo.py +++ /dev/null @@ -1,42 +0,0 @@ -""" -Test lldb-mi -thread-info command. -""" - -from __future__ import print_function - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiThreadInfoTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # pthreads not supported on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @expectedFailureNetBSD - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_thread_info(self): - """Test that -thread-info prints thread info and the current-thread-id""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - self.runCmd("-break-insert ThreadProc") - self.expect("\^done") - - # Run to the breakpoint - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - self.runCmd("-thread-info") - self.expect( - "\^done,threads=\[\{id=\"1\",(.*)\},\{id=\"2\",(.*)\],current-thread-id=\"2\"") - - self.runCmd("-gdb-quit") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/test_threadinfo.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/test_threadinfo.cpp deleted file mode 100644 index 1f444ece8c21b4e..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/threadinfo/test_threadinfo.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include - -using namespace std; - -void -ThreadProc() -{ - int i = 0; - i++; -} - -int -main() -{ - thread t(ThreadProc); - t.join(); - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/Makefile deleted file mode 100644 index 314f1cb2f077bb9..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiGdbSetShowPrint.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiGdbSetShowPrint.py deleted file mode 100644 index cf1da5bae9ce715..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiGdbSetShowPrint.py +++ /dev/null @@ -1,247 +0,0 @@ -# coding=utf8 -""" -Test lldb-mi -gdb-set and -gdb-show commands for 'print option-name'. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiGdbSetShowTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - # evaluates array when char-array-as-string is off - def eval_and_check_array(self, var, typ, length): - self.runCmd("-var-create - * %s" % var) - self.expect( - '\^done,name="var\d+",numchild="%d",value="\[%d\]",type="%s \[%d\]",thread-id="1",has_more="0"' % - (length, length, typ, length)) - - # evaluates any type which can be represented as string of characters - def eval_and_match_string(self, var, value, typ): - value = value.replace("\\", "\\\\").replace("\"", "\\\"") - self.runCmd("-var-create - * " + var) - self.expect( - '\^done,name="var\d+",numchild="[0-9]+",value="%s",type="%s",thread-id="1",has_more="0"' % - (value, typ)) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_gdb_set_show_print_char_array_as_string(self): - """Test that 'lldb-mi --interpreter' can print array of chars as string.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to BP_gdb_set_show_print_char_array_as_string_test - line = line_number( - 'main.cpp', - '// BP_gdb_set_show_print_char_array_as_string_test') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that default print char-array-as-string value is "off" - self.runCmd("-gdb-show print char-array-as-string") - self.expect("\^done,value=\"off\"") - - # Test that a char* is expanded to string when print - # char-array-as-string is "off" - self.eval_and_match_string( - "cp", - r'0x[0-9a-f]+ \"\\t\\\"hello\\\"\\n\"', - r'const char \*') - - # Test that a char[] isn't expanded to string when print - # char-array-as-string is "off" - self.eval_and_check_array("ca", "const char", 10) - - # Test that a char16_t* is expanded to string when print - # char-array-as-string is "off" - self.eval_and_match_string( - "u16p", - r'0x[0-9a-f]+ u\"\\t\\\"hello\\\"\\n\"', - r'const char16_t \*') - - # Test that a char16_t[] isn't expanded to string when print - # char-array-as-string is "off" - self.eval_and_check_array("u16a", "const char16_t", 10) - - # Test that a char32_t* is expanded to string when print - # char-array-as-string is "off" - self.eval_and_match_string( - "u32p", - r'0x[0-9a-f]+ U\"\\t\\\"hello\\\"\\n\"', - r'const char32_t \*') - - # Test that a char32_t[] isn't expanded to string when print - # char-array-as-string is "off" - self.eval_and_check_array("u32a", "const char32_t", 10) - - # Test that -gdb-set can set print char-array-as-string flag - self.runCmd("-gdb-set print char-array-as-string on") - self.expect("\^done") - self.runCmd("-gdb-set print char-array-as-string 1") - self.expect("\^done") - self.runCmd("-gdb-show print char-array-as-string") - self.expect("\^done,value=\"on\"") - - # Test that a char* with escape chars is expanded to string when print - # char-array-as-string is "on" - self.eval_and_match_string( - "cp", - r'0x[0-9a-f]+ \"\\t\\\"hello\\\"\\n\"', - r'const char \*') - - # Test that a char[] with escape chars is expanded to string when print - # char-array-as-string is "on" - self.eval_and_match_string( - "ca", - r'\"\\t\\\"hello\\\"\\n\"', - r'const char \[10\]') - - # Test that a char16_t* with escape chars is expanded to string when - # print char-array-as-string is "on" - self.eval_and_match_string( - "u16p", - r'0x[0-9a-f]+ u\"\\t\\\"hello\\\"\\n\"', - r'const char16_t \*') - - # Test that a char16_t[] with escape chars is expanded to string when - # print char-array-as-string is "on" - self.eval_and_match_string( - "u16a", - r'u\"\\t\\\"hello\\\"\\n\"', - r'const char16_t \[10\]') - - # Test that a char32_t* with escape chars is expanded to string when - # print char-array-as-string is "on" - self.eval_and_match_string( - "u32p", - r'0x[0-9a-f]+ U\"\\t\\\"hello\\\"\\n\"', - r'const char32_t \*') - - # Test that a char32_t[] with escape chars is expanded to string when - # print char-array-as-string is "on" - self.eval_and_match_string( - "u32a", - r'U\"\\t\\\"hello\\\"\\n\"', - r'const char32_t \[10\]') - - # Test russian unicode strings - self.eval_and_match_string( - "u16p_rus", - r'0x[0-9a-f]+ u\"\\\\Аламо-сквер\"', - r'const char16_t \*') - self.eval_and_match_string( - "u16a_rus", - r'u\"\\\\Бейвью\"', - r'const char16_t \[8\]') - self.eval_and_match_string( - "u32p_rus", - r'0x[0-9a-f]+ U\"\\\\Чайнатаун\"', - r'const char32_t \*') - self.eval_and_match_string( - "u32a_rus", - r'U\"\\\\Догпатч\"', - r'const char32_t \[9\]') - - # Test that -gdb-set print char-array-as-string fails if "on"/"off" - # isn't specified - self.runCmd("-gdb-set print char-array-as-string") - self.expect( - "\^error,msg=\"The request ''print' expects option-name and \"on\" or \"off\"' failed.\"") - - # Test that -gdb-set print char-array-as-string fails when option is - # unknown - self.runCmd("-gdb-set print char-array-as-string unknown") - self.expect( - "\^error,msg=\"The request ''print' expects option-name and \"on\" or \"off\"' failed.\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi working on Windows - @expectedFailureAll(compiler="gcc", bugnumber="llvm.org/pr23357") - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_gdb_set_show_print_aggregate_field_names(self): - """Test that 'lldb-mi --interpreter' can expand aggregates everywhere.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to BP_gdb_set_show_print_aggregate_field_names - line = line_number( - 'main.cpp', - '// BP_gdb_set_show_print_aggregate_field_names') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that default print aggregatep-field-names value is "on" - self.runCmd("-gdb-show print aggregate-field-names") - self.expect("\^done,value=\"on\"") - - # Set print expand-aggregates flag to "on" - self.runCmd("-gdb-set print expand-aggregates on") - self.expect("\^done") - - # Test that composite type is expanded with field name when print - # aggregate-field-names is "on" - self.runCmd("-var-create var1 * complx") - self.expect( - "\^done,name=\"var1\",numchild=\"3\",value=\"{i = 3, inner = {l = 3}, complex_ptr = 0x[0-9a-f]+}\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"") - - # Test that composite type[] is expanded with field name when print - # aggregate-field-names is "on" - self.runCmd("-var-create var2 * complx_array") - self.expect( - "\^done,name=\"var2\",numchild=\"2\",value=\"{\[0\] = {i = 4, inner = {l = 4}, complex_ptr = 0x[0-9a-f]+}, \[1\] = {i = 5, inner = {l = 5}, complex_ptr = 0x[0-9a-f]+}}\",type=\"complex_type \[2\]\",thread-id=\"1\",has_more=\"0\"") - - # Test that -gdb-set can set print aggregate-field-names flag - self.runCmd("-gdb-set print aggregate-field-names off") - self.expect("\^done") - self.runCmd("-gdb-set print aggregate-field-names 0") - self.expect("\^done") - self.runCmd("-gdb-show print aggregate-field-names") - self.expect("\^done,value=\"off\"") - - # Test that composite type is expanded without field name when print - # aggregate-field-names is "off" - self.runCmd("-var-create var3 * complx") - self.expect( - "\^done,name=\"var3\",numchild=\"3\",value=\"{3,\{3\},0x[0-9a-f]+}\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"") - - # Test that composite type[] is expanded without field name when print - # aggregate-field-names is "off" - self.runCmd("-var-create var4 * complx_array") - self.expect( - "\^done,name=\"var4\",numchild=\"2\",value=\"{{4,\{4\},0x[0-9a-f]+},{5,\{5\},0x[0-9a-f]+}}\",type=\"complex_type \[2\]\",thread-id=\"1\",has_more=\"0\"") - - # Test that -gdb-set print aggregate-field-names fails if "on"/"off" - # isn't specified - self.runCmd("-gdb-set print aggregate-field-names") - self.expect( - "\^error,msg=\"The request ''print' expects option-name and \"on\" or \"off\"' failed.\"") - - # Test that -gdb-set print aggregate-field-names fails when option is - # unknown - self.runCmd("-gdb-set print aggregate-field-names unknown") - self.expect( - "\^error,msg=\"The request ''print' expects option-name and \"on\" or \"off\"' failed.\"") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py deleted file mode 100644 index 5ef7d11b8ac0a16..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/TestMiVar.py +++ /dev/null @@ -1,465 +0,0 @@ -""" -Test lldb-mi -var-xxx commands. -""" - -from __future__ import print_function - - -import lldbmi_testcase -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class MiVarTestCase(lldbmi_testcase.MiTestCaseBase): - - mydir = TestBase.compute_mydir(__file__) - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_eval(self): - """Test that 'lldb-mi --interpreter' works for evaluating.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to program return - line = line_number('main.cpp', '// BP_return') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Print non-existant variable - self.runCmd("-var-create var1 * undef") - self.expect( - "\^error,msg=\"error: use of undeclared identifier \'undef\'\\\\n\"") - self.runCmd("-data-evaluate-expression undef") - self.expect( - "\^error,msg=\"error: use of undeclared identifier \'undef\'\\\\n\"") - - # Print global "g_MyVar", modify, delete and create again - self.runCmd("-data-evaluate-expression g_MyVar") - self.expect("\^done,value=\"3\"") - self.runCmd("-var-create var2 * g_MyVar") - self.expect( - "\^done,name=\"var2\",numchild=\"0\",value=\"3\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-evaluate-expression var2") - self.expect("\^done,value=\"3\"") - self.runCmd("-var-show-attributes var2") - self.expect("\^done,status=\"editable\"") - self.runCmd("-var-list-children var2") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - # Ensure -var-list-children also works with quotes - self.runCmd("-var-list-children \"var2\"") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - self.runCmd("-data-evaluate-expression \"g_MyVar=30\"") - self.expect("\^done,value=\"30\"") - self.runCmd("-var-update --all-values var2") - # self.expect("\^done,changelist=\[\{name=\"var2\",value=\"30\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\]") - # FIXME -var-update doesn't work - self.runCmd("-var-delete var2") - self.expect("\^done") - self.runCmd("-var-create var2 * g_MyVar") - self.expect( - "\^done,name=\"var2\",numchild=\"0\",value=\"30\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - - # Print static "s_MyVar", modify, delete and create again - self.runCmd("-data-evaluate-expression s_MyVar") - self.expect("\^done,value=\"30\"") - self.runCmd("-var-create var3 * s_MyVar") - self.expect( - "\^done,name=\"var3\",numchild=\"0\",value=\"30\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-evaluate-expression var3") - self.expect("\^done,value=\"30\"") - self.runCmd("-var-show-attributes var3") - self.expect("\^done,status=\"editable\"") - self.runCmd("-var-list-children var3") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - self.runCmd("-data-evaluate-expression \"s_MyVar=3\"") - self.expect("\^done,value=\"3\"") - self.runCmd("-var-update --all-values var3") - # self.expect("\^done,changelist=\[\{name=\"var3\",value=\"3\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\]") - # FIXME -var-update doesn't work - self.runCmd("-var-delete var3") - self.expect("\^done") - self.runCmd("-var-create var3 * s_MyVar") - self.expect( - "\^done,name=\"var3\",numchild=\"0\",value=\"3\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - - # Print local "b", modify, delete and create again - self.runCmd("-data-evaluate-expression b") - self.expect("\^done,value=\"20\"") - self.runCmd("-var-create var4 * b") - self.expect( - "\^done,name=\"var4\",numchild=\"0\",value=\"20\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-evaluate-expression var4") - self.expect("\^done,value=\"20\"") - self.runCmd("-var-show-attributes var4") - self.expect("\^done,status=\"editable\"") - self.runCmd("-var-list-children var4") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - self.runCmd("-data-evaluate-expression \"b=2\"") - self.expect("\^done,value=\"2\"") - self.runCmd("-var-update --all-values var4") - # self.expect("\^done,changelist=\[\{name=\"var4\",value=\"2\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\]") - # FIXME -var-update doesn't work - self.runCmd("-var-delete var4") - self.expect("\^done") - self.runCmd("-var-create var4 * b") - self.expect( - "\^done,name=\"var4\",numchild=\"0\",value=\"2\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - - # Print temp "a + b" - self.runCmd("-data-evaluate-expression \"a + b\"") - self.expect("\^done,value=\"12\"") - self.runCmd("-var-create var5 * \"a + b\"") - self.expect( - "\^done,name=\"var5\",numchild=\"0\",value=\"12\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-evaluate-expression var5") - self.expect("\^done,value=\"12\"") - self.runCmd("-var-show-attributes var5") - self.expect("\^done,status=\"editable\"") # FIXME editable or not? - self.runCmd("-var-list-children var5") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - - # Print argument "argv[0]" - self.runCmd("-data-evaluate-expression \"argv[0]\"") - self.expect( - "\^done,value=\"0x[0-9a-f]+ \\\\\\\".*?%s\\\\\\\"\"" % - self.myexe) - self.runCmd("-var-create var6 * \"argv[0]\"") - self.expect( - "\^done,name=\"var6\",numchild=\"1\",value=\"0x[0-9a-f]+ \\\\\\\".*?%s\\\\\\\"\",type=\"const char \*\",thread-id=\"1\",has_more=\"0\"" % - self.myexe) - self.runCmd("-var-evaluate-expression var6") - self.expect( - "\^done,value=\"0x[0-9a-f]+ \\\\\\\".*?%s\\\\\\\"\"" % - self.myexe) - self.runCmd("-var-show-attributes var6") - self.expect("\^done,status=\"editable\"") - self.runCmd("-var-list-children --all-values var6") - # FIXME: The name below is not correct. It should be "var.*argv[0]". - # FIXME -var-list-children shows invalid thread-id - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var6\.\*\$[0-9]+\",exp=\"\*\$[0-9]+\",numchild=\"0\",type=\"const char\",thread-id=\"4294967295\",value=\"47 '/'\",has_more=\"0\"\}\],has_more=\"0\"") - - # Print an expression with spaces and optional arguments - self.runCmd("-data-evaluate-expression \"a + b\"") - self.expect("\^done,value=\"12\"") - self.runCmd("-var-create var7 * \"a + b\" --thread 1 --frame 0") - self.expect( - "\^done,name=\"var7\",numchild=\"0\",value=\"12\",type=\"int\",thread-id=\"1\",has_more=\"0\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfDarwin - @skipIfRemote # We do not currently support remote debugging via the MI. - def test_lldbmi_var_update(self): - """Test that 'lldb-mi --interpreter' works for -var-update.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to BP_var_update_test_init - line = line_number('main.cpp', '// BP_var_update_test_init') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Setup variables - self.runCmd("-var-create var_l * l") - self.expect( - "\^done,name=\"var_l\",numchild=\"0\",value=\"1\",type=\"long\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-create var_complx * complx") - self.expect( - "\^done,name=\"var_complx\",numchild=\"3\",value=\"\{\.\.\.\}\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-create var_complx_array * complx_array") - self.expect( - "\^done,name=\"var_complx_array\",numchild=\"2\",value=\"\[2\]\",type=\"complex_type \[2\]\",thread-id=\"1\",has_more=\"0\"") - - # Go to BP_var_update_test_l - line = line_number('main.cpp', '// BP_var_update_test_l') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"2\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that var_l was updated - self.runCmd("-var-update --all-values var_l") - self.expect( - "\^done,changelist=\[\{name=\"var_l\",value=\"0\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\]") - - # Go to BP_var_update_test_complx - line = line_number('main.cpp', '// BP_var_update_test_complx') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"3\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that var_complx was updated - self.runCmd("-var-update --all-values var_complx") - self.expect( - "\^done,changelist=\[\{name=\"var_complx\",value=\"\{\.\.\.\}\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\]") - - # Go to BP_var_update_test_complx_array - line = line_number('main.cpp', '// BP_var_update_test_complx_array') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"4\"") - self.runCmd("-exec-continue") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test that var_complex_array was updated - self.runCmd("-var-update --all-values var_complx_array") - self.expect( - "\^done,changelist=\[\{name=\"var_complx_array\",value=\"\[2\]\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\]") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_var_create_register(self): - """Test that 'lldb-mi --interpreter' works for -var-create $regname.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to main - self.runCmd("-break-insert -f main") - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Find name of register 0 - self.runCmd("-data-list-register-names 0") - self.expect("\^done,register-names=\[\".+?\"\]") - register_name = self.child.after.split("\"")[1] - - # Create variable for register 0 - # Note that message is different in Darwin and Linux: - # Darwin: "^done,name=\"var_reg\",numchild=\"0\",value=\"0x[0-9a-f]+\",type=\"unsigned long\",thread-id=\"1\",has_more=\"0\" - # Linux: - # "^done,name=\"var_reg\",numchild=\"0\",value=\"0x[0-9a-f]+\",type=\"unsigned - # int\",thread-id=\"1\",has_more=\"0\" - self.runCmd("-var-create var_reg * $%s" % register_name) - self.expect( - "\^done,name=\"var_reg\",numchild=\"0\",value=\"0x[0-9a-f]+\",type=\"unsigned (long|int)\",thread-id=\"1\",has_more=\"0\"") - - # Assign value to variable - self.runCmd("-var-assign var_reg \"6\"") - # FIXME: the output has different format for 32bit and 64bit values - self.expect("\^done,value=\"0x0*?6\"") - - # Assert register 0 updated - self.runCmd("-data-list-register-values d 0") - self.expect("\^done,register-values=\[{number=\"0\",value=\"6\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi tests working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_var_list_children(self): - """Test that 'lldb-mi --interpreter' works for -var-list-children.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to BP_var_list_children_test - line = line_number('main.cpp', '// BP_var_list_children_test') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Create variable - self.runCmd("-var-create var_complx * complx") - self.expect( - "\^done,name=\"var_complx\",numchild=\"3\",value=\"\{\.\.\.\}\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-create var_complx_array * complx_array") - self.expect( - "\^done,name=\"var_complx_array\",numchild=\"2\",value=\"\[2\]\",type=\"complex_type \[2\]\",thread-id=\"1\",has_more=\"0\"") - self.runCmd("-var-create var_pcomplx * pcomplx") - self.expect( - "\^done,name=\"var_pcomplx\",numchild=\"2\",value=\"\{\.\.\.\}\",type=\"pcomplex_type\",thread-id=\"1\",has_more=\"0\"") - - # Test that -var-evaluate-expression can evaluate the children of - # created varobj - self.runCmd("-var-list-children var_complx") - self.runCmd("-var-evaluate-expression var_complx.i") - self.expect("\^done,value=\"3\"") - self.runCmd("-var-list-children var_complx_array") - self.runCmd("-var-evaluate-expression var_complx_array.[0]") - self.expect("\^done,value=\"\{...\}\"") - self.runCmd("-var-list-children var_pcomplx") - self.runCmd("-var-evaluate-expression var_pcomplx.complex_type") - self.expect("\^done,value=\"\{...\}\"") - - # Test that -var-list-children lists empty children if range is empty - # (and that print-values is optional) - self.runCmd("-var-list-children var_complx 0 0") - self.expect("\^done,numchild=\"0\",has_more=\"1\"") - self.runCmd("-var-list-children var_complx 99 0") - self.expect("\^done,numchild=\"0\",has_more=\"1\"") - self.runCmd("-var-list-children var_complx 99 3") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - - # Test that -var-list-children lists all children with their values - # (and that from and to are optional) - self.runCmd("-var-list-children --all-values var_complx") - self.expect( - "\^done,numchild=\"3\",children=\[child=\{name=\"var_complx\.i\",exp=\"i\",numchild=\"0\",type=\"int\",thread-id=\"1\",value=\"3\",has_more=\"0\"\},child=\{name=\"var_complx\.inner\",exp=\"inner\",numchild=\"1\",type=\"complex_type::\(anonymous struct\)\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\},child=\{name=\"var_complx\.complex_ptr\",exp=\"complex_ptr\",numchild=\"3\",type=\"complex_type \*\",thread-id=\"1\",value=\"0x[0-9a-f]+\",has_more=\"0\"\}\],has_more=\"0\"") - self.runCmd("-var-list-children --simple-values var_complx_array") - self.expect( - "\^done,numchild=\"2\",children=\[child=\{name=\"var_complx_array\.\[0\]\",exp=\"\[0\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\},child=\{name=\"var_complx_array\.\[1\]\",exp=\"\[1\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"") - self.runCmd("-var-list-children 0 var_pcomplx") - self.expect( - "\^done,numchild=\"2\",children=\[child=\{name=\"var_pcomplx\.complex_type\",exp=\"complex_type\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\},child={name=\"var_pcomplx\.complx\",exp=\"complx\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"") - - # Test that -var-list-children lists children without values - self.runCmd("-var-list-children 0 var_complx 0 1") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.i\",exp=\"i\",numchild=\"0\",type=\"int\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"") - self.runCmd("-var-list-children --no-values var_complx 0 1") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.i\",exp=\"i\",numchild=\"0\",type=\"int\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"") - self.runCmd("-var-list-children --no-values var_complx_array 0 1") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx_array\.\[0\]\",exp=\"\[0\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"") - self.runCmd("-var-list-children --no-values var_pcomplx 0 1") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_pcomplx\.complex_type\",exp=\"complex_type\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"1\"") - - # Test that -var-list-children lists children with all values - self.runCmd("-var-list-children 1 var_complx 1 2") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.inner\",exp=\"inner\",numchild=\"1\",type=\"complex_type::\(anonymous struct\)\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"1\"") - self.runCmd("-var-list-children --all-values var_complx 1 2") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.inner\",exp=\"inner\",numchild=\"1\",type=\"complex_type::\(anonymous struct\)\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"1\"") - self.runCmd("-var-list-children --all-values var_complx_array 1 2") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx_array\.\[1\]\",exp=\"\[1\]\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"0\"") - self.runCmd("-var-list-children --all-values var_pcomplx 1 2") - self.expect( - "\^done,numchild=\"1\",children=\[child={name=\"var_pcomplx\.complx\",exp=\"complx\",numchild=\"3\",type=\"complex_type\",thread-id=\"1\",value=\"\{\.\.\.\}\",has_more=\"0\"\}\],has_more=\"0\"") - - # Test that -var-list-children lists children with simple values - self.runCmd("-var-list-children 2 var_complx 2 4") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.complex_ptr\",exp=\"complex_ptr\",numchild=\"3\",type=\"complex_type \*\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"") - self.runCmd("-var-list-children --simple-values var_complx 2 4") - self.expect( - "\^done,numchild=\"1\",children=\[child=\{name=\"var_complx\.complex_ptr\",exp=\"complex_ptr\",numchild=\"3\",type=\"complex_type \*\",thread-id=\"1\",has_more=\"0\"\}\],has_more=\"0\"") - self.runCmd("-var-list-children --simple-values var_complx_array 2 4") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - self.runCmd("-var-list-children --simple-values var_pcomplx 2 4") - self.expect("\^done,numchild=\"0\",has_more=\"0\"") - - # Test that an invalid from is handled - # FIXME: -1 is treated as unsigned int - self.runCmd("-var-list-children 0 var_complx -1 0") - #self.expect("\^error,msg=\"Command 'var-list-children'\. Variable children range invalid\"") - - # Test that an invalid to is handled - # FIXME: -1 is treated as unsigned int - self.runCmd("-var-list-children 0 var_complx 0 -1") - #self.expect("\^error,msg=\"Command 'var-list-children'\. Variable children range invalid\"") - - # Test that a missing low-frame or high-frame is handled - self.runCmd("-var-list-children 0 var_complx 0") - self.expect( - "\^error,msg=\"Command 'var-list-children'. Variable children range invalid\"") - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_var_create_for_stl_types(self): - """Test that 'lldb-mi --interpreter' print summary for STL types.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to BP_gdb_set_show_print_char_array_as_string_test - line = line_number('main.cpp', '// BP_cpp_stl_types_test') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Test for std::string - self.runCmd("-var-create - * std_string") - self.expect( - '\^done,name="var\d+",numchild="[0-9]+",value="\\\\"hello\\\\"",type="std::[\S]*?string",thread-id="1",has_more="0"') - - @skipIfWindows # llvm.org/pr24452: Get lldb-mi working on Windows - @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known thread races - @skipIfLinux # llvm.org/pr22841: lldb-mi tests fail on all Linux buildbots - @skipIfRemote # We do not currently support remote debugging via the MI. - @skipIfDarwin - def test_lldbmi_var_create_for_unnamed_objects(self): - """Test that 'lldb-mi --interpreter' can expand unnamed structures and unions.""" - - self.spawnLldbMi(args=None) - - # Load executable - self.runCmd("-file-exec-and-symbols %s" % self.myexe) - self.expect("\^done") - - # Run to breakpoint - line = line_number('main.cpp', '// BP_unnamed_objects_test') - self.runCmd("-break-insert main.cpp:%d" % line) - self.expect("\^done,bkpt={number=\"1\"") - self.runCmd("-exec-run") - self.expect("\^running") - self.expect("\*stopped,reason=\"breakpoint-hit\"") - - # Evaluate struct_with_unions type and its children - self.runCmd("-var-create v0 * swu") - self.expect( - '\^done,name="v0",numchild="2",value="\{\.\.\.\}",type="struct_with_unions",thread-id="1",has_more="0"') - - self.runCmd("-var-list-children v0") - - # inspect the first unnamed union - self.runCmd("-var-list-children v0.$0") - self.runCmd("-var-evaluate-expression v0.$0.u_i") - self.expect('\^done,value="1"') - - # inspect the second unnamed union - self.runCmd("-var-list-children v0.$1") - self.runCmd("-var-evaluate-expression v0.$1.u1") - self.expect('\^done,value="-1"') - # inspect unnamed structure - self.runCmd("-var-list-children v0.$1.$1") - self.runCmd("-var-evaluate-expression v0.$1.$1.s1") - self.expect('\^done,value="-1"') diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/main.cpp deleted file mode 100644 index 43ae8be2118e78f..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-mi/variable/main.cpp +++ /dev/null @@ -1,151 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include - -struct complex_type -{ - int i; - struct { long l; } inner; - complex_type *complex_ptr; -}; - -struct pcomplex_type : complex_type -{ - pcomplex_type(const complex_type &complx_base, const complex_type &complx_member) - : complex_type(complx_base), complx(complx_member) { } - complex_type complx; - static int si; -}; - -int pcomplex_type::si; - -struct struct_with_unions -{ - struct_with_unions(): u_i(1), u1(-1) {} - union - { - int u_i; - int u_j; - }; - union - { - int u1; - struct - { - short s1; - short s2; - }; - }; -}; - -void -var_update_test(void) -{ - long l = 1; - complex_type complx = { 3, { 3L }, &complx }; - complex_type complx_array[2] = { { 4, { 4L }, &complx_array[1] }, { 5, { 5 }, &complx_array[0] } }; - // BP_var_update_test_init - - l = 0; - // BP_var_update_test_l - - complx.inner.l = 2; - // BP_var_update_test_complx - - complx_array[1].inner.l = 4; - // BP_var_update_test_complx_array -} - -void -var_list_children_test(void) -{ - complex_type complx = { 3, { 3L }, &complx }; - complex_type complx_array[2] = { { 4, { 4L }, &complx_array[1] }, { 5, { 5 }, &complx_array[0] } }; - pcomplex_type pcomplx({ 6, { 6L }, &pcomplx}, { 7, { 7L }, &pcomplx}); - - // BP_var_list_children_test -} - -void -gdb_set_show_print_char_array_as_string_test(void) -{ - const char *cp = "\t\"hello\"\n"; - const char ca[] = "\t\"hello\"\n"; - const char16_t *u16p = u"\t\"hello\"\n"; - const char16_t u16a[] = u"\t\"hello\"\n"; - const char32_t *u32p = U"\t\"hello\"\n"; - const char32_t u32a[] = U"\t\"hello\"\n"; - - const char16_t* u16p_rus = u"\\Аламо-сквер"; - const char16_t u16a_rus[] = u"\\Бейвью"; - const char32_t* u32p_rus = U"\\Чайнатаун"; - const char32_t u32a_rus[] = U"\\Догпатч"; - - // BP_gdb_set_show_print_char_array_as_string_test -} - -void -cpp_stl_types_test(void) -{ - std::string std_string = "hello"; - // BP_cpp_stl_types_test -} - -void -unnamed_objects_test(void) -{ - struct_with_unions swu; - // BP_unnamed_objects_test -} - -struct not_str -{ - not_str(char _c, int _f) - : c(_c), f(_f) { } - char c; - int f; -}; - -void -gdb_set_show_print_expand_aggregates(void) -{ - complex_type complx = { 3, { 3L }, &complx }; - complex_type complx_array[2] = { { 4, { 4L }, &complx_array[1] }, { 5, { 5 }, &complx_array[0] } }; - not_str nstr('a', 0); - - // BP_gdb_set_show_print_expand_aggregates -} - -void -gdb_set_show_print_aggregate_field_names(void) -{ - complex_type complx = { 3, { 3L }, &complx }; - complex_type complx_array[2] = { { 4, { 4L }, &complx_array[1] }, { 5, { 5 }, &complx_array[0] } }; - - // BP_gdb_set_show_print_aggregate_field_names -} - -int g_MyVar = 3; -static int s_MyVar = 4; - -int -main(int argc, char const *argv[]) -{ - int a = 10, b = 20; - s_MyVar = a + b; - var_update_test(); - var_list_children_test(); - gdb_set_show_print_char_array_as_string_test(); - cpp_stl_types_test(); - unnamed_objects_test(); - gdb_set_show_print_expand_aggregates(); - gdb_set_show_print_aggregate_field_names(); - return 0; // BP_return -} diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/Makefile index 28aba3cf5463705..1e0987a3022b04e 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../make - override CFLAGS_EXTRAS += -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS ENABLE_THREADS := YES CXX_SOURCES := main.cpp MAKE_DSYM :=NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestAppleSimulatorOSType.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestAppleSimulatorOSType.py index ab01e44db4b89be..ac90f9499aa1de3 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestAppleSimulatorOSType.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestAppleSimulatorOSType.py @@ -46,7 +46,7 @@ def check_simulator_ostype(self, sdk, platform, arch='x86_64'): self.build(dictionary={ 'EXE': exe_name, 'SDKROOT': sdkroot.strip(), 'ARCH': arch }) exe_path = self.getBuildArtifact(exe_name) - sim_launcher = subprocess.Popen(['xcrun', 'simctl', 'spawn', + sim_launcher = subprocess.Popen(['xcrun', 'simctl', 'spawn', '-s', deviceUDID, exe_path, 'print-pid', 'sleep:10'], stderr=subprocess.PIPE) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteAuxvSupport.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteAuxvSupport.py index 3c87ee61ab6fe15..f3549379cd9c56e 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteAuxvSupport.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteAuxvSupport.py @@ -104,6 +104,7 @@ def supports_auxv(self): # tests don't get skipped. # + @skipIfWindows # no auxv support. @llgs_test def test_supports_auxv_llgs(self): self.init_llgs_test() @@ -127,6 +128,7 @@ def test_auxv_data_is_correct_size_debugserver(self): self.set_inferior_startup_launch() self.auxv_data_is_correct_size() + @skipIfWindows @llgs_test def test_auxv_data_is_correct_size_llgs(self): self.init_llgs_test() @@ -165,6 +167,7 @@ def test_auxv_keys_look_valid_debugserver(self): self.set_inferior_startup_launch() self.auxv_keys_look_valid() + @skipIfWindows @llgs_test def test_auxv_keys_look_valid_llgs(self): self.init_llgs_test() @@ -212,6 +215,7 @@ def test_auxv_chunked_reads_work_debugserver(self): self.set_inferior_startup_launch() self.auxv_chunked_reads_work() + @skipIfWindows @llgs_test def test_auxv_chunked_reads_work_llgs(self): self.init_llgs_test() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteHostInfo.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteHostInfo.py index 464cdce5e9e070d..832096a0ff5ac17 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteHostInfo.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteHostInfo.py @@ -24,6 +24,7 @@ class TestGdbRemoteHostInfo(GdbRemoteTestCaseBase): "os_build", "os_kernel", "os_version", + "maccatalyst_version", "ptrsize", "triple", "vendor", diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteKill.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteKill.py index 6b8ed3b4c502eb4..54d72907a0e5914 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteKill.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteKill.py @@ -14,17 +14,18 @@ class TestGdbRemoteKill(gdbremote_testcase.GdbRemoteTestCaseBase): @skipIfDarwinEmbedded # lldb-server tests not updated to work on ios etc yet def attach_commandline_kill_after_initial_stop(self): + reg_expr = r"^\$[XW][0-9a-fA-F]+([^#]*)#[0-9A-Fa-f]{2}" procs = self.prep_debug_monitor_and_inferior() self.test_sequence.add_log_lines([ "read packet: $k#6b", - {"direction": "send", "regex": r"^\$X[0-9a-fA-F]+([^#]*)#[0-9A-Fa-f]{2}"}, + {"direction": "send", "regex": reg_expr}, ], True) if self.stub_sends_two_stop_notifications_on_kill: # Add an expectation for a second X result for stubs that send two # of these. self.test_sequence.add_log_lines([ - {"direction": "send", "regex": r"^\$X[0-9a-fA-F]+([^#]*)#[0-9A-Fa-f]{2}"}, + {"direction": "send", "regex": reg_expr}, ], True) self.expect_gdbremote_sequence() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteModuleInfo.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteModuleInfo.py index ef96b55b90d885e..e23c34d82f01f2b 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteModuleInfo.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteModuleInfo.py @@ -1,6 +1,6 @@ from __future__ import print_function - +import json import gdbremote_testcase import lldbgdbserverutils from lldbsuite.support import seven @@ -20,9 +20,9 @@ def module_info(self): info = self.parse_process_info_response(context) self.test_sequence.add_log_lines([ - 'read packet: $jModulesInfo:[{"file":"%s","triple":"%s"}]]#00' % ( - lldbutil.append_to_process_working_directory(self, "a.out"), - seven.unhexlify(info["triple"])), + 'read packet: $jModulesInfo:%s]#00' % json.dumps( + [{"file":lldbutil.append_to_process_working_directory(self, "a.out"), + "triple":seven.unhexlify(info["triple"])}]), {"direction": "send", "regex": r'^\$\[{(.*)}\]\]#[0-9A-Fa-f]{2}', "capture": {1: "spec"}}, diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteProcessInfo.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteProcessInfo.py index 4f7123d789a410c..5a3ae926896a9d9 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteProcessInfo.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteProcessInfo.py @@ -1,7 +1,6 @@ from __future__ import print_function -import sys import gdbremote_testcase import lldbgdbserverutils @@ -175,12 +174,11 @@ def test_qProcessInfo_contains_cputype_cpusubtype_llgs_darwin(self): self.build() self.qProcessInfo_contains_keys(set(['cputype', 'cpusubtype'])) - @skipUnlessPlatform(["linux"]) @llgs_test - def test_qProcessInfo_contains_triple_llgs_linux(self): + def test_qProcessInfo_contains_triple_ppid_llgs(self): self.init_llgs_test() self.build() - self.qProcessInfo_contains_keys(set(['triple'])) + self.qProcessInfo_contains_keys(set(['triple', 'parent-pid'])) @skipUnlessDarwin @debugserver_test @@ -203,9 +201,9 @@ def test_qProcessInfo_does_not_contain_triple_llgs_darwin(self): # for the remote Host and Process. self.qProcessInfo_does_not_contain_keys(set(['triple'])) - @skipUnlessPlatform(["linux"]) + @skipIfDarwin @llgs_test - def test_qProcessInfo_does_not_contain_cputype_cpusubtype_llgs_linux(self): + def test_qProcessInfo_does_not_contain_cputype_cpusubtype_llgs(self): self.init_llgs_test() self.build() self.qProcessInfo_does_not_contain_keys(set(['cputype', 'cpusubtype'])) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteSingleStep.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteSingleStep.py index f4e1851ff98ff3b..205f49bbdf76fee 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteSingleStep.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteSingleStep.py @@ -20,6 +20,7 @@ def test_single_step_only_steps_one_instruction_with_s_debugserver(self): self.single_step_only_steps_one_instruction( use_Hc_packet=True, step_instruction="s") + @skipIfWindows # No pty support to test any inferior std -i/e/o @llgs_test @expectedFailureAndroid( bugnumber="llvm.org/pr24739", diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py index 2bf0952e902ed11..ed60244e88f157e 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py @@ -205,6 +205,11 @@ def test_stop_reply_reports_multiple_threads_debugserver(self): self.set_inferior_startup_launch() self.stop_reply_reports_multiple_threads(5) + # In current implementation of llgs on Windows, as a response to '\x03' packet, the debugger + # of the native process will trigger a call to DebugBreakProcess that will create a new thread + # to handle the exception debug event. So one more stop thread will be notified to the + # delegate, e.g. llgs. So tests below to assert the stop threads number will all fail. + @expectedFailureAll(oslist=["windows"]) @llgs_test def test_stop_reply_reports_multiple_threads_llgs(self): self.init_llgs_test() @@ -226,6 +231,7 @@ def test_no_QListThreadsInStopReply_supplies_no_threads_debugserver(self): self.set_inferior_startup_launch() self.no_QListThreadsInStopReply_supplies_no_threads(5) + @expectedFailureAll(oslist=["windows"]) @llgs_test def test_no_QListThreadsInStopReply_supplies_no_threads_llgs(self): self.init_llgs_test() @@ -263,6 +269,7 @@ def test_stop_reply_reports_correct_threads_debugserver(self): self.set_inferior_startup_launch() self.stop_reply_reports_correct_threads(5) + @expectedFailureAll(oslist=["windows"]) @llgs_test def test_stop_reply_reports_correct_threads_llgs(self): self.init_llgs_test() @@ -287,6 +294,7 @@ def stop_reply_contains_thread_pcs(self, thread_count): self.assertTrue(int(stop_reply_pcs[thread_id], 16) == int(threads_info_pcs[thread_id], 16)) + @expectedFailureAll(oslist=["windows"]) @llgs_test def test_stop_reply_contains_thread_pcs_llgs(self): self.init_llgs_test() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_qThreadStopInfo.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_qThreadStopInfo.py index a25484e73baf6ac..1d3a63d27b76d08 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_qThreadStopInfo.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_qThreadStopInfo.py @@ -1,7 +1,6 @@ from __future__ import print_function -import sys import unittest2 import gdbremote_testcase @@ -55,7 +54,15 @@ def gather_stop_replies_via_qThreadStopInfo(self, thread_count): # Wait until all threads have started. threads = self.wait_for_thread_count(thread_count, timeout_seconds=3) self.assertIsNotNone(threads) - self.assertEqual(len(threads), thread_count) + + # On Windows, there could be more threads spawned. For example, DebugBreakProcess will + # create a new thread from the debugged process to handle an exception event. So here we + # assert 'GreaterEqual' condition. + triple = self.dbg.GetSelectedPlatform().GetTriple() + if re.match(".*-.*-windows", triple): + self.assertGreaterEqual(len(threads), thread_count) + else: + self.assertEqual(len(threads), thread_count) # Grab stop reply for each thread via qThreadStopInfo{tid:hex}. stop_replies = {} @@ -102,7 +109,12 @@ def gather_stop_replies_via_qThreadStopInfo(self, thread_count): def qThreadStopInfo_works_for_multiple_threads(self, thread_count): (stop_replies, _) = self.gather_stop_replies_via_qThreadStopInfo(thread_count) - self.assertEqual(len(stop_replies), thread_count) + triple = self.dbg.GetSelectedPlatform().GetTriple() + # Consider one more thread created by calling DebugBreakProcess. + if re.match(".*-.*-windows", triple): + self.assertGreaterEqual(len(stop_replies), thread_count) + else: + self.assertEqual(len(stop_replies), thread_count) @debugserver_test def test_qThreadStopInfo_works_for_multiple_threads_debugserver(self): @@ -131,7 +143,13 @@ def qThreadStopInfo_only_reports_one_thread_stop_reason_during_interrupt( stop_replies.values()) if stop_reason != 0) # All but one thread should report no stop reason. - self.assertEqual(no_stop_reason_count, thread_count - 1) + triple = self.dbg.GetSelectedPlatform().GetTriple() + + # Consider one more thread created by calling DebugBreakProcess. + if re.match(".*-.*-windows", triple): + self.assertGreaterEqual(no_stop_reason_count, thread_count - 1) + else: + self.assertEqual(no_stop_reason_count, thread_count - 1) # Only one thread should should indicate a stop reason. self.assertEqual(with_stop_reason_count, 1) @@ -173,7 +191,8 @@ def test_qThreadStopInfo_has_valid_thread_names_debugserver(self): self.qThreadStopInfo_has_valid_thread_names(self.THREAD_COUNT, "a.out") # test requires OS with set, equal thread names by default. - @skipUnlessPlatform(["linux"]) + # Windows thread does not have name property, equal names as the process's by default. + @skipUnlessPlatform(["linux", "windows"]) @llgs_test def test_qThreadStopInfo_has_valid_thread_names_llgs(self): self.init_llgs_test() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_vCont.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_vCont.py index f0380c7167e18df..22265de40de49b4 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_vCont.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemote_vCont.py @@ -105,6 +105,7 @@ def test_single_step_only_steps_one_instruction_with_Hc_vCont_s_debugserver( self.single_step_only_steps_one_instruction( use_Hc_packet=True, step_instruction="vCont;s") + @skipIfWindows # No pty support to test O* & I* notification packets. @llgs_test @expectedFailureAndroid( bugnumber="llvm.org/pr24739", @@ -136,6 +137,7 @@ def test_single_step_only_steps_one_instruction_with_vCont_s_thread_debugserver( self.single_step_only_steps_one_instruction( use_Hc_packet=False, step_instruction="vCont;s:{thread}") + @skipIfWindows # No pty support to test O* & I* notification packets. @llgs_test @expectedFailureAndroid( bugnumber="llvm.org/pr24739", diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestLldbGdbServer.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestLldbGdbServer.py index a3bad6873f134c1..a3abe203a98745c 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestLldbGdbServer.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestLldbGdbServer.py @@ -16,8 +16,6 @@ import unittest2 import gdbremote_testcase import lldbgdbserverutils -import platform -import signal from lldbsuite.support import seven from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -158,6 +156,7 @@ def test_inferior_print_exit_debugserver(self): self.build() self.inferior_print_exit() + @skipIfWindows # No pty support to test any inferior output @llgs_test @expectedFlakeyLinux("llvm.org/pr25652") def test_inferior_print_exit_llgs(self): @@ -436,6 +435,7 @@ def qRegisterInfo_contains_avx_registers(self): self.targetHasAVX(), "Advanced Vector Extensions" in register_sets) + @expectedFailureAll(oslist=["windows"]) # no avx for now. @llgs_test def test_qRegisterInfo_contains_avx_registers_llgs(self): self.init_llgs_test() @@ -480,6 +480,7 @@ def test_qThreadInfo_contains_thread_attach_debugserver(self): self.set_inferior_startup_attach() self.qThreadInfo_contains_thread() + @expectedFailureAll(oslist=["windows"]) # expect one more thread stopped @llgs_test def test_qThreadInfo_contains_thread_attach_llgs(self): self.init_llgs_test() @@ -538,6 +539,7 @@ def test_qThreadInfo_matches_qC_attach_debugserver(self): self.set_inferior_startup_attach() self.qThreadInfo_matches_qC() + @expectedFailureAll(oslist=["windows"]) # expect one more thread stopped @llgs_test def test_qThreadInfo_matches_qC_attach_llgs(self): self.init_llgs_test() @@ -666,6 +668,7 @@ def test_Hg_switches_to_3_threads_launch_debugserver(self): self.set_inferior_startup_launch() self.Hg_switches_to_3_threads() + @expectedFailureAll(oslist=["windows"]) # expect 4 threads @llgs_test def test_Hg_switches_to_3_threads_launch_llgs(self): self.init_llgs_test() @@ -681,6 +684,7 @@ def test_Hg_switches_to_3_threads_attach_debugserver(self): self.set_inferior_startup_attach() self.Hg_switches_to_3_threads() + @expectedFailureAll(oslist=["windows"]) # expecting one more thread @llgs_test def test_Hg_switches_to_3_threads_attach_llgs(self): self.init_llgs_test() @@ -810,6 +814,7 @@ def test_Hc_then_Csignal_signals_correct_thread_launch_debugserver(self): # expectations about fixed signal numbers. self.Hc_then_Csignal_signals_correct_thread(self.TARGET_EXC_BAD_ACCESS) + @skipIfWindows # no SIGSEGV support @llgs_test def test_Hc_then_Csignal_signals_correct_thread_launch_llgs(self): self.init_llgs_test() @@ -878,6 +883,7 @@ def test_m_packet_reads_memory_debugserver(self): self.set_inferior_startup_launch() self.m_packet_reads_memory() + @skipIfWindows # No pty support to test any inferior output @llgs_test def test_m_packet_reads_memory_llgs(self): self.init_llgs_test() @@ -968,6 +974,7 @@ def test_qMemoryRegionInfo_reports_code_address_as_executable_debugserver( self.set_inferior_startup_launch() self.qMemoryRegionInfo_reports_code_address_as_executable() + @skipIfWindows # No pty support to test any inferior output @llgs_test def test_qMemoryRegionInfo_reports_code_address_as_executable_llgs(self): self.init_llgs_test() @@ -1033,6 +1040,7 @@ def test_qMemoryRegionInfo_reports_stack_address_as_readable_writeable_debugserv self.set_inferior_startup_launch() self.qMemoryRegionInfo_reports_stack_address_as_readable_writeable() + @skipIfWindows # No pty support to test any inferior output @llgs_test def test_qMemoryRegionInfo_reports_stack_address_as_readable_writeable_llgs( self): @@ -1098,6 +1106,7 @@ def test_qMemoryRegionInfo_reports_heap_address_as_readable_writeable_debugserve self.set_inferior_startup_launch() self.qMemoryRegionInfo_reports_heap_address_as_readable_writeable() + @skipIfWindows # No pty support to test any inferior output @llgs_test def test_qMemoryRegionInfo_reports_heap_address_as_readable_writeable_llgs( self): @@ -1250,6 +1259,7 @@ def test_software_breakpoint_set_and_remove_work_debugserver(self): self.set_inferior_startup_launch() self.breakpoint_set_and_remove_work(want_hardware=False) + @skipIfWindows # No pty support to test any inferior output @llgs_test @expectedFlakeyLinux("llvm.org/pr25652") def test_software_breakpoint_set_and_remove_work_llgs(self): @@ -1279,7 +1289,6 @@ def test_hardware_breakpoint_set_and_remove_work_debugserver(self): @llgs_test @skipUnlessPlatform(oslist=['linux']) - @expectedFailureAndroid @skipIf(archs=no_match(['arm', 'aarch64'])) def test_hardware_breakpoint_set_and_remove_work_llgs(self): self.init_llgs_test() @@ -1387,6 +1396,7 @@ def test_written_M_content_reads_back_correctly_debugserver(self): self.set_inferior_startup_launch() self.written_M_content_reads_back_correctly() + @skipIfWindows # No pty support to test any inferior output @llgs_test @expectedFlakeyLinux("llvm.org/pr25652") def test_written_M_content_reads_back_correctly_llgs(self): @@ -1562,6 +1572,7 @@ def test_P_and_p_thread_suffix_work_debugserver(self): self.set_inferior_startup_launch() self.P_and_p_thread_suffix_work() + @skipIfWindows @llgs_test def test_P_and_p_thread_suffix_work_llgs(self): self.init_llgs_test() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py index 102f2e344af5a06..18efbf9d650f9c2 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubReverseConnect.py @@ -5,7 +5,6 @@ import re import select import socket -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubSetSID.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubSetSID.py index 27daf30f189d251..fe89a6c6f765192 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubSetSID.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/commandline/TestStubSetSID.py @@ -5,8 +5,6 @@ import lldbgdbserverutils import os import select -import tempfile -import time from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -49,6 +47,7 @@ def test_sid_is_same_without_setsid_debugserver(self): self.set_inferior_startup_launch() self.sid_is_same_without_setsid() + @skipIfWindows @llgs_test @skipIfRemote # --setsid not used on remote platform and currently it is also impossible to get the sid of lldb-platform running on a remote target @expectedFailureAll(oslist=['freebsd']) @@ -64,6 +63,7 @@ def test_sid_is_different_with_setsid_debugserver(self): self.set_inferior_startup_launch() self.sid_is_different_with_setsid() + @skipIfWindows @llgs_test @skipIfRemote # --setsid not used on remote platform and currently it is also impossible to get the sid of lldb-platform running on a remote target def test_sid_is_different_with_setsid_llgs(self): @@ -78,6 +78,7 @@ def test_sid_is_different_with_S_debugserver(self): self.set_inferior_startup_launch() self.sid_is_different_with_S() + @skipIfWindows @llgs_test @skipIfRemote # --setsid not used on remote platform and currently it is also impossible to get the sid of lldb-platform running on a remote target def test_sid_is_different_with_S_llgs(self): diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py index 8311e1623991f90..b1ffc723d702f34 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py @@ -8,11 +8,9 @@ import errno import os import os.path -import platform import random import re import select -import signal import socket import subprocess import sys @@ -235,6 +233,10 @@ def init_llgs_test(self, use_named_pipe=True): # Remote platforms don't support named pipe based port negotiation use_named_pipe = False + triple = self.dbg.GetSelectedPlatform().GetTriple() + if re.match(".*-.*-windows", triple): + self.skipTest("Remotely testing is not supported on Windows yet.") + # Grab the ppid from /proc/[shell pid]/stat err, retcode, shell_stat = self.run_platform_command( "cat /proc/$$/stat") @@ -260,6 +262,10 @@ def init_llgs_test(self, use_named_pipe=True): # Remove if it's there. self.debug_monitor_exe = re.sub(r' \(deleted\)$', '', exe) else: + # Need to figure out how to create a named pipe on Windows. + if platform.system() == 'Windows': + use_named_pipe = False + self.debug_monitor_exe = get_lldb_server_exe() if not self.debug_monitor_exe: self.skipTest("lldb-server exe not found") diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/Makefile index a47e2797fd8465c..7fe9a3e92a740ef 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/Makefile @@ -1,8 +1,6 @@ -LEVEL = ../../../make - CFLAGS_EXTRAS += -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -std=c++11 # LD_EXTRAS := -lpthread CXX_SOURCES := main.cpp MAKE_DSYM :=NO -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py index e905a85cc4d3d46..4dd292299848fde 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py @@ -2,7 +2,6 @@ import gdbremote_testcase -import signal from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -37,6 +36,7 @@ def test_inferior_abort_received_debugserver(self): self.build() self.inferior_abort_received() + @skipIfWindows # No signal is sent on Windows. @llgs_test # std::abort() on <= API 16 raises SIGSEGV - b.android.com/179836 @expectedFailureAndroid(api_levels=list(range(16 + 1))) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py index 316d5d7b82bf511..2ab741d111055c8 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py @@ -2,7 +2,6 @@ import gdbremote_testcase -import signal from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil @@ -39,6 +38,7 @@ def test_inferior_seg_fault_received_debugserver(self): self.build() self.inferior_seg_fault_received(self.GDB_REMOTE_STOP_CODE_BAD_ACCESS) + @skipIfWindows # No signal is sent on Windows. @llgs_test def test_inferior_seg_fault_received_llgs(self): self.init_llgs_test() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/Makefile index 265c8ca3c410326..e5ed078d1e357b2 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/Makefile @@ -1,12 +1,10 @@ -LEVEL = ../../../make - LIB_PREFIX := svr4lib LD_EXTRAS := -L. -l$(LIB_PREFIX)_a -l$(LIB_PREFIX)_b\" CXX_SOURCES := main.cpp USE_LIBDL := 1 MAKE_DSYM := NO -include $(LEVEL)/Makefile.rules +include Makefile.rules a.out: $(LIB_PREFIX)_a $(LIB_PREFIX)_b_quote diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_a.mk b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_a.mk index 626babbd6b296c8..3d741857c023601 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_a.mk +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_a.mk @@ -1,9 +1,7 @@ -LEVEL = ../../../make - LIB_PREFIX := svr4lib DYLIB_NAME := $(LIB_PREFIX)_a DYLIB_CXX_SOURCES := $(LIB_PREFIX)_a.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_b_quote.mk b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_b_quote.mk index 5ed7a053b42ad45..fc20cf05c4eb9bd 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_b_quote.mk +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/libraries-svr4/svr4lib_b_quote.mk @@ -1,9 +1,7 @@ -LEVEL = ../../../make - LIB_PREFIX := svr4lib DYLIB_NAME := $(LIB_PREFIX)_b\" DYLIB_CXX_SOURCES := $(LIB_PREFIX)_b_quote.cpp DYLIB_ONLY := YES -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py index 8dd146ae1526c09..815ba3491c1d702 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py @@ -11,7 +11,6 @@ import six import socket_packet_pump import subprocess -import time from lldbsuite.test.lldbtest import * from six.moves import queue @@ -926,6 +925,12 @@ def process_is_running(pid, unknown_value=True): # Convert text pids to ints process_ids = [int(text_pid) for text_pid in text_process_ids if text_pid != ''] + elif platform.system() == 'Windows': + output = subprocess.check_output( + "for /f \"tokens=2 delims=,\" %F in ('tasklist /nh /fi \"PID ne 0\" /fo csv') do @echo %~F", shell=True).decode("utf-8") + text_process_ids = output.split('\n')[1:] + process_ids = [int(text_pid) + for text_pid in text_process_ids if text_pid != ''] # elif {your_platform_here}: # fill in process_ids as a list of int type process IDs running on # the local system. diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py index aa4b3dee792187f..27286a1c9e7ad9b 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/platform-process-connect/TestPlatformProcessConnect.py @@ -11,6 +11,14 @@ class TestPlatformProcessConnect(gdbremote_testcase.GdbRemoteTestCaseBase): mydir = TestBase.compute_mydir(__file__) + def setUp(self): + super(TestPlatformProcessConnect, self).setUp() + self._initial_platform = lldb.DBG.GetSelectedPlatform() + + def tearDown(self): + lldb.DBG.SetSelectedPlatform(self._initial_platform) + super(TestPlatformProcessConnect, self).tearDown() + @llgs_test @no_debug_info_test @skipIf(remote=False) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/main.cpp index 32eda6d3c559472..fca0c723bde36d1 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/register-reading/main.cpp @@ -1,10 +1,10 @@ #include -struct alignas(16) xmm_t { - uint64_t a, b; -}; - int main() { +#if defined(__x86_64__) + struct alignas(16) xmm_t { + uint64_t a, b; + }; uint64_t r8 = 0x0102030405060708; uint64_t r9 = 0x1112131415161718; uint64_t r10 = 0x2122232425262728; @@ -49,6 +49,6 @@ int main() { : "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15"); - +#endif return 0; } diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py index 7105bcb078bc6b6..2ec4518190209ff 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py @@ -81,6 +81,7 @@ def test_change_signals_at_runtime(self): self.ignore_signals(signals_to_ignore) self.expect_exit_code(len(signals_to_ignore)) + @skipIfWindows # no signal support @llgs_test def test_default_signals_behavior(self): self.init_llgs_test() diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/test/test_lldbgdbserverutils.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/test/test_lldbgdbserverutils.py index dc52f244aa4a880..32ca17c0b952747 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/test/test_lldbgdbserverutils.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/test/test_lldbgdbserverutils.py @@ -2,9 +2,7 @@ import unittest2 -import os.path import re -import sys from lldbgdbserverutils import * diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/Makefile index 8817fff55e8c036..de4ec12b13cbce3 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/Makefile @@ -1,6 +1,4 @@ -LEVEL = ../../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py index 5bfcd660c2ace70..294eb96a07f7a71 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py @@ -29,6 +29,7 @@ def run_and_check_name(self, expected_name): kv_dict = self.parse_key_val_dict(context.get("key_vals_text")) self.assertEqual(expected_name, kv_dict.get("name")) + @skipIfWindows # the test is not updated for Windows. @llgs_test def test(self): """ Make sure lldb-server can retrieve inferior thread name""" diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/attach/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/attach/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/attach/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/attach/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setBreakpoints.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setBreakpoints.py index 1ebf2b8981ab65d..c674a7f5f9939b9 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setBreakpoints.py @@ -4,7 +4,6 @@ from __future__ import print_function -import pprint import unittest2 import vscode from lldbsuite.test.decorators import * diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setExceptionBreakpoints.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setExceptionBreakpoints.py index 65db69cbe2460e2..a9338b1809bd378 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setExceptionBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setExceptionBreakpoints.py @@ -4,14 +4,12 @@ from __future__ import print_function -import pprint import unittest2 import vscode from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil import lldbvscode_testcase -import os class TestVSCode_setExceptionBreakpoints( diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setFunctionBreakpoints.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setFunctionBreakpoints.py index 8a3f3549f6e5fe2..c6e98b1fd62ceba 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setFunctionBreakpoints.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/breakpoint/TestVSCode_setFunctionBreakpoints.py @@ -4,14 +4,12 @@ from __future__ import print_function -import pprint import unittest2 import vscode from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil import lldbvscode_testcase -import os class TestVSCode_setFunctionBreakpoints( diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/TestVSCode_launch.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/TestVSCode_launch.py index 2927ac3ba1c76e7..dc7635289edbd0f 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/TestVSCode_launch.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/launch/TestVSCode_launch.py @@ -4,7 +4,6 @@ from __future__ import print_function -import pprint import unittest2 import vscode from lldbsuite.test.decorators import * @@ -12,7 +11,6 @@ from lldbsuite.test import lldbutil import lldbvscode_testcase import os -import time class TestVSCode_launch(lldbvscode_testcase.VSCodeTestCaseBase): @@ -61,7 +59,6 @@ def test_stopOnEntry(self): @skipIfWindows @skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots - @expectedFailureNetBSD @no_debug_info_test def test_cwd(self): ''' @@ -69,7 +66,8 @@ def test_cwd(self): directory. ''' program = self.getBuildArtifact("a.out") - program_parent_dir = os.path.split(os.path.split(program)[0])[0] + program_parent_dir = os.path.realpath( + os.path.dirname(os.path.dirname(program))) self.build_and_launch(program, cwd=program_parent_dir) self.continue_to_exit() @@ -90,7 +88,6 @@ def test_cwd(self): @skipIfWindows @skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots - @expectedFailureNetBSD @no_debug_info_test def test_debuggerRoot(self): ''' @@ -98,7 +95,8 @@ def test_debuggerRoot(self): the lldb-vscode debug adaptor. ''' program = self.getBuildArtifact("a.out") - program_parent_dir = os.path.split(os.path.split(program)[0])[0] + program_parent_dir = os.path.realpath( + os.path.dirname(os.path.dirname(program))) commands = ['platform shell echo cwd = $PWD'] self.build_and_launch(program, debuggerRoot=program_parent_dir, @@ -126,7 +124,7 @@ def test_sourcePath(self): Tests the "sourcePath" will set the target.source-map. ''' program = self.getBuildArtifact("a.out") - program_dir = os.path.split(program)[0] + program_dir = os.path.dirname(program) self.build_and_launch(program, sourcePath=program_dir) output = self.get_console() @@ -172,7 +170,7 @@ def test_shellExpandArguments_enabled(self): enabled. ''' program = self.getBuildArtifact("a.out") - program_dir = os.path.split(program)[0] + program_dir = os.path.dirname(program) glob = os.path.join(program_dir, '*.out') self.build_and_launch(program, args=[glob], shellExpandArguments=True) self.continue_to_exit() @@ -197,7 +195,7 @@ def test_shellExpandArguments_disabled(self): disabled. ''' program = self.getBuildArtifact("a.out") - program_dir = os.path.split(program)[0] + program_dir = os.path.dirname(program) glob = os.path.join(program_dir, '*.out') self.build_and_launch(program, args=[glob], @@ -343,3 +341,68 @@ def test_commands(self): # "exitCommands" that were run after the second breakpoint was hit output = self.get_console(timeout=1.0) self.verify_commands('exitCommands', output, exitCommands) + + @skipIfWindows + @skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots + @no_debug_info_test + def test_extra_launch_commands(self): + ''' + Tests the "luanchCommands" with extra launching settings + ''' + self.build_and_create_debug_adaptor() + program = self.getBuildArtifact("a.out") + + source = 'main.c' + first_line = line_number(source, '// breakpoint 1') + second_line = line_number(source, '// breakpoint 2') + # Set target binary and 2 breakoints + # then we can varify the "launchCommands" get run + # also we can verify that "stopCommands" get run as the + # breakpoints get hit + launchCommands = [ + 'target create "%s"' % (program), + 'br s -f main.c -l %d' % first_line, + 'br s -f main.c -l %d' % second_line, + 'run' + ] + + initCommands = ['target list', 'platform list'] + preRunCommands = ['image list a.out', 'image dump sections a.out'] + stopCommands = ['frame variable', 'bt'] + exitCommands = ['expr 2+3', 'expr 3+4'] + self.launch(program, + initCommands=initCommands, + preRunCommands=preRunCommands, + stopCommands=stopCommands, + exitCommands=exitCommands, + launchCommands=launchCommands) + + # Get output from the console. This should contain both the + # "initCommands" and the "preRunCommands". + output = self.get_console() + # Verify all "initCommands" were found in console output + self.verify_commands('initCommands', output, initCommands) + # Verify all "preRunCommands" were found in console output + self.verify_commands('preRunCommands', output, preRunCommands) + + # Verify all "launchCommands" were founc in console output + # After execution, program should launch + self.verify_commands('launchCommands', output, launchCommands) + # Verify the "stopCommands" here + self.continue_to_next_stop() + output = self.get_console(timeout=1.0) + self.verify_commands('stopCommands', output, stopCommands) + + # Continue and hit the second breakpoint. + # Get output from the console. This should contain both the + # "stopCommands" that were run after the first breakpoint was hit + self.continue_to_next_stop() + output = self.get_console(timeout=1.0) + self.verify_commands('stopCommands', output, stopCommands) + + # Continue until the program exits + self.continue_to_exit() + # Get output from the console. This should contain both the + # "exitCommands" that were run after the second breakpoint was hit + output = self.get_console(timeout=1.0) + self.verify_commands('exitCommands', output, exitCommands) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py index c66c6bb7af6bc69..cff85346de5fa41 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py @@ -11,7 +11,8 @@ def create_debug_adaptor(self): '''Create the Visual Studio Code debug adaptor''' self.assertTrue(os.path.exists(self.lldbVSCodeExec), 'lldb-vscode must exist') - self.vscode = vscode.DebugAdaptor(executable=self.lldbVSCodeExec) + self.vscode = vscode.DebugAdaptor( + executable=self.lldbVSCodeExec, init_commands=Base.setUpCommands()) def build_and_create_debug_adaptor(self): self.build() @@ -244,20 +245,17 @@ def cleanup(): self.assertTrue(response['success'], 'attach failed (%s)' % (response['message'])) - def build_and_launch(self, program, args=None, cwd=None, env=None, - stopOnEntry=False, disableASLR=True, - disableSTDIO=False, shellExpandArguments=False, - trace=False, initCommands=None, preRunCommands=None, - stopCommands=None, exitCommands=None, - sourcePath=None, debuggerRoot=None): - '''Build the default Makefile target, create the VSCode debug adaptor, - and launch the process. + def launch(self, program=None, args=None, cwd=None, env=None, + stopOnEntry=False, disableASLR=True, + disableSTDIO=False, shellExpandArguments=False, + trace=False, initCommands=None, preRunCommands=None, + stopCommands=None, exitCommands=None,sourcePath= None, + debuggerRoot=None, launchCommands=None): + '''Sending launch request to vscode ''' - self.build_and_create_debug_adaptor() - self.assertTrue(os.path.exists(program), 'executable must exist') - # Make sure we disconnect and terminate the VSCode debug adaptor even - # if we throw an exception during the test case. + # Make sure we disconnet and terminate the VSCode debug adaptor, + # if we throw an exception during the test case def cleanup(): self.vscode.request_disconnect(terminateDebuggee=True) self.vscode.terminate() @@ -282,7 +280,25 @@ def cleanup(): stopCommands=stopCommands, exitCommands=exitCommands, sourcePath=sourcePath, - debuggerRoot=debuggerRoot) + debuggerRoot=debuggerRoot, + launchCommands=launchCommands) if not (response and response['success']): self.assertTrue(response['success'], 'launch failed (%s)' % (response['message'])) + + def build_and_launch(self, program, args=None, cwd=None, env=None, + stopOnEntry=False, disableASLR=True, + disableSTDIO=False, shellExpandArguments=False, + trace=False, initCommands=None, preRunCommands=None, + stopCommands=None, exitCommands=None, + sourcePath=None, debuggerRoot=None): + '''Build the default Makefile target, create the VSCode debug adaptor, + and launch the process. + ''' + self.build_and_create_debug_adaptor() + self.assertTrue(os.path.exists(program), 'executable must exist') + + self.launch(program, args, cwd, env, stopOnEntry, disableASLR, + disableSTDIO, shellExpandArguments, trace, + initCommands, preRunCommands, stopCommands, exitCommands, + sourcePath, debuggerRoot) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/Makefile index b09a579159d4855..10495940055b63d 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - C_SOURCES := main.c -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile index f24bb9f4d267e70..b7f3072e28c9d9c 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../../../make - ENABLE_THREADS := YES CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py index b671d956acf94d2..a5e7914ddceab43 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/step/TestVSCode_step.py @@ -10,7 +10,6 @@ from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil import lldbvscode_testcase -import os class TestVSCode_step(lldbvscode_testcase.VSCodeTestCaseBase): diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/Makefile b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/Makefile index 314f1cb2f077bb9..99998b20bcb0502 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/Makefile +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/Makefile @@ -1,5 +1,3 @@ -LEVEL = ../../../make - CXX_SOURCES := main.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/TestVSCode_variables.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/TestVSCode_variables.py index 0a8906f1c6c8134..dd699f01058994b 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/TestVSCode_variables.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/variables/TestVSCode_variables.py @@ -10,7 +10,6 @@ from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil import lldbvscode_testcase -import os def make_buffer_verify_dict(start_idx, count, offset=0): diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py index 74ee4a6c44c3dc0..b4e21989463c4bc 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -99,7 +99,7 @@ def read_packet_thread(vs_comm): class DebugCommunication(object): - def __init__(self, recv, send): + def __init__(self, recv, send, init_commands): self.trace_file = None self.send = send self.recv = recv @@ -118,6 +118,7 @@ def __init__(self, recv, send): self.output = {} self.configuration_done_sent = False self.frame_scopes = {} + self.init_commands = init_commands @classmethod def encode_content(cls, s): @@ -447,8 +448,7 @@ def request_attach(self, program=None, pid=None, waitFor=None, trace=None, args_dict['waitFor'] = waitFor if trace: args_dict['trace'] = trace - args_dict['initCommands'] = [ - 'settings set symbols.enable-external-lookup false'] + args_dict['initCommands'] = self.init_commands if initCommands: args_dict['initCommands'].extend(initCommands) if preRunCommands: @@ -498,13 +498,7 @@ def request_continue(self, threadId=None): 'arguments': args_dict } response = self.send_recv(command_dict) - recv_packets = [] - self.recv_condition.acquire() - for event in self.recv_packets: - if event['event'] != 'stopped': - recv_packets.append(event) - self.recv_packets = recv_packets - self.recv_condition.release() + # Caller must still call wait_for_stopped. return response def request_disconnect(self, terminateDebuggee=None): @@ -564,7 +558,7 @@ def request_launch(self, program, args=None, cwd=None, env=None, disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None): + debuggerRoot=None, launchCommands=None): args_dict = { 'program': program } @@ -584,8 +578,7 @@ def request_launch(self, program, args=None, cwd=None, env=None, args_dict['shellExpandArguments'] = shellExpandArguments if trace: args_dict['trace'] = trace - args_dict['initCommands'] = [ - 'settings set symbols.enable-external-lookup false'] + args_dict['initCommands'] = self.init_commands if initCommands: args_dict['initCommands'].extend(initCommands) if preRunCommands: @@ -598,6 +591,8 @@ def request_launch(self, program, args=None, cwd=None, env=None, args_dict['sourcePath'] = sourcePath if debuggerRoot: args_dict['debuggerRoot'] = debuggerRoot + if launchCommands: + args_dict['launchCommands'] = launchCommands command_dict = { 'command': 'launch', 'type': 'request', @@ -828,7 +823,7 @@ def terminate(self): class DebugAdaptor(DebugCommunication): - def __init__(self, executable=None, port=None): + def __init__(self, executable=None, port=None, init_commands=[]): self.process = None if executable is not None: self.process = subprocess.Popen([executable], @@ -836,11 +831,12 @@ def __init__(self, executable=None, port=None): stdout=subprocess.PIPE, stderr=subprocess.PIPE) DebugCommunication.__init__(self, self.process.stdout, - self.process.stdin) + self.process.stdin, init_commands) elif port is not None: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', port)) - DebugCommunication.__init__(self, s.makefile('r'), s.makefile('w')) + DebugCommunication.__init__(self, s.makefile('r'), s.makefile('w'), + init_commands) def get_pid(self): if self.process: diff --git a/lldb/packages/Python/lldbsuite/test/types/AbstractBase.py b/lldb/packages/Python/lldbsuite/test/types/AbstractBase.py index 37ddfb756bb03e5..2ced139377218b3 100644 --- a/lldb/packages/Python/lldbsuite/test/types/AbstractBase.py +++ b/lldb/packages/Python/lldbsuite/test/types/AbstractBase.py @@ -5,7 +5,6 @@ from __future__ import print_function import os -import time import re import lldb from lldbsuite.test.lldbtest import * @@ -200,7 +199,6 @@ def generic_type_tester( nv = ("%s = '%s'" if quotedDisplay else "%s = %s") % (var, val) self.expect(output, Msg(var, val, True), exe=False, substrs=[nv]) - pass def generic_type_expr_tester( self, @@ -297,4 +295,3 @@ def generic_type_expr_tester( valPart = ("'%s'" if quotedDisplay else "%s") % val self.expect(output, Msg(var, val, False), exe=False, substrs=[valPart]) - pass diff --git a/lldb/packages/Python/lldbsuite/test/types/HideTestFailures.py b/lldb/packages/Python/lldbsuite/test/types/HideTestFailures.py index 662665b85a03ab4..3e6929f59bc6e6b 100644 --- a/lldb/packages/Python/lldbsuite/test/types/HideTestFailures.py +++ b/lldb/packages/Python/lldbsuite/test/types/HideTestFailures.py @@ -6,7 +6,6 @@ import AbstractBase -import sys import lldb from lldbsuite.test.lldbtest import * diff --git a/lldb/packages/Python/lldbsuite/test/types/Makefile b/lldb/packages/Python/lldbsuite/test/types/Makefile index c1b4cb32561dcf1..d48ed7688a47e46 100644 --- a/lldb/packages/Python/lldbsuite/test/types/Makefile +++ b/lldb/packages/Python/lldbsuite/test/types/Makefile @@ -1,7 +1,5 @@ -LEVEL = ../make - # Example: # # CXX_SOURCES := int.cpp -include $(LEVEL)/Makefile.rules +include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypes.py b/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypes.py index 3e9394eb7462c5b..e9704c6efb26511 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypes.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypes.py @@ -6,7 +6,6 @@ import AbstractBase -import sys import lldb from lldbsuite.test.decorators import * @@ -18,14 +17,6 @@ class DoubleTypesTestCase(AbstractBase.GenericTester): mydir = AbstractBase.GenericTester.compute_mydir(__file__) - def setUp(self): - # Call super's setUp(). - AbstractBase.GenericTester.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) - def test_double_type(self): """Test that double-type variables are displayed correctly.""" self.build_and_run('double.cpp', set(['double'])) diff --git a/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypesExpr.py b/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypesExpr.py index 344e53f78e60f35..fea26d1a1262476 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypesExpr.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestDoubleTypesExpr.py @@ -6,7 +6,6 @@ import AbstractBase -import sys import lldb from lldbsuite.test.decorators import * @@ -22,14 +21,6 @@ class DoubleTypesExprTestCase(AbstractBase.GenericTester): # test/types failures for Test*TypesExpr.py: element offset computed wrong # and sign error? - def setUp(self): - # Call super's setUp(). - AbstractBase.GenericTester.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) - def test_double_type(self): """Test that double-type variable expressions are evaluated correctly.""" self.build_and_run_expr('double.cpp', set(['double'])) diff --git a/lldb/packages/Python/lldbsuite/test/types/TestFloatTypes.py b/lldb/packages/Python/lldbsuite/test/types/TestFloatTypes.py index 602da06dcc04f78..01045e39ed69037 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestFloatTypes.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestFloatTypes.py @@ -6,7 +6,6 @@ import AbstractBase -import sys import lldb from lldbsuite.test.decorators import * @@ -18,14 +17,6 @@ class FloatTypesTestCase(AbstractBase.GenericTester): mydir = AbstractBase.GenericTester.compute_mydir(__file__) - def setUp(self): - # Call super's setUp(). - AbstractBase.GenericTester.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) - def test_float_type(self): """Test that float-type variables are displayed correctly.""" self.build_and_run('float.cpp', set(['float'])) diff --git a/lldb/packages/Python/lldbsuite/test/types/TestFloatTypesExpr.py b/lldb/packages/Python/lldbsuite/test/types/TestFloatTypesExpr.py index 12d54c144a04580..56f7aa54c06cdb6 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestFloatTypesExpr.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestFloatTypesExpr.py @@ -6,7 +6,6 @@ import AbstractBase -import sys import lldb from lldbsuite.test.decorators import * @@ -22,14 +21,6 @@ class FloatTypesExprTestCase(AbstractBase.GenericTester): # test/types failures for Test*TypesExpr.py: element offset computed wrong # and sign error? - def setUp(self): - # Call super's setUp(). - AbstractBase.GenericTester.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) - def test_float_type(self): """Test that float-type variable expressions are evaluated correctly.""" self.build_and_run_expr('float.cpp', set(['float'])) diff --git a/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypes.py b/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypes.py index 88a89e83f40ccb0..c73ea421efd63f6 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypes.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypes.py @@ -2,29 +2,14 @@ Test that variables of integer basic types are displayed correctly. """ -from __future__ import print_function - import AbstractBase -import sys -import lldb from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - class IntegerTypesTestCase(AbstractBase.GenericTester): mydir = AbstractBase.GenericTester.compute_mydir(__file__) - def setUp(self): - # Call super's setUp(). - AbstractBase.GenericTester.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) - def test_char_type(self): """Test that char-type variables are displayed correctly.""" self.build_and_run('char.cpp', set(['char']), qd=True) diff --git a/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypesExpr.py b/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypesExpr.py index a6ada4a203121c4..8b603e85a7b9b39 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypesExpr.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestIntegerTypesExpr.py @@ -2,30 +2,14 @@ Test that variable expressions of integer basic types are evaluated correctly. """ -from __future__ import print_function - - import AbstractBase -import sys -import lldb from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - class IntegerTypesExprTestCase(AbstractBase.GenericTester): mydir = AbstractBase.GenericTester.compute_mydir(__file__) - def setUp(self): - # Call super's setUp(). - AbstractBase.GenericTester.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) - def test_char_type(self): """Test that char-type variable expressions are evaluated correctly.""" self.build_and_run_expr('char.cpp', set(['char']), qd=True) diff --git a/lldb/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py b/lldb/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py index 40c028f3e6dc26d..3d514d3ca42b551 100644 --- a/lldb/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py +++ b/lldb/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py @@ -7,7 +7,6 @@ import lldb import lldbsuite.test.lldbutil as lldbutil -import sys from lldbsuite.test.lldbtest import * @@ -18,10 +17,7 @@ class RecursiveTypesTestCase(TestBase): def setUp(self): # Call super's setUp(). TestBase.setUp(self) - # disable "There is a running process, kill it and restart?" prompt - self.runCmd("settings set auto-confirm true") - self.addTearDownHook( - lambda: self.runCmd("settings clear auto-confirm")) + # Find the line number to break for main.c. self.line = line_number('recursive_type_main.cpp', '// Test at this line.') diff --git a/lldb/packages/Python/lldbsuite/test/warnings/uuid/Makefile b/lldb/packages/Python/lldbsuite/test/warnings/uuid/Makefile deleted file mode 100644 index 8a7102e347af282..000000000000000 --- a/lldb/packages/Python/lldbsuite/test/warnings/uuid/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -LEVEL = ../../make - -CXX_SOURCES := main.cpp - -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test_event/build_exception.py b/lldb/packages/Python/lldbsuite/test_event/build_exception.py index 5b00b92d4738626..3347d9fd7cf7ee5 100644 --- a/lldb/packages/Python/lldbsuite/test_event/build_exception.py +++ b/lldb/packages/Python/lldbsuite/test_event/build_exception.py @@ -13,4 +13,4 @@ def __str__(self): @staticmethod def format_build_error(command, command_output): return "Error when building test subject.\n\nBuild Command:\n{}\n\nBuild Command Output:\n{}".format( - command, command_output) + command, command_output.decode("utf-8")) diff --git a/lldb/packages/Python/lldbsuite/test_event/formatter/__init__.py b/lldb/packages/Python/lldbsuite/test_event/formatter/__init__.py index 3bb482cc8fc8be8..1fe6ecd3ef82f61 100644 --- a/lldb/packages/Python/lldbsuite/test_event/formatter/__init__.py +++ b/lldb/packages/Python/lldbsuite/test_event/formatter/__init__.py @@ -24,7 +24,6 @@ class FormatterConfig(object): def __init__(self): self.filename = None - self.port = None self.formatter_name = None self.formatter_options = None @@ -48,43 +47,10 @@ def create_results_formatter(config): @return an instance of CreatedFormatter. """ - def create_socket(port): - """Creates a socket to the localhost on the given port. - - @param port the port number of the listening port on - the localhost. - - @return (socket object, socket closing function) - """ - - def socket_closer(open_sock): - """Close down an opened socket properly.""" - open_sock.shutdown(socket.SHUT_RDWR) - open_sock.close() - - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect(("localhost", port)) - - # Wait for the ack from the listener side. - # This is needed to prevent a race condition - # in the main dosep.py processing loop: we - # can't allow a worker queue thread to die - # that has outstanding messages to a listener - # socket before the listener socket asyncore - # listener socket gets spun up; otherwise, - # we lose the test result info. - read_bytes = sock.recv(1) - if read_bytes is None or (len(read_bytes) < 1) or (read_bytes != b'*'): - raise Exception( - "listening socket did not respond with ack byte: response={}".format(read_bytes)) - - return sock, lambda: socket_closer(sock) - default_formatter_name = None results_file_object = None cleanup_func = None - file_is_stream = False if config.filename: # Open the results file for writing. if config.filename == 'stdout': @@ -98,12 +64,6 @@ def socket_closer(open_sock): cleanup_func = results_file_object.close default_formatter_name = ( "lldbsuite.test_event.formatter.xunit.XunitFormatter") - elif config.port: - # Connect to the specified localhost port. - results_file_object, cleanup_func = create_socket(config.port) - default_formatter_name = ( - "lldbsuite.test_event.formatter.pickled.RawPickledFormatter") - file_is_stream = True # If we have a results formatter name specified and we didn't specify # a results file, we should use stdout. @@ -141,8 +101,7 @@ def socket_closer(open_sock): # Create the TestResultsFormatter given the processed options. results_formatter_object = cls( results_file_object, - formatter_options, - file_is_stream) + formatter_options) def shutdown_formatter(): """Shuts down the formatter when it is no longer needed.""" diff --git a/lldb/packages/Python/lldbsuite/test_event/formatter/curses.py b/lldb/packages/Python/lldbsuite/test_event/formatter/curses.py deleted file mode 100644 index 05b773f9e69679b..000000000000000 --- a/lldb/packages/Python/lldbsuite/test_event/formatter/curses.py +++ /dev/null @@ -1,341 +0,0 @@ -""" - Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. - See https://llvm.org/LICENSE.txt for license information. - SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -""" - -from __future__ import absolute_import -from __future__ import print_function - -# System modules -import curses -import datetime -import math -import sys -import time - -# Third-party modules - -# LLDB modules -from lldbsuite.test import lldbcurses - -from . import results_formatter -from ..event_builder import EventBuilder - - -class Curses(results_formatter.ResultsFormatter): - """Receives live results from tests that are running and reports them to the terminal in a curses GUI""" - - def __init__(self, out_file, options, file_is_stream): - # Initialize the parent - super(Curses, self).__init__(out_file, options, file_is_stream) - self.using_terminal = True - self.have_curses = True - self.initialize_event = None - self.jobs = [None] * 64 - self.job_tests = [None] * 64 - self.results = list() - try: - self.main_window = lldbcurses.intialize_curses() - self.main_window.add_key_action( - '\t', - self.main_window.select_next_first_responder, - "Switch between views that can respond to keyboard input") - self.main_window.refresh() - self.job_panel = None - self.results_panel = None - self.status_panel = None - self.info_panel = None - self.hide_status_list = list() - self.start_time = time.time() - except: - self.have_curses = False - lldbcurses.terminate_curses() - self.using_terminal = False - print("Unexpected error:", sys.exc_info()[0]) - raise - - self.line_dict = dict() - # self.events_file = open("/tmp/events.txt", "w") - # self.formatters = list() - # if tee_results_formatter: - # self.formatters.append(tee_results_formatter) - - def status_to_short_str(self, status, test_event): - if status == EventBuilder.STATUS_SUCCESS: - return '.' - elif status == EventBuilder.STATUS_FAILURE: - return 'F' - elif status == EventBuilder.STATUS_UNEXPECTED_SUCCESS: - return '?' - elif status == EventBuilder.STATUS_EXPECTED_FAILURE: - return 'X' - elif status == EventBuilder.STATUS_SKIP: - return 'S' - elif status == EventBuilder.STATUS_ERROR: - if test_event.get("issue_phase", None) == "build": - # Build failure - return 'B' - else: - return 'E' - elif status == EventBuilder.STATUS_TIMEOUT: - return 'T' - elif status == EventBuilder.STATUS_EXPECTED_TIMEOUT: - return 't' - else: - return status - - def show_info_panel(self): - selected_idx = self.results_panel.get_selected_idx() - if selected_idx >= 0 and selected_idx < len(self.results): - if self.info_panel is None: - info_frame = self.results_panel.get_contained_rect( - top_inset=10, left_inset=10, right_inset=10, height=30) - self.info_panel = lldbcurses.BoxedPanel( - info_frame, "Result Details") - # Add a key action for any key that will hide this panel when - # any key is pressed - self.info_panel.add_key_action(-1, - self.hide_info_panel, - 'Hide the info panel') - self.info_panel.top() - else: - self.info_panel.show() - - self.main_window.push_first_responder(self.info_panel) - test_start = self.results[selected_idx][0] - test_result = self.results[selected_idx][1] - self.info_panel.set_line( - 0, "File: %s" % - (test_start['test_filename'])) - self.info_panel.set_line( - 1, "Test: %s.%s" % - (test_start['test_class'], test_start['test_name'])) - self.info_panel.set_line( - 2, "Time: %s" % - (test_result['elapsed_time'])) - self.info_panel.set_line(3, "Status: %s" % (test_result['status'])) - - def hide_info_panel(self): - self.main_window.pop_first_responder(self.info_panel) - self.info_panel.hide() - self.main_window.refresh() - - def toggle_status(self, status): - if status: - # Toggle showing and hiding results whose status matches "status" - # in "Results" window - if status in self.hide_status_list: - self.hide_status_list.remove(status) - else: - self.hide_status_list.append(status) - self.update_results() - - def update_results(self, update=True): - '''Called after a category of test have been show/hidden to update the results list with - what the user desires to see.''' - self.results_panel.clear(update=False) - for result in self.results: - test_result = result[1] - status = test_result['status'] - if status in self.hide_status_list: - continue - name = test_result['test_class'] + '.' + test_result['test_name'] - self.results_panel.append_line( - '%s (%6.2f sec) %s' % - (self.status_to_short_str( - status, - test_result), - test_result['elapsed_time'], - name)) - if update: - self.main_window.refresh() - - def handle_event(self, test_event): - with self.lock: - super(Curses, self).handle_event(test_event) - # for formatter in self.formatters: - # formatter.process_event(test_event) - if self.have_curses: - worker_index = -1 - if 'worker_index' in test_event: - worker_index = test_event['worker_index'] - if 'event' in test_event: - check_for_one_key = True - #print(str(test_event), file=self.events_file) - event = test_event['event'] - if self.status_panel: - self.status_panel.update_status( - 'time', str( - datetime.timedelta( - seconds=math.floor( - time.time() - self.start_time)))) - if event == 'test_start': - name = test_event['test_class'] + \ - '.' + test_event['test_name'] - self.job_tests[worker_index] = test_event - if 'pid' in test_event: - line = 'pid: %5d ' % (test_event['pid']) + name - else: - line = name - self.job_panel.set_line(worker_index, line) - self.main_window.refresh() - elif event == 'test_result': - status = test_event['status'] - self.status_panel.increment_status(status) - if 'pid' in test_event: - line = 'pid: %5d ' % (test_event['pid']) - else: - line = '' - self.job_panel.set_line(worker_index, line) - name = test_event['test_class'] + \ - '.' + test_event['test_name'] - elapsed_time = test_event[ - 'event_time'] - self.job_tests[worker_index]['event_time'] - if status not in self.hide_status_list: - self.results_panel.append_line( - '%s (%6.2f sec) %s' % - (self.status_to_short_str( - status, test_event), elapsed_time, name)) - self.main_window.refresh() - # Append the result pairs - test_event['elapsed_time'] = elapsed_time - self.results.append( - [self.job_tests[worker_index], test_event]) - self.job_tests[worker_index] = '' - elif event == 'job_begin': - self.jobs[worker_index] = test_event - if 'pid' in test_event: - line = 'pid: %5d ' % (test_event['pid']) - else: - line = '' - self.job_panel.set_line(worker_index, line) - elif event == 'job_end': - self.jobs[worker_index] = '' - self.job_panel.set_line(worker_index, '') - elif event == 'initialize': - self.initialize_event = test_event - num_jobs = test_event['worker_count'] - job_frame = self.main_window.get_contained_rect( - height=num_jobs + 2) - results_frame = self.main_window.get_contained_rect( - top_inset=num_jobs + 2, bottom_inset=1) - status_frame = self.main_window.get_contained_rect( - height=1, top_inset=self.main_window.get_size().h - 1) - self.job_panel = lldbcurses.BoxedPanel( - frame=job_frame, title="Jobs") - self.results_panel = lldbcurses.BoxedPanel( - frame=results_frame, title="Results") - - self.results_panel.add_key_action( - curses.KEY_UP, - self.results_panel.select_prev, - "Select the previous list entry") - self.results_panel.add_key_action( - curses.KEY_DOWN, self.results_panel.select_next, "Select the next list entry") - self.results_panel.add_key_action( - curses.KEY_HOME, - self.results_panel.scroll_begin, - "Scroll to the start of the list") - self.results_panel.add_key_action( - curses.KEY_END, self.results_panel.scroll_end, "Scroll to the end of the list") - self.results_panel.add_key_action( - curses.KEY_ENTER, - self.show_info_panel, - "Display info for the selected result item") - self.results_panel.add_key_action( - '.', - lambda: self.toggle_status( - EventBuilder.STATUS_SUCCESS), - "Toggle showing/hiding tests whose status is 'success'") - self.results_panel.add_key_action( - 'e', - lambda: self.toggle_status( - EventBuilder.STATUS_ERROR), - "Toggle showing/hiding tests whose status is 'error'") - self.results_panel.add_key_action( - 'f', - lambda: self.toggle_status( - EventBuilder.STATUS_FAILURE), - "Toggle showing/hiding tests whose status is 'failure'") - self.results_panel.add_key_action('s', lambda: self.toggle_status( - EventBuilder.STATUS_SKIP), "Toggle showing/hiding tests whose status is 'skip'") - self.results_panel.add_key_action( - 'x', - lambda: self.toggle_status( - EventBuilder.STATUS_EXPECTED_FAILURE), - "Toggle showing/hiding tests whose status is 'expected_failure'") - self.results_panel.add_key_action( - '?', - lambda: self.toggle_status( - EventBuilder.STATUS_UNEXPECTED_SUCCESS), - "Toggle showing/hiding tests whose status is 'unexpected_success'") - self.status_panel = lldbcurses.StatusPanel( - frame=status_frame) - - self.main_window.add_child(self.job_panel) - self.main_window.add_child(self.results_panel) - self.main_window.add_child(self.status_panel) - self.main_window.set_first_responder( - self.results_panel) - - self.status_panel.add_status_item( - name="time", - title="Elapsed", - format="%s", - width=20, - value="0:00:00", - update=False) - self.status_panel.add_status_item( - name=EventBuilder.STATUS_SUCCESS, - title="Success", - format="%u", - width=20, - value=0, - update=False) - self.status_panel.add_status_item( - name=EventBuilder.STATUS_FAILURE, - title="Failure", - format="%u", - width=20, - value=0, - update=False) - self.status_panel.add_status_item( - name=EventBuilder.STATUS_ERROR, - title="Error", - format="%u", - width=20, - value=0, - update=False) - self.status_panel.add_status_item( - name=EventBuilder.STATUS_SKIP, - title="Skipped", - format="%u", - width=20, - value=0, - update=True) - self.status_panel.add_status_item( - name=EventBuilder.STATUS_EXPECTED_FAILURE, - title="Expected Failure", - format="%u", - width=30, - value=0, - update=False) - self.status_panel.add_status_item( - name=EventBuilder.STATUS_UNEXPECTED_SUCCESS, - title="Unexpected Success", - format="%u", - width=30, - value=0, - update=False) - self.main_window.refresh() - elif event == 'terminate': - # self.main_window.key_event_loop() - lldbcurses.terminate_curses() - check_for_one_key = False - self.using_terminal = False - # Check for 1 keypress with no delay - - # Check for 1 keypress with no delay - if check_for_one_key: - self.main_window.key_event_loop(0, 1) diff --git a/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py b/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py index acb5c56e0287ec3..0ce7a4ef91351a4 100644 --- a/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py +++ b/lldb/packages/Python/lldbsuite/test_event/formatter/pickled.py @@ -46,18 +46,14 @@ class BlockSerializer(object): def serialize(test_event, out_file): cPickle.dump(test_event, out_file) - def __init__(self, out_file, options, file_is_stream): + def __init__(self, out_file, options): super( RawPickledFormatter, self).__init__( out_file, - options, - file_is_stream) + options) self.pid = os.getpid() - if file_is_stream: - self.serializer = self.StreamSerializer() - else: - self.serializer = self.BlockSerializer() + self.serializer = self.BlockSerializer() def handle_event(self, test_event): super(RawPickledFormatter, self).handle_event(test_event) diff --git a/lldb/packages/Python/lldbsuite/test_event/formatter/results_formatter.py b/lldb/packages/Python/lldbsuite/test_event/formatter/results_formatter.py index ac2778e55def969..140a319287407e6 100644 --- a/lldb/packages/Python/lldbsuite/test_event/formatter/results_formatter.py +++ b/lldb/packages/Python/lldbsuite/test_event/formatter/results_formatter.py @@ -114,7 +114,7 @@ def arg_parser(cls): 'the summary output.')) return parser - def __init__(self, out_file, options, file_is_stream): + def __init__(self, out_file, options): super(ResultsFormatter, self).__init__() self.out_file = out_file self.options = options @@ -123,7 +123,6 @@ def __init__(self, out_file, options, file_is_stream): raise Exception("ResultsFormatter created with no file object") self.start_time_by_test = {} self.terminate_called = False - self.file_is_stream = file_is_stream # Track the most recent test start event by worker index. # We'll use this to assign TIMEOUT and exceptional diff --git a/lldb/packages/Python/lldbsuite/test_event/formatter/xunit.py b/lldb/packages/Python/lldbsuite/test_event/formatter/xunit.py index 9e360459d4cebff..e480df59a2f28f1 100644 --- a/lldb/packages/Python/lldbsuite/test_event/formatter/xunit.py +++ b/lldb/packages/Python/lldbsuite/test_event/formatter/xunit.py @@ -155,14 +155,14 @@ def _build_regex_list_from_patterns(patterns): regex_list.append(re.compile(pattern)) return regex_list - def __init__(self, out_file, options, file_is_stream): + def __init__(self, out_file, options): """Initializes the XunitFormatter instance. @param out_file file-like object where formatted output is written. @param options specifies a dictionary of options for the formatter. """ # Initialize the parent - super(XunitFormatter, self).__init__(out_file, options, file_is_stream) + super(XunitFormatter, self).__init__(out_file, options) self.text_encoding = "UTF-8" self.invalid_xml_re = XunitFormatter._build_illegal_xml_regex() self.total_test_count = 0 diff --git a/lldb/scripts/CMakeLists.txt b/lldb/scripts/CMakeLists.txt index 439852793f18a09..1a0ea96ff9f652a 100644 --- a/lldb/scripts/CMakeLists.txt +++ b/lldb/scripts/CMakeLists.txt @@ -14,6 +14,11 @@ if(LLDB_BUILD_FRAMEWORK) endif() find_package(SWIG REQUIRED) +set(SWIG_MIN_VERSION "2.0.0") +if (${SWIG_VERSION} VERSION_LESS ${SWIG_MIN_VERSION}) + message(FATAL_ERROR "LLDB requires swig ${SWIG_MIN_VERSION}, your version is ${SWIG_VERSION}.") +endif() + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lldb.py diff --git a/lldb/scripts/Python/finish-swig-Python-LLDB.sh b/lldb/scripts/Python/finish-swig-Python-LLDB.sh deleted file mode 100755 index 1cd17744a70880f..000000000000000 --- a/lldb/scripts/Python/finish-swig-Python-LLDB.sh +++ /dev/null @@ -1,309 +0,0 @@ -#!/bin/sh - -# finish-swig-Python.sh -# -# For the Python script interpreter (external to liblldb) to be able to import -# and use the lldb module, there must be two files, lldb.py and _lldb.so, that -# it can find. lldb.py is generated by SWIG at the same time it generates the -# C++ file. _lldb.so is actually a symlink file that points to the -# LLDB shared library/framework. -# -# The Python script interpreter needs to be able to automatically find -# these two files. On Darwin systems it searches in the LLDB.framework, as -# well as in all the normal Python search paths. On non-Darwin systems -# these files will need to be put someplace where Python will find them. -# -# This shell script creates the _lldb.so symlink in the appropriate place, -# and copies the lldb.py (and embedded_interpreter.py) file to the correct -# directory. -# - -# SRC_ROOT is the root of the lldb source tree. -# TARGET_DIR is where the lldb framework/shared library gets put. -# CONFIG_BUILD_DIR is where the build-swig-Python-LLDB.sh shell script -# put the lldb.py file it was generated from running SWIG. -# PYTHON_INSTALL_DIR is where non-Darwin systems want to put the .py and .so -# files so that Python can find them automatically. -# debug_flag (optional) determines whether or not this script outputs -# additional information when running. - -SRC_ROOT=$1 -TARGET_DIR=$2 -CONFIG_BUILD_DIR=$3 -PYTHON_INSTALL_DIR=$4 -debug_flag=$5 -makefile_flag=$6 - -# If we don't want Python, then just do nothing here. -# Note, at present iOS doesn't have Python, so if you're building for iOS be sure to -# set LLDB_DISABLE_PYTHON to 1. - -if [ ! "$LLDB_DISABLE_PYTHON" = "1" ] ; then - -if [ -n "$debug_flag" -a "$debug_flag" = "-debug" ] -then - Debug=1 -else - Debug=0 -fi - -if [ -n "$makefile_flag" -a "$makefile_flag" = "-m" ] -then - MakefileCalled=1 -else - MakefileCalled=0 -fi - -OS_NAME=`uname -s` -PYTHON=${PYTHON_EXECUTABLE:-/usr/bin/env python} -PYTHON_VERSION=`${PYTHON} -c 'import sys; print("{}.{}".format(sys.version_info.major, sys.version_info.minor))'` - -if [ $Debug -eq 1 ] -then - echo "The current OS is $OS_NAME" - echo "The Python version is $PYTHON_VERSION" -fi - -if [ ${OS_NAME} = "Darwin" ] -then - SOEXT=".dylib" -else - SOEXT=".so" -fi - -# -# Determine where to put the files. - -if [ $MakefileCalled -eq 0 ] -then - # We are being built by Xcode, so all the lldb Python files can go - # into the LLDB.framework/Resources/Python subdirectory. - - if [ ! -d "${TARGET_DIR}/LLDB.framework" ] - then - echo "Error: Unable to find LLDB.framework" >&2 - exit 1 - else - if [ $Debug -eq 1 ] - then - echo "Found ${TARGET_DIR}/LLDB.framework." - fi - fi - - # Make the Python directory in the framework if it doesn't already exist - - framework_python_dir="${TARGET_DIR}/LLDB.framework/Resources/Python/lldb" -else - # We are being built by LLVM, so use the PYTHON_INSTALL_DIR argument, - # and append the python version directory to the end of it. Depending on - # the system other stuff may need to be put here as well. - - if [ -n "${PYTHON_INSTALL_DIR}" ] - then - framework_python_dir=`${PYTHON} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, False, \"${PYTHON_INSTALL_DIR}\");"`/lldb - else - framework_python_dir=`${PYTHON} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, False);"`/lldb - fi -fi - -[ -n "${CONFIG_BUILD_DIR}" ] || CONFIG_BUILD_DIR=${framework_python_dir} - -# -# Look for the directory in which to put the Python files; if it does not -# already exist, attempt to make it. -# - -if [ $Debug -eq 1 ] -then - echo "Python files will be put in ${framework_python_dir}" -fi - -python_dirs="${framework_python_dir}" - -for python_dir in $python_dirs -do - if [ ! -d "${python_dir}" ] - then - if [ $Debug -eq 1 ] - then - echo "Making directory ${python_dir}" - fi - mkdir -p "${python_dir}" - else - if [ $Debug -eq 1 ] - then - echo "${python_dir} already exists." - fi - fi - - if [ ! -d "${python_dir}" ] - then - echo "Error: Unable to find or create ${python_dir}" >&2 - exit 1 - fi -done - -# Make the symlink that the script bridge for Python will need in the -# Python framework directory - -if [ ! -L "${framework_python_dir}/_lldb.so" ] -then - if [ $Debug -eq 1 ] - then - echo "Creating symlink for _lldb.so" - fi - cd "${framework_python_dir}" - if [ $MakefileCalled -eq 0 ] - then - ln -s "../../../LLDB" _lldb.so - else - ln -s "../../../liblldb${SOEXT}" _lldb.so - fi -else - if [ $Debug -eq 1 ] - then - echo "${framework_python_dir}/_lldb.so already exists." - fi -fi - -# Make symlink for darwin-debug on Darwin -if [ ${OS_NAME} = "Darwin" ] && [ $MakefileCalled -ne 0 ] -then - # We are being built by CMake on Darwin - - if [ ! -L "${framework_python_dir}/darwin-debug" ] - then - if [ $Debug -eq 1 ] - then - echo "Creating symlink for darwin-debug" - fi - cd "${framework_python_dir}" - else - if [ $Debug -eq 1 ] - then - echo "${framework_python_dir}/darwin-debug already exists." - fi - fi -fi - -# Make symlink for lldb-argdumper on any platform -if [ $MakefileCalled -ne 0 ] -then - # We are being built by CMake - - if [ ! -L "${framework_python_dir}/lldb-argdumper" ] - then - if [ $Debug -eq 1 ] - then - echo "Creating symlink for lldb-argdumper" - fi - cd "${framework_python_dir}" - ln -s "../../../../bin/lldb-argdumper" lldb-argdumper - else - if [ $Debug -eq 1 ] - then - echo "${framework_python_dir}/lldb-argdumper already exists." - fi - fi -fi - -create_python_package () { - package_dir="${framework_python_dir}$1" - package_files="$2" - package_name=`echo $1 | tr '/' '.'` - package_name="lldb${package_name}" - - if [ ! -d "${package_dir}" ] - then - mkdir -p "${package_dir}" - fi - - for package_file in $package_files - do - if [ -f "${package_file}" ] - then - cp "${package_file}" "${package_dir}" - package_file_basename=$(basename "${package_file}") - fi - done - - - # Create a packate init file if there wasn't one - package_init_file="${package_dir}/__init__.py" - if [ ! -f "${package_init_file}" ] - then - printf "__all__ = [" > "${package_init_file}" - python_module_separator="" - for package_file in $package_files - do - if [ -f "${package_file}" ] - then - package_file_basename=$(basename "${package_file}") - printf "${python_module_separator}\"${package_file_basename%.*}\"" >> "${package_init_file}" - python_module_separator=", " - fi - done - echo "]" >> "${package_init_file}" - echo "for x in __all__:" >> "${package_init_file}" - echo " __import__('${package_name}.'+x)" >> "${package_init_file}" - fi - - -} - -# Copy the lldb.py file into the lldb package directory and rename to __init_.py -cp "${CONFIG_BUILD_DIR}/lldb.py" "${framework_python_dir}/__init__.py" - -# lldb -package_files="${SRC_ROOT}/source/Interpreter/embedded_interpreter.py" -create_python_package "" "${package_files}" - -# lldb/formatters/cpp -package_files="${SRC_ROOT}/examples/synthetic/gnu_libstdcpp.py -${SRC_ROOT}/examples/synthetic/libcxx.py" -create_python_package "/formatters/cpp" "${package_files}" - -# make an empty __init__.py in lldb/runtime -# this is required for Python to recognize lldb.runtime as a valid package -# (and hence, lldb.runtime.objc as a valid contained package) -create_python_package "/runtime" "" - -# lldb/formatters -# having these files copied here ensures that lldb/formatters is a valid package itself -package_files="${SRC_ROOT}/examples/summaries/cocoa/cache.py -${SRC_ROOT}/examples/summaries/synth.py -${SRC_ROOT}/examples/summaries/cocoa/metrics.py -${SRC_ROOT}/examples/summaries/cocoa/attrib_fromdict.py -${SRC_ROOT}/examples/summaries/cocoa/Logger.py" -create_python_package "/formatters" "${package_files}" - -# lldb/utils -package_files="${SRC_ROOT}/examples/python/symbolication.py" -create_python_package "/utils" "${package_files}" - -if [ ${OS_NAME} = "Darwin" ] -then - # lldb/macosx - package_files="${SRC_ROOT}/examples/python/crashlog.py - ${SRC_ROOT}/examples/darwin/heap_find/heap.py" - create_python_package "/macosx" "${package_files}" - - # lldb/diagnose - package_files="${SRC_ROOT}/examples/python/diagnose_unwind.py - ${SRC_ROOT}/examples/python/diagnose_nsstring.py" - create_python_package "/diagnose" "${package_files}" - - # Copy files needed by lldb/macosx/heap.py to build libheap.dylib - heap_dir="${framework_python_dir}/macosx/heap" - if [ ! -d "${heap_dir}" ] - then - mkdir -p "${heap_dir}" - cp "${SRC_ROOT}/examples/darwin/heap_find/heap/heap_find.cpp" "${heap_dir}" - cp "${SRC_ROOT}/examples/darwin/heap_find/heap/Makefile" "${heap_dir}" - fi -fi - -fi - -exit 0 - diff --git a/lldb/scripts/Python/prepare_binding_Python.py b/lldb/scripts/Python/prepare_binding_Python.py index 31aef6cf8f0c5ce..7d13d6ebb17f796 100644 --- a/lldb/scripts/Python/prepare_binding_Python.py +++ b/lldb/scripts/Python/prepare_binding_Python.py @@ -204,6 +204,7 @@ def do_swig_rebuild(options, dependency_file, config_build_dir, settings): "-c++", "-shadow", "-python", + "-features", "autodoc", "-threads", "-I" + os.path.normpath(os.path.join(options.src_root, "include")), "-I" + os.path.curdir, diff --git a/lldb/scripts/Python/python-extensions.swig b/lldb/scripts/Python/python-extensions.swig index 892e1af4bae5976..7823dc4ad1a04fb 100644 --- a/lldb/scripts/Python/python-extensions.swig +++ b/lldb/scripts/Python/python-extensions.swig @@ -46,18 +46,18 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - - %pythoncode %{ + + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} @@ -97,17 +97,17 @@ } %extend lldb::SBBroadcaster { - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -127,7 +127,7 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - + /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage they are meant to make an SBCommandReturnObject into a file-like object so that instructions of the sort print >>sb_command_return_object, "something" @@ -156,17 +156,17 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -217,18 +217,18 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - - %pythoncode %{ + + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} @@ -296,18 +296,18 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - - %pythoncode %{ + + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} @@ -359,18 +359,18 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - - %pythoncode %{ + + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -407,18 +407,18 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - - %pythoncode %{ + + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -488,18 +488,18 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - - %pythoncode %{ + + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -534,15 +534,15 @@ %clearnothreadallow; %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -595,17 +595,17 @@ } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -657,17 +657,17 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -750,17 +750,17 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -779,17 +779,17 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -808,17 +808,17 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -837,17 +837,17 @@ return lldb_private::PythonString("").release(); } %clearnothreadallow; - %pythoncode %{ + %pythoncode %{ def __eq__(self, rhs): - if not isinstance(rhs, type(self)): - return False - + if not isinstance(rhs, type(self)): + return False + return getattr(_lldb,self.__class__.__name__+"___eq__")(self, rhs) - + def __ne__(self, rhs): - if not isinstance(rhs, type(self)): - return True - + if not isinstance(rhs, type(self)): + return True + return getattr(_lldb,self.__class__.__name__+"___ne__")(self, rhs) %} } @@ -945,14 +945,17 @@ class declaration(object): class value_iter(object): def __iter__(self): return self - - def next(self): + + def __next__(self): if self.index >= self.length: raise StopIteration() child_sbvalue = self.sbvalue.GetChildAtIndex(self.index) self.index += 1 return value(child_sbvalue) - + + def next(self): + return self.__next__() + def __init__(self,value): self.index = 0 self.sbvalue = value @@ -965,7 +968,7 @@ class value(object): can be used as a variable would be in code. So if you have a Point structure variable in your code in the current frame named "pt", you can initialize an instance of this class with it: - + pt = lldb.value(lldb.frame.FindVariable("pt")) print pt print pt.x @@ -980,6 +983,9 @@ class value(object): def __nonzero__(self): return self.sbvalue.__nonzero__() + def __bool__(self): + return self.sbvalue.__bool__() + def __str__(self): return self.sbvalue.__str__() @@ -1005,131 +1011,131 @@ class value(object): def __add__(self, other): return int(self) + int(other) - + def __sub__(self, other): return int(self) - int(other) - + def __mul__(self, other): return int(self) * int(other) - + def __floordiv__(self, other): return int(self) // int(other) - + def __mod__(self, other): return int(self) % int(other) - + def __divmod__(self, other): return int(self) % int(other) - + def __pow__(self, other): return int(self) ** int(other) - + def __lshift__(self, other): return int(self) << int(other) - + def __rshift__(self, other): return int(self) >> int(other) - + def __and__(self, other): return int(self) & int(other) - + def __xor__(self, other): return int(self) ^ int(other) - + def __or__(self, other): return int(self) | int(other) - + def __div__(self, other): return int(self) / int(other) - + def __truediv__(self, other): return int(self) / int(other) - + def __iadd__(self, other): result = self.__add__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __isub__(self, other): result = self.__sub__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __imul__(self, other): result = self.__mul__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __idiv__(self, other): result = self.__div__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __itruediv__(self, other): result = self.__truediv__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __ifloordiv__(self, other): result = self.__floordiv__(self, other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __imod__(self, other): result = self.__and__(self, other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __ipow__(self, other): result = self.__pow__(self, other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __ipow__(self, other, modulo): result = self.__pow__(self, other, modulo) self.sbvalue.SetValueFromCString (str(result)) return result - + def __ilshift__(self, other): result = self.__lshift__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __irshift__(self, other): result = self.__rshift__(other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __iand__(self, other): result = self.__and__(self, other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __ixor__(self, other): result = self.__xor__(self, other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __ior__(self, other): result = self.__ior__(self, other) self.sbvalue.SetValueFromCString (str(result)) return result - + def __neg__(self): return -int(self) - + def __pos__(self): return +int(self) - + def __abs__(self): return abs(int(self)) - + def __invert__(self): return ~int(self) - + def __complex__(self): return complex (int(self)) - + def __int__(self): is_num,is_sign = is_numeric_type(self.sbvalue.GetType().GetCanonicalType().GetBasicType()) if is_num and not is_sign: return self.sbvalue.GetValueAsUnsigned() @@ -1140,10 +1146,10 @@ class value(object): def __float__(self): return float (self.sbvalue.GetValueAsSigned()) - + def __oct__(self): return '0%o' % self.sbvalue.GetValueAsUnsigned() - + def __hex__(self): return '0x%x' % self.sbvalue.GetValueAsUnsigned() diff --git a/lldb/scripts/Xcode/build-llvm.py b/lldb/scripts/Xcode/build-llvm.py deleted file mode 100755 index a678247e49bc264..000000000000000 --- a/lldb/scripts/Xcode/build-llvm.py +++ /dev/null @@ -1,461 +0,0 @@ -#!/usr/bin/env python - -import errno -import hashlib -import fnmatch -import os -import platform -import re -import repo -import subprocess -import sys - -from lldbbuild import * - -#### SETTINGS #### - -def LLVM_HASH_INCLUDES_DIFFS(): - return False - -# For use with Xcode-style builds - -def process_vcs(vcs): - return { - "svn": VCS.svn, - "git": VCS.git - }[vcs] - -def process_root(name): - return { - "llvm": llvm_source_path(), - "clang": clang_source_path(), - "ninja": ninja_source_path() - }[name] - -def process_repo(r): - return { - 'name': r["name"], - 'vcs': process_vcs(r["vcs"]), - 'root': process_root(r["name"]), - 'url': r["url"], - 'ref': r["ref"] - } - -def fallback_repo(name): - return { - 'name': name, - 'vcs': None, - 'root': process_root(name), - 'url': None, - 'ref': None - } - -def dirs_exist(names): - for name in names: - if not os.path.isdir(process_root(name)): - return False - return True - -def XCODE_REPOSITORIES(): - names = ["llvm", "clang", "ninja"] - if dirs_exist(names): - return [fallback_repo(n) for n in names] - override = repo.get_override() - if override: - return [process_repo(r) for r in override] - identifier = repo.identifier() - if identifier == None: - identifier = "" # repo.find will just use the fallback file - set = repo.find(identifier) - return [process_repo(r) for r in set] - - -def get_c_compiler(): - return subprocess.check_output([ - 'xcrun', - '--sdk', 'macosx', - '-find', 'clang' - ]).rstrip() - - -def get_cxx_compiler(): - return subprocess.check_output([ - 'xcrun', - '--sdk', 'macosx', - '-find', 'clang++' - ]).rstrip() - -# CFLAGS="-isysroot $(xcrun --sdk macosx --show-sdk-path) -mmacosx-version-min=${DARWIN_DEPLOYMENT_VERSION_OSX}" \ -# LDFLAGS="-mmacosx-version-min=${DARWIN_DEPLOYMENT_VERSION_OSX}" \ - - -def get_deployment_target(): - return os.environ.get('MACOSX_DEPLOYMENT_TARGET', None) - - -def get_c_flags(): - cflags = '' - # sdk_path = subprocess.check_output([ - # 'xcrun', - # '--sdk', 'macosx', - # '--show-sdk-path']).rstrip() - # cflags += '-isysroot {}'.format(sdk_path) - - deployment_target = get_deployment_target() - if deployment_target: - # cflags += ' -mmacosx-version-min={}'.format(deployment_target) - pass - - return cflags - - -def get_cxx_flags(): - return get_c_flags() - - -def get_common_linker_flags(): - linker_flags = "" - deployment_target = get_deployment_target() - if deployment_target: - # if len(linker_flags) > 0: - # linker_flags += ' ' - # linker_flags += '-mmacosx-version-min={}'.format(deployment_target) - pass - - return linker_flags - - -def get_exe_linker_flags(): - return get_common_linker_flags() - - -def get_shared_linker_flags(): - return get_common_linker_flags() - - -def CMAKE_FLAGS(): - return { - "Debug": [ - "-DCMAKE_BUILD_TYPE=RelWithDebInfo", - "-DLLVM_ENABLE_ASSERTIONS=ON", - ], - "DebugClang": [ - "-DCMAKE_BUILD_TYPE=Debug", - "-DLLVM_ENABLE_ASSERTIONS=ON", - ], - "Release": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DLLVM_ENABLE_ASSERTIONS=ON", - ], - "BuildAndIntegration": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DLLVM_ENABLE_ASSERTIONS=OFF", - ], - } - - -def CMAKE_ENVIRONMENT(): - return { - } - -#### COLLECTING ALL ARCHIVES #### - - -def collect_archives_in_path(path): - files = os.listdir(path) - # Only use libclang and libLLVM archives, and exclude libclang_rt - regexp = "^lib(clang[^_]|LLVM|gtest).*$" - return [ - os.path.join( - path, - file) for file in files if file.endswith(".a") and re.match( - regexp, - file)] - - -def archive_list(): - paths = library_paths() - archive_lists = [collect_archives_in_path(path) for path in paths] - return [archive for archive_list in archive_lists for archive in archive_list] - - -def write_archives_txt(): - f = open(archives_txt(), 'w') - for archive in archive_list(): - f.write(archive + "\n") - f.close() - -#### COLLECTING REPOSITORY MD5S #### - - -def source_control_status(spec): - vcs_for_spec = vcs(spec) - if LLVM_HASH_INCLUDES_DIFFS(): - return vcs_for_spec.status() + vcs_for_spec.diff() - else: - return vcs_for_spec.status() - - -def source_control_status_for_specs(specs): - statuses = [source_control_status(spec) for spec in specs] - return "".join(statuses) - - -def all_source_control_status(): - return source_control_status_for_specs(XCODE_REPOSITORIES()) - - -def md5(string): - m = hashlib.md5() - m.update(string) - return m.hexdigest() - - -def all_source_control_status_md5(): - return md5(all_source_control_status()) - -#### CHECKING OUT AND BUILDING LLVM #### - - -def apply_patches(spec): - files = os.listdir(os.path.join(lldb_source_path(), 'scripts')) - patches = [ - f for f in files if fnmatch.fnmatch( - f, spec['name'] + '.*.diff')] - for p in patches: - run_in_directory(["patch", - "-p1", - "-i", - os.path.join(lldb_source_path(), - 'scripts', - p)], - spec['root']) - - -def check_out_if_needed(spec): - if not os.path.isdir(spec['root']): - vcs(spec).check_out() - apply_patches(spec) - - -def all_check_out_if_needed(): - for r in XCODE_REPOSITORIES(): - check_out_if_needed(r) - - -def should_build_llvm(): - if build_type() == BuildType.Xcode: - # TODO use md5 sums - return True - - -def do_symlink(source_path, link_path): - print("Symlinking " + source_path + " to " + link_path) - if os.path.islink(link_path): - os.remove(link_path) - if not os.path.exists(link_path): - os.symlink(source_path, link_path) - - -def setup_source_symlink(repo): - source_path = repo["root"] - link_path = os.path.join(lldb_source_path(), os.path.basename(source_path)) - do_symlink(source_path, link_path) - - -def setup_source_symlinks(): - for r in XCODE_REPOSITORIES(): - setup_source_symlink(r) - - -def setup_build_symlink(): - # We don't use the build symlinks in llvm.org Xcode-based builds. - if build_type() != BuildType.Xcode: - source_path = package_build_path() - link_path = expected_package_build_path() - do_symlink(source_path, link_path) - - -def should_run_cmake(cmake_build_dir): - # We need to run cmake if our llvm build directory doesn't yet exist. - if not os.path.exists(cmake_build_dir): - return True - - # Wee also need to run cmake if for some reason we don't have a ninja - # build file. (Perhaps the cmake invocation failed, which this current - # build may have fixed). - ninja_path = os.path.join(cmake_build_dir, "build.ninja") - return not os.path.exists(ninja_path) - - -def cmake_environment(): - cmake_env = join_dicts(os.environ, CMAKE_ENVIRONMENT()) - return cmake_env - - -def is_executable(path): - return os.path.isfile(path) and os.access(path, os.X_OK) - - -def find_executable_in_paths(program, paths_to_check): - program_dir, program_name = os.path.split(program) - if program_dir: - if is_executable(program): - return program - else: - for path_dir in paths_to_check: - path_dir = path_dir.strip('"') - executable_file = os.path.join(path_dir, program) - if is_executable(executable_file): - return executable_file - return None - - -def find_cmake(): - # First check the system PATH env var for cmake - cmake_binary = find_executable_in_paths( - "cmake", os.environ["PATH"].split(os.pathsep)) - if cmake_binary: - # We found it there, use it. - return cmake_binary - - # Check a few more common spots. Xcode launched from Finder - # will have the default environment, and may not have - # all the normal places present. - extra_cmake_dirs = [ - "/usr/local/bin", - "/opt/local/bin", - os.path.join(os.path.expanduser("~"), "bin") - ] - - if platform.system() == "Darwin": - # Add locations where an official CMake.app package may be installed. - extra_cmake_dirs.extend([ - os.path.join( - os.path.expanduser("~"), - "Applications", - "CMake.app", - "Contents", - "bin"), - os.path.join( - os.sep, - "Applications", - "CMake.app", - "Contents", - "bin")]) - - cmake_binary = find_executable_in_paths("cmake", extra_cmake_dirs) - if cmake_binary: - # We found it in one of the usual places. Use that. - return cmake_binary - - # We couldn't find cmake. Tell the user what to do. - raise Exception( - "could not find cmake in PATH ({}) or in any of these locations ({}), " - "please install cmake or add a link to it in one of those locations".format( - os.environ["PATH"], extra_cmake_dirs)) - - -def cmake_flags(): - cmake_flags = CMAKE_FLAGS()[lldb_configuration()] - cmake_flags += ["-GNinja", - "-DCMAKE_C_COMPILER={}".format(get_c_compiler()), - "-DCMAKE_CXX_COMPILER={}".format(get_cxx_compiler()), - "-DCMAKE_INSTALL_PREFIX={}".format(expected_package_build_path_for("llvm")), - "-DCMAKE_C_FLAGS={}".format(get_c_flags()), - "-DCMAKE_CXX_FLAGS={}".format(get_cxx_flags()), - "-DCMAKE_EXE_LINKER_FLAGS={}".format(get_exe_linker_flags()), - "-DCMAKE_SHARED_LINKER_FLAGS={}".format(get_shared_linker_flags()), - "-DHAVE_CRASHREPORTER_INFO=1"] - deployment_target = get_deployment_target() - if deployment_target: - cmake_flags.append( - "-DCMAKE_OSX_DEPLOYMENT_TARGET={}".format(deployment_target)) - return cmake_flags - - -def run_cmake(cmake_build_dir, ninja_binary_path): - cmake_binary = find_cmake() - print("found cmake binary: using \"{}\"".format(cmake_binary)) - - command_line = [cmake_binary] + cmake_flags() + [ - "-DCMAKE_MAKE_PROGRAM={}".format(ninja_binary_path), - llvm_source_path()] - print("running cmake like so: ({}) in dir ({})".format(command_line, cmake_build_dir)) - - subprocess.check_call( - command_line, - cwd=cmake_build_dir, - env=cmake_environment()) - - -def create_directories_as_needed(path): - try: - os.makedirs(path) - except OSError as error: - # An error indicating that the directory exists already is fine. - # Anything else should be passed along. - if error.errno != errno.EEXIST: - raise error - - -def run_cmake_if_needed(ninja_binary_path): - cmake_build_dir = package_build_path() - if should_run_cmake(cmake_build_dir): - # Create the build directory as needed - create_directories_as_needed(cmake_build_dir) - run_cmake(cmake_build_dir, ninja_binary_path) - - -def build_ninja_if_needed(): - # First check if ninja is in our path. If so, there's nothing to do. - ninja_binary_path = find_executable_in_paths( - "ninja", os.environ["PATH"].split(os.pathsep)) - if ninja_binary_path: - # It's on the path. cmake will find it. We're good. - print("found ninja here: \"{}\"".format(ninja_binary_path)) - return ninja_binary_path - - # Figure out if we need to build it. - ninja_build_dir = ninja_source_path() - ninja_binary_path = os.path.join(ninja_build_dir, "ninja") - if not is_executable(ninja_binary_path): - # Build ninja - command_line = ["python", "configure.py", "--bootstrap"] - print("building ninja like so: ({}) in dir ({})".format(command_line, ninja_build_dir)) - subprocess.check_call( - command_line, - cwd=ninja_build_dir, - env=os.environ) - - return ninja_binary_path - - -def join_dicts(dict1, dict2): - d = dict1.copy() - d.update(dict2) - return d - - -def build_llvm(ninja_binary_path): - cmake_build_dir = package_build_path() - subprocess.check_call( - [ninja_binary_path], - cwd=cmake_build_dir, - env=cmake_environment()) - - -def build_llvm_if_needed(): - if should_build_llvm(): - ninja_binary_path = build_ninja_if_needed() - run_cmake_if_needed(ninja_binary_path) - build_llvm(ninja_binary_path) - setup_build_symlink() - -#### MAIN LOGIC #### - -if __name__ == "__main__": - all_check_out_if_needed() - build_llvm_if_needed() - write_archives_txt() - sys.exit(0) diff --git a/lldb/scripts/Xcode/lldbbuild.py b/lldb/scripts/Xcode/lldbbuild.py deleted file mode 100644 index 43481c4a0f87d34..000000000000000 --- a/lldb/scripts/Xcode/lldbbuild.py +++ /dev/null @@ -1,193 +0,0 @@ -import os -import subprocess -import sys - -#### UTILITIES #### - - -def enum(*sequential, **named): - enums = dict(zip(sequential, range(len(sequential))), **named) - return type('Enum', (), enums) - -#### SETTINGS #### - -#### INTERFACE TO THE XCODEPROJ #### - - -def lldb_source_path(): - path = os.environ.get('SRCROOT') - if path: - return path - else: - return "./" - - -def expected_llvm_build_path(): - if build_type() == BuildType.Xcode: - return package_build_path() - else: - return os.path.join( - os.environ.get('LLDB_PATH_TO_LLVM_BUILD'), - package_build_dir_name("llvm")) - - -def archives_txt(): - return os.path.join(expected_package_build_path(), "archives.txt") - - -def expected_package_build_path(): - return os.path.abspath(os.path.join(expected_llvm_build_path(), "..")) - -def is_host_build(): - rc_project_name = os.environ.get('RC_ProjectName') - if rc_project_name: - if rc_project_name == 'lldb_host': return True - return False - -def rc_release_target(): - return os.environ.get('RC_RELEASE', '') - -def rc_platform_name(): - return os.environ.get('RC_PLATFORM_NAME', 'macOS') - -def architecture(): - if is_host_build(): return 'macosx' - platform_name = os.environ.get('RC_PLATFORM_NAME') - if not platform_name: - platform_name = os.environ.get('PLATFORM_NAME') - platform_arch = os.environ.get('ARCHS').split()[-1] - return platform_name + "-" + platform_arch - - -def lldb_configuration(): - return os.environ.get('CONFIGURATION') - - -def llvm_configuration(): - return os.environ.get('LLVM_CONFIGURATION') - - -def llvm_build_dirtree(): - return os.environ.get('LLVM_BUILD_DIRTREE') - -# Edit the code below when adding build styles. - -BuildType = enum('Xcode') # (Debug,DebugClang,Release) - - -def build_type(): - return BuildType.Xcode - -#### VCS UTILITIES #### - -VCS = enum('git', - 'svn') - - -def run_in_directory(args, path): - return subprocess.check_output([str(arg) for arg in args], cwd=path) - - -class Git: - - def __init__(self, spec): - self.spec = spec - - def status(self): - return run_in_directory(["git", "branch", "-v"], self.spec['root']) - - def diff(self): - return run_in_directory(["git", "diff"], self.spec['root']) - - def check_out(self): - run_in_directory(["git", - "clone", - "--depth=1", - self.spec['url'], - self.spec['root']], - lldb_source_path()) - run_in_directory(["git", "fetch", "--all"], self.spec['root']) - run_in_directory(["git", "checkout", self.spec[ - 'ref']], self.spec['root']) - - -class SVN: - - def __init__(self, spec): - self.spec = spec - - def status(self): - return run_in_directory(["svn", "info"], self.spec['root']) - - def diff(self): - return run_in_directory(["svn", "diff"], self.spec['root']) - # TODO implement check_out - - -def vcs(spec): - if spec['vcs'] == VCS.git: - return Git(spec) - elif spec['vcs'] == VCS.svn: - return SVN(spec) - else: - return None - -#### SOURCE PATHS #### - - -def llvm_source_path(): - if build_type() == BuildType.Xcode: - return os.path.join(lldb_source_path(), "llvm") - - -def clang_source_path(): - if build_type() == BuildType.Xcode: - return os.path.join(llvm_source_path(), "tools", "clang") - - -def ninja_source_path(): - if build_type() == BuildType.Xcode: - return os.path.join(lldb_source_path(), "ninja") - -#### BUILD PATHS #### - - -def packages(): - return ["llvm"] - - -def package_build_dir_name(package): - return package + "-" + architecture() - - -def expected_package_build_path_for(package): - if build_type() == BuildType.Xcode: - if package != "llvm": - raise "On Xcode build, we only support the llvm package: requested {}" - return package_build_path() - return os.path.join( - expected_package_build_path(), - package_build_dir_name(package)) - - -def expected_package_build_paths(): - return [expected_package_build_path_for(package) for package in packages()] - - -def library_path(build_path): - return build_path + "/lib" - - -def library_paths(): - if build_type() == BuildType.Xcode: - package_build_paths = [package_build_path()] - else: - package_build_paths = expected_package_build_paths() - return [library_path(build_path) for build_path in package_build_paths] - - -def package_build_path(): - return os.path.join( - llvm_build_dirtree(), - os.environ["LLVM_CONFIGURATION"], - "x86_64") diff --git a/lldb/scripts/Xcode/package-clang-resource-headers.py b/lldb/scripts/Xcode/package-clang-resource-headers.py deleted file mode 100644 index 7e34af9ff338cae..000000000000000 --- a/lldb/scripts/Xcode/package-clang-resource-headers.py +++ /dev/null @@ -1,85 +0,0 @@ -#! /usr/bin/env python - -# package-clang-resource-headers.py -# -# The Clang module loader depends on built-in headers for the Clang compiler. -# We grab these from the Clang build and move them into the LLDB module. - -# TARGET_DIR is where the lldb framework/shared library gets put. -# LLVM_BUILD_DIR is where LLVM and Clang got built -# LLVM_BUILD_DIR/lib/clang should exist and contain headers - -import os -import re -import shutil -import sys - -import lldbbuild - -if len(sys.argv) != 3: - print("usage: " + sys.argv[0] + " TARGET_DIR LLVM_BUILD_DIR") - sys.exit(1) - -target_dir = sys.argv[1] -llvm_build_dir = lldbbuild.expected_package_build_path_for("llvm") - -if not os.path.isdir(target_dir): - print(target_dir + " doesn't exist") - sys.exit(1) - -if not os.path.isdir(llvm_build_dir): - llvm_build_dir = re.sub("-macosx-", "-iphoneos-", llvm_build_dir) - -if not os.path.isdir(llvm_build_dir): - llvm_build_dir = re.sub("-iphoneos-", "-appletvos-", llvm_build_dir) - -if not os.path.isdir(llvm_build_dir): - llvm_build_dir = re.sub("-appletvos-", "-watchos-", llvm_build_dir) - -if not os.path.isdir(llvm_build_dir): - llvm_build_dir = re.sub("-watchos-", "-bridgeos-", llvm_build_dir) - -if not os.path.isdir(llvm_build_dir): - print(llvm_build_dir + " doesn't exist") - sys.exit(1) - -resources = os.path.join(target_dir, "LLDB.framework", "Resources") - -if not os.path.isdir(resources): - print(resources + " must exist") - sys.exit(1) - -clang_dir = os.path.join(llvm_build_dir, "lib", "clang") - -if not os.path.isdir(clang_dir): - print(clang_dir + " must exist") - sys.exit(1) - -version_dir = None - -for subdir in os.listdir(clang_dir): - if (re.match("^[0-9]+(\.[0-9]+)*$", subdir)): - version_dir = os.path.join(clang_dir, subdir) - break - -if version_dir is None: - print("Couldn't find a subdirectory of the form #(.#)... in " + clang_dir) - sys.exit(1) - -if not os.path.isdir(version_dir): - print(version_dir + " is not a directory") - sys.exit(1) - -# Just checking... we're actually going to copy all of version_dir -include_dir = os.path.join(version_dir, "include") - -if not os.path.isdir(include_dir): - print(version_dir + " is not a directory") - sys.exit(1) - -clang_resources = os.path.join(resources, "Clang") - -if os.path.isdir(clang_resources): - shutil.rmtree(clang_resources) - -shutil.copytree(version_dir, clang_resources) diff --git a/lldb/scripts/Xcode/prepare-gtest-run-dir.sh b/lldb/scripts/Xcode/prepare-gtest-run-dir.sh deleted file mode 100755 index 71b340673e5e26e..000000000000000 --- a/lldb/scripts/Xcode/prepare-gtest-run-dir.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -RUNTIME_INPUTS_DIR="${TARGET_BUILD_DIR}/Inputs" -echo "Making runtime Inputs directory: $RUNTIME_INPUTS_DIR" -mkdir -p "$RUNTIME_INPUTS_DIR" - -for input_dir in $(find unittests -type d -name Inputs); do - echo "Copying $input_dir into $RUNTIME_INPUTS_DIR" - cp -r "${input_dir}"/* "${RUNTIME_INPUTS_DIR}/" -done diff --git a/lldb/scripts/Xcode/repo.py b/lldb/scripts/Xcode/repo.py deleted file mode 100644 index 2657b6eb0c4e355..000000000000000 --- a/lldb/scripts/Xcode/repo.py +++ /dev/null @@ -1,54 +0,0 @@ -import json -import os -import re -import shutil -import subprocess -import sys - -def identifier(): - try: - svn_output = subprocess.check_output(["svn", "info", "--show-item", "url"], stderr=subprocess.STDOUT).rstrip() - return svn_output - except: - pass - try: - git_remote_and_branch = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], stderr=subprocess.STDOUT).rstrip() - git_remote = git_remote_and_branch.split("/")[0] - git_branch = "/".join(git_remote_and_branch.split("/")[1:]) - git_url = subprocess.check_output(["git", "remote", "get-url", git_remote]).rstrip() - return git_url + ":" + git_branch - except: - pass - return None - -def get_override(): - dir = os.path.dirname(os.path.realpath(__file__)) - repos_dir = os.path.join(dir, "repos") - json_regex = re.compile(r"^.*.json$") - override_path = os.path.join(repos_dir, "OVERRIDE") - if os.path.isfile(override_path): - override_set = json.load(open(override_path)) - return override_set["repos"] - else: - return None - -def find(identifier): - dir = os.path.dirname(os.path.realpath(__file__)) - repos_dir = os.path.join(dir, "repos") - json_regex = re.compile(r"^.*.json$") - override_path = os.path.join(repos_dir, "OVERRIDE") - if os.path.isfile(override_path): - override_set = json.load(open(override_path)) - return override_set["repos"] - fallback_path = os.path.join(repos_dir, "FALLBACK") - for path in [os.path.join(repos_dir, f) for f in filter(json_regex.match, os.listdir(repos_dir))]: - fd = open(path) - set = json.load(fd) - fd.close() - if any(re.match(set_regex, identifier) for set_regex in set["regexs"]): - shutil.copyfile(path, fallback_path) - return set["repos"] - if os.path.isfile(fallback_path): - fallback_set = json.load(open(fallback_path)) - return fallback_set["repos"] - sys.exit("Couldn't find a branch configuration for " + identifier + " and there was no " + fallback_path) diff --git a/lldb/scripts/Xcode/repos/FALLBACK b/lldb/scripts/Xcode/repos/FALLBACK deleted file mode 100644 index a3bd72424aa0d8c..000000000000000 --- a/lldb/scripts/Xcode/repos/FALLBACK +++ /dev/null @@ -1,19 +0,0 @@ -{ - "regexs" : [".*llvm\\.org.*"], - "repos" : [ - {"name": "llvm", - "vcs": "git", - "url": "http://llvm.org/git/llvm.git", - "ref": "master"}, - - {"name": "clang", - "vcs": "git", - "url": "http://llvm.org/git/clang.git", - "ref": "master"}, - - {"name": "ninja", - "vcs": "git", - "url": "https://github.com/ninja-build/ninja.git", - "ref": "master"} - ] -} diff --git a/lldb/scripts/Xcode/repos/svn-trunk.json b/lldb/scripts/Xcode/repos/svn-trunk.json deleted file mode 100644 index a3bd72424aa0d8c..000000000000000 --- a/lldb/scripts/Xcode/repos/svn-trunk.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "regexs" : [".*llvm\\.org.*"], - "repos" : [ - {"name": "llvm", - "vcs": "git", - "url": "http://llvm.org/git/llvm.git", - "ref": "master"}, - - {"name": "clang", - "vcs": "git", - "url": "http://llvm.org/git/clang.git", - "ref": "master"}, - - {"name": "ninja", - "vcs": "git", - "url": "https://github.com/ninja-build/ninja.git", - "ref": "master"} - ] -} diff --git a/lldb/scripts/build-lldb-llvm-clang b/lldb/scripts/build-lldb-llvm-clang deleted file mode 100755 index c71188ddd00660b..000000000000000 --- a/lldb/scripts/build-lldb-llvm-clang +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh -x - -# Usage: -# build-lldb-llvm-clang [Debug|Release|BuildAndIntegration] -# build-lldb-llvm-clang [Debug|Release|BuildAndIntegration] - -LLVM_REVISION=$1 -CLANG_REVISION=$2 -LLVM_CONFIGURATION=$3 - -if [ "$LLVM_REVISION" = "" ]; then - echo "Usage:\n build-lldb-llvm-clang [ Debug|Release||BuildAndIntegration]" - exit 1 -fi - -if [ "$CLANG_REVISION" = "" ]; then - $CLANG_REVISION = $LLVM_REVISION -fi - -# Checkout LLVM -svn co -q -r $LLVM_REVISION http://llvm.org/svn/llvm-project/llvm/trunk llvm - -# change directory to "./llvm" -cd llvm - -# Checkout Clang -# change directory to "./llvm/tools" -cd tools -svn co -q -r $CLANG_REVISION http://llvm.org/svn/llvm-project/cfe/trunk clang - -# change directory to "./llvm" -cd .. -for patch_file in ../scripts/llvm.*.diff -do - echo "Applying patch from '$patch_file'" - patch -p1 < "$patch_file" -done - -# change directory to "./llvm/tools/clang" -cd tools/clang -for patch_file in ../../../scripts/clang.*.diff -do - echo "Applying patch from '$patch_file'" - patch -p1 < "$patch_file" -done - -# change directory to "./" -cd ../../.. -pwd - -if [ "$LLVM_CONFIGURATION" = "Debug" ]; then - # Configure "Debug+Asserts" build - mkdir llvm-debug - cd llvm-debug - ../llvm/configure --enable-targets=x86_64,arm - make -j8 clang-only VERBOSE=1 PROJECT_NAME='llvm' - make -j8 tools-only VERBOSE=1 PROJECT_NAME='llvm' EDIS_VERSION=1 -elif [ "$LLVM_CONFIGURATION" = "Release" ]; then - # Configure "Release" build - mkdir llvm-release - cd llvm-release - ../llvm/configure --enable-targets=x86_64,arm --enable-optimized --disable-assertions - make -j8 clang-only VERBOSE=1 PROJECT_NAME='llvm' - make -j8 tools-only VERBOSE=1 PROJECT_NAME='llvm' EDIS_VERSION=1 -elif [ "$LLVM_CONFIGURATION" = "BuildAndIntegration" ]; then - # Don't configure or build for "BuildAndIntegration", this configuration - # is a preparation step for a build submission - - # Remove all patches, and the llvm and clang "test" directories - rm -rf ./scripts/*.diff ./llvm/test ./llvm/tools/clang/test -else - echo "checked out llvm (revision $LLVM_REVISION) and clang (revision $CLANG_REVISION)." - exit 0 -fi diff --git a/lldb/scripts/checkpoint-llvm.pl b/lldb/scripts/checkpoint-llvm.pl deleted file mode 100755 index 2372e7e509fac59..000000000000000 --- a/lldb/scripts/checkpoint-llvm.pl +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/perl - -# This script should be pointed to a valid llvm.build folder that -# was created using the "build-llvm.pl" shell script. It will create -# a new llvm.zip file that can be checked into the repository -# at lldb/llvm.zip - -use strict; -use Cwd 'abs_path'; -use File::Basename; -use File::Temp qw/ tempfile tempdir /; -our $debug = 1; - - -sub do_command -{ - my $cmd = shift; - my $description = @_ ? shift : "command"; - my $die_on_fail = @_ ? shift : undef; - $debug and print "% $cmd\n"; - system ($cmd); - if ($? == -1) - { - $debug and printf ("error: %s failed to execute: $!\n", $description); - $die_on_fail and $? and exit(1); - return $?; - } - elsif ($? & 127) - { - $debug and printf("error: %s child died with signal %d, %s coredump\n", - $description, - ($? & 127), - ($? & 128) ? 'with' : 'without'); - $die_on_fail and $? and exit(1); - return $?; - } - else - { - my $exit = $? >> 8; - if ($exit) - { - $debug and printf("error: %s child exited with value %d\n", $description, $exit); - $die_on_fail and exit(1); - } - return $exit; - } -} - -sub do_rsync_paths -{ - while (@_) - { - my $rsync_src = shift @_; - my $rsync_dst = shift @_; - print "rsync_src = '$rsync_src'\n"; - print "rsync_dst = '$rsync_dst'\n"; - - if (!-d $rsync_dst) - { - mkdir $rsync_dst; - } - - if (-e $rsync_src) - { - my ($rsync_dst_file, $rsync_dst_dir) = fileparse ($rsync_dst); - print "rsync_dst_dir = '$rsync_dst_dir'\n"; - -e $rsync_dst_dir or do_command ("mkdir -p '$rsync_dst_dir'"); - do_command ("rsync -amvC --exclude='*.tmp' --exclude='*.txt' --exclude='*.TXT' --exclude='*.td' --exclude='\.dir' --exclude=Makefile '$rsync_src' '$rsync_dst'"); - } - else - { - die "$rsync_src does not exist!\n"; - } - } -} - -if (@ARGV > 4) -{ - my $llvm_source_dir = abs_path(shift @ARGV); # The llvm source that contains full llvm and clang sources - my $llvm_build_dir = abs_path(shift @ARGV); # The llvm build directory that contains headers and - my $lldb_build_dir = abs_path(shift @ARGV); # the build directory that contains the fat libEnhancedDisassembly.dylib - my $llvm_zip_file = abs_path(shift @ARGV); - - printf("LLVM sources : '%s'\n", $llvm_source_dir); - printf("LLVM build : '%s'\n", $llvm_build_dir); - printf("LLDB build : '%s'\n", $lldb_build_dir); - printf("LLVM zip file: '%s'\n", $llvm_zip_file); - - -e $llvm_build_dir or die "LLVM build directory doesn't exist: '$llvm_build_dir': $!\n"; - - my $temp_dir = tempdir( CLEANUP => 1 ); - print "temp dir = '$temp_dir'\n"; - my $llvm_checkpoint_dir = "$temp_dir/llvm"; - mkdir "$llvm_checkpoint_dir" or die "Couldn't make 'llvm' in '$temp_dir'\n"; - - my @generic_rsync_src_dst_paths = - ( - "$llvm_source_dir/include", "$llvm_checkpoint_dir", - "$llvm_source_dir/tools/clang/include", "$llvm_checkpoint_dir/tools/clang", - ); - - do_rsync_paths (@generic_rsync_src_dst_paths); - - for my $arch (@ARGV) - { - my @specific_rsync_src_dst_paths = - ( - "$llvm_build_dir/$arch/include", "$llvm_checkpoint_dir/$arch", - "$llvm_build_dir/$arch/tools/clang/include", "$llvm_checkpoint_dir/$arch/tools/clang", - ); - - do_rsync_paths (@specific_rsync_src_dst_paths); - - do_command ("cp '$llvm_build_dir/$arch/libllvmclang.a' '$llvm_checkpoint_dir/$arch/libllvmclang.a'", "Copying .a file", 1); - - } - - #do_command ("cp '$llvm_build_dir/libllvmclang.a' '$llvm_checkpoint_dir'", "Copying libllvmclang.a", 1); - do_command ("rm -rf '$llvm_zip_file'", "Removing old llvm checkpoint file '$llvm_zip_file'", 1); - do_command ("(cd '$temp_dir' ; zip -r '$llvm_zip_file' 'llvm')", "Zipping llvm checkpoint directory '$llvm_checkpoint_dir' to '$llvm_zip_file'", 1); -} -else -{ - print "USAGE\n\tcheckpoint-llvm.pl [ ...]\n\n"; - print "EXAMPLE\n\tcd lldb\n\t./scripts/checkpoint-llvm.pl llvm build/llvm build/BuildAndIntegration llvm.zip x86_64 i386\n"; -} diff --git a/lldb/scripts/finish-swig-wrapper-classes.sh b/lldb/scripts/finish-swig-wrapper-classes.sh deleted file mode 100755 index 806f2862af69975..000000000000000 --- a/lldb/scripts/finish-swig-wrapper-classes.sh +++ /dev/null @@ -1,101 +0,0 @@ -#! /bin/sh - -# finish-swig-wrapper-classes.sh -# -# For each scripting language liblldb supports, we need to create the -# appropriate Script Bridge wrapper classes for that language so that -# users can call Script Bridge functions from within the script interpreter. -# -# We use SWIG to create a C++ file containing the appropriate wrapper classes -# and funcitons for each scripting language, before liblldb is built (thus -# the C++ file can be compiled into liblldb. In some cases, additional work -# may need to be done after liblldb has been compiled, to make the scripting -# language stuff fully functional. Any such post-processing is handled through -# the shell scripts called here. - -# SRC_ROOT is the root of the lldb source tree. -# TARGET_DIR is where the lldb framework/shared library gets put. -# CONFIG_BUILD_DIR is where the build-swig-Python-LLDB.sh shell script -# put the lldb.py file it generated from running SWIG. -# PREFIX is the root directory used to determine where third-party modules -# for scripting languages should be installed. -# debug_flag (optional) determines whether or not this script outputs -# additional information when running. - -SRC_ROOT=$1 -TARGET_DIR=$2 -CONFIG_BUILD_DIR=$3 -PREFIX=$4 - -shift 4 - -if [ -n "$1" -a "$1" = "-debug" ] -then - debug_flag=$1 - Debug=1 - shift -else - debug_flag="" - Debug=0 -fi - -if [ -n "$1" -a "$1" = "-m" ] -then - makefile_flag="$1" - shift -else - makefile_flag="" -fi - -# -# For each scripting language, see if a post-processing script for that -# language exists, and if so, call it. -# -# For now the only language we support is Python, but we expect this to -# change. - -languages="Python" -cwd=${SRC_ROOT}/scripts - -for curlang in $languages -do - if [ $Debug -eq 1 ] - then - echo "Current language is $curlang" - fi - - if [ ! -d "$cwd/$curlang" ] - then - echo "error: unable to find $curlang script sub-dirctory" >&2 - continue - else - - if [ $Debug -eq 1 ] - then - echo "Found $curlang sub-directory" - fi - - cd $cwd/$curlang - - filename="./finish-swig-${curlang}-LLDB.sh" - - if [ -f $filename ] - then - if [ $Debug -eq 1 ] - then - echo "Found $curlang post-processing script for LLDB" - echo "Executing $curlang post-processing script..." - fi - - - ./finish-swig-${curlang}-LLDB.sh $SRC_ROOT $TARGET_DIR $CONFIG_BUILD_DIR "${PREFIX}" "${debug_flag}" "${makefile_flag}" - retval=$? - if [ $retval -ne 0 ]; then - echo "$(pwd)/finish-swig-${curlang}-LLDB.sh failed with exit code $retval" - exit $retval - fi - fi - fi -done - -exit 0 diff --git a/lldb/scripts/install-lldb.sh b/lldb/scripts/install-lldb.sh deleted file mode 100755 index 0ba4e7c5ee2b0de..000000000000000 --- a/lldb/scripts/install-lldb.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh - - -# This script will install the files from a "Debug" or "Release" build -# directory into the developer folder specified. - -NUM_EXPECTED_ARGS=2 - -PROGRAM=`basename $0` - -if [ $# -ne $NUM_EXPECTED_ARGS ]; then - echo This script will install the files from a 'Debug' or 'Release' build directory into the developer folder specified. - echo "usage: $PROGRAM "; - echo "example: $PROGRAM ./Debug /Developer" - echo "example: $PROGRAM /build/Release /Xcode4" - exit 1; -fi - -BUILD_DIR=$1 -DEVELOPER_DIR=$2 - -if [ -d $BUILD_DIR ]; then - if [ -d $DEVELOPER_DIR ]; then - if [ -e "$BUILD_DIR/debugserver" ]; then - echo Updating "$DEVELOPER_DIR/usr/bin/debugserver" - sudo rm -rf "$DEVELOPER_DIR/usr/bin/debugserver" - sudo cp "$BUILD_DIR/debugserver" "$DEVELOPER_DIR/usr/bin/debugserver" - fi - - if [ -e "$BUILD_DIR/lldb" ]; then - echo Updating "$DEVELOPER_DIR/usr/bin/lldb" - sudo rm -rf "$DEVELOPER_DIR/usr/bin/lldb" - sudo cp "$BUILD_DIR/lldb" "$DEVELOPER_DIR/usr/bin/lldb" - fi - - if [ -e "$BUILD_DIR/libEnhancedDisassembly.dylib" ]; then - echo Updating "$DEVELOPER_DIR/usr/lib/libEnhancedDisassembly.dylib" - sudo rm -rf "$DEVELOPER_DIR/usr/lib/libEnhancedDisassembly.dylib" - sudo cp "$BUILD_DIR/libEnhancedDisassembly.dylib" "$DEVELOPER_DIR/usr/lib/libEnhancedDisassembly.dylib" - fi - - if [ -d "$BUILD_DIR/LLDB.framework" ]; then - echo Updating "$DEVELOPER_DIR/Library/PrivateFrameworks/LLDB.framework" - sudo rm -rf "$DEVELOPER_DIR/Library/PrivateFrameworks/LLDB.framework" - sudo cp -r "$BUILD_DIR/LLDB.framework" "$DEVELOPER_DIR/Library/PrivateFrameworks/LLDB.framework" - elif [ -e "$BUILD_DIR/LLDB.framework" ]; then - echo BUILD_DIR path to LLDB.framework is not a directory: "$BUILD_DIR/LLDB.framework" - exit 2; - fi - - else - echo DEVELOPER_DIR must be a directory: "$DEVELOPER_DIR" - exit 3; - fi - -else - echo BUILD_DIR must be a directory: "$BUILD_DIR" - exit 4; -fi diff --git a/lldb/scripts/interface/SBAddress.i b/lldb/scripts/interface/SBAddress.i index 068a24db4394754..92bc3f828f23f38 100644 --- a/lldb/scripts/interface/SBAddress.i +++ b/lldb/scripts/interface/SBAddress.i @@ -162,37 +162,16 @@ public: '''Convert the address to an hex string''' return '0x%x' % int(self) - __swig_getmethods__["module"] = GetModule - if _newclass: module = property(GetModule, None, doc='''A read only property that returns an lldb object that represents the module (lldb.SBModule) that this address resides within.''') - - __swig_getmethods__["compile_unit"] = GetCompileUnit - if _newclass: compile_unit = property(GetCompileUnit, None, doc='''A read only property that returns an lldb object that represents the compile unit (lldb.SBCompileUnit) that this address resides within.''') - - __swig_getmethods__["line_entry"] = GetLineEntry - if _newclass: line_entry = property(GetLineEntry, None, doc='''A read only property that returns an lldb object that represents the line entry (lldb.SBLineEntry) that this address resides within.''') - - __swig_getmethods__["function"] = GetFunction - if _newclass: function = property(GetFunction, None, doc='''A read only property that returns an lldb object that represents the function (lldb.SBFunction) that this address resides within.''') - - __swig_getmethods__["block"] = GetBlock - if _newclass: block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the block (lldb.SBBlock) that this address resides within.''') - - __swig_getmethods__["symbol"] = GetSymbol - if _newclass: symbol = property(GetSymbol, None, doc='''A read only property that returns an lldb object that represents the symbol (lldb.SBSymbol) that this address resides within.''') - - __swig_getmethods__["offset"] = GetOffset - if _newclass: offset = property(GetOffset, None, doc='''A read only property that returns the section offset in bytes as an integer.''') - - __swig_getmethods__["section"] = GetSection - if _newclass: section = property(GetSection, None, doc='''A read only property that returns an lldb object that represents the section (lldb.SBSection) that this address resides within.''') - - __swig_getmethods__["file_addr"] = GetFileAddress - if _newclass: file_addr = property(GetFileAddress, None, doc='''A read only property that returns file address for the section as an integer. This is the address that represents the address as it is found in the object file that defines it.''') - - __swig_getmethods__["load_addr"] = __get_load_addr_property__ - __swig_setmethods__["load_addr"] = __set_load_addr_property__ - if _newclass: load_addr = property(__get_load_addr_property__, __set_load_addr_property__, doc='''A read/write property that gets/sets the SBAddress using load address. The setter resolves SBAddress using the SBTarget from lldb.target so this property can ONLY be used in the interactive script interpreter (i.e. under the lldb script command) and not in Python based commands, or breakpoint commands.''') - + module = property(GetModule, None, doc='''A read only property that returns an lldb object that represents the module (lldb.SBModule) that this address resides within.''') + compile_unit = property(GetCompileUnit, None, doc='''A read only property that returns an lldb object that represents the compile unit (lldb.SBCompileUnit) that this address resides within.''') + line_entry = property(GetLineEntry, None, doc='''A read only property that returns an lldb object that represents the line entry (lldb.SBLineEntry) that this address resides within.''') + function = property(GetFunction, None, doc='''A read only property that returns an lldb object that represents the function (lldb.SBFunction) that this address resides within.''') + block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the block (lldb.SBBlock) that this address resides within.''') + symbol = property(GetSymbol, None, doc='''A read only property that returns an lldb object that represents the symbol (lldb.SBSymbol) that this address resides within.''') + offset = property(GetOffset, None, doc='''A read only property that returns the section offset in bytes as an integer.''') + section = property(GetSection, None, doc='''A read only property that returns an lldb object that represents the section (lldb.SBSection) that this address resides within.''') + file_addr = property(GetFileAddress, None, doc='''A read only property that returns file address for the section as an integer. This is the address that represents the address as it is found in the object file that defines it.''') + load_addr = property(__get_load_addr_property__, __set_load_addr_property__, doc='''A read/write property that gets/sets the SBAddress using load address. The setter resolves SBAddress using the SBTarget from lldb.target so this property can ONLY be used in the interactive script interpreter (i.e. under the lldb script command) and not in Python based commands, or breakpoint commands.''') %} }; diff --git a/lldb/scripts/interface/SBBlock.i b/lldb/scripts/interface/SBBlock.i index 26f78166a8edba4..6d2cebfa0cc2643 100644 --- a/lldb/scripts/interface/SBBlock.i +++ b/lldb/scripts/interface/SBBlock.i @@ -143,32 +143,15 @@ public: def get_call_site(self): return declaration(self.GetInlinedCallSiteFile(), self.GetInlinedCallSiteLine(), self.GetInlinedCallSiteColumn()) - __swig_getmethods__["parent"] = GetParent - if _newclass: parent = property(GetParent, None, doc='''A read only property that returns the same result as GetParent().''') - - __swig_getmethods__["first_child"] = GetFirstChild - if _newclass: first_child = property(GetFirstChild, None, doc='''A read only property that returns the same result as GetFirstChild().''') - - __swig_getmethods__["call_site"] = get_call_site - if _newclass: call_site = property(get_call_site, None, doc='''A read only property that returns a lldb.declaration object that contains the inlined call site file, line and column.''') - - __swig_getmethods__["sibling"] = GetSibling - if _newclass: sibling = property(GetSibling, None, doc='''A read only property that returns the same result as GetSibling().''') - - __swig_getmethods__["name"] = GetInlinedName - if _newclass: name = property(GetInlinedName, None, doc='''A read only property that returns the same result as GetInlinedName().''') - - __swig_getmethods__["inlined_block"] = GetContainingInlinedBlock - if _newclass: inlined_block = property(GetContainingInlinedBlock, None, doc='''A read only property that returns the same result as GetContainingInlinedBlock().''') - - __swig_getmethods__["range"] = get_ranges_access_object - if _newclass: range = property(get_ranges_access_object, None, doc='''A read only property that allows item access to the address ranges for a block by integer (range = block.range[0]) and by lldb.SBAdddress (find the range that contains the specified lldb.SBAddress like "pc_range = lldb.frame.block.range[frame.addr]").''') - - __swig_getmethods__["ranges"] = get_ranges_array - if _newclass: ranges = property(get_ranges_array, None, doc='''A read only property that returns a list() object that contains all of the address ranges for the block.''') - - __swig_getmethods__["num_ranges"] = GetNumRanges - if _newclass: num_ranges = property(GetNumRanges, None, doc='''A read only property that returns the same result as GetNumRanges().''') + parent = property(GetParent, None, doc='''A read only property that returns the same result as GetParent().''') + first_child = property(GetFirstChild, None, doc='''A read only property that returns the same result as GetFirstChild().''') + call_site = property(get_call_site, None, doc='''A read only property that returns a lldb.declaration object that contains the inlined call site file, line and column.''') + sibling = property(GetSibling, None, doc='''A read only property that returns the same result as GetSibling().''') + name = property(GetInlinedName, None, doc='''A read only property that returns the same result as GetInlinedName().''') + inlined_block = property(GetContainingInlinedBlock, None, doc='''A read only property that returns the same result as GetContainingInlinedBlock().''') + range = property(get_ranges_access_object, None, doc='''A read only property that allows item access to the address ranges for a block by integer (range = block.range[0]) and by lldb.SBAdddress (find the range that contains the specified lldb.SBAddress like "pc_range = lldb.frame.block.range[frame.addr]").''') + ranges = property(get_ranges_array, None, doc='''A read only property that returns a list() object that contains all of the address ranges for the block.''') + num_ranges = property(GetNumRanges, None, doc='''A read only property that returns the same result as GetNumRanges().''') %} }; diff --git a/lldb/scripts/interface/SBBreakpoint.i b/lldb/scripts/interface/SBBreakpoint.i index 1cf639b17a81288..8aabb2b3d280fda 100644 --- a/lldb/scripts/interface/SBBreakpoint.i +++ b/lldb/scripts/interface/SBBreakpoint.i @@ -286,26 +286,12 @@ public: object.''' return self.GetNumLocations() - __swig_getmethods__["locations"] = get_breakpoint_location_list - if _newclass: locations = property(get_breakpoint_location_list, None, doc='''A read only property that returns a list() of lldb.SBBreakpointLocation objects for this breakpoint.''') - - __swig_getmethods__["location"] = get_locations_access_object - if _newclass: location = property(get_locations_access_object, None, doc='''A read only property that returns an object that can access locations by index (not location ID) (location = bkpt.location[12]).''') - - __swig_getmethods__["id"] = GetID - if _newclass: id = property(GetID, None, doc='''A read only property that returns the ID of this breakpoint.''') - - __swig_getmethods__["enabled"] = IsEnabled - __swig_setmethods__["enabled"] = SetEnabled - if _newclass: enabled = property(IsEnabled, SetEnabled, doc='''A read/write property that configures whether this breakpoint is enabled or not.''') - - __swig_getmethods__["one_shot"] = IsOneShot - __swig_setmethods__["one_shot"] = SetOneShot - if _newclass: one_shot = property(IsOneShot, SetOneShot, doc='''A read/write property that configures whether this breakpoint is one-shot (deleted when hit) or not.''') - - __swig_getmethods__["num_locations"] = GetNumLocations - if _newclass: num_locations = property(GetNumLocations, None, doc='''A read only property that returns the count of locations of this breakpoint.''') - + locations = property(get_breakpoint_location_list, None, doc='''A read only property that returns a list() of lldb.SBBreakpointLocation objects for this breakpoint.''') + location = property(get_locations_access_object, None, doc='''A read only property that returns an object that can access locations by index (not location ID) (location = bkpt.location[12]).''') + id = property(GetID, None, doc='''A read only property that returns the ID of this breakpoint.''') + enabled = property(IsEnabled, SetEnabled, doc='''A read/write property that configures whether this breakpoint is enabled or not.''') + one_shot = property(IsOneShot, SetOneShot, doc='''A read/write property that configures whether this breakpoint is one-shot (deleted when hit) or not.''') + num_locations = property(GetNumLocations, None, doc='''A read only property that returns the count of locations of this breakpoint.''') %} diff --git a/lldb/scripts/interface/SBCompileUnit.i b/lldb/scripts/interface/SBCompileUnit.i index 26c10df2c3dc82e..f5f4e5af14b7293 100644 --- a/lldb/scripts/interface/SBCompileUnit.i +++ b/lldb/scripts/interface/SBCompileUnit.i @@ -126,11 +126,8 @@ public: object.''' return self.GetNumLineEntries() - __swig_getmethods__["file"] = GetFileSpec - if _newclass: file = property(GetFileSpec, None, doc='''A read only property that returns the same result an lldb object that represents the source file (lldb.SBFileSpec) for the compile unit.''') - - __swig_getmethods__["num_line_entries"] = GetNumLineEntries - if _newclass: num_line_entries = property(GetNumLineEntries, None, doc='''A read only property that returns the number of line entries in a compile unit as an integer.''') + file = property(GetFileSpec, None, doc='''A read only property that returns the same result an lldb object that represents the source file (lldb.SBFileSpec) for the compile unit.''') + num_line_entries = property(GetNumLineEntries, None, doc='''A read only property that returns the number of line entries in a compile unit as an integer.''') %} }; diff --git a/lldb/scripts/interface/SBData.i b/lldb/scripts/interface/SBData.i index b7cef91d532c046..464a6e69233f4b2 100644 --- a/lldb/scripts/interface/SBData.i +++ b/lldb/scripts/interface/SBData.i @@ -264,76 +264,28 @@ public: def _read_all_double(self): return self._make_helper_double().all() - __swig_getmethods__["uint8"] = _make_helper_uint8 - if _newclass: uint8 = property(_make_helper_uint8, None, doc='''A read only property that returns an array-like object out of which you can read uint8 values.''') - - __swig_getmethods__["uint16"] = _make_helper_uint16 - if _newclass: uint16 = property(_make_helper_uint16, None, doc='''A read only property that returns an array-like object out of which you can read uint16 values.''') - - __swig_getmethods__["uint32"] = _make_helper_uint32 - if _newclass: uint32 = property(_make_helper_uint32, None, doc='''A read only property that returns an array-like object out of which you can read uint32 values.''') - - __swig_getmethods__["uint64"] = _make_helper_uint64 - if _newclass: uint64 = property(_make_helper_uint64, None, doc='''A read only property that returns an array-like object out of which you can read uint64 values.''') - - __swig_getmethods__["sint8"] = _make_helper_sint8 - if _newclass: sint8 = property(_make_helper_sint8, None, doc='''A read only property that returns an array-like object out of which you can read sint8 values.''') - - __swig_getmethods__["sint16"] = _make_helper_sint16 - if _newclass: sint16 = property(_make_helper_sint16, None, doc='''A read only property that returns an array-like object out of which you can read sint16 values.''') - - __swig_getmethods__["sint32"] = _make_helper_sint32 - if _newclass: sint32 = property(_make_helper_sint32, None, doc='''A read only property that returns an array-like object out of which you can read sint32 values.''') - - __swig_getmethods__["sint64"] = _make_helper_sint64 - if _newclass: sint64 = property(_make_helper_sint64, None, doc='''A read only property that returns an array-like object out of which you can read sint64 values.''') - - __swig_getmethods__["float"] = _make_helper_float - if _newclass: float = property(_make_helper_float, None, doc='''A read only property that returns an array-like object out of which you can read float values.''') - - __swig_getmethods__["double"] = _make_helper_double - if _newclass: double = property(_make_helper_double, None, doc='''A read only property that returns an array-like object out of which you can read double values.''') - - __swig_getmethods__["uint8s"] = _read_all_uint8 - if _newclass: uint8s = property(_read_all_uint8, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint8 values.''') - - __swig_getmethods__["uint16s"] = _read_all_uint16 - if _newclass: uint16s = property(_read_all_uint16, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint16 values.''') - - __swig_getmethods__["uint32s"] = _read_all_uint32 - if _newclass: uint32s = property(_read_all_uint32, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint32 values.''') - - __swig_getmethods__["uint64s"] = _read_all_uint64 - if _newclass: uint64s = property(_read_all_uint64, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint64 values.''') - - __swig_getmethods__["sint8s"] = _read_all_sint8 - if _newclass: sint8s = property(_read_all_sint8, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint8 values.''') - - __swig_getmethods__["sint16s"] = _read_all_sint16 - if _newclass: sint16s = property(_read_all_sint16, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint16 values.''') - - __swig_getmethods__["sint32s"] = _read_all_sint32 - if _newclass: sint32s = property(_read_all_sint32, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint32 values.''') - - __swig_getmethods__["sint64s"] = _read_all_sint64 - if _newclass: sint64s = property(_read_all_sint64, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint64 values.''') - - __swig_getmethods__["floats"] = _read_all_float - if _newclass: floats = property(_read_all_float, None, doc='''A read only property that returns an array with all the contents of this SBData represented as float values.''') - - __swig_getmethods__["doubles"] = _read_all_double - if _newclass: doubles = property(_read_all_double, None, doc='''A read only property that returns an array with all the contents of this SBData represented as double values.''') - - %} - - %pythoncode %{ - __swig_getmethods__["byte_order"] = GetByteOrder - __swig_setmethods__["byte_order"] = SetByteOrder - if _newclass: byte_order = property(GetByteOrder, SetByteOrder, doc='''A read/write property getting and setting the endianness of this SBData (data.byte_order = lldb.eByteOrderLittle).''') - - __swig_getmethods__["size"] = GetByteSize - if _newclass: size = property(GetByteSize, None, doc='''A read only property that returns the size the same result as GetByteSize().''') - + uint8 = property(_make_helper_uint8, None, doc='''A read only property that returns an array-like object out of which you can read uint8 values.''') + uint16 = property(_make_helper_uint16, None, doc='''A read only property that returns an array-like object out of which you can read uint16 values.''') + uint32 = property(_make_helper_uint32, None, doc='''A read only property that returns an array-like object out of which you can read uint32 values.''') + uint64 = property(_make_helper_uint64, None, doc='''A read only property that returns an array-like object out of which you can read uint64 values.''') + sint8 = property(_make_helper_sint8, None, doc='''A read only property that returns an array-like object out of which you can read sint8 values.''') + sint16 = property(_make_helper_sint16, None, doc='''A read only property that returns an array-like object out of which you can read sint16 values.''') + sint32 = property(_make_helper_sint32, None, doc='''A read only property that returns an array-like object out of which you can read sint32 values.''') + sint64 = property(_make_helper_sint64, None, doc='''A read only property that returns an array-like object out of which you can read sint64 values.''') + float = property(_make_helper_float, None, doc='''A read only property that returns an array-like object out of which you can read float values.''') + double = property(_make_helper_double, None, doc='''A read only property that returns an array-like object out of which you can read double values.''') + uint8s = property(_read_all_uint8, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint8 values.''') + uint16s = property(_read_all_uint16, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint16 values.''') + uint32s = property(_read_all_uint32, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint32 values.''') + uint64s = property(_read_all_uint64, None, doc='''A read only property that returns an array with all the contents of this SBData represented as uint64 values.''') + sint8s = property(_read_all_sint8, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint8 values.''') + sint16s = property(_read_all_sint16, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint16 values.''') + sint32s = property(_read_all_sint32, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint32 values.''') + sint64s = property(_read_all_sint64, None, doc='''A read only property that returns an array with all the contents of this SBData represented as sint64 values.''') + floats = property(_read_all_float, None, doc='''A read only property that returns an array with all the contents of this SBData represented as float values.''') + doubles = property(_read_all_double, None, doc='''A read only property that returns an array with all the contents of this SBData represented as double values.''') + byte_order = property(GetByteOrder, SetByteOrder, doc='''A read/write property getting and setting the endianness of this SBData (data.byte_order = lldb.eByteOrderLittle).''') + size = property(GetByteSize, None, doc='''A read only property that returns the size the same result as GetByteSize().''') %} }; diff --git a/lldb/scripts/interface/SBDeclaration.i b/lldb/scripts/interface/SBDeclaration.i index 1fa801425ef8153..96407d7c60f6465 100644 --- a/lldb/scripts/interface/SBDeclaration.i +++ b/lldb/scripts/interface/SBDeclaration.i @@ -54,16 +54,10 @@ namespace lldb { operator != (const lldb::SBDeclaration &rhs) const; %pythoncode %{ - __swig_getmethods__["file"] = GetFileSpec - if _newclass: file = property(GetFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this line entry.''') - - __swig_getmethods__["line"] = GetLine - if _newclass: line = property(GetLine, None, doc='''A read only property that returns the 1 based line number for this line entry, a return value of zero indicates that no line information is available.''') - - __swig_getmethods__["column"] = GetColumn - if _newclass: column = property(GetColumn, None, doc='''A read only property that returns the 1 based column number for this line entry, a return value of zero indicates that no column information is available.''') - %} - + file = property(GetFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this line entry.''') + line = property(GetLine, None, doc='''A read only property that returns the 1 based line number for this line entry, a return value of zero indicates that no line information is available.''') + column = property(GetColumn, None, doc='''A read only property that returns the 1 based column number for this line entry, a return value of zero indicates that no column information is available.''') + %} }; } // namespace lldb diff --git a/lldb/scripts/interface/SBError.i b/lldb/scripts/interface/SBError.i index d1b3dabb247df4a..42308ff8bb83885 100644 --- a/lldb/scripts/interface/SBError.i +++ b/lldb/scripts/interface/SBError.i @@ -106,21 +106,11 @@ public: GetDescription (lldb::SBStream &description); %pythoncode %{ - __swig_getmethods__["value"] = GetError - if _newclass: value = property(GetError, None, doc='''A read only property that returns the same result as GetError().''') - - __swig_getmethods__["fail"] = Fail - if _newclass: fail = property(Fail, None, doc='''A read only property that returns the same result as Fail().''') - - __swig_getmethods__["success"] = Success - if _newclass: success = property(Success, None, doc='''A read only property that returns the same result as Success().''') - - __swig_getmethods__["description"] = GetCString - if _newclass: description = property(GetCString, None, doc='''A read only property that returns the same result as GetCString().''') - - __swig_getmethods__["type"] = GetType - if _newclass: type = property(GetType, None, doc='''A read only property that returns the same result as GetType().''') - + value = property(GetError, None, doc='''A read only property that returns the same result as GetError().''') + fail = property(Fail, None, doc='''A read only property that returns the same result as Fail().''') + success = property(Success, None, doc='''A read only property that returns the same result as Success().''') + description = property(GetCString, None, doc='''A read only property that returns the same result as GetCString().''') + type = property(GetType, None, doc='''A read only property that returns the same result as GetType().''') %} }; diff --git a/lldb/scripts/interface/SBExecutionContext.i b/lldb/scripts/interface/SBExecutionContext.i index 8ffa1f8a354a985..9e8d22b37288e18 100644 --- a/lldb/scripts/interface/SBExecutionContext.i +++ b/lldb/scripts/interface/SBExecutionContext.i @@ -38,17 +38,10 @@ public: GetFrame () const; %pythoncode %{ - __swig_getmethods__["target"] = GetTarget - if _newclass: target = property(GetTarget, None, doc='''A read only property that returns the same result as GetTarget().''') - - __swig_getmethods__["process"] = GetProcess - if _newclass: process = property(GetProcess, None, doc='''A read only property that returns the same result as GetProcess().''') - - __swig_getmethods__["thread"] = GetThread - if _newclass: thread = property(GetThread, None, doc='''A read only property that returns the same result as GetThread().''') - - __swig_getmethods__["frame"] = GetFrame - if _newclass: frame = property(GetFrame, None, doc='''A read only property that returns the same result as GetFrame().''') + target = property(GetTarget, None, doc='''A read only property that returns the same result as GetTarget().''') + process = property(GetProcess, None, doc='''A read only property that returns the same result as GetProcess().''') + thread = property(GetThread, None, doc='''A read only property that returns the same result as GetThread().''') + frame = property(GetFrame, None, doc='''A read only property that returns the same result as GetFrame().''') %} }; diff --git a/lldb/scripts/interface/SBFileSpec.i b/lldb/scripts/interface/SBFileSpec.i index d5cdb7d3c4ae46d..98777c0e1e47945 100644 --- a/lldb/scripts/interface/SBFileSpec.i +++ b/lldb/scripts/interface/SBFileSpec.i @@ -92,17 +92,10 @@ public: return spec_file return None - __swig_getmethods__["fullpath"] = __get_fullpath__ - if _newclass: fullpath = property(__get_fullpath__, None, doc='''A read only property that returns the fullpath as a python string.''') - - __swig_getmethods__["basename"] = GetFilename - if _newclass: basename = property(GetFilename, None, doc='''A read only property that returns the path basename as a python string.''') - - __swig_getmethods__["dirname"] = GetDirectory - if _newclass: dirname = property(GetDirectory, None, doc='''A read only property that returns the path directory name as a python string.''') - - __swig_getmethods__["exists"] = Exists - if _newclass: exists = property(Exists, None, doc='''A read only property that returns a boolean value that indicates if the file exists.''') + fullpath = property(__get_fullpath__, None, doc='''A read only property that returns the fullpath as a python string.''') + basename = property(GetFilename, None, doc='''A read only property that returns the path basename as a python string.''') + dirname = property(GetDirectory, None, doc='''A read only property that returns the path directory name as a python string.''') + exists = property(Exists, None, doc='''A read only property that returns a boolean value that indicates if the file exists.''') %} }; diff --git a/lldb/scripts/interface/SBFrame.i b/lldb/scripts/interface/SBFrame.i index b8f383e06fc5e6c..f36d83c32e18123 100644 --- a/lldb/scripts/interface/SBFrame.i +++ b/lldb/scripts/interface/SBFrame.i @@ -328,85 +328,32 @@ public: return registers_access(self.registers) - __swig_getmethods__["pc"] = GetPC - __swig_setmethods__["pc"] = SetPC - if _newclass: pc = property(GetPC, SetPC) - - __swig_getmethods__["addr"] = GetPCAddress - if _newclass: addr = property(GetPCAddress, None, doc='''A read only property that returns the program counter (PC) as a section offset address (lldb.SBAddress).''') - - __swig_getmethods__["fp"] = GetFP - if _newclass: fp = property(GetFP, None, doc='''A read only property that returns the frame pointer (FP) as an unsigned integer.''') - - __swig_getmethods__["sp"] = GetSP - if _newclass: sp = property(GetSP, None, doc='''A read only property that returns the stack pointer (SP) as an unsigned integer.''') - - __swig_getmethods__["module"] = GetModule - if _newclass: module = property(GetModule, None, doc='''A read only property that returns an lldb object that represents the module (lldb.SBModule) for this stack frame.''') - - __swig_getmethods__["compile_unit"] = GetCompileUnit - if _newclass: compile_unit = property(GetCompileUnit, None, doc='''A read only property that returns an lldb object that represents the compile unit (lldb.SBCompileUnit) for this stack frame.''') - - __swig_getmethods__["function"] = GetFunction - if _newclass: function = property(GetFunction, None, doc='''A read only property that returns an lldb object that represents the function (lldb.SBFunction) for this stack frame.''') - - __swig_getmethods__["symbol"] = GetSymbol - if _newclass: symbol = property(GetSymbol, None, doc='''A read only property that returns an lldb object that represents the symbol (lldb.SBSymbol) for this stack frame.''') - - __swig_getmethods__["block"] = GetBlock - if _newclass: block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the block (lldb.SBBlock) for this stack frame.''') - - __swig_getmethods__["is_inlined"] = IsInlined - if _newclass: is_inlined = property(IsInlined, None, doc='''A read only property that returns an boolean that indicates if the block frame is an inlined function.''') - - __swig_getmethods__["name"] = GetFunctionName - if _newclass: name = property(GetFunctionName, None, doc='''A read only property that retuns the name for the function that this frame represents. Inlined stack frame might have a concrete function that differs from the name of the inlined function (a named lldb.SBBlock).''') - - __swig_getmethods__["line_entry"] = GetLineEntry - if _newclass: line_entry = property(GetLineEntry, None, doc='''A read only property that returns an lldb object that represents the line table entry (lldb.SBLineEntry) for this stack frame.''') - - __swig_getmethods__["thread"] = GetThread - if _newclass: thread = property(GetThread, None, doc='''A read only property that returns an lldb object that represents the thread (lldb.SBThread) for this stack frame.''') - - __swig_getmethods__["disassembly"] = Disassemble - if _newclass: disassembly = property(Disassemble, None, doc='''A read only property that returns the disassembly for this stack frame as a python string.''') - - __swig_getmethods__["idx"] = GetFrameID - if _newclass: idx = property(GetFrameID, None, doc='''A read only property that returns the zero based stack frame index.''') - - __swig_getmethods__["variables"] = get_all_variables - if _newclass: variables = property(get_all_variables, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the variables in this stack frame.''') - - __swig_getmethods__["vars"] = get_all_variables - if _newclass: vars = property(get_all_variables, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the variables in this stack frame.''') - - __swig_getmethods__["locals"] = get_locals - if _newclass: locals = property(get_locals, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the local variables in this stack frame.''') - - __swig_getmethods__["args"] = get_arguments - if _newclass: args = property(get_arguments, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the argument variables in this stack frame.''') - - __swig_getmethods__["arguments"] = get_arguments - if _newclass: arguments = property(get_arguments, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the argument variables in this stack frame.''') - - __swig_getmethods__["statics"] = get_statics - if _newclass: statics = property(get_statics, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the static variables in this stack frame.''') - - __swig_getmethods__["registers"] = GetRegisters - if _newclass: registers = property(GetRegisters, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the CPU registers for this stack frame.''') - - __swig_getmethods__["regs"] = GetRegisters - if _newclass: regs = property(GetRegisters, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the CPU registers for this stack frame.''') - - __swig_getmethods__["register"] = get_registers_access - if _newclass: register = property(get_registers_access, None, doc='''A read only property that returns an helper object providing a flattened indexable view of the CPU registers for this stack frame.''') - - __swig_getmethods__["reg"] = get_registers_access - if _newclass: reg = property(get_registers_access, None, doc='''A read only property that returns an helper object providing a flattened indexable view of the CPU registers for this stack frame''') - - __swig_getmethods__["parent"] = get_parent_frame - if _newclass: parent = property(get_parent_frame, None, doc='''A read only property that returns the parent (caller) frame of the current frame.''') - + pc = property(GetPC, SetPC) + addr = property(GetPCAddress, None, doc='''A read only property that returns the program counter (PC) as a section offset address (lldb.SBAddress).''') + fp = property(GetFP, None, doc='''A read only property that returns the frame pointer (FP) as an unsigned integer.''') + sp = property(GetSP, None, doc='''A read only property that returns the stack pointer (SP) as an unsigned integer.''') + module = property(GetModule, None, doc='''A read only property that returns an lldb object that represents the module (lldb.SBModule) for this stack frame.''') + compile_unit = property(GetCompileUnit, None, doc='''A read only property that returns an lldb object that represents the compile unit (lldb.SBCompileUnit) for this stack frame.''') + function = property(GetFunction, None, doc='''A read only property that returns an lldb object that represents the function (lldb.SBFunction) for this stack frame.''') + symbol = property(GetSymbol, None, doc='''A read only property that returns an lldb object that represents the symbol (lldb.SBSymbol) for this stack frame.''') + block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the block (lldb.SBBlock) for this stack frame.''') + is_inlined = property(IsInlined, None, doc='''A read only property that returns an boolean that indicates if the block frame is an inlined function.''') + name = property(GetFunctionName, None, doc='''A read only property that retuns the name for the function that this frame represents. Inlined stack frame might have a concrete function that differs from the name of the inlined function (a named lldb.SBBlock).''') + line_entry = property(GetLineEntry, None, doc='''A read only property that returns an lldb object that represents the line table entry (lldb.SBLineEntry) for this stack frame.''') + thread = property(GetThread, None, doc='''A read only property that returns an lldb object that represents the thread (lldb.SBThread) for this stack frame.''') + disassembly = property(Disassemble, None, doc='''A read only property that returns the disassembly for this stack frame as a python string.''') + idx = property(GetFrameID, None, doc='''A read only property that returns the zero based stack frame index.''') + variables = property(get_all_variables, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the variables in this stack frame.''') + vars = property(get_all_variables, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the variables in this stack frame.''') + locals = property(get_locals, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the local variables in this stack frame.''') + args = property(get_arguments, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the argument variables in this stack frame.''') + arguments = property(get_arguments, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the argument variables in this stack frame.''') + statics = property(get_statics, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the static variables in this stack frame.''') + registers = property(GetRegisters, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the CPU registers for this stack frame.''') + regs = property(GetRegisters, None, doc='''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the CPU registers for this stack frame.''') + register = property(get_registers_access, None, doc='''A read only property that returns an helper object providing a flattened indexable view of the CPU registers for this stack frame.''') + reg = property(get_registers_access, None, doc='''A read only property that returns an helper object providing a flattened indexable view of the CPU registers for this stack frame''') + parent = property(get_parent_frame, None, doc='''A read only property that returns the parent (caller) frame of the current frame.''') %} }; diff --git a/lldb/scripts/interface/SBFunction.i b/lldb/scripts/interface/SBFunction.i index e3e6907e23f61aa..3acb0057cc3c48a 100644 --- a/lldb/scripts/interface/SBFunction.i +++ b/lldb/scripts/interface/SBFunction.i @@ -115,29 +115,14 @@ public: def get_instructions_from_current_target (self): return self.GetInstructions (target) - __swig_getmethods__["addr"] = GetStartAddress - if _newclass: addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this function.''') - - __swig_getmethods__["end_addr"] = GetEndAddress - if _newclass: end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this function.''') - - __swig_getmethods__["block"] = GetBlock - if _newclass: block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the top level lexical block (lldb.SBBlock) for this function.''') - - __swig_getmethods__["instructions"] = get_instructions_from_current_target - if _newclass: instructions = property(get_instructions_from_current_target, None, doc='''A read only property that returns an lldb object that represents the instructions (lldb.SBInstructionList) for this function.''') - - __swig_getmethods__["mangled"] = GetMangledName - if _newclass: mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this function as a string.''') - - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this function as a string.''') - - __swig_getmethods__["prologue_size"] = GetPrologueByteSize - if _newclass: prologue_size = property(GetPrologueByteSize, None, doc='''A read only property that returns the size in bytes of the prologue instructions as an unsigned integer.''') - - __swig_getmethods__["type"] = GetType - if _newclass: type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the return type (lldb.SBType) for this function.''') + addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this function.''') + end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this function.''') + block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the top level lexical block (lldb.SBBlock) for this function.''') + instructions = property(get_instructions_from_current_target, None, doc='''A read only property that returns an lldb object that represents the instructions (lldb.SBInstructionList) for this function.''') + mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this function as a string.''') + name = property(GetName, None, doc='''A read only property that returns the name for this function as a string.''') + prologue_size = property(GetPrologueByteSize, None, doc='''A read only property that returns the size in bytes of the prologue instructions as an unsigned integer.''') + type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the return type (lldb.SBType) for this function.''') %} }; diff --git a/lldb/scripts/interface/SBInstruction.i b/lldb/scripts/interface/SBInstruction.i index 9356656a889fd7b..82b31fd98690451 100644 --- a/lldb/scripts/interface/SBInstruction.i +++ b/lldb/scripts/interface/SBInstruction.i @@ -83,23 +83,12 @@ public: def __load_adrr_property__ (self): return self.GetComment (target) - __swig_getmethods__["mnemonic"] = __mnemonic_property__ - if _newclass: mnemonic = property(__mnemonic_property__, None, doc='''A read only property that returns the mnemonic for this instruction as a string.''') - - __swig_getmethods__["operands"] = __operands_property__ - if _newclass: operands = property(__operands_property__, None, doc='''A read only property that returns the operands for this instruction as a string.''') - - __swig_getmethods__["comment"] = __comment_property__ - if _newclass: comment = property(__comment_property__, None, doc='''A read only property that returns the comment for this instruction as a string.''') - - __swig_getmethods__["addr"] = GetAddress - if _newclass: addr = property(GetAddress, None, doc='''A read only property that returns an lldb object that represents the address (lldb.SBAddress) for this instruction.''') - - __swig_getmethods__["size"] = GetByteSize - if _newclass: size = property(GetByteSize, None, doc='''A read only property that returns the size in bytes for this instruction as an integer.''') - - __swig_getmethods__["is_branch"] = DoesBranch - if _newclass: is_branch = property(DoesBranch, None, doc='''A read only property that returns a boolean value that indicates if this instruction is a branch instruction.''') + mnemonic = property(__mnemonic_property__, None, doc='''A read only property that returns the mnemonic for this instruction as a string.''') + operands = property(__operands_property__, None, doc='''A read only property that returns the operands for this instruction as a string.''') + comment = property(__comment_property__, None, doc='''A read only property that returns the comment for this instruction as a string.''') + addr = property(GetAddress, None, doc='''A read only property that returns an lldb object that represents the address (lldb.SBAddress) for this instruction.''') + size = property(GetByteSize, None, doc='''A read only property that returns the size in bytes for this instruction as an integer.''') + is_branch = property(DoesBranch, None, doc='''A read only property that returns a boolean value that indicates if this instruction is a branch instruction.''') %} diff --git a/lldb/scripts/interface/SBLineEntry.i b/lldb/scripts/interface/SBLineEntry.i index d462ae1e37889fe..4dac71f04a7a4a6 100644 --- a/lldb/scripts/interface/SBLineEntry.i +++ b/lldb/scripts/interface/SBLineEntry.i @@ -85,23 +85,12 @@ public: operator != (const lldb::SBLineEntry &rhs) const; %pythoncode %{ - __swig_getmethods__["file"] = GetFileSpec - if _newclass: file = property(GetFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this line entry.''') - - __swig_getmethods__["line"] = GetLine - if _newclass: line = property(GetLine, None, doc='''A read only property that returns the 1 based line number for this line entry, a return value of zero indicates that no line information is available.''') - - __swig_getmethods__["column"] = GetColumn - if _newclass: column = property(GetColumn, None, doc='''A read only property that returns the 1 based column number for this line entry, a return value of zero indicates that no column information is available.''') - - __swig_getmethods__["addr"] = GetStartAddress - if _newclass: addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this line entry.''') - - __swig_getmethods__["end_addr"] = GetEndAddress - if _newclass: end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this line entry.''') - + file = property(GetFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this line entry.''') + line = property(GetLine, None, doc='''A read only property that returns the 1 based line number for this line entry, a return value of zero indicates that no line information is available.''') + column = property(GetColumn, None, doc='''A read only property that returns the 1 based column number for this line entry, a return value of zero indicates that no column information is available.''') + addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this line entry.''') + end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this line entry.''') %} - }; } // namespace lldb diff --git a/lldb/scripts/interface/SBModule.i b/lldb/scripts/interface/SBModule.i index df99bb1b1722082..ba8f5fba2a31c0f 100644 --- a/lldb/scripts/interface/SBModule.i +++ b/lldb/scripts/interface/SBModule.i @@ -528,50 +528,24 @@ public: self.compile_units_array.append(self.GetCompileUnitAtIndex(idx)) return self.compile_units_array - __swig_getmethods__["symbols"] = get_symbols_array - if _newclass: symbols = property(get_symbols_array, None, doc='''A read only property that returns a list() of lldb.SBSymbol objects contained in this module.''') - - __swig_getmethods__["symbol"] = get_symbols_access_object - if _newclass: symbol = property(get_symbols_access_object, None, doc='''A read only property that can be used to access symbols by index ("symbol = module.symbol[0]"), name ("symbols = module.symbol['main']"), or using a regular expression ("symbols = module.symbol[re.compile(...)]"). The return value is a single lldb.SBSymbol object for array access, and a list() of lldb.SBSymbol objects for name and regular expression access''') - - __swig_getmethods__["sections"] = get_sections_array - if _newclass: sections = property(get_sections_array, None, doc='''A read only property that returns a list() of lldb.SBSection objects contained in this module.''') - - __swig_getmethods__["compile_units"] = get_compile_units_array - if _newclass: compile_units = property(get_compile_units_array, None, doc='''A read only property that returns a list() of lldb.SBCompileUnit objects contained in this module.''') - - __swig_getmethods__["section"] = get_sections_access_object - if _newclass: section = property(get_sections_access_object, None, doc='''A read only property that can be used to access symbols by index ("section = module.section[0]"), name ("sections = module.section[\'main\']"), or using a regular expression ("sections = module.section[re.compile(...)]"). The return value is a single lldb.SBSection object for array access, and a list() of lldb.SBSection objects for name and regular expression access''') - - __swig_getmethods__["compile_unit"] = get_compile_units_access_object - if _newclass: section = property(get_sections_access_object, None, doc='''A read only property that can be used to access compile units by index ("compile_unit = module.compile_unit[0]"), name ("compile_unit = module.compile_unit[\'main.cpp\']"), or using a regular expression ("compile_unit = module.compile_unit[re.compile(...)]"). The return value is a single lldb.SBCompileUnit object for array access or by full or partial path, and a list() of lldb.SBCompileUnit objects regular expressions.''') + symbols = property(get_symbols_array, None, doc='''A read only property that returns a list() of lldb.SBSymbol objects contained in this module.''') + symbol = property(get_symbols_access_object, None, doc='''A read only property that can be used to access symbols by index ("symbol = module.symbol[0]"), name ("symbols = module.symbol['main']"), or using a regular expression ("symbols = module.symbol[re.compile(...)]"). The return value is a single lldb.SBSymbol object for array access, and a list() of lldb.SBSymbol objects for name and regular expression access''') + sections = property(get_sections_array, None, doc='''A read only property that returns a list() of lldb.SBSection objects contained in this module.''') + compile_units = property(get_compile_units_array, None, doc='''A read only property that returns a list() of lldb.SBCompileUnit objects contained in this module.''') + section = property(get_sections_access_object, None, doc='''A read only property that can be used to access symbols by index ("section = module.section[0]"), name ("sections = module.section[\'main\']"), or using a regular expression ("sections = module.section[re.compile(...)]"). The return value is a single lldb.SBSection object for array access, and a list() of lldb.SBSection objects for name and regular expression access''') + section = property(get_sections_access_object, None, doc='''A read only property that can be used to access compile units by index ("compile_unit = module.compile_unit[0]"), name ("compile_unit = module.compile_unit[\'main.cpp\']"), or using a regular expression ("compile_unit = module.compile_unit[re.compile(...)]"). The return value is a single lldb.SBCompileUnit object for array access or by full or partial path, and a list() of lldb.SBCompileUnit objects regular expressions.''') def get_uuid(self): return uuid.UUID (self.GetUUIDString()) - __swig_getmethods__["uuid"] = get_uuid - if _newclass: uuid = property(get_uuid, None, doc='''A read only property that returns a standard python uuid.UUID object that represents the UUID of this module.''') - - __swig_getmethods__["file"] = GetFileSpec - if _newclass: file = property(GetFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this object file for this module as it is represented where it is being debugged.''') - - __swig_getmethods__["platform_file"] = GetPlatformFileSpec - if _newclass: platform_file = property(GetPlatformFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this object file for this module as it is represented on the current host system.''') - - __swig_getmethods__["byte_order"] = GetByteOrder - if _newclass: byte_order = property(GetByteOrder, None, doc='''A read only property that returns an lldb enumeration value (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that represents the byte order for this module.''') - - __swig_getmethods__["addr_size"] = GetAddressByteSize - if _newclass: addr_size = property(GetAddressByteSize, None, doc='''A read only property that returns the size in bytes of an address for this module.''') - - __swig_getmethods__["triple"] = GetTriple - if _newclass: triple = property(GetTriple, None, doc='''A read only property that returns the target triple (arch-vendor-os) for this module.''') - - __swig_getmethods__["num_symbols"] = GetNumSymbols - if _newclass: num_symbols = property(GetNumSymbols, None, doc='''A read only property that returns number of symbols in the module symbol table as an integer.''') - - __swig_getmethods__["num_sections"] = GetNumSections - if _newclass: num_sections = property(GetNumSections, None, doc='''A read only property that returns number of sections in the module as an integer.''') + uuid = property(get_uuid, None, doc='''A read only property that returns a standard python uuid.UUID object that represents the UUID of this module.''') + file = property(GetFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this object file for this module as it is represented where it is being debugged.''') + platform_file = property(GetPlatformFileSpec, None, doc='''A read only property that returns an lldb object that represents the file (lldb.SBFileSpec) for this object file for this module as it is represented on the current host system.''') + byte_order = property(GetByteOrder, None, doc='''A read only property that returns an lldb enumeration value (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that represents the byte order for this module.''') + addr_size = property(GetAddressByteSize, None, doc='''A read only property that returns the size in bytes of an address for this module.''') + triple = property(GetTriple, None, doc='''A read only property that returns the target triple (arch-vendor-os) for this module.''') + num_symbols = property(GetNumSymbols, None, doc='''A read only property that returns number of symbols in the module symbol table as an integer.''') + num_sections = property(GetNumSections, None, doc='''A read only property that returns number of sections in the module as an integer.''') %} diff --git a/lldb/scripts/interface/SBProcess.i b/lldb/scripts/interface/SBProcess.i index 38e99f34afbbb94..cbe67ad3b7d9019 100644 --- a/lldb/scripts/interface/SBProcess.i +++ b/lldb/scripts/interface/SBProcess.i @@ -478,45 +478,19 @@ public: return self.GetNumThreads() - __swig_getmethods__["threads"] = get_process_thread_list - if _newclass: threads = property(get_process_thread_list, None, doc='''A read only property that returns a list() of lldb.SBThread objects for this process.''') - - __swig_getmethods__["thread"] = get_threads_access_object - if _newclass: thread = property(get_threads_access_object, None, doc='''A read only property that returns an object that can access threads by thread index (thread = lldb.process.thread[12]).''') - - __swig_getmethods__["is_alive"] = __get_is_alive__ - if _newclass: is_alive = property(__get_is_alive__, None, doc='''A read only property that returns a boolean value that indicates if this process is currently alive.''') - - __swig_getmethods__["is_running"] = __get_is_running__ - if _newclass: is_running = property(__get_is_running__, None, doc='''A read only property that returns a boolean value that indicates if this process is currently running.''') - - __swig_getmethods__["is_stopped"] = __get_is_stopped__ - if _newclass: is_stopped = property(__get_is_stopped__, None, doc='''A read only property that returns a boolean value that indicates if this process is currently stopped.''') - - __swig_getmethods__["id"] = GetProcessID - if _newclass: id = property(GetProcessID, None, doc='''A read only property that returns the process ID as an integer.''') - - __swig_getmethods__["target"] = GetTarget - if _newclass: target = property(GetTarget, None, doc='''A read only property that an lldb object that represents the target (lldb.SBTarget) that owns this process.''') - - __swig_getmethods__["num_threads"] = GetNumThreads - if _newclass: num_threads = property(GetNumThreads, None, doc='''A read only property that returns the number of threads in this process as an integer.''') - - __swig_getmethods__["selected_thread"] = GetSelectedThread - __swig_setmethods__["selected_thread"] = SetSelectedThread - if _newclass: selected_thread = property(GetSelectedThread, SetSelectedThread, doc='''A read/write property that gets/sets the currently selected thread in this process. The getter returns a lldb.SBThread object and the setter takes an lldb.SBThread object.''') - - __swig_getmethods__["state"] = GetState - if _newclass: state = property(GetState, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eState") that represents the current state of this process (running, stopped, exited, etc.).''') - - __swig_getmethods__["exit_state"] = GetExitStatus - if _newclass: exit_state = property(GetExitStatus, None, doc='''A read only property that returns an exit status as an integer of this process when the process state is lldb.eStateExited.''') - - __swig_getmethods__["exit_description"] = GetExitDescription - if _newclass: exit_description = property(GetExitDescription, None, doc='''A read only property that returns an exit description as a string of this process when the process state is lldb.eStateExited.''') - - __swig_getmethods__["broadcaster"] = GetBroadcaster - if _newclass: broadcaster = property(GetBroadcaster, None, doc='''A read only property that an lldb object that represents the broadcaster (lldb.SBBroadcaster) for this process.''') + threads = property(get_process_thread_list, None, doc='''A read only property that returns a list() of lldb.SBThread objects for this process.''') + thread = property(get_threads_access_object, None, doc='''A read only property that returns an object that can access threads by thread index (thread = lldb.process.thread[12]).''') + is_alive = property(__get_is_alive__, None, doc='''A read only property that returns a boolean value that indicates if this process is currently alive.''') + is_running = property(__get_is_running__, None, doc='''A read only property that returns a boolean value that indicates if this process is currently running.''') + is_stopped = property(__get_is_stopped__, None, doc='''A read only property that returns a boolean value that indicates if this process is currently stopped.''') + id = property(GetProcessID, None, doc='''A read only property that returns the process ID as an integer.''') + target = property(GetTarget, None, doc='''A read only property that an lldb object that represents the target (lldb.SBTarget) that owns this process.''') + num_threads = property(GetNumThreads, None, doc='''A read only property that returns the number of threads in this process as an integer.''') + selected_thread = property(GetSelectedThread, SetSelectedThread, doc='''A read/write property that gets/sets the currently selected thread in this process. The getter returns a lldb.SBThread object and the setter takes an lldb.SBThread object.''') + state = property(GetState, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eState") that represents the current state of this process (running, stopped, exited, etc.).''') + exit_state = property(GetExitStatus, None, doc='''A read only property that returns an exit status as an integer of this process when the process state is lldb.eStateExited.''') + exit_description = property(GetExitDescription, None, doc='''A read only property that returns an exit description as a string of this process when the process state is lldb.eStateExited.''') + broadcaster = property(GetBroadcaster, None, doc='''A read only property that an lldb object that represents the broadcaster (lldb.SBBroadcaster) for this process.''') %} }; diff --git a/lldb/scripts/interface/SBSection.i b/lldb/scripts/interface/SBSection.i index 4f57d7f434eef11..7bd6c592e6d8d5a 100644 --- a/lldb/scripts/interface/SBSection.i +++ b/lldb/scripts/interface/SBSection.i @@ -126,33 +126,15 @@ public: def get_addr(self): return SBAddress(self, 0) - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name of this section as a string.''') - - __swig_getmethods__["addr"] = get_addr - if _newclass: addr = property(get_addr, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this section.''') - - __swig_getmethods__["file_addr"] = GetFileAddress - if _newclass: file_addr = property(GetFileAddress, None, doc='''A read only property that returns an integer that represents the starting "file" address for this section, or the address of the section in the object file in which it is defined.''') - - __swig_getmethods__["size"] = GetByteSize - if _newclass: size = property(GetByteSize, None, doc='''A read only property that returns the size in bytes of this section as an integer.''') - - __swig_getmethods__["file_offset"] = GetFileOffset - if _newclass: file_offset = property(GetFileOffset, None, doc='''A read only property that returns the file offset in bytes of this section as an integer.''') - - __swig_getmethods__["file_size"] = GetFileByteSize - if _newclass: file_size = property(GetFileByteSize, None, doc='''A read only property that returns the file size in bytes of this section as an integer.''') - - __swig_getmethods__["data"] = GetSectionData - if _newclass: data = property(GetSectionData, None, doc='''A read only property that returns an lldb object that represents the bytes for this section (lldb.SBData) for this section.''') - - __swig_getmethods__["type"] = GetSectionType - if _newclass: type = property(GetSectionType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eSectionType") that represents the type of this section (code, data, etc.).''') - - __swig_getmethods__["target_byte_size"] = GetTargetByteSize - if _newclass: target_byte_size = property(GetTargetByteSize, None, doc='''A read only property that returns the size of a target byte represented by this section as a number of host bytes.''') - + name = property(GetName, None, doc='''A read only property that returns the name of this section as a string.''') + addr = property(get_addr, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this section.''') + file_addr = property(GetFileAddress, None, doc='''A read only property that returns an integer that represents the starting "file" address for this section, or the address of the section in the object file in which it is defined.''') + size = property(GetByteSize, None, doc='''A read only property that returns the size in bytes of this section as an integer.''') + file_offset = property(GetFileOffset, None, doc='''A read only property that returns the file offset in bytes of this section as an integer.''') + file_size = property(GetFileByteSize, None, doc='''A read only property that returns the file size in bytes of this section as an integer.''') + data = property(GetSectionData, None, doc='''A read only property that returns an lldb object that represents the bytes for this section (lldb.SBData) for this section.''') + type = property(GetSectionType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eSectionType") that represents the type of this section (code, data, etc.).''') + target_byte_size = property(GetTargetByteSize, None, doc='''A read only property that returns the size of a target byte represented by this section as a number of host bytes.''') %} private: diff --git a/lldb/scripts/interface/SBSymbol.i b/lldb/scripts/interface/SBSymbol.i index 7e9d01a35afcebd..7391b9ab6b5d577 100644 --- a/lldb/scripts/interface/SBSymbol.i +++ b/lldb/scripts/interface/SBSymbol.i @@ -76,34 +76,15 @@ public: def get_instructions_from_current_target (self): return self.GetInstructions (target) - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this symbol as a string.''') - - __swig_getmethods__["mangled"] = GetMangledName - if _newclass: mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this symbol as a string.''') - - __swig_getmethods__["type"] = GetType - if _newclass: type = property(GetType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eSymbolType") that represents the type of this symbol.''') - - __swig_getmethods__["addr"] = GetStartAddress - if _newclass: addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this symbol.''') - - __swig_getmethods__["end_addr"] = GetEndAddress - if _newclass: end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this symbol.''') - - __swig_getmethods__["prologue_size"] = GetPrologueByteSize - if _newclass: prologue_size = property(GetPrologueByteSize, None, doc='''A read only property that returns the size in bytes of the prologue instructions as an unsigned integer.''') - - __swig_getmethods__["instructions"] = get_instructions_from_current_target - if _newclass: instructions = property(get_instructions_from_current_target, None, doc='''A read only property that returns an lldb object that represents the instructions (lldb.SBInstructionList) for this symbol.''') - - __swig_getmethods__["external"] = IsExternal - if _newclass: external = property(IsExternal, None, doc='''A read only property that returns a boolean value that indicates if this symbol is externally visiable (exported) from the module that contains it.''') - - __swig_getmethods__["synthetic"] = IsSynthetic - if _newclass: synthetic = property(IsSynthetic, None, doc='''A read only property that returns a boolean value that indicates if this symbol was synthetically created from information in module that contains it.''') - - + name = property(GetName, None, doc='''A read only property that returns the name for this symbol as a string.''') + mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this symbol as a string.''') + type = property(GetType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eSymbolType") that represents the type of this symbol.''') + addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this symbol.''') + end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this symbol.''') + prologue_size = property(GetPrologueByteSize, None, doc='''A read only property that returns the size in bytes of the prologue instructions as an unsigned integer.''') + instructions = property(get_instructions_from_current_target, None, doc='''A read only property that returns an lldb object that represents the instructions (lldb.SBInstructionList) for this symbol.''') + external = property(IsExternal, None, doc='''A read only property that returns a boolean value that indicates if this symbol is externally visiable (exported) from the module that contains it.''') + synthetic = property(IsSynthetic, None, doc='''A read only property that returns a boolean value that indicates if this symbol was synthetically created from information in module that contains it.''') %} }; diff --git a/lldb/scripts/interface/SBSymbolContext.i b/lldb/scripts/interface/SBSymbolContext.i index 1c986e10677f113..29cc9538f239976 100644 --- a/lldb/scripts/interface/SBSymbolContext.i +++ b/lldb/scripts/interface/SBSymbolContext.i @@ -83,29 +83,12 @@ public: %pythoncode %{ - __swig_getmethods__["module"] = GetModule - __swig_setmethods__["module"] = SetModule - if _newclass: module = property(GetModule, SetModule, doc='''A read/write property that allows the getting/setting of the module (lldb.SBModule) in this symbol context.''') - - __swig_getmethods__["compile_unit"] = GetCompileUnit - __swig_setmethods__["compile_unit"] = SetCompileUnit - if _newclass: compile_unit = property(GetCompileUnit, SetCompileUnit, doc='''A read/write property that allows the getting/setting of the compile unit (lldb.SBCompileUnit) in this symbol context.''') - - __swig_getmethods__["function"] = GetFunction - __swig_setmethods__["function"] = SetFunction - if _newclass: function = property(GetFunction, SetFunction, doc='''A read/write property that allows the getting/setting of the function (lldb.SBFunction) in this symbol context.''') - - __swig_getmethods__["block"] = GetBlock - __swig_setmethods__["block"] = SetBlock - if _newclass: block = property(GetBlock, SetBlock, doc='''A read/write property that allows the getting/setting of the block (lldb.SBBlock) in this symbol context.''') - - __swig_getmethods__["symbol"] = GetSymbol - __swig_setmethods__["symbol"] = SetSymbol - if _newclass: symbol = property(GetSymbol, SetSymbol, doc='''A read/write property that allows the getting/setting of the symbol (lldb.SBSymbol) in this symbol context.''') - - __swig_getmethods__["line_entry"] = GetLineEntry - __swig_setmethods__["line_entry"] = SetLineEntry - if _newclass: line_entry = property(GetLineEntry, SetLineEntry, doc='''A read/write property that allows the getting/setting of the line entry (lldb.SBLineEntry) in this symbol context.''') + module = property(GetModule, SetModule, doc='''A read/write property that allows the getting/setting of the module (lldb.SBModule) in this symbol context.''') + compile_unit = property(GetCompileUnit, SetCompileUnit, doc='''A read/write property that allows the getting/setting of the compile unit (lldb.SBCompileUnit) in this symbol context.''') + function = property(GetFunction, SetFunction, doc='''A read/write property that allows the getting/setting of the function (lldb.SBFunction) in this symbol context.''') + block = property(GetBlock, SetBlock, doc='''A read/write property that allows the getting/setting of the block (lldb.SBBlock) in this symbol context.''') + symbol = property(GetSymbol, SetSymbol, doc='''A read/write property that allows the getting/setting of the symbol (lldb.SBSymbol) in this symbol context.''') + line_entry = property(GetLineEntry, SetLineEntry, doc='''A read/write property that allows the getting/setting of the line entry (lldb.SBLineEntry) in this symbol context.''') %} }; diff --git a/lldb/scripts/interface/SBSymbolContextList.i b/lldb/scripts/interface/SBSymbolContextList.i index 38397c57acac762..4ac6d82ca3b4809 100644 --- a/lldb/scripts/interface/SBSymbolContextList.i +++ b/lldb/scripts/interface/SBSymbolContextList.i @@ -121,23 +121,13 @@ public: if obj: a.append(obj) return a - __swig_getmethods__["modules"] = get_module_array - if _newclass: modules = property(get_module_array, None, doc='''Returns a list() of lldb.SBModule objects, one for each module in each SBSymbolContext object in this list.''') - __swig_getmethods__["compile_units"] = get_compile_unit_array - if _newclass: compile_units = property(get_compile_unit_array, None, doc='''Returns a list() of lldb.SBCompileUnit objects, one for each compile unit in each SBSymbolContext object in this list.''') - - __swig_getmethods__["functions"] = get_function_array - if _newclass: functions = property(get_function_array, None, doc='''Returns a list() of lldb.SBFunction objects, one for each function in each SBSymbolContext object in this list.''') - - __swig_getmethods__["blocks"] = get_block_array - if _newclass: blocks = property(get_block_array, None, doc='''Returns a list() of lldb.SBBlock objects, one for each block in each SBSymbolContext object in this list.''') - - __swig_getmethods__["line_entries"] = get_line_entry_array - if _newclass: line_entries = property(get_line_entry_array, None, doc='''Returns a list() of lldb.SBLineEntry objects, one for each line entry in each SBSymbolContext object in this list.''') - - __swig_getmethods__["symbols"] = get_symbol_array - if _newclass: symbols = property(get_symbol_array, None, doc='''Returns a list() of lldb.SBSymbol objects, one for each symbol in each SBSymbolContext object in this list.''') + modules = property(get_module_array, None, doc='''Returns a list() of lldb.SBModule objects, one for each module in each SBSymbolContext object in this list.''') + compile_units = property(get_compile_unit_array, None, doc='''Returns a list() of lldb.SBCompileUnit objects, one for each compile unit in each SBSymbolContext object in this list.''') + functions = property(get_function_array, None, doc='''Returns a list() of lldb.SBFunction objects, one for each function in each SBSymbolContext object in this list.''') + blocks = property(get_block_array, None, doc='''Returns a list() of lldb.SBBlock objects, one for each block in each SBSymbolContext object in this list.''') + line_entries = property(get_line_entry_array, None, doc='''Returns a list() of lldb.SBLineEntry objects, one for each line entry in each SBSymbolContext object in this list.''') + symbols = property(get_symbol_array, None, doc='''Returns a list() of lldb.SBSymbol objects, one for each symbol in each SBSymbolContext object in this list.''') %} }; diff --git a/lldb/scripts/interface/SBTarget.i b/lldb/scripts/interface/SBTarget.i index c9b15d01782e767..e064852d6198879 100644 --- a/lldb/scripts/interface/SBTarget.i +++ b/lldb/scripts/interface/SBTarget.i @@ -686,7 +686,7 @@ public: %feature("docstring", " Create a breakpoint using a scripted resolver. - + @param[in] class_name This is the name of the class that implements a scripted resolver. The class should have the following signature: @@ -699,7 +699,7 @@ public: # extra_args - an SBStructuredData that can be used to # parametrize this instance. Same as the extra_args passed # to BreakpointCreateFromScript. - + def __get_depth__ (self): # This is optional, but if defined, you should return the # depth at which you want the callback to be called. The @@ -708,7 +708,7 @@ public: # lldb.eSearchDepthCompUnit # The default if you don't implement this method is # eSearchDepthModule. - + def __callback__(self, sym_ctx): # sym_ctx - an SBSymbolContext that is the cursor in the # search through the program to resolve breakpoints. @@ -719,26 +719,26 @@ public: # Note, you will only get called for modules/compile_units that # pass the SearchFilter provided by the module_list & file_list # passed into BreakpointCreateFromScript. - + def get_short_help(self): # Optional, but if implemented return a short string that will # be printed at the beginning of the break list output for the # breakpoint. - + @param[in] extra_args This is an SBStructuredData object that will get passed to the constructor of the class in class_name. You can use this to reuse the same class, parametrizing it with entries from this dictionary. - + @param module_list If this is non-empty, this will be used as the module filter in the SearchFilter created for this breakpoint. - + @param file_list If this is non-empty, this will be used as the comp unit filter in the SearchFilter created for this breakpoint. - + @return An SBBreakpoint that will set locations based on the logic in the resolver's search callback.") BreakpointCreateFromScript; @@ -1051,49 +1051,20 @@ public: object.''' return lldb_iter(self, 'GetNumWatchpoints', 'GetWatchpointAtIndex') - __swig_getmethods__["modules"] = get_modules_array - if _newclass: modules = property(get_modules_array, None, doc='''A read only property that returns a list() of lldb.SBModule objects contained in this target. This list is a list all modules that the target currently is tracking (the main executable and all dependent shared libraries).''') - - __swig_getmethods__["module"] = get_modules_access_object - if _newclass: module = property(get_modules_access_object, None, doc=r'''A read only property that returns an object that implements python operator overloading with the square brackets().\n target.module[] allows array access to any modules.\n target.module[] allows access to modules by basename, full path, or uuid string value.\n target.module[uuid.UUID()] allows module access by UUID.\n target.module[re] allows module access using a regular expression that matches the module full path.''') - - __swig_getmethods__["process"] = GetProcess - if _newclass: process = property(GetProcess, None, doc='''A read only property that returns an lldb object that represents the process (lldb.SBProcess) that this target owns.''') - - __swig_getmethods__["executable"] = GetExecutable - if _newclass: executable = property(GetExecutable, None, doc='''A read only property that returns an lldb object that represents the main executable module (lldb.SBModule) for this target.''') - - __swig_getmethods__["debugger"] = GetDebugger - if _newclass: debugger = property(GetDebugger, None, doc='''A read only property that returns an lldb object that represents the debugger (lldb.SBDebugger) that owns this target.''') - - __swig_getmethods__["num_breakpoints"] = GetNumBreakpoints - if _newclass: num_breakpoints = property(GetNumBreakpoints, None, doc='''A read only property that returns the number of breakpoints that this target has as an integer.''') - - __swig_getmethods__["num_watchpoints"] = GetNumWatchpoints - if _newclass: num_watchpoints = property(GetNumWatchpoints, None, doc='''A read only property that returns the number of watchpoints that this target has as an integer.''') - - __swig_getmethods__["broadcaster"] = GetBroadcaster - if _newclass: broadcaster = property(GetBroadcaster, None, doc='''A read only property that an lldb object that represents the broadcaster (lldb.SBBroadcaster) for this target.''') - - __swig_getmethods__["byte_order"] = GetByteOrder - if _newclass: byte_order = property(GetByteOrder, None, doc='''A read only property that returns an lldb enumeration value (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that represents the byte order for this target.''') - - __swig_getmethods__["addr_size"] = GetAddressByteSize - if _newclass: addr_size = property(GetAddressByteSize, None, doc='''A read only property that returns the size in bytes of an address for this target.''') - - __swig_getmethods__["triple"] = GetTriple - if _newclass: triple = property(GetTriple, None, doc='''A read only property that returns the target triple (arch-vendor-os) for this target as a string.''') - - __swig_getmethods__["data_byte_size"] = GetDataByteSize - if _newclass: data_byte_size = property(GetDataByteSize, None, doc='''A read only property that returns the size in host bytes of a byte in the data address space for this target.''') - - __swig_getmethods__["code_byte_size"] = GetCodeByteSize - if _newclass: code_byte_size = property(GetCodeByteSize, None, doc='''A read only property that returns the size in host bytes of a byte in the code address space for this target.''') - - __swig_getmethods__["platform"] = GetPlatform - if _newclass: platform = property(GetPlatform, None, doc='''A read only property that returns the platform associated with with this target.''') + modules = property(get_modules_array, None, doc='''A read only property that returns a list() of lldb.SBModule objects contained in this target. This list is a list all modules that the target currently is tracking (the main executable and all dependent shared libraries).''') + module = property(get_modules_access_object, None, doc=r'''A read only property that returns an object that implements python operator overloading with the square brackets().\n target.module[] allows array access to any modules.\n target.module[] allows access to modules by basename, full path, or uuid string value.\n target.module[uuid.UUID()] allows module access by UUID.\n target.module[re] allows module access using a regular expression that matches the module full path.''') + process = property(GetProcess, None, doc='''A read only property that returns an lldb object that represents the process (lldb.SBProcess) that this target owns.''') + executable = property(GetExecutable, None, doc='''A read only property that returns an lldb object that represents the main executable module (lldb.SBModule) for this target.''') + debugger = property(GetDebugger, None, doc='''A read only property that returns an lldb object that represents the debugger (lldb.SBDebugger) that owns this target.''') + num_breakpoints = property(GetNumBreakpoints, None, doc='''A read only property that returns the number of breakpoints that this target has as an integer.''') + num_watchpoints = property(GetNumWatchpoints, None, doc='''A read only property that returns the number of watchpoints that this target has as an integer.''') + broadcaster = property(GetBroadcaster, None, doc='''A read only property that an lldb object that represents the broadcaster (lldb.SBBroadcaster) for this target.''') + byte_order = property(GetByteOrder, None, doc='''A read only property that returns an lldb enumeration value (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that represents the byte order for this target.''') + addr_size = property(GetAddressByteSize, None, doc='''A read only property that returns the size in bytes of an address for this target.''') + triple = property(GetTriple, None, doc='''A read only property that returns the target triple (arch-vendor-os) for this target as a string.''') + data_byte_size = property(GetDataByteSize, None, doc='''A read only property that returns the size in host bytes of a byte in the data address space for this target.''') + code_byte_size = property(GetCodeByteSize, None, doc='''A read only property that returns the size in host bytes of a byte in the code address space for this target.''') + platform = property(GetPlatform, None, doc='''A read only property that returns the platform associated with with this target.''') %} - }; - } // namespace lldb diff --git a/lldb/scripts/interface/SBThread.i b/lldb/scripts/interface/SBThread.i index e370f56d5e0c2c4..c759e4a5db922cd 100644 --- a/lldb/scripts/interface/SBThread.i +++ b/lldb/scripts/interface/SBThread.i @@ -432,44 +432,19 @@ public: frames.append(frame) return frames - __swig_getmethods__["id"] = GetThreadID - if _newclass: id = property(GetThreadID, None, doc='''A read only property that returns the thread ID as an integer.''') - - __swig_getmethods__["idx"] = GetIndexID - if _newclass: idx = property(GetIndexID, None, doc='''A read only property that returns the thread index ID as an integer. Thread index ID values start at 1 and increment as threads come and go and can be used to uniquely identify threads.''') - - __swig_getmethods__["return_value"] = GetStopReturnValue - if _newclass: return_value = property(GetStopReturnValue, None, doc='''A read only property that returns an lldb object that represents the return value from the last stop (lldb.SBValue) if we just stopped due to stepping out of a function.''') - - __swig_getmethods__["process"] = GetProcess - if _newclass: process = property(GetProcess, None, doc='''A read only property that returns an lldb object that represents the process (lldb.SBProcess) that owns this thread.''') - - __swig_getmethods__["num_frames"] = GetNumFrames - if _newclass: num_frames = property(GetNumFrames, None, doc='''A read only property that returns the number of stack frames in this thread as an integer.''') - - __swig_getmethods__["frames"] = get_thread_frames - if _newclass: frames = property(get_thread_frames, None, doc='''A read only property that returns a list() of lldb.SBFrame objects for all frames in this thread.''') - - __swig_getmethods__["frame"] = get_frames_access_object - if _newclass: frame = property(get_frames_access_object, None, doc='''A read only property that returns an object that can be used to access frames as an array ("frame_12 = lldb.thread.frame[12]").''') - - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name of this thread as a string.''') - - __swig_getmethods__["queue"] = GetQueueName - if _newclass: queue = property(GetQueueName, None, doc='''A read only property that returns the dispatch queue name of this thread as a string.''') - - __swig_getmethods__["queue_id"] = GetQueueID - if _newclass: queue_id = property(GetQueueID, None, doc='''A read only property that returns the dispatch queue id of this thread as an integer.''') - - __swig_getmethods__["stop_reason"] = GetStopReason - if _newclass: stop_reason = property(GetStopReason, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eStopReason") that represents the reason this thread stopped.''') - - __swig_getmethods__["is_suspended"] = IsSuspended - if _newclass: is_suspended = property(IsSuspended, None, doc='''A read only property that returns a boolean value that indicates if this thread is suspended.''') - - __swig_getmethods__["is_stopped"] = IsStopped - if _newclass: is_stopped = property(IsStopped, None, doc='''A read only property that returns a boolean value that indicates if this thread is stopped but not exited.''') + id = property(GetThreadID, None, doc='''A read only property that returns the thread ID as an integer.''') + idx = property(GetIndexID, None, doc='''A read only property that returns the thread index ID as an integer. Thread index ID values start at 1 and increment as threads come and go and can be used to uniquely identify threads.''') + return_value = property(GetStopReturnValue, None, doc='''A read only property that returns an lldb object that represents the return value from the last stop (lldb.SBValue) if we just stopped due to stepping out of a function.''') + process = property(GetProcess, None, doc='''A read only property that returns an lldb object that represents the process (lldb.SBProcess) that owns this thread.''') + num_frames = property(GetNumFrames, None, doc='''A read only property that returns the number of stack frames in this thread as an integer.''') + frames = property(get_thread_frames, None, doc='''A read only property that returns a list() of lldb.SBFrame objects for all frames in this thread.''') + frame = property(get_frames_access_object, None, doc='''A read only property that returns an object that can be used to access frames as an array ("frame_12 = lldb.thread.frame[12]").''') + name = property(GetName, None, doc='''A read only property that returns the name of this thread as a string.''') + queue = property(GetQueueName, None, doc='''A read only property that returns the dispatch queue name of this thread as a string.''') + queue_id = property(GetQueueID, None, doc='''A read only property that returns the dispatch queue id of this thread as an integer.''') + stop_reason = property(GetStopReason, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eStopReason") that represents the reason this thread stopped.''') + is_suspended = property(IsSuspended, None, doc='''A read only property that returns a boolean value that indicates if this thread is suspended.''') + is_stopped = property(IsStopped, None, doc='''A read only property that returns a boolean value that indicates if this thread is stopped but not exited.''') %} }; diff --git a/lldb/scripts/interface/SBType.i b/lldb/scripts/interface/SBType.i index 912eedb55c3cebc..ae9abfeefd85dad 100644 --- a/lldb/scripts/interface/SBType.i +++ b/lldb/scripts/interface/SBType.i @@ -44,24 +44,12 @@ public: GetBitfieldSizeInBits(); %pythoncode %{ - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this member as a string.''') - - __swig_getmethods__["type"] = GetType - if _newclass: type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the type (lldb.SBType) for this member.''') - - __swig_getmethods__["byte_offset"] = GetOffsetInBytes - if _newclass: byte_offset = property(GetOffsetInBytes, None, doc='''A read only property that returns offset in bytes for this member as an integer.''') - - __swig_getmethods__["bit_offset"] = GetOffsetInBits - if _newclass: bit_offset = property(GetOffsetInBits, None, doc='''A read only property that returns offset in bits for this member as an integer.''') - - __swig_getmethods__["is_bitfield"] = IsBitfield - if _newclass: is_bitfield = property(IsBitfield, None, doc='''A read only property that returns true if this member is a bitfield.''') - - __swig_getmethods__["bitfield_bit_size"] = GetBitfieldSizeInBits - if _newclass: bitfield_bit_size = property(GetBitfieldSizeInBits, None, doc='''A read only property that returns the bitfield size in bits for this member as an integer, or zero if this member is not a bitfield.''') - + name = property(GetName, None, doc='''A read only property that returns the name for this member as a string.''') + type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the type (lldb.SBType) for this member.''') + byte_offset = property(GetOffsetInBytes, None, doc='''A read only property that returns offset in bytes for this member as an integer.''') + bit_offset = property(GetOffsetInBits, None, doc='''A read only property that returns offset in bits for this member as an integer.''') + is_bitfield = property(IsBitfield, None, doc='''A read only property that returns true if this member is a bitfield.''') + bitfield_bit_size = property(GetBitfieldSizeInBits, None, doc='''A read only property that returns the bitfield size in bits for this member as an integer, or zero if this member is not a bitfield.''') %} protected: @@ -334,41 +322,18 @@ public: return template_args return None - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this type as a string.''') - - __swig_getmethods__["size"] = GetByteSize - if _newclass: size = property(GetByteSize, None, doc='''A read only property that returns size in bytes for this type as an integer.''') - - __swig_getmethods__["is_pointer"] = IsPointerType - if _newclass: is_pointer = property(IsPointerType, None, doc='''A read only property that returns a boolean value that indicates if this type is a pointer type.''') - - __swig_getmethods__["is_reference"] = IsReferenceType - if _newclass: is_reference = property(IsReferenceType, None, doc='''A read only property that returns a boolean value that indicates if this type is a reference type.''') - - __swig_getmethods__["is_function"] = IsFunctionType - if _newclass: is_reference = property(IsReferenceType, None, doc='''A read only property that returns a boolean value that indicates if this type is a function type.''') - - __swig_getmethods__["num_fields"] = GetNumberOfFields - if _newclass: num_fields = property(GetNumberOfFields, None, doc='''A read only property that returns number of fields in this type as an integer.''') - - __swig_getmethods__["num_bases"] = GetNumberOfDirectBaseClasses - if _newclass: num_bases = property(GetNumberOfDirectBaseClasses, None, doc='''A read only property that returns number of direct base classes in this type as an integer.''') - - __swig_getmethods__["num_vbases"] = GetNumberOfVirtualBaseClasses - if _newclass: num_vbases = property(GetNumberOfVirtualBaseClasses, None, doc='''A read only property that returns number of virtual base classes in this type as an integer.''') - - __swig_getmethods__["num_template_args"] = GetNumberOfTemplateArguments - if _newclass: num_template_args = property(GetNumberOfTemplateArguments, None, doc='''A read only property that returns number of template arguments in this type as an integer.''') - - __swig_getmethods__["template_args"] = template_arg_array - if _newclass: template_args = property(template_arg_array, None, doc='''A read only property that returns a list() of lldb.SBType objects that represent all template arguments in this type.''') - - __swig_getmethods__["type"] = GetTypeClass - if _newclass: type = property(GetTypeClass, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eTypeClass") that represents a classification for this type.''') - - __swig_getmethods__["is_complete"] = IsTypeComplete - if _newclass: is_complete = property(IsTypeComplete, None, doc='''A read only property that returns a boolean value that indicates if this type is a complete type (True) or a forward declaration (False).''') + name = property(GetName, None, doc='''A read only property that returns the name for this type as a string.''') + size = property(GetByteSize, None, doc='''A read only property that returns size in bytes for this type as an integer.''') + is_pointer = property(IsPointerType, None, doc='''A read only property that returns a boolean value that indicates if this type is a pointer type.''') + is_reference = property(IsReferenceType, None, doc='''A read only property that returns a boolean value that indicates if this type is a reference type.''') + is_reference = property(IsReferenceType, None, doc='''A read only property that returns a boolean value that indicates if this type is a function type.''') + num_fields = property(GetNumberOfFields, None, doc='''A read only property that returns number of fields in this type as an integer.''') + num_bases = property(GetNumberOfDirectBaseClasses, None, doc='''A read only property that returns number of direct base classes in this type as an integer.''') + num_vbases = property(GetNumberOfVirtualBaseClasses, None, doc='''A read only property that returns number of virtual base classes in this type as an integer.''') + num_template_args = property(GetNumberOfTemplateArguments, None, doc='''A read only property that returns number of template arguments in this type as an integer.''') + template_args = property(template_arg_array, None, doc='''A read only property that returns a list() of lldb.SBType objects that represent all template arguments in this type.''') + type = property(GetTypeClass, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eTypeClass") that represents a classification for this type.''') + is_complete = property(IsTypeComplete, None, doc='''A read only property that returns a boolean value that indicates if this type is a complete type (True) or a forward declaration (False).''') def get_bases_array(self): '''An accessor function that returns a list() that contains all direct base classes in a lldb.SBType object.''' @@ -437,21 +402,11 @@ public: enum_members_list.append(sb_enum_members.GetTypeEnumMemberAtIndex(idx)) return enum_members_list - __swig_getmethods__["bases"] = get_bases_array - if _newclass: bases = property(get_bases_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the direct base classes for this type.''') - - __swig_getmethods__["vbases"] = get_vbases_array - if _newclass: vbases = property(get_vbases_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the virtual base classes for this type.''') - - __swig_getmethods__["fields"] = get_fields_array - if _newclass: fields = property(get_fields_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the fields for this type.''') - - __swig_getmethods__["members"] = get_members_array - if _newclass: members = property(get_members_array, None, doc='''A read only property that returns a list() of all lldb.SBTypeMember objects that represent all of the base classes, virtual base classes and fields for this type in ascending bit offset order.''') - - __swig_getmethods__["enum_members"] = get_enum_members_array - if _newclass: enum_members = property(get_enum_members_array, None, doc='''A read only property that returns a list() of all lldb.SBTypeEnumMember objects that represent the enum members for this type.''') - + bases = property(get_bases_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the direct base classes for this type.''') + vbases = property(get_vbases_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the virtual base classes for this type.''') + fields = property(get_fields_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the fields for this type.''') + members = property(get_members_array, None, doc='''A read only property that returns a list() of all lldb.SBTypeMember objects that represent all of the base classes, virtual base classes and fields for this type in ascending bit offset order.''') + enum_members = property(get_enum_members_array, None, doc='''A read only property that returns a list() of all lldb.SBTypeEnumMember objects that represent the enum members for this type.''') %} }; diff --git a/lldb/scripts/interface/SBTypeCategory.i b/lldb/scripts/interface/SBTypeCategory.i index bcc6950df9e0740..c183862702df993 100644 --- a/lldb/scripts/interface/SBTypeCategory.i +++ b/lldb/scripts/interface/SBTypeCategory.i @@ -198,45 +198,20 @@ namespace lldb { filters.append(self.GetFilterAtIndex(idx)) return filters - __swig_getmethods__["formats"] = get_formats_array - if _newclass: formats = property(get_formats_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFormat objects contained in this category''') - - __swig_getmethods__["format"] = get_formats_access_object - if _newclass: format = property(get_formats_access_object, None, doc=r'''A read only property that returns an object that you can use to look for formats by index or type name.''') - - __swig_getmethods__["summaries"] = get_summaries_array - if _newclass: summaries = property(get_summaries_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSummary objects contained in this category''') - - __swig_getmethods__["summary"] = get_summaries_access_object - if _newclass: summary = property(get_summaries_access_object, None, doc=r'''A read only property that returns an object that you can use to look for summaries by index or type name or regular expression.''') - - __swig_getmethods__["filters"] = get_filters_array - if _newclass: filters = property(get_filters_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFilter objects contained in this category''') - - __swig_getmethods__["filter"] = get_filters_access_object - if _newclass: filter = property(get_filters_access_object, None, doc=r'''A read only property that returns an object that you can use to look for filters by index or type name or regular expression.''') - - __swig_getmethods__["synthetics"] = get_synthetics_array - if _newclass: synthetics = property(get_synthetics_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSynthetic objects contained in this category''') - - __swig_getmethods__["synthetic"] = get_synthetics_access_object - if _newclass: synthetic = property(get_synthetics_access_object, None, doc=r'''A read only property that returns an object that you can use to look for synthetic children provider by index or type name or regular expression.''') - - __swig_getmethods__["num_formats"] = GetNumFormats - if _newclass: num_formats = property(GetNumFormats, None) - __swig_getmethods__["num_summaries"] = GetNumSummaries - if _newclass: num_summaries = property(GetNumSummaries, None) - __swig_getmethods__["num_filters"] = GetNumFilters - if _newclass: num_filters = property(GetNumFilters, None) - __swig_getmethods__["num_synthetics"] = GetNumSynthetics - if _newclass: num_synthetics = property(GetNumSynthetics, None) - - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None) - - __swig_getmethods__["enabled"] = GetEnabled - __swig_setmethods__["enabled"] = SetEnabled - if _newclass: enabled = property(GetEnabled, SetEnabled) + formats = property(get_formats_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFormat objects contained in this category''') + format = property(get_formats_access_object, None, doc=r'''A read only property that returns an object that you can use to look for formats by index or type name.''') + summaries = property(get_summaries_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSummary objects contained in this category''') + summary = property(get_summaries_access_object, None, doc=r'''A read only property that returns an object that you can use to look for summaries by index or type name or regular expression.''') + filters = property(get_filters_array, None, doc='''A read only property that returns a list() of lldb.SBTypeFilter objects contained in this category''') + filter = property(get_filters_access_object, None, doc=r'''A read only property that returns an object that you can use to look for filters by index or type name or regular expression.''') + synthetics = property(get_synthetics_array, None, doc='''A read only property that returns a list() of lldb.SBTypeSynthetic objects contained in this category''') + synthetic = property(get_synthetics_access_object, None, doc=r'''A read only property that returns an object that you can use to look for synthetic children provider by index or type name or regular expression.''') + num_formats = property(GetNumFormats, None) + num_summaries = property(GetNumSummaries, None) + num_filters = property(GetNumFilters, None) + num_synthetics = property(GetNumSynthetics, None) + name = property(GetName, None) + enabled = property(GetEnabled, SetEnabled) %} }; diff --git a/lldb/scripts/interface/SBTypeEnumMember.i b/lldb/scripts/interface/SBTypeEnumMember.i index b95d78168303484..0c9cf64a77eaf54 100644 --- a/lldb/scripts/interface/SBTypeEnumMember.i +++ b/lldb/scripts/interface/SBTypeEnumMember.i @@ -44,17 +44,10 @@ public: lldb::DescriptionLevel description_level); %pythoncode %{ - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this enum member as a string.''') - - __swig_getmethods__["type"] = GetType - if _newclass: type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the type (lldb.SBType) for this enum member.''') - - __swig_getmethods__["signed"] = GetValueAsSigned - if _newclass: signed = property(GetValueAsSigned, None, doc='''A read only property that returns the value of this enum member as a signed integer.''') - - __swig_getmethods__["unsigned"] = GetValueAsUnsigned - if _newclass: unsigned = property(GetValueAsUnsigned, None, doc='''A read only property that returns the value of this enum member as a unsigned integer.''') + name = property(GetName, None, doc='''A read only property that returns the name for this enum member as a string.''') + type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the type (lldb.SBType) for this enum member.''') + signed = property(GetValueAsSigned, None, doc='''A read only property that returns the value of this enum member as a signed integer.''') + unsigned = property(GetValueAsUnsigned, None, doc='''A read only property that returns the value of this enum member as a unsigned integer.''') %} protected: diff --git a/lldb/scripts/interface/SBTypeFilter.i b/lldb/scripts/interface/SBTypeFilter.i index 2e27ca9c0d556f9..100c420bf2e2b7f 100644 --- a/lldb/scripts/interface/SBTypeFilter.i +++ b/lldb/scripts/interface/SBTypeFilter.i @@ -62,12 +62,8 @@ namespace lldb { operator != (lldb::SBTypeFilter &rhs); %pythoncode %{ - __swig_getmethods__["options"] = GetOptions - __swig_setmethods__["options"] = SetOptions - if _newclass: options = property(GetOptions, SetOptions) - - __swig_getmethods__["count"] = GetNumberOfExpressionPaths - if _newclass: count = property(GetNumberOfExpressionPaths, None) + options = property(GetOptions, SetOptions) + count = property(GetNumberOfExpressionPaths) %} }; diff --git a/lldb/scripts/interface/SBTypeFormat.i b/lldb/scripts/interface/SBTypeFormat.i index 3691b0875ca542e..7c19ebbd0f1fb0c 100644 --- a/lldb/scripts/interface/SBTypeFormat.i +++ b/lldb/scripts/interface/SBTypeFormat.i @@ -62,13 +62,8 @@ namespace lldb { operator != (lldb::SBTypeFormat &rhs); %pythoncode %{ - __swig_getmethods__["format"] = GetFormat - __swig_setmethods__["format"] = SetFormat - if _newclass: format = property(GetFormat, SetFormat) - - __swig_getmethods__["options"] = GetOptions - __swig_setmethods__["options"] = SetOptions - if _newclass: options = property(GetOptions, SetOptions) + format = property(GetFormat, SetFormat) + options = property(GetOptions, SetOptions) %} }; diff --git a/lldb/scripts/interface/SBTypeNameSpecifier.i b/lldb/scripts/interface/SBTypeNameSpecifier.i index 959d32a96e0f9bc..537b9cecf224858 100644 --- a/lldb/scripts/interface/SBTypeNameSpecifier.i +++ b/lldb/scripts/interface/SBTypeNameSpecifier.i @@ -54,11 +54,8 @@ namespace lldb { operator != (lldb::SBTypeNameSpecifier &rhs); %pythoncode %{ - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None) - - __swig_getmethods__["is_regex"] = IsRegex - if _newclass: is_regex = property(IsRegex, None) + name = property(GetName) + is_regex = property(IsRegex) %} diff --git a/lldb/scripts/interface/SBTypeSummary.i b/lldb/scripts/interface/SBTypeSummary.i index 8e2ba523b5fdcca..2a44918441ff6c8 100644 --- a/lldb/scripts/interface/SBTypeSummary.i +++ b/lldb/scripts/interface/SBTypeSummary.i @@ -102,21 +102,11 @@ namespace lldb { operator != (lldb::SBTypeSummary &rhs); %pythoncode %{ - __swig_getmethods__["options"] = GetOptions - __swig_setmethods__["options"] = SetOptions - if _newclass: options = property(GetOptions, SetOptions) - - __swig_getmethods__["is_summary_string"] = IsSummaryString - if _newclass: is_summary_string = property(IsSummaryString, None) - - __swig_getmethods__["is_function_name"] = IsFunctionName - if _newclass: is_function_name = property(IsFunctionName, None) - - __swig_getmethods__["is_function_name"] = IsFunctionCode - if _newclass: is_function_name = property(IsFunctionCode, None) - - __swig_getmethods__["summary_data"] = GetData - if _newclass: summary_data = property(GetData, None) + options = property(GetOptions, SetOptions) + is_summary_string = property(IsSummaryString) + is_function_name = property(IsFunctionName) + is_function_name = property(IsFunctionCode) + summary_data = property(GetData) %} }; diff --git a/lldb/scripts/interface/SBTypeSynthetic.i b/lldb/scripts/interface/SBTypeSynthetic.i index e45dd8ef3f3258d..04502fa7f350d86 100644 --- a/lldb/scripts/interface/SBTypeSynthetic.i +++ b/lldb/scripts/interface/SBTypeSynthetic.i @@ -64,15 +64,9 @@ namespace lldb { operator != (lldb::SBTypeSynthetic &rhs); %pythoncode %{ - __swig_getmethods__["options"] = GetOptions - __swig_setmethods__["options"] = SetOptions - if _newclass: options = property(GetOptions, SetOptions) - - __swig_getmethods__["contains_code"] = IsClassCode - if _newclass: contains_code = property(IsClassCode, None) - - __swig_getmethods__["synthetic_data"] = GetData - if _newclass: synthetic_data = property(GetData, None) + options = property(GetOptions, SetOptions) + contains_code = property(IsClassCode, None) + synthetic_data = property(GetData, None) %} }; diff --git a/lldb/scripts/interface/SBUnixSignals.i b/lldb/scripts/interface/SBUnixSignals.i index a895c6ac61a10f6..015aeae51b1db2b 100644 --- a/lldb/scripts/interface/SBUnixSignals.i +++ b/lldb/scripts/interface/SBUnixSignals.i @@ -67,8 +67,7 @@ public: signals.append(self.GetSignalAtIndex(sig)) return signals - __swig_getmethods__["signals"] = get_unix_signals_list - if _newclass: threads = property(get_unix_signals_list, None, doc='''A read only property that returns a list() of valid signal numbers for this platform.''') + threads = property(get_unix_signals_list, None, doc='''A read only property that returns a list() of valid signal numbers for this platform.''') %} }; diff --git a/lldb/scripts/interface/SBValue.i b/lldb/scripts/interface/SBValue.i index 93293761a9bbcb9..10ad04f2dd594a3 100644 --- a/lldb/scripts/interface/SBValue.i +++ b/lldb/scripts/interface/SBValue.i @@ -484,96 +484,40 @@ public: '''Return the number of child values of a lldb.SBValue object.''' return self.GetNumChildren() - __swig_getmethods__["children"] = get_value_child_list - if _newclass: children = property(get_value_child_list, None, doc='''A read only property that returns a list() of lldb.SBValue objects for the children of the value.''') - - __swig_getmethods__["child"] = get_child_access_object - if _newclass: child = property(get_child_access_object, None, doc='''A read only property that returns an object that can access children of a variable by index (child_value = value.children[12]).''') - - __swig_getmethods__["name"] = GetName - if _newclass: name = property(GetName, None, doc='''A read only property that returns the name of this value as a string.''') - - __swig_getmethods__["type"] = GetType - if _newclass: type = property(GetType, None, doc='''A read only property that returns a lldb.SBType object that represents the type for this value.''') - - __swig_getmethods__["size"] = GetByteSize - if _newclass: size = property(GetByteSize, None, doc='''A read only property that returns the size in bytes of this value.''') - - __swig_getmethods__["is_in_scope"] = IsInScope - if _newclass: is_in_scope = property(IsInScope, None, doc='''A read only property that returns a boolean value that indicates whether this value is currently lexically in scope.''') - - __swig_getmethods__["format"] = GetFormat - __swig_setmethods__["format"] = SetFormat - if _newclass: format = property(GetName, SetFormat, doc='''A read/write property that gets/sets the format used for lldb.SBValue().GetValue() for this value. See enumerations that start with "lldb.eFormat".''') - - __swig_getmethods__["value"] = GetValue - __swig_setmethods__["value"] = SetValueFromCString - if _newclass: value = property(GetValue, SetValueFromCString, doc='''A read/write property that gets/sets value from a string.''') - - __swig_getmethods__["value_type"] = GetValueType - if _newclass: value_type = property(GetValueType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eValueType") that represents the type of this value (local, argument, global, register, etc.).''') - - __swig_getmethods__["changed"] = GetValueDidChange - if _newclass: changed = property(GetValueDidChange, None, doc='''A read only property that returns a boolean value that indicates if this value has changed since it was last updated.''') - - __swig_getmethods__["data"] = GetData - if _newclass: data = property(GetData, None, doc='''A read only property that returns an lldb object (lldb.SBData) that represents the bytes that make up the value for this object.''') - - __swig_getmethods__["load_addr"] = GetLoadAddress - if _newclass: load_addr = property(GetLoadAddress, None, doc='''A read only property that returns the load address of this value as an integer.''') - - __swig_getmethods__["addr"] = GetAddress - if _newclass: addr = property(GetAddress, None, doc='''A read only property that returns an lldb.SBAddress that represents the address of this value if it is in memory.''') - - __swig_getmethods__["deref"] = Dereference - if _newclass: deref = property(Dereference, None, doc='''A read only property that returns an lldb.SBValue that is created by dereferencing this value.''') - - __swig_getmethods__["address_of"] = AddressOf - if _newclass: address_of = property(AddressOf, None, doc='''A read only property that returns an lldb.SBValue that represents the address-of this value.''') - - __swig_getmethods__["error"] = GetError - if _newclass: error = property(GetError, None, doc='''A read only property that returns the lldb.SBError that represents the error from the last time the variable value was calculated.''') - - __swig_getmethods__["summary"] = GetSummary - if _newclass: summary = property(GetSummary, None, doc='''A read only property that returns the summary for this value as a string''') - - __swig_getmethods__["description"] = GetObjectDescription - if _newclass: description = property(GetObjectDescription, None, doc='''A read only property that returns the language-specific description of this value as a string''') - - __swig_getmethods__["dynamic"] = __get_dynamic__ - if _newclass: dynamic = property(__get_dynamic__, None, doc='''A read only property that returns an lldb.SBValue that is created by finding the dynamic type of this value.''') - - __swig_getmethods__["location"] = GetLocation - if _newclass: location = property(GetLocation, None, doc='''A read only property that returns the location of this value as a string.''') - - __swig_getmethods__["target"] = GetTarget - if _newclass: target = property(GetTarget, None, doc='''A read only property that returns the lldb.SBTarget that this value is associated with.''') - - __swig_getmethods__["process"] = GetProcess - if _newclass: process = property(GetProcess, None, doc='''A read only property that returns the lldb.SBProcess that this value is associated with, the returned value might be invalid and should be tested.''') - - __swig_getmethods__["thread"] = GetThread - if _newclass: thread = property(GetThread, None, doc='''A read only property that returns the lldb.SBThread that this value is associated with, the returned value might be invalid and should be tested.''') - - __swig_getmethods__["frame"] = GetFrame - if _newclass: frame = property(GetFrame, None, doc='''A read only property that returns the lldb.SBFrame that this value is associated with, the returned value might be invalid and should be tested.''') - - __swig_getmethods__["num_children"] = GetNumChildren - if _newclass: num_children = property(GetNumChildren, None, doc='''A read only property that returns the number of child lldb.SBValues that this value has.''') - - __swig_getmethods__["unsigned"] = GetValueAsUnsigned - if _newclass: unsigned = property(GetValueAsUnsigned, None, doc='''A read only property that returns the value of this SBValue as an usigned integer.''') - - __swig_getmethods__["signed"] = GetValueAsSigned - if _newclass: signed = property(GetValueAsSigned, None, doc='''A read only property that returns the value of this SBValue as a signed integer.''') + children = property(get_value_child_list, None, doc='''A read only property that returns a list() of lldb.SBValue objects for the children of the value.''') + child = property(get_child_access_object, None, doc='''A read only property that returns an object that can access children of a variable by index (child_value = value.children[12]).''') + name = property(GetName, None, doc='''A read only property that returns the name of this value as a string.''') + type = property(GetType, None, doc='''A read only property that returns a lldb.SBType object that represents the type for this value.''') + size = property(GetByteSize, None, doc='''A read only property that returns the size in bytes of this value.''') + is_in_scope = property(IsInScope, None, doc='''A read only property that returns a boolean value that indicates whether this value is currently lexically in scope.''') + format = property(GetName, SetFormat, doc='''A read/write property that gets/sets the format used for lldb.SBValue().GetValue() for this value. See enumerations that start with "lldb.eFormat".''') + value = property(GetValue, SetValueFromCString, doc='''A read/write property that gets/sets value from a string.''') + value_type = property(GetValueType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eValueType") that represents the type of this value (local, argument, global, register, etc.).''') + changed = property(GetValueDidChange, None, doc='''A read only property that returns a boolean value that indicates if this value has changed since it was last updated.''') + data = property(GetData, None, doc='''A read only property that returns an lldb object (lldb.SBData) that represents the bytes that make up the value for this object.''') + load_addr = property(GetLoadAddress, None, doc='''A read only property that returns the load address of this value as an integer.''') + addr = property(GetAddress, None, doc='''A read only property that returns an lldb.SBAddress that represents the address of this value if it is in memory.''') + deref = property(Dereference, None, doc='''A read only property that returns an lldb.SBValue that is created by dereferencing this value.''') + address_of = property(AddressOf, None, doc='''A read only property that returns an lldb.SBValue that represents the address-of this value.''') + error = property(GetError, None, doc='''A read only property that returns the lldb.SBError that represents the error from the last time the variable value was calculated.''') + summary = property(GetSummary, None, doc='''A read only property that returns the summary for this value as a string''') + description = property(GetObjectDescription, None, doc='''A read only property that returns the language-specific description of this value as a string''') + dynamic = property(__get_dynamic__, None, doc='''A read only property that returns an lldb.SBValue that is created by finding the dynamic type of this value.''') + location = property(GetLocation, None, doc='''A read only property that returns the location of this value as a string.''') + target = property(GetTarget, None, doc='''A read only property that returns the lldb.SBTarget that this value is associated with.''') + process = property(GetProcess, None, doc='''A read only property that returns the lldb.SBProcess that this value is associated with, the returned value might be invalid and should be tested.''') + thread = property(GetThread, None, doc='''A read only property that returns the lldb.SBThread that this value is associated with, the returned value might be invalid and should be tested.''') + frame = property(GetFrame, None, doc='''A read only property that returns the lldb.SBFrame that this value is associated with, the returned value might be invalid and should be tested.''') + num_children = property(GetNumChildren, None, doc='''A read only property that returns the number of child lldb.SBValues that this value has.''') + unsigned = property(GetValueAsUnsigned, None, doc='''A read only property that returns the value of this SBValue as an usigned integer.''') + signed = property(GetValueAsSigned, None, doc='''A read only property that returns the value of this SBValue as a signed integer.''') def get_expr_path(self): s = SBStream() self.GetExpressionPath (s) return s.GetData() - __swig_getmethods__["path"] = get_expr_path - if _newclass: path = property(get_expr_path, None, doc='''A read only property that returns the expression path that one can use to reach this value in an expression.''') + path = property(get_expr_path, None, doc='''A read only property that returns the expression path that one can use to reach this value in an expression.''') def synthetic_child_from_expression(self, name, expr, options=None): if options is None: options = lldb.SBExpressionOptions() diff --git a/lldb/scripts/sed-sources b/lldb/scripts/sed-sources deleted file mode 100755 index c67fb3319adb199..000000000000000 --- a/lldb/scripts/sed-sources +++ /dev/null @@ -1,251 +0,0 @@ -#!/usr/bin/perl - -use strict; -use File::Find; -use File::Temp qw/ tempfile tempdir /; -use Getopt::Std; -use Pod::Usage; -use Text::Tabs; - -=head1 NAME - -B -- Performs multiple sed commands on files with the ability to expand or unexpand tabs. - -=head1 SYNOPSIS - -B [options] [file dir ...] - -=head1 DESCRIPTION - -Performs multiple sed commands (modify builtin %seds hash) on source files -or any sources in directories. If no arguments are given, STDIN will be used -as the source. If source files or directories are specified as arguments, -all files will be transformed and overwritten with new versions. Use the B<-p> -option to preview changes to STDOUT, or use the B<-b> option to make a backup -or the original files. - -=head1 OPTIONS - -=over - -=item B<-b> - -Backup original source file by appending ".bak" before overwriting with the -newly transformed file. - -=item B<-g> - -Display verbose debug logging. - -=item B<-e> - -Expand tabs to spaces (in addition to doing sed substitutions). - -=item B<-u> - -Unexpand spaces to tabs (in addition to doing sed substitutions). - -=item B<-p> - -Preview changes to STDOUT without modifying original source files. - -=item B<-r> - -Skip variants when doing multiple files (no _profile or _debug variants). - -=item B<-t N> - -Set the number of spaces per tab (default is 4) to use when expanding or -unexpanding. - -=back - -=head1 EXAMPLES - -# Recursively process all source files in the current working directory -# and subdirectories and also expand tabs to spaces. All source files -# will be overwritten with the newly transformed source files. - -% sed-sources -e $cwd - -# Recursively process all source files in the current working directory -# and subdirectories and also unexpand spaces to tabs and preview the -# results to STDOUT - -% sed-sources -p -u $cwd - -# Same as above except use 8 spaces per tab. - -% sed-sources -p -u -t8 $cwd - -=cut - - -our $opt_b = 0; # Backup original file? -our $opt_g = 0; # Verbose debug output? -our $opt_e = 0; # Expand tabs to spaces? -our $opt_h = 0; # Show help? -our $opt_m = 0; # Show help manpage style? -our $opt_p = 0; # Preview changes to STDOUT? -our $opt_t = 4; # Number of spaces per tab? -our $opt_u = 0; # Unexpand spaces to tabs? -getopts('eghmpt:u'); - -$opt_m and show_manpage(); -$opt_h and help(); - -our %seds = ( - '\s+$' => "\n", # Get rid of spaces at the end of a line - '^\s+$' => "\n", # Get rid spaces on lines that are all spaces -); - - -sub show_manpage { exit pod2usage( verbose => 2 ); }; -sub help { exit pod2usage( verbose => 3, noperldoc => 1 ); }; - - -#---------------------------------------------------------------------- -# process_opened_file_handle -#---------------------------------------------------------------------- -sub process_opened_file_handle -{ - my $in_fh = shift; - my $out_fh = shift; - - # Set the number of spaces per tab for expand/unexpand - $tabstop = $opt_t; - - while (my $line = <$in_fh>) - { - foreach my $key (keys %seds) - { - my $value = $seds{"$key"}; - $line =~ s/$key/$value/g; - } - if ($opt_e) { - print $out_fh expand $line; - } elsif ($opt_u) { - print $out_fh unexpand $line; - } else { - print $out_fh $line; - } - } -} - -#---------------------------------------------------------------------- -# process_file -#---------------------------------------------------------------------- -sub process_file -{ - my $in_path = shift; - if (-T $in_path) - { - my $out_fh; - my $out_path; - if ($opt_p) - { - # Preview to STDOUT - $out_fh = *STDOUT; - print "#---------------------------------------------------------------------- \n"; - print "# BEGIN: '$in_path'\n"; - print "#---------------------------------------------------------------------- \n"; - } - else - { - ($out_fh, $out_path) = tempfile(); - $opt_g and print "temporary for '$in_path' is '$out_path'\n"; - } - open (IN, "<$in_path") or die "error: can't open '$in_path' for reading: $!"; - process_opened_file_handle (*IN, $out_fh); - - - # Close our input file - close (IN); - - if ($opt_p) - { - print "#---------------------------------------------------------------------- \n"; - print "# END: '$in_path'\n"; - print "#---------------------------------------------------------------------- \n"; - print "\n\n"; - } - else - { - # Close the output file if it wasn't STDOUT - close ($out_fh); - - # Backup file if requested - if ($opt_b) - { - my $backup_command = "cp '$in_path' '$in_path.bak'"; - $opt_g and print "\% $backup_command\n"; - system ($backup_command); - } - - # Copy temp file over original - my $copy_command = "cp '$out_path' '$in_path'"; - $opt_g and print "\% $copy_command\n"; - system ($copy_command); - } - } -} - -our @valid_extensions = ( "h", "cpp", "c", "m", "mm" ); - -#---------------------------------------------------------------------- -# find_callback -#---------------------------------------------------------------------- -sub find_callback -{ - my $file = $_; - my $fullpath = $File::Find::name; - - foreach my $ext (@valid_extensions) - { - my $ext_regex = "\\.$ext\$"; - if ($fullpath =~ /$ext_regex/i) - { - print "processing: '$fullpath'\n"; - process_file ($fullpath); - return; - } - } - print " ignoring: '$fullpath'\n"; -} - - -#---------------------------------------------------------------------- -# main -#---------------------------------------------------------------------- -sub main -{ - if (@ARGV == 0) - { - # no args, take from STDIN and put to STDOUT - process_opened_file_handle (*STDIN, *STDOUT); - } - else - { - # Got args, any files we run into parse them, any directories - # we run into, search them for files - my $path; - foreach $path (@ARGV) - { - if (-f $path) - { - print "processing: '$path'\n"; - process_file ($path); - } - else - { - print " searching: '$path'\n"; - find(\&find_callback, $path); - } - } - } -} - - - -# call the main function -main(); diff --git a/lldb/scripts/shush b/lldb/scripts/shush deleted file mode 100755 index a2dd6c8c58d02d5..000000000000000 --- a/lldb/scripts/shush +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python - -import sys -import subprocess -import tempfile -import time -import os - -class Printer(object): - def __init__(self): - pass - - @classmethod - def write(self, message): - sys.stdout.write("%s\n" % message) - sys.stdout.flush() - -def command(): - return ' '.join(sys.argv[1:]) - -def tmpfile(suffix=None): - if suffix is None: suffix = "" - return tempfile.NamedTemporaryFile(prefix='shush', suffix=suffix, delete=False) - -def launch(cmd="/bin/ls", sin=None, sout=None): - class Process(object): - def __init__(self, p, i, o): - self.p = p - self.stdin = i - self.stdout = o - - def poll(self): - self.returncode = self.p.poll() - return self.returncode - - return Process(subprocess.Popen(cmd, shell=True, stdin=sin, stdout=sout, stderr=subprocess.STDOUT), sin, sout) - -def wait(p): - while p.poll() is None: - time.sleep(5) - Printer.write("still running @ %s..." % time.strftime("%Y%m%d%H%M%S")) # fool Xcode into thinking that I am doing something... - return p - -def exit(p): - code = p.returncode - if code != 0: - Printer.write("error: sucks to be you") - Printer.write("error: shushed process failed - go check %s for details" % (p.stdout.name)) - else: - Printer.write("shush: success - output is going away") - try: - os.remove(p.stdout.name) - finally: - pass - sys.exit(code) - -def main(): - out = tmpfile() - cmd = command() - Printer.write("shush: launching '%s' - std{out|err}=%s" % (cmd, out.name)) - p = wait(launch(cmd=cmd, sout=out)) - exit(p) - -main() diff --git a/lldb/scripts/sort-pbxproj.rb b/lldb/scripts/sort-pbxproj.rb deleted file mode 100755 index 78bb2a97e957c8e..000000000000000 --- a/lldb/scripts/sort-pbxproj.rb +++ /dev/null @@ -1,251 +0,0 @@ -#! /usr/bin/ruby -# - -# A script to impose order on the Xcode project file, to make merging -# across branches were many additional files are present, easier. - - - - -## Sort the BuildFile and FileReference sections of an Xcode project file, -## putting Apple/github-local files at the front to avoid merge conflicts. -# -## Run this in a directory with a project.pbxproj file. The sorted version -## is printed on standard output. -# - - -# Files with these words in the names will be sorted into a separate section; -# they are only present in some repositories and so having them intermixed -# can lead to merge failures. -segregated_filenames = ["Swift", "repl", "RPC"] - -def read_pbxproj(fn) - beginning = Array.new # All lines before "PBXBuildFile section" - files = Array.new # PBXBuildFile section lines -- sort these - middle = Array.new # All lines between PBXBuildFile and PBXFileReference sections - refs = Array.new # PBXFileReference section lines -- sort these - ending = Array.new # All lines after PBXFileReference section - - all_lines = File.readlines fn - - state = 1 # "begin" - all_lines.each do |l| - l.chomp - if state == 1 && l =~ /Begin PBXBuildFile section/ - beginning.push(l) - state = 2 - next - end - if state == 2 && l =~ /End PBXBuildFile section/ - middle.push(l) - state = 3 - next - end - if state == 3 && l =~ /Begin PBXFileReference section/ - middle.push(l) - state = 4 - next - end - if state == 4 && l =~ /End PBXFileReference section/ - ending.push(l) - state = 5 - next - end - - if state == 1 - beginning.push(l) - elsif state == 2 - files.push(l) - elsif state == 3 - middle.push(l) - elsif state == 4 - refs.push(l) - else - ending.push(l) - end - end - - return beginning, files, middle, refs, ending -end - -xcodeproj_filename = nil -[ "../lldb.xcodeproj/project.pbxproj", "lldb.xcodeproj/project.pbxproj", "project.pbxproj" ].each do |ent| - if File.exists?(ent) - xcodeproj_filename = ent - break - end -end - -if xcodeproj_filename.nil? - STDERR.puts "Could not find xcode project file to sort." - exit(1) -end - -beginning, files, middle, refs, ending = read_pbxproj(xcodeproj_filename) - - -### If we're given a "canonical" project.pbxproj file, get the uuid and fileref ids for -### every source file in this project.pbxproj and the canonical one, and fix any of -### the identifiers that don't match in the project file we're updating. -### this comes up when people add the file independently on different branches and it -### gets different identifiers. - -if ARGV.size() > 0 - canonical_pbxproj = nil - if ARGV.size == 2 && ARGV[0] == "--canonical" - canonical_pbxproj = ARGV[1] - elsif ARGV.size == 1 && ARGV[0] =~ /--canonical=(.+)/ - canonical_pbxproj = $1 - end - - if File.exists?(canonical_pbxproj) - ignore1, canon_files, ignore2, ignore3, ignore4 = read_pbxproj(canonical_pbxproj) - canon_files_by_filename = Hash.new { |k, v| k[v] = Array.new } - - canon_files.each do |l| - # 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; }; - - if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\sin.*?\*\/.*?fileRef = ([A-F0-9]{24})\s.*$/ - uuid = $1 - filename = $2 - fileref = $3 - canon_files_by_filename[filename].push({ :uuid => uuid, :fileref => fileref }) - end - end - - this_project_files = Hash.new { |k, v| k[v] = Array.new } - - files.each do |l| - # 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; }; - - if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\sin.*?\*\/.*?fileRef = ([A-F0-9]{24})\s.*$/ - uuid = $1 - filename = $2 - fileref = $3 - this_project_files[filename].push({ :uuid => uuid, :fileref => fileref }) - end - end - - this_project_files.keys.each do |fn| - next if !canon_files_by_filename.has_key?(fn) - next if this_project_files[fn].size() > 1 || canon_files_by_filename[fn].size() > 1 - this_ent = this_project_files[fn][0] - canon_ent = canon_files_by_filename[fn][0] - if this_ent[:uuid] != canon_ent[:uuid] - STDERR.puts "#{fn} has uuid #{this_ent[:uuid]} in this project file, #{canon_ent[:uuid]} in the canonical" - [ beginning, files, middle, refs, ending ].each do |arr| - arr.each { |l| l.gsub!(this_ent[:uuid], canon_ent[:uuid]) } - end - end - if this_ent[:fileref] != canon_ent[:fileref] - STDERR.puts "#{fn} has fileref #{this_ent[:fileref]} in this project file, #{canon_ent[:fileref]} in the canonical" - [ beginning, files, middle, refs, ending ].each do |arr| - arr.each { |l| l.gsub!(this_ent[:fileref], canon_ent[:fileref]) } - end - end - - end - end -end - - - -######### Sort FILES by the filename, putting swift etc in front - -# key is filename -# value is array of text lines for that filename in the FILES text -# (libraries like libz.dylib seem to occur multiple times, probably -# once each for different targets). - -files_by_filename = Hash.new { |k, v| k[v] = Array.new } - -files.each do |l| - # 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; }; - - if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\sin.*?\*\/.*?fileRef = ([A-F0-9]{24})\s.*$/ - uuid = $1 - filename = $2 - fileref = $3 - files_by_filename[filename].push(l) - end - -end - -# clear the FILES array - -files = Array.new - -# add the lines in sorted order. First swift/etc, then everything else. - -segregated_filenames.each do |keyword| - filenames = files_by_filename.keys - filenames.select {|l| l.include?(keyword) }.sort.each do |fn| - # re-add all the lines for the filename FN to our FILES array that we'll - # be outputting. - files_by_filename[fn].sort.each do |l| - files.push(l) - end - files_by_filename.delete(fn) - end -end - -# All segregated filenames have been added to the FILES output array. -# Now add all the other lines, sorted by filename. - -files_by_filename.keys.sort.each do |fn| - files_by_filename[fn].sort.each do |l| - files.push(l) - end -end - -######### Sort REFS by the filename, putting swift etc in front - -refs_by_filename = Hash.new { |k, v| k[v] = Array.new } -refs.each do |l| - # 2611FF12142D83060017FEA3 /* SBValue.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBValue.i; sourceTree = ""; }; - - if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\s\*\/.*$/ - uuid = $1 - filename = $2 - refs_by_filename[filename].push(l) - end -end - -# clear the refs array - -refs = Array.new - -# add the lines in sorted order. First swift/etc, then everything else. - - -segregated_filenames.each do |keyword| - filenames = refs_by_filename.keys - filenames.select {|l| l.include?(keyword) }.sort.each do |fn| - # re-add all the lines for the filename FN to our refs array that we'll - # be outputting. - refs_by_filename[fn].sort.each do |l| - refs.push(l) - end - refs_by_filename.delete(fn) - end -end - -# All segregated filenames have been added to the refs output array. -# Now add all the other lines, sorted by filename. - -refs_by_filename.keys.sort.each do |fn| - refs_by_filename[fn].sort.each do |l| - refs.push(l) - end -end - - - -####### output the sorted pbxproj - -File.open(xcodeproj_filename, 'w') do |outfile| - [ beginning, files, middle, refs, ending ].each do |arr| - arr.each {|l| outfile.puts l} - end -end diff --git a/lldb/source/API/CMakeLists.txt b/lldb/source/API/CMakeLists.txt index 8d2b7f06bef0d63..d93b8b5e381db23 100644 --- a/lldb/source/API/CMakeLists.txt +++ b/lldb/source/API/CMakeLists.txt @@ -9,8 +9,8 @@ if(NOT LLDB_DISABLE_PYTHON) set(lldb_python_wrapper ${lldb_scripts_dir}/LLDBWrapPython.cpp) endif() -if(LLDB_BUILD_FRAMEWORK AND LLVM_EXTERNALIZE_DEBUGINFO) - set(LLVM_EXTERNALIZE_DEBUGINFO_EXTENSION framework.dSYM) +if(LLDB_BUILD_FRAMEWORK) + set(option_install_prefix INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR}) endif() add_lldb_library(liblldb SHARED @@ -99,7 +99,9 @@ add_lldb_library(liblldb SHARED ${LLDB_ALL_PLUGINS} LINK_COMPONENTS Support - ) + + ${option_install_prefix} +) if (MSVC) set_source_files_properties(SBReproducer.cpp PROPERTIES COMPILE_FLAGS /bigobj) diff --git a/lldb/source/API/SBCommandInterpreter.cpp b/lldb/source/API/SBCommandInterpreter.cpp index c07dffce0baaf8a..98354c414a7689f 100644 --- a/lldb/source/API/SBCommandInterpreter.cpp +++ b/lldb/source/API/SBCommandInterpreter.cpp @@ -353,8 +353,6 @@ int SBCommandInterpreter::HandleCompletionWithDescriptions( current_line, cursor, last_char, match_start_point, max_return_elements, matches, descriptions); - int num_completions = 0; - // Sanity check the arguments that are passed in: cursor & last_char have to // be within the current_line. if (current_line == nullptr || cursor == nullptr || last_char == nullptr) @@ -368,20 +366,50 @@ int SBCommandInterpreter::HandleCompletionWithDescriptions( last_char - current_line > static_cast(current_line_size)) return 0; + if (!IsValid()) + return 0; - if (IsValid()) { - lldb_private::StringList lldb_matches, lldb_descriptions; - num_completions = m_opaque_ptr->HandleCompletion( - current_line, cursor, last_char, match_start_point, max_return_elements, - lldb_matches, lldb_descriptions); - - SBStringList temp_matches_list(&lldb_matches); - matches.AppendList(temp_matches_list); - SBStringList temp_descriptions_list(&lldb_descriptions); - descriptions.AppendList(temp_descriptions_list); + lldb_private::StringList lldb_matches, lldb_descriptions; + CompletionResult result; + CompletionRequest request(current_line, cursor - current_line, result); + m_opaque_ptr->HandleCompletion(request); + result.GetMatches(lldb_matches); + result.GetDescriptions(lldb_descriptions); + + // Make the result array indexed from 1 again by adding the 'common prefix' + // of all completions as element 0. This is done to emulate the old API. + if (request.GetParsedLine().GetArgumentCount() == 0) { + // If we got an empty string, insert nothing. + lldb_matches.InsertStringAtIndex(0, ""); + lldb_descriptions.InsertStringAtIndex(0, ""); + } else { + // Now figure out if there is a common substring, and if so put that in + // element 0, otherwise put an empty string in element 0. + std::string command_partial_str = request.GetCursorArgumentPrefix().str(); + + std::string common_prefix = lldb_matches.LongestCommonPrefix(); + const size_t partial_name_len = command_partial_str.size(); + common_prefix.erase(0, partial_name_len); + + // If we matched a unique single command, add a space... Only do this if + // the completer told us this was a complete word, however... + if (lldb_matches.GetSize() == 1) { + char quote_char = request.GetParsedArg().quote; + common_prefix = + Args::EscapeLLDBCommandArgument(common_prefix, quote_char); + if (request.GetParsedArg().IsQuoted()) + common_prefix.push_back(quote_char); + common_prefix.push_back(' '); + } + lldb_matches.InsertStringAtIndex(0, common_prefix.c_str()); + lldb_descriptions.InsertStringAtIndex(0, ""); } - return num_completions; + SBStringList temp_matches_list(&lldb_matches); + matches.AppendList(temp_matches_list); + SBStringList temp_descriptions_list(&lldb_descriptions); + descriptions.AppendList(temp_descriptions_list); + return result.GetNumberOfResults(); } int SBCommandInterpreter::HandleCompletionWithDescriptions( diff --git a/lldb/source/API/SBCommandReturnObject.cpp b/lldb/source/API/SBCommandReturnObject.cpp index 94e89916f7f6d8a..58740eeaade5d12 100644 --- a/lldb/source/API/SBCommandReturnObject.cpp +++ b/lldb/source/API/SBCommandReturnObject.cpp @@ -72,10 +72,8 @@ const char *SBCommandReturnObject::GetOutput() { LLDB_RECORD_METHOD_NO_ARGS(const char *, SBCommandReturnObject, GetOutput); if (m_opaque_up) { - llvm::StringRef output = m_opaque_up->GetOutputData(); - ConstString result(output.empty() ? llvm::StringRef("") : output); - - return result.AsCString(); + ConstString output(m_opaque_up->GetOutputData()); + return output.AsCString(/*value_if_empty*/ ""); } return nullptr; @@ -85,9 +83,8 @@ const char *SBCommandReturnObject::GetError() { LLDB_RECORD_METHOD_NO_ARGS(const char *, SBCommandReturnObject, GetError); if (m_opaque_up) { - llvm::StringRef output = m_opaque_up->GetErrorData(); - ConstString result(output.empty() ? llvm::StringRef("") : output); - return result.AsCString(); + ConstString output(m_opaque_up->GetErrorData()); + return output.AsCString(/*value_if_empty*/ ""); } return nullptr; diff --git a/lldb/source/API/SBCompileUnit.cpp b/lldb/source/API/SBCompileUnit.cpp index c9ca70645d958f5..581bda363507395 100644 --- a/lldb/source/API/SBCompileUnit.cpp +++ b/lldb/source/API/SBCompileUnit.cpp @@ -14,8 +14,9 @@ #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/LineEntry.h" #include "lldb/Symbol/LineTable.h" -#include "lldb/Symbol/SymbolVendor.h" +#include "lldb/Symbol/SymbolFile.h" #include "lldb/Symbol/Type.h" +#include "lldb/Symbol/TypeList.h" using namespace lldb; using namespace lldb_private; @@ -137,13 +138,13 @@ lldb::SBTypeList SBCompileUnit::GetTypes(uint32_t type_mask) { if (!module_sp) return LLDB_RECORD_RESULT(sb_type_list); - SymbolVendor *vendor = module_sp->GetSymbolVendor(); - if (!vendor) + SymbolFile *symfile = module_sp->GetSymbolFile(); + if (!symfile) return LLDB_RECORD_RESULT(sb_type_list); TypeClass type_class = static_cast(type_mask); TypeList type_list; - vendor->GetTypes(m_opaque_ptr, type_class, type_list); + symfile->GetTypes(m_opaque_ptr, type_class, type_list); sb_type_list.m_opaque_up->Append(type_list); return LLDB_RECORD_RESULT(sb_type_list); } diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp index 634c4a9295953a2..2b962e3e70b01ea 100644 --- a/lldb/source/API/SBDebugger.cpp +++ b/lldb/source/API/SBDebugger.cpp @@ -624,6 +624,13 @@ SBStructuredData SBDebugger::GetBuildConfiguration() { AddBoolConfigEntry( *config_up, "xml", XMLDocument::XMLEnabled(), "A boolean value that indicates if XML support is enabled in LLDB"); + bool have_curses = true; +#ifdef LLDB_DISABLE_CURSES + have_curses = false; +#endif + AddBoolConfigEntry( + *config_up, "curses", have_curses, + "A boolean value that indicates if curses support is enabled in LLDB"); AddLLVMTargets(*config_up); SBStructuredData data; @@ -680,13 +687,13 @@ lldb::SBTarget SBDebugger::CreateTarget(const char *filename, } Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - if (log) - log->Printf("SBDebugger(%p)::CreateTarget (filename=\"%s\", triple=%s, " - "platform_name=%s, add_dependent_modules=%u, error=%s) => " - "SBTarget(%p)", - static_cast(m_opaque_sp.get()), filename, target_triple, - platform_name, add_dependent_modules, sb_error.GetCString(), - static_cast(target_sp.get())); + LLDB_LOGF(log, + "SBDebugger(%p)::CreateTarget (filename=\"%s\", triple=%s, " + "platform_name=%s, add_dependent_modules=%u, error=%s) => " + "SBTarget(%p)", + static_cast(m_opaque_sp.get()), filename, target_triple, + platform_name, add_dependent_modules, sb_error.GetCString(), + static_cast(target_sp.get())); return LLDB_RECORD_RESULT(sb_target); } @@ -710,11 +717,11 @@ SBDebugger::CreateTargetWithFileAndTargetTriple(const char *filename, } Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - if (log) - log->Printf("SBDebugger(%p)::CreateTargetWithFileAndTargetTriple " - "(filename=\"%s\", triple=%s) => SBTarget(%p)", - static_cast(m_opaque_sp.get()), filename, target_triple, - static_cast(target_sp.get())); + LLDB_LOGF(log, + "SBDebugger(%p)::CreateTargetWithFileAndTargetTriple " + "(filename=\"%s\", triple=%s) => SBTarget(%p)", + static_cast(m_opaque_sp.get()), filename, target_triple, + static_cast(target_sp.get())); return LLDB_RECORD_RESULT(sb_target); } @@ -743,11 +750,11 @@ SBTarget SBDebugger::CreateTargetWithFileAndArch(const char *filename, } } - if (log) - log->Printf("SBDebugger(%p)::CreateTargetWithFileAndArch (filename=\"%s\", " - "arch=%s) => SBTarget(%p)", - static_cast(m_opaque_sp.get()), filename, arch_cstr, - static_cast(target_sp.get())); + LLDB_LOGF(log, + "SBDebugger(%p)::CreateTargetWithFileAndArch (filename=\"%s\", " + "arch=%s) => SBTarget(%p)", + static_cast(m_opaque_sp.get()), filename, arch_cstr, + static_cast(target_sp.get())); return LLDB_RECORD_RESULT(sb_target); } @@ -772,11 +779,10 @@ SBTarget SBDebugger::CreateTarget(const char *filename) { } } Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - if (log) - log->Printf( - "SBDebugger(%p)::CreateTarget (filename=\"%s\") => SBTarget(%p)", - static_cast(m_opaque_sp.get()), filename, - static_cast(target_sp.get())); + LLDB_LOGF(log, + "SBDebugger(%p)::CreateTarget (filename=\"%s\") => SBTarget(%p)", + static_cast(m_opaque_sp.get()), filename, + static_cast(target_sp.get())); return LLDB_RECORD_RESULT(sb_target); } @@ -788,11 +794,9 @@ SBTarget SBDebugger::GetDummyTarget() { sb_target.SetSP(m_opaque_sp->GetDummyTarget()->shared_from_this()); } Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - if (log) - log->Printf( - "SBDebugger(%p)::GetDummyTarget() => SBTarget(%p)", - static_cast(m_opaque_sp.get()), - static_cast(sb_target.GetSP().get())); + LLDB_LOGF(log, "SBDebugger(%p)::GetDummyTarget() => SBTarget(%p)", + static_cast(m_opaque_sp.get()), + static_cast(sb_target.GetSP().get())); return LLDB_RECORD_RESULT(sb_target); } @@ -814,10 +818,9 @@ bool SBDebugger::DeleteTarget(lldb::SBTarget &target) { } Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - if (log) - log->Printf("SBDebugger(%p)::DeleteTarget (SBTarget(%p)) => %i", - static_cast(m_opaque_sp.get()), - static_cast(target.m_opaque_sp.get()), result); + LLDB_LOGF(log, "SBDebugger(%p)::DeleteTarget (SBTarget(%p)) => %i", + static_cast(m_opaque_sp.get()), + static_cast(target.m_opaque_sp.get()), result); return result; } @@ -914,9 +917,9 @@ SBTarget SBDebugger::GetSelectedTarget() { if (log) { SBStream sstr; sb_target.GetDescription(sstr, eDescriptionLevelBrief); - log->Printf("SBDebugger(%p)::GetSelectedTarget () => SBTarget(%p): %s", - static_cast(m_opaque_sp.get()), - static_cast(target_sp.get()), sstr.GetData()); + LLDB_LOGF(log, "SBDebugger(%p)::GetSelectedTarget () => SBTarget(%p): %s", + static_cast(m_opaque_sp.get()), + static_cast(target_sp.get()), sstr.GetData()); } return LLDB_RECORD_RESULT(sb_target); @@ -935,9 +938,9 @@ void SBDebugger::SetSelectedTarget(SBTarget &sb_target) { if (log) { SBStream sstr; sb_target.GetDescription(sstr, eDescriptionLevelBrief); - log->Printf("SBDebugger(%p)::SetSelectedTarget () => SBTarget(%p): %s", - static_cast(m_opaque_sp.get()), - static_cast(target_sp.get()), sstr.GetData()); + LLDB_LOGF(log, "SBDebugger(%p)::SetSelectedTarget () => SBTarget(%p): %s", + static_cast(m_opaque_sp.get()), + static_cast(target_sp.get()), sstr.GetData()); } } @@ -951,11 +954,10 @@ SBPlatform SBDebugger::GetSelectedPlatform() { if (debugger_sp) { sb_platform.SetSP(debugger_sp->GetPlatformList().GetSelectedPlatform()); } - if (log) - log->Printf("SBDebugger(%p)::GetSelectedPlatform () => SBPlatform(%p): %s", - static_cast(m_opaque_sp.get()), - static_cast(sb_platform.GetSP().get()), - sb_platform.GetName()); + LLDB_LOGF(log, "SBDebugger(%p)::GetSelectedPlatform () => SBPlatform(%p): %s", + static_cast(m_opaque_sp.get()), + static_cast(sb_platform.GetSP().get()), + sb_platform.GetName()); return LLDB_RECORD_RESULT(sb_platform); } @@ -970,11 +972,10 @@ void SBDebugger::SetSelectedPlatform(SBPlatform &sb_platform) { debugger_sp->GetPlatformList().SetSelectedPlatform(sb_platform.GetSP()); } - if (log) - log->Printf("SBDebugger(%p)::SetSelectedPlatform (SBPlatform(%p) %s)", - static_cast(m_opaque_sp.get()), - static_cast(sb_platform.GetSP().get()), - sb_platform.GetName()); + LLDB_LOGF(log, "SBDebugger(%p)::SetSelectedPlatform (SBPlatform(%p) %s)", + static_cast(m_opaque_sp.get()), + static_cast(sb_platform.GetSP().get()), + sb_platform.GetName()); } uint32_t SBDebugger::GetNumPlatforms() { @@ -1062,7 +1063,7 @@ void SBDebugger::DispatchInput(const void *data, size_t data_len) { // Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); // // if (log) - // log->Printf ("SBDebugger(%p)::DispatchInput (data=\"%.*s\", + // LLDB_LOGF(log, "SBDebugger(%p)::DispatchInput (data=\"%.*s\", // size_t=%" PRIu64 ")", // m_opaque_sp.get(), // (int) data_len, @@ -1246,10 +1247,9 @@ const char *SBDebugger::GetPrompt() const { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API)); - if (log) - log->Printf("SBDebugger(%p)::GetPrompt () => \"%s\"", - static_cast(m_opaque_sp.get()), - (m_opaque_sp ? m_opaque_sp->GetPrompt().str().c_str() : "")); + LLDB_LOGF(log, "SBDebugger(%p)::GetPrompt () => \"%s\"", + static_cast(m_opaque_sp.get()), + (m_opaque_sp ? m_opaque_sp->GetPrompt().str().c_str() : "")); return (m_opaque_sp ? ConstString(m_opaque_sp->GetPrompt()).GetCString() : nullptr); @@ -1374,7 +1374,8 @@ bool SBDebugger::SetCurrentPlatformSDKRoot(const char *sysroot) { if (platform_sp) { if (log && sysroot) - log->Printf("SBDebugger::SetCurrentPlatformSDKRoot (\"%s\")", sysroot); + LLDB_LOGF(log, "SBDebugger::SetCurrentPlatformSDKRoot (\"%s\")", + sysroot); platform_sp->SetSDKRootDirectory(ConstString(sysroot)); return true; } diff --git a/lldb/source/API/SBFrame.cpp b/lldb/source/API/SBFrame.cpp index 9268f0f9bdbf988..078d8bf2007e99a 100644 --- a/lldb/source/API/SBFrame.cpp +++ b/lldb/source/API/SBFrame.cpp @@ -1120,10 +1120,10 @@ lldb::SBValue SBFrame::EvaluateExpression(const char *expr, } } - if (expr_log) - expr_log->Printf("** [SBFrame::EvaluateExpression] Expression result is " - "%s, summary %s **", - expr_result.GetValue(), expr_result.GetSummary()); + LLDB_LOGF(expr_log, + "** [SBFrame::EvaluateExpression] Expression result is " + "%s, summary %s **", + expr_result.GetValue(), expr_result.GetSummary()); return LLDB_RECORD_RESULT(expr_result); } diff --git a/lldb/source/API/SBHostOS.cpp b/lldb/source/API/SBHostOS.cpp index b5464c4e7df71b9..c3c92e68140d4c1 100644 --- a/lldb/source/API/SBHostOS.cpp +++ b/lldb/source/API/SBHostOS.cpp @@ -107,10 +107,17 @@ lldb::thread_t SBHostOS::ThreadCreate(const char *name, LLDB_RECORD_DUMMY(lldb::thread_t, SBHostOS, ThreadCreate, (lldb::thread_func_t, void *, SBError *), name, thread_function, thread_arg, error_ptr); - HostThread thread( - ThreadLauncher::LaunchThread(name, thread_function, thread_arg, - error_ptr ? error_ptr->get() : nullptr)); - return thread.Release(); + llvm::Expected thread = + ThreadLauncher::LaunchThread(name, thread_function, thread_arg); + if (!thread) { + if (error_ptr) + error_ptr->SetError(Status(thread.takeError())); + else + llvm::consumeError(thread.takeError()); + return LLDB_INVALID_HOST_THREAD; + } + + return thread->Release(); } void SBHostOS::ThreadCreated(const char *name) { diff --git a/lldb/source/API/SBModule.cpp b/lldb/source/API/SBModule.cpp index 4bd32bce1c5324f..253a5393486eec2 100644 --- a/lldb/source/API/SBModule.cpp +++ b/lldb/source/API/SBModule.cpp @@ -20,7 +20,6 @@ #include "lldb/Core/ValueObjectVariable.h" #include "lldb/Symbol/ObjectFile.h" #include "lldb/Symbol/SymbolFile.h" -#include "lldb/Symbol/SymbolVendor.h" #include "lldb/Symbol/Symtab.h" #include "lldb/Symbol/TypeSystem.h" #include "lldb/Symbol/VariableList.h" @@ -290,11 +289,8 @@ SBSymbolContextList SBModule::FindCompileUnits(const SBFileSpec &sb_file_spec) { } static Symtab *GetUnifiedSymbolTable(const lldb::ModuleSP &module_sp) { - if (module_sp) { - SymbolVendor *symbols = module_sp->GetSymbolVendor(); - if (symbols) - return symbols->GetSymtab(); - } + if (module_sp) + return module_sp->GetSymtab(); return nullptr; } @@ -302,11 +298,8 @@ size_t SBModule::GetNumSymbols() { LLDB_RECORD_METHOD_NO_ARGS(size_t, SBModule, GetNumSymbols); ModuleSP module_sp(GetSP()); - if (module_sp) { - Symtab *symtab = GetUnifiedSymbolTable(module_sp); - if (symtab) - return symtab->GetNumSymbols(); - } + if (Symtab *symtab = GetUnifiedSymbolTable(module_sp)) + return symtab->GetNumSymbols(); return 0; } @@ -372,7 +365,7 @@ size_t SBModule::GetNumSections() { ModuleSP module_sp(GetSP()); if (module_sp) { // Give the symbol vendor a chance to add to the unified section list. - module_sp->GetSymbolVendor(); + module_sp->GetSymbolFile(); SectionList *section_list = module_sp->GetSectionList(); if (section_list) return section_list->GetSize(); @@ -388,7 +381,7 @@ SBSection SBModule::GetSectionAtIndex(size_t idx) { ModuleSP module_sp(GetSP()); if (module_sp) { // Give the symbol vendor a chance to add to the unified section list. - module_sp->GetSymbolVendor(); + module_sp->GetSymbolFile(); SectionList *section_list = module_sp->GetSectionList(); if (section_list) @@ -468,10 +461,13 @@ lldb::SBType SBModule::FindFirstType(const char *name_cstr) { sb_type = SBType(module_sp->FindFirstType(sc, name, exact_match)); if (!sb_type.IsValid()) { - TypeSystem *type_system = + auto type_system_or_err = module_sp->GetTypeSystemForLanguage(eLanguageTypeC); - if (type_system) - sb_type = SBType(type_system->GetBuiltinTypeByName(name)); + if (auto err = type_system_or_err.takeError()) { + llvm::consumeError(std::move(err)); + return LLDB_RECORD_RESULT(SBType()); + } + sb_type = SBType(type_system_or_err->GetBuiltinTypeByName(name)); } } return LLDB_RECORD_RESULT(sb_type); @@ -483,10 +479,14 @@ lldb::SBType SBModule::GetBasicType(lldb::BasicType type) { ModuleSP module_sp(GetSP()); if (module_sp) { - TypeSystem *type_system = + auto type_system_or_err = module_sp->GetTypeSystemForLanguage(eLanguageTypeC); - if (type_system) - return LLDB_RECORD_RESULT(SBType(type_system->GetBasicTypeFromAST(type))); + if (auto err = type_system_or_err.takeError()) { + llvm::consumeError(std::move(err)); + } else { + return LLDB_RECORD_RESULT( + SBType(type_system_or_err->GetBasicTypeFromAST(type))); + } } return LLDB_RECORD_RESULT(SBType()); } @@ -513,10 +513,13 @@ lldb::SBTypeList SBModule::FindTypes(const char *type) { retval.Append(SBType(type_sp)); } } else { - TypeSystem *type_system = + auto type_system_or_err = module_sp->GetTypeSystemForLanguage(eLanguageTypeC); - if (type_system) { - CompilerType compiler_type = type_system->GetBuiltinTypeByName(name); + if (auto err = type_system_or_err.takeError()) { + llvm::consumeError(std::move(err)); + } else { + CompilerType compiler_type = + type_system_or_err->GetBuiltinTypeByName(name); if (compiler_type) retval.Append(SBType(compiler_type)); } @@ -532,9 +535,8 @@ lldb::SBType SBModule::GetTypeByID(lldb::user_id_t uid) { ModuleSP module_sp(GetSP()); if (module_sp) { - SymbolVendor *vendor = module_sp->GetSymbolVendor(); - if (vendor) { - Type *type_ptr = vendor->ResolveTypeUID(uid); + if (SymbolFile *symfile = module_sp->GetSymbolFile()) { + Type *type_ptr = symfile->ResolveTypeUID(uid); if (type_ptr) return LLDB_RECORD_RESULT(SBType(type_ptr->shared_from_this())); } @@ -551,13 +553,13 @@ lldb::SBTypeList SBModule::GetTypes(uint32_t type_mask) { ModuleSP module_sp(GetSP()); if (!module_sp) return LLDB_RECORD_RESULT(sb_type_list); - SymbolVendor *vendor = module_sp->GetSymbolVendor(); - if (!vendor) + SymbolFile *symfile = module_sp->GetSymbolFile(); + if (!symfile) return LLDB_RECORD_RESULT(sb_type_list); TypeClass type_class = static_cast(type_mask); TypeList type_list; - vendor->GetTypes(nullptr, type_class, type_list); + symfile->GetTypes(nullptr, type_class, type_list); sb_type_list.m_opaque_up->Append(type_list); return LLDB_RECORD_RESULT(sb_type_list); } @@ -571,7 +573,7 @@ SBSection SBModule::FindSection(const char *sect_name) { ModuleSP module_sp(GetSP()); if (sect_name && module_sp) { // Give the symbol vendor a chance to add to the unified section list. - module_sp->GetSymbolVendor(); + module_sp->GetSymbolFile(); SectionList *section_list = module_sp->GetSectionList(); if (section_list) { ConstString const_sect_name(sect_name); @@ -653,9 +655,8 @@ lldb::SBFileSpec SBModule::GetSymbolFileSpec() const { lldb::SBFileSpec sb_file_spec; ModuleSP module_sp(GetSP()); if (module_sp) { - SymbolVendor *symbol_vendor_ptr = module_sp->GetSymbolVendor(); - if (symbol_vendor_ptr) - sb_file_spec.SetFileSpec(symbol_vendor_ptr->GetMainFileSpec()); + if (SymbolFile *symfile = module_sp->GetSymbolFile()) + sb_file_spec.SetFileSpec(symfile->GetObjectFile()->GetFileSpec()); } return LLDB_RECORD_RESULT(sb_file_spec); } diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp index b1ad0d8f58b5ee6..9d04fdb561dc9fa 100644 --- a/lldb/source/API/SBTarget.cpp +++ b/lldb/source/API/SBTarget.cpp @@ -44,11 +44,11 @@ #include "lldb/Core/ValueObjectList.h" #include "lldb/Core/ValueObjectVariable.h" #include "lldb/Host/Host.h" -#include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/DeclVendor.h" #include "lldb/Symbol/ObjectFile.h" #include "lldb/Symbol/SymbolFile.h" #include "lldb/Symbol/SymbolVendor.h" +#include "lldb/Symbol/TypeSystem.h" #include "lldb/Symbol/VariableList.h" #include "lldb/Target/ABI.h" #include "lldb/Target/Language.h" @@ -960,8 +960,8 @@ lldb::SBBreakpoint SBTarget::BreakpointCreateByRegex( const LazyBool skip_prologue = eLazyBoolCalculate; sb_bp = target_sp->CreateFuncRegexBreakpoint( - module_list.get(), comp_unit_list.get(), regexp, symbol_language, - skip_prologue, internal, hardware); + module_list.get(), comp_unit_list.get(), std::move(regexp), + symbol_language, skip_prologue, internal, hardware); } return LLDB_RECORD_RESULT(sb_bp); @@ -1061,8 +1061,8 @@ lldb::SBBreakpoint SBTarget::BreakpointCreateBySourceRegex( } sb_bp = target_sp->CreateSourceRegexBreakpoint( - module_list.get(), source_file_list.get(), func_names_set, regexp, - false, hardware, move_to_nearest_code); + module_list.get(), source_file_list.get(), func_names_set, + std::move(regexp), false, hardware, move_to_nearest_code); } return LLDB_RECORD_RESULT(sb_bp); @@ -1847,28 +1847,22 @@ lldb::SBType SBTarget::FindFirstType(const char *typename_cstr) { } // Didn't find the type in the symbols; Try the loaded language runtimes - // FIXME: This depends on clang, but should be able to support any - // TypeSystem/compiler. if (auto process_sp = target_sp->GetProcessSP()) { for (auto *runtime : process_sp->GetLanguageRuntimes()) { if (auto vendor = runtime->GetDeclVendor()) { - std::vector decls; - if (vendor->FindDecls(const_typename, /*append*/ true, - /*max_matches*/ 1, decls) > 0) { - if (CompilerType type = - ClangASTContext::GetTypeForDecl(decls.front())) - return LLDB_RECORD_RESULT(SBType(type)); - } + auto types = vendor->FindTypes(const_typename, /*max_matches*/ 1); + if (!types.empty()) + return LLDB_RECORD_RESULT(SBType(types.front())); } } } // No matches, search for basic typename matches - ClangASTContext *clang_ast = target_sp->GetScratchClangASTContext(); - if (clang_ast) - return LLDB_RECORD_RESULT(SBType(ClangASTContext::GetBasicType( - clang_ast->getASTContext(), const_typename))); + for (auto *type_system : target_sp->GetScratchTypeSystems()) + if (auto type = type_system->GetBuiltinTypeByName(const_typename)) + return LLDB_RECORD_RESULT(SBType(type)); } + return LLDB_RECORD_RESULT(SBType()); } @@ -1878,10 +1872,9 @@ SBType SBTarget::GetBasicType(lldb::BasicType type) { TargetSP target_sp(GetSP()); if (target_sp) { - ClangASTContext *clang_ast = target_sp->GetScratchClangASTContext(); - if (clang_ast) - return LLDB_RECORD_RESULT(SBType( - ClangASTContext::GetBasicType(clang_ast->getASTContext(), type))); + for (auto *type_system : target_sp->GetScratchTypeSystems()) + if (auto compiler_type = type_system->GetBasicTypeFromAST(type)) + return LLDB_RECORD_RESULT(SBType(compiler_type)); } return LLDB_RECORD_RESULT(SBType()); } @@ -1911,29 +1904,23 @@ lldb::SBTypeList SBTarget::FindTypes(const char *typename_cstr) { } // Try the loaded language runtimes - // FIXME: This depends on clang, but should be able to support any - // TypeSystem/compiler. if (auto process_sp = target_sp->GetProcessSP()) { for (auto *runtime : process_sp->GetLanguageRuntimes()) { if (auto *vendor = runtime->GetDeclVendor()) { - std::vector decls; - if (vendor->FindDecls(const_typename, /*append*/ true, - /*max_matches*/ 1, decls) > 0) { - for (auto *decl : decls) { - if (CompilerType type = ClangASTContext::GetTypeForDecl(decl)) - sb_type_list.Append(SBType(type)); - } - } + auto types = + vendor->FindTypes(const_typename, /*max_matches*/ UINT32_MAX); + for (auto type : types) + sb_type_list.Append(SBType(type)); } } } if (sb_type_list.GetSize() == 0) { // No matches, search for basic typename matches - ClangASTContext *clang_ast = target_sp->GetScratchClangASTContext(); - if (clang_ast) - sb_type_list.Append(SBType(ClangASTContext::GetBasicType( - clang_ast->getASTContext(), const_typename))); + for (auto *type_system : target_sp->GetScratchTypeSystems()) + if (auto compiler_type = + type_system->GetBuiltinTypeByName(const_typename)) + sb_type_list.Append(SBType(compiler_type)); } } return LLDB_RECORD_RESULT(sb_type_list); @@ -2367,10 +2354,10 @@ lldb::SBValue SBTarget::EvaluateExpression(const char *expr, expr_result.SetSP(expr_value_sp, options.GetFetchDynamicValue()); } } - if (expr_log) - expr_log->Printf("** [SBTarget::EvaluateExpression] Expression result is " - "%s, summary %s **", - expr_result.GetValue(), expr_result.GetSummary()); + LLDB_LOGF(expr_log, + "** [SBTarget::EvaluateExpression] Expression result is " + "%s, summary %s **", + expr_result.GetValue(), expr_result.GetSummary()); return LLDB_RECORD_RESULT(expr_result); } diff --git a/lldb/source/API/SBTypeCategory.cpp b/lldb/source/API/SBTypeCategory.cpp index 43d5a3ab140fb69..1e4496575098bd2 100644 --- a/lldb/source/API/SBTypeCategory.cpp +++ b/lldb/source/API/SBTypeCategory.cpp @@ -364,8 +364,8 @@ bool SBTypeCategory::AddTypeFormat(SBTypeNameSpecifier type_name, if (type_name.IsRegex()) m_opaque_sp->GetRegexTypeFormatsContainer()->Add( - lldb::RegularExpressionSP(new RegularExpression( - llvm::StringRef::withNullAsEmpty(type_name.GetName()))), + RegularExpression( + llvm::StringRef::withNullAsEmpty(type_name.GetName())), format.GetSP()); else m_opaque_sp->GetTypeFormatsContainer()->Add( @@ -443,8 +443,8 @@ bool SBTypeCategory::AddTypeSummary(SBTypeNameSpecifier type_name, if (type_name.IsRegex()) m_opaque_sp->GetRegexTypeSummariesContainer()->Add( - lldb::RegularExpressionSP(new RegularExpression( - llvm::StringRef::withNullAsEmpty(type_name.GetName()))), + RegularExpression( + llvm::StringRef::withNullAsEmpty(type_name.GetName())), summary.GetSP()); else m_opaque_sp->GetTypeSummariesContainer()->Add( @@ -488,8 +488,8 @@ bool SBTypeCategory::AddTypeFilter(SBTypeNameSpecifier type_name, if (type_name.IsRegex()) m_opaque_sp->GetRegexTypeFiltersContainer()->Add( - lldb::RegularExpressionSP(new RegularExpression( - llvm::StringRef::withNullAsEmpty(type_name.GetName()))), + RegularExpression( + llvm::StringRef::withNullAsEmpty(type_name.GetName())), filter.GetSP()); else m_opaque_sp->GetTypeFiltersContainer()->Add( @@ -567,8 +567,8 @@ bool SBTypeCategory::AddTypeSynthetic(SBTypeNameSpecifier type_name, if (type_name.IsRegex()) m_opaque_sp->GetRegexTypeSyntheticsContainer()->Add( - lldb::RegularExpressionSP(new RegularExpression( - llvm::StringRef::withNullAsEmpty(type_name.GetName()))), + RegularExpression( + llvm::StringRef::withNullAsEmpty(type_name.GetName())), synth.GetSP()); else m_opaque_sp->GetTypeSyntheticsContainer()->Add( diff --git a/lldb/source/Breakpoint/Breakpoint.cpp b/lldb/source/Breakpoint/Breakpoint.cpp index 3c3841949b91dd5..a112542803c47f2 100644 --- a/lldb/source/Breakpoint/Breakpoint.cpp +++ b/lldb/source/Breakpoint/Breakpoint.cpp @@ -496,10 +496,10 @@ void Breakpoint::ClearAllBreakpointSites() { void Breakpoint::ModulesChanged(ModuleList &module_list, bool load, bool delete_locations) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS)); - if (log) - log->Printf("Breakpoint::ModulesChanged: num_modules: %zu load: %i " - "delete_locations: %i\n", - module_list.GetSize(), load, delete_locations); + LLDB_LOGF(log, + "Breakpoint::ModulesChanged: num_modules: %zu load: %i " + "delete_locations: %i\n", + module_list.GetSize(), load, delete_locations); std::lock_guard guard(module_list.GetMutex()); if (load) { @@ -550,10 +550,10 @@ void Breakpoint::ModulesChanged(ModuleList &module_list, bool load, seen = true; if (!break_loc_sp->ResolveBreakpointSite()) { - if (log) - log->Printf("Warning: could not set breakpoint site for " - "breakpoint location %d of breakpoint %d.\n", - break_loc_sp->GetID(), GetID()); + LLDB_LOGF(log, + "Warning: could not set breakpoint site for " + "breakpoint location %d of breakpoint %d.\n", + break_loc_sp->GetID(), GetID()); } } } @@ -659,9 +659,8 @@ static bool SymbolContextsMightBeEquivalent(SymbolContext &old_sc, void Breakpoint::ModuleReplaced(ModuleSP old_module_sp, ModuleSP new_module_sp) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS)); - if (log) - log->Printf("Breakpoint::ModulesReplaced for %s\n", - old_module_sp->GetSpecificationDescription().c_str()); + LLDB_LOGF(log, "Breakpoint::ModulesReplaced for %s\n", + old_module_sp->GetSpecificationDescription().c_str()); // First find all the locations that are in the old module BreakpointLocationCollection old_break_locs; diff --git a/lldb/source/Breakpoint/BreakpointLocation.cpp b/lldb/source/Breakpoint/BreakpointLocation.cpp index b718e2aeea5c831..46b8f25c5668254 100644 --- a/lldb/source/Breakpoint/BreakpointLocation.cpp +++ b/lldb/source/Breakpoint/BreakpointLocation.cpp @@ -257,9 +257,8 @@ bool BreakpointLocation::ConditionSaysStop(ExecutionContext &exe_ctx, condition_text, llvm::StringRef(), language, Expression::eResultTypeAny, EvaluateExpressionOptions(), nullptr, error)); if (error.Fail()) { - if (log) - log->Printf("Error getting condition expression: %s.", - error.AsCString()); + LLDB_LOGF(log, "Error getting condition expression: %s.", + error.AsCString()); m_user_expression_sp.reset(); return true; } @@ -312,8 +311,8 @@ bool BreakpointLocation::ConditionSaysStop(ExecutionContext &exe_ctx, ret = result_value_sp->IsLogicalTrue(error); if (log) { if (error.Success()) { - log->Printf("Condition successfully evaluated, result is %s.\n", - ret ? "true" : "false"); + LLDB_LOGF(log, "Condition successfully evaluated, result is %s.\n", + ret ? "true" : "false"); } else { error.SetErrorString( "Failed to get an integer result from the expression"); @@ -408,8 +407,8 @@ bool BreakpointLocation::ShouldStop(StoppointCallbackContext *context) { if (log) { StreamString s; GetDescription(&s, lldb::eDescriptionLevelVerbose); - log->Printf("Hit breakpoint location: %s, %s.\n", s.GetData(), - should_stop ? "stopping" : "continuing"); + LLDB_LOGF(log, "Hit breakpoint location: %s, %s.\n", s.GetData(), + should_stop ? "stopping" : "continuing"); } return should_stop; diff --git a/lldb/source/Breakpoint/BreakpointResolver.cpp b/lldb/source/Breakpoint/BreakpointResolver.cpp index b3224aa91753d94..849da4b337ba0fb 100644 --- a/lldb/source/Breakpoint/BreakpointResolver.cpp +++ b/lldb/source/Breakpoint/BreakpointResolver.cpp @@ -294,18 +294,18 @@ void BreakpointResolver::AddLocation(SearchFilter &filter, Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS)); Address line_start = sc.line_entry.range.GetBaseAddress(); if (!line_start.IsValid()) { - if (log) - log->Printf("error: Unable to set breakpoint %s at file address " - "0x%" PRIx64 "\n", - log_ident.str().c_str(), line_start.GetFileAddress()); + LLDB_LOGF(log, + "error: Unable to set breakpoint %s at file address " + "0x%" PRIx64 "\n", + log_ident.str().c_str(), line_start.GetFileAddress()); return; } if (!filter.AddressPasses(line_start)) { - if (log) - log->Printf("Breakpoint %s at file address 0x%" PRIx64 - " didn't pass the filter.\n", - log_ident.str().c_str(), line_start.GetFileAddress()); + LLDB_LOGF(log, + "Breakpoint %s at file address 0x%" PRIx64 + " didn't pass the filter.\n", + log_ident.str().c_str(), line_start.GetFileAddress()); } // If the line number is before the prologue end, move it there... @@ -329,8 +329,8 @@ void BreakpointResolver::AddLocation(SearchFilter &filter, if (log && bp_loc_sp && !m_breakpoint->IsInternal()) { StreamString s; bp_loc_sp->GetDescription(&s, lldb::eDescriptionLevelVerbose); - log->Printf("Added location (skipped prologue: %s): %s \n", - skipped_prologue ? "yes" : "no", s.GetData()); + LLDB_LOGF(log, "Added location (skipped prologue: %s): %s \n", + skipped_prologue ? "yes" : "no", s.GetData()); } } diff --git a/lldb/source/Breakpoint/BreakpointResolverAddress.cpp b/lldb/source/Breakpoint/BreakpointResolverAddress.cpp index 8a6fd6a2692c8be..cc14a134e9062f9 100644 --- a/lldb/source/Breakpoint/BreakpointResolverAddress.cpp +++ b/lldb/source/Breakpoint/BreakpointResolverAddress.cpp @@ -149,8 +149,7 @@ BreakpointResolverAddress::SearchCallback(SearchFilter &filter, bp_loc_sp->GetDescription(&s, lldb::eDescriptionLevelVerbose); Log *log( lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS)); - if (log) - log->Printf("Added location: %s\n", s.GetData()); + LLDB_LOGF(log, "Added location: %s\n", s.GetData()); } } else { BreakpointLocationSP loc_sp = m_breakpoint->GetLocationAtIndex(0); diff --git a/lldb/source/Breakpoint/BreakpointResolverFileRegex.cpp b/lldb/source/Breakpoint/BreakpointResolverFileRegex.cpp index 0b2485245b726a6..94135a59f921528 100644 --- a/lldb/source/Breakpoint/BreakpointResolverFileRegex.cpp +++ b/lldb/source/Breakpoint/BreakpointResolverFileRegex.cpp @@ -20,11 +20,11 @@ using namespace lldb_private; // BreakpointResolverFileRegex: BreakpointResolverFileRegex::BreakpointResolverFileRegex( - Breakpoint *bkpt, RegularExpression ®ex, + Breakpoint *bkpt, RegularExpression regex, const std::unordered_set &func_names, bool exact_match) : BreakpointResolver(bkpt, BreakpointResolver::FileRegexResolver), - m_regex(regex), m_exact_match(exact_match), m_function_names(func_names) { -} + m_regex(std::move(regex)), m_exact_match(exact_match), + m_function_names(func_names) {} BreakpointResolverFileRegex::~BreakpointResolverFileRegex() {} @@ -69,7 +69,8 @@ BreakpointResolver *BreakpointResolverFileRegex::CreateFromStructuredData( } } - return new BreakpointResolverFileRegex(bkpt, regex, names_set, exact_match); + return new BreakpointResolverFileRegex(bkpt, std::move(regex), names_set, + exact_match); } StructuredData::ObjectSP diff --git a/lldb/source/Breakpoint/BreakpointResolverName.cpp b/lldb/source/Breakpoint/BreakpointResolverName.cpp index 3ad2e8867f2a8e1..c3c05b3b7768d28 100644 --- a/lldb/source/Breakpoint/BreakpointResolverName.cpp +++ b/lldb/source/Breakpoint/BreakpointResolverName.cpp @@ -31,7 +31,8 @@ BreakpointResolverName::BreakpointResolverName( m_class_name(), m_regex(), m_match_type(type), m_language(language), m_skip_prologue(skip_prologue) { if (m_match_type == Breakpoint::Regexp) { - if (!m_regex.Compile(llvm::StringRef::withNullAsEmpty(name_cstr))) { + m_regex = RegularExpression(llvm::StringRef::withNullAsEmpty(name_cstr)); + if (!m_regex.IsValid()) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS)); if (log) @@ -70,12 +71,12 @@ BreakpointResolverName::BreakpointResolverName(Breakpoint *bkpt, } BreakpointResolverName::BreakpointResolverName(Breakpoint *bkpt, - RegularExpression &func_regex, + RegularExpression func_regex, lldb::LanguageType language, lldb::addr_t offset, bool skip_prologue) : BreakpointResolver(bkpt, BreakpointResolver::NameResolver, offset), - m_class_name(nullptr), m_regex(func_regex), + m_class_name(nullptr), m_regex(std::move(func_regex)), m_match_type(Breakpoint::Regexp), m_language(language), m_skip_prologue(skip_prologue) {} @@ -125,9 +126,8 @@ BreakpointResolver *BreakpointResolverName::CreateFromStructuredData( success = options_dict.GetValueForKeyAsString( GetKey(OptionNames::RegexString), regex_text); if (success) { - RegularExpression regex(regex_text); - return new BreakpointResolverName(bkpt, regex, language, offset, - skip_prologue); + return new BreakpointResolverName(bkpt, RegularExpression(regex_text), + language, offset, skip_prologue); } else { StructuredData::Array *names_array; success = options_dict.GetValueForKeyAsArray( @@ -388,7 +388,7 @@ BreakpointResolverName::SearchCallback(SearchFilter &filter, if (log) { StreamString s; bp_loc_sp->GetDescription(&s, lldb::eDescriptionLevelVerbose); - log->Printf("Added location: %s\n", s.GetData()); + LLDB_LOGF(log, "Added location: %s\n", s.GetData()); } } } diff --git a/lldb/source/Breakpoint/Watchpoint.cpp b/lldb/source/Breakpoint/Watchpoint.cpp index e8a926527d24bdf..17dcda13e9b9292 100644 --- a/lldb/source/Breakpoint/Watchpoint.cpp +++ b/lldb/source/Breakpoint/Watchpoint.cpp @@ -13,10 +13,11 @@ #include "lldb/Core/ValueObject.h" #include "lldb/Core/ValueObjectMemory.h" #include "lldb/Expression/UserExpression.h" -#include "lldb/Symbol/ClangASTContext.h" +#include "lldb/Symbol/TypeSystem.h" #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" #include "lldb/Target/ThreadSpec.h" +#include "lldb/Utility/Log.h" #include "lldb/Utility/Stream.h" using namespace lldb; @@ -30,14 +31,22 @@ Watchpoint::Watchpoint(Target &target, lldb::addr_t addr, uint32_t size, m_watch_write(0), m_watch_was_read(0), m_watch_was_written(0), m_ignore_count(0), m_false_alarms(0), m_decl_str(), m_watch_spec_str(), m_type(), m_error(), m_options(), m_being_created(true) { + if (type && type->IsValid()) m_type = *type; else { // If we don't have a known type, then we force it to unsigned int of the // right size. - ClangASTContext *ast_context = target.GetScratchClangASTContext(); - m_type = ast_context->GetBuiltinTypeForEncodingAndBitSize(eEncodingUint, - 8 * size); + auto type_system_or_err = + target.GetScratchTypeSystemForLanguage(eLanguageTypeC); + if (auto err = type_system_or_err.takeError()) { + LLDB_LOG_ERROR( + lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_WATCHPOINTS), + std::move(err), "Failed to set type."); + } else { + m_type = type_system_or_err->GetBuiltinTypeForEncodingAndBitSize( + eEncodingUint, 8 * size); + } } // Set the initial value of the watched variable: diff --git a/lldb/source/Breakpoint/WatchpointOptions.cpp b/lldb/source/Breakpoint/WatchpointOptions.cpp index 7dd130a3072c7b4..cd5ef930e5dcf6a 100644 --- a/lldb/source/Breakpoint/WatchpointOptions.cpp +++ b/lldb/source/Breakpoint/WatchpointOptions.cpp @@ -170,9 +170,8 @@ void WatchpointOptions::CommandBaton::GetDescription( s->IndentMore(); if (data && data->user_source.GetSize() > 0) { - const size_t num_strings = data->user_source.GetSize(); - for (size_t i = 0; i < num_strings; ++i) { - s->Indent(data->user_source.GetStringAtIndex(i)); + for (const std::string &line : data->user_source) { + s->Indent(line); s->EOL(); } } else { diff --git a/lldb/source/Commands/CMakeLists.txt b/lldb/source/Commands/CMakeLists.txt index f3f96af7dab02d4..657da8caaf361ed 100644 --- a/lldb/source/Commands/CMakeLists.txt +++ b/lldb/source/Commands/CMakeLists.txt @@ -1,4 +1,4 @@ -lldb_tablegen(Options.inc -gen-lldb-option-defs +lldb_tablegen(CommandOptions.inc -gen-lldb-option-defs SOURCE Options.td TARGET LLDBOptionsGen) diff --git a/lldb/source/Commands/CommandCompletions.cpp b/lldb/source/Commands/CommandCompletions.cpp index 5d2fb3d67f575f7..f00a35d3d81b124 100644 --- a/lldb/source/Commands/CommandCompletions.cpp +++ b/lldb/source/Commands/CommandCompletions.cpp @@ -71,10 +71,9 @@ bool CommandCompletions::InvokeCommonCompletionCallbacks( return handled; } -int CommandCompletions::SourceFiles(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - request.SetWordComplete(true); +void CommandCompletions::SourceFiles(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { // Find some way to switch "include support files..." SourceFileCompleter completer(interpreter, false, request); @@ -85,20 +84,18 @@ int CommandCompletions::SourceFiles(CommandInterpreter &interpreter, } else { completer.DoCompletion(searcher); } - return request.GetNumberOfMatches(); } -static int DiskFilesOrDirectories(const llvm::Twine &partial_name, - bool only_directories, StringList &matches, - TildeExpressionResolver &Resolver) { - matches.Clear(); - +static void DiskFilesOrDirectories(const llvm::Twine &partial_name, + bool only_directories, + CompletionRequest &request, + TildeExpressionResolver &Resolver) { llvm::SmallString<256> CompletionBuffer; llvm::SmallString<256> Storage; partial_name.toVector(CompletionBuffer); if (CompletionBuffer.size() >= PATH_MAX) - return matches.GetSize(); + return; namespace path = llvm::sys::path; @@ -126,10 +123,10 @@ static int DiskFilesOrDirectories(const llvm::Twine &partial_name, for (const auto &S : MatchSet) { Resolved = S.getKey(); path::append(Resolved, path::get_separator()); - matches.AppendString(Resolved); + request.AddCompletion(Resolved, "", CompletionMode::Partial); } } - return matches.GetSize(); + return; } // If there was no trailing slash, then we're done as soon as we resolve @@ -138,8 +135,8 @@ static int DiskFilesOrDirectories(const llvm::Twine &partial_name, if (FirstSep == llvm::StringRef::npos) { // Make sure it ends with a separator. path::append(CompletionBuffer, path::get_separator()); - matches.AppendString(CompletionBuffer); - return matches.GetSize(); + request.AddCompletion(CompletionBuffer, "", CompletionMode::Partial); + return; } // We want to keep the form the user typed, so we special case this to @@ -219,51 +216,56 @@ static int DiskFilesOrDirectories(const llvm::Twine &partial_name, path::append(CompletionBuffer, path::get_separator()); } - matches.AppendString(CompletionBuffer); + CompletionMode mode = + is_dir ? CompletionMode::Partial : CompletionMode::Normal; + request.AddCompletion(CompletionBuffer, "", mode); } +} - return matches.GetSize(); +static void DiskFilesOrDirectories(const llvm::Twine &partial_name, + bool only_directories, StringList &matches, + TildeExpressionResolver &Resolver) { + CompletionResult result; + std::string partial_name_str = partial_name.str(); + CompletionRequest request(partial_name_str, partial_name_str.size(), result); + DiskFilesOrDirectories(partial_name, only_directories, request, Resolver); + result.GetMatches(matches); } -static int DiskFilesOrDirectories(CompletionRequest &request, - bool only_directories) { - request.SetWordComplete(false); +static void DiskFilesOrDirectories(CompletionRequest &request, + bool only_directories) { StandardTildeExpressionResolver resolver; - StringList matches; DiskFilesOrDirectories(request.GetCursorArgumentPrefix(), only_directories, - matches, resolver); - request.AddCompletions(matches); - return request.GetNumberOfMatches(); + request, resolver); } -int CommandCompletions::DiskFiles(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - return DiskFilesOrDirectories(request, /*only_dirs*/ false); +void CommandCompletions::DiskFiles(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { + DiskFilesOrDirectories(request, /*only_dirs*/ false); } -int CommandCompletions::DiskFiles(const llvm::Twine &partial_file_name, - StringList &matches, - TildeExpressionResolver &Resolver) { - return DiskFilesOrDirectories(partial_file_name, false, matches, Resolver); +void CommandCompletions::DiskFiles(const llvm::Twine &partial_file_name, + StringList &matches, + TildeExpressionResolver &Resolver) { + DiskFilesOrDirectories(partial_file_name, false, matches, Resolver); } -int CommandCompletions::DiskDirectories(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - return DiskFilesOrDirectories(request, /*only_dirs*/ true); +void CommandCompletions::DiskDirectories(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { + DiskFilesOrDirectories(request, /*only_dirs*/ true); } -int CommandCompletions::DiskDirectories(const llvm::Twine &partial_file_name, - StringList &matches, - TildeExpressionResolver &Resolver) { - return DiskFilesOrDirectories(partial_file_name, true, matches, Resolver); +void CommandCompletions::DiskDirectories(const llvm::Twine &partial_file_name, + StringList &matches, + TildeExpressionResolver &Resolver) { + DiskFilesOrDirectories(partial_file_name, true, matches, Resolver); } -int CommandCompletions::Modules(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - request.SetWordComplete(true); +void CommandCompletions::Modules(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { ModuleCompleter completer(interpreter, request); if (searcher == nullptr) { @@ -273,13 +275,11 @@ int CommandCompletions::Modules(CommandInterpreter &interpreter, } else { completer.DoCompletion(searcher); } - return request.GetNumberOfMatches(); } -int CommandCompletions::Symbols(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - request.SetWordComplete(true); +void CommandCompletions::Symbols(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { SymbolCompleter completer(interpreter, request); if (searcher == nullptr) { @@ -289,12 +289,11 @@ int CommandCompletions::Symbols(CommandInterpreter &interpreter, } else { completer.DoCompletion(searcher); } - return request.GetNumberOfMatches(); } -int CommandCompletions::SettingsNames(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { +void CommandCompletions::SettingsNames(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { // Cache the full setting name list static StringList g_property_names; if (g_property_names.GetSize() == 0) { @@ -309,38 +308,29 @@ int CommandCompletions::SettingsNames(CommandInterpreter &interpreter, } } - size_t exact_matches_idx = SIZE_MAX; - StringList matches; - g_property_names.AutoComplete(request.GetCursorArgumentPrefix(), matches, - exact_matches_idx); - request.SetWordComplete(exact_matches_idx != SIZE_MAX); - request.AddCompletions(matches); - return request.GetNumberOfMatches(); + for (const std::string &s : g_property_names) { + if (llvm::StringRef(s).startswith(request.GetCursorArgumentPrefix())) + request.AddCompletion(s); + } } -int CommandCompletions::PlatformPluginNames(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - StringList new_matches; - std::size_t num_matches = PluginManager::AutoCompletePlatformName( - request.GetCursorArgumentPrefix(), new_matches); - request.SetWordComplete(num_matches == 1); - request.AddCompletions(new_matches); - return request.GetNumberOfMatches(); +void CommandCompletions::PlatformPluginNames(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { + PluginManager::AutoCompletePlatformName(request.GetCursorArgumentPrefix(), + request); } -int CommandCompletions::ArchitectureNames(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - const uint32_t num_matches = ArchSpec::AutoComplete(request); - request.SetWordComplete(num_matches == 1); - return num_matches; +void CommandCompletions::ArchitectureNames(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { + ArchSpec::AutoComplete(request); } -int CommandCompletions::VariablePath(CommandInterpreter &interpreter, - CompletionRequest &request, - SearchFilter *searcher) { - return Variable::AutoComplete(interpreter.GetExecutionContext(), request); +void CommandCompletions::VariablePath(CommandInterpreter &interpreter, + CompletionRequest &request, + SearchFilter *searcher) { + Variable::AutoComplete(interpreter.GetExecutionContext(), request); } CommandCompletions::Completer::Completer(CommandInterpreter &interpreter, @@ -411,15 +401,14 @@ CommandCompletions::SourceFileCompleter::SearchCallback(SearchFilter &filter, return Searcher::eCallbackReturnContinue; } -size_t -CommandCompletions::SourceFileCompleter::DoCompletion(SearchFilter *filter) { +void CommandCompletions::SourceFileCompleter::DoCompletion( + SearchFilter *filter) { filter->Search(*this); // Now convert the filelist to completions: for (size_t i = 0; i < m_matching_files.GetSize(); i++) { m_request.AddCompletion( m_matching_files.GetFileSpecAtIndex(i).GetFilename().GetCString()); } - return m_request.GetNumberOfMatches(); } // SymbolCompleter @@ -448,7 +437,7 @@ CommandCompletions::SymbolCompleter::SymbolCompleter( pos = regex_str.insert(pos, '\\'); pos = find_if(pos + 2, regex_str.end(), regex_chars); } - m_regex.Compile(regex_str); + m_regex = RegularExpression(regex_str); } lldb::SearchDepth CommandCompletions::SymbolCompleter::GetDepth() { @@ -471,7 +460,11 @@ Searcher::CallbackReturn CommandCompletions::SymbolCompleter::SearchCallback( for (uint32_t i = 0; i < sc_list.GetSize(); i++) { if (sc_list.GetContextAtIndex(i, sc)) { ConstString func_name = sc.GetFunctionName(Mangled::ePreferDemangled); - if (!func_name.IsEmpty()) + // Ensure that the function name matches the regex. This is more than a + // sanity check. It is possible that the demangled function name does + // not start with the prefix, for example when it's in an anonymous + // namespace. + if (!func_name.IsEmpty() && m_regex.Execute(func_name.GetStringRef())) m_match_set.insert(func_name); } } @@ -479,13 +472,11 @@ Searcher::CallbackReturn CommandCompletions::SymbolCompleter::SearchCallback( return Searcher::eCallbackReturnContinue; } -size_t CommandCompletions::SymbolCompleter::DoCompletion(SearchFilter *filter) { +void CommandCompletions::SymbolCompleter::DoCompletion(SearchFilter *filter) { filter->Search(*this); collection::iterator pos = m_match_set.begin(), end = m_match_set.end(); for (pos = m_match_set.begin(); pos != end; pos++) m_request.AddCompletion((*pos).GetCString()); - - return m_request.GetNumberOfMatches(); } // ModuleCompleter @@ -526,7 +517,6 @@ Searcher::CallbackReturn CommandCompletions::ModuleCompleter::SearchCallback( return Searcher::eCallbackReturnContinue; } -size_t CommandCompletions::ModuleCompleter::DoCompletion(SearchFilter *filter) { +void CommandCompletions::ModuleCompleter::DoCompletion(SearchFilter *filter) { filter->Search(*this); - return m_request.GetNumberOfMatches(); } diff --git a/lldb/source/Commands/CommandObjectApropos.cpp b/lldb/source/Commands/CommandObjectApropos.cpp index 957de475569cb82..b0ef03acd612b92 100644 --- a/lldb/source/Commands/CommandObjectApropos.cpp +++ b/lldb/source/Commands/CommandObjectApropos.cpp @@ -63,13 +63,7 @@ bool CommandObjectApropos::DoExecute(Args &args, CommandReturnObject &result) { if (commands_found.GetSize() > 0) { result.AppendMessageWithFormat( "The following commands may relate to '%s':\n", args[0].c_str()); - size_t max_len = 0; - - for (size_t i = 0; i < commands_found.GetSize(); ++i) { - size_t len = strlen(commands_found.GetStringAtIndex(i)); - if (len > max_len) - max_len = len; - } + const size_t max_len = commands_found.GetMaxStringLength(); for (size_t i = 0; i < commands_found.GetSize(); ++i) m_interpreter.OutputFormattedHelpText( diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp index 117639add0159c3..bcb85401d1bfd59 100644 --- a/lldb/source/Commands/CommandObjectBreakpoint.cpp +++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp @@ -44,10 +44,9 @@ static void AddBreakpointDescription(Stream *s, Breakpoint *bp, // Modifiable Breakpoint Options #pragma mark Modify::CommandOptions -static constexpr OptionDefinition g_breakpoint_modify_options[] = { #define LLDB_OPTIONS_breakpoint_modify #include "CommandOptions.inc" -}; + class lldb_private::BreakpointOptionGroup : public OptionGroup { public: @@ -142,9 +141,7 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup } break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -181,10 +178,9 @@ class lldb_private::BreakpointOptionGroup : public OptionGroup BreakpointOptions m_bp_opts; }; -static constexpr OptionDefinition g_breakpoint_dummy_options[] = { + #define LLDB_OPTIONS_breakpoint_dummy #include "CommandOptions.inc" -}; class BreakpointDummyOptionGroup : public OptionGroup { @@ -208,9 +204,7 @@ class BreakpointDummyOptionGroup : public OptionGroup m_use_dummy = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -224,10 +218,8 @@ class BreakpointDummyOptionGroup : public OptionGroup }; -static constexpr OptionDefinition g_breakpoint_set_options[] = { #define LLDB_OPTIONS_breakpoint_set #include "CommandOptions.inc" -}; // CommandObjectBreakpointSet @@ -490,9 +482,7 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -560,14 +550,7 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(m_dummy_options.m_use_dummy); - - if (target == nullptr) { - result.AppendError("Invalid target. Must set target before setting " - "breakpoints (see 'target create' command)."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(m_dummy_options.m_use_dummy); // The following are the various types of breakpoints that could be set: // 1). -f -l -p [-s -g] (setting breakpoint by source location) @@ -629,16 +612,11 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { // Only check for inline functions if LazyBool check_inlines = eLazyBoolCalculate; - bp_sp = target->CreateBreakpoint(&(m_options.m_modules), - file, - m_options.m_line_num, - m_options.m_column, - m_options.m_offset_addr, - check_inlines, - m_options.m_skip_prologue, - internal, - m_options.m_hardware, - m_options.m_move_to_nearest_code); + bp_sp = target.CreateBreakpoint( + &(m_options.m_modules), file, m_options.m_line_num, + m_options.m_column, m_options.m_offset_addr, check_inlines, + m_options.m_skip_prologue, internal, m_options.m_hardware, + m_options.m_move_to_nearest_code); } break; case eSetTypeAddress: // Breakpoint by address @@ -650,12 +628,11 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { if (num_modules_specified == 1) { const FileSpec *file_spec = m_options.m_modules.GetFileSpecPointerAtIndex(0); - bp_sp = target->CreateAddressInModuleBreakpoint(m_options.m_load_addr, - internal, file_spec, - m_options.m_hardware); + bp_sp = target.CreateAddressInModuleBreakpoint( + m_options.m_load_addr, internal, file_spec, m_options.m_hardware); } else if (num_modules_specified == 0) { - bp_sp = target->CreateBreakpoint(m_options.m_load_addr, internal, - m_options.m_hardware); + bp_sp = target.CreateBreakpoint(m_options.m_load_addr, internal, + m_options.m_hardware); } else { result.AppendError("Only one shared library can be specified for " "address breakpoints."); @@ -671,38 +648,29 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { if (name_type_mask == 0) name_type_mask = eFunctionNameTypeAuto; - bp_sp = target->CreateBreakpoint(&(m_options.m_modules), - &(m_options.m_filenames), - m_options.m_func_names, - name_type_mask, - m_options.m_language, - m_options.m_offset_addr, - m_options.m_skip_prologue, - internal, - m_options.m_hardware); + bp_sp = target.CreateBreakpoint( + &(m_options.m_modules), &(m_options.m_filenames), + m_options.m_func_names, name_type_mask, m_options.m_language, + m_options.m_offset_addr, m_options.m_skip_prologue, internal, + m_options.m_hardware); } break; case eSetTypeFunctionRegexp: // Breakpoint by regular expression function // name { RegularExpression regexp(m_options.m_func_regexp); - if (!regexp.IsValid()) { - char err_str[1024]; - regexp.GetErrorAsCString(err_str, sizeof(err_str)); + if (llvm::Error err = regexp.GetError()) { result.AppendErrorWithFormat( "Function name regular expression could not be compiled: \"%s\"", - err_str); + llvm::toString(std::move(err)).c_str()); result.SetStatus(eReturnStatusFailed); return false; } - bp_sp = target->CreateFuncRegexBreakpoint(&(m_options.m_modules), - &(m_options.m_filenames), - regexp, - m_options.m_language, - m_options.m_skip_prologue, - internal, - m_options.m_hardware); + bp_sp = target.CreateFuncRegexBreakpoint( + &(m_options.m_modules), &(m_options.m_filenames), std::move(regexp), + m_options.m_language, m_options.m_skip_prologue, internal, + m_options.m_hardware); } break; case eSetTypeSourceRegexp: // Breakpoint by regexp on source text. @@ -722,39 +690,29 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { } RegularExpression regexp(m_options.m_source_text_regexp); - if (!regexp.IsValid()) { - char err_str[1024]; - regexp.GetErrorAsCString(err_str, sizeof(err_str)); + if (llvm::Error err = regexp.GetError()) { result.AppendErrorWithFormat( "Source text regular expression could not be compiled: \"%s\"", - err_str); + llvm::toString(std::move(err)).c_str()); result.SetStatus(eReturnStatusFailed); return false; } - bp_sp = - target->CreateSourceRegexBreakpoint(&(m_options.m_modules), - &(m_options.m_filenames), - m_options - .m_source_regex_func_names, - regexp, - internal, - m_options.m_hardware, - m_options.m_move_to_nearest_code); + bp_sp = target.CreateSourceRegexBreakpoint( + &(m_options.m_modules), &(m_options.m_filenames), + m_options.m_source_regex_func_names, std::move(regexp), internal, + m_options.m_hardware, m_options.m_move_to_nearest_code); } break; case eSetTypeException: { Status precond_error; - bp_sp = target->CreateExceptionBreakpoint(m_options.m_exception_language, - m_options.m_catch_bp, - m_options.m_throw_bp, - internal, - &m_options - .m_exception_extra_args, - &precond_error); + bp_sp = target.CreateExceptionBreakpoint( + m_options.m_exception_language, m_options.m_catch_bp, + m_options.m_throw_bp, internal, &m_options.m_exception_extra_args, + &precond_error); if (precond_error.Fail()) { result.AppendErrorWithFormat( "Error setting extra exception arguments: %s", precond_error.AsCString()); - target->RemoveBreakpointByID(bp_sp->GetID()); + target.RemoveBreakpointByID(bp_sp->GetID()); result.SetStatus(eReturnStatusFailed); return false; } @@ -762,18 +720,15 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { case eSetTypeScripted: { Status error; - bp_sp = target->CreateScriptedBreakpoint(m_options.m_python_class, - &(m_options.m_modules), - &(m_options.m_filenames), - false, - m_options.m_hardware, - m_options.m_extra_args_sp, - &error); + bp_sp = target.CreateScriptedBreakpoint( + m_options.m_python_class, &(m_options.m_modules), + &(m_options.m_filenames), false, m_options.m_hardware, + m_options.m_extra_args_sp, &error); if (error.Fail()) { result.AppendErrorWithFormat( "Error setting extra exception arguments: %s", error.AsCString()); - target->RemoveBreakpointByID(bp_sp->GetID()); + target.RemoveBreakpointByID(bp_sp->GetID()); result.SetStatus(eReturnStatusFailed); return false; } @@ -789,11 +744,11 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { if (!m_options.m_breakpoint_names.empty()) { Status name_error; for (auto name : m_options.m_breakpoint_names) { - target->AddNameToBreakpoint(bp_sp, name.c_str(), name_error); + target.AddNameToBreakpoint(bp_sp, name.c_str(), name_error); if (name_error.Fail()) { result.AppendErrorWithFormat("Invalid breakpoint name: %s", name.c_str()); - target->RemoveBreakpointByID(bp_sp->GetID()); + target.RemoveBreakpointByID(bp_sp->GetID()); result.SetStatus(eReturnStatusFailed); return false; } @@ -806,7 +761,7 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { const bool show_locations = false; bp_sp->GetDescription(&output_stream, lldb::eDescriptionLevelInitial, show_locations); - if (target == GetDebugger().GetDummyTarget()) + if (&target == &GetDummyTarget()) output_stream.Printf("Breakpoint set in dummy target, will get copied " "into future targets.\n"); else { @@ -828,12 +783,12 @@ class CommandObjectBreakpointSet : public CommandObjectParsed { } private: - bool GetDefaultFile(Target *target, FileSpec &file, + bool GetDefaultFile(Target &target, FileSpec &file, CommandReturnObject &result) { uint32_t default_line; // First use the Source Manager's default file. Then use the current stack // frame's file. - if (!target->GetSourceManager().GetDefaultFileAndLine(file, default_line)) { + if (!target.GetSourceManager().GetDefaultFileAndLine(file, default_line)) { StackFrame *cur_frame = m_exe_ctx.GetFramePtr(); if (cur_frame == nullptr) { result.AppendError( @@ -902,20 +857,15 @@ class CommandObjectBreakpointModify : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(m_dummy_opts.m_use_dummy); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(m_dummy_opts.m_use_dummy); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::disablePerm); if (result.Succeeded()) { @@ -925,7 +875,7 @@ class CommandObjectBreakpointModify : public CommandObjectParsed { if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { Breakpoint *bp = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); if (cur_bp_id.GetLocationID() != LLDB_INVALID_BREAK_ID) { BreakpointLocation *location = bp->FindLocationByID(cur_bp_id.GetLocationID()).get(); @@ -971,17 +921,12 @@ class CommandObjectBreakpointEnable : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); @@ -993,7 +938,7 @@ class CommandObjectBreakpointEnable : public CommandObjectParsed { if (command.empty()) { // No breakpoint selected; enable all currently set breakpoints. - target->EnableAllowedBreakpoints(); + target.EnableAllowedBreakpoints(); result.AppendMessageWithFormat("All breakpoints enabled. (%" PRIu64 " breakpoints)\n", (uint64_t)num_breakpoints); @@ -1002,7 +947,7 @@ class CommandObjectBreakpointEnable : public CommandObjectParsed { // Particular breakpoint selected; enable that breakpoint. BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::disablePerm); if (result.Succeeded()) { @@ -1014,7 +959,7 @@ class CommandObjectBreakpointEnable : public CommandObjectParsed { if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { Breakpoint *breakpoint = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); if (cur_bp_id.GetLocationID() != LLDB_INVALID_BREAK_ID) { BreakpointLocation *location = breakpoint->FindLocationByID(cur_bp_id.GetLocationID()).get(); @@ -1084,17 +1029,11 @@ the second re-enables the first location."); protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } - + Target &target = GetSelectedOrDummyTarget(); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { @@ -1105,7 +1044,7 @@ the second re-enables the first location."); if (command.empty()) { // No breakpoint selected; disable all currently set breakpoints. - target->DisableAllowedBreakpoints(); + target.DisableAllowedBreakpoints(); result.AppendMessageWithFormat("All breakpoints disabled. (%" PRIu64 " breakpoints)\n", (uint64_t)num_breakpoints); @@ -1115,7 +1054,7 @@ the second re-enables the first location."); BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::disablePerm); if (result.Succeeded()) { @@ -1127,7 +1066,7 @@ the second re-enables the first location."); if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { Breakpoint *breakpoint = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); if (cur_bp_id.GetLocationID() != LLDB_INVALID_BREAK_ID) { BreakpointLocation *location = breakpoint->FindLocationByID(cur_bp_id.GetLocationID()).get(); @@ -1154,10 +1093,8 @@ the second re-enables the first location."); // CommandObjectBreakpointList #pragma mark List::CommandOptions -static constexpr OptionDefinition g_breakpoint_list_options[] = { #define LLDB_OPTIONS_breakpoint_list -#include "Options.inc" -}; +#include "CommandOptions.inc" #pragma mark List @@ -1218,9 +1155,7 @@ class CommandObjectBreakpointList : public CommandObjectParsed { m_internal = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1246,18 +1181,12 @@ class CommandObjectBreakpointList : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(m_options.m_use_dummy); - - if (target == nullptr) { - result.AppendError("Invalid target. No current target or breakpoints."); - result.SetStatus(eReturnStatusSuccessFinishNoResult); - return true; - } + Target &target = GetSelectedOrDummyTarget(m_options.m_use_dummy); const BreakpointList &breakpoints = - target->GetBreakpointList(m_options.m_internal); + target.GetBreakpointList(m_options.m_internal); std::unique_lock lock; - target->GetBreakpointList(m_options.m_internal).GetListMutex(lock); + target.GetBreakpointList(m_options.m_internal).GetListMutex(lock); size_t num_breakpoints = breakpoints.GetSize(); @@ -1283,14 +1212,14 @@ class CommandObjectBreakpointList : public CommandObjectParsed { // Particular breakpoints selected; show info about that breakpoint. BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); if (result.Succeeded()) { for (size_t i = 0; i < valid_bp_ids.GetSize(); ++i) { BreakpointID cur_bp_id = valid_bp_ids.GetBreakpointIDAtIndex(i); Breakpoint *breakpoint = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); AddBreakpointDescription(&output_stream, breakpoint, m_options.m_level); } @@ -1311,10 +1240,8 @@ class CommandObjectBreakpointList : public CommandObjectParsed { // CommandObjectBreakpointClear #pragma mark Clear::CommandOptions -static constexpr OptionDefinition g_breakpoint_clear_options[] = { #define LLDB_OPTIONS_breakpoint_clear #include "CommandOptions.inc" -}; #pragma mark Clear @@ -1354,9 +1281,7 @@ class CommandObjectBreakpointClear : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1379,12 +1304,7 @@ class CommandObjectBreakpointClear : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(); // The following are the various types of breakpoints that could be // cleared: @@ -1396,9 +1316,9 @@ class CommandObjectBreakpointClear : public CommandObjectParsed { break_type = eClearTypeFileAndLine; std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - BreakpointList &breakpoints = target->GetBreakpointList(); + BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); // Early return if there's no breakpoint at all. @@ -1432,7 +1352,7 @@ class CommandObjectBreakpointClear : public CommandObjectParsed { if (loc_coll.GetSize() == 0) { bp->GetDescription(&ss, lldb::eDescriptionLevelBrief); ss.EOL(); - target->RemoveBreakpointByID(bp->GetID()); + target.RemoveBreakpointByID(bp->GetID()); ++num_cleared; } } @@ -1462,10 +1382,8 @@ class CommandObjectBreakpointClear : public CommandObjectParsed { }; // CommandObjectBreakpointDelete -static constexpr OptionDefinition g_breakpoint_delete_options[] = { #define LLDB_OPTIONS_breakpoint_delete #include "CommandOptions.inc" -}; #pragma mark Delete @@ -1510,9 +1428,7 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1534,18 +1450,12 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(m_options.m_use_dummy); - - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(m_options.m_use_dummy); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); @@ -1562,7 +1472,7 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { true)) { result.AppendMessage("Operation cancelled..."); } else { - target->RemoveAllowedBreakpoints(); + target.RemoveAllowedBreakpoints(); result.AppendMessageWithFormat( "All breakpoints removed. (%" PRIu64 " breakpoint%s)\n", (uint64_t)num_breakpoints, num_breakpoints > 1 ? "s" : ""); @@ -1572,7 +1482,7 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { // Particular breakpoint selected; disable that breakpoint. BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::deletePerm); if (result.Succeeded()) { @@ -1585,7 +1495,7 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { if (cur_bp_id.GetLocationID() != LLDB_INVALID_BREAK_ID) { Breakpoint *breakpoint = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); BreakpointLocation *location = breakpoint->FindLocationByID(cur_bp_id.GetLocationID()).get(); // It makes no sense to try to delete individual locations, so we @@ -1595,7 +1505,7 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { ++disable_count; } } else { - target->RemoveBreakpointByID(cur_bp_id.GetBreakpointID()); + target.RemoveBreakpointByID(cur_bp_id.GetBreakpointID()); ++delete_count; } } @@ -1614,11 +1524,9 @@ class CommandObjectBreakpointDelete : public CommandObjectParsed { }; // CommandObjectBreakpointName - -static constexpr OptionDefinition g_breakpoint_name_options[] = { #define LLDB_OPTIONS_breakpoint_name #include "CommandOptions.inc" -}; + class BreakpointNameOptionGroup : public OptionGroup { public: BreakpointNameOptionGroup() @@ -1659,9 +1567,7 @@ class BreakpointNameOptionGroup : public OptionGroup { break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1680,10 +1586,8 @@ class BreakpointNameOptionGroup : public OptionGroup { OptionValueString m_help_string; }; -static constexpr OptionDefinition g_breakpoint_access_options[] = { #define LLDB_OPTIONS_breakpoint_access #include "CommandOptions.inc" -}; class BreakpointAccessOptionGroup : public OptionGroup { public: @@ -1731,7 +1635,8 @@ class BreakpointAccessOptionGroup : public OptionGroup { "invalid boolean value '%s' passed for -L option", option_arg.str().c_str()); } break; - + default: + llvm_unreachable("Unimplemented option"); } return error; @@ -1793,18 +1698,11 @@ class CommandObjectBreakpointNameConfigure : public CommandObjectParsed { result.SetStatus(eReturnStatusFailed); return false; } - - Target *target = - GetSelectedOrDummyTarget(false); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(false); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); // Make a pass through first to see that all the names are legal. for (auto &entry : command.entries()) { @@ -1823,7 +1721,7 @@ class CommandObjectBreakpointNameConfigure : public CommandObjectParsed { if (m_bp_id.m_breakpoint.OptionWasSet()) { lldb::break_id_t bp_id = m_bp_id.m_breakpoint.GetUInt64Value(); - bp_sp = target->GetBreakpointByID(bp_id); + bp_sp = target.GetBreakpointByID(bp_id); if (!bp_sp) { result.AppendErrorWithFormatv("Could not find specified breakpoint {0}", @@ -1836,18 +1734,17 @@ class CommandObjectBreakpointNameConfigure : public CommandObjectParsed { Status error; for (auto &entry : command.entries()) { ConstString name(entry.c_str()); - BreakpointName *bp_name = target->FindBreakpointName(name, true, error); + BreakpointName *bp_name = target.FindBreakpointName(name, true, error); if (!bp_name) continue; if (m_bp_id.m_help_string.OptionWasSet()) bp_name->SetHelp(m_bp_id.m_help_string.GetStringValue().str().c_str()); if (bp_sp) - target->ConfigureBreakpointName(*bp_name, - *bp_sp->GetOptions(), + target.ConfigureBreakpointName(*bp_name, *bp_sp->GetOptions(), m_access_options.GetPermissions()); else - target->ConfigureBreakpointName(*bp_name, + target.ConfigureBreakpointName(*bp_name, m_bp_opts.GetBreakpointOptions(), m_access_options.GetPermissions()); } @@ -1892,19 +1789,13 @@ class CommandObjectBreakpointNameAdd : public CommandObjectParsed { return false; } - Target *target = + Target &target = GetSelectedOrDummyTarget(m_name_options.m_use_dummy.GetCurrentValue()); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } - std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { @@ -1916,7 +1807,7 @@ class CommandObjectBreakpointNameAdd : public CommandObjectParsed { // Particular breakpoint selected; disable that breakpoint. BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); if (result.Succeeded()) { @@ -1933,7 +1824,7 @@ class CommandObjectBreakpointNameAdd : public CommandObjectParsed { lldb::break_id_t bp_id = valid_bp_ids.GetBreakpointIDAtIndex(index).GetBreakpointID(); BreakpointSP bp_sp = breakpoints.FindBreakpointByID(bp_id); - target->AddNameToBreakpoint(bp_sp, bp_name, error); + target.AddNameToBreakpoint(bp_sp, bp_name, error); } } @@ -1977,19 +1868,13 @@ class CommandObjectBreakpointNameDelete : public CommandObjectParsed { return false; } - Target *target = + Target &target = GetSelectedOrDummyTarget(m_name_options.m_use_dummy.GetCurrentValue()); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } - std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { @@ -2001,7 +1886,7 @@ class CommandObjectBreakpointNameDelete : public CommandObjectParsed { // Particular breakpoint selected; disable that breakpoint. BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::deletePerm); if (result.Succeeded()) { @@ -2016,7 +1901,7 @@ class CommandObjectBreakpointNameDelete : public CommandObjectParsed { lldb::break_id_t bp_id = valid_bp_ids.GetBreakpointIDAtIndex(index).GetBreakpointID(); BreakpointSP bp_sp = breakpoints.FindBreakpointByID(bp_id); - target->RemoveNameFromBreakpoint(bp_sp, bp_name); + target.RemoveNameFromBreakpoint(bp_sp, bp_name); } } @@ -2047,19 +1932,12 @@ class CommandObjectBreakpointNameList : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = + Target &target = GetSelectedOrDummyTarget(m_name_options.m_use_dummy.GetCurrentValue()); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } - - std::vector name_list; if (command.empty()) { - target->GetBreakpointNames(name_list); + target.GetBreakpointNames(name_list); } else { for (const Args::ArgEntry &arg : command) { @@ -2074,9 +1952,8 @@ class CommandObjectBreakpointNameList : public CommandObjectParsed { const char *name = name_str.c_str(); // First print out the options for the name: Status error; - BreakpointName *bp_name = target->FindBreakpointName(ConstString(name), - false, - error); + BreakpointName *bp_name = + target.FindBreakpointName(ConstString(name), false, error); if (bp_name) { StreamString s; @@ -2087,9 +1964,9 @@ class CommandObjectBreakpointNameList : public CommandObjectParsed { } std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); - BreakpointList &breakpoints = target->GetBreakpointList(); + BreakpointList &breakpoints = target.GetBreakpointList(); bool any_set = false; for (BreakpointSP bp_sp : breakpoints.Breakpoints()) { if (bp_sp->MatchesName(name)) { @@ -2142,10 +2019,8 @@ class CommandObjectBreakpointName : public CommandObjectMultiword { // CommandObjectBreakpointRead #pragma mark Read::CommandOptions -static constexpr OptionDefinition g_breakpoint_read_options[] = { #define LLDB_OPTIONS_breakpoint_read #include "CommandOptions.inc" -}; #pragma mark Read @@ -2195,9 +2070,7 @@ class CommandObjectBreakpointRead : public CommandObjectParsed { break; } default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -2220,21 +2093,16 @@ class CommandObjectBreakpointRead : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); FileSpec input_spec(m_options.m_filename); FileSystem::Instance().Resolve(input_spec); BreakpointIDList new_bps; - Status error = target->CreateBreakpointsFromFile( - input_spec, m_options.m_names, new_bps); + Status error = target.CreateBreakpointsFromFile(input_spec, + m_options.m_names, new_bps); if (!error.Success()) { result.AppendError(error.AsCString()); @@ -2252,7 +2120,7 @@ class CommandObjectBreakpointRead : public CommandObjectParsed { result.AppendMessage("New breakpoints:"); for (size_t i = 0; i < num_breakpoints; ++i) { BreakpointID bp_id = new_bps.GetBreakpointIDAtIndex(i); - Breakpoint *bp = target->GetBreakpointList() + Breakpoint *bp = target.GetBreakpointList() .FindBreakpointByID(bp_id.GetBreakpointID()) .get(); if (bp) @@ -2269,10 +2137,8 @@ class CommandObjectBreakpointRead : public CommandObjectParsed { // CommandObjectBreakpointWrite #pragma mark Write::CommandOptions -static constexpr OptionDefinition g_breakpoint_write_options[] = { #define LLDB_OPTIONS_breakpoint_write #include "CommandOptions.inc" -}; #pragma mark Write class CommandObjectBreakpointWrite : public CommandObjectParsed { @@ -2315,9 +2181,7 @@ class CommandObjectBreakpointWrite : public CommandObjectParsed { m_append = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -2340,20 +2204,15 @@ class CommandObjectBreakpointWrite : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or breakpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(); std::unique_lock lock; - target->GetBreakpointList().GetListMutex(lock); + target.GetBreakpointList().GetListMutex(lock); BreakpointIDList valid_bp_ids; if (!command.empty()) { CommandObjectMultiwordBreakpoint::VerifyBreakpointIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); if (!result.Succeeded()) { @@ -2363,8 +2222,8 @@ class CommandObjectBreakpointWrite : public CommandObjectParsed { } FileSpec file_spec(m_options.m_filename); FileSystem::Instance().Resolve(file_spec); - Status error = target->SerializeBreakpointsToFile(file_spec, valid_bp_ids, - m_options.m_append); + Status error = target.SerializeBreakpointsToFile(file_spec, valid_bp_ids, + m_options.m_append); if (!error.Success()) { result.AppendErrorWithFormat("error serializing breakpoints: %s.", error.AsCString()); diff --git a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp index ec72a04333e480f..14865ca2449a6cd 100644 --- a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp @@ -26,28 +26,33 @@ using namespace lldb; using namespace lldb_private; -// CommandObjectBreakpointCommandAdd - // FIXME: "script-type" needs to have its contents determined dynamically, so -// somebody can add a new scripting -// language to lldb and have it pickable here without having to change this -// enumeration by hand and rebuild lldb proper. - +// somebody can add a new scripting language to lldb and have it pickable here +// without having to change this enumeration by hand and rebuild lldb proper. static constexpr OptionEnumValueElement g_script_option_enumeration[] = { - {eScriptLanguageNone, "command", - "Commands are in the lldb command interpreter language"}, - {eScriptLanguagePython, "python", "Commands are in the Python language."}, - {eSortOrderByName, "default-script", - "Commands are in the default scripting language."} }; + { + eScriptLanguageNone, + "command", + "Commands are in the lldb command interpreter language", + }, + { + eScriptLanguagePython, + "python", + "Commands are in the Python language.", + }, + { + eSortOrderByName, + "default-script", + "Commands are in the default scripting language.", + }, +}; static constexpr OptionEnumValues ScriptOptionEnum() { return OptionEnumValues(g_script_option_enumeration); } -static constexpr OptionDefinition g_breakpoint_add_options[] = { #define LLDB_OPTIONS_breakpoint_command_add #include "CommandOptions.inc" -}; class CommandObjectBreakpointCommandAdd : public CommandObjectParsed, public IOHandlerDelegateMultiline { @@ -286,7 +291,8 @@ are no syntax errors may indicate that a function was declared but never called. case 's': m_script_language = (lldb::ScriptLanguage)OptionArgParser::ToOptionEnum( - option_arg, g_breakpoint_add_options[option_idx].enum_values, + option_arg, + g_breakpoint_command_add_options[option_idx].enum_values, eScriptLanguageNone, error); if (m_script_language == eScriptLanguagePython || @@ -318,7 +324,7 @@ are no syntax errors may indicate that a function was declared but never called. break; default: - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -336,7 +342,7 @@ are no syntax errors may indicate that a function was declared but never called. } llvm::ArrayRef GetDefinitions() override { - return llvm::makeArrayRef(g_breakpoint_add_options); + return llvm::makeArrayRef(g_breakpoint_command_add_options); } // Instance variables to hold the values for command options. @@ -355,16 +361,9 @@ are no syntax errors may indicate that a function was declared but never called. protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(m_options.m_use_dummy); + Target &target = GetSelectedOrDummyTarget(m_options.m_use_dummy); - if (target == nullptr) { - result.AppendError("There is not a current executable; there are no " - "breakpoints to which to add commands"); - result.SetStatus(eReturnStatusFailed); - return false; - } - - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { @@ -383,7 +382,7 @@ are no syntax errors may indicate that a function was declared but never called. BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); m_bp_options_vec.clear(); @@ -395,7 +394,7 @@ are no syntax errors may indicate that a function was declared but never called. BreakpointID cur_bp_id = valid_bp_ids.GetBreakpointIDAtIndex(i); if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { Breakpoint *bp = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); BreakpointOptions *bp_options = nullptr; if (cur_bp_id.GetLocationID() == LLDB_INVALID_BREAK_ID) { // This breakpoint does not have an associated location. @@ -464,10 +463,8 @@ const char *CommandObjectBreakpointCommandAdd::g_reader_instructions = // CommandObjectBreakpointCommandDelete -static constexpr OptionDefinition g_breakpoint_delete_options[] = { #define LLDB_OPTIONS_breakpoint_command_delete #include "CommandOptions.inc" -}; class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { public: @@ -512,9 +509,7 @@ class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -525,7 +520,7 @@ class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { } llvm::ArrayRef GetDefinitions() override { - return llvm::makeArrayRef(g_breakpoint_delete_options); + return llvm::makeArrayRef(g_breakpoint_command_delete_options); } // Instance variables to hold the values for command options. @@ -534,16 +529,9 @@ class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(m_options.m_use_dummy); - - if (target == nullptr) { - result.AppendError("There is not a current executable; there are no " - "breakpoints from which to delete commands"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target &target = GetSelectedOrDummyTarget(m_options.m_use_dummy); - const BreakpointList &breakpoints = target->GetBreakpointList(); + const BreakpointList &breakpoints = target.GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); if (num_breakpoints == 0) { @@ -561,7 +549,7 @@ class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, &target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); if (result.Succeeded()) { @@ -570,7 +558,7 @@ class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { BreakpointID cur_bp_id = valid_bp_ids.GetBreakpointIDAtIndex(i); if (cur_bp_id.GetBreakpointID() != LLDB_INVALID_BREAK_ID) { Breakpoint *bp = - target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); + target.GetBreakpointByID(cur_bp_id.GetBreakpointID()).get(); if (cur_bp_id.GetLocationID() != LLDB_INVALID_BREAK_ID) { BreakpointLocationSP bp_loc_sp( bp->FindLocationByID(cur_bp_id.GetLocationID())); @@ -601,10 +589,10 @@ class CommandObjectBreakpointCommandDelete : public CommandObjectParsed { class CommandObjectBreakpointCommandList : public CommandObjectParsed { public: CommandObjectBreakpointCommandList(CommandInterpreter &interpreter) - : CommandObjectParsed(interpreter, "list", "List the script or set of " - "commands to be executed when " - "the breakpoint is hit.", - nullptr) { + : CommandObjectParsed(interpreter, "list", + "List the script or set of commands to be " + "executed when the breakpoint is hit.", + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandArgumentData bp_id_arg; @@ -624,14 +612,7 @@ class CommandObjectBreakpointCommandList : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - - if (target == nullptr) { - result.AppendError("There is not a current executable; there are no " - "breakpoints for which to list commands"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); const BreakpointList &breakpoints = target->GetBreakpointList(); size_t num_breakpoints = breakpoints.GetSize(); @@ -651,7 +632,7 @@ class CommandObjectBreakpointCommandList : public CommandObjectParsed { BreakpointIDList valid_bp_ids; CommandObjectMultiwordBreakpoint::VerifyBreakpointOrLocationIDs( - command, target, result, &valid_bp_ids, + command, target, result, &valid_bp_ids, BreakpointName::Permissions::PermissionKinds::listPerm); if (result.Succeeded()) { diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp index 943f508e7ad1173..3da7c5074a334a9 100644 --- a/lldb/source/Commands/CommandObjectCommands.cpp +++ b/lldb/source/Commands/CommandObjectCommands.cpp @@ -31,10 +31,8 @@ using namespace lldb_private; // CommandObjectCommandsSource -static constexpr OptionDefinition g_history_options[] = { #define LLDB_OPTIONS_history #include "CommandOptions.inc" -}; class CommandObjectCommandsHistory : public CommandObjectParsed { public: @@ -87,9 +85,7 @@ class CommandObjectCommandsHistory : public CommandObjectParsed { m_clear.SetOptionWasSet(); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -184,10 +180,8 @@ class CommandObjectCommandsHistory : public CommandObjectParsed { // CommandObjectCommandsSource -static constexpr OptionDefinition g_source_options[] = { #define LLDB_OPTIONS_source #include "CommandOptions.inc" -}; class CommandObjectCommandsSource : public CommandObjectParsed { public: @@ -219,13 +213,12 @@ class CommandObjectCommandsSource : public CommandObjectParsed { return ""; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } Options *GetOptions() override { return &m_options; } @@ -258,9 +251,7 @@ class CommandObjectCommandsSource : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -336,10 +327,8 @@ class CommandObjectCommandsSource : public CommandObjectParsed { #pragma mark CommandObjectCommandsAlias // CommandObjectCommandsAlias -static constexpr OptionDefinition g_alias_options[] = { #define LLDB_OPTIONS_alias #include "CommandOptions.inc" -}; static const char *g_python_command_instructions = "Enter your Python command(s). Type 'DONE' to end.\n" @@ -377,9 +366,7 @@ class CommandObjectCommandsAlias : public CommandObjectRaw { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -872,6 +859,7 @@ class CommandObjectCommandsDelete : public CommandObjectParsed { "defined regular expression command names", GetCommandName().str().c_str()); result.SetStatus(eReturnStatusFailed); + return false; } auto command_name = args[0].ref; @@ -902,10 +890,8 @@ class CommandObjectCommandsDelete : public CommandObjectParsed { // CommandObjectCommandsAddRegex -static constexpr OptionDefinition g_regex_options[] = { #define LLDB_OPTIONS_regex #include "CommandOptions.inc" -}; #pragma mark CommandObjectCommandsAddRegex @@ -974,11 +960,9 @@ a number follows 'f':" if (m_regex_cmd_up) { StringList lines; if (lines.SplitIntoLines(data)) { - const size_t num_lines = lines.GetSize(); bool check_only = false; - for (size_t i = 0; i < num_lines; ++i) { - llvm::StringRef bytes_strref(lines[i]); - Status error = AppendRegexSubstitution(bytes_strref, check_only); + for (const std::string &line : lines) { + Status error = AppendRegexSubstitution(line, check_only); if (error.Fail()) { if (!GetDebugger().GetCommandInterpreter().GetBatchCommandMode()) { StreamSP out_stream = GetDebugger().GetAsyncOutputStream(); @@ -1172,9 +1156,7 @@ a number follows 'f':" m_syntax.assign(option_arg); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1304,8 +1286,6 @@ class CommandObjectScriptingObject : public CommandObjectRaw { bool IsRemovable() const override { return true; } - StructuredData::GenericSP GetImplementingObject() { return m_cmd_obj_sp; } - ScriptedCommandSynchronicity GetSynchronicity() { return m_synchro; } llvm::StringRef GetHelp() override { @@ -1374,11 +1354,8 @@ class CommandObjectScriptingObject : public CommandObjectRaw { }; // CommandObjectCommandsScriptImport - -static constexpr OptionDefinition g_script_import_options[] = { #define LLDB_OPTIONS_script_import #include "CommandOptions.inc" -}; class CommandObjectCommandsScriptImport : public CommandObjectParsed { public: @@ -1403,13 +1380,12 @@ class CommandObjectCommandsScriptImport : public CommandObjectParsed { ~CommandObjectCommandsScriptImport() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } Options *GetOptions() override { return &m_options; } @@ -1431,9 +1407,7 @@ class CommandObjectCommandsScriptImport : public CommandObjectParsed { m_allow_reload = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1497,21 +1471,29 @@ class CommandObjectCommandsScriptImport : public CommandObjectParsed { // CommandObjectCommandsScriptAdd static constexpr OptionEnumValueElement g_script_synchro_type[] = { - {eScriptedCommandSynchronicitySynchronous, "synchronous", - "Run synchronous"}, - {eScriptedCommandSynchronicityAsynchronous, "asynchronous", - "Run asynchronous"}, - {eScriptedCommandSynchronicityCurrentValue, "current", - "Do not alter current setting"} }; + { + eScriptedCommandSynchronicitySynchronous, + "synchronous", + "Run synchronous", + }, + { + eScriptedCommandSynchronicityAsynchronous, + "asynchronous", + "Run asynchronous", + }, + { + eScriptedCommandSynchronicityCurrentValue, + "current", + "Do not alter current setting", + }, +}; static constexpr OptionEnumValues ScriptSynchroType() { return OptionEnumValues(g_script_synchro_type); } -static constexpr OptionDefinition g_script_add_options[] = { #define LLDB_OPTIONS_script_add #include "CommandOptions.inc" -}; class CommandObjectCommandsScriptAdd : public CommandObjectParsed, public IOHandlerDelegateMultiline { @@ -1577,9 +1559,7 @@ class CommandObjectCommandsScriptAdd : public CommandObjectParsed, option_arg.str().c_str()); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1745,6 +1725,12 @@ class CommandObjectCommandsScriptList : public CommandObjectParsed { ~CommandObjectCommandsScriptList() override = default; bool DoExecute(Args &command, CommandReturnObject &result) override { + if (command.GetArgumentCount() != 0) { + result.AppendError("'command script list' doesn't take any arguments"); + result.SetStatus(eReturnStatusFailed); + return false; + } + m_interpreter.GetHelp(result, CommandInterpreter::eCommandTypesUserDef); result.SetStatus(eReturnStatusSuccessFinishResult); @@ -1765,6 +1751,12 @@ class CommandObjectCommandsScriptClear : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { + if (command.GetArgumentCount() != 0) { + result.AppendError("'command script clear' doesn't take any arguments"); + result.SetStatus(eReturnStatusFailed); + return false; + } + m_interpreter.RemoveAllUser(); result.SetStatus(eReturnStatusSuccessFinishResult); diff --git a/lldb/source/Commands/CommandObjectDisassemble.cpp b/lldb/source/Commands/CommandObjectDisassemble.cpp index 34d3f63156aae17..69e2d757b5fe237 100644 --- a/lldb/source/Commands/CommandObjectDisassemble.cpp +++ b/lldb/source/Commands/CommandObjectDisassemble.cpp @@ -30,10 +30,8 @@ using namespace lldb; using namespace lldb_private; -static constexpr OptionDefinition g_disassemble_options[] = { #define LLDB_OPTIONS_disassemble #include "CommandOptions.inc" -}; CommandObjectDisassemble::CommandOptions::CommandOptions() : Options(), num_lines_context(0), num_instructions(0), func_name(), @@ -149,9 +147,7 @@ Status CommandObjectDisassemble::CommandOptions::SetOptionValue( } break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -216,20 +212,15 @@ CommandObjectDisassemble::CommandObjectDisassemble( "Disassemble specified instructions in the current target. " "Defaults to the current function for the current thread and " "stack frame.", - "disassemble []"), + "disassemble []", eCommandRequiresTarget), m_options() {} CommandObjectDisassemble::~CommandObjectDisassemble() = default; bool CommandObjectDisassemble::DoExecute(Args &command, CommandReturnObject &result) { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); + if (!m_options.arch.IsValid()) m_options.arch = target->GetArchitecture(); @@ -519,7 +510,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command, } else { result.AppendErrorWithFormat( "Failed to disassemble memory at 0x%8.8" PRIx64 ".\n", - m_options.start_addr); + cur_range.GetBaseAddress().GetLoadAddress(target)); result.SetStatus(eReturnStatusFailed); } if (print_sc_header) diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index a10f42d977331a4..e8e86560971deaa 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -38,19 +38,24 @@ CommandObjectExpression::CommandOptions::CommandOptions() : OptionGroup() {} CommandObjectExpression::CommandOptions::~CommandOptions() = default; static constexpr OptionEnumValueElement g_description_verbosity_type[] = { - {eLanguageRuntimeDescriptionDisplayVerbosityCompact, "compact", - "Only show the description string"}, - {eLanguageRuntimeDescriptionDisplayVerbosityFull, "full", - "Show the full output, including persistent variable's name and type"} }; + { + eLanguageRuntimeDescriptionDisplayVerbosityCompact, + "compact", + "Only show the description string", + }, + { + eLanguageRuntimeDescriptionDisplayVerbosityFull, + "full", + "Show the full output, including persistent variable's name and type", + }, +}; static constexpr OptionEnumValues DescriptionVerbosityTypes() { return OptionEnumValues(g_description_verbosity_type); } -static constexpr OptionDefinition g_expression_options[] = { #define LLDB_OPTIONS_expression #include "CommandOptions.inc" -}; Status CommandObjectExpression::CommandOptions::SetOptionValue( uint32_t option_idx, llvm::StringRef option_arg, @@ -161,9 +166,7 @@ Status CommandObjectExpression::CommandOptions::SetOptionValue( } default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -289,7 +292,7 @@ CommandObjectExpression::~CommandObjectExpression() = default; Options *CommandObjectExpression::GetOptions() { return &m_option_group; } -int CommandObjectExpression::HandleCompletion(CompletionRequest &request) { +void CommandObjectExpression::HandleCompletion(CompletionRequest &request) { EvaluateExpressionOptions options; options.SetCoerceToId(m_varobj_options.use_objc); options.SetLanguage(m_command_options.language); @@ -306,17 +309,14 @@ int CommandObjectExpression::HandleCompletion(CompletionRequest &request) { // This didn't work, so let's get out before we start doing things that // expect a valid frame pointer. if (m_interpreter.GetExecutionContext().GetFramePtr() == nullptr) - return 0; + return; ExecutionContext exe_ctx(m_interpreter.GetExecutionContext()); Target *target = exe_ctx.GetTargetPtr(); if (!target) - target = GetDummyTarget(); - - if (!target) - return 0; + target = &GetDummyTarget(); unsigned cursor_pos = request.GetRawCursorPos(); llvm::StringRef code = request.GetRawLine(); @@ -336,7 +336,7 @@ int CommandObjectExpression::HandleCompletion(CompletionRequest &request) { // exit. // FIXME: We should complete the options here. if (cursor_pos < raw_start) - return 0; + return; // Make the cursor_pos again relative to the start of the code string. assert(cursor_pos >= raw_start); @@ -349,10 +349,9 @@ int CommandObjectExpression::HandleCompletion(CompletionRequest &request) { code, llvm::StringRef(), language, UserExpression::eResultTypeAny, options, nullptr, error)); if (error.Fail()) - return 0; + return; expr->Complete(exe_ctx, request, cursor_pos); - return request.GetNumberOfMatches(); } static lldb_private::Status @@ -378,123 +377,116 @@ bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr, Target *target = exe_ctx.GetTargetPtr(); if (!target) - target = GetDummyTarget(); - - if (target) { - lldb::ValueObjectSP result_valobj_sp; - bool keep_in_memory = true; - StackFrame *frame = exe_ctx.GetFramePtr(); - - EvaluateExpressionOptions options; - options.SetCoerceToId(m_varobj_options.use_objc); - options.SetUnwindOnError(m_command_options.unwind_on_error); - options.SetIgnoreBreakpoints(m_command_options.ignore_breakpoints); - options.SetKeepInMemory(keep_in_memory); - options.SetUseDynamic(m_varobj_options.use_dynamic); - options.SetTryAllThreads(m_command_options.try_all_threads); - options.SetDebug(m_command_options.debug); - options.SetLanguage(m_command_options.language); - options.SetExecutionPolicy( - m_command_options.allow_jit - ? EvaluateExpressionOptions::default_execution_policy - : lldb_private::eExecutionPolicyNever); - - bool auto_apply_fixits; - if (m_command_options.auto_apply_fixits == eLazyBoolCalculate) - auto_apply_fixits = target->GetEnableAutoApplyFixIts(); - else - auto_apply_fixits = m_command_options.auto_apply_fixits == eLazyBoolYes; + target = &GetDummyTarget(); - options.SetAutoApplyFixIts(auto_apply_fixits); + lldb::ValueObjectSP result_valobj_sp; + bool keep_in_memory = true; + StackFrame *frame = exe_ctx.GetFramePtr(); + + EvaluateExpressionOptions options; + options.SetCoerceToId(m_varobj_options.use_objc); + options.SetUnwindOnError(m_command_options.unwind_on_error); + options.SetIgnoreBreakpoints(m_command_options.ignore_breakpoints); + options.SetKeepInMemory(keep_in_memory); + options.SetUseDynamic(m_varobj_options.use_dynamic); + options.SetTryAllThreads(m_command_options.try_all_threads); + options.SetDebug(m_command_options.debug); + options.SetLanguage(m_command_options.language); + options.SetExecutionPolicy( + m_command_options.allow_jit + ? EvaluateExpressionOptions::default_execution_policy + : lldb_private::eExecutionPolicyNever); + + bool auto_apply_fixits; + if (m_command_options.auto_apply_fixits == eLazyBoolCalculate) + auto_apply_fixits = target->GetEnableAutoApplyFixIts(); + else + auto_apply_fixits = m_command_options.auto_apply_fixits == eLazyBoolYes; - if (m_command_options.top_level) - options.SetExecutionPolicy(eExecutionPolicyTopLevel); + options.SetAutoApplyFixIts(auto_apply_fixits); - // If there is any chance we are going to stop and want to see what went - // wrong with our expression, we should generate debug info - if (!m_command_options.ignore_breakpoints || - !m_command_options.unwind_on_error) - options.SetGenerateDebugInfo(true); + if (m_command_options.top_level) + options.SetExecutionPolicy(eExecutionPolicyTopLevel); - if (m_command_options.timeout > 0) - options.SetTimeout(std::chrono::microseconds(m_command_options.timeout)); - else - options.SetTimeout(llvm::None); - - ExpressionResults success = target->EvaluateExpression( - expr, frame, result_valobj_sp, options, &m_fixed_expression); - - // We only tell you about the FixIt if we applied it. The compiler errors - // will suggest the FixIt if it parsed. - if (error_stream && !m_fixed_expression.empty() && - target->GetEnableNotifyAboutFixIts()) { - if (success == eExpressionCompleted) - error_stream->Printf( - " Fix-it applied, fixed expression was: \n %s\n", - m_fixed_expression.c_str()); - } + // If there is any chance we are going to stop and want to see what went + // wrong with our expression, we should generate debug info + if (!m_command_options.ignore_breakpoints || + !m_command_options.unwind_on_error) + options.SetGenerateDebugInfo(true); - if (result_valobj_sp) { - Format format = m_format_options.GetFormat(); - - if (result_valobj_sp->GetError().Success()) { - if (format != eFormatVoid) { - if (format != eFormatDefault) - result_valobj_sp->SetFormat(format); - - if (m_varobj_options.elem_count > 0) { - Status error(CanBeUsedForElementCountPrinting(*result_valobj_sp)); - if (error.Fail()) { - result->AppendErrorWithFormat( - "expression cannot be used with --element-count %s\n", - error.AsCString("")); - result->SetStatus(eReturnStatusFailed); - return false; - } + if (m_command_options.timeout > 0) + options.SetTimeout(std::chrono::microseconds(m_command_options.timeout)); + else + options.SetTimeout(llvm::None); + + ExpressionResults success = target->EvaluateExpression( + expr, frame, result_valobj_sp, options, &m_fixed_expression); + + // We only tell you about the FixIt if we applied it. The compiler errors + // will suggest the FixIt if it parsed. + if (error_stream && !m_fixed_expression.empty() && + target->GetEnableNotifyAboutFixIts()) { + if (success == eExpressionCompleted) + error_stream->Printf(" Fix-it applied, fixed expression was: \n %s\n", + m_fixed_expression.c_str()); + } + + if (result_valobj_sp) { + Format format = m_format_options.GetFormat(); + + if (result_valobj_sp->GetError().Success()) { + if (format != eFormatVoid) { + if (format != eFormatDefault) + result_valobj_sp->SetFormat(format); + + if (m_varobj_options.elem_count > 0) { + Status error(CanBeUsedForElementCountPrinting(*result_valobj_sp)); + if (error.Fail()) { + result->AppendErrorWithFormat( + "expression cannot be used with --element-count %s\n", + error.AsCString("")); + result->SetStatus(eReturnStatusFailed); + return false; } + } - DumpValueObjectOptions options(m_varobj_options.GetAsDumpOptions( - m_command_options.m_verbosity, format)); - options.SetVariableFormatDisplayLanguage( - result_valobj_sp->GetPreferredDisplayLanguage()); + DumpValueObjectOptions options(m_varobj_options.GetAsDumpOptions( + m_command_options.m_verbosity, format)); + options.SetVariableFormatDisplayLanguage( + result_valobj_sp->GetPreferredDisplayLanguage()); - result_valobj_sp->Dump(*output_stream, options); + result_valobj_sp->Dump(*output_stream, options); - if (result) - result->SetStatus(eReturnStatusSuccessFinishResult); + if (result) + result->SetStatus(eReturnStatusSuccessFinishResult); + } + } else { + if (result_valobj_sp->GetError().GetError() == + UserExpression::kNoResult) { + if (format != eFormatVoid && GetDebugger().GetNotifyVoid()) { + error_stream->PutCString("(void)\n"); } - } else { - if (result_valobj_sp->GetError().GetError() == - UserExpression::kNoResult) { - if (format != eFormatVoid && GetDebugger().GetNotifyVoid()) { - error_stream->PutCString("(void)\n"); - } - if (result) - result->SetStatus(eReturnStatusSuccessFinishResult); + if (result) + result->SetStatus(eReturnStatusSuccessFinishResult); + } else { + const char *error_cstr = result_valobj_sp->GetError().AsCString(); + if (error_cstr && error_cstr[0]) { + const size_t error_cstr_len = strlen(error_cstr); + const bool ends_with_newline = error_cstr[error_cstr_len - 1] == '\n'; + if (strstr(error_cstr, "error:") != error_cstr) + error_stream->PutCString("error: "); + error_stream->Write(error_cstr, error_cstr_len); + if (!ends_with_newline) + error_stream->EOL(); } else { - const char *error_cstr = result_valobj_sp->GetError().AsCString(); - if (error_cstr && error_cstr[0]) { - const size_t error_cstr_len = strlen(error_cstr); - const bool ends_with_newline = - error_cstr[error_cstr_len - 1] == '\n'; - if (strstr(error_cstr, "error:") != error_cstr) - error_stream->PutCString("error: "); - error_stream->Write(error_cstr, error_cstr_len); - if (!ends_with_newline) - error_stream->EOL(); - } else { - error_stream->PutCString("error: unknown error\n"); - } - - if (result) - result->SetStatus(eReturnStatusFailed); + error_stream->PutCString("error: unknown error\n"); } + + if (result) + result->SetStatus(eReturnStatusFailed); } } - } else { - error_stream->Printf("error: invalid execution context for expression\n"); - return false; } return true; @@ -660,11 +652,11 @@ bool CommandObjectExpression::DoExecute(llvm::StringRef command, } } - Target *target = GetSelectedOrDummyTarget(); + Target &target = GetSelectedOrDummyTarget(); if (EvaluateExpression(expr, &(result.GetOutputStream()), &(result.GetErrorStream()), &result)) { - if (!m_fixed_expression.empty() && target->GetEnableNotifyAboutFixIts()) { + if (!m_fixed_expression.empty() && target.GetEnableNotifyAboutFixIts()) { CommandHistory &history = m_interpreter.GetCommandHistory(); // FIXME: Can we figure out what the user actually typed (e.g. some alias // for expr???) @@ -679,12 +671,12 @@ bool CommandObjectExpression::DoExecute(llvm::StringRef command, history.AppendString(fixed_command); } // Increment statistics to record this expression evaluation success. - target->IncrementStats(StatisticKind::ExpressionSuccessful); + target.IncrementStats(StatisticKind::ExpressionSuccessful); return true; } // Increment statistics to record this expression evaluation failure. - target->IncrementStats(StatisticKind::ExpressionFailure); + target.IncrementStats(StatisticKind::ExpressionFailure); result.SetStatus(eReturnStatusFailed); return false; } diff --git a/lldb/source/Commands/CommandObjectExpression.h b/lldb/source/Commands/CommandObjectExpression.h index 89c8e1dbecebdf3..8ef764239069fe7 100644 --- a/lldb/source/Commands/CommandObjectExpression.h +++ b/lldb/source/Commands/CommandObjectExpression.h @@ -54,7 +54,7 @@ class CommandObjectExpression : public CommandObjectRaw, Options *GetOptions() override; - int HandleCompletion(CompletionRequest &request) override; + void HandleCompletion(CompletionRequest &request) override; protected: // IOHandler::Delegate functions diff --git a/lldb/source/Commands/CommandObjectFrame.cpp b/lldb/source/Commands/CommandObjectFrame.cpp index a6f4354d97471ae..5cf2d6cd5879bbc 100644 --- a/lldb/source/Commands/CommandObjectFrame.cpp +++ b/lldb/source/Commands/CommandObjectFrame.cpp @@ -23,7 +23,6 @@ #include "lldb/Interpreter/OptionGroupValueObjectDisplay.h" #include "lldb/Interpreter/OptionGroupVariable.h" #include "lldb/Interpreter/Options.h" -#include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/CompilerType.h" #include "lldb/Symbol/Function.h" #include "lldb/Symbol/ObjectFile.h" @@ -54,10 +53,8 @@ using namespace lldb_private; // CommandObjectFrameDiagnose -static constexpr OptionDefinition g_frame_diag_options[] = { #define LLDB_OPTIONS_frame_diag #include "CommandOptions.inc" -}; class CommandObjectFrameDiagnose : public CommandObjectParsed { public: @@ -95,9 +92,7 @@ class CommandObjectFrameDiagnose : public CommandObjectParsed { } break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -235,10 +230,8 @@ class CommandObjectFrameInfo : public CommandObjectParsed { // CommandObjectFrameSelect -static OptionDefinition g_frame_select_options[] = { #define LLDB_OPTIONS_frame_select #include "CommandOptions.inc" -}; class CommandObjectFrameSelect : public CommandObjectParsed { public: @@ -253,32 +246,30 @@ class CommandObjectFrameSelect : public CommandObjectParsed { Status error; const int short_option = m_getopt_table[option_idx].val; switch (short_option) { - case 'r': - if (option_arg.getAsInteger(0, relative_frame_offset)) { - relative_frame_offset = INT32_MIN; + case 'r': { + int32_t offset = 0; + if (option_arg.getAsInteger(0, offset) || offset == INT32_MIN) { error.SetErrorStringWithFormat("invalid frame offset argument '%s'", option_arg.str().c_str()); - } + } else + relative_frame_offset = offset; break; + } default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } - void OptionParsingStarting(ExecutionContext *execution_context) override { - relative_frame_offset = INT32_MIN; - } - + void OptionParsingStarting(ExecutionContext *execution_context) override {} + llvm::ArrayRef GetDefinitions() override { return llvm::makeArrayRef(g_frame_select_options); } - int32_t relative_frame_offset; + llvm::Optional relative_frame_offset; }; CommandObjectFrameSelect(CommandInterpreter &interpreter) @@ -316,15 +307,15 @@ class CommandObjectFrameSelect : public CommandObjectParsed { Thread *thread = m_exe_ctx.GetThreadPtr(); uint32_t frame_idx = UINT32_MAX; - if (m_options.relative_frame_offset != INT32_MIN) { + if (m_options.relative_frame_offset.hasValue()) { // The one and only argument is a signed relative frame index frame_idx = thread->GetSelectedFrameIndex(); if (frame_idx == UINT32_MAX) frame_idx = 0; - if (m_options.relative_frame_offset < 0) { - if (static_cast(frame_idx) >= -m_options.relative_frame_offset) - frame_idx += m_options.relative_frame_offset; + if (*m_options.relative_frame_offset < 0) { + if (static_cast(frame_idx) >= -*m_options.relative_frame_offset) + frame_idx += *m_options.relative_frame_offset; else { if (frame_idx == 0) { // If you are already at the bottom of the stack, then just warn @@ -335,15 +326,15 @@ class CommandObjectFrameSelect : public CommandObjectParsed { } else frame_idx = 0; } - } else if (m_options.relative_frame_offset > 0) { + } else if (*m_options.relative_frame_offset > 0) { // I don't want "up 20" where "20" takes you past the top of the stack // to produce // an error, but rather to just go to the top. So I have to count the // stack here... const uint32_t num_frames = thread->GetStackFrameCount(); if (static_cast(num_frames - frame_idx) > - m_options.relative_frame_offset) - frame_idx += m_options.relative_frame_offset; + *m_options.relative_frame_offset) + frame_idx += *m_options.relative_frame_offset; else { if (frame_idx == num_frames - 1) { // If we are already at the top of the stack, just warn and don't @@ -456,14 +447,13 @@ class CommandObjectFrameVariable : public CommandObjectParsed { Options *GetOptions() override { return &m_option_group; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { // Arguments are the standard source file completer. CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eVariablePathCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: @@ -539,7 +529,7 @@ class CommandObjectFrameVariable : public CommandObjectParsed { const size_t regex_start_index = regex_var_list.GetSize(); llvm::StringRef name_str = entry.ref; RegularExpression regex(name_str); - if (regex.Compile(name_str)) { + if (regex.IsValid()) { size_t num_matches = 0; const size_t num_new_regex_vars = variable_list->AppendVariablesIfUnique(regex, regex_var_list, @@ -578,9 +568,9 @@ class CommandObjectFrameVariable : public CommandObjectParsed { entry.c_str()); } } else { - char regex_error[1024]; - if (regex.GetErrorAsCString(regex_error, sizeof(regex_error))) - result.GetErrorStream().Printf("error: %s\n", regex_error); + if (llvm::Error err = regex.GetError()) + result.GetErrorStream().Printf( + "error: %s\n", llvm::toString(std::move(err)).c_str()); else result.GetErrorStream().Printf( "error: unknown regex error when compiling '%s'\n", @@ -723,11 +713,11 @@ class CommandObjectFrameVariable : public CommandObjectParsed { // Increment statistics. bool res = result.Succeeded(); - Target *target = GetSelectedOrDummyTarget(); + Target &target = GetSelectedOrDummyTarget(); if (res) - target->IncrementStats(StatisticKind::FrameVarSuccess); + target.IncrementStats(StatisticKind::FrameVarSuccess); else - target->IncrementStats(StatisticKind::FrameVarFailure); + target.IncrementStats(StatisticKind::FrameVarFailure); return res; } @@ -740,10 +730,8 @@ class CommandObjectFrameVariable : public CommandObjectParsed { #pragma mark CommandObjectFrameRecognizer -static OptionDefinition g_frame_recognizer_add_options[] = { #define LLDB_OPTIONS_frame_recognizer_add #include "CommandOptions.inc" -}; class CommandObjectFrameRecognizerAdd : public CommandObjectParsed { private: @@ -771,9 +759,7 @@ class CommandObjectFrameRecognizerAdd : public CommandObjectParsed { m_regex = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; diff --git a/lldb/source/Commands/CommandObjectHelp.cpp b/lldb/source/Commands/CommandObjectHelp.cpp index ad53e03121f0d37..78e19f734168235 100644 --- a/lldb/source/Commands/CommandObjectHelp.cpp +++ b/lldb/source/Commands/CommandObjectHelp.cpp @@ -65,10 +65,8 @@ CommandObjectHelp::CommandObjectHelp(CommandInterpreter &interpreter) CommandObjectHelp::~CommandObjectHelp() = default; -static constexpr OptionDefinition g_help_options[] = { #define LLDB_OPTIONS_help -#include "Options.inc" -}; +#include "CommandOptions.inc" llvm::ArrayRef CommandObjectHelp::CommandOptions::GetDefinitions() { @@ -203,24 +201,24 @@ bool CommandObjectHelp::DoExecute(Args &command, CommandReturnObject &result) { return result.Succeeded(); } -int CommandObjectHelp::HandleCompletion(CompletionRequest &request) { +void CommandObjectHelp::HandleCompletion(CompletionRequest &request) { // Return the completions of the commands in the help system: if (request.GetCursorIndex() == 0) { - return m_interpreter.HandleCompletionMatches(request); - } else { - CommandObject *cmd_obj = - m_interpreter.GetCommandObject(request.GetParsedLine()[0].ref); + m_interpreter.HandleCompletionMatches(request); + return; + } + CommandObject *cmd_obj = + m_interpreter.GetCommandObject(request.GetParsedLine()[0].ref); - // The command that they are getting help on might be ambiguous, in which - // case we should complete that, otherwise complete with the command the - // user is getting help on... + // The command that they are getting help on might be ambiguous, in which + // case we should complete that, otherwise complete with the command the + // user is getting help on... - if (cmd_obj) { - request.GetParsedLine().Shift(); - request.SetCursorIndex(request.GetCursorIndex() - 1); - return cmd_obj->HandleCompletion(request); - } else { - return m_interpreter.HandleCompletionMatches(request); - } + if (cmd_obj) { + request.GetParsedLine().Shift(); + request.SetCursorIndex(request.GetCursorIndex() - 1); + cmd_obj->HandleCompletion(request); + return; } + m_interpreter.HandleCompletionMatches(request); } diff --git a/lldb/source/Commands/CommandObjectHelp.h b/lldb/source/Commands/CommandObjectHelp.h index a641b19a46d0991..52a00ac79ff9a6d 100644 --- a/lldb/source/Commands/CommandObjectHelp.h +++ b/lldb/source/Commands/CommandObjectHelp.h @@ -23,7 +23,7 @@ class CommandObjectHelp : public CommandObjectParsed { ~CommandObjectHelp() override; - int HandleCompletion(CompletionRequest &request) override; + void HandleCompletion(CompletionRequest &request) override; static void GenerateAdditionalHelpAvenuesMessage( Stream *s, llvm::StringRef command, llvm::StringRef prefix, @@ -52,9 +52,7 @@ class CommandObjectHelp : public CommandObjectParsed { m_show_hidden = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; diff --git a/lldb/source/Commands/CommandObjectLog.cpp b/lldb/source/Commands/CommandObjectLog.cpp index e096836cbaf508c..314405e03103690 100644 --- a/lldb/source/Commands/CommandObjectLog.cpp +++ b/lldb/source/Commands/CommandObjectLog.cpp @@ -31,10 +31,8 @@ using namespace lldb; using namespace lldb_private; -static constexpr OptionDefinition g_log_options[] = { #define LLDB_OPTIONS_log #include "CommandOptions.inc" -}; class CommandObjectLogEnable : public CommandObjectParsed { public: @@ -115,9 +113,7 @@ class CommandObjectLogEnable : public CommandObjectParsed { log_options |= LLDB_LOG_OPTION_PREPEND_FILE_FUNCTION; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -144,6 +140,7 @@ class CommandObjectLogEnable : public CommandObjectParsed { result.AppendErrorWithFormat( "%s takes a log channel and one or more log types.\n", m_cmd_name.c_str()); + result.SetStatus(eReturnStatusFailed); return false; } @@ -211,6 +208,7 @@ class CommandObjectLogDisable : public CommandObjectParsed { result.AppendErrorWithFormat( "%s takes a log channel and one or more log types.\n", m_cmd_name.c_str()); + result.SetStatus(eReturnStatusFailed); return false; } diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index 7409915665f2570..57ff00f3aa06973 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -46,10 +46,8 @@ using namespace lldb; using namespace lldb_private; -static constexpr OptionDefinition g_read_memory_options[] = { #define LLDB_OPTIONS_memory_read #include "CommandOptions.inc" -}; class OptionGroupReadMemory : public OptionGroup { public: @@ -60,13 +58,13 @@ class OptionGroupReadMemory : public OptionGroup { ~OptionGroupReadMemory() override = default; llvm::ArrayRef GetDefinitions() override { - return llvm::makeArrayRef(g_read_memory_options); + return llvm::makeArrayRef(g_memory_read_options); } Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Status error; - const int short_option = g_read_memory_options[option_idx].short_option; + const int short_option = g_memory_read_options[option_idx].short_option; switch (short_option) { case 'l': @@ -98,9 +96,7 @@ class OptionGroupReadMemory : public OptionGroup { break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -165,6 +161,7 @@ class OptionGroupReadMemory : public OptionGroup { case eFormatOctal: case eFormatDecimal: case eFormatEnum: + case eFormatUnicode8: case eFormatUnicode16: case eFormatUnicode32: case eFormatUnsigned: @@ -896,10 +893,8 @@ class CommandObjectMemoryRead : public CommandObjectParsed { CompilerType m_prev_compiler_type; }; -static constexpr OptionDefinition g_memory_find_option_table[] = { #define LLDB_OPTIONS_memory_find #include "CommandOptions.inc" -}; // Find the specified data in memory class CommandObjectMemoryFind : public CommandObjectParsed { @@ -911,14 +906,13 @@ class CommandObjectMemoryFind : public CommandObjectParsed { ~OptionGroupFindMemory() override = default; llvm::ArrayRef GetDefinitions() override { - return llvm::makeArrayRef(g_memory_find_option_table); + return llvm::makeArrayRef(g_memory_find_options); } Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Status error; - const int short_option = - g_memory_find_option_table[option_idx].short_option; + const int short_option = g_memory_find_options[option_idx].short_option; switch (short_option) { case 'e': @@ -940,9 +934,7 @@ class CommandObjectMemoryFind : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1189,10 +1181,8 @@ class CommandObjectMemoryFind : public CommandObjectParsed { OptionGroupFindMemory m_memory_options; }; -static constexpr OptionDefinition g_memory_write_option_table[] = { #define LLDB_OPTIONS_memory_write #include "CommandOptions.inc" -}; // Write memory to the inferior process class CommandObjectMemoryWrite : public CommandObjectParsed { @@ -1204,14 +1194,13 @@ class CommandObjectMemoryWrite : public CommandObjectParsed { ~OptionGroupWriteMemory() override = default; llvm::ArrayRef GetDefinitions() override { - return llvm::makeArrayRef(g_memory_write_option_table); + return llvm::makeArrayRef(g_memory_write_options); } Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, ExecutionContext *execution_context) override { Status error; - const int short_option = - g_memory_write_option_table[option_idx].short_option; + const int short_option = g_memory_write_options[option_idx].short_option; switch (short_option) { case 'i': @@ -1233,9 +1222,7 @@ class CommandObjectMemoryWrite : public CommandObjectParsed { } break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1419,6 +1406,7 @@ class CommandObjectMemoryWrite : public CommandObjectParsed { case eFormatBytesWithASCII: case eFormatComplex: case eFormatEnum: + case eFormatUnicode8: case eFormatUnicode16: case eFormatUnicode32: case eFormatVectorOfChar: diff --git a/lldb/source/Commands/CommandObjectMultiword.cpp b/lldb/source/Commands/CommandObjectMultiword.cpp index 4011cceb8a26b5b..a223d709535ab25 100644 --- a/lldb/source/Commands/CommandObjectMultiword.cpp +++ b/lldb/source/Commands/CommandObjectMultiword.cpp @@ -136,9 +136,9 @@ bool CommandObjectMultiword::Execute(const char *args_string, if (num_subcmd_matches > 0) { error_msg.append(" Possible completions:"); - for (size_t i = 0; i < matches.GetSize(); i++) { + for (const std::string &match : matches) { error_msg.append("\n\t"); - error_msg.append(matches.GetStringAtIndex(i)); + error_msg.append(match); } } error_msg.append("\n"); @@ -179,11 +179,7 @@ void CommandObjectMultiword::GenerateHelpText(Stream &output_stream) { "'help '.\n"); } -int CommandObjectMultiword::HandleCompletion(CompletionRequest &request) { - // Any of the command matches will provide a complete word, otherwise the - // individual completers will override this. - request.SetWordComplete(true); - +void CommandObjectMultiword::HandleCompletion(CompletionRequest &request) { auto arg0 = request.GetParsedLine()[0].ref; if (request.GetCursorIndex() == 0) { StringList new_matches, descriptions; @@ -197,32 +193,30 @@ int CommandObjectMultiword::HandleCompletion(CompletionRequest &request) { StringList temp_matches; CommandObject *cmd_obj = GetSubcommandObject(arg0, &temp_matches); if (cmd_obj != nullptr) { - if (request.GetParsedLine().GetArgumentCount() == 1) { - request.SetWordComplete(true); - } else { + if (request.GetParsedLine().GetArgumentCount() != 1) { request.GetParsedLine().Shift(); request.SetCursorCharPosition(0); request.GetParsedLine().AppendArgument(llvm::StringRef()); - return cmd_obj->HandleCompletion(request); + cmd_obj->HandleCompletion(request); } } } - return new_matches.GetSize(); - } else { - StringList new_matches; - CommandObject *sub_command_object = GetSubcommandObject(arg0, &new_matches); - if (sub_command_object == nullptr) { - request.AddCompletions(new_matches); - return request.GetNumberOfMatches(); - } else { - // Remove the one match that we got from calling GetSubcommandObject. - new_matches.DeleteStringAtIndex(0); - request.AddCompletions(new_matches); - request.GetParsedLine().Shift(); - request.SetCursorIndex(request.GetCursorIndex() - 1); - return sub_command_object->HandleCompletion(request); - } + return; } + + StringList new_matches; + CommandObject *sub_command_object = GetSubcommandObject(arg0, &new_matches); + if (sub_command_object == nullptr) { + request.AddCompletions(new_matches); + return; + } + + // Remove the one match that we got from calling GetSubcommandObject. + new_matches.DeleteStringAtIndex(0); + request.AddCompletions(new_matches); + request.GetParsedLine().Shift(); + request.SetCursorIndex(request.GetCursorIndex() - 1); + sub_command_object->HandleCompletion(request); } const char *CommandObjectMultiword::GetRepeatCommand(Args ¤t_command_args, @@ -360,19 +354,17 @@ Options *CommandObjectProxy::GetOptions() { return nullptr; } -int CommandObjectProxy::HandleCompletion(CompletionRequest &request) { +void CommandObjectProxy::HandleCompletion(CompletionRequest &request) { CommandObject *proxy_command = GetProxyCommandObject(); if (proxy_command) - return proxy_command->HandleCompletion(request); - return 0; + proxy_command->HandleCompletion(request); } -int CommandObjectProxy::HandleArgumentCompletion( +void CommandObjectProxy::HandleArgumentCompletion( CompletionRequest &request, OptionElementVector &opt_element_vector) { CommandObject *proxy_command = GetProxyCommandObject(); if (proxy_command) - return proxy_command->HandleArgumentCompletion(request, opt_element_vector); - return 0; + proxy_command->HandleArgumentCompletion(request, opt_element_vector); } const char *CommandObjectProxy::GetRepeatCommand(Args ¤t_command_args, diff --git a/lldb/source/Commands/CommandObjectPlatform.cpp b/lldb/source/Commands/CommandObjectPlatform.cpp index d1054020c8197d9..0bd12d1828360e0 100644 --- a/lldb/source/Commands/CommandObjectPlatform.cpp +++ b/lldb/source/Commands/CommandObjectPlatform.cpp @@ -58,10 +58,8 @@ static mode_t ParsePermissionString(llvm::StringRef permissions) { return user | group | world; } -static constexpr OptionDefinition g_permissions_options[] = { #define LLDB_OPTIONS_permissions #include "CommandOptions.inc" -}; class OptionPermissions : public OptionGroup { public: @@ -119,8 +117,7 @@ class OptionPermissions : public OptionGroup { m_permissions |= lldb::eFilePermissionsWorldExecute; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -160,10 +157,9 @@ class CommandObjectPlatformSelect : public CommandObjectParsed { ~CommandObjectPlatformSelect() override = default; - int HandleCompletion(CompletionRequest &request) override { + void HandleCompletion(CompletionRequest &request) override { CommandCompletions::PlatformPluginNames(GetCommandInterpreter(), request, nullptr); - return request.GetNumberOfMatches(); } Options *GetOptions() override { return &m_option_group; } @@ -574,10 +570,8 @@ class CommandObjectPlatformFClose : public CommandObjectParsed { // "platform fread" -static constexpr OptionDefinition g_platform_fread_options[] = { #define LLDB_OPTIONS_platform_fread #include "CommandOptions.inc" -}; class CommandObjectPlatformFRead : public CommandObjectParsed { public: @@ -637,9 +631,7 @@ class CommandObjectPlatformFRead : public CommandObjectParsed { option_arg.str().c_str()); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -665,10 +657,8 @@ class CommandObjectPlatformFRead : public CommandObjectParsed { // "platform fwrite" -static constexpr OptionDefinition g_platform_fwrite_options[] = { #define LLDB_OPTIONS_platform_fwrite #include "CommandOptions.inc" -}; class CommandObjectPlatformFWrite : public CommandObjectParsed { public: @@ -725,9 +715,7 @@ class CommandObjectPlatformFWrite : public CommandObjectParsed { m_data.assign(option_arg); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1041,10 +1029,9 @@ class CommandObjectPlatformProcessLaunch : public CommandObjectParsed { // "platform process list" -static OptionDefinition g_platform_process_list_options[] = { +static PosixPlatformCommandOptionValidator posix_validator; #define LLDB_OPTIONS_platform_process_list #include "CommandOptions.inc" -}; class CommandObjectPlatformProcessList : public CommandObjectParsed { public: @@ -1166,23 +1153,6 @@ class CommandObjectPlatformProcessList : public CommandObjectParsed { public: CommandOptions() : Options(), match_info(), show_args(false), verbose(false) { - static llvm::once_flag g_once_flag; - llvm::call_once(g_once_flag, []() { - PosixPlatformCommandOptionValidator *posix_validator = - new PosixPlatformCommandOptionValidator(); - for (auto &Option : g_platform_process_list_options) { - switch (Option.short_option) { - case 'u': - case 'U': - case 'g': - case 'G': - Option.validator = posix_validator; - break; - default: - break; - } - } - }); } ~CommandOptions() override = default; @@ -1295,9 +1265,7 @@ class CommandObjectPlatformProcessList : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1407,10 +1375,8 @@ class CommandObjectPlatformProcessInfo : public CommandObjectParsed { } }; -static constexpr OptionDefinition g_platform_process_attach_options[] = { #define LLDB_OPTIONS_platform_process_attach #include "CommandOptions.inc" -}; class CommandObjectPlatformProcessAttach : public CommandObjectParsed { public: @@ -1453,9 +1419,7 @@ class CommandObjectPlatformProcessAttach : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1468,7 +1432,7 @@ class CommandObjectPlatformProcessAttach : public CommandObjectParsed { return llvm::makeArrayRef(g_platform_process_attach_options); } - bool HandleOptionArgumentCompletion( + void HandleOptionArgumentCompletion( CompletionRequest &request, OptionElementVector &opt_element_vector, int opt_element_index, CommandInterpreter &interpreter) override { int opt_arg_pos = opt_element_vector[opt_element_index].opt_arg_pos; @@ -1476,37 +1440,36 @@ class CommandObjectPlatformProcessAttach : public CommandObjectParsed { // We are only completing the name option for now... - if (GetDefinitions()[opt_defs_index].short_option == 'n') { - // Are we in the name? + // Are we in the name? + if (GetDefinitions()[opt_defs_index].short_option != 'n') + return; - // Look to see if there is a -P argument provided, and if so use that - // plugin, otherwise use the default plugin. + // Look to see if there is a -P argument provided, and if so use that + // plugin, otherwise use the default plugin. - const char *partial_name = nullptr; - partial_name = request.GetParsedLine().GetArgumentAtIndex(opt_arg_pos); + const char *partial_name = nullptr; + partial_name = request.GetParsedLine().GetArgumentAtIndex(opt_arg_pos); - PlatformSP platform_sp(interpreter.GetPlatform(true)); - if (platform_sp) { - ProcessInstanceInfoList process_infos; - ProcessInstanceInfoMatch match_info; - if (partial_name) { - match_info.GetProcessInfo().GetExecutableFile().SetFile( - partial_name, FileSpec::Style::native); - match_info.SetNameMatchType(NameMatch::StartsWith); - } - platform_sp->FindProcesses(match_info, process_infos); - const uint32_t num_matches = process_infos.GetSize(); - if (num_matches > 0) { - for (uint32_t i = 0; i < num_matches; ++i) { - request.AddCompletion(llvm::StringRef( - process_infos.GetProcessNameAtIndex(i), - process_infos.GetProcessNameLengthAtIndex(i))); - } - } - } + PlatformSP platform_sp(interpreter.GetPlatform(true)); + if (!platform_sp) + return; + + ProcessInstanceInfoList process_infos; + ProcessInstanceInfoMatch match_info; + if (partial_name) { + match_info.GetProcessInfo().GetExecutableFile().SetFile( + partial_name, FileSpec::Style::native); + match_info.SetNameMatchType(NameMatch::StartsWith); } + platform_sp->FindProcesses(match_info, process_infos); + const uint32_t num_matches = process_infos.GetSize(); + if (num_matches == 0) + return; - return false; + for (uint32_t i = 0; i < num_matches; ++i) { + request.AddCompletion(process_infos.GetProcessNameAtIndex(i)); + } + return; } // Options table: Required for subclasses of Options. @@ -1582,10 +1545,8 @@ class CommandObjectPlatformProcess : public CommandObjectMultiword { }; // "platform shell" -static constexpr OptionDefinition g_platform_shell_options[] = { #define LLDB_OPTIONS_platform_shell #include "CommandOptions.inc" -}; class CommandObjectPlatformShell : public CommandObjectRaw { public: @@ -1616,9 +1577,7 @@ class CommandObjectPlatformShell : public CommandObjectRaw { timeout = std::chrono::seconds(timeout_sec); break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; diff --git a/lldb/source/Commands/CommandObjectPlugin.cpp b/lldb/source/Commands/CommandObjectPlugin.cpp index 89e01ba52027304..670835c30491036 100644 --- a/lldb/source/Commands/CommandObjectPlugin.cpp +++ b/lldb/source/Commands/CommandObjectPlugin.cpp @@ -37,13 +37,12 @@ class CommandObjectPluginLoad : public CommandObjectParsed { ~CommandObjectPluginLoad() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp index 72286028a04b99d..eb559cd9ba7bc33 100644 --- a/lldb/source/Commands/CommandObjectProcess.cpp +++ b/lldb/source/Commands/CommandObjectProcess.cpp @@ -127,14 +127,13 @@ class CommandObjectProcessLaunch : public CommandObjectProcessLaunchOrAttach { ~CommandObjectProcessLaunch() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } Options *GetOptions() override { return &m_options; } @@ -255,10 +254,8 @@ class CommandObjectProcessLaunch : public CommandObjectProcessLaunchOrAttach { ProcessLaunchCommandOptions m_options; }; -static constexpr OptionDefinition g_process_attach_options[] = { #define LLDB_OPTIONS_process_attach #include "CommandOptions.inc" -}; #pragma mark CommandObjectProcessAttach class CommandObjectProcessAttach : public CommandObjectProcessLaunchOrAttach { @@ -310,9 +307,7 @@ class CommandObjectProcessAttach : public CommandObjectProcessLaunchOrAttach { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -325,7 +320,7 @@ class CommandObjectProcessAttach : public CommandObjectProcessLaunchOrAttach { return llvm::makeArrayRef(g_process_attach_options); } - bool HandleOptionArgumentCompletion( + void HandleOptionArgumentCompletion( CompletionRequest &request, OptionElementVector &opt_element_vector, int opt_element_index, CommandInterpreter &interpreter) override { int opt_arg_pos = opt_element_vector[opt_element_index].opt_arg_pos; @@ -333,37 +328,33 @@ class CommandObjectProcessAttach : public CommandObjectProcessLaunchOrAttach { // We are only completing the name option for now... - if (GetDefinitions()[opt_defs_index].short_option == 'n') { - // Are we in the name? - - // Look to see if there is a -P argument provided, and if so use that - // plugin, otherwise use the default plugin. - - const char *partial_name = nullptr; - partial_name = request.GetParsedLine().GetArgumentAtIndex(opt_arg_pos); - - PlatformSP platform_sp(interpreter.GetPlatform(true)); - if (platform_sp) { - ProcessInstanceInfoList process_infos; - ProcessInstanceInfoMatch match_info; - if (partial_name) { - match_info.GetProcessInfo().GetExecutableFile().SetFile( - partial_name, FileSpec::Style::native); - match_info.SetNameMatchType(NameMatch::StartsWith); - } - platform_sp->FindProcesses(match_info, process_infos); - const size_t num_matches = process_infos.GetSize(); - if (num_matches > 0) { - for (size_t i = 0; i < num_matches; ++i) { - request.AddCompletion(llvm::StringRef( - process_infos.GetProcessNameAtIndex(i), - process_infos.GetProcessNameLengthAtIndex(i))); - } - } - } + // Are we in the name? + if (GetDefinitions()[opt_defs_index].short_option != 'n') + return; + + // Look to see if there is a -P argument provided, and if so use that + // plugin, otherwise use the default plugin. + + const char *partial_name = nullptr; + partial_name = request.GetParsedLine().GetArgumentAtIndex(opt_arg_pos); + + PlatformSP platform_sp(interpreter.GetPlatform(true)); + if (!platform_sp) + return; + ProcessInstanceInfoList process_infos; + ProcessInstanceInfoMatch match_info; + if (partial_name) { + match_info.GetProcessInfo().GetExecutableFile().SetFile( + partial_name, FileSpec::Style::native); + match_info.SetNameMatchType(NameMatch::StartsWith); + } + platform_sp->FindProcesses(match_info, process_infos); + const size_t num_matches = process_infos.GetSize(); + if (num_matches == 0) + return; + for (size_t i = 0; i < num_matches; ++i) { + request.AddCompletion(process_infos.GetProcessNameAtIndex(i)); } - - return false; } // Instance variables to hold the values for command options. @@ -499,10 +490,8 @@ class CommandObjectProcessAttach : public CommandObjectProcessLaunchOrAttach { // CommandObjectProcessContinue -static constexpr OptionDefinition g_process_continue_options[] = { #define LLDB_OPTIONS_process_continue #include "CommandOptions.inc" -}; #pragma mark CommandObjectProcessContinue @@ -543,9 +532,7 @@ class CommandObjectProcessContinue : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -659,10 +646,8 @@ class CommandObjectProcessContinue : public CommandObjectParsed { }; // CommandObjectProcessDetach -static constexpr OptionDefinition g_process_detach_options[] = { #define LLDB_OPTIONS_process_detach #include "CommandOptions.inc" -}; #pragma mark CommandObjectProcessDetach @@ -695,9 +680,7 @@ class CommandObjectProcessDetach : public CommandObjectParsed { } break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -754,11 +737,8 @@ class CommandObjectProcessDetach : public CommandObjectParsed { }; // CommandObjectProcessConnect - -static constexpr OptionDefinition g_process_connect_options[] = { #define LLDB_OPTIONS_process_connect #include "CommandOptions.inc" -}; #pragma mark CommandObjectProcessConnect @@ -785,9 +765,7 @@ class CommandObjectProcessConnect : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -878,11 +856,8 @@ class CommandObjectProcessPlugin : public CommandObjectProxy { }; // CommandObjectProcessLoad - -static constexpr OptionDefinition g_process_load_options[] = { #define LLDB_OPTIONS_process_load #include "CommandOptions.inc" -}; #pragma mark CommandObjectProcessLoad @@ -909,9 +884,7 @@ class CommandObjectProcessLoad : public CommandObjectParsed { install_path.SetFile(option_arg, FileSpec::Style::native); break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1261,11 +1234,8 @@ class CommandObjectProcessStatus : public CommandObjectParsed { }; // CommandObjectProcessHandle - -static constexpr OptionDefinition g_process_handle_options[] = { #define LLDB_OPTIONS_process_handle #include "CommandOptions.inc" -}; #pragma mark CommandObjectProcessHandle @@ -1293,9 +1263,7 @@ class CommandObjectProcessHandle : public CommandObjectParsed { pass = option_arg; break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1322,7 +1290,7 @@ class CommandObjectProcessHandle : public CommandObjectParsed { "Manage LLDB handling of OS signals for the " "current target process. Defaults to showing " "current policy.", - nullptr), + nullptr, eCommandRequiresTarget), m_options() { SetHelpLong("\nIf no signals are specified, update them all. If no update " "option is specified, list the current values."); @@ -1407,15 +1375,7 @@ class CommandObjectProcessHandle : public CommandObjectParsed { protected: bool DoExecute(Args &signal_args, CommandReturnObject &result) override { - TargetSP target_sp = GetDebugger().GetSelectedTarget(); - - if (!target_sp) { - result.AppendError("No current target;" - " cannot handle signals until you have a valid target " - "and process.\n"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target_sp = &GetSelectedTarget(); ProcessSP process_sp = target_sp->GetProcessSP(); diff --git a/lldb/source/Commands/CommandObjectRegister.cpp b/lldb/source/Commands/CommandObjectRegister.cpp index 62b173141d8ed3c..eedfe3ca0bf348c 100644 --- a/lldb/source/Commands/CommandObjectRegister.cpp +++ b/lldb/source/Commands/CommandObjectRegister.cpp @@ -32,11 +32,8 @@ using namespace lldb; using namespace lldb_private; // "register read" - -static constexpr OptionDefinition g_register_read_options[] = { #define LLDB_OPTIONS_register_read #include "CommandOptions.inc" -}; class CommandObjectRegisterRead : public CommandObjectParsed { public: @@ -275,9 +272,7 @@ class CommandObjectRegisterRead : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } diff --git a/lldb/source/Commands/CommandObjectReproducer.cpp b/lldb/source/Commands/CommandObjectReproducer.cpp index 4b0e9e36d202bb0..895a9cc0b0d09eb 100644 --- a/lldb/source/Commands/CommandObjectReproducer.cpp +++ b/lldb/source/Commands/CommandObjectReproducer.cpp @@ -102,8 +102,8 @@ CommandObjectReproducer::CommandObjectReproducer( CommandInterpreter &interpreter) : CommandObjectMultiword( interpreter, "reproducer", - "Commands to inspect and manipulate the reproducer functionality.", - "log []") { + "Commands for manipulate the reproducer functionality.", + "reproducer []") { LoadSubCommand( "generate", CommandObjectSP(new CommandObjectReproducerGenerate(interpreter))); diff --git a/lldb/source/Commands/CommandObjectSettings.cpp b/lldb/source/Commands/CommandObjectSettings.cpp index 057c5de619cfaed..5f6a4dc97aee111 100644 --- a/lldb/source/Commands/CommandObjectSettings.cpp +++ b/lldb/source/Commands/CommandObjectSettings.cpp @@ -20,11 +20,8 @@ using namespace lldb; using namespace lldb_private; // CommandObjectSettingsSet - -static constexpr OptionDefinition g_settings_set_options[] = { #define LLDB_OPTIONS_settings_set -#include "Options.inc" -}; +#include "CommandOptions.inc" class CommandObjectSettingsSet : public CommandObjectRaw { public: @@ -107,9 +104,7 @@ insert-before or insert-after."); m_global = true; break; default: - error.SetErrorStringWithFormat("unrecognized options '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -129,9 +124,9 @@ insert-before or insert-after."); bool m_force; }; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { const size_t argc = request.GetParsedLine().GetArgumentCount(); const char *arg = nullptr; @@ -147,27 +142,27 @@ insert-before or insert-after."); CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - } else { + return; + } arg = request.GetParsedLine().GetArgumentAtIndex(request.GetCursorIndex()); - if (arg) { - if (arg[0] == '-') { - // Complete option name - } else { - // Complete setting value - const char *setting_var_name = - request.GetParsedLine().GetArgumentAtIndex(setting_var_idx); - Status error; - lldb::OptionValueSP value_sp(GetDebugger().GetPropertyValue( - &m_exe_ctx, setting_var_name, false, error)); - if (value_sp) { - value_sp->AutoComplete(m_interpreter, request); - } - } - } - } - return request.GetNumberOfMatches(); + if (!arg) + return; + + // Complete option name + if (arg[0] != '-') + return; + + // Complete setting value + const char *setting_var_name = + request.GetParsedLine().GetArgumentAtIndex(setting_var_idx); + Status error; + lldb::OptionValueSP value_sp(GetDebugger().GetPropertyValue( + &m_exe_ctx, setting_var_name, false, error)); + if (!value_sp) + return; + value_sp->AutoComplete(m_interpreter, request); } protected: @@ -274,13 +269,12 @@ class CommandObjectSettingsShow : public CommandObjectParsed { ~CommandObjectSettingsShow() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: @@ -309,11 +303,8 @@ class CommandObjectSettingsShow : public CommandObjectParsed { }; // CommandObjectSettingsWrite -- Write settings to file - -static constexpr OptionDefinition g_settings_write_options[] = { #define LLDB_OPTIONS_settings_write -#include "Options.inc" -}; +#include "CommandOptions.inc" class CommandObjectSettingsWrite : public CommandObjectParsed { public: @@ -363,9 +354,7 @@ class CommandObjectSettingsWrite : public CommandObjectParsed { m_append = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -432,11 +421,8 @@ class CommandObjectSettingsWrite : public CommandObjectParsed { }; // CommandObjectSettingsRead -- Read settings from file - -static constexpr OptionDefinition g_settings_read_options[] = { #define LLDB_OPTIONS_settings_read -#include "Options.inc" -}; +#include "CommandOptions.inc" class CommandObjectSettingsRead : public CommandObjectParsed { public: @@ -467,9 +453,7 @@ class CommandObjectSettingsRead : public CommandObjectParsed { m_filename.assign(option_arg); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -536,13 +520,12 @@ class CommandObjectSettingsList : public CommandObjectParsed { ~CommandObjectSettingsList() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: @@ -622,14 +605,15 @@ class CommandObjectSettingsRemove : public CommandObjectRaw { ~CommandObjectSettingsRemove() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + bool WantsCompletion() override { return true; } + + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { if (request.GetCursorIndex() < 2) CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: @@ -645,8 +629,8 @@ class CommandObjectSettingsRemove : public CommandObjectRaw { const size_t argc = cmd_args.GetArgumentCount(); if (argc == 0) { - result.AppendError("'settings set' takes an array or dictionary item, or " - "an array followed by one or more indexes, or a " + result.AppendError("'settings remove' takes an array or dictionary item, " + "or an array followed by one or more indexes, or a " "dictionary followed by one or more key names to " "remove"); result.SetStatus(eReturnStatusFailed); @@ -656,7 +640,7 @@ class CommandObjectSettingsRemove : public CommandObjectRaw { const char *var_name = cmd_args.GetArgumentAtIndex(0); if ((var_name == nullptr) || (var_name[0] == '\0')) { result.AppendError( - "'settings set' command requires a valid variable name"); + "'settings remove' command requires a valid variable name"); result.SetStatus(eReturnStatusFailed); return false; } @@ -735,16 +719,14 @@ class CommandObjectSettingsReplace : public CommandObjectRaw { // !WantsRawCommandString. bool WantsCompletion() override { return true; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { // Attempting to complete variable name if (request.GetCursorIndex() < 2) CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - - return request.GetNumberOfMatches(); } protected: @@ -833,16 +815,14 @@ class CommandObjectSettingsInsertBefore : public CommandObjectRaw { // !WantsRawCommandString. bool WantsCompletion() override { return true; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { // Attempting to complete variable name if (request.GetCursorIndex() < 2) CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - - return request.GetNumberOfMatches(); } protected: @@ -936,16 +916,14 @@ class CommandObjectSettingsInsertAfter : public CommandObjectRaw { // !WantsRawCommandString. bool WantsCompletion() override { return true; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { // Attempting to complete variable name if (request.GetCursorIndex() < 2) CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - - return request.GetNumberOfMatches(); } protected: @@ -1028,16 +1006,14 @@ class CommandObjectSettingsAppend : public CommandObjectRaw { // !WantsRawCommandString. bool WantsCompletion() override { return true; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { // Attempting to complete variable name if (request.GetCursorIndex() < 2) CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - - return request.GetNumberOfMatches(); } protected: @@ -1107,16 +1083,14 @@ class CommandObjectSettingsClear : public CommandObjectParsed { ~CommandObjectSettingsClear() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { // Attempting to complete variable name if (request.GetCursorIndex() < 2) CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSettingsNameCompletion, request, nullptr); - - return request.GetNumberOfMatches(); } protected: diff --git a/lldb/source/Commands/CommandObjectSource.cpp b/lldb/source/Commands/CommandObjectSource.cpp index 7aab51309414255..de82e25a9268a93 100644 --- a/lldb/source/Commands/CommandObjectSource.cpp +++ b/lldb/source/Commands/CommandObjectSource.cpp @@ -33,11 +33,8 @@ using namespace lldb_private; #pragma mark CommandObjectSourceInfo // CommandObjectSourceInfo - debug line entries dumping command - -static constexpr OptionDefinition g_source_info_options[] = { #define LLDB_OPTIONS_source_info #include "CommandOptions.inc" -}; class CommandObjectSourceInfo : public CommandObjectParsed { class CommandOptions : public Options { @@ -85,9 +82,7 @@ class CommandObjectSourceInfo : public CommandObjectParsed { modules.push_back(std::string(option_arg)); break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -636,11 +631,8 @@ class CommandObjectSourceInfo : public CommandObjectParsed { #pragma mark CommandObjectSourceList // CommandObjectSourceList - -static constexpr OptionDefinition g_source_list_options[] = { #define LLDB_OPTIONS_source_list #include "CommandOptions.inc" -}; class CommandObjectSourceList : public CommandObjectParsed { class CommandOptions : public Options { @@ -689,9 +681,7 @@ class CommandObjectSourceList : public CommandObjectParsed { reverse = true; break; default: - error.SetErrorStringWithFormat("unrecognized short option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; diff --git a/lldb/source/Commands/CommandObjectStats.cpp b/lldb/source/Commands/CommandObjectStats.cpp index a73c2a8e040944f..e3a1f9433662e38 100644 --- a/lldb/source/Commands/CommandObjectStats.cpp +++ b/lldb/source/Commands/CommandObjectStats.cpp @@ -26,15 +26,15 @@ class CommandObjectStatsEnable : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); + Target &target = GetSelectedOrDummyTarget(); - if (target->GetCollectingStats()) { + if (target.GetCollectingStats()) { result.AppendError("statistics already enabled"); result.SetStatus(eReturnStatusFailed); return false; } - target->SetCollectingStats(true); + target.SetCollectingStats(true); result.SetStatus(eReturnStatusSuccessFinishResult); return true; } @@ -51,15 +51,15 @@ class CommandObjectStatsDisable : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); + Target &target = GetSelectedOrDummyTarget(); - if (!target->GetCollectingStats()) { + if (!target.GetCollectingStats()) { result.AppendError("need to enable statistics before disabling them"); result.SetStatus(eReturnStatusFailed); return false; } - target->SetCollectingStats(false); + target.SetCollectingStats(false); result.SetStatus(eReturnStatusSuccessFinishResult); return true; } @@ -75,10 +75,10 @@ class CommandObjectStatsDump : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); + Target &target = GetSelectedOrDummyTarget(); uint32_t i = 0; - for (auto &stat : target->GetStatistics()) { + for (auto &stat : target.GetStatistics()) { result.AppendMessageWithFormat( "%s : %u\n", lldb_private::GetStatDescription(static_cast(i)) diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index e8720157ab4cbcf..a7384a0a0d78366 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -37,7 +37,6 @@ #include "lldb/Symbol/LocateSymbolFile.h" #include "lldb/Symbol/ObjectFile.h" #include "lldb/Symbol/SymbolFile.h" -#include "lldb/Symbol/SymbolVendor.h" #include "lldb/Symbol/UnwindPlan.h" #include "lldb/Symbol/VariableList.h" #include "lldb/Target/ABI.h" @@ -135,22 +134,27 @@ static uint32_t DumpTargetList(TargetList &target_list, } // Note that the negation in the argument name causes a slightly confusing -// mapping of the enum values, +// mapping of the enum values. static constexpr OptionEnumValueElement g_dependents_enumaration[] = { - {eLoadDependentsDefault, "default", - "Only load dependents when the target is an executable."}, - {eLoadDependentsNo, "true", - "Don't load dependents, even if the target is an executable."}, - {eLoadDependentsYes, "false", - "Load dependents, even if the target is not an executable."}}; - -static constexpr OptionDefinition g_dependents_options[] = { - {LLDB_OPT_SET_1, false, "no-dependents", 'd', - OptionParser::eOptionalArgument, nullptr, - OptionEnumValues(g_dependents_enumaration), 0, eArgTypeValue, - "Whether or not to load dependents when creating a target. If the option " - "is not specified, the value is implicitly 'default'. If the option is " - "specified but without a value, the value is implicitly 'true'."}}; + { + eLoadDependentsDefault, + "default", + "Only load dependents when the target is an executable.", + }, + { + eLoadDependentsNo, + "true", + "Don't load dependents, even if the target is an executable.", + }, + { + eLoadDependentsYes, + "false", + "Load dependents, even if the target is not an executable.", + }, +}; + +#define LLDB_OPTIONS_target_dependents +#include "CommandOptions.inc" class OptionGroupDependents : public OptionGroup { public: @@ -159,7 +163,7 @@ class OptionGroupDependents : public OptionGroup { ~OptionGroupDependents() override {} llvm::ArrayRef GetDefinitions() override { - return llvm::makeArrayRef(g_dependents_options); + return llvm::makeArrayRef(g_target_dependents_options); } Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value, @@ -172,11 +176,13 @@ class OptionGroupDependents : public OptionGroup { return error; } - const char short_option = g_dependents_options[option_idx].short_option; + const char short_option = + g_target_dependents_options[option_idx].short_option; if (short_option == 'd') { LoadDependentFiles tmp_load_dependents; tmp_load_dependents = (LoadDependentFiles)OptionArgParser::ToOptionEnum( - option_value, g_dependents_options[option_idx].enum_values, 0, error); + option_value, g_target_dependents_options[option_idx].enum_values, 0, + error); if (error.Success()) m_load_dependent_files = tmp_load_dependents; } else { @@ -252,13 +258,12 @@ class CommandObjectTargetCreate : public CommandObjectParsed { Options *GetOptions() override { return &m_option_group; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: @@ -444,7 +449,8 @@ class CommandObjectTargetCreate : public CommandObjectParsed { } } else { result.AppendMessageWithFormat( - "Current executable set to '%s' (%s).\n", file_path, + "Current executable set to '%s' (%s).\n", + file_spec.GetPath().c_str(), target_sp->GetArchitecture().GetArchitectureName()); result.SetStatus(eReturnStatusSuccessFinishNoResult); } @@ -1024,7 +1030,7 @@ class CommandObjectTargetModulesSearchPathsAdd : public CommandObjectParsed { : CommandObjectParsed(interpreter, "target modules search-paths add", "Add new image search paths substitution pairs to " "the current target.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandArgumentData old_prefix_arg; CommandArgumentData new_prefix_arg; @@ -1053,41 +1059,37 @@ class CommandObjectTargetModulesSearchPathsAdd : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target) { - const size_t argc = command.GetArgumentCount(); - if (argc & 1) { - result.AppendError("add requires an even number of arguments\n"); - result.SetStatus(eReturnStatusFailed); - } else { - for (size_t i = 0; i < argc; i += 2) { - const char *from = command.GetArgumentAtIndex(i); - const char *to = command.GetArgumentAtIndex(i + 1); - - if (from[0] && to[0]) { - Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); - if (log) { - log->Printf("target modules search path adding ImageSearchPath " - "pair: '%s' -> '%s'", - from, to); - } - bool last_pair = ((argc - i) == 2); - target->GetImageSearchPathList().Append( - ConstString(from), ConstString(to), - last_pair); // Notify if this is the last pair - result.SetStatus(eReturnStatusSuccessFinishNoResult); - } else { - if (from[0]) - result.AppendError(" can't be empty\n"); - else - result.AppendError(" can't be empty\n"); - result.SetStatus(eReturnStatusFailed); + Target *target = &GetSelectedTarget(); + const size_t argc = command.GetArgumentCount(); + if (argc & 1) { + result.AppendError("add requires an even number of arguments\n"); + result.SetStatus(eReturnStatusFailed); + } else { + for (size_t i = 0; i < argc; i += 2) { + const char *from = command.GetArgumentAtIndex(i); + const char *to = command.GetArgumentAtIndex(i + 1); + + if (from[0] && to[0]) { + Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); + if (log) { + LLDB_LOGF(log, + "target modules search path adding ImageSearchPath " + "pair: '%s' -> '%s'", + from, to); } + bool last_pair = ((argc - i) == 2); + target->GetImageSearchPathList().Append( + ConstString(from), ConstString(to), + last_pair); // Notify if this is the last pair + result.SetStatus(eReturnStatusSuccessFinishNoResult); + } else { + if (from[0]) + result.AppendError(" can't be empty\n"); + else + result.AppendError(" can't be empty\n"); + result.SetStatus(eReturnStatusFailed); } } - } else { - result.AppendError("invalid target\n"); - result.SetStatus(eReturnStatusFailed); } return result.Succeeded(); } @@ -1101,21 +1103,17 @@ class CommandObjectTargetModulesSearchPathsClear : public CommandObjectParsed { : CommandObjectParsed(interpreter, "target modules search-paths clear", "Clear all current image search path substitution " "pairs from the current target.", - "target modules search-paths clear") {} + "target modules search-paths clear", + eCommandRequiresTarget) {} ~CommandObjectTargetModulesSearchPathsClear() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target) { - bool notify = true; - target->GetImageSearchPathList().Clear(notify); - result.SetStatus(eReturnStatusSuccessFinishNoResult); - } else { - result.AppendError("invalid target\n"); - result.SetStatus(eReturnStatusFailed); - } + Target *target = &GetSelectedTarget(); + bool notify = true; + target->GetImageSearchPathList().Clear(notify); + result.SetStatus(eReturnStatusSuccessFinishNoResult); return result.Succeeded(); } }; @@ -1128,7 +1126,7 @@ class CommandObjectTargetModulesSearchPathsInsert : public CommandObjectParsed { : CommandObjectParsed(interpreter, "target modules search-paths insert", "Insert a new image search path substitution pair " "into the current target at the specified index.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg1; CommandArgumentEntry arg2; CommandArgumentData index_arg; @@ -1168,55 +1166,49 @@ class CommandObjectTargetModulesSearchPathsInsert : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target) { - size_t argc = command.GetArgumentCount(); - // check for at least 3 arguments and an odd number of parameters - if (argc >= 3 && argc & 1) { - bool success = false; + Target *target = &GetSelectedTarget(); + size_t argc = command.GetArgumentCount(); + // check for at least 3 arguments and an odd number of parameters + if (argc >= 3 && argc & 1) { + bool success = false; - uint32_t insert_idx = StringConvert::ToUInt32( - command.GetArgumentAtIndex(0), UINT32_MAX, 0, &success); + uint32_t insert_idx = StringConvert::ToUInt32( + command.GetArgumentAtIndex(0), UINT32_MAX, 0, &success); - if (!success) { - result.AppendErrorWithFormat( - " parameter is not an integer: '%s'.\n", - command.GetArgumentAtIndex(0)); - result.SetStatus(eReturnStatusFailed); - return result.Succeeded(); - } + if (!success) { + result.AppendErrorWithFormat( + " parameter is not an integer: '%s'.\n", + command.GetArgumentAtIndex(0)); + result.SetStatus(eReturnStatusFailed); + return result.Succeeded(); + } - // shift off the index - command.Shift(); - argc = command.GetArgumentCount(); + // shift off the index + command.Shift(); + argc = command.GetArgumentCount(); - for (uint32_t i = 0; i < argc; i += 2, ++insert_idx) { - const char *from = command.GetArgumentAtIndex(i); - const char *to = command.GetArgumentAtIndex(i + 1); + for (uint32_t i = 0; i < argc; i += 2, ++insert_idx) { + const char *from = command.GetArgumentAtIndex(i); + const char *to = command.GetArgumentAtIndex(i + 1); - if (from[0] && to[0]) { - bool last_pair = ((argc - i) == 2); - target->GetImageSearchPathList().Insert( - ConstString(from), ConstString(to), insert_idx, last_pair); - result.SetStatus(eReturnStatusSuccessFinishNoResult); - } else { - if (from[0]) - result.AppendError(" can't be empty\n"); - else - result.AppendError(" can't be empty\n"); - result.SetStatus(eReturnStatusFailed); - return false; - } + if (from[0] && to[0]) { + bool last_pair = ((argc - i) == 2); + target->GetImageSearchPathList().Insert( + ConstString(from), ConstString(to), insert_idx, last_pair); + result.SetStatus(eReturnStatusSuccessFinishNoResult); + } else { + if (from[0]) + result.AppendError(" can't be empty\n"); + else + result.AppendError(" can't be empty\n"); + result.SetStatus(eReturnStatusFailed); + return false; } - } else { - result.AppendError("insert requires at least three arguments\n"); - result.SetStatus(eReturnStatusFailed); - return result.Succeeded(); } - } else { - result.AppendError("invalid target\n"); + result.AppendError("insert requires at least three arguments\n"); result.SetStatus(eReturnStatusFailed); + return result.Succeeded(); } return result.Succeeded(); } @@ -1230,26 +1222,22 @@ class CommandObjectTargetModulesSearchPathsList : public CommandObjectParsed { : CommandObjectParsed(interpreter, "target modules search-paths list", "List all current image search path substitution " "pairs in the current target.", - "target modules search-paths list") {} + "target modules search-paths list", + eCommandRequiresTarget) {} ~CommandObjectTargetModulesSearchPathsList() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target) { - if (command.GetArgumentCount() != 0) { - result.AppendError("list takes no arguments\n"); - result.SetStatus(eReturnStatusFailed); - return result.Succeeded(); - } - - target->GetImageSearchPathList().Dump(&result.GetOutputStream()); - result.SetStatus(eReturnStatusSuccessFinishResult); - } else { - result.AppendError("invalid target\n"); + Target *target = &GetSelectedTarget(); + if (command.GetArgumentCount() != 0) { + result.AppendError("list takes no arguments\n"); result.SetStatus(eReturnStatusFailed); + return result.Succeeded(); } + + target->GetImageSearchPathList().Dump(&result.GetOutputStream()); + result.SetStatus(eReturnStatusSuccessFinishResult); return result.Succeeded(); } }; @@ -1262,7 +1250,7 @@ class CommandObjectTargetModulesSearchPathsQuery : public CommandObjectParsed { : CommandObjectParsed( interpreter, "target modules search-paths query", "Transform a path using the first applicable image search path.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandArgumentData path_arg; @@ -1282,26 +1270,21 @@ class CommandObjectTargetModulesSearchPathsQuery : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target) { - if (command.GetArgumentCount() != 1) { - result.AppendError("query requires one argument\n"); - result.SetStatus(eReturnStatusFailed); - return result.Succeeded(); - } - - ConstString orig(command.GetArgumentAtIndex(0)); - ConstString transformed; - if (target->GetImageSearchPathList().RemapPath(orig, transformed)) - result.GetOutputStream().Printf("%s\n", transformed.GetCString()); - else - result.GetOutputStream().Printf("%s\n", orig.GetCString()); - - result.SetStatus(eReturnStatusSuccessFinishResult); - } else { - result.AppendError("invalid target\n"); + Target *target = &GetSelectedTarget(); + if (command.GetArgumentCount() != 1) { + result.AppendError("query requires one argument\n"); result.SetStatus(eReturnStatusFailed); + return result.Succeeded(); } + + ConstString orig(command.GetArgumentAtIndex(0)); + ConstString transformed; + if (target->GetImageSearchPathList().RemapPath(orig, transformed)) + result.GetOutputStream().Printf("%s\n", transformed.GetCString()); + else + result.GetOutputStream().Printf("%s\n", orig.GetCString()); + + result.SetStatus(eReturnStatusSuccessFinishResult); return result.Succeeded(); } }; @@ -1439,15 +1422,11 @@ static size_t DumpModuleObjfileHeaders(Stream &strm, ModuleList &module_list) { static void DumpModuleSymtab(CommandInterpreter &interpreter, Stream &strm, Module *module, SortOrder sort_order) { - if (module) { - SymbolVendor *sym_vendor = module->GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) - symtab->Dump(&strm, interpreter.GetExecutionContext().GetTargetPtr(), - sort_order); - } - } + if (!module) + return; + if (Symtab *symtab = module->GetSymtab()) + symtab->Dump(&strm, interpreter.GetExecutionContext().GetTargetPtr(), + sort_order); } static void DumpModuleSections(CommandInterpreter &interpreter, Stream &strm, @@ -1467,11 +1446,10 @@ static void DumpModuleSections(CommandInterpreter &interpreter, Stream &strm, } } -static bool DumpModuleSymbolVendor(Stream &strm, Module *module) { +static bool DumpModuleSymbolFile(Stream &strm, Module *module) { if (module) { - SymbolVendor *symbol_vendor = module->GetSymbolVendor(true); - if (symbol_vendor) { - symbol_vendor->Dump(&strm); + if (SymbolFile *symbol_file = module->GetSymbolFile(true)) { + symbol_file->Dump(strm); return true; } } @@ -1553,47 +1531,44 @@ static uint32_t LookupSymbolInModule(CommandInterpreter &interpreter, Stream &strm, Module *module, const char *name, bool name_is_regex, bool verbose) { - if (module) { - SymbolContext sc; + if (!module) + return 0; - SymbolVendor *sym_vendor = module->GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) { - std::vector match_indexes; - ConstString symbol_name(name); - uint32_t num_matches = 0; - if (name_is_regex) { - RegularExpression name_regexp(symbol_name.GetStringRef()); - num_matches = symtab->AppendSymbolIndexesMatchingRegExAndType( - name_regexp, eSymbolTypeAny, match_indexes); - } else { - num_matches = - symtab->AppendSymbolIndexesWithName(symbol_name, match_indexes); - } + Symtab *symtab = module->GetSymtab(); + if (!symtab) + return 0; - if (num_matches > 0) { - strm.Indent(); - strm.Printf("%u symbols match %s'%s' in ", num_matches, - name_is_regex ? "the regular expression " : "", name); - DumpFullpath(strm, &module->GetFileSpec(), 0); - strm.PutCString(":\n"); - strm.IndentMore(); - for (uint32_t i = 0; i < num_matches; ++i) { - Symbol *symbol = symtab->SymbolAtIndex(match_indexes[i]); - if (symbol && symbol->ValueIsAddress()) { - DumpAddress(interpreter.GetExecutionContext() - .GetBestExecutionContextScope(), - symbol->GetAddressRef(), verbose, strm); - } - } - strm.IndentLess(); - return num_matches; - } + SymbolContext sc; + std::vector match_indexes; + ConstString symbol_name(name); + uint32_t num_matches = 0; + if (name_is_regex) { + RegularExpression name_regexp(symbol_name.GetStringRef()); + num_matches = symtab->AppendSymbolIndexesMatchingRegExAndType( + name_regexp, eSymbolTypeAny, match_indexes); + } else { + num_matches = + symtab->AppendSymbolIndexesWithName(symbol_name, match_indexes); + } + + if (num_matches > 0) { + strm.Indent(); + strm.Printf("%u symbols match %s'%s' in ", num_matches, + name_is_regex ? "the regular expression " : "", name); + DumpFullpath(strm, &module->GetFileSpec(), 0); + strm.PutCString(":\n"); + strm.IndentMore(); + for (uint32_t i = 0; i < num_matches; ++i) { + Symbol *symbol = symtab->SymbolAtIndex(match_indexes[i]); + if (symbol && symbol->ValueIsAddress()) { + DumpAddress( + interpreter.GetExecutionContext().GetBestExecutionContextScope(), + symbol->GetAddressRef(), verbose, strm); } } + strm.IndentLess(); } - return 0; + return num_matches; } static void DumpSymbolContextList(ExecutionContextScope *exe_scope, @@ -1825,8 +1800,9 @@ class CommandObjectTargetModulesModuleAutoComplete CommandObjectTargetModulesModuleAutoComplete(CommandInterpreter &interpreter, const char *name, const char *help, - const char *syntax) - : CommandObjectParsed(interpreter, name, help, syntax) { + const char *syntax, + uint32_t flags = 0) + : CommandObjectParsed(interpreter, name, help, syntax, flags) { CommandArgumentEntry arg; CommandArgumentData file_arg; @@ -1844,13 +1820,12 @@ class CommandObjectTargetModulesModuleAutoComplete ~CommandObjectTargetModulesModuleAutoComplete() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eModuleCompletion, request, nullptr); - return request.GetNumberOfMatches(); } }; @@ -1883,13 +1858,12 @@ class CommandObjectTargetModulesSourceFileAutoComplete ~CommandObjectTargetModulesSourceFileAutoComplete() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eSourceFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } }; @@ -1902,19 +1876,13 @@ class CommandObjectTargetModulesDumpObjfile : CommandObjectTargetModulesModuleAutoComplete( interpreter, "target modules dump objfile", "Dump the object file headers from one or more target modules.", - nullptr) {} + nullptr, eCommandRequiresTarget) {} ~CommandObjectTargetModulesDumpObjfile() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); result.GetOutputStream().SetAddressByteSize(addr_byte_size); @@ -1961,15 +1929,25 @@ class CommandObjectTargetModulesDumpObjfile #pragma mark CommandObjectTargetModulesDumpSymtab static constexpr OptionEnumValueElement g_sort_option_enumeration[] = { - {eSortOrderNone, "none", - "No sorting, use the original symbol table order."}, - {eSortOrderByAddress, "address", "Sort output by symbol address."}, - {eSortOrderByName, "name", "Sort output by symbol name."} }; + { + eSortOrderNone, + "none", + "No sorting, use the original symbol table order.", + }, + { + eSortOrderByAddress, + "address", + "Sort output by symbol address.", + }, + { + eSortOrderByName, + "name", + "Sort output by symbol name.", + }, +}; -static constexpr OptionDefinition g_target_modules_dump_symtab_options[] = { #define LLDB_OPTIONS_target_modules_dump_symtab -#include "Options.inc" -}; +#include "CommandOptions.inc" class CommandObjectTargetModulesDumpSymtab : public CommandObjectTargetModulesModuleAutoComplete { @@ -1977,7 +1955,8 @@ class CommandObjectTargetModulesDumpSymtab CommandObjectTargetModulesDumpSymtab(CommandInterpreter &interpreter) : CommandObjectTargetModulesModuleAutoComplete( interpreter, "target modules dump symtab", - "Dump the symbol table from one or more target modules.", nullptr), + "Dump the symbol table from one or more target modules.", nullptr, + eCommandRequiresTarget), m_options() {} ~CommandObjectTargetModulesDumpSymtab() override = default; @@ -2003,9 +1982,7 @@ class CommandObjectTargetModulesDumpSymtab break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -2023,82 +2000,75 @@ class CommandObjectTargetModulesDumpSymtab protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - uint32_t num_dumped = 0; + Target *target = &GetSelectedTarget(); + uint32_t num_dumped = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); - result.GetOutputStream().SetAddressByteSize(addr_byte_size); - result.GetErrorStream().SetAddressByteSize(addr_byte_size); + uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + result.GetOutputStream().SetAddressByteSize(addr_byte_size); + result.GetErrorStream().SetAddressByteSize(addr_byte_size); - if (command.GetArgumentCount() == 0) { - // Dump all sections for all modules images - std::lock_guard guard( - target->GetImages().GetMutex()); - const size_t num_modules = target->GetImages().GetSize(); - if (num_modules > 0) { - result.GetOutputStream().Printf("Dumping symbol table for %" PRIu64 - " modules.\n", - (uint64_t)num_modules); - for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) { - if (num_dumped > 0) { - result.GetOutputStream().EOL(); - result.GetOutputStream().EOL(); - } - if (m_interpreter.WasInterrupted()) - break; - num_dumped++; - DumpModuleSymtab( - m_interpreter, result.GetOutputStream(), - target->GetImages().GetModulePointerAtIndexUnlocked(image_idx), - m_options.m_sort_order); + if (command.GetArgumentCount() == 0) { + // Dump all sections for all modules images + std::lock_guard guard( + target->GetImages().GetMutex()); + const size_t num_modules = target->GetImages().GetSize(); + if (num_modules > 0) { + result.GetOutputStream().Printf("Dumping symbol table for %" PRIu64 + " modules.\n", + (uint64_t)num_modules); + for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) { + if (num_dumped > 0) { + result.GetOutputStream().EOL(); + result.GetOutputStream().EOL(); } - } else { - result.AppendError("the target has no associated executable images"); - result.SetStatus(eReturnStatusFailed); - return false; + if (m_interpreter.WasInterrupted()) + break; + num_dumped++; + DumpModuleSymtab( + m_interpreter, result.GetOutputStream(), + target->GetImages().GetModulePointerAtIndexUnlocked(image_idx), + m_options.m_sort_order); } } else { - // Dump specified images (by basename or fullpath) - const char *arg_cstr; - for (int arg_idx = 0; - (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; - ++arg_idx) { - ModuleList module_list; - const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, true); - if (num_matches > 0) { - for (size_t i = 0; i < num_matches; ++i) { - Module *module = module_list.GetModulePointerAtIndex(i); - if (module) { - if (num_dumped > 0) { - result.GetOutputStream().EOL(); - result.GetOutputStream().EOL(); - } - if (m_interpreter.WasInterrupted()) - break; - num_dumped++; - DumpModuleSymtab(m_interpreter, result.GetOutputStream(), - module, m_options.m_sort_order); + result.AppendError("the target has no associated executable images"); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + // Dump specified images (by basename or fullpath) + const char *arg_cstr; + for (int arg_idx = 0; + (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; + ++arg_idx) { + ModuleList module_list; + const size_t num_matches = + FindModulesByName(target, arg_cstr, module_list, true); + if (num_matches > 0) { + for (size_t i = 0; i < num_matches; ++i) { + Module *module = module_list.GetModulePointerAtIndex(i); + if (module) { + if (num_dumped > 0) { + result.GetOutputStream().EOL(); + result.GetOutputStream().EOL(); } + if (m_interpreter.WasInterrupted()) + break; + num_dumped++; + DumpModuleSymtab(m_interpreter, result.GetOutputStream(), module, + m_options.m_sort_order); } - } else - result.AppendWarningWithFormat( - "Unable to find an image that matches '%s'.\n", arg_cstr); - } + } + } else + result.AppendWarningWithFormat( + "Unable to find an image that matches '%s'.\n", arg_cstr); } + } - if (num_dumped > 0) - result.SetStatus(eReturnStatusSuccessFinishResult); - else { - result.AppendError("no matching executable images found"); - result.SetStatus(eReturnStatusFailed); - } + if (num_dumped > 0) + result.SetStatus(eReturnStatusSuccessFinishResult); + else { + result.AppendError("no matching executable images found"); + result.SetStatus(eReturnStatusFailed); } return result.Succeeded(); } @@ -2118,82 +2088,75 @@ class CommandObjectTargetModulesDumpSections interpreter, "target modules dump sections", "Dump the sections from one or more target modules.", //"target modules dump sections [ ...]") - nullptr) {} + nullptr, eCommandRequiresTarget) {} ~CommandObjectTargetModulesDumpSections() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - uint32_t num_dumped = 0; + Target *target = &GetSelectedTarget(); + uint32_t num_dumped = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); - result.GetOutputStream().SetAddressByteSize(addr_byte_size); - result.GetErrorStream().SetAddressByteSize(addr_byte_size); + uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + result.GetOutputStream().SetAddressByteSize(addr_byte_size); + result.GetErrorStream().SetAddressByteSize(addr_byte_size); - if (command.GetArgumentCount() == 0) { - // Dump all sections for all modules images - const size_t num_modules = target->GetImages().GetSize(); - if (num_modules > 0) { - result.GetOutputStream().Printf("Dumping sections for %" PRIu64 - " modules.\n", - (uint64_t)num_modules); - for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) { + if (command.GetArgumentCount() == 0) { + // Dump all sections for all modules images + const size_t num_modules = target->GetImages().GetSize(); + if (num_modules > 0) { + result.GetOutputStream().Printf("Dumping sections for %" PRIu64 + " modules.\n", + (uint64_t)num_modules); + for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) { + if (m_interpreter.WasInterrupted()) + break; + num_dumped++; + DumpModuleSections( + m_interpreter, result.GetOutputStream(), + target->GetImages().GetModulePointerAtIndex(image_idx)); + } + } else { + result.AppendError("the target has no associated executable images"); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + // Dump specified images (by basename or fullpath) + const char *arg_cstr; + for (int arg_idx = 0; + (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; + ++arg_idx) { + ModuleList module_list; + const size_t num_matches = + FindModulesByName(target, arg_cstr, module_list, true); + if (num_matches > 0) { + for (size_t i = 0; i < num_matches; ++i) { if (m_interpreter.WasInterrupted()) break; - num_dumped++; - DumpModuleSections( - m_interpreter, result.GetOutputStream(), - target->GetImages().GetModulePointerAtIndex(image_idx)); + Module *module = module_list.GetModulePointerAtIndex(i); + if (module) { + num_dumped++; + DumpModuleSections(m_interpreter, result.GetOutputStream(), + module); + } } } else { - result.AppendError("the target has no associated executable images"); - result.SetStatus(eReturnStatusFailed); - return false; - } - } else { - // Dump specified images (by basename or fullpath) - const char *arg_cstr; - for (int arg_idx = 0; - (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; - ++arg_idx) { - ModuleList module_list; - const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, true); - if (num_matches > 0) { - for (size_t i = 0; i < num_matches; ++i) { - if (m_interpreter.WasInterrupted()) - break; - Module *module = module_list.GetModulePointerAtIndex(i); - if (module) { - num_dumped++; - DumpModuleSections(m_interpreter, result.GetOutputStream(), - module); - } - } - } else { - // Check the global list - std::lock_guard guard( - Module::GetAllocationModuleCollectionMutex()); + // Check the global list + std::lock_guard guard( + Module::GetAllocationModuleCollectionMutex()); - result.AppendWarningWithFormat( - "Unable to find an image that matches '%s'.\n", arg_cstr); - } + result.AppendWarningWithFormat( + "Unable to find an image that matches '%s'.\n", arg_cstr); } } + } - if (num_dumped > 0) - result.SetStatus(eReturnStatusSuccessFinishResult); - else { - result.AppendError("no matching executable images found"); - result.SetStatus(eReturnStatusFailed); - } + if (num_dumped > 0) + result.SetStatus(eReturnStatusSuccessFinishResult); + else { + result.AppendError("no matching executable images found"); + result.SetStatus(eReturnStatusFailed); } return result.Succeeded(); } @@ -2211,19 +2174,13 @@ class CommandObjectTargetModulesDumpClangAST interpreter, "target modules dump ast", "Dump the clang ast for a given module's symbol file.", //"target modules dump ast [ ...]") - nullptr) {} + nullptr, eCommandRequiresTarget) {} ~CommandObjectTargetModulesDumpClangAST() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); const size_t num_modules = target->GetImages().GetSize(); if (num_modules == 0) { @@ -2241,8 +2198,8 @@ class CommandObjectTargetModulesDumpClangAST if (m_interpreter.WasInterrupted()) break; Module *m = target->GetImages().GetModulePointerAtIndex(image_idx); - SymbolFile *sf = m->GetSymbolVendor()->GetSymbolFile(); - sf->DumpClangAST(result.GetOutputStream()); + if (SymbolFile *sf = m->GetSymbolFile()) + sf->DumpClangAST(result.GetOutputStream()); } result.SetStatus(eReturnStatusSuccessFinishResult); return true; @@ -2267,8 +2224,8 @@ class CommandObjectTargetModulesDumpClangAST if (m_interpreter.WasInterrupted()) break; Module *m = module_list.GetModulePointerAtIndex(i); - SymbolFile *sf = m->GetSymbolVendor()->GetSymbolFile(); - sf->DumpClangAST(result.GetOutputStream()); + if (SymbolFile *sf = m->GetSymbolFile()) + sf->DumpClangAST(result.GetOutputStream()); } } result.SetStatus(eReturnStatusSuccessFinishResult); @@ -2288,84 +2245,79 @@ class CommandObjectTargetModulesDumpSymfile interpreter, "target modules dump symfile", "Dump the debug symbol file for one or more target modules.", //"target modules dump symfile [ ...]") - nullptr) {} + nullptr, eCommandRequiresTarget) {} ~CommandObjectTargetModulesDumpSymfile() override = default; protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - uint32_t num_dumped = 0; + Target *target = &GetSelectedTarget(); + uint32_t num_dumped = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); - result.GetOutputStream().SetAddressByteSize(addr_byte_size); - result.GetErrorStream().SetAddressByteSize(addr_byte_size); + uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + result.GetOutputStream().SetAddressByteSize(addr_byte_size); + result.GetErrorStream().SetAddressByteSize(addr_byte_size); - if (command.GetArgumentCount() == 0) { - // Dump all sections for all modules images - const ModuleList &target_modules = target->GetImages(); - std::lock_guard guard(target_modules.GetMutex()); - const size_t num_modules = target_modules.GetSize(); - if (num_modules > 0) { - result.GetOutputStream().Printf("Dumping debug symbols for %" PRIu64 - " modules.\n", - (uint64_t)num_modules); - for (uint32_t image_idx = 0; image_idx < num_modules; ++image_idx) { - if (m_interpreter.WasInterrupted()) - break; - if (DumpModuleSymbolVendor( - result.GetOutputStream(), - target_modules.GetModulePointerAtIndexUnlocked(image_idx))) - num_dumped++; - } - } else { - result.AppendError("the target has no associated executable images"); - result.SetStatus(eReturnStatusFailed); - return false; + if (command.GetArgumentCount() == 0) { + // Dump all sections for all modules images + const ModuleList &target_modules = target->GetImages(); + std::lock_guard guard(target_modules.GetMutex()); + const size_t num_modules = target_modules.GetSize(); + if (num_modules > 0) { + result.GetOutputStream().Printf("Dumping debug symbols for %" PRIu64 + " modules.\n", + (uint64_t)num_modules); + for (uint32_t image_idx = 0; image_idx < num_modules; ++image_idx) { + if (m_interpreter.WasInterrupted()) + break; + if (DumpModuleSymbolFile( + result.GetOutputStream(), + target_modules.GetModulePointerAtIndexUnlocked(image_idx))) + num_dumped++; } } else { - // Dump specified images (by basename or fullpath) - const char *arg_cstr; - for (int arg_idx = 0; - (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; - ++arg_idx) { - ModuleList module_list; - const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, true); - if (num_matches > 0) { - for (size_t i = 0; i < num_matches; ++i) { - if (m_interpreter.WasInterrupted()) - break; - Module *module = module_list.GetModulePointerAtIndex(i); - if (module) { - if (DumpModuleSymbolVendor(result.GetOutputStream(), module)) - num_dumped++; - } + result.AppendError("the target has no associated executable images"); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + // Dump specified images (by basename or fullpath) + const char *arg_cstr; + for (int arg_idx = 0; + (arg_cstr = command.GetArgumentAtIndex(arg_idx)) != nullptr; + ++arg_idx) { + ModuleList module_list; + const size_t num_matches = + FindModulesByName(target, arg_cstr, module_list, true); + if (num_matches > 0) { + for (size_t i = 0; i < num_matches; ++i) { + if (m_interpreter.WasInterrupted()) + break; + Module *module = module_list.GetModulePointerAtIndex(i); + if (module) { + if (DumpModuleSymbolFile(result.GetOutputStream(), module)) + num_dumped++; } - } else - result.AppendWarningWithFormat( - "Unable to find an image that matches '%s'.\n", arg_cstr); - } + } + } else + result.AppendWarningWithFormat( + "Unable to find an image that matches '%s'.\n", arg_cstr); } + } - if (num_dumped > 0) - result.SetStatus(eReturnStatusSuccessFinishResult); - else { - result.AppendError("no matching executable images found"); - result.SetStatus(eReturnStatusFailed); - } + if (num_dumped > 0) + result.SetStatus(eReturnStatusSuccessFinishResult); + else { + result.AppendError("no matching executable images found"); + result.SetStatus(eReturnStatusFailed); } return result.Succeeded(); } }; #pragma mark CommandObjectTargetModulesDumpLineTable +#define LLDB_OPTIONS_target_modules_dump +#include "CommandOptions.inc" // Image debug line table dumping command @@ -2454,19 +2406,7 @@ class CommandObjectTargetModulesDumpLineTable } llvm::ArrayRef GetDefinitions() override { - static constexpr OptionDefinition g_options[] = { - {LLDB_OPT_SET_ALL, - false, - "verbose", - 'v', - OptionParser::eNoArgument, - nullptr, - {}, - 0, - eArgTypeNone, - "Enable verbose dump."}, - }; - return llvm::makeArrayRef(g_options); + return llvm::makeArrayRef(g_target_modules_dump_options); } bool m_verbose; @@ -2518,10 +2458,11 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { CommandObjectTargetModulesAdd(CommandInterpreter &interpreter) : CommandObjectParsed(interpreter, "target modules add", "Add a new module to the current target's modules.", - "target modules add []"), - m_option_group(), - m_symbol_file(LLDB_OPT_SET_1, false, "symfile", 's', 0, - eArgTypeFilename, "Fullpath to a stand alone debug " + "target modules add []", + eCommandRequiresTarget), + m_option_group(), m_symbol_file(LLDB_OPT_SET_1, false, "symfile", 's', + 0, eArgTypeFilename, + "Fullpath to a stand alone debug " "symbols file for when debug symbols " "are not in the executable.") { m_option_group.Append(&m_uuid_option_group, LLDB_OPT_SET_ALL, @@ -2534,13 +2475,12 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { Options *GetOptions() override { return &m_option_group; } - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } protected: @@ -2549,125 +2489,117 @@ class CommandObjectTargetModulesAdd : public CommandObjectParsed { OptionGroupFile m_symbol_file; bool DoExecute(Args &args, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - bool flush = false; + Target *target = &GetSelectedTarget(); + bool flush = false; - const size_t argc = args.GetArgumentCount(); - if (argc == 0) { - if (m_uuid_option_group.GetOptionValue().OptionWasSet()) { - // We are given a UUID only, go locate the file - ModuleSpec module_spec; - module_spec.GetUUID() = - m_uuid_option_group.GetOptionValue().GetCurrentValue(); - if (m_symbol_file.GetOptionValue().OptionWasSet()) - module_spec.GetSymbolFileSpec() = - m_symbol_file.GetOptionValue().GetCurrentValue(); - if (Symbols::DownloadObjectAndSymbolFile(module_spec)) { - ModuleSP module_sp(target->GetOrCreateModule(module_spec, - true /* notify */)); - if (module_sp) { - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } else { - StreamString strm; - module_spec.GetUUID().Dump(&strm); - if (module_spec.GetFileSpec()) { - if (module_spec.GetSymbolFileSpec()) { - result.AppendErrorWithFormat( - "Unable to create the executable or symbol file with " - "UUID %s with path %s and symbol file %s", - strm.GetData(), - module_spec.GetFileSpec().GetPath().c_str(), - module_spec.GetSymbolFileSpec().GetPath().c_str()); - } else { - result.AppendErrorWithFormat( - "Unable to create the executable or symbol file with " - "UUID %s with path %s", - strm.GetData(), - module_spec.GetFileSpec().GetPath().c_str()); - } - } else { - result.AppendErrorWithFormat("Unable to create the executable " - "or symbol file with UUID %s", - strm.GetData()); - } - result.SetStatus(eReturnStatusFailed); - return false; - } + const size_t argc = args.GetArgumentCount(); + if (argc == 0) { + if (m_uuid_option_group.GetOptionValue().OptionWasSet()) { + // We are given a UUID only, go locate the file + ModuleSpec module_spec; + module_spec.GetUUID() = + m_uuid_option_group.GetOptionValue().GetCurrentValue(); + if (m_symbol_file.GetOptionValue().OptionWasSet()) + module_spec.GetSymbolFileSpec() = + m_symbol_file.GetOptionValue().GetCurrentValue(); + if (Symbols::DownloadObjectAndSymbolFile(module_spec)) { + ModuleSP module_sp( + target->GetOrCreateModule(module_spec, true /* notify */)); + if (module_sp) { + result.SetStatus(eReturnStatusSuccessFinishResult); + return true; } else { StreamString strm; module_spec.GetUUID().Dump(&strm); - result.AppendErrorWithFormat( - "Unable to locate the executable or symbol file with UUID %s", - strm.GetData()); + if (module_spec.GetFileSpec()) { + if (module_spec.GetSymbolFileSpec()) { + result.AppendErrorWithFormat( + "Unable to create the executable or symbol file with " + "UUID %s with path %s and symbol file %s", + strm.GetData(), module_spec.GetFileSpec().GetPath().c_str(), + module_spec.GetSymbolFileSpec().GetPath().c_str()); + } else { + result.AppendErrorWithFormat( + "Unable to create the executable or symbol file with " + "UUID %s with path %s", + strm.GetData(), + module_spec.GetFileSpec().GetPath().c_str()); + } + } else { + result.AppendErrorWithFormat("Unable to create the executable " + "or symbol file with UUID %s", + strm.GetData()); + } + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + StreamString strm; + module_spec.GetUUID().Dump(&strm); + result.AppendErrorWithFormat( + "Unable to locate the executable or symbol file with UUID %s", + strm.GetData()); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + result.AppendError( + "one or more executable image paths must be specified"); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + for (auto &entry : args.entries()) { + if (entry.ref.empty()) + continue; + + FileSpec file_spec(entry.ref); + if (FileSystem::Instance().Exists(file_spec)) { + ModuleSpec module_spec(file_spec); + if (m_uuid_option_group.GetOptionValue().OptionWasSet()) + module_spec.GetUUID() = + m_uuid_option_group.GetOptionValue().GetCurrentValue(); + if (m_symbol_file.GetOptionValue().OptionWasSet()) + module_spec.GetSymbolFileSpec() = + m_symbol_file.GetOptionValue().GetCurrentValue(); + if (!module_spec.GetArchitecture().IsValid()) + module_spec.GetArchitecture() = target->GetArchitecture(); + Status error; + ModuleSP module_sp(target->GetOrCreateModule( + module_spec, true /* notify */, &error)); + if (!module_sp) { + const char *error_cstr = error.AsCString(); + if (error_cstr) + result.AppendError(error_cstr); + else + result.AppendErrorWithFormat("unsupported module: %s", + entry.c_str()); result.SetStatus(eReturnStatusFailed); return false; + } else { + flush = true; } + result.SetStatus(eReturnStatusSuccessFinishResult); } else { - result.AppendError( - "one or more executable image paths must be specified"); + std::string resolved_path = file_spec.GetPath(); result.SetStatus(eReturnStatusFailed); - return false; - } - } else { - for (auto &entry : args.entries()) { - if (entry.ref.empty()) - continue; - - FileSpec file_spec(entry.ref); - if (FileSystem::Instance().Exists(file_spec)) { - ModuleSpec module_spec(file_spec); - if (m_uuid_option_group.GetOptionValue().OptionWasSet()) - module_spec.GetUUID() = - m_uuid_option_group.GetOptionValue().GetCurrentValue(); - if (m_symbol_file.GetOptionValue().OptionWasSet()) - module_spec.GetSymbolFileSpec() = - m_symbol_file.GetOptionValue().GetCurrentValue(); - if (!module_spec.GetArchitecture().IsValid()) - module_spec.GetArchitecture() = target->GetArchitecture(); - Status error; - ModuleSP module_sp(target->GetOrCreateModule(module_spec, - true /* notify */, &error)); - if (!module_sp) { - const char *error_cstr = error.AsCString(); - if (error_cstr) - result.AppendError(error_cstr); - else - result.AppendErrorWithFormat("unsupported module: %s", - entry.c_str()); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - flush = true; - } - result.SetStatus(eReturnStatusSuccessFinishResult); - } else { - std::string resolved_path = file_spec.GetPath(); - result.SetStatus(eReturnStatusFailed); - if (resolved_path != entry.ref) { - result.AppendErrorWithFormat( - "invalid module path '%s' with resolved path '%s'\n", - entry.ref.str().c_str(), resolved_path.c_str()); - break; - } - result.AppendErrorWithFormat("invalid module path '%s'\n", - entry.c_str()); + if (resolved_path != entry.ref) { + result.AppendErrorWithFormat( + "invalid module path '%s' with resolved path '%s'\n", + entry.ref.str().c_str(), resolved_path.c_str()); break; } + result.AppendErrorWithFormat("invalid module path '%s'\n", + entry.c_str()); + break; } } + } - if (flush) { - ProcessSP process = target->GetProcessSP(); - if (process) - process->Flush(); - } + if (flush) { + ProcessSP process = target->GetProcessSP(); + if (process) + process->Flush(); } return result.Succeeded(); @@ -2679,11 +2611,12 @@ class CommandObjectTargetModulesLoad public: CommandObjectTargetModulesLoad(CommandInterpreter &interpreter) : CommandObjectTargetModulesModuleAutoComplete( - interpreter, "target modules load", "Set the load addresses for " - "one or more sections in a " - "target module.", + interpreter, "target modules load", + "Set the load addresses for one or more sections in a target " + "module.", "target modules load [--file --uuid ] " - "
[
....]"), + "
[
....]", + eCommandRequiresTarget), m_option_group(), m_file_option(LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypeName, "Fullpath or basename for module to load.", ""), @@ -2712,249 +2645,241 @@ class CommandObjectTargetModulesLoad protected: bool DoExecute(Args &args, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); + Target *target = &GetSelectedTarget(); const bool load = m_load_option.GetOptionValue().GetCurrentValue(); const bool set_pc = m_pc_option.GetOptionValue().GetCurrentValue(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - const size_t argc = args.GetArgumentCount(); - ModuleSpec module_spec; - bool search_using_module_spec = false; - - // Allow "load" option to work without --file or --uuid option. - if (load) { - if (!m_file_option.GetOptionValue().OptionWasSet() && - !m_uuid_option_group.GetOptionValue().OptionWasSet()) { - ModuleList &module_list = target->GetImages(); - if (module_list.GetSize() == 1) { - search_using_module_spec = true; - module_spec.GetFileSpec() = - module_list.GetModuleAtIndex(0)->GetFileSpec(); - } - } - } - if (m_file_option.GetOptionValue().OptionWasSet()) { - search_using_module_spec = true; - const char *arg_cstr = m_file_option.GetOptionValue().GetCurrentValue(); - const bool use_global_module_list = true; - ModuleList module_list; - const size_t num_matches = FindModulesByName( - target, arg_cstr, module_list, use_global_module_list); - if (num_matches == 1) { + const size_t argc = args.GetArgumentCount(); + ModuleSpec module_spec; + bool search_using_module_spec = false; + + // Allow "load" option to work without --file or --uuid option. + if (load) { + if (!m_file_option.GetOptionValue().OptionWasSet() && + !m_uuid_option_group.GetOptionValue().OptionWasSet()) { + ModuleList &module_list = target->GetImages(); + if (module_list.GetSize() == 1) { + search_using_module_spec = true; module_spec.GetFileSpec() = module_list.GetModuleAtIndex(0)->GetFileSpec(); - } else if (num_matches > 1) { - search_using_module_spec = false; - result.AppendErrorWithFormat( - "more than 1 module matched by name '%s'\n", arg_cstr); - result.SetStatus(eReturnStatusFailed); - } else { - search_using_module_spec = false; - result.AppendErrorWithFormat("no object file for module '%s'\n", - arg_cstr); - result.SetStatus(eReturnStatusFailed); } } + } - if (m_uuid_option_group.GetOptionValue().OptionWasSet()) { - search_using_module_spec = true; - module_spec.GetUUID() = - m_uuid_option_group.GetOptionValue().GetCurrentValue(); + if (m_file_option.GetOptionValue().OptionWasSet()) { + search_using_module_spec = true; + const char *arg_cstr = m_file_option.GetOptionValue().GetCurrentValue(); + const bool use_global_module_list = true; + ModuleList module_list; + const size_t num_matches = FindModulesByName( + target, arg_cstr, module_list, use_global_module_list); + if (num_matches == 1) { + module_spec.GetFileSpec() = + module_list.GetModuleAtIndex(0)->GetFileSpec(); + } else if (num_matches > 1) { + search_using_module_spec = false; + result.AppendErrorWithFormat( + "more than 1 module matched by name '%s'\n", arg_cstr); + result.SetStatus(eReturnStatusFailed); + } else { + search_using_module_spec = false; + result.AppendErrorWithFormat("no object file for module '%s'\n", + arg_cstr); + result.SetStatus(eReturnStatusFailed); } + } - if (search_using_module_spec) { - ModuleList matching_modules; - const size_t num_matches = - target->GetImages().FindModules(module_spec, matching_modules); - - char path[PATH_MAX]; - if (num_matches == 1) { - Module *module = matching_modules.GetModulePointerAtIndex(0); - if (module) { - ObjectFile *objfile = module->GetObjectFile(); - if (objfile) { - SectionList *section_list = module->GetSectionList(); - if (section_list) { - bool changed = false; - if (argc == 0) { - if (m_slide_option.GetOptionValue().OptionWasSet()) { - const addr_t slide = - m_slide_option.GetOptionValue().GetCurrentValue(); - const bool slide_is_offset = true; - module->SetLoadAddress(*target, slide, slide_is_offset, - changed); - } else { - result.AppendError("one or more section name + load " - "address pair must be specified"); - result.SetStatus(eReturnStatusFailed); - return false; - } + if (m_uuid_option_group.GetOptionValue().OptionWasSet()) { + search_using_module_spec = true; + module_spec.GetUUID() = + m_uuid_option_group.GetOptionValue().GetCurrentValue(); + } + + if (search_using_module_spec) { + ModuleList matching_modules; + const size_t num_matches = + target->GetImages().FindModules(module_spec, matching_modules); + + char path[PATH_MAX]; + if (num_matches == 1) { + Module *module = matching_modules.GetModulePointerAtIndex(0); + if (module) { + ObjectFile *objfile = module->GetObjectFile(); + if (objfile) { + SectionList *section_list = module->GetSectionList(); + if (section_list) { + bool changed = false; + if (argc == 0) { + if (m_slide_option.GetOptionValue().OptionWasSet()) { + const addr_t slide = + m_slide_option.GetOptionValue().GetCurrentValue(); + const bool slide_is_offset = true; + module->SetLoadAddress(*target, slide, slide_is_offset, + changed); } else { - if (m_slide_option.GetOptionValue().OptionWasSet()) { - result.AppendError("The \"--slide \" option can't " - "be used in conjunction with setting " - "section load addresses.\n"); - result.SetStatus(eReturnStatusFailed); - return false; - } + result.AppendError("one or more section name + load " + "address pair must be specified"); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + if (m_slide_option.GetOptionValue().OptionWasSet()) { + result.AppendError("The \"--slide \" option can't " + "be used in conjunction with setting " + "section load addresses.\n"); + result.SetStatus(eReturnStatusFailed); + return false; + } - for (size_t i = 0; i < argc; i += 2) { - const char *sect_name = args.GetArgumentAtIndex(i); - const char *load_addr_cstr = args.GetArgumentAtIndex(i + 1); - if (sect_name && load_addr_cstr) { - ConstString const_sect_name(sect_name); - bool success = false; - addr_t load_addr = StringConvert::ToUInt64( - load_addr_cstr, LLDB_INVALID_ADDRESS, 0, &success); - if (success) { - SectionSP section_sp( - section_list->FindSectionByName(const_sect_name)); - if (section_sp) { - if (section_sp->IsThreadSpecific()) { - result.AppendErrorWithFormat( - "thread specific sections are not yet " - "supported (section '%s')\n", - sect_name); - result.SetStatus(eReturnStatusFailed); - break; - } else { - if (target->GetSectionLoadList() - .SetSectionLoadAddress(section_sp, - load_addr)) - changed = true; - result.AppendMessageWithFormat( - "section '%s' loaded at 0x%" PRIx64 "\n", - sect_name, load_addr); - } - } else { - result.AppendErrorWithFormat("no section found that " - "matches the section " - "name '%s'\n", - sect_name); + for (size_t i = 0; i < argc; i += 2) { + const char *sect_name = args.GetArgumentAtIndex(i); + const char *load_addr_cstr = args.GetArgumentAtIndex(i + 1); + if (sect_name && load_addr_cstr) { + ConstString const_sect_name(sect_name); + bool success = false; + addr_t load_addr = StringConvert::ToUInt64( + load_addr_cstr, LLDB_INVALID_ADDRESS, 0, &success); + if (success) { + SectionSP section_sp( + section_list->FindSectionByName(const_sect_name)); + if (section_sp) { + if (section_sp->IsThreadSpecific()) { + result.AppendErrorWithFormat( + "thread specific sections are not yet " + "supported (section '%s')\n", + sect_name); result.SetStatus(eReturnStatusFailed); break; + } else { + if (target->GetSectionLoadList() + .SetSectionLoadAddress(section_sp, load_addr)) + changed = true; + result.AppendMessageWithFormat( + "section '%s' loaded at 0x%" PRIx64 "\n", + sect_name, load_addr); } } else { - result.AppendErrorWithFormat( - "invalid load address string '%s'\n", - load_addr_cstr); + result.AppendErrorWithFormat("no section found that " + "matches the section " + "name '%s'\n", + sect_name); result.SetStatus(eReturnStatusFailed); break; } } else { - if (sect_name) - result.AppendError("section names must be followed by " - "a load address.\n"); - else - result.AppendError("one or more section name + load " - "address pair must be specified.\n"); + result.AppendErrorWithFormat( + "invalid load address string '%s'\n", load_addr_cstr); result.SetStatus(eReturnStatusFailed); break; } + } else { + if (sect_name) + result.AppendError("section names must be followed by " + "a load address.\n"); + else + result.AppendError("one or more section name + load " + "address pair must be specified.\n"); + result.SetStatus(eReturnStatusFailed); + break; } } + } - if (changed) { - target->ModulesDidLoad(matching_modules); - Process *process = m_exe_ctx.GetProcessPtr(); - if (process) - process->Flush(); + if (changed) { + target->ModulesDidLoad(matching_modules); + Process *process = m_exe_ctx.GetProcessPtr(); + if (process) + process->Flush(); + } + if (load) { + ProcessSP process = target->CalculateProcess(); + Address file_entry = objfile->GetEntryPointAddress(); + if (!process) { + result.AppendError("No process"); + return false; } - if (load) { - ProcessSP process = target->CalculateProcess(); - Address file_entry = objfile->GetEntryPointAddress(); - if (!process) { - result.AppendError("No process"); - return false; - } - if (set_pc && !file_entry.IsValid()) { - result.AppendError("No entry address in object file"); - return false; - } - std::vector loadables( - objfile->GetLoadableData(*target)); - if (loadables.size() == 0) { - result.AppendError("No loadable sections"); - return false; - } - Status error = process->WriteObjectFile(std::move(loadables)); - if (error.Fail()) { - result.AppendError(error.AsCString()); - return false; - } - if (set_pc) { - ThreadList &thread_list = process->GetThreadList(); - RegisterContextSP reg_context( - thread_list.GetSelectedThread()->GetRegisterContext()); - addr_t file_entry_addr = file_entry.GetLoadAddress(target); - if (!reg_context->SetPC(file_entry_addr)) { - result.AppendErrorWithFormat("failed to set PC value to " - "0x%" PRIx64 "\n", - file_entry_addr); - result.SetStatus(eReturnStatusFailed); - } + if (set_pc && !file_entry.IsValid()) { + result.AppendError("No entry address in object file"); + return false; + } + std::vector loadables( + objfile->GetLoadableData(*target)); + if (loadables.size() == 0) { + result.AppendError("No loadable sections"); + return false; + } + Status error = process->WriteObjectFile(std::move(loadables)); + if (error.Fail()) { + result.AppendError(error.AsCString()); + return false; + } + if (set_pc) { + ThreadList &thread_list = process->GetThreadList(); + RegisterContextSP reg_context( + thread_list.GetSelectedThread()->GetRegisterContext()); + addr_t file_entry_addr = file_entry.GetLoadAddress(target); + if (!reg_context->SetPC(file_entry_addr)) { + result.AppendErrorWithFormat("failed to set PC value to " + "0x%" PRIx64 "\n", + file_entry_addr); + result.SetStatus(eReturnStatusFailed); } } - } else { - module->GetFileSpec().GetPath(path, sizeof(path)); - result.AppendErrorWithFormat( - "no sections in object file '%s'\n", path); - result.SetStatus(eReturnStatusFailed); } } else { module->GetFileSpec().GetPath(path, sizeof(path)); - result.AppendErrorWithFormat("no object file for module '%s'\n", + result.AppendErrorWithFormat("no sections in object file '%s'\n", path); result.SetStatus(eReturnStatusFailed); } } else { - FileSpec *module_spec_file = module_spec.GetFileSpecPtr(); - if (module_spec_file) { - module_spec_file->GetPath(path, sizeof(path)); - result.AppendErrorWithFormat("invalid module '%s'.\n", path); - } else - result.AppendError("no module spec"); + module->GetFileSpec().GetPath(path, sizeof(path)); + result.AppendErrorWithFormat("no object file for module '%s'\n", + path); result.SetStatus(eReturnStatusFailed); } } else { - std::string uuid_str; + FileSpec *module_spec_file = module_spec.GetFileSpecPtr(); + if (module_spec_file) { + module_spec_file->GetPath(path, sizeof(path)); + result.AppendErrorWithFormat("invalid module '%s'.\n", path); + } else + result.AppendError("no module spec"); + result.SetStatus(eReturnStatusFailed); + } + } else { + std::string uuid_str; - if (module_spec.GetFileSpec()) - module_spec.GetFileSpec().GetPath(path, sizeof(path)); - else - path[0] = '\0'; + if (module_spec.GetFileSpec()) + module_spec.GetFileSpec().GetPath(path, sizeof(path)); + else + path[0] = '\0'; - if (module_spec.GetUUIDPtr()) - uuid_str = module_spec.GetUUID().GetAsString(); - if (num_matches > 1) { - result.AppendErrorWithFormat( - "multiple modules match%s%s%s%s:\n", path[0] ? " file=" : "", - path, !uuid_str.empty() ? " uuid=" : "", uuid_str.c_str()); - for (size_t i = 0; i < num_matches; ++i) { - if (matching_modules.GetModulePointerAtIndex(i) - ->GetFileSpec() - .GetPath(path, sizeof(path))) - result.AppendMessageWithFormat("%s\n", path); - } - } else { - result.AppendErrorWithFormat( - "no modules were found that match%s%s%s%s.\n", - path[0] ? " file=" : "", path, - !uuid_str.empty() ? " uuid=" : "", uuid_str.c_str()); + if (module_spec.GetUUIDPtr()) + uuid_str = module_spec.GetUUID().GetAsString(); + if (num_matches > 1) { + result.AppendErrorWithFormat( + "multiple modules match%s%s%s%s:\n", path[0] ? " file=" : "", + path, !uuid_str.empty() ? " uuid=" : "", uuid_str.c_str()); + for (size_t i = 0; i < num_matches; ++i) { + if (matching_modules.GetModulePointerAtIndex(i) + ->GetFileSpec() + .GetPath(path, sizeof(path))) + result.AppendMessageWithFormat("%s\n", path); } - result.SetStatus(eReturnStatusFailed); + } else { + result.AppendErrorWithFormat( + "no modules were found that match%s%s%s%s.\n", + path[0] ? " file=" : "", path, !uuid_str.empty() ? " uuid=" : "", + uuid_str.c_str()); } - } else { - result.AppendError("either the \"--file \" or the \"--uuid " - "\" option must be specified.\n"); result.SetStatus(eReturnStatusFailed); - return false; } + } else { + result.AppendError("either the \"--file \" or the \"--uuid " + "\" option must be specified.\n"); + result.SetStatus(eReturnStatusFailed); + return false; } return result.Succeeded(); } @@ -2968,26 +2893,8 @@ class CommandObjectTargetModulesLoad }; // List images with associated information - -static constexpr OptionDefinition g_target_modules_list_options[] = { - // clang-format off - { LLDB_OPT_SET_1, false, "address", 'a', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeAddressOrExpression, "Display the image at this address." }, - { LLDB_OPT_SET_1, false, "arch", 'A', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the architecture when listing images." }, - { LLDB_OPT_SET_1, false, "triple", 't', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the triple when listing images." }, - { LLDB_OPT_SET_1, false, "header", 'h', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Display the image base address as a load address if debugging, a file address otherwise." }, - { LLDB_OPT_SET_1, false, "offset", 'o', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Display the image load address offset from the base file address (the slide amount)." }, - { LLDB_OPT_SET_1, false, "uuid", 'u', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Display the UUID when listing images." }, - { LLDB_OPT_SET_1, false, "fullpath", 'f', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the fullpath to the image object file." }, - { LLDB_OPT_SET_1, false, "directory", 'd', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the directory with optional width for the image object file." }, - { LLDB_OPT_SET_1, false, "basename", 'b', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the basename with optional width for the image object file." }, - { LLDB_OPT_SET_1, false, "symfile", 's', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the fullpath to the image symbol file with optional width." }, - { LLDB_OPT_SET_1, false, "symfile-unique", 'S', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the symbol file with optional width only if it is different from the executable object file." }, - { LLDB_OPT_SET_1, false, "mod-time", 'm', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the modification time with optional width of the module." }, - { LLDB_OPT_SET_1, false, "ref-count", 'r', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeWidth, "Display the reference count if the module is still in the shared module cache." }, - { LLDB_OPT_SET_1, false, "pointer", 'p', OptionParser::eOptionalArgument, nullptr, {}, 0, eArgTypeNone, "Display the module pointer." }, - { LLDB_OPT_SET_1, false, "global", 'g', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Display the modules from the global module list, not just the current target." } - // clang-format on -}; +#define LLDB_OPTIONS_target_modules_list +#include "CommandOptions.inc" class CommandObjectTargetModulesList : public CommandObjectParsed { public: @@ -3282,9 +3189,9 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { case 's': case 'S': { - const SymbolVendor *symbol_vendor = module->GetSymbolVendor(); - if (symbol_vendor) { - const FileSpec symfile_spec = symbol_vendor->GetMainFileSpec(); + if (const SymbolFile *symbol_file = module->GetSymbolFile()) { + const FileSpec symfile_spec = + symbol_file->GetObjectFile()->GetFileSpec(); if (format_char == 'S') { // Dump symbol file only if different from module file if (!symfile_spec || symfile_spec == module->GetFileSpec()) { @@ -3332,13 +3239,8 @@ class CommandObjectTargetModulesList : public CommandObjectParsed { #pragma mark CommandObjectTargetModulesShowUnwind // Lookup unwind information in images - -static constexpr OptionDefinition g_target_modules_show_unwind_options[] = { - // clang-format off - { LLDB_OPT_SET_1, false, "name", 'n', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFunctionName, "Show unwind instructions for a function or symbol name." }, - { LLDB_OPT_SET_2, false, "address", 'a', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeAddressOrExpression, "Show unwind instructions for a function or symbol containing an address" } - // clang-format on -}; +#define LLDB_OPTIONS_target_modules_show_unwind +#include "CommandOptions.inc" class CommandObjectTargetModulesShowUnwind : public CommandObjectParsed { public: @@ -3383,8 +3285,7 @@ class CommandObjectTargetModulesShowUnwind : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("unrecognized option %c.", short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -3643,24 +3544,8 @@ class CommandObjectTargetModulesShowUnwind : public CommandObjectParsed { }; // Lookup information in images - -static constexpr OptionDefinition g_target_modules_lookup_options[] = { - // clang-format off - { LLDB_OPT_SET_1, true, "address", 'a', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeAddressOrExpression, "Lookup an address in one or more target modules." }, - { LLDB_OPT_SET_1, false, "offset", 'o', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeOffset, "When looking up an address subtract from any addresses before doing the lookup." }, - /* FIXME: re-enable regex for types when the LookupTypeInModule actually uses the regex option: | LLDB_OPT_SET_6 */ - { LLDB_OPT_SET_2 | LLDB_OPT_SET_4 | LLDB_OPT_SET_5, false, "regex", 'r', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "The argument for name lookups are regular expressions." }, - { LLDB_OPT_SET_2, true, "symbol", 's', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeSymbol, "Lookup a symbol by name in the symbol tables in one or more target modules." }, - { LLDB_OPT_SET_3, true, "file", 'f', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFilename, "Lookup a file by fullpath or basename in one or more target modules." }, - { LLDB_OPT_SET_3, false, "line", 'l', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeLineNum, "Lookup a line number in a file (must be used in conjunction with --file)." }, - { LLDB_OPT_SET_FROM_TO(3,5), false, "no-inlines", 'i', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Ignore inline entries (must be used in conjunction with --file or --function)." }, - { LLDB_OPT_SET_4, true, "function", 'F', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFunctionName, "Lookup a function by name in the debug symbols in one or more target modules." }, - { LLDB_OPT_SET_5, true, "name", 'n', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeFunctionOrSymbol, "Lookup a function or symbol by name in one or more target modules." }, - { LLDB_OPT_SET_6, true, "type", 't', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeName, "Lookup a type by name in the debug symbols in one or more target modules." }, - { LLDB_OPT_SET_ALL, false, "verbose", 'v', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Enable verbose lookup information." }, - { LLDB_OPT_SET_ALL, false, "all", 'A', OptionParser::eNoArgument, nullptr, {}, 0, eArgTypeNone, "Print all matches, not just the best match, if a best match is available." }, - // clang-format on -}; +#define LLDB_OPTIONS_target_modules_lookup +#include "CommandOptions.inc" class CommandObjectTargetModulesLookup : public CommandObjectParsed { public: @@ -3749,6 +3634,8 @@ class CommandObjectTargetModulesLookup : public CommandObjectParsed { case 'r': m_use_regex = true; break; + default: + llvm_unreachable("Unimplemented option"); } return error; @@ -3935,91 +3822,82 @@ class CommandObjectTargetModulesLookup : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } else { - bool syntax_error = false; - uint32_t i; - uint32_t num_successful_lookups = 0; - uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); - result.GetOutputStream().SetAddressByteSize(addr_byte_size); - result.GetErrorStream().SetAddressByteSize(addr_byte_size); - // Dump all sections for all modules images - - if (command.GetArgumentCount() == 0) { - ModuleSP current_module; + Target *target = &GetSelectedTarget(); + bool syntax_error = false; + uint32_t i; + uint32_t num_successful_lookups = 0; + uint32_t addr_byte_size = target->GetArchitecture().GetAddressByteSize(); + result.GetOutputStream().SetAddressByteSize(addr_byte_size); + result.GetErrorStream().SetAddressByteSize(addr_byte_size); + // Dump all sections for all modules images - // Where it is possible to look in the current symbol context first, - // try that. If this search was successful and --all was not passed, - // don't print anything else. - if (LookupHere(m_interpreter, result, syntax_error)) { - result.GetOutputStream().EOL(); - num_successful_lookups++; - if (!m_options.m_print_all) { - result.SetStatus(eReturnStatusSuccessFinishResult); - return result.Succeeded(); - } + if (command.GetArgumentCount() == 0) { + ModuleSP current_module; + + // Where it is possible to look in the current symbol context first, + // try that. If this search was successful and --all was not passed, + // don't print anything else. + if (LookupHere(m_interpreter, result, syntax_error)) { + result.GetOutputStream().EOL(); + num_successful_lookups++; + if (!m_options.m_print_all) { + result.SetStatus(eReturnStatusSuccessFinishResult); + return result.Succeeded(); } + } - // Dump all sections for all other modules + // Dump all sections for all other modules - const ModuleList &target_modules = target->GetImages(); - std::lock_guard guard(target_modules.GetMutex()); - const size_t num_modules = target_modules.GetSize(); - if (num_modules > 0) { - for (i = 0; i < num_modules && !syntax_error; ++i) { - Module *module_pointer = - target_modules.GetModulePointerAtIndexUnlocked(i); - - if (module_pointer != current_module.get() && - LookupInModule( - m_interpreter, - target_modules.GetModulePointerAtIndexUnlocked(i), result, - syntax_error)) { - result.GetOutputStream().EOL(); - num_successful_lookups++; - } + const ModuleList &target_modules = target->GetImages(); + std::lock_guard guard(target_modules.GetMutex()); + const size_t num_modules = target_modules.GetSize(); + if (num_modules > 0) { + for (i = 0; i < num_modules && !syntax_error; ++i) { + Module *module_pointer = + target_modules.GetModulePointerAtIndexUnlocked(i); + + if (module_pointer != current_module.get() && + LookupInModule(m_interpreter, + target_modules.GetModulePointerAtIndexUnlocked(i), + result, syntax_error)) { + result.GetOutputStream().EOL(); + num_successful_lookups++; } - } else { - result.AppendError("the target has no associated executable images"); - result.SetStatus(eReturnStatusFailed); - return false; } } else { - // Dump specified images (by basename or fullpath) - const char *arg_cstr; - for (i = 0; (arg_cstr = command.GetArgumentAtIndex(i)) != nullptr && - !syntax_error; - ++i) { - ModuleList module_list; - const size_t num_matches = - FindModulesByName(target, arg_cstr, module_list, false); - if (num_matches > 0) { - for (size_t j = 0; j < num_matches; ++j) { - Module *module = module_list.GetModulePointerAtIndex(j); - if (module) { - if (LookupInModule(m_interpreter, module, result, - syntax_error)) { - result.GetOutputStream().EOL(); - num_successful_lookups++; - } + result.AppendError("the target has no associated executable images"); + result.SetStatus(eReturnStatusFailed); + return false; + } + } else { + // Dump specified images (by basename or fullpath) + const char *arg_cstr; + for (i = 0; (arg_cstr = command.GetArgumentAtIndex(i)) != nullptr && + !syntax_error; + ++i) { + ModuleList module_list; + const size_t num_matches = + FindModulesByName(target, arg_cstr, module_list, false); + if (num_matches > 0) { + for (size_t j = 0; j < num_matches; ++j) { + Module *module = module_list.GetModulePointerAtIndex(j); + if (module) { + if (LookupInModule(m_interpreter, module, result, syntax_error)) { + result.GetOutputStream().EOL(); + num_successful_lookups++; } } - } else - result.AppendWarningWithFormat( - "Unable to find an image that matches '%s'.\n", arg_cstr); - } + } + } else + result.AppendWarningWithFormat( + "Unable to find an image that matches '%s'.\n", arg_cstr); } - - if (num_successful_lookups > 0) - result.SetStatus(eReturnStatusSuccessFinishResult); - else - result.SetStatus(eReturnStatusFailed); } + + if (num_successful_lookups > 0) + result.SetStatus(eReturnStatusSuccessFinishResult); + else + result.SetStatus(eReturnStatusFailed); return result.Succeeded(); } @@ -4129,13 +4007,12 @@ class CommandObjectTargetSymbolsAdd : public CommandObjectParsed { ~CommandObjectTargetSymbolsAdd() override = default; - int HandleArgumentCompletion( - CompletionRequest &request, - OptionElementVector &opt_element_vector) override { + void + HandleArgumentCompletion(CompletionRequest &request, + OptionElementVector &opt_element_vector) override { CommandCompletions::InvokeCommonCompletionCallbacks( GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, request, nullptr); - return request.GetNumberOfMatches(); } Options *GetOptions() override { return &m_option_group; } @@ -4238,48 +4115,44 @@ class CommandObjectTargetSymbolsAdd : public CommandObjectParsed { // decides to create it! module_sp->SetSymbolFileFileSpec(symbol_fspec); - SymbolVendor *symbol_vendor = - module_sp->GetSymbolVendor(true, &result.GetErrorStream()); - if (symbol_vendor) { - SymbolFile *symbol_file = symbol_vendor->GetSymbolFile(); - - if (symbol_file) { - ObjectFile *object_file = symbol_file->GetObjectFile(); - - if (object_file && object_file->GetFileSpec() == symbol_fspec) { - // Provide feedback that the symfile has been successfully added. - const FileSpec &module_fs = module_sp->GetFileSpec(); - result.AppendMessageWithFormat( - "symbol file '%s' has been added to '%s'\n", symfile_path, - module_fs.GetPath().c_str()); - - // Let clients know something changed in the module if it is - // currently loaded - ModuleList module_list; - module_list.Append(module_sp); - target->SymbolsDidLoad(module_list); - - // Make sure we load any scripting resources that may be embedded - // in the debug info files in case the platform supports that. - Status error; - StreamString feedback_stream; - module_sp->LoadScriptingResourceInTarget(target, error, - &feedback_stream); - if (error.Fail() && error.AsCString()) - result.AppendWarningWithFormat( - "unable to load scripting data for module %s - error " - "reported was %s", - module_sp->GetFileSpec() - .GetFileNameStrippingExtension() - .GetCString(), - error.AsCString()); - else if (feedback_stream.GetSize()) - result.AppendWarningWithFormat("%s", feedback_stream.GetData()); - - flush = true; - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } + SymbolFile *symbol_file = + module_sp->GetSymbolFile(true, &result.GetErrorStream()); + if (symbol_file) { + ObjectFile *object_file = symbol_file->GetObjectFile(); + + if (object_file && object_file->GetFileSpec() == symbol_fspec) { + // Provide feedback that the symfile has been successfully added. + const FileSpec &module_fs = module_sp->GetFileSpec(); + result.AppendMessageWithFormat( + "symbol file '%s' has been added to '%s'\n", symfile_path, + module_fs.GetPath().c_str()); + + // Let clients know something changed in the module if it is + // currently loaded + ModuleList module_list; + module_list.Append(module_sp); + target->SymbolsDidLoad(module_list); + + // Make sure we load any scripting resources that may be embedded + // in the debug info files in case the platform supports that. + Status error; + StreamString feedback_stream; + module_sp->LoadScriptingResourceInTarget(target, error, + &feedback_stream); + if (error.Fail() && error.AsCString()) + result.AppendWarningWithFormat( + "unable to load scripting data for module %s - error " + "reported was %s", + module_sp->GetFileSpec() + .GetFileNameStrippingExtension() + .GetCString(), + error.AsCString()); + else if (feedback_stream.GetSize()) + result.AppendWarningWithFormat("%s", feedback_stream.GetData()); + + flush = true; + result.SetStatus(eReturnStatusSuccessFinishResult); + return true; } } // Clear the symbol file spec if anything went wrong @@ -4511,23 +4384,8 @@ class CommandObjectTargetSymbols : public CommandObjectMultiword { #pragma mark CommandObjectTargetStopHookAdd // CommandObjectTargetStopHookAdd - -static constexpr OptionDefinition g_target_stop_hook_add_options[] = { - // clang-format off - { LLDB_OPT_SET_ALL, false, "one-liner", 'o', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeOneLiner, "Add a command for the stop hook. Can be specified more than once, and commands will be run in the order they appear." }, - { LLDB_OPT_SET_ALL, false, "shlib", 's', OptionParser::eRequiredArgument, nullptr, {}, CommandCompletions::eModuleCompletion, eArgTypeShlibName, "Set the module within which the stop-hook is to be run." }, - { LLDB_OPT_SET_ALL, false, "thread-index", 'x', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeThreadIndex, "The stop hook is run only for the thread whose index matches this argument." }, - { LLDB_OPT_SET_ALL, false, "thread-id", 't', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeThreadID, "The stop hook is run only for the thread whose TID matches this argument." }, - { LLDB_OPT_SET_ALL, false, "thread-name", 'T', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeThreadName, "The stop hook is run only for the thread whose thread name matches this argument." }, - { LLDB_OPT_SET_ALL, false, "queue-name", 'q', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeQueueName, "The stop hook is run only for threads in the queue whose name is given by this argument." }, - { LLDB_OPT_SET_1, false, "file", 'f', OptionParser::eRequiredArgument, nullptr, {}, CommandCompletions::eSourceFileCompletion, eArgTypeFilename, "Specify the source file within which the stop-hook is to be run." }, - { LLDB_OPT_SET_1, false, "start-line", 'l', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeLineNum, "Set the start of the line range for which the stop-hook is to be run." }, - { LLDB_OPT_SET_1, false, "end-line", 'e', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeLineNum, "Set the end of the line range for which the stop-hook is to be run." }, - { LLDB_OPT_SET_2, false, "classname", 'c', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeClassName, "Specify the class within which the stop-hook is to be run." }, - { LLDB_OPT_SET_3, false, "name", 'n', OptionParser::eRequiredArgument, nullptr, {}, CommandCompletions::eSymbolCompletion, eArgTypeFunctionName, "Set the function name within which the stop hook will be run." }, - { LLDB_OPT_SET_ALL, false, "auto-continue",'G', OptionParser::eRequiredArgument, nullptr, {}, 0, eArgTypeBoolean, "The breakpoint will auto-continue after running its commands." }, - // clang-format on -}; +#define LLDB_OPTIONS_target_stop_hook_add +#include "CommandOptions.inc" class CommandObjectTargetStopHookAdd : public CommandObjectParsed, public IOHandlerDelegateMultiline { @@ -4636,8 +4494,7 @@ class CommandObjectTargetStopHookAdd : public CommandObjectParsed, break; default: - error.SetErrorStringWithFormat("unrecognized option %c.", short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -4737,52 +4594,50 @@ class CommandObjectTargetStopHookAdd : public CommandObjectParsed, bool DoExecute(Args &command, CommandReturnObject &result) override { m_stop_hook_sp.reset(); - Target *target = GetSelectedOrDummyTarget(); - if (target) { - Target::StopHookSP new_hook_sp = target->CreateStopHook(); - - // First step, make the specifier. - std::unique_ptr specifier_up; - if (m_options.m_sym_ctx_specified) { - specifier_up.reset( - new SymbolContextSpecifier(GetDebugger().GetSelectedTarget())); - - if (!m_options.m_module_name.empty()) { - specifier_up->AddSpecification( - m_options.m_module_name.c_str(), - SymbolContextSpecifier::eModuleSpecified); - } + Target &target = GetSelectedOrDummyTarget(); + Target::StopHookSP new_hook_sp = target.CreateStopHook(); - if (!m_options.m_class_name.empty()) { - specifier_up->AddSpecification( - m_options.m_class_name.c_str(), - SymbolContextSpecifier::eClassOrNamespaceSpecified); - } + // First step, make the specifier. + std::unique_ptr specifier_up; + if (m_options.m_sym_ctx_specified) { + specifier_up.reset( + new SymbolContextSpecifier(GetDebugger().GetSelectedTarget())); - if (!m_options.m_file_name.empty()) { - specifier_up->AddSpecification( - m_options.m_file_name.c_str(), - SymbolContextSpecifier::eFileSpecified); - } + if (!m_options.m_module_name.empty()) { + specifier_up->AddSpecification( + m_options.m_module_name.c_str(), + SymbolContextSpecifier::eModuleSpecified); + } - if (m_options.m_line_start != 0) { - specifier_up->AddLineSpecification( - m_options.m_line_start, - SymbolContextSpecifier::eLineStartSpecified); - } + if (!m_options.m_class_name.empty()) { + specifier_up->AddSpecification( + m_options.m_class_name.c_str(), + SymbolContextSpecifier::eClassOrNamespaceSpecified); + } - if (m_options.m_line_end != UINT_MAX) { - specifier_up->AddLineSpecification( - m_options.m_line_end, SymbolContextSpecifier::eLineEndSpecified); - } + if (!m_options.m_file_name.empty()) { + specifier_up->AddSpecification(m_options.m_file_name.c_str(), + SymbolContextSpecifier::eFileSpecified); + } - if (!m_options.m_function_name.empty()) { - specifier_up->AddSpecification( - m_options.m_function_name.c_str(), - SymbolContextSpecifier::eFunctionSpecified); - } + if (m_options.m_line_start != 0) { + specifier_up->AddLineSpecification( + m_options.m_line_start, + SymbolContextSpecifier::eLineStartSpecified); } + if (m_options.m_line_end != UINT_MAX) { + specifier_up->AddLineSpecification( + m_options.m_line_end, SymbolContextSpecifier::eLineEndSpecified); + } + + if (!m_options.m_function_name.empty()) { + specifier_up->AddSpecification( + m_options.m_function_name.c_str(), + SymbolContextSpecifier::eFunctionSpecified); + } + } + if (specifier_up) new_hook_sp->SetSpecifier(specifier_up.release()); @@ -4825,10 +4680,6 @@ class CommandObjectTargetStopHookAdd : public CommandObjectParsed, // into our IOHandlerDelegate functions } result.SetStatus(eReturnStatusSuccessFinishNoResult); - } else { - result.AppendError("invalid target\n"); - result.SetStatus(eReturnStatusFailed); - } return result.Succeeded(); } @@ -4853,43 +4704,37 @@ class CommandObjectTargetStopHookDelete : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target) { - // FIXME: see if we can use the breakpoint id style parser? - size_t num_args = command.GetArgumentCount(); - if (num_args == 0) { - if (!m_interpreter.Confirm("Delete all stop hooks?", true)) { + Target &target = GetSelectedOrDummyTarget(); + // FIXME: see if we can use the breakpoint id style parser? + size_t num_args = command.GetArgumentCount(); + if (num_args == 0) { + if (!m_interpreter.Confirm("Delete all stop hooks?", true)) { + result.SetStatus(eReturnStatusFailed); + return false; + } else { + target.RemoveAllStopHooks(); + } + } else { + bool success; + for (size_t i = 0; i < num_args; i++) { + lldb::user_id_t user_id = StringConvert::ToUInt32( + command.GetArgumentAtIndex(i), 0, 0, &success); + if (!success) { + result.AppendErrorWithFormat("invalid stop hook id: \"%s\".\n", + command.GetArgumentAtIndex(i)); result.SetStatus(eReturnStatusFailed); return false; - } else { - target->RemoveAllStopHooks(); } - } else { - bool success; - for (size_t i = 0; i < num_args; i++) { - lldb::user_id_t user_id = StringConvert::ToUInt32( - command.GetArgumentAtIndex(i), 0, 0, &success); - if (!success) { - result.AppendErrorWithFormat("invalid stop hook id: \"%s\".\n", - command.GetArgumentAtIndex(i)); - result.SetStatus(eReturnStatusFailed); - return false; - } - success = target->RemoveStopHookByID(user_id); - if (!success) { - result.AppendErrorWithFormat("unknown stop hook id: \"%s\".\n", - command.GetArgumentAtIndex(i)); - result.SetStatus(eReturnStatusFailed); - return false; - } + success = target.RemoveStopHookByID(user_id); + if (!success) { + result.AppendErrorWithFormat("unknown stop hook id: \"%s\".\n", + command.GetArgumentAtIndex(i)); + result.SetStatus(eReturnStatusFailed); + return false; } } - result.SetStatus(eReturnStatusSuccessFinishNoResult); - } else { - result.AppendError("invalid target\n"); - result.SetStatus(eReturnStatusFailed); } - + result.SetStatus(eReturnStatusSuccessFinishNoResult); return result.Succeeded(); } }; @@ -4910,38 +4755,33 @@ class CommandObjectTargetStopHookEnableDisable : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (target) { - // FIXME: see if we can use the breakpoint id style parser? - size_t num_args = command.GetArgumentCount(); - bool success; + Target &target = GetSelectedOrDummyTarget(); + // FIXME: see if we can use the breakpoint id style parser? + size_t num_args = command.GetArgumentCount(); + bool success; - if (num_args == 0) { - target->SetAllStopHooksActiveState(m_enable); - } else { - for (size_t i = 0; i < num_args; i++) { - lldb::user_id_t user_id = StringConvert::ToUInt32( - command.GetArgumentAtIndex(i), 0, 0, &success); - if (!success) { - result.AppendErrorWithFormat("invalid stop hook id: \"%s\".\n", - command.GetArgumentAtIndex(i)); - result.SetStatus(eReturnStatusFailed); - return false; - } - success = target->SetStopHookActiveStateByID(user_id, m_enable); - if (!success) { - result.AppendErrorWithFormat("unknown stop hook id: \"%s\".\n", - command.GetArgumentAtIndex(i)); - result.SetStatus(eReturnStatusFailed); - return false; - } + if (num_args == 0) { + target.SetAllStopHooksActiveState(m_enable); + } else { + for (size_t i = 0; i < num_args; i++) { + lldb::user_id_t user_id = StringConvert::ToUInt32( + command.GetArgumentAtIndex(i), 0, 0, &success); + if (!success) { + result.AppendErrorWithFormat("invalid stop hook id: \"%s\".\n", + command.GetArgumentAtIndex(i)); + result.SetStatus(eReturnStatusFailed); + return false; + } + success = target.SetStopHookActiveStateByID(user_id, m_enable); + if (!success) { + result.AppendErrorWithFormat("unknown stop hook id: \"%s\".\n", + command.GetArgumentAtIndex(i)); + result.SetStatus(eReturnStatusFailed); + return false; } } - result.SetStatus(eReturnStatusSuccessFinishNoResult); - } else { - result.AppendError("invalid target\n"); - result.SetStatus(eReturnStatusFailed); } + result.SetStatus(eReturnStatusSuccessFinishNoResult); return result.Succeeded(); } @@ -4964,19 +4804,14 @@ class CommandObjectTargetStopHookList : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetSelectedOrDummyTarget(); - if (!target) { - result.AppendError("invalid target\n"); - result.SetStatus(eReturnStatusFailed); - return result.Succeeded(); - } + Target &target = GetSelectedOrDummyTarget(); - size_t num_hooks = target->GetNumStopHooks(); + size_t num_hooks = target.GetNumStopHooks(); if (num_hooks == 0) { result.GetOutputStream().PutCString("No stop hooks.\n"); } else { for (size_t i = 0; i < num_hooks; i++) { - Target::StopHookSP this_hook = target->GetStopHookAtIndex(i); + Target::StopHookSP this_hook = target.GetStopHookAtIndex(i); if (i > 0) result.GetOutputStream().PutCString("\n"); this_hook->GetDescription(&(result.GetOutputStream()), diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp index ed7cf0a1a48d783..ccb5122820643a6 100644 --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -237,11 +237,8 @@ class CommandObjectIterateOverThreads : public CommandObjectParsed { }; // CommandObjectThreadBacktrace - -static constexpr OptionDefinition g_thread_backtrace_options[] = { #define LLDB_OPTIONS_thread_backtrace #include "CommandOptions.inc" -}; class CommandObjectThreadBacktrace : public CommandObjectIterateOverThreads { public: @@ -284,9 +281,7 @@ class CommandObjectThreadBacktrace : public CommandObjectIterateOverThreads { "invalid boolean value for option '%c'", short_option); } break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -403,10 +398,8 @@ static constexpr OptionEnumValues TriRunningModes() { return OptionEnumValues(g_tri_running_mode); } -static constexpr OptionDefinition g_thread_step_scope_options[] = { #define LLDB_OPTIONS_thread_step_scope #include "CommandOptions.inc" -}; class CommandObjectThreadStepWithTypeAndScope : public CommandObjectParsed { public: @@ -490,9 +483,7 @@ class CommandObjectThreadStepWithTypeAndScope : public CommandObjectParsed { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -828,13 +819,6 @@ class CommandObjectThreadContinue : public CommandObjectParsed { bool DoExecute(Args &command, CommandReturnObject &result) override { bool synchronous_execution = m_interpreter.GetSynchronous(); - if (!GetDebugger().GetSelectedTarget()) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } - Process *process = m_exe_ctx.GetProcessPtr(); if (process == nullptr) { result.AppendError("no process exists. Cannot continue"); @@ -983,10 +967,8 @@ static constexpr OptionEnumValues DuoRunningModes() { return OptionEnumValues(g_duo_running_mode); } -static constexpr OptionDefinition g_thread_until_options[] = { #define LLDB_OPTIONS_thread_until #include "CommandOptions.inc" -}; class CommandObjectThreadUntil : public CommandObjectParsed { public: @@ -1044,9 +1026,7 @@ class CommandObjectThreadUntil : public CommandObjectParsed { } } break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1104,13 +1084,7 @@ class CommandObjectThreadUntil : public CommandObjectParsed { bool DoExecute(Args &command, CommandReturnObject &result) override { bool synchronous_execution = m_interpreter.GetSynchronous(); - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("invalid target, create a debug target using the " - "'target create' command"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); Process *process = m_exe_ctx.GetProcessPtr(); if (process == nullptr) { @@ -1402,11 +1376,8 @@ class CommandObjectThreadList : public CommandObjectParsed { }; // CommandObjectThreadInfo - -static constexpr OptionDefinition g_thread_info_options[] = { #define LLDB_OPTIONS_thread_info #include "CommandOptions.inc" -}; class CommandObjectThreadInfo : public CommandObjectIterateOverThreads { public: @@ -1436,7 +1407,7 @@ class CommandObjectThreadInfo : public CommandObjectIterateOverThreads { break; default: - return Status("invalid short option character '%c'", short_option); + llvm_unreachable("Unimplemented option"); } return error; } @@ -1536,11 +1507,8 @@ class CommandObjectThreadException : public CommandObjectIterateOverThreads { }; // CommandObjectThreadReturn - -static constexpr OptionDefinition g_thread_return_options[] = { #define LLDB_OPTIONS_thread_return #include "CommandOptions.inc" -}; class CommandObjectThreadReturn : public CommandObjectRaw { public: @@ -1573,9 +1541,7 @@ class CommandObjectThreadReturn : public CommandObjectRaw { } } break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -1711,11 +1677,8 @@ class CommandObjectThreadReturn : public CommandObjectRaw { }; // CommandObjectThreadJump - -static constexpr OptionDefinition g_thread_jump_options[] = { #define LLDB_OPTIONS_thread_jump #include "CommandOptions.inc" -}; class CommandObjectThreadJump : public CommandObjectParsed { public: @@ -1760,7 +1723,7 @@ class CommandObjectThreadJump : public CommandObjectParsed { m_force = true; break; default: - return Status("invalid short option character '%c'", short_option); + llvm_unreachable("Unimplemented option"); } return error; } @@ -1854,11 +1817,8 @@ class CommandObjectThreadJump : public CommandObjectParsed { // Next are the subcommands of CommandObjectMultiwordThreadPlan // CommandObjectThreadPlanList - -static constexpr OptionDefinition g_thread_plan_list_options[] = { #define LLDB_OPTIONS_thread_plan_list #include "CommandOptions.inc" -}; class CommandObjectThreadPlanList : public CommandObjectIterateOverThreads { public: @@ -1885,9 +1845,7 @@ class CommandObjectThreadPlanList : public CommandObjectIterateOverThreads { m_verbose = true; break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; } diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp index 98a43f50b1b1f6e..22161413f178e2d 100644 --- a/lldb/source/Commands/CommandObjectType.cpp +++ b/lldb/source/Commands/CommandObjectType.cpp @@ -95,10 +95,8 @@ static bool WarnOnPotentialUnquotedUnsignedType(Args &command, return false; } -static constexpr OptionDefinition g_type_summary_add_options[] = { #define LLDB_OPTIONS_type_summary_add #include "CommandOptions.inc" -}; class CommandObjectTypeSummaryAdd : public CommandObjectParsed, public IOHandlerDelegateMultiline { @@ -197,9 +195,7 @@ class CommandObjectTypeSummaryAdd : public CommandObjectParsed, Status error; - for (size_t i = 0; i < options->m_target_types.GetSize(); i++) { - const char *type_name = - options->m_target_types.GetStringAtIndex(i); + for (const std::string &type_name : options->m_target_types) { CommandObjectTypeSummaryAdd::AddSummary( ConstString(type_name), script_format, (options->m_regex @@ -282,10 +278,8 @@ static const char *g_synth_addreader_instructions = " '''Optional'''\n" "class synthProvider:\n"; -static constexpr OptionDefinition g_type_synth_add_options[] = { #define LLDB_OPTIONS_type_synth_add #include "CommandOptions.inc" -}; class CommandObjectTypeSynthAdd : public CommandObjectParsed, public IOHandlerDelegateMultiline { @@ -329,9 +323,7 @@ class CommandObjectTypeSynthAdd : public CommandObjectParsed, m_regex = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -441,13 +433,10 @@ class CommandObjectTypeSynthAdd : public CommandObjectParsed, Status error; - for (size_t i = 0; i < options->m_target_types.GetSize(); i++) { - const char *type_name = - options->m_target_types.GetStringAtIndex(i); - ConstString const_type_name(type_name); - if (const_type_name) { + for (const std::string &type_name : options->m_target_types) { + if (!type_name.empty()) { if (!CommandObjectTypeSynthAdd::AddSynth( - const_type_name, synth_provider, + ConstString(type_name), synth_provider, options->m_regex ? CommandObjectTypeSynthAdd::eRegexSynth : CommandObjectTypeSynthAdd::eRegularSynth, @@ -503,10 +492,8 @@ class CommandObjectTypeSynthAdd : public CommandObjectParsed, // CommandObjectTypeFormatAdd -static constexpr OptionDefinition g_type_format_add_options[] = { #define LLDB_OPTIONS_type_format_add #include "CommandOptions.inc" -}; class CommandObjectTypeFormatAdd : public CommandObjectParsed { private: @@ -559,9 +546,7 @@ class CommandObjectTypeFormatAdd : public CommandObjectParsed { m_custom_type_name.assign(option_value); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -702,17 +687,18 @@ pointers to floats. Nor will it change the default display for Afloat and Bfloa ConstString typeCS(arg_entry.ref); if (m_command_options.m_regex) { - RegularExpressionSP typeRX(new RegularExpression()); - if (!typeRX->Compile(arg_entry.ref)) { + RegularExpression typeRX(arg_entry.ref); + if (!typeRX.IsValid()) { result.AppendError( "regex format error (maybe this is not really a regex?)"); result.SetStatus(eReturnStatusFailed); return false; } category_sp->GetRegexTypeSummariesContainer()->Delete(typeCS); - category_sp->GetRegexTypeFormatsContainer()->Add(typeRX, entry); + category_sp->GetRegexTypeFormatsContainer()->Add(std::move(typeRX), + entry); } else - category_sp->GetTypeFormatsContainer()->Add(typeCS, entry); + category_sp->GetTypeFormatsContainer()->Add(std::move(typeCS), entry); } result.SetStatus(eReturnStatusSuccessFinishNoResult); @@ -720,10 +706,8 @@ pointers to floats. Nor will it change the default display for Afloat and Bfloa } }; -static constexpr OptionDefinition g_type_formatter_delete_options[] = { #define LLDB_OPTIONS_type_formatter_delete #include "CommandOptions.inc" -}; class CommandObjectTypeFormatterDelete : public CommandObjectParsed { protected: @@ -749,9 +733,7 @@ class CommandObjectTypeFormatterDelete : public CommandObjectParsed { m_language = Language::GetLanguageTypeFromString(option_arg); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -859,10 +841,8 @@ class CommandObjectTypeFormatterDelete : public CommandObjectParsed { } }; -static constexpr OptionDefinition g_type_formatter_clear_options[] = { #define LLDB_OPTIONS_type_formatter_clear #include "CommandOptions.inc" -}; class CommandObjectTypeFormatterClear : public CommandObjectParsed { private: @@ -882,9 +862,7 @@ class CommandObjectTypeFormatterClear : public CommandObjectParsed { m_delete_all = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -971,11 +949,8 @@ class CommandObjectTypeFormatClear : public CommandObjectTypeFormatterClear { "type format clear", "Delete all existing format styles.") {} }; - -static constexpr OptionDefinition g_type_formatter_list_options[] = { #define LLDB_OPTIONS_type_formatter_list #include "CommandOptions.inc" -}; template class CommandObjectTypeFormatterList : public CommandObjectParsed { @@ -1005,9 +980,7 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed { m_category_language.SetOptionWasSet(); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1061,9 +1034,9 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed { std::unique_ptr formatter_regex; if (m_options.m_category_regex.OptionWasSet()) { - category_regex.reset(new RegularExpression()); - if (!category_regex->Compile( - m_options.m_category_regex.GetCurrentValueAsRef())) { + category_regex.reset(new RegularExpression( + m_options.m_category_regex.GetCurrentValueAsRef())); + if (!category_regex->IsValid()) { result.AppendErrorWithFormat( "syntax error in category regular expression '%s'", m_options.m_category_regex.GetCurrentValueAsRef().str().c_str()); @@ -1074,8 +1047,9 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed { if (argc == 1) { const char *arg = command.GetArgumentAtIndex(0); - formatter_regex.reset(new RegularExpression()); - if (!formatter_regex->Compile(llvm::StringRef::withNullAsEmpty(arg))) { + formatter_regex.reset( + new RegularExpression(llvm::StringRef::withNullAsEmpty(arg))); + if (!formatter_regex->IsValid()) { result.AppendErrorWithFormat("syntax error in regular expression '%s'", arg); result.SetStatus(eReturnStatusFailed); @@ -1116,13 +1090,13 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed { foreach .SetWithRegex([&result, &formatter_regex, &any_printed]( - RegularExpressionSP regex_sp, + const RegularExpression ®ex, const FormatterSharedPointer &format_sp) -> bool { if (formatter_regex) { bool escape = true; - if (regex_sp->GetText() == formatter_regex->GetText()) { + if (regex.GetText() == formatter_regex->GetText()) { escape = false; - } else if (formatter_regex->Execute(regex_sp->GetText())) { + } else if (formatter_regex->Execute(regex.GetText())) { escape = false; } @@ -1132,7 +1106,7 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed { any_printed = true; result.GetOutputStream().Printf("%s: %s\n", - regex_sp->GetText().str().c_str(), + regex.GetText().str().c_str(), format_sp->GetDescription().c_str()); return true; }); @@ -1257,8 +1231,7 @@ Status CommandObjectTypeSummaryAdd::CommandOptions::SetOptionValue( m_flags.SetHideItemNames(true); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1647,8 +1620,8 @@ bool CommandObjectTypeSummaryAdd::AddSummary(ConstString type_name, } if (type == eRegexSummary) { - RegularExpressionSP typeRX(new RegularExpression()); - if (!typeRX->Compile(type_name.GetStringRef())) { + RegularExpression typeRX(type_name.GetStringRef()); + if (!typeRX.IsValid()) { if (error) error->SetErrorString( "regex format error (maybe this is not really a regex?)"); @@ -1656,7 +1629,7 @@ bool CommandObjectTypeSummaryAdd::AddSummary(ConstString type_name, } category->GetRegexTypeSummariesContainer()->Delete(type_name); - category->GetRegexTypeSummariesContainer()->Add(typeRX, entry); + category->GetRegexTypeSummariesContainer()->Add(std::move(typeRX), entry); return true; } else if (type == eNamedSummary) { @@ -1664,7 +1637,7 @@ bool CommandObjectTypeSummaryAdd::AddSummary(ConstString type_name, DataVisualization::NamedSummaryFormats::Add(type_name, entry); return true; } else { - category->GetTypeSummariesContainer()->Add(type_name, entry); + category->GetTypeSummariesContainer()->Add(std::move(type_name), entry); return true; } } @@ -1731,11 +1704,8 @@ class CommandObjectTypeSummaryList }; // CommandObjectTypeCategoryDefine - -static constexpr OptionDefinition g_type_category_define_options[] = { #define LLDB_OPTIONS_type_category_define #include "CommandOptions.inc" -}; class CommandObjectTypeCategoryDefine : public CommandObjectParsed { class CommandOptions : public Options { @@ -1759,9 +1729,7 @@ class CommandObjectTypeCategoryDefine : public CommandObjectParsed { error = m_cate_language.SetValueFromString(option_arg); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -1834,11 +1802,8 @@ class CommandObjectTypeCategoryDefine : public CommandObjectParsed { }; // CommandObjectTypeCategoryEnable - -static constexpr OptionDefinition g_type_category_enable_options[] = { #define LLDB_OPTIONS_type_category_enable #include "CommandOptions.inc" -}; class CommandObjectTypeCategoryEnable : public CommandObjectParsed { class CommandOptions : public Options { @@ -1862,9 +1827,7 @@ class CommandObjectTypeCategoryEnable : public CommandObjectParsed { } break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -2006,11 +1969,8 @@ class CommandObjectTypeCategoryDelete : public CommandObjectParsed { }; // CommandObjectTypeCategoryDisable - -OptionDefinition constexpr g_type_category_disable_options[] = { #define LLDB_OPTIONS_type_category_disable #include "CommandOptions.inc" -}; class CommandObjectTypeCategoryDisable : public CommandObjectParsed { class CommandOptions : public Options { @@ -2034,9 +1994,7 @@ class CommandObjectTypeCategoryDisable : public CommandObjectParsed { } break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -2142,9 +2100,9 @@ class CommandObjectTypeCategoryList : public CommandObjectParsed { std::unique_ptr regex; if (argc == 1) { - regex.reset(new RegularExpression()); const char *arg = command.GetArgumentAtIndex(0); - if (!regex->Compile(llvm::StringRef::withNullAsEmpty(arg))) { + regex.reset(new RegularExpression(llvm::StringRef::withNullAsEmpty(arg))); + if (!regex->IsValid()) { result.AppendErrorWithFormat( "syntax error in category regular expression '%s'", arg); result.SetStatus(eReturnStatusFailed); @@ -2396,8 +2354,8 @@ bool CommandObjectTypeSynthAdd::AddSynth(ConstString type_name, } if (type == eRegexSynth) { - RegularExpressionSP typeRX(new RegularExpression()); - if (!typeRX->Compile(type_name.GetStringRef())) { + RegularExpression typeRX(type_name.GetStringRef()); + if (!typeRX.IsValid()) { if (error) error->SetErrorString( "regex format error (maybe this is not really a regex?)"); @@ -2405,21 +2363,18 @@ bool CommandObjectTypeSynthAdd::AddSynth(ConstString type_name, } category->GetRegexTypeSyntheticsContainer()->Delete(type_name); - category->GetRegexTypeSyntheticsContainer()->Add(typeRX, entry); + category->GetRegexTypeSyntheticsContainer()->Add(std::move(typeRX), entry); return true; } else { - category->GetTypeSyntheticsContainer()->Add(type_name, entry); + category->GetTypeSyntheticsContainer()->Add(std::move(type_name), entry); return true; } } #endif // LLDB_DISABLE_PYTHON - -static constexpr OptionDefinition g_type_filter_add_options[] = { #define LLDB_OPTIONS_type_filter_add #include "CommandOptions.inc" -}; class CommandObjectTypeFilterAdd : public CommandObjectParsed { private: @@ -2461,9 +2416,7 @@ class CommandObjectTypeFilterAdd : public CommandObjectParsed { m_regex = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -2527,8 +2480,8 @@ class CommandObjectTypeFilterAdd : public CommandObjectParsed { } if (type == eRegexFilter) { - RegularExpressionSP typeRX(new RegularExpression()); - if (!typeRX->Compile(type_name.GetStringRef())) { + RegularExpression typeRX(type_name.GetStringRef()); + if (!typeRX.IsValid()) { if (error) error->SetErrorString( "regex format error (maybe this is not really a regex?)"); @@ -2536,11 +2489,11 @@ class CommandObjectTypeFilterAdd : public CommandObjectParsed { } category->GetRegexTypeFiltersContainer()->Delete(type_name); - category->GetRegexTypeFiltersContainer()->Add(typeRX, entry); + category->GetRegexTypeFiltersContainer()->Add(std::move(typeRX), entry); return true; } else { - category->GetTypeFiltersContainer()->Add(type_name, entry); + category->GetTypeFiltersContainer()->Add(std::move(type_name), entry); return true; } } @@ -2663,10 +2616,8 @@ all children of my_foo as if no filter was defined:" }; // "type lookup" -static constexpr OptionDefinition g_type_lookup_options[] = { #define LLDB_OPTIONS_type_lookup #include "CommandOptions.inc" -}; class CommandObjectTypeLookup : public CommandObjectRaw { protected: @@ -2717,9 +2668,7 @@ class CommandObjectTypeLookup : public CommandObjectRaw { break; default: - error.SetErrorStringWithFormat("invalid short option character '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; diff --git a/lldb/source/Commands/CommandObjectWatchpoint.cpp b/lldb/source/Commands/CommandObjectWatchpoint.cpp index 98e758b7ef6a769..67fd27887bea966 100644 --- a/lldb/source/Commands/CommandObjectWatchpoint.cpp +++ b/lldb/source/Commands/CommandObjectWatchpoint.cpp @@ -40,11 +40,6 @@ static void AddWatchpointDescription(Stream *s, Watchpoint *wp, static bool CheckTargetForWatchpointOperations(Target *target, CommandReturnObject &result) { - if (target == nullptr) { - result.AppendError("Invalid target. No existing target or watchpoints."); - result.SetStatus(eReturnStatusFailed); - return false; - } bool process_is_valid = target->GetProcessSP() && target->GetProcessSP()->IsAlive(); if (!process_is_valid) { @@ -146,11 +141,8 @@ bool CommandObjectMultiwordWatchpoint::VerifyWatchpointIDs( // CommandObjectWatchpointList::Options #pragma mark List::CommandOptions - -static constexpr OptionDefinition g_watchpoint_list_options[] = { #define LLDB_OPTIONS_watchpoint_list #include "CommandOptions.inc" -}; #pragma mark List @@ -159,7 +151,8 @@ class CommandObjectWatchpointList : public CommandObjectParsed { CommandObjectWatchpointList(CommandInterpreter &interpreter) : CommandObjectParsed( interpreter, "watchpoint list", - "List all watchpoints at configurable levels of detail.", nullptr), + "List all watchpoints at configurable levels of detail.", nullptr, + eCommandRequiresTarget), m_options() { CommandArgumentEntry arg; CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID, @@ -199,9 +192,7 @@ class CommandObjectWatchpointList : public CommandObjectParsed { m_level = lldb::eDescriptionLevelVerbose; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -222,12 +213,7 @@ class CommandObjectWatchpointList : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - if (target == nullptr) { - result.AppendError("Invalid target. No current target or watchpoints."); - result.SetStatus(eReturnStatusSuccessFinishNoResult); - return true; - } + Target *target = &GetSelectedTarget(); if (target->GetProcessSP() && target->GetProcessSP()->IsAlive()) { uint32_t num_supported_hardware_watchpoints; @@ -297,7 +283,7 @@ class CommandObjectWatchpointEnable : public CommandObjectParsed { : CommandObjectParsed(interpreter, "enable", "Enable the specified disabled watchpoint(s). If " "no watchpoints are specified, enable all of them.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID, eArgTypeWatchpointIDRange); @@ -310,7 +296,7 @@ class CommandObjectWatchpointEnable : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); + Target *target = &GetSelectedTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return false; @@ -367,7 +353,7 @@ class CommandObjectWatchpointDisable : public CommandObjectParsed { "Disable the specified watchpoint(s) without " "removing it/them. If no watchpoints are " "specified, disable them all.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID, eArgTypeWatchpointIDRange); @@ -380,7 +366,7 @@ class CommandObjectWatchpointDisable : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); + Target *target = &GetSelectedTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return false; @@ -439,7 +425,7 @@ class CommandObjectWatchpointDelete : public CommandObjectParsed { : CommandObjectParsed(interpreter, "watchpoint delete", "Delete the specified watchpoint(s). If no " "watchpoints are specified, delete them all.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID, eArgTypeWatchpointIDRange); @@ -452,7 +438,7 @@ class CommandObjectWatchpointDelete : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); + Target *target = &GetSelectedTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return false; @@ -507,10 +493,8 @@ class CommandObjectWatchpointDelete : public CommandObjectParsed { // CommandObjectWatchpointIgnore #pragma mark Ignore::CommandOptions -static constexpr OptionDefinition g_watchpoint_ignore_options[] = { #define LLDB_OPTIONS_watchpoint_ignore #include "CommandOptions.inc" -}; class CommandObjectWatchpointIgnore : public CommandObjectParsed { public: @@ -518,7 +502,7 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { : CommandObjectParsed(interpreter, "watchpoint ignore", "Set ignore count on the specified watchpoint(s). " "If no watchpoints are specified, set them all.", - nullptr), + nullptr, eCommandRequiresTarget), m_options() { CommandArgumentEntry arg; CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID, @@ -550,9 +534,7 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { option_arg.str().c_str()); break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -573,7 +555,7 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); + Target *target = &GetSelectedTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return false; @@ -625,11 +607,8 @@ class CommandObjectWatchpointIgnore : public CommandObjectParsed { // CommandObjectWatchpointModify #pragma mark Modify::CommandOptions - -static constexpr OptionDefinition g_watchpoint_modify_options[] = { #define LLDB_OPTIONS_watchpoint_modify #include "CommandOptions.inc" -}; #pragma mark Modify @@ -643,7 +622,7 @@ class CommandObjectWatchpointModify : public CommandObjectParsed { "If no watchpoint is specified, act on the last created " "watchpoint. " "Passing an empty argument clears the modification.", - nullptr), + nullptr, eCommandRequiresTarget), m_options() { CommandArgumentEntry arg; CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID, @@ -674,9 +653,7 @@ class CommandObjectWatchpointModify : public CommandObjectParsed { m_condition_passed = true; break; default: - error.SetErrorStringWithFormat("unrecognized option '%c'", - short_option); - break; + llvm_unreachable("Unimplemented option"); } return error; @@ -699,7 +676,7 @@ class CommandObjectWatchpointModify : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); + Target *target = &GetSelectedTarget(); if (!CheckTargetForWatchpointOperations(target, result)) return false; diff --git a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp index 2be0b5b154e0f53..4e46abac9514694 100644 --- a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp @@ -24,28 +24,33 @@ using namespace lldb; using namespace lldb_private; -// CommandObjectWatchpointCommandAdd - // FIXME: "script-type" needs to have its contents determined dynamically, so -// somebody can add a new scripting -// language to lldb and have it pickable here without having to change this -// enumeration by hand and rebuild lldb proper. - +// somebody can add a new scripting language to lldb and have it pickable here +// without having to change this enumeration by hand and rebuild lldb proper. static constexpr OptionEnumValueElement g_script_option_enumeration[] = { - {eScriptLanguageNone, "command", - "Commands are in the lldb command interpreter language"}, - {eScriptLanguagePython, "python", "Commands are in the Python language."}, - {eSortOrderByName, "default-script", - "Commands are in the default scripting language."} }; + { + eScriptLanguageNone, + "command", + "Commands are in the lldb command interpreter language", + }, + { + eScriptLanguagePython, + "python", + "Commands are in the Python language.", + }, + { + eSortOrderByName, + "default-script", + "Commands are in the default scripting language.", + }, +}; static constexpr OptionEnumValues ScriptOptionEnum() { return OptionEnumValues(g_script_option_enumeration); } -static constexpr OptionDefinition g_watchpoint_command_add_options[] = { #define LLDB_OPTIONS_watchpoint_command_add #include "CommandOptions.inc" -}; class CommandObjectWatchpointCommandAdd : public CommandObjectParsed, public IOHandlerDelegateMultiline { @@ -54,7 +59,7 @@ class CommandObjectWatchpointCommandAdd : public CommandObjectParsed, : CommandObjectParsed(interpreter, "add", "Add a set of LLDB commands to a watchpoint, to be " "executed whenever the watchpoint is hit.", - nullptr), + nullptr, eCommandRequiresTarget), IOHandlerDelegateMultiline("DONE", IOHandlerDelegate::Completion::LLDBCommand), m_options() { @@ -349,7 +354,7 @@ are no syntax errors may indicate that a function was declared but never called. break; default: - break; + llvm_unreachable("Unimplemented option"); } return error; } @@ -384,14 +389,7 @@ are no syntax errors may indicate that a function was declared but never called. protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - - if (target == nullptr) { - result.AppendError("There is not a current executable; there are no " - "watchpoints to which to add commands"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); const WatchpointList &watchpoints = target->GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); @@ -481,7 +479,7 @@ class CommandObjectWatchpointCommandDelete : public CommandObjectParsed { CommandObjectWatchpointCommandDelete(CommandInterpreter &interpreter) : CommandObjectParsed(interpreter, "delete", "Delete the set of commands from a watchpoint.", - nullptr) { + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandArgumentData wp_id_arg; @@ -501,14 +499,7 @@ class CommandObjectWatchpointCommandDelete : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - - if (target == nullptr) { - result.AppendError("There is not a current executable; there are no " - "watchpoints from which to delete commands"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); const WatchpointList &watchpoints = target->GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); @@ -557,10 +548,10 @@ class CommandObjectWatchpointCommandDelete : public CommandObjectParsed { class CommandObjectWatchpointCommandList : public CommandObjectParsed { public: CommandObjectWatchpointCommandList(CommandInterpreter &interpreter) - : CommandObjectParsed(interpreter, "list", "List the script or set of " - "commands to be executed when " - "the watchpoint is hit.", - nullptr) { + : CommandObjectParsed(interpreter, "list", + "List the script or set of commands to be executed " + "when the watchpoint is hit.", + nullptr, eCommandRequiresTarget) { CommandArgumentEntry arg; CommandArgumentData wp_id_arg; @@ -580,14 +571,7 @@ class CommandObjectWatchpointCommandList : public CommandObjectParsed { protected: bool DoExecute(Args &command, CommandReturnObject &result) override { - Target *target = GetDebugger().GetSelectedTarget().get(); - - if (target == nullptr) { - result.AppendError("There is not a current executable; there are no " - "watchpoints for which to list commands"); - result.SetStatus(eReturnStatusFailed); - return false; - } + Target *target = &GetSelectedTarget(); const WatchpointList &watchpoints = target->GetWatchpointList(); size_t num_watchpoints = watchpoints.GetSize(); diff --git a/lldb/source/Commands/Options.td b/lldb/source/Commands/Options.td index 892bfb87252b701..d71029015eade98 100644 --- a/lldb/source/Commands/Options.td +++ b/lldb/source/Commands/Options.td @@ -576,16 +576,16 @@ let Command = "platform process list" in { def platform_process_list_parent : Option<"parent", "P">, GroupRange<2, 6>, Arg<"Pid">, Desc<"Find processes that have a matching parent process ID.">; def platform_process_list_uid : Option<"uid", "u">, GroupRange<2, 6>, - Arg<"UnsignedInteger">, + Arg<"UnsignedInteger">, Validator<"&posix_validator">, Desc<"Find processes that have a matching user ID.">; def platform_process_list_euid : Option<"euid", "U">, GroupRange<2, 6>, - Arg<"UnsignedInteger">, + Arg<"UnsignedInteger">, Validator<"&posix_validator">, Desc<"Find processes that have a matching effective user ID.">; def platform_process_list_gid : Option<"gid", "g">, GroupRange<2, 6>, - Arg<"UnsignedInteger">, + Arg<"UnsignedInteger">, Validator<"&posix_validator">, Desc<"Find processes that have a matching group ID.">; def platform_process_list_egid : Option<"egid", "G">, GroupRange<2, 6>, - Arg<"UnsignedInteger">, + Arg<"UnsignedInteger">, Validator<"&posix_validator">, Desc<"Find processes that have a matching effective group ID.">; def platform_process_list_arch : Option<"arch", "a">, GroupRange<2, 6>, Arg<"Architecture">, @@ -726,6 +726,150 @@ let Command = "source list" in { " listing to look backwards from the last displayed block of source.">; } +let Command = "target dependents" in { + def dependents_no_dependents : Option<"no-dependents", "d">, Group<1>, + OptionalEnumArg<"Value", "OptionEnumValues(g_dependents_enumaration)">, + Desc<"Whether or not to load dependents when creating a target. If the " + "option is not specified, the value is implicitly 'default'. If the " + "option is specified but without a value, the value is implicitly " + "'true'.">; +} + +let Command = "target modules dump" in { + def target_modules_dump_verbose : Option<"verbose", "v">, + Desc<"Enable verbose dump.">; +} + +let Command = "target modules list" in { + def target_modules_list_address : Option<"address", "a">, Group<1>, + Arg<"AddressOrExpression">, Desc<"Display the image at this address.">; + def target_modules_list_arch : Option<"arch", "A">, Group<1>, + OptionalArg<"Width">, Desc<"Display the architecture when listing images.">; + def target_modules_list_triple : Option<"triple", "t">, Group<1>, + OptionalArg<"Width">, Desc<"Display the triple when listing images.">; + def target_modules_list_header : Option<"header", "h">, Group<1>, + Desc<"Display the image base address as a load address if debugging, a file" + " address otherwise.">; + def target_modules_list_offset : Option<"offset", "o">, Group<1>, + Desc<"Display the image load address offset from the base file address " + "(the slide amount).">; + def target_modules_list_uuid : Option<"uuid", "u">, Group<1>, + Desc<"Display the UUID when listing images.">; + def target_modules_list_fullpath : Option<"fullpath", "f">, Group<1>, + OptionalArg<"Width">, + Desc<"Display the fullpath to the image object file.">; + def target_modules_list_directory : Option<"directory", "d">, Group<1>, + OptionalArg<"Width">, Desc<"Display the directory with optional width for " + "the image object file.">; + def target_modules_list_basename : Option<"basename", "b">, Group<1>, + OptionalArg<"Width">, Desc<"Display the basename with optional width for " + "the image object file.">; + def target_modules_list_symfile : Option<"symfile", "s">, Group<1>, + OptionalArg<"Width">, Desc<"Display the fullpath to the image symbol file " + "with optional width.">; + def target_modules_list_symfile_unique : Option<"symfile-unique", "S">, + Group<1>, OptionalArg<"Width">, Desc<"Display the symbol file with optional" + " width only if it is different from the executable object file.">; + def target_modules_list_mod_time : Option<"mod-time", "m">, Group<1>, + OptionalArg<"Width">, Desc<"Display the modification time with optional " + "width of the module.">; + def target_modules_list_ref_count : Option<"ref-count", "r">, Group<1>, + OptionalArg<"Width">, Desc<"Display the reference count if the module is " + "still in the shared module cache.">; + def target_modules_list_pointer : Option<"pointer", "p">, Group<1>, + OptionalArg<"None">, Desc<"Display the module pointer.">; + def target_modules_list_global : Option<"global", "g">, Group<1>, + Desc<"Display the modules from the global module list, not just the " + "current target.">; +} + +let Command = "target modules show unwind" in { + def target_modules_show_unwind_name : Option<"name", "n">, Group<1>, + Arg<"FunctionName">, + Desc<"Show unwind instructions for a function or symbol name.">; + def target_modules_show_unwind_address : Option<"address", "a">, Group<2>, + Arg<"AddressOrExpression">, Desc<"Show unwind instructions for a function " + "or symbol containing an address">; +} + +let Command = "target modules lookup" in { + def target_modules_lookup_address : Option<"address", "a">, Group<1>, + Arg<"AddressOrExpression">, Required, Desc<"Lookup an address in one or " + "more target modules.">; + def target_modules_lookup_offset : Option<"offset", "o">, Group<1>, + Arg<"Offset">, Desc<"When looking up an address subtract from any " + "addresses before doing the lookup.">; + // FIXME: re-enable regex for types when the LookupTypeInModule actually uses + // the regex option by adding to group 6. + def target_modules_lookup_regex : Option<"regex", "r">, Groups<[2,4,5]>, + Desc<"The argument for name lookups are regular expressions.">; + def target_modules_lookup_symbol : Option<"symbol", "s">, Group<2>, + Arg<"Symbol">, Required, Desc<"Lookup a symbol by name in the symbol tables" + " in one or more target modules.">; + def target_modules_lookup_file : Option<"file", "f">, Group<3>, + Arg<"Filename">, Required, Desc<"Lookup a file by fullpath or basename in " + "one or more target modules.">; + def target_modules_lookup_line : Option<"line", "l">, Group<3>, + Arg<"LineNum">, Desc<"Lookup a line number in a file (must be used in " + "conjunction with --file).">; + def target_modules_lookup_no_inlines : Option<"no-inlines", "i">, + GroupRange<3,5>, + Desc<"Ignore inline entries (must be used in conjunction with --file or " + "--function).">; + def target_modules_lookup_function : Option<"function", "F">, Group<4>, + Arg<"FunctionName">, Required, Desc<"Lookup a function by name in the debug" + " symbols in one or more target modules.">; + def target_modules_lookup_name : Option<"name", "n">, Group<5>, + Arg<"FunctionOrSymbol">, Required, Desc<"Lookup a function or symbol by " + "name in one or more target modules.">; + def target_modules_lookup_type : Option<"type", "t">, Group<6>, Arg<"Name">, + Required, Desc<"Lookup a type by name in the debug symbols in one or more " + "target modules.">; + def target_modules_lookup_verbose : Option<"verbose", "v">, + Desc<"Enable verbose lookup information.">; + def target_modules_lookup_all : Option<"all", "A">, Desc<"Print all matches, " + "not just the best match, if a best match is available.">; +} + +let Command = "target stop hook add" in { + def target_stop_hook_add_one_liner : Option<"one-liner", "o">, + Arg<"OneLiner">, Desc<"Add a command for the stop hook. Can be specified " + "more than once, and commands will be run in the order they appear.">; + def target_stop_hook_add_shlib : Option<"shlib", "s">, Arg<"ShlibName">, + Completion<"Module">, + Desc<"Set the module within which the stop-hook is to be run.">; + def target_stop_hook_add_thread_index : Option<"thread-index", "x">, + Arg<"ThreadIndex">, Desc<"The stop hook is run only for the thread whose " + "index matches this argument.">; + def target_stop_hook_add_thread_id : Option<"thread-id", "t">, + Arg<"ThreadID">, Desc<"The stop hook is run only for the thread whose TID " + "matches this argument.">; + def target_stop_hook_add_thread_name : Option<"thread-name", "T">, + Arg<"ThreadName">, Desc<"The stop hook is run only for the thread whose " + "thread name matches this argument.">; + def target_stop_hook_add_queue_name : Option<"queue-name", "q">, + Arg<"QueueName">, Desc<"The stop hook is run only for threads in the queue " + "whose name is given by this argument.">; + def target_stop_hook_add_file : Option<"file", "f">, Group<1>, + Arg<"Filename">, Desc<"Specify the source file within which the stop-hook " + "is to be run.">, Completion<"SourceFile">; + def target_stop_hook_add_start_line : Option<"start-line", "l">, Group<1>, + Arg<"LineNum">, Desc<"Set the start of the line range for which the " + "stop-hook is to be run.">; + def target_stop_hook_add_end_line : Option<"end-line", "e">, Group<1>, + Arg<"LineNum">, Desc<"Set the end of the line range for which the stop-hook" + " is to be run.">; + def target_stop_hook_add_classname : Option<"classname", "c">, Group<2>, + Arg<"ClassName">, + Desc<"Specify the class within which the stop-hook is to be run.">; + def target_stop_hook_add_name : Option<"name", "n">, Group<3>, + Arg<"FunctionName">, Desc<"Set the function name within which the stop hook" + " will be run.">, Completion<"Symbol">; + def target_stop_hook_add_auto_continue : Option<"auto-continue", "G">, + Arg<"Boolean">, Desc<"The breakpoint will auto-continue after running its" + " commands.">; +} + let Command = "thread backtrace" in { def thread_backtrace_count : Option<"count", "c">, Group<1>, Arg<"Count">, Desc<"How many frames to display (-1 for all)">; diff --git a/lldb/source/Commands/OptionsBase.td b/lldb/source/Commands/OptionsBase.td index c4a326fbaf5f7ba..f6967f067bf40ce 100644 --- a/lldb/source/Commands/OptionsBase.td +++ b/lldb/source/Commands/OptionsBase.td @@ -1,3 +1,107 @@ + +// The fields below describe how the fields of `OptionDefinition` struct are +// initialized by different definitions in the Options.td and this file. +//////////////////////////////////////////////////////////////////////////////// +// Field: usage_mask +// Default value: LLDB_OPT_SET_ALL (Option allowed in all groups) +// Set by: +// - `Group`: Sets a single group to this option. +// Example: def foo : Option<"foo", "f">, Group<1>; +// - `Groups`: Sets a given list of group numbers. +// Example: def foo : Option<"foo", "f">, Groups<[1,4,6]>; +// - `GroupRange`: Sets an interval of groups. Start and end are inclusive. +// Example: def foo : Option<"foo", "f">, GroupRange<1, 4>; +// Sets group 1, 2, 3, 4 for the option. +//////////////////////////////////////////////////////////////////////////////// +// Field: required +// Default value: false (Not required) +// Set by: +// - `Required`: Marks the option as required. +// Example: def foo : Option<"foo", "f">, Required; +//////////////////////////////////////////////////////////////////////////////// +// Field: long_option +// Default value: not available (has to be defined in Option) +// Set by: +// - `Option` constructor: Already set by constructor. +// Example: def foo : Option<"long-option", "l"> +// ^ +// long option value +//////////////////////////////////////////////////////////////////////////////// +// Field: short_option +// Default value: not available (has to be defined in Option) +// Set by: +// - `Option` constructor: Already set by constructor. +// Example: def foo : Option<"long-option", "l"> +// ^ +// short option +//////////////////////////////////////////////////////////////////////////////// +// Field: option_has_arg +// Default value: OptionParser::eNoArgument (No argument allowed) +// Set by: +// - `OptionalArg`: Sets the argument type and marks it as optional. +// - `Arg`: Sets the argument type and marks it as required. +// - `EnumArg`: Sets the argument type to an enum and marks it as required. +// - `OptionalEnumArg`: Same as EnumArg but marks it as optional. +// See argument_type field for more info. +//////////////////////////////////////////////////////////////////////////////// +// Field: validator +// Default value: 0 (No validator for option) +// Set by: +// - `Validator`: Sets the value to a given validator (which has to exist in +// the surrounding code. +//////////////////////////////////////////////////////////////////////////////// +// Field: enum_values +// Default value: {} (No enum associated with this option) +// Set by: +// - `OptionalEnumArg`: +// - `EnumArg`: Sets the argument type and assigns it a enum holding the valid +// values. The enum needs to be a variable in the including code. +// Marks the option as required (see option_has_arg). +// Example: def foo : Option<"foo", "f">, +// EnumArg<"SortOrder", +// "OptionEnumValues(g_sort_option_enumeration)">; +//////////////////////////////////////////////////////////////////////////////// +// Field: completion_type +// Default value: CommandCompletions::eNoCompletion (no tab completion) +// Set by: +// - `Completion`: Gives the option a single completion kind. +// Example: def foo : Option<"foo", "f">, +// Completion<"DiskFile">; +// Sets the completion to eDiskFileCompletion +// +// - `Completions`: Sets a given kinds of completions. +// Example: def foo : Option<"foo", "f">, +// Completions<["DiskFile", "DiskDirectory"]>; +// Sets the completion to +// `eDiskFileCompletion | eDiskDirectoryCompletion`. +//////////////////////////////////////////////////////////////////////////////// +// Field: argument_type +// Default value: eArgTypeNone +// Set by: +// - `OptionalArg`: Sets the argument type and marks it as optional. +// Example: def foo : Option<"foo", "f">, OptionalArg<"Pid">; +// Sets the argument type to eArgTypePid and marks option as +// optional (see option_has_arg). +// - `Arg`: Sets the argument type and marks it as required. +// Example: def foo : Option<"foo", "f">, Arg<"Pid">; +// Sets the argument type to eArgTypePid and marks option as +// required (see option_has_arg). +// - `OptionalEnumArg`: +// - `EnumArg`: Sets the argument type and assigns it a enum holding the valid +// values. The enum needs to be a variable in the including code. +// Marks the option as required (see option_has_arg). +// Example: def foo : Option<"foo", "f">, +// EnumArg<"SortOrder", +// "OptionEnumValues(g_sort_option_enumeration)">; +// Use `OptionalEnumArg` for having an option enum argument. +//////////////////////////////////////////////////////////////////////////////// +// Field: usage_text +// Default value: "" +// Set by: +// - `Desc`: Sets the description for the given option. +// Example: def foo : Option<"foo", "f">, Desc<"does nothing.">; +// Sets the description to "does nothing.". + // Base class for all options. class Option { string FullName = fullname; @@ -52,6 +156,13 @@ class EnumArg { string ArgEnum = enum; } +// Gives the option an required argument. +class OptionalEnumArg { + string ArgType = type; + string ArgEnum = enum; + bit OptionalArg = 1; +} + // Sets the available completions for the given option. class Completions completions> { list Completions = completions; @@ -60,3 +171,8 @@ class Completions completions> { class Completion { list Completions = [completion]; } + +// Sets the validator for a given option. +class Validator { + string Validator = validator; +} diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp index 0da83eb98edb135..a3912bef5a6ef19 100644 --- a/lldb/source/Core/Address.cpp +++ b/lldb/source/Core/Address.cpp @@ -261,6 +261,24 @@ bool Address::ResolveAddressUsingFileSections(addr_t file_addr, return false; // Failed to resolve this address to a section offset value } +/// if "addr_range_ptr" is not NULL, then fill in with the address range of the function. +bool Address::ResolveFunctionScope(SymbolContext &sym_ctx, + AddressRange *addr_range_ptr) { + constexpr SymbolContextItem resolve_scope = + eSymbolContextFunction | eSymbolContextSymbol; + + if (!(CalculateSymbolContext(&sym_ctx, resolve_scope) & resolve_scope)) { + if (addr_range_ptr) + addr_range_ptr->Clear(); + return false; + } + + if (!addr_range_ptr) + return true; + + return sym_ctx.GetAddressRange(resolve_scope, 0, false, *addr_range_ptr); +} + ModuleSP Address::GetModule() const { lldb::ModuleSP module_sp; SectionSP section_sp(GetSection()); @@ -475,23 +493,19 @@ bool Address::Dump(Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, switch (sect_type) { case eSectionTypeData: if (module_sp) { - SymbolVendor *sym_vendor = module_sp->GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) { - const addr_t file_Addr = GetFileAddress(); - Symbol *symbol = - symtab->FindSymbolContainingFileAddress(file_Addr); - if (symbol) { - const char *symbol_name = symbol->GetName().AsCString(); - if (symbol_name) { - s->PutCString(symbol_name); - addr_t delta = - file_Addr - symbol->GetAddressRef().GetFileAddress(); - if (delta) - s->Printf(" + %" PRIu64, delta); - showed_info = true; - } + if (Symtab *symtab = module_sp->GetSymtab()) { + const addr_t file_Addr = GetFileAddress(); + Symbol *symbol = + symtab->FindSymbolContainingFileAddress(file_Addr); + if (symbol) { + const char *symbol_name = symbol->GetName().AsCString(); + if (symbol_name) { + s->PutCString(symbol_name); + addr_t delta = + file_Addr - symbol->GetAddressRef().GetFileAddress(); + if (delta) + s->Printf(" + %" PRIu64, delta); + showed_info = true; } } } @@ -985,10 +999,9 @@ AddressClass Address::GetAddressClass() const { if (module_sp) { ObjectFile *obj_file = module_sp->GetObjectFile(); if (obj_file) { - // Give the symbol vendor a chance to add to the unified section list - // and to symtab from symbol file - if (SymbolVendor *vendor = module_sp->GetSymbolVendor()) - vendor->GetSymtab(); + // Give the symbol file a chance to add to the unified section list + // and to the symtab. + module_sp->GetSymtab(); return obj_file->GetAddressClass(GetFileAddress()); } } diff --git a/lldb/source/Core/AddressResolverFileLine.cpp b/lldb/source/Core/AddressResolverFileLine.cpp index 24c0222d6ec2f27..33a7bb186eb03cb 100644 --- a/lldb/source/Core/AddressResolverFileLine.cpp +++ b/lldb/source/Core/AddressResolverFileLine.cpp @@ -60,15 +60,15 @@ AddressResolverFileLine::SearchCallback(SearchFilter &filter, if (log) { StreamString s; // new_bp_loc->GetDescription (&s, lldb::eDescriptionLevelVerbose); - // log->Printf ("Added address: %s\n", s.GetData()); + // LLDB_LOGF(log, "Added address: %s\n", s.GetData()); } } else { - if (log) - log->Printf( - "error: Unable to resolve address at file address 0x%" PRIx64 - " for %s:%d\n", - line_start.GetFileAddress(), - m_file_spec.GetFilename().AsCString(""), m_line_number); + LLDB_LOGF(log, + "error: Unable to resolve address at file address 0x%" PRIx64 + " for %s:%d\n", + line_start.GetFileAddress(), + m_file_spec.GetFilename().AsCString(""), + m_line_number); } } } diff --git a/lldb/source/Core/AddressResolverName.cpp b/lldb/source/Core/AddressResolverName.cpp index e861368c0a25f63..089f0da44005946 100644 --- a/lldb/source/Core/AddressResolverName.cpp +++ b/lldb/source/Core/AddressResolverName.cpp @@ -36,7 +36,8 @@ AddressResolverName::AddressResolverName(const char *func_name, : AddressResolver(), m_func_name(func_name), m_class_name(nullptr), m_regex(), m_match_type(type) { if (m_match_type == AddressResolver::Regexp) { - if (!m_regex.Compile(m_func_name.GetStringRef())) { + m_regex = RegularExpression(m_func_name.GetStringRef()); + if (!m_regex.IsValid()) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS)); if (log) @@ -46,9 +47,9 @@ AddressResolverName::AddressResolverName(const char *func_name, } } -AddressResolverName::AddressResolverName(RegularExpression &func_regex) +AddressResolverName::AddressResolverName(RegularExpression func_regex) : AddressResolver(), m_func_name(nullptr), m_class_name(nullptr), - m_regex(func_regex), m_match_type(AddressResolver::Regexp) {} + m_regex(std::move(func_regex)), m_match_type(AddressResolver::Regexp) {} AddressResolverName::AddressResolverName(const char *class_name, const char *method, diff --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt index 7ca37f97aa51de4..476e92878e059c2 100644 --- a/lldb/source/Core/CMakeLists.txt +++ b/lldb/source/Core/CMakeLists.txt @@ -1,3 +1,11 @@ +lldb_tablegen(CoreProperties.inc -gen-lldb-property-defs + SOURCE CoreProperties.td + TARGET LLDBCorePropertiesGen) + +lldb_tablegen(CorePropertiesEnum.inc -gen-lldb-property-enum-defs + SOURCE CoreProperties.td + TARGET LLDBCorePropertiesEnumGen) + set(LLDB_CURSES_LIBS) set(LLDB_LIBEDIT_LIBS) @@ -76,6 +84,10 @@ add_lldb_library(lldbCore Demangle ) +add_dependencies(lldbCore + LLDBCorePropertiesGen + LLDBCorePropertiesEnumGen) + # Needed to properly resolve references in a debug build. # TODO: Remove once we have better layering set_target_properties(lldbCore PROPERTIES LINK_INTERFACE_MULTIPLICITY 4) diff --git a/lldb/source/Core/Communication.cpp b/lldb/source/Core/Communication.cpp index c39976d6556b18c..0afd897a2093abc 100644 --- a/lldb/source/Core/Communication.cpp +++ b/lldb/source/Core/Communication.cpp @@ -46,9 +46,10 @@ Communication::Communication(const char *name) m_callback(nullptr), m_callback_baton(nullptr), m_close_on_eof(true) { - lldb_private::LogIfAnyCategoriesSet( - LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_COMMUNICATION, - "%p Communication::Communication (name = %s)", this, name); + + LLDB_LOG(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_OBJECT | + LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::Communication (name = {1})", this, name); SetEventName(eBroadcastBitDisconnected, "disconnected"); SetEventName(eBroadcastBitReadThreadGotBytes, "got bytes"); @@ -61,10 +62,10 @@ Communication::Communication(const char *name) } Communication::~Communication() { - lldb_private::LogIfAnyCategoriesSet( - LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_COMMUNICATION, - "%p Communication::~Communication (name = %s)", this, - GetBroadcasterName().AsCString()); + LLDB_LOG(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_OBJECT | + LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::~Communication (name = {1})", this, + GetBroadcasterName().AsCString()); Clear(); } @@ -77,9 +78,8 @@ void Communication::Clear() { ConnectionStatus Communication::Connect(const char *url, Status *error_ptr) { Clear(); - lldb_private::LogIfAnyCategoriesSet(LIBLLDB_LOG_COMMUNICATION, - "%p Communication::Connect (url = %s)", - this, url); + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::Connect (url = {1})", this, url); lldb::ConnectionSP connection_sp(m_connection_sp); if (connection_sp) @@ -90,8 +90,8 @@ ConnectionStatus Communication::Connect(const char *url, Status *error_ptr) { } ConnectionStatus Communication::Disconnect(Status *error_ptr) { - lldb_private::LogIfAnyCategoriesSet(LIBLLDB_LOG_COMMUNICATION, - "%p Communication::Disconnect ()", this); + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::Disconnect ()", this); lldb::ConnectionSP connection_sp(m_connection_sp); if (connection_sp) { @@ -173,11 +173,10 @@ size_t Communication::Write(const void *src, size_t src_len, lldb::ConnectionSP connection_sp(m_connection_sp); std::lock_guard guard(m_write_mutex); - lldb_private::LogIfAnyCategoriesSet( - LIBLLDB_LOG_COMMUNICATION, - "%p Communication::Write (src = %p, src_len = %" PRIu64 - ") connection = %p", - this, src, (uint64_t)src_len, connection_sp.get()); + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::Write (src = {1}, src_len = %" PRIu64 + ") connection = {2}", + this, src, (uint64_t)src_len, connection_sp.get()); if (connection_sp) return connection_sp->Write(src, src_len, status, error_ptr); @@ -195,8 +194,8 @@ bool Communication::StartReadThread(Status *error_ptr) { if (m_read_thread.IsJoinable()) return true; - lldb_private::LogIfAnyCategoriesSet( - LIBLLDB_LOG_COMMUNICATION, "%p Communication::StartReadThread ()", this); + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::StartReadThread ()", this); char thread_name[1024]; snprintf(thread_name, sizeof(thread_name), "", @@ -204,10 +203,23 @@ bool Communication::StartReadThread(Status *error_ptr) { m_read_thread_enabled = true; m_read_thread_did_exit = false; - m_read_thread = ThreadLauncher::LaunchThread( - thread_name, Communication::ReadThread, this, error_ptr); + auto maybe_thread = ThreadLauncher::LaunchThread( + thread_name, Communication::ReadThread, this); + if (maybe_thread) { + m_read_thread = *maybe_thread; + } else { + if (error_ptr) + *error_ptr = Status(maybe_thread.takeError()); + else { + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST), + "failed to launch host thread: {}", + llvm::toString(maybe_thread.takeError())); + } + } + if (!m_read_thread.IsJoinable()) m_read_thread_enabled = false; + return m_read_thread_enabled; } @@ -215,8 +227,8 @@ bool Communication::StopReadThread(Status *error_ptr) { if (!m_read_thread.IsJoinable()) return true; - lldb_private::LogIfAnyCategoriesSet( - LIBLLDB_LOG_COMMUNICATION, "%p Communication::StopReadThread ()", this); + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::StopReadThread ()", this); m_read_thread_enabled = false; @@ -257,11 +269,10 @@ size_t Communication::GetCachedBytes(void *dst, size_t dst_len) { void Communication::AppendBytesToCache(const uint8_t *bytes, size_t len, bool broadcast, ConnectionStatus status) { - lldb_private::LogIfAnyCategoriesSet( - LIBLLDB_LOG_COMMUNICATION, - "%p Communication::AppendBytesToCache (src = %p, src_len = %" PRIu64 - ", broadcast = %i)", - this, bytes, (uint64_t)len, broadcast); + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION), + "{0} Communication::AppendBytesToCache (src = {1}, src_len = {2}, " + "broadcast = {3})", + this, bytes, (uint64_t)len, broadcast); if ((bytes == nullptr || len == 0) && (status != lldb::eConnectionStatusEndOfFile)) return; @@ -297,8 +308,7 @@ lldb::thread_result_t Communication::ReadThread(lldb::thread_arg_t p) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION)); - if (log) - log->Printf("%p Communication::ReadThread () thread starting...", p); + LLDB_LOGF(log, "%p Communication::ReadThread () thread starting...", p); uint8_t buf[1024]; @@ -353,7 +363,7 @@ lldb::thread_result_t Communication::ReadThread(lldb::thread_arg_t p) { } log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_COMMUNICATION); if (log) - log->Printf("%p Communication::ReadThread () thread exiting...", p); + LLDB_LOGF(log, "%p Communication::ReadThread () thread exiting...", p); comm->m_read_thread_did_exit = true; // Let clients know that this thread is exiting diff --git a/lldb/source/Core/CoreProperties.td b/lldb/source/Core/CoreProperties.td new file mode 100644 index 000000000000000..014927c65c6f1d6 --- /dev/null +++ b/lldb/source/Core/CoreProperties.td @@ -0,0 +1,118 @@ +include "../../include/lldb/Core/PropertiesBase.td" + +let Definition = "modulelist" in { + def EnableExternalLookup: Property<"enable-external-lookup", "Boolean">, + Global, + DefaultTrue, + Desc<"Control the use of external tools and repositories to locate symbol files. Directories listed in target.debug-file-search-paths and directory of the executable are always checked first for separate debug info files. Then depending on this setting: On macOS, Spotlight would be also used to locate a matching .dSYM bundle based on the UUID of the executable. On NetBSD, directory /usr/libdata/debug would be also searched. On platforms other than NetBSD directory /usr/lib/debug would be also searched.">; + def ClangModulesCachePath: Property<"clang-modules-cache-path", "FileSpec">, + Global, + DefaultStringValue<"">, + Desc<"The path to the clang modules cache directory (-fmodules-cache-path).">; +} + +let Definition = "debugger" in { + def AutoConfirm: Property<"auto-confirm", "Boolean">, + Global, + DefaultFalse, + Desc<"If true all confirmation prompts will receive their default reply.">; + def DisassemblyFormat: Property<"disassembly-format", "FormatEntity">, + Global, + DefaultStringValue<"{${function.initial-function}{${module.file.basename}`}{${function.name-without-args}}:\\\\n}{${function.changed}\\\\n{${module.file.basename}`}{${function.name-without-args}}:\\\\n}{${current-pc-arrow} }${addr-file-or-load}{ <${function.concrete-only-addr-offset-no-padding}>}: ">, + Desc<"The default disassembly format string to use when disassembling instruction sequences.">; + def FrameFormat: Property<"frame-format", "FormatEntity">, + Global, + DefaultStringValue<"frame #${frame.index}: ${ansi.fg.yellow}${frame.pc}${ansi.normal}{ ${module.file.basename}{`${function.name-with-args}{${frame.no-debug}${function.pc-offset}}}}{ at ${ansi.fg.cyan}${line.file.basename}${ansi.normal}:${ansi.fg.yellow}${line.number}${ansi.normal}{:${ansi.fg.yellow}${line.column}${ansi.normal}}}{${function.is-optimized} [opt]}{${frame.is-artificial} [artificial]}\\\\n">, + Desc<"The default frame format string to use when displaying stack frame information for threads.">; + def NotiftVoid: Property<"notify-void", "Boolean">, + Global, + DefaultFalse, + Desc<"Notify the user explicitly if an expression returns void (default: false).">; + def Prompt: Property<"prompt", "String">, + Global, + DefaultEnumValue<"OptionValueString::eOptionEncodeCharacterEscapeSequences">, + DefaultStringValue<"(lldb) ">, + Desc<"The debugger command line prompt displayed for the user.">; + def ScriptLanguage: Property<"script-lang", "Enum">, + Global, + DefaultEnumValue<"eScriptLanguagePython">, + EnumValues<"OptionEnumValues(g_language_enumerators)">, + Desc<"The script language to be used for evaluating user-written scripts.">; + def StopDisassemblyCount: Property<"stop-disassembly-count", "SInt64">, + Global, + DefaultUnsignedValue<4>, + Desc<"The number of disassembly lines to show when displaying a stopped context.">; + def StopDisassemblyDisplay: Property<"stop-disassembly-display", "Enum">, + Global, + DefaultEnumValue<"Debugger::eStopDisassemblyTypeNoDebugInfo">, + EnumValues<"OptionEnumValues(g_show_disassembly_enum_values)">, + Desc<"Control when to display disassembly when displaying a stopped context.">; + def StopLineCountAfter: Property<"stop-line-count-after", "SInt64">, + Global, + DefaultUnsignedValue<3>, + Desc<"The number of sources lines to display that come after the current source line when displaying a stopped context.">; + def StopLineCountBefore: Property<"stop-line-count-before", "SInt64">, + Global, + DefaultUnsignedValue<3>, + Desc<"The number of sources lines to display that come before the current source line when displaying a stopped context.">; + def HighlightSource: Property<"highlight-source", "Boolean">, + Global, + DefaultTrue, + Desc<"If true, LLDB will highlight the displayed source code.">; + def StopShowColumn: Property<"stop-show-column", "Enum">, + DefaultEnumValue<"eStopShowColumnAnsiOrCaret">, + EnumValues<"OptionEnumValues(s_stop_show_column_values)">, + Desc<"If true, LLDB will use the column information from the debug info to mark the current position when displaying a stopped context.">; + def StopShowColumnAnsiPrefix: Property<"stop-show-column-ansi-prefix", "String">, + Global, + DefaultStringValue<"${ansi.underline}">, + Desc<"When displaying the column marker in a color-enabled (i.e. ANSI) terminal, use the ANSI terminal code specified in this format at the immediately before the column to be marked.">; + def StopShowColumnAnsiSuffix: Property<"stop-show-column-ansi-suffix", "String">, + Global, + DefaultStringValue<"${ansi.normal}">, + Desc<"When displaying the column marker in a color-enabled (i.e. ANSI) terminal, use the ANSI terminal code specified in this format immediately after the column to be marked.">; + def TerminalWidth: Property<"term-width", "SInt64">, + Global, + DefaultUnsignedValue<80>, + Desc<"The maximum number of columns to use for displaying text.">; + def ThreadFormat: Property<"thread-format", "FormatEntity">, + Global, + DefaultStringValue<"thread #${thread.index}: tid = ${thread.id%tid}{, ${frame.pc}}{ ${module.file.basename}{`${function.name-with-args}{${frame.no-debug}${function.pc-offset}}}}{ at ${ansi.fg.cyan}${line.file.basename}${ansi.normal}:${ansi.fg.yellow}${line.number}${ansi.normal}{:${ansi.fg.yellow}${line.column}${ansi.normal}}}{, name = ${ansi.fg.green}'${thread.name}'${ansi.normal}}{, queue = ${ansi.fg.green}'${thread.queue}'${ansi.normal}}{, activity = ${ansi.fg.green}'${thread.info.activity.name}'${ansi.normal}}{, ${thread.info.trace_messages} messages}{, stop reason = ${ansi.fg.red}${thread.stop-reason}${ansi.normal}}{\\\\nReturn value: ${thread.return-value}}{\\\\nCompleted expression: ${thread.completed-expression}}\\\\n">, + Desc<"The default thread format string to use when displaying thread information.">; + def ThreadStopFormat: Property<"thread-stop-format", "FormatEntity">, + Global, + DefaultStringValue<"thread #${thread.index}{, name = '${thread.name}'}{, queue = ${ansi.fg.green}'${thread.queue}'${ansi.normal}}{, activity = ${ansi.fg.green}'${thread.info.activity.name}'${ansi.normal}}{, ${thread.info.trace_messages} messages}{, stop reason = ${ansi.fg.red}${thread.stop-reason}${ansi.normal}}{\\\\nReturn value: ${thread.return-value}}{\\\\nCompleted expression: ${thread.completed-expression}}\\\\n">, + Desc<"The default thread format string to use when displaying thread information as part of the stop display.">; + def UseExternalEditor: Property<"use-external-editor", "Boolean">, + Global, + DefaultFalse, + Desc<"Whether to use an external editor or not.">; + def UseColor: Property<"use-color", "Boolean">, + Global, + DefaultTrue, + Desc<"Whether to use Ansi color codes or not.">; + def AutoOneLineSummaries: Property<"auto-one-line-summaries", "Boolean">, + Global, + DefaultTrue, + Desc<"If true, LLDB will automatically display small structs in one-liner format (default: true).">; + def AutoIndent: Property<"auto-indent", "Boolean">, + Global, + DefaultTrue, + Desc<"If true, LLDB will auto indent/outdent code. Currently only supported in the REPL (default: true).">; + def PrintDecls: Property<"print-decls", "Boolean">, + Global, + DefaultTrue, + Desc<"If true, LLDB will print the values of variables declared in an expression. Currently only supported in the REPL (default: true).">; + def TabSize: Property<"tab-size", "UInt64">, + Global, + DefaultUnsignedValue<4>, + Desc<"The tab size to use when indenting code in multi-line input mode (default: 4).">; + def EscapeNonPrintables: Property<"escape-non-printables", "Boolean">, + Global, + DefaultTrue, + Desc<"If true, LLDB will automatically escape non-printable and escape characters when formatting strings.">; + def FrameFormatUnique: Property<"frame-format-unique", "FormatEntity">, + Global, + DefaultStringValue<"frame #${frame.index}: ${ansi.fg.yellow}${frame.pc}${ansi.normal}{ ${module.file.basename}{`${function.name-without-args}{${frame.no-debug}${function.pc-offset}}}}{ at ${ansi.fg.cyan}${line.file.basename}${ansi.normal}:${ansi.fg.yellow}${line.number}${ansi.normal}{:${ansi.fg.yellow}${line.column}${ansi.normal}}}{${function.is-optimized} [opt]}{${frame.is-artificial} [artificial]}\\\\n">, + Desc<"The default frame format string to use when displaying stack frameinformation for threads from thread backtrace unique.">; +} diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index f22fe043b8d9a30..6de9c9071f7d813 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -93,22 +93,47 @@ static DebuggerList *g_debugger_list_ptr = nullptr; // NOTE: intentional leak to avoid issues with C++ destructor chain static constexpr OptionEnumValueElement g_show_disassembly_enum_values[] = { - {Debugger::eStopDisassemblyTypeNever, "never", - "Never show disassembly when displaying a stop context."}, - {Debugger::eStopDisassemblyTypeNoDebugInfo, "no-debuginfo", - "Show disassembly when there is no debug information."}, - {Debugger::eStopDisassemblyTypeNoSource, "no-source", - "Show disassembly when there is no source information, or the source file " - "is missing when displaying a stop context."}, - {Debugger::eStopDisassemblyTypeAlways, "always", - "Always show disassembly when displaying a stop context."} }; + { + Debugger::eStopDisassemblyTypeNever, + "never", + "Never show disassembly when displaying a stop context.", + }, + { + Debugger::eStopDisassemblyTypeNoDebugInfo, + "no-debuginfo", + "Show disassembly when there is no debug information.", + }, + { + Debugger::eStopDisassemblyTypeNoSource, + "no-source", + "Show disassembly when there is no source information, or the source " + "file " + "is missing when displaying a stop context.", + }, + { + Debugger::eStopDisassemblyTypeAlways, + "always", + "Always show disassembly when displaying a stop context.", + }, +}; static constexpr OptionEnumValueElement g_language_enumerators[] = { - {eScriptLanguageNone, "none", "Disable scripting languages."}, - {eScriptLanguagePython, "python", - "Select python as the default scripting language."}, - {eScriptLanguageDefault, "default", - "Select the lldb default as the default scripting language."} }; + { + eScriptLanguageNone, + "none", + "Disable scripting languages.", + }, + { + eScriptLanguagePython, + "python", + "Select python as the default scripting language.", + }, + { + eScriptLanguageDefault, + "default", + "Select the lldb default as the default scripting language.", + }, +}; #define MODULE_WITH_FUNC \ "{ " \ @@ -189,133 +214,39 @@ static constexpr OptionEnumValueElement g_language_enumerators[] = { // without-args}}:\n}{${current-pc-arrow} }{${addr-file-or-load}}: static constexpr OptionEnumValueElement s_stop_show_column_values[] = { - {eStopShowColumnAnsiOrCaret, "ansi-or-caret", - "Highlight the stop column with ANSI terminal codes when color/ANSI mode " - "is enabled; otherwise, fall back to using a text-only caret (^) as if " - "\"caret-only\" mode was selected."}, - {eStopShowColumnAnsi, "ansi", "Highlight the stop column with ANSI " - "terminal codes when running LLDB with " - "color/ANSI enabled."}, - {eStopShowColumnCaret, "caret", - "Highlight the stop column with a caret character (^) underneath the stop " - "column. This method introduces a new line in source listings that " - "display thread stop locations."}, - {eStopShowColumnNone, "none", "Do not highlight the stop column."}}; - -static constexpr PropertyDefinition g_properties[] = { - {"auto-confirm", OptionValue::eTypeBoolean, true, false, nullptr, {}, - "If true all confirmation prompts will receive their default reply."}, - {"disassembly-format", OptionValue::eTypeFormatEntity, true, 0, - DEFAULT_DISASSEMBLY_FORMAT, {}, - "The default disassembly format " - "string to use when disassembling " - "instruction sequences."}, - {"frame-format", OptionValue::eTypeFormatEntity, true, 0, - DEFAULT_FRAME_FORMAT, {}, - "The default frame format string to use " - "when displaying stack frame information " - "for threads."}, - {"notify-void", OptionValue::eTypeBoolean, true, false, nullptr, {}, - "Notify the user explicitly if an expression returns void (default: " - "false)."}, - {"prompt", OptionValue::eTypeString, true, - OptionValueString::eOptionEncodeCharacterEscapeSequences, "(lldb) ", {}, - "The debugger command line prompt displayed for the user."}, - {"script-lang", OptionValue::eTypeEnum, true, eScriptLanguagePython, - nullptr, OptionEnumValues(g_language_enumerators), - "The script language to be used for evaluating user-written scripts."}, - {"stop-disassembly-count", OptionValue::eTypeSInt64, true, 4, nullptr, {}, - "The number of disassembly lines to show when displaying a " - "stopped context."}, - {"stop-disassembly-display", OptionValue::eTypeEnum, true, - Debugger::eStopDisassemblyTypeNoDebugInfo, nullptr, - OptionEnumValues(g_show_disassembly_enum_values), - "Control when to display disassembly when displaying a stopped context."}, - {"stop-line-count-after", OptionValue::eTypeSInt64, true, 3, nullptr, {}, - "The number of sources lines to display that come after the " - "current source line when displaying a stopped context."}, - {"stop-line-count-before", OptionValue::eTypeSInt64, true, 3, nullptr, {}, - "The number of sources lines to display that come before the " - "current source line when displaying a stopped context."}, - {"highlight-source", OptionValue::eTypeBoolean, true, true, nullptr, {}, - "If true, LLDB will highlight the displayed source code."}, - {"stop-show-column", OptionValue::eTypeEnum, false, - eStopShowColumnAnsiOrCaret, nullptr, OptionEnumValues(s_stop_show_column_values), - "If true, LLDB will use the column information from the debug info to " - "mark the current position when displaying a stopped context."}, - {"stop-show-column-ansi-prefix", OptionValue::eTypeString, true, 0, - "${ansi.underline}", {}, - "When displaying the column marker in a color-enabled (i.e. ANSI) " - "terminal, use the ANSI terminal code specified in this format at the " - "immediately before the column to be marked."}, - {"stop-show-column-ansi-suffix", OptionValue::eTypeString, true, 0, - "${ansi.normal}", {}, - "When displaying the column marker in a color-enabled (i.e. ANSI) " - "terminal, use the ANSI terminal code specified in this format " - "immediately after the column to be marked."}, - {"term-width", OptionValue::eTypeSInt64, true, 80, nullptr, {}, - "The maximum number of columns to use for displaying text."}, - {"thread-format", OptionValue::eTypeFormatEntity, true, 0, - DEFAULT_THREAD_FORMAT, {}, - "The default thread format string to use " - "when displaying thread information."}, - {"thread-stop-format", OptionValue::eTypeFormatEntity, true, 0, - DEFAULT_THREAD_STOP_FORMAT, {}, - "The default thread format " - "string to use when displaying thread " - "information as part of the stop display."}, - {"use-external-editor", OptionValue::eTypeBoolean, true, false, nullptr, {}, - "Whether to use an external editor or not."}, - {"use-color", OptionValue::eTypeBoolean, true, true, nullptr, {}, - "Whether to use Ansi color codes or not."}, - {"auto-one-line-summaries", OptionValue::eTypeBoolean, true, true, nullptr, - {}, - "If true, LLDB will automatically display small structs in " - "one-liner format (default: true)."}, - {"auto-indent", OptionValue::eTypeBoolean, true, true, nullptr, {}, - "If true, LLDB will auto indent/outdent code. Currently only supported in " - "the REPL (default: true)."}, - {"print-decls", OptionValue::eTypeBoolean, true, true, nullptr, {}, - "If true, LLDB will print the values of variables declared in an " - "expression. Currently only supported in the REPL (default: true)."}, - {"tab-size", OptionValue::eTypeUInt64, true, 4, nullptr, {}, - "The tab size to use when indenting code in multi-line input mode " - "(default: 4)."}, - {"escape-non-printables", OptionValue::eTypeBoolean, true, true, nullptr, - {}, - "If true, LLDB will automatically escape non-printable and " - "escape characters when formatting strings."}, - {"frame-format-unique", OptionValue::eTypeFormatEntity, true, 0, - DEFAULT_FRAME_FORMAT_NO_ARGS, {}, - "The default frame format string to use when displaying stack frame" - "information for threads from thread backtrace unique."}}; + { + eStopShowColumnAnsiOrCaret, + "ansi-or-caret", + "Highlight the stop column with ANSI terminal codes when color/ANSI " + "mode is enabled; otherwise, fall back to using a text-only caret (^) " + "as if \"caret-only\" mode was selected.", + }, + { + eStopShowColumnAnsi, + "ansi", + "Highlight the stop column with ANSI terminal codes when running LLDB " + "with color/ANSI enabled.", + }, + { + eStopShowColumnCaret, + "caret", + "Highlight the stop column with a caret character (^) underneath the " + "stop column. This method introduces a new line in source listings " + "that display thread stop locations.", + }, + { + eStopShowColumnNone, + "none", + "Do not highlight the stop column.", + }, +}; + +#define LLDB_PROPERTIES_debugger +#include "CoreProperties.inc" enum { - ePropertyAutoConfirm = 0, - ePropertyDisassemblyFormat, - ePropertyFrameFormat, - ePropertyNotiftVoid, - ePropertyPrompt, - ePropertyScriptLanguage, - ePropertyStopDisassemblyCount, - ePropertyStopDisassemblyDisplay, - ePropertyStopLineCountAfter, - ePropertyStopLineCountBefore, - ePropertyHighlightSource, - ePropertyStopShowColumn, - ePropertyStopShowColumnAnsiPrefix, - ePropertyStopShowColumnAnsiSuffix, - ePropertyTerminalWidth, - ePropertyThreadFormat, - ePropertyThreadStopFormat, - ePropertyUseExternalEditor, - ePropertyUseColor, - ePropertyAutoOneLineSummaries, - ePropertyAutoIndent, - ePropertyPrintDecls, - ePropertyTabSize, - ePropertyEscapeNonPrintables, - ePropertyFrameFormatUnique, +#define LLDB_PROPERTIES_debugger +#include "CorePropertiesEnum.inc" }; LoadPluginCallbackType Debugger::g_load_plugin_callback = nullptr; @@ -324,8 +255,16 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, VarSetOperationType op, llvm::StringRef property_path, llvm::StringRef value) { - bool is_load_script = (property_path == "target.load-script-from-symbol-file"); - bool is_escape_non_printables = (property_path == "escape-non-printables"); + bool is_load_script = + (property_path == "target.load-script-from-symbol-file"); + // These properties might change how we visualize data. + bool invalidate_data_vis = (property_path == "escape-non-printables"); + invalidate_data_vis |= + (property_path == "target.max-zero-padding-in-float-format"); + if (invalidate_data_vis) { + DataVisualization::ForceUpdate(); + } + TargetSP target_sp; LoadScriptFromSymFile load_script_old_value; if (is_load_script && exe_ctx->GetTargetSP()) { @@ -336,9 +275,9 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, Status error(Properties::SetPropertyValue(exe_ctx, op, property_path, value)); if (error.Success()) { // FIXME it would be nice to have "on-change" callbacks for properties - if (property_path == g_properties[ePropertyPrompt].name) { + if (property_path == g_debugger_properties[ePropertyPrompt].name) { llvm::StringRef new_prompt = GetPrompt(); - std::string str = lldb_utility::ansi::FormatAnsiTerminalCodes( + std::string str = lldb_private::ansi::FormatAnsiTerminalCodes( new_prompt, GetUseColor()); if (str.length()) new_prompt = str; @@ -347,7 +286,7 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, auto prompt_change_event_sp = std::make_shared( CommandInterpreter::eBroadcastBitResetPrompt, bytes.release()); GetCommandInterpreter().BroadcastEvent(prompt_change_event_sp); - } else if (property_path == g_properties[ePropertyUseColor].name) { + } else if (property_path == g_debugger_properties[ePropertyUseColor].name) { // use-color changed. Ping the prompt so it can reset the ansi terminal // codes. SetPrompt(GetPrompt()); @@ -368,8 +307,6 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, } } } - } else if (is_escape_non_printables) { - DataVisualization::ForceUpdate(); } } return error; @@ -378,7 +315,7 @@ Status Debugger::SetPropertyValue(const ExecutionContext *exe_ctx, bool Debugger::GetAutoConfirm() const { const uint32_t idx = ePropertyAutoConfirm; return m_collection_sp->GetPropertyAtIndexAsBoolean( - nullptr, idx, g_properties[idx].default_uint_value != 0); + nullptr, idx, g_debugger_properties[idx].default_uint_value != 0); } const FormatEntity::Entry *Debugger::GetDisassemblyFormat() const { @@ -399,13 +336,13 @@ const FormatEntity::Entry *Debugger::GetFrameFormatUnique() const { bool Debugger::GetNotifyVoid() const { const uint32_t idx = ePropertyNotiftVoid; return m_collection_sp->GetPropertyAtIndexAsBoolean( - nullptr, idx, g_properties[idx].default_uint_value != 0); + nullptr, idx, g_debugger_properties[idx].default_uint_value != 0); } llvm::StringRef Debugger::GetPrompt() const { const uint32_t idx = ePropertyPrompt; return m_collection_sp->GetPropertyAtIndexAsString( - nullptr, idx, g_properties[idx].default_cstr_value); + nullptr, idx, g_debugger_properties[idx].default_cstr_value); } void Debugger::SetPrompt(llvm::StringRef p) { @@ -413,7 +350,7 @@ void Debugger::SetPrompt(llvm::StringRef p) { m_collection_sp->SetPropertyAtIndexAsString(nullptr, idx, p); llvm::StringRef new_prompt = GetPrompt(); std::string str = - lldb_utility::ansi::FormatAnsiTerminalCodes(new_prompt, GetUseColor()); + lldb_private::ansi::FormatAnsiTerminalCodes(new_prompt, GetUseColor()); if (str.length()) new_prompt = str; GetCommandInterpreter().UpdatePrompt(new_prompt); @@ -437,7 +374,7 @@ const FormatEntity::Entry *Debugger::GetThreadStopFormat() const { lldb::ScriptLanguage Debugger::GetScriptLanguage() const { const uint32_t idx = ePropertyScriptLanguage; return (lldb::ScriptLanguage)m_collection_sp->GetPropertyAtIndexAsEnumeration( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } bool Debugger::SetScriptLanguage(lldb::ScriptLanguage script_lang) { @@ -449,7 +386,7 @@ bool Debugger::SetScriptLanguage(lldb::ScriptLanguage script_lang) { uint32_t Debugger::GetTerminalWidth() const { const uint32_t idx = ePropertyTerminalWidth; return m_collection_sp->GetPropertyAtIndexAsSInt64( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } bool Debugger::SetTerminalWidth(uint32_t term_width) { @@ -460,7 +397,7 @@ bool Debugger::SetTerminalWidth(uint32_t term_width) { bool Debugger::GetUseExternalEditor() const { const uint32_t idx = ePropertyUseExternalEditor; return m_collection_sp->GetPropertyAtIndexAsBoolean( - nullptr, idx, g_properties[idx].default_uint_value != 0); + nullptr, idx, g_debugger_properties[idx].default_uint_value != 0); } bool Debugger::SetUseExternalEditor(bool b) { @@ -471,7 +408,7 @@ bool Debugger::SetUseExternalEditor(bool b) { bool Debugger::GetUseColor() const { const uint32_t idx = ePropertyUseColor; return m_collection_sp->GetPropertyAtIndexAsBoolean( - nullptr, idx, g_properties[idx].default_uint_value != 0); + nullptr, idx, g_debugger_properties[idx].default_uint_value != 0); } bool Debugger::SetUseColor(bool b) { @@ -484,13 +421,13 @@ bool Debugger::SetUseColor(bool b) { bool Debugger::GetHighlightSource() const { const uint32_t idx = ePropertyHighlightSource; return m_collection_sp->GetPropertyAtIndexAsBoolean( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } StopShowColumn Debugger::GetStopShowColumn() const { const uint32_t idx = ePropertyStopShowColumn; return (lldb::StopShowColumn)m_collection_sp->GetPropertyAtIndexAsEnumeration( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } llvm::StringRef Debugger::GetStopShowColumnAnsiPrefix() const { @@ -507,20 +444,20 @@ uint32_t Debugger::GetStopSourceLineCount(bool before) const { const uint32_t idx = before ? ePropertyStopLineCountBefore : ePropertyStopLineCountAfter; return m_collection_sp->GetPropertyAtIndexAsSInt64( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } Debugger::StopDisassemblyType Debugger::GetStopDisassemblyDisplay() const { const uint32_t idx = ePropertyStopDisassemblyDisplay; return (Debugger::StopDisassemblyType) m_collection_sp->GetPropertyAtIndexAsEnumeration( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } uint32_t Debugger::GetDisassemblyLineCount() const { const uint32_t idx = ePropertyStopDisassemblyCount; return m_collection_sp->GetPropertyAtIndexAsSInt64( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } bool Debugger::GetAutoOneLineSummaries() const { @@ -556,7 +493,7 @@ bool Debugger::SetPrintDecls(bool b) { uint32_t Debugger::GetTabSize() const { const uint32_t idx = ePropertyTabSize; return m_collection_sp->GetPropertyAtIndexAsUInt64( - nullptr, idx, g_properties[idx].default_uint_value); + nullptr, idx, g_debugger_properties[idx].default_uint_value); } bool Debugger::SetTabSize(uint32_t tab_size) { @@ -717,8 +654,7 @@ void Debugger::Destroy(DebuggerSP &debugger_sp) { } } -DebuggerSP -Debugger::FindDebuggerWithInstanceName(ConstString instance_name) { +DebuggerSP Debugger::FindDebuggerWithInstanceName(ConstString instance_name) { DebuggerSP debugger_sp; if (g_debugger_list_ptr && g_debugger_list_mutex_ptr) { std::lock_guard guard(*g_debugger_list_mutex_ptr); @@ -790,7 +726,10 @@ Debugger::Debugger(lldb::LogOutputCallback log_callback, void *baton) assert(default_platform_sp); m_platform_list.Append(default_platform_sp, true); - m_collection_sp->Initialize(g_properties); + m_dummy_target_sp = m_target_list.GetDummyTarget(*this); + assert(m_dummy_target_sp.get() && "Couldn't construct dummy target?"); + + m_collection_sp->Initialize(g_debugger_properties); m_collection_sp->AppendProperty( ConstString("target"), ConstString("Settings specify to debugging targets."), true, @@ -1360,60 +1299,23 @@ void Debugger::HandleBreakpointEvent(const EventSP &event_sp) { // } } -size_t Debugger::GetProcessSTDOUT(Process *process, Stream *stream) { - size_t total_bytes = 0; - if (stream == nullptr) - stream = GetOutputFile().get(); +void Debugger::FlushProcessOutput(Process &process, bool flush_stdout, + bool flush_stderr) { + const auto &flush = [&](Stream &stream, + size_t (Process::*get)(char *, size_t, Status &)) { + Status error; + size_t len; + char buffer[1024]; + while ((len = (process.*get)(buffer, sizeof(buffer), error)) > 0) + stream.Write(buffer, len); + stream.Flush(); + }; - if (stream) { - // The process has stuff waiting for stdout; get it and write it out to the - // appropriate place. - if (process == nullptr) { - TargetSP target_sp = GetTargetList().GetSelectedTarget(); - if (target_sp) - process = target_sp->GetProcessSP().get(); - } - if (process) { - Status error; - size_t len; - char stdio_buffer[1024]; - while ((len = process->GetSTDOUT(stdio_buffer, sizeof(stdio_buffer), - error)) > 0) { - stream->Write(stdio_buffer, len); - total_bytes += len; - } - } - stream->Flush(); - } - return total_bytes; -} - -size_t Debugger::GetProcessSTDERR(Process *process, Stream *stream) { - size_t total_bytes = 0; - if (stream == nullptr) - stream = GetOutputFile().get(); - - if (stream) { - // The process has stuff waiting for stderr; get it and write it out to the - // appropriate place. - if (process == nullptr) { - TargetSP target_sp = GetTargetList().GetSelectedTarget(); - if (target_sp) - process = target_sp->GetProcessSP().get(); - } - if (process) { - Status error; - size_t len; - char stdio_buffer[1024]; - while ((len = process->GetSTDERR(stdio_buffer, sizeof(stdio_buffer), - error)) > 0) { - stream->Write(stdio_buffer, len); - total_bytes += len; - } - } - stream->Flush(); - } - return total_bytes; + std::lock_guard guard(m_output_flush_mutex); + if (flush_stdout) + flush(*GetAsyncOutputStream(), &Process::GetSTDOUT); + if (flush_stderr) + flush(*GetAsyncErrorStream(), &Process::GetSTDERR); } // This function handles events that were broadcast by the process. @@ -1453,15 +1355,9 @@ void Debugger::HandleProcessEvent(const EventSP &event_sp) { pop_process_io_handler); } - // Now display and STDOUT - if (got_stdout || got_state_changed) { - GetProcessSTDOUT(process_sp.get(), output_stream_sp.get()); - } - - // Now display and STDERR - if (got_stderr || got_state_changed) { - GetProcessSTDERR(process_sp.get(), error_stream_sp.get()); - } + // Now display STDOUT and STDERR + FlushProcessOutput(*process_sp, got_stdout || got_state_changed, + got_stderr || got_state_changed); // Give structured data events an opportunity to display. if (got_structured_data) { @@ -1638,12 +1534,22 @@ bool Debugger::StartEventHandlerThread() { eBroadcastBitEventThreadIsListening); auto thread_name = - full_name.GetLength() < llvm::get_max_thread_name_length() ? - full_name.AsCString() : "dbg.evt-handler"; + full_name.GetLength() < llvm::get_max_thread_name_length() + ? full_name.AsCString() + : "dbg.evt-handler"; // Use larger 8MB stack for this thread - m_event_handler_thread = ThreadLauncher::LaunchThread(thread_name, - EventHandlerThread, this, nullptr, g_debugger_event_thread_stack_bytes); + llvm::Expected event_handler_thread = + ThreadLauncher::LaunchThread(thread_name, EventHandlerThread, this, + g_debugger_event_thread_stack_bytes); + + if (event_handler_thread) { + m_event_handler_thread = *event_handler_thread; + } else { + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST), + "failed to launch host thread: {}", + llvm::toString(event_handler_thread.takeError())); + } // Make sure DefaultEventHandler() is running and listening to events // before we return from this function. We are only listening for events of @@ -1674,10 +1580,18 @@ lldb::thread_result_t Debugger::IOHandlerThread(lldb::thread_arg_t arg) { bool Debugger::HasIOHandlerThread() { return m_io_handler_thread.IsJoinable(); } bool Debugger::StartIOHandlerThread() { - if (!m_io_handler_thread.IsJoinable()) - m_io_handler_thread = ThreadLauncher::LaunchThread( - "lldb.debugger.io-handler", IOHandlerThread, this, nullptr, + if (!m_io_handler_thread.IsJoinable()) { + llvm::Expected io_handler_thread = ThreadLauncher::LaunchThread( + "lldb.debugger.io-handler", IOHandlerThread, this, 8 * 1024 * 1024); // Use larger 8MB stack for this thread + if (io_handler_thread) { + m_io_handler_thread = *io_handler_thread; + } else { + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST), + "failed to launch host thread: {}", + llvm::toString(io_handler_thread.takeError())); + } + } return m_io_handler_thread.IsJoinable(); } @@ -1697,10 +1611,6 @@ void Debugger::JoinIOHandlerThread() { } } -Target *Debugger::GetDummyTarget() { - return m_target_list.GetDummyTarget(*this).get(); -} - Target *Debugger::GetSelectedOrDummyTarget(bool prefer_dummy) { Target *target = nullptr; if (!prefer_dummy) { @@ -1717,13 +1627,11 @@ Status Debugger::RunREPL(LanguageType language, const char *repl_options) { FileSpec repl_executable; if (language == eLanguageTypeUnknown) { - std::set repl_languages; - - Language::GetLanguagesSupportingREPLs(repl_languages); + LanguageSet repl_languages = Language::GetLanguagesSupportingREPLs(); - if (repl_languages.size() == 1) { - language = *repl_languages.begin(); - } else if (repl_languages.empty()) { + if (auto single_lang = repl_languages.GetSingularLanguage()) { + language = *single_lang; + } else if (repl_languages.Empty()) { err.SetErrorStringWithFormat( "LLDB isn't configured with REPL support for any languages."); return err; diff --git a/lldb/source/Core/Disassembler.cpp b/lldb/source/Core/Disassembler.cpp index af7cf82d470ad21..fecdced632240ff 100644 --- a/lldb/source/Core/Disassembler.cpp +++ b/lldb/source/Core/Disassembler.cpp @@ -158,52 +158,59 @@ size_t Disassembler::Disassemble(Debugger &debugger, const ArchSpec &arch, return success_count; } -bool Disassembler::Disassemble(Debugger &debugger, const ArchSpec &arch, - const char *plugin_name, const char *flavor, - const ExecutionContext &exe_ctx, - ConstString name, Module *module, - uint32_t num_instructions, - bool mixed_source_and_assembly, - uint32_t num_mixed_context_lines, - uint32_t options, Stream &strm) { +bool Disassembler::Disassemble( + Debugger &debugger, const ArchSpec &arch, const char *plugin_name, + const char *flavor, const ExecutionContext &exe_ctx, ConstString name, + Module *module, uint32_t num_instructions, bool mixed_source_and_assembly, + uint32_t num_mixed_context_lines, uint32_t options, Stream &strm) { + // If no name is given there's nothing to disassemble. + if (!name) + return false; + + const bool include_symbols = true; + const bool include_inlines = true; + + // Find functions matching the given name. SymbolContextList sc_list; - if (name) { - const bool include_symbols = true; - const bool include_inlines = true; - if (module) { - module->FindFunctions(name, nullptr, eFunctionNameTypeAuto, - include_symbols, include_inlines, true, sc_list); - } else if (exe_ctx.GetTargetPtr()) { - exe_ctx.GetTargetPtr()->GetImages().FindFunctions( - name, eFunctionNameTypeAuto, include_symbols, include_inlines, false, - sc_list); - } + if (module) { + module->FindFunctions(name, nullptr, eFunctionNameTypeAuto, include_symbols, + include_inlines, true, sc_list); + } else if (exe_ctx.GetTargetPtr()) { + exe_ctx.GetTargetPtr()->GetImages().FindFunctions( + name, eFunctionNameTypeAuto, include_symbols, include_inlines, false, + sc_list); } - if (sc_list.GetSize()) { - return Disassemble(debugger, arch, plugin_name, flavor, exe_ctx, sc_list, - num_instructions, mixed_source_and_assembly, - num_mixed_context_lines, options, strm); - } - return false; + // If no functions were found there's nothing to disassemble. + if (sc_list.IsEmpty()) + return false; + + return Disassemble(debugger, arch, plugin_name, flavor, exe_ctx, sc_list, + num_instructions, mixed_source_and_assembly, + num_mixed_context_lines, options, strm); } lldb::DisassemblerSP Disassembler::DisassembleRange( const ArchSpec &arch, const char *plugin_name, const char *flavor, const ExecutionContext &exe_ctx, const AddressRange &range, bool prefer_file_cache) { - lldb::DisassemblerSP disasm_sp; - if (range.GetByteSize() > 0 && range.GetBaseAddress().IsValid()) { - disasm_sp = Disassembler::FindPluginForTarget(exe_ctx.GetTargetSP(), arch, - flavor, plugin_name); - - if (disasm_sp) { - size_t bytes_disassembled = disasm_sp->ParseInstructions( - &exe_ctx, range, nullptr, prefer_file_cache); - if (bytes_disassembled == 0) - disasm_sp.reset(); - } - } + if (range.GetByteSize() <= 0) + return {}; + + if (!range.GetBaseAddress().IsValid()) + return {}; + + lldb::DisassemblerSP disasm_sp = Disassembler::FindPluginForTarget( + exe_ctx.GetTargetSP(), arch, flavor, plugin_name); + + if (!disasm_sp) + return {}; + + const size_t bytes_disassembled = + disasm_sp->ParseInstructions(&exe_ctx, range, nullptr, prefer_file_cache); + if (bytes_disassembled == 0) + return {}; + return disasm_sp; } @@ -212,20 +219,20 @@ Disassembler::DisassembleBytes(const ArchSpec &arch, const char *plugin_name, const char *flavor, const Address &start, const void *src, size_t src_len, uint32_t num_instructions, bool data_from_file) { - lldb::DisassemblerSP disasm_sp; + if (!src) + return {}; - if (src) { - disasm_sp = Disassembler::FindPlugin(arch, flavor, plugin_name); + lldb::DisassemblerSP disasm_sp = + Disassembler::FindPlugin(arch, flavor, plugin_name); - if (disasm_sp) { - DataExtractor data(src, src_len, arch.GetByteOrder(), - arch.GetAddressByteSize()); + if (!disasm_sp) + return {}; - (void)disasm_sp->DecodeInstructions(start, data, 0, num_instructions, - false, data_from_file); - } - } + DataExtractor data(src, src_len, arch.GetByteOrder(), + arch.GetAddressByteSize()); + (void)disasm_sp->DecodeInstructions(start, data, 0, num_instructions, false, + data_from_file); return disasm_sp; } @@ -237,27 +244,28 @@ bool Disassembler::Disassemble(Debugger &debugger, const ArchSpec &arch, bool mixed_source_and_assembly, uint32_t num_mixed_context_lines, uint32_t options, Stream &strm) { - if (disasm_range.GetByteSize()) { - lldb::DisassemblerSP disasm_sp(Disassembler::FindPluginForTarget( - exe_ctx.GetTargetSP(), arch, flavor, plugin_name)); - - if (disasm_sp) { - AddressRange range; - ResolveAddress(exe_ctx, disasm_range.GetBaseAddress(), - range.GetBaseAddress()); - range.SetByteSize(disasm_range.GetByteSize()); - const bool prefer_file_cache = false; - size_t bytes_disassembled = disasm_sp->ParseInstructions( - &exe_ctx, range, &strm, prefer_file_cache); - if (bytes_disassembled == 0) - return false; - - return PrintInstructions(disasm_sp.get(), debugger, arch, exe_ctx, - num_instructions, mixed_source_and_assembly, - num_mixed_context_lines, options, strm); - } - } - return false; + if (!disasm_range.GetByteSize()) + return false; + + lldb::DisassemblerSP disasm_sp(Disassembler::FindPluginForTarget( + exe_ctx.GetTargetSP(), arch, flavor, plugin_name)); + + if (!disasm_sp) + return false; + + AddressRange range; + ResolveAddress(exe_ctx, disasm_range.GetBaseAddress(), + range.GetBaseAddress()); + range.SetByteSize(disasm_range.GetByteSize()); + const bool prefer_file_cache = false; + size_t bytes_disassembled = + disasm_sp->ParseInstructions(&exe_ctx, range, &strm, prefer_file_cache); + if (bytes_disassembled == 0) + return false; + + return PrintInstructions(disasm_sp.get(), debugger, arch, exe_ctx, + num_instructions, mixed_source_and_assembly, + num_mixed_context_lines, options, strm); } bool Disassembler::Disassemble(Debugger &debugger, const ArchSpec &arch, @@ -268,42 +276,51 @@ bool Disassembler::Disassemble(Debugger &debugger, const ArchSpec &arch, bool mixed_source_and_assembly, uint32_t num_mixed_context_lines, uint32_t options, Stream &strm) { - if (num_instructions > 0) { - lldb::DisassemblerSP disasm_sp(Disassembler::FindPluginForTarget( - exe_ctx.GetTargetSP(), arch, flavor, plugin_name)); - if (disasm_sp) { - Address addr; - ResolveAddress(exe_ctx, start_address, addr); - const bool prefer_file_cache = false; - size_t bytes_disassembled = disasm_sp->ParseInstructions( - &exe_ctx, addr, num_instructions, prefer_file_cache); - if (bytes_disassembled == 0) - return false; - return PrintInstructions(disasm_sp.get(), debugger, arch, exe_ctx, - num_instructions, mixed_source_and_assembly, - num_mixed_context_lines, options, strm); - } - } - return false; + if (num_instructions == 0) + return false; + + lldb::DisassemblerSP disasm_sp(Disassembler::FindPluginForTarget( + exe_ctx.GetTargetSP(), arch, flavor, plugin_name)); + if (!disasm_sp) + return false; + + Address addr; + ResolveAddress(exe_ctx, start_address, addr); + + const bool prefer_file_cache = false; + size_t bytes_disassembled = disasm_sp->ParseInstructions( + &exe_ctx, addr, num_instructions, prefer_file_cache); + if (bytes_disassembled == 0) + return false; + + return PrintInstructions(disasm_sp.get(), debugger, arch, exe_ctx, + num_instructions, mixed_source_and_assembly, + num_mixed_context_lines, options, strm); } Disassembler::SourceLine Disassembler::GetFunctionDeclLineEntry(const SymbolContext &sc) { + if (!sc.function) + return {}; + + if (!sc.line_entry.IsValid()) + return {}; + + LineEntry prologue_end_line = sc.line_entry; + FileSpec func_decl_file; + uint32_t func_decl_line; + sc.function->GetStartLineSourceInfo(func_decl_file, func_decl_line); + + if (func_decl_file != prologue_end_line.file && + func_decl_file != prologue_end_line.original_file) + return {}; + SourceLine decl_line; - if (sc.function && sc.line_entry.IsValid()) { - LineEntry prologue_end_line = sc.line_entry; - FileSpec func_decl_file; - uint32_t func_decl_line; - sc.function->GetStartLineSourceInfo(func_decl_file, func_decl_line); - if (func_decl_file == prologue_end_line.file || - func_decl_file == prologue_end_line.original_file) { - decl_line.file = func_decl_file; - decl_line.line = func_decl_line; - // TODO do we care about column on these entries? If so, we need to - // plumb that through GetStartLineSourceInfo. - decl_line.column = 0; - } - } + decl_line.file = func_decl_file; + decl_line.line = func_decl_line; + // TODO: Do we care about column on these entries? If so, we need to plumb + // that through GetStartLineSourceInfo. + decl_line.column = 0; return decl_line; } @@ -355,12 +372,9 @@ bool Disassembler::ElideMixedSourceAndDisassemblyLine( const char *function_name = sc.GetFunctionName(Mangled::ePreferDemangledWithoutArguments) .GetCString(); - if (function_name) { - RegularExpression::Match regex_match(1); - if (avoid_regex->Execute(function_name, ®ex_match)) { - // skip this source line - return true; - } + if (function_name && avoid_regex->Execute(function_name)) { + // skip this source line + return true; } } // don't skip this source line @@ -793,10 +807,9 @@ OptionValueSP Instruction::ReadArray(FILE *in_file, Stream *out_stream, std::string value; static RegularExpression g_reg_exp( llvm::StringRef("^[ \t]*([^ \t]+)[ \t]*$")); - RegularExpression::Match regex_match(1); - bool reg_exp_success = g_reg_exp.Execute(line, ®ex_match); - if (reg_exp_success) - regex_match.GetMatchAtIndex(line.c_str(), 1, value); + llvm::SmallVector matches; + if (g_reg_exp.Execute(line, &matches)) + value = matches[1].str(); else value = line; @@ -856,14 +869,15 @@ OptionValueSP Instruction::ReadDictionary(FILE *in_file, Stream *out_stream) { if (!line.empty()) { static RegularExpression g_reg_exp(llvm::StringRef( "^[ \t]*([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*=[ \t]*(.*)[ \t]*$")); - RegularExpression::Match regex_match(2); - bool reg_exp_success = g_reg_exp.Execute(line, ®ex_match); + llvm::SmallVector matches; + + bool reg_exp_success = g_reg_exp.Execute(line, &matches); std::string key; std::string value; if (reg_exp_success) { - regex_match.GetMatchAtIndex(line.c_str(), 1, key); - regex_match.GetMatchAtIndex(line.c_str(), 2, value); + key = matches[1].str(); + value = matches[2].str(); } else { out_stream->Printf("Instruction::ReadDictionary: Failure executing " "regular expression.\n"); diff --git a/lldb/source/Core/DumpDataExtractor.cpp b/lldb/source/Core/DumpDataExtractor.cpp index aa84370e223a574..af8239332b1f100 100644 --- a/lldb/source/Core/DumpDataExtractor.cpp +++ b/lldb/source/Core/DumpDataExtractor.cpp @@ -20,6 +20,7 @@ #include "lldb/Target/SectionLoadList.h" #include "lldb/Target/Target.h" #include "lldb/Utility/DataExtractor.h" +#include "lldb/Utility/Log.h" #include "lldb/Utility/Stream.h" #include "clang/AST/ASTContext.h" @@ -28,6 +29,7 @@ #include "llvm/ADT/APFloat.h" #include "llvm/ADT/APInt.h" #include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallVector.h" #include @@ -64,8 +66,9 @@ static float half2float(uint16_t half) { return u.f * ldexpf(1, -112); } -static bool GetAPInt(const DataExtractor &data, lldb::offset_t *offset_ptr, - lldb::offset_t byte_size, llvm::APInt &result) { +static llvm::Optional GetAPInt(const DataExtractor &data, + lldb::offset_t *offset_ptr, + lldb::offset_t byte_size) { llvm::SmallVector uint64_array; lldb::offset_t bytes_left = byte_size; uint64_t u64; @@ -81,8 +84,7 @@ static bool GetAPInt(const DataExtractor &data, lldb::offset_t *offset_ptr, } uint64_array.push_back(u64); } - result = llvm::APInt(byte_size * 8, llvm::ArrayRef(uint64_array)); - return true; + return llvm::APInt(byte_size * 8, llvm::ArrayRef(uint64_array)); } else if (byte_order == lldb::eByteOrderBig) { lldb::offset_t be_offset = *offset_ptr + byte_size; lldb::offset_t temp_offset; @@ -101,18 +103,17 @@ static bool GetAPInt(const DataExtractor &data, lldb::offset_t *offset_ptr, uint64_array.push_back(u64); } *offset_ptr += byte_size; - result = llvm::APInt(byte_size * 8, llvm::ArrayRef(uint64_array)); - return true; + return llvm::APInt(byte_size * 8, llvm::ArrayRef(uint64_array)); } - return false; + return llvm::None; } static lldb::offset_t DumpAPInt(Stream *s, const DataExtractor &data, lldb::offset_t offset, lldb::offset_t byte_size, bool is_signed, unsigned radix) { - llvm::APInt apint; - if (GetAPInt(data, &offset, byte_size, apint)) { - std::string apint_str(apint.toString(radix, is_signed)); + llvm::Optional apint = GetAPInt(data, &offset, byte_size); + if (apint.hasValue()) { + std::string apint_str(apint.getValue().toString(radix, is_signed)); switch (radix) { case 2: s->Write("0b", 2); @@ -562,20 +563,24 @@ lldb::offset_t lldb_private::DumpDataExtractor( llvm::SmallVector sv; // Show full precision when printing float values const unsigned format_precision = 0; - const unsigned format_max_padding = 100; + const unsigned format_max_padding = + target_sp->GetMaxZeroPaddingInFloatFormat(); size_t item_bit_size = item_byte_size * 8; if (item_bit_size == ast->getTypeSize(ast->FloatTy)) { - llvm::APInt apint(item_bit_size, - DE.GetMaxU64(&offset, item_byte_size)); - llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->FloatTy), - apint); - apfloat.toString(sv, format_precision, format_max_padding); + llvm::Optional apint = + GetAPInt(DE, &offset, item_byte_size); + if (apint.hasValue()) { + llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->FloatTy), + apint.getValue()); + apfloat.toString(sv, format_precision, format_max_padding); + } } else if (item_bit_size == ast->getTypeSize(ast->DoubleTy)) { - llvm::APInt apint; - if (GetAPInt(DE, &offset, item_byte_size, apint)) { + llvm::Optional apint = + GetAPInt(DE, &offset, item_byte_size); + if (apint.hasValue()) { llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->DoubleTy), - apint); + apint.getValue()); apfloat.toString(sv, format_precision, format_max_padding); } } else if (item_bit_size == ast->getTypeSize(ast->LongDoubleTy)) { @@ -586,16 +591,20 @@ lldb::offset_t lldb_private::DumpDataExtractor( if (&semantics == &llvm::APFloatBase::x87DoubleExtended()) byte_size = (llvm::APFloat::getSizeInBits(semantics) + 7) / 8; - llvm::APInt apint; - if (GetAPInt(DE, &offset, byte_size, apint)) { - llvm::APFloat apfloat(semantics, apint); + llvm::Optional apint = + GetAPInt(DE, &offset, byte_size); + if (apint.hasValue()) { + llvm::APFloat apfloat(semantics, apint.getValue()); apfloat.toString(sv, format_precision, format_max_padding); } } else if (item_bit_size == ast->getTypeSize(ast->HalfTy)) { - llvm::APInt apint(item_bit_size, DE.GetU16(&offset)); - llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->HalfTy), - apint); - apfloat.toString(sv, format_precision, format_max_padding); + llvm::Optional apint = + GetAPInt(DE, &offset, item_byte_size); + if (apint.hasValue()) { + llvm::APFloat apfloat(ast->getFloatTypeSemantics(ast->HalfTy), + apint.getValue()); + apfloat.toString(sv, format_precision, format_max_padding); + } } if (!sv.empty()) { diff --git a/lldb/source/Core/FormatEntity.cpp b/lldb/source/Core/FormatEntity.cpp index 1ffbed2cd64e6fb..c90828f40989c2a 100644 --- a/lldb/source/Core/FormatEntity.cpp +++ b/lldb/source/Core/FormatEntity.cpp @@ -514,24 +514,24 @@ static bool ScanBracketedRange(llvm::StringRef subpath, close_bracket_index = llvm::StringRef::npos; const size_t open_bracket_index = subpath.find('['); if (open_bracket_index == llvm::StringRef::npos) { - if (log) - log->Printf("[ScanBracketedRange] no bracketed range, skipping entirely"); + LLDB_LOGF(log, + "[ScanBracketedRange] no bracketed range, skipping entirely"); return false; } close_bracket_index = subpath.find(']', open_bracket_index + 1); if (close_bracket_index == llvm::StringRef::npos) { - if (log) - log->Printf("[ScanBracketedRange] no bracketed range, skipping entirely"); + LLDB_LOGF(log, + "[ScanBracketedRange] no bracketed range, skipping entirely"); return false; } else { var_name_final_if_array_range = subpath.data() + open_bracket_index; if (close_bracket_index - open_bracket_index == 1) { - if (log) - log->Printf( - "[ScanBracketedRange] '[]' detected.. going from 0 to end of data"); + LLDB_LOGF( + log, + "[ScanBracketedRange] '[]' detected.. going from 0 to end of data"); index_lower = 0; } else { const size_t separator_index = subpath.find('-', open_bracket_index + 1); @@ -540,22 +540,21 @@ static bool ScanBracketedRange(llvm::StringRef subpath, const char *index_lower_cstr = subpath.data() + open_bracket_index + 1; index_lower = ::strtoul(index_lower_cstr, nullptr, 0); index_higher = index_lower; - if (log) - log->Printf("[ScanBracketedRange] [%" PRId64 - "] detected, high index is same", - index_lower); + LLDB_LOGF(log, + "[ScanBracketedRange] [%" PRId64 + "] detected, high index is same", + index_lower); } else { const char *index_lower_cstr = subpath.data() + open_bracket_index + 1; const char *index_higher_cstr = subpath.data() + separator_index + 1; index_lower = ::strtoul(index_lower_cstr, nullptr, 0); index_higher = ::strtoul(index_higher_cstr, nullptr, 0); - if (log) - log->Printf("[ScanBracketedRange] [%" PRId64 "-%" PRId64 "] detected", - index_lower, index_higher); + LLDB_LOGF(log, + "[ScanBracketedRange] [%" PRId64 "-%" PRId64 "] detected", + index_lower, index_higher); } if (index_lower > index_higher && index_higher > 0) { - if (log) - log->Printf("[ScanBracketedRange] swapping indices"); + LLDB_LOGF(log, "[ScanBracketedRange] swapping indices"); const int64_t temp = index_lower; index_lower = index_higher; index_higher = temp; @@ -627,9 +626,8 @@ static ValueObjectSP ExpandIndexedExpression(ValueObject *valobj, size_t index, const char *ptr_deref_format = "[%d]"; std::string ptr_deref_buffer(10, 0); ::sprintf(&ptr_deref_buffer[0], ptr_deref_format, index); - if (log) - log->Printf("[ExpandIndexedExpression] name to deref: %s", - ptr_deref_buffer.c_str()); + LLDB_LOGF(log, "[ExpandIndexedExpression] name to deref: %s", + ptr_deref_buffer.c_str()); ValueObject::GetValueForExpressionPathOptions options; ValueObject::ExpressionPathEndResultType final_value_type; ValueObject::ExpressionPathScanEndReason reason_to_stop; @@ -640,15 +638,15 @@ static ValueObjectSP ExpandIndexedExpression(ValueObject *valobj, size_t index, ptr_deref_buffer.c_str(), &reason_to_stop, &final_value_type, options, &what_next); if (!item) { - if (log) - log->Printf("[ExpandIndexedExpression] ERROR: why stopping = %d," - " final_value_type %d", - reason_to_stop, final_value_type); + LLDB_LOGF(log, + "[ExpandIndexedExpression] ERROR: why stopping = %d," + " final_value_type %d", + reason_to_stop, final_value_type); } else { - if (log) - log->Printf("[ExpandIndexedExpression] ALL RIGHT: why stopping = %d," - " final_value_type %d", - reason_to_stop, final_value_type); + LLDB_LOGF(log, + "[ExpandIndexedExpression] ALL RIGHT: why stopping = %d," + " final_value_type %d", + reason_to_stop, final_value_type); } return item; } @@ -770,9 +768,8 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, const std::string &expr_path = entry.string; - if (log) - log->Printf("[Debugger::FormatPrompt] symbol to expand: %s", - expr_path.c_str()); + LLDB_LOGF(log, "[Debugger::FormatPrompt] symbol to expand: %s", + expr_path.c_str()); target = valobj @@ -781,16 +778,16 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, .get(); if (!target) { - if (log) - log->Printf("[Debugger::FormatPrompt] ERROR: why stopping = %d," - " final_value_type %d", - reason_to_stop, final_value_type); + LLDB_LOGF(log, + "[Debugger::FormatPrompt] ERROR: why stopping = %d," + " final_value_type %d", + reason_to_stop, final_value_type); return false; } else { - if (log) - log->Printf("[Debugger::FormatPrompt] ALL RIGHT: why stopping = %d," - " final_value_type %d", - reason_to_stop, final_value_type); + LLDB_LOGF(log, + "[Debugger::FormatPrompt] ALL RIGHT: why stopping = %d," + " final_value_type %d", + reason_to_stop, final_value_type); target = target ->GetQualifiedRepresentationIfAvailable( target->GetDynamicValueType(), true) @@ -814,18 +811,16 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, Status error; target = target->Dereference(error).get(); if (error.Fail()) { - if (log) - log->Printf("[Debugger::FormatPrompt] ERROR: %s\n", - error.AsCString("unknown")); + LLDB_LOGF(log, "[Debugger::FormatPrompt] ERROR: %s\n", + error.AsCString("unknown")); return false; } do_deref_pointer = false; } if (!target) { - if (log) - log->Printf("[Debugger::FormatPrompt] could not calculate target for " - "prompt expression"); + LLDB_LOGF(log, "[Debugger::FormatPrompt] could not calculate target for " + "prompt expression"); return false; } @@ -860,18 +855,16 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, // exceptions { StreamString str_temp; - if (log) - log->Printf( - "[Debugger::FormatPrompt] I am into array || pointer && !range"); + LLDB_LOGF(log, + "[Debugger::FormatPrompt] I am into array || pointer && !range"); if (target->HasSpecialPrintableRepresentation(val_obj_display, custom_format)) { // try to use the special cases bool success = target->DumpPrintableRepresentation( str_temp, val_obj_display, custom_format); - if (log) - log->Printf("[Debugger::FormatPrompt] special cases did%s match", - success ? "" : "n't"); + LLDB_LOGF(log, "[Debugger::FormatPrompt] special cases did%s match", + success ? "" : "n't"); // should not happen if (success) @@ -909,17 +902,16 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, } if (!is_array_range) { - if (log) - log->Printf("[Debugger::FormatPrompt] dumping ordinary printable output"); + LLDB_LOGF(log, + "[Debugger::FormatPrompt] dumping ordinary printable output"); return target->DumpPrintableRepresentation(s, val_obj_display, custom_format); } else { - if (log) - log->Printf("[Debugger::FormatPrompt] checking if I can handle as array"); + LLDB_LOGF(log, + "[Debugger::FormatPrompt] checking if I can handle as array"); if (!is_array && !is_pointer) return false; - if (log) - log->Printf("[Debugger::FormatPrompt] handle as array"); + LLDB_LOGF(log, "[Debugger::FormatPrompt] handle as array"); StreamString special_directions_stream; llvm::StringRef special_directions; if (close_bracket_index != llvm::StringRef::npos && @@ -965,15 +957,15 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, .get(); if (!item) { - if (log) - log->Printf("[Debugger::FormatPrompt] ERROR in getting child item at " - "index %" PRId64, - index); + LLDB_LOGF(log, + "[Debugger::FormatPrompt] ERROR in getting child item at " + "index %" PRId64, + index); } else { - if (log) - log->Printf( - "[Debugger::FormatPrompt] special_directions for child item: %s", - special_directions.data() ? special_directions.data() : ""); + LLDB_LOGF( + log, + "[Debugger::FormatPrompt] special_directions for child item: %s", + special_directions.data() ? special_directions.data() : ""); } if (special_directions.empty()) { @@ -2354,34 +2346,31 @@ static void AddMatches(const FormatEntity::Entry::Definition *def, } } -size_t FormatEntity::AutoComplete(CompletionRequest &request) { - llvm::StringRef str = request.GetCursorArgumentPrefix().str(); - - request.SetWordComplete(false); - str = str.drop_front(request.GetMatchStartPoint()); +void FormatEntity::AutoComplete(CompletionRequest &request) { + llvm::StringRef str = request.GetCursorArgumentPrefix(); const size_t dollar_pos = str.rfind('$'); if (dollar_pos == llvm::StringRef::npos) - return 0; + return; // Hitting TAB after $ at the end of the string add a "{" if (dollar_pos == str.size() - 1) { std::string match = str.str(); match.append("{"); request.AddCompletion(match); - return 1; + return; } if (str[dollar_pos + 1] != '{') - return 0; + return; const size_t close_pos = str.find('}', dollar_pos + 2); if (close_pos != llvm::StringRef::npos) - return 0; + return; const size_t format_pos = str.find('%', dollar_pos + 2); if (format_pos != llvm::StringRef::npos) - return 0; + return; llvm::StringRef partial_variable(str.substr(dollar_pos + 2)); if (partial_variable.empty()) { @@ -2389,7 +2378,7 @@ size_t FormatEntity::AutoComplete(CompletionRequest &request) { StringList new_matches; AddMatches(&g_root, str, llvm::StringRef(), new_matches); request.AddCompletions(new_matches); - return request.GetNumberOfMatches(); + return; } // We have a partially specified variable, find it @@ -2397,7 +2386,7 @@ size_t FormatEntity::AutoComplete(CompletionRequest &request) { const FormatEntity::Entry::Definition *entry_def = FindEntry(partial_variable, &g_root, remainder); if (!entry_def) - return 0; + return; const size_t n = entry_def->num_children; @@ -2409,7 +2398,6 @@ size_t FormatEntity::AutoComplete(CompletionRequest &request) { } else { // "${thread.id" request.AddCompletion(MakeMatch(str, "}")); - request.SetWordComplete(true); } } else if (remainder.equals(".")) { // "${thread." @@ -2423,5 +2411,4 @@ size_t FormatEntity::AutoComplete(CompletionRequest &request) { AddMatches(entry_def, str, remainder, new_matches); request.AddCompletions(new_matches); } - return request.GetNumberOfMatches(); } diff --git a/lldb/source/Core/Highlighter.cpp b/lldb/source/Core/Highlighter.cpp index 0b0aa969bf65459..c3c614aac21082c 100644 --- a/lldb/source/Core/Highlighter.cpp +++ b/lldb/source/Core/Highlighter.cpp @@ -13,6 +13,7 @@ #include "lldb/Utility/StreamString.h" using namespace lldb_private; +using namespace lldb_private::ansi; void HighlightStyle::ColorStyle::Apply(Stream &s, llvm::StringRef value) const { s << m_prefix << value << m_suffix; @@ -20,8 +21,8 @@ void HighlightStyle::ColorStyle::Apply(Stream &s, llvm::StringRef value) const { void HighlightStyle::ColorStyle::Set(llvm::StringRef prefix, llvm::StringRef suffix) { - m_prefix = lldb_utility::ansi::FormatAnsiTerminalCodes(prefix); - m_suffix = lldb_utility::ansi::FormatAnsiTerminalCodes(suffix); + m_prefix = FormatAnsiTerminalCodes(prefix); + m_suffix = FormatAnsiTerminalCodes(suffix); } void DefaultHighlighter::Highlight(const HighlightStyle &options, diff --git a/lldb/source/Core/IOHandler.cpp b/lldb/source/Core/IOHandler.cpp index 3a7a75e8ae56b14..5394f16b7f9814b 100644 --- a/lldb/source/Core/IOHandler.cpp +++ b/lldb/source/Core/IOHandler.cpp @@ -170,18 +170,11 @@ IOHandlerConfirm::IOHandlerConfirm(Debugger &debugger, llvm::StringRef prompt, IOHandlerConfirm::~IOHandlerConfirm() = default; -int IOHandlerConfirm::IOHandlerComplete( - IOHandler &io_handler, const char *current_line, const char *cursor, - const char *last_char, int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions) { - if (current_line == cursor) { - if (m_default_response) { - matches.AppendString("y"); - } else { - matches.AppendString("n"); - } - } - return matches.GetSize(); +void IOHandlerConfirm::IOHandlerComplete(IOHandler &io_handler, + CompletionRequest &request) { + if (request.GetRawCursorPos() != 0) + return; + request.AddCompletion(m_default_response ? "y" : "n"); } void IOHandlerConfirm::IOHandlerInputComplete(IOHandler &io_handler, @@ -219,47 +212,20 @@ void IOHandlerConfirm::IOHandlerInputComplete(IOHandler &io_handler, } } -int IOHandlerDelegate::IOHandlerComplete( - IOHandler &io_handler, const char *current_line, const char *cursor, - const char *last_char, int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions) { +void IOHandlerDelegate::IOHandlerComplete(IOHandler &io_handler, + CompletionRequest &request) { switch (m_completion) { case Completion::None: break; - case Completion::LLDBCommand: - return io_handler.GetDebugger().GetCommandInterpreter().HandleCompletion( - current_line, cursor, last_char, skip_first_n_matches, max_matches, - matches, descriptions); - case Completion::Expression: { - CompletionResult result; - CompletionRequest request(current_line, current_line - cursor, - skip_first_n_matches, max_matches, result); + io_handler.GetDebugger().GetCommandInterpreter().HandleCompletion(request); + break; + case Completion::Expression: CommandCompletions::InvokeCommonCompletionCallbacks( io_handler.GetDebugger().GetCommandInterpreter(), CommandCompletions::eVariablePathCompletion, request, nullptr); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - size_t num_matches = request.GetNumberOfMatches(); - if (num_matches > 0) { - std::string common_prefix; - matches.LongestCommonPrefix(common_prefix); - const size_t partial_name_len = request.GetCursorArgumentPrefix().size(); - - // If we matched a unique single command, add a space... Only do this if - // the completer told us this was a complete word, however... - if (num_matches == 1 && request.GetWordComplete()) { - common_prefix.push_back(' '); - } - common_prefix.erase(0, partial_name_len); - matches.InsertStringAtIndex(0, std::move(common_prefix)); - } - return num_matches; - } break; + break; } - - return 0; } IOHandlerEditline::IOHandlerEditline( @@ -374,7 +340,21 @@ bool IOHandlerEditline::GetLine(std::string &line, bool &interrupted) { bool got_line = false; m_editing = true; while (!done) { - if (fgets(buffer, sizeof(buffer), in) == nullptr) { +#ifdef _WIN32 + // ReadFile on Windows is supposed to set ERROR_OPERATION_ABORTED + // according to the docs on MSDN. However, this has evidently been a + // known bug since Windows 8. Therefore, we can't detect if a signal + // interrupted in the fgets. So pressing ctrl-c causes the repl to end + // and the process to exit. A temporary workaround is just to attempt to + // fgets twice until this bug is fixed. + if (fgets(buffer, sizeof(buffer), in) == nullptr && + fgets(buffer, sizeof(buffer), in) == nullptr) { + // this is the equivalent of EINTR for Windows + if (GetLastError() == ERROR_OPERATION_ABORTED) + continue; +#else + if (fgets(buffer, sizeof(buffer), in) == nullptr) { +#endif const int saved_errno = errno; if (feof(in)) done = true; @@ -434,16 +414,11 @@ int IOHandlerEditline::FixIndentationCallback(Editline *editline, *editline_reader, lines, cursor_position); } -int IOHandlerEditline::AutoCompleteCallback( - const char *current_line, const char *cursor, const char *last_char, - int skip_first_n_matches, int max_matches, StringList &matches, - StringList &descriptions, void *baton) { +void IOHandlerEditline::AutoCompleteCallback(CompletionRequest &request, + void *baton) { IOHandlerEditline *editline_reader = (IOHandlerEditline *)baton; if (editline_reader) - return editline_reader->m_delegate.IOHandlerComplete( - *editline_reader, current_line, cursor, last_char, skip_first_n_matches, - max_matches, matches, descriptions); - return 0; + editline_reader->m_delegate.IOHandlerComplete(*editline_reader, request); } #endif @@ -941,16 +916,9 @@ class Window { } void PutChar(int ch) { ::waddch(m_window, ch); } void PutCString(const char *s, int len = -1) { ::waddnstr(m_window, s, len); } - void Refresh() { ::wrefresh(m_window); } - void DeferredRefresh() { - // We are using panels, so we don't need to call this... - //::wnoutrefresh(m_window); - } void SetBackground(int color_pair_idx) { ::wbkgd(m_window, COLOR_PAIR(color_pair_idx)); } - void UnderlineOn() { AttributeOn(A_UNDERLINE); } - void UnderlineOff() { AttributeOff(A_UNDERLINE); } void PutCStringTruncated(const char *s, int right_pad) { int bytes_left = GetWidth() - GetCursorX(); @@ -1202,19 +1170,6 @@ class Window { return eKeyNotHandled; } - bool SetActiveWindow(Window *window) { - const size_t num_subwindows = m_subwindows.size(); - for (size_t i = 0; i < num_subwindows; ++i) { - if (m_subwindows[i].get() == window) { - m_prev_active_window_idx = m_curr_active_window_idx; - ::top_panel(window->m_panel); - m_curr_active_window_idx = i; - return true; - } - } - return false; - } - WindowSP GetActiveWindow() { if (!m_subwindows.empty()) { if (m_curr_active_window_idx >= m_subwindows.size()) { @@ -1246,8 +1201,6 @@ class Window { void SetCanBeActive(bool b) { m_can_activate = b; } - const WindowDelegateSP &GetDelegate() const { return m_delegate_sp; } - void SetDelegate(const WindowDelegateSP &delegate_sp) { m_delegate_sp = delegate_sp; } @@ -1399,12 +1352,8 @@ class Menu : public WindowDelegate { int GetKeyValue() const { return m_key_value; } - void SetKeyValue(int key_value) { m_key_value = key_value; } - std::string &GetName() { return m_name; } - std::string &GetKeyName() { return m_key_name; } - int GetDrawWidth() const { return m_max_submenu_name_length + m_max_submenu_key_name_length + 8; } @@ -1558,7 +1507,6 @@ bool Menu::WindowDelegateDraw(Window &window, bool force) { menu->DrawMenuTitle(window, false); } window.PutCString(" |"); - window.DeferredRefresh(); } break; case Menu::Type::Item: { @@ -1581,7 +1529,6 @@ bool Menu::WindowDelegateDraw(Window &window, bool force) { submenus[i]->DrawMenuTitle(window, is_selected); } window.MoveCursor(cursor_x, cursor_y); - window.DeferredRefresh(); } break; default: @@ -1887,8 +1834,6 @@ class Application { return m_window_sp; } - WindowDelegates &GetWindowDelegates() { return m_window_delegates; } - protected: WindowSP m_window_sp; WindowDelegates m_window_delegates; @@ -1925,9 +1870,7 @@ struct Row { return 0; } - void Expand() { - expanded = true; - } + void Expand() { expanded = true; } std::vector &GetChildren() { ProcessSP process_sp = value.GetProcessSP(); @@ -2282,8 +2225,6 @@ class TreeWindowDelegate : public WindowDelegate { m_selected_item = nullptr; } - window.DeferredRefresh(); - return true; // Drawing handled } @@ -2633,14 +2574,12 @@ class ThreadsTreeDelegate : public TreeDelegate { class ValueObjectListDelegate : public WindowDelegate { public: ValueObjectListDelegate() - : m_rows(), m_selected_row(nullptr), - m_selected_row_idx(0), m_first_visible_row(0), m_num_rows(0), - m_max_x(0), m_max_y(0) {} + : m_rows(), m_selected_row(nullptr), m_selected_row_idx(0), + m_first_visible_row(0), m_num_rows(0), m_max_x(0), m_max_y(0) {} ValueObjectListDelegate(ValueObjectList &valobj_list) - : m_rows(), m_selected_row(nullptr), - m_selected_row_idx(0), m_first_visible_row(0), m_num_rows(0), - m_max_x(0), m_max_y(0) { + : m_rows(), m_selected_row(nullptr), m_selected_row_idx(0), + m_first_visible_row(0), m_num_rows(0), m_max_x(0), m_max_y(0) { SetValues(valobj_list); } @@ -2683,8 +2622,6 @@ class ValueObjectListDelegate : public WindowDelegate { DisplayRows(window, m_rows, g_options); - window.DeferredRefresh(); - // Get the selected row m_selected_row = GetRowForRowIndex(m_selected_row_idx); // Keep the cursor on the selected row so the highlight and the cursor are @@ -3789,7 +3726,6 @@ class StatusBarWindowDelegate : public WindowDelegate { window.Printf(" with status = %i", exit_status); } } - window.DeferredRefresh(); return true; } @@ -4247,7 +4183,6 @@ class SourceFileWindowDelegate : public WindowDelegate { } } } - window.DeferredRefresh(); return true; // Drawing handled } diff --git a/lldb/source/Core/Mangled.cpp b/lldb/source/Core/Mangled.cpp index c6759cc944ca9bc..944c7b0bcfee14f 100644 --- a/lldb/source/Core/Mangled.cpp +++ b/lldb/source/Core/Mangled.cpp @@ -226,9 +226,9 @@ static char *GetMSVCDemangledStr(const char *M) { if (Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DEMANGLE)) { if (demangled_cstr && demangled_cstr[0]) - log->Printf("demangled msvc: %s -> \"%s\"", M, demangled_cstr); + LLDB_LOGF(log, "demangled msvc: %s -> \"%s\"", M, demangled_cstr); else - log->Printf("demangled msvc: %s -> error: 0x%lu", M, result); + LLDB_LOGF(log, "demangled msvc: %s -> error: 0x%lu", M, result); } if (result != 0) { @@ -261,9 +261,9 @@ static char *GetItaniumDemangledStr(const char *M) { if (Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DEMANGLE)) { if (demangled_cstr) - log->Printf("demangled itanium: %s -> \"%s\"", M, demangled_cstr); + LLDB_LOGF(log, "demangled itanium: %s -> \"%s\"", M, demangled_cstr); else - log->Printf("demangled itanium: %s -> error: failed to demangle", M); + LLDB_LOGF(log, "demangled itanium: %s -> error: failed to demangle", M); } return demangled_cstr; diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp index 153d5a7409367b8..edacdaf1b54a6d8 100644 --- a/lldb/source/Core/Module.cpp +++ b/lldb/source/Core/Module.cpp @@ -137,14 +137,15 @@ Module::Module(const ModuleSpec &module_spec) Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_MODULES)); if (log != nullptr) - log->Printf("%p Module::Module((%s) '%s%s%s%s')", static_cast(this), - module_spec.GetArchitecture().GetArchitectureName(), - module_spec.GetFileSpec().GetPath().c_str(), - module_spec.GetObjectName().IsEmpty() ? "" : "(", - module_spec.GetObjectName().IsEmpty() - ? "" - : module_spec.GetObjectName().AsCString(""), - module_spec.GetObjectName().IsEmpty() ? "" : ")"); + LLDB_LOGF(log, "%p Module::Module((%s) '%s%s%s%s')", + static_cast(this), + module_spec.GetArchitecture().GetArchitectureName(), + module_spec.GetFileSpec().GetPath().c_str(), + module_spec.GetObjectName().IsEmpty() ? "" : "(", + module_spec.GetObjectName().IsEmpty() + ? "" + : module_spec.GetObjectName().AsCString(""), + module_spec.GetObjectName().IsEmpty() ? "" : ")"); // First extract all module specifications from the file using the local file // path. If there are no specifications, then don't fill anything in @@ -164,7 +165,7 @@ Module::Module(const ModuleSpec &module_spec) if (!modules_specs.FindMatchingModuleSpec(module_spec, matching_module_spec)) { if (log) { - log->Printf("Found local object file but the specs didn't match"); + LLDB_LOGF(log, "Found local object file but the specs didn't match"); } return; } @@ -235,11 +236,11 @@ Module::Module(const FileSpec &file_spec, const ArchSpec &arch, Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_MODULES)); if (log != nullptr) - log->Printf("%p Module::Module((%s) '%s%s%s%s')", static_cast(this), - m_arch.GetArchitectureName(), m_file.GetPath().c_str(), - m_object_name.IsEmpty() ? "" : "(", - m_object_name.IsEmpty() ? "" : m_object_name.AsCString(""), - m_object_name.IsEmpty() ? "" : ")"); + LLDB_LOGF(log, "%p Module::Module((%s) '%s%s%s%s')", + static_cast(this), m_arch.GetArchitectureName(), + m_file.GetPath().c_str(), m_object_name.IsEmpty() ? "" : "(", + m_object_name.IsEmpty() ? "" : m_object_name.AsCString(""), + m_object_name.IsEmpty() ? "" : ")"); } Module::Module() @@ -267,11 +268,11 @@ Module::~Module() { Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_MODULES)); if (log != nullptr) - log->Printf("%p Module::~Module((%s) '%s%s%s%s')", - static_cast(this), m_arch.GetArchitectureName(), - m_file.GetPath().c_str(), m_object_name.IsEmpty() ? "" : "(", - m_object_name.IsEmpty() ? "" : m_object_name.AsCString(""), - m_object_name.IsEmpty() ? "" : ")"); + LLDB_LOGF(log, "%p Module::~Module((%s) '%s%s%s%s')", + static_cast(this), m_arch.GetArchitectureName(), + m_file.GetPath().c_str(), m_object_name.IsEmpty() ? "" : "(", + m_object_name.IsEmpty() ? "" : m_object_name.AsCString(""), + m_object_name.IsEmpty() ? "" : ")"); // Release any auto pointers before we start tearing down our member // variables since the object file and symbol files might need to make // function calls back into this module object. The ordering is important @@ -352,7 +353,8 @@ void Module::SetUUID(const lldb_private::UUID &uuid) { } } -TypeSystem *Module::GetTypeSystemForLanguage(LanguageType language) { +llvm::Expected +Module::GetTypeSystemForLanguage(LanguageType language) { return m_type_system_map.GetTypeSystemForLanguage(language, this, true); } @@ -364,7 +366,7 @@ void Module::ParseAllDebugSymbols() { SymbolContext sc; sc.module_sp = shared_from_this(); - SymbolVendor *symbols = GetSymbolVendor(); + SymbolFile *symbols = GetSymbolFile(); for (size_t cu_idx = 0; cu_idx < num_comp_units; cu_idx++) { sc.comp_unit = symbols->GetCompileUnitAtIndex(cu_idx).get(); @@ -404,8 +406,7 @@ size_t Module::GetNumCompileUnits() { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, "Module::GetNumCompileUnits (module = %p)", static_cast(this)); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) return symbols->GetNumCompileUnits(); return 0; } @@ -416,8 +417,7 @@ CompUnitSP Module::GetCompileUnitAtIndex(size_t index) { CompUnitSP cu_sp; if (index < num_comp_units) { - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) cu_sp = symbols->GetCompileUnitAtIndex(index); } return cu_sp; @@ -455,8 +455,8 @@ uint32_t Module::ResolveSymbolContextForAddress( sc.module_sp = shared_from_this(); resolved_flags |= eSymbolContextModule; - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (!sym_vendor) + SymbolFile *symfile = GetSymbolFile(); + if (!symfile) return resolved_flags; // Resolve the compile unit, function, block, line table or line entry if @@ -467,14 +467,14 @@ uint32_t Module::ResolveSymbolContextForAddress( resolve_scope & eSymbolContextLineEntry || resolve_scope & eSymbolContextVariable) { resolved_flags |= - sym_vendor->ResolveSymbolContext(so_addr, resolve_scope, sc); + symfile->ResolveSymbolContext(so_addr, resolve_scope, sc); } // Resolve the symbol if requested, but don't re-look it up if we've // already found it. if (resolve_scope & eSymbolContextSymbol && !(resolved_flags & eSymbolContextSymbol)) { - Symtab *symtab = sym_vendor->GetSymtab(); + Symtab *symtab = symfile->GetSymtab(); if (symtab && so_addr.IsSectionOffset()) { Symbol *matching_symbol = nullptr; @@ -507,18 +507,15 @@ uint32_t Module::ResolveSymbolContextForAddress( // files on MacOSX have an unstripped symbol table inside of them. ObjectFile *symtab_objfile = symtab->GetObjectFile(); if (symtab_objfile && symtab_objfile->IsStripped()) { - SymbolFile *symfile = sym_vendor->GetSymbolFile(); - if (symfile) { - ObjectFile *symfile_objfile = symfile->GetObjectFile(); - if (symfile_objfile != symtab_objfile) { - Symtab *symfile_symtab = symfile_objfile->GetSymtab(); - if (symfile_symtab) { - Symbol *symbol = - symfile_symtab->FindSymbolContainingFileAddress( - so_addr.GetFileAddress()); - if (symbol && !symbol->IsSynthetic()) { - sc.symbol = symbol; - } + ObjectFile *symfile_objfile = symfile->GetObjectFile(); + if (symfile_objfile != symtab_objfile) { + Symtab *symfile_symtab = symfile_objfile->GetSymtab(); + if (symfile_symtab) { + Symbol *symbol = + symfile_symtab->FindSymbolContainingFileAddress( + so_addr.GetFileAddress()); + if (symbol && !symbol->IsSynthetic()) { + sc.symbol = symbol; } } } @@ -590,8 +587,7 @@ uint32_t Module::ResolveSymbolContextsForFileSpec( const uint32_t initial_count = sc_list.GetSize(); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) symbols->ResolveSymbolContext(file_spec, line, check_inlines, resolve_scope, sc_list); @@ -602,8 +598,7 @@ size_t Module::FindGlobalVariables(ConstString name, const CompilerDeclContext *parent_decl_ctx, size_t max_matches, VariableList &variables) { - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) return symbols->FindGlobalVariables(name, parent_decl_ctx, max_matches, variables); return 0; @@ -612,7 +607,7 @@ size_t Module::FindGlobalVariables(ConstString name, size_t Module::FindGlobalVariables(const RegularExpression ®ex, size_t max_matches, VariableList &variables) { - SymbolVendor *symbols = GetSymbolVendor(); + SymbolFile *symbols = GetSymbolFile(); if (symbols) return symbols->FindGlobalVariables(regex, max_matches, variables); return 0; @@ -809,7 +804,7 @@ size_t Module::FindFunctions(ConstString name, const size_t old_size = sc_list.GetSize(); // Find all the functions (not symbols, but debug information functions... - SymbolVendor *symbols = GetSymbolVendor(); + SymbolFile *symbols = GetSymbolFile(); if (name_type_mask & eFunctionNameTypeAuto) { LookupInfo lookup_info(name, name_type_mask, eLanguageTypeUnknown); @@ -859,8 +854,7 @@ size_t Module::FindFunctions(const RegularExpression ®ex, const size_t start_size = sc_list.GetSize(); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) { + if (SymbolFile *symbols = GetSymbolFile()) { symbols->FindFunctions(regex, include_inlines, append, sc_list); // Now check our symbol table for symbols that are code symbols if @@ -952,8 +946,7 @@ size_t Module::FindTypes_Impl( TypeMap &types) { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) return symbols->FindTypes(name, parent_decl_ctx, append, max_matches, searched_symbol_files, types); return 0; @@ -1044,22 +1037,36 @@ size_t Module::FindTypes( return num_matches; } -SymbolVendor *Module::GetSymbolVendor(bool can_create, - lldb_private::Stream *feedback_strm) { - if (!m_did_load_symbol_vendor.load()) { +size_t Module::FindTypes(llvm::ArrayRef pattern, + LanguageSet languages, bool append, TypeMap &types) { + static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); + Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); + if (SymbolFile *symbols = GetSymbolFile()) + return symbols->FindTypes(pattern, languages, append, types); + return 0; +} + +SymbolFile *Module::GetSymbolFile(bool can_create, Stream *feedback_strm) { + if (!m_did_load_symfile.load()) { std::lock_guard guard(m_mutex); - if (!m_did_load_symbol_vendor.load() && can_create) { + if (!m_did_load_symfile.load() && can_create) { ObjectFile *obj_file = GetObjectFile(); if (obj_file != nullptr) { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); m_symfile_up.reset( SymbolVendor::FindPlugin(shared_from_this(), feedback_strm)); - m_did_load_symbol_vendor = true; + m_did_load_symfile = true; } } } - return m_symfile_up.get(); + return m_symfile_up ? m_symfile_up->GetSymbolFile() : nullptr; +} + +Symtab *Module::GetSymtab() { + if (SymbolFile *symbols = GetSymbolFile()) + return symbols->GetSymtab(); + return nullptr; } void Module::SetFileSpecAndObjectName(const FileSpec &file, @@ -1232,20 +1239,12 @@ void Module::Dump(Stream *s) { if (objfile) objfile->Dump(s); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) - symbols->Dump(s); + if (SymbolFile *symbols = GetSymbolFile()) + symbols->Dump(*s); s->IndentLess(); } -TypeList *Module::GetTypeList() { - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) - return &symbols->GetTypeList(); - return nullptr; -} - ConstString Module::GetObjectName() const { return m_object_name; } ObjectFile *Module::GetObjectFile() { @@ -1295,9 +1294,8 @@ void Module::SectionFileAddressesChanged() { ObjectFile *obj_file = GetObjectFile(); if (obj_file) obj_file->SectionFileAddressesChanged(); - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (sym_vendor != nullptr) - sym_vendor->SectionFileAddressesChanged(); + if (SymbolFile *symbols = GetSymbolFile()) + symbols->SectionFileAddressesChanged(); } UnwindTable &Module::GetUnwindTable() { @@ -1318,13 +1316,9 @@ const Symbol *Module::FindFirstSymbolWithNameAndType(ConstString name, Timer scoped_timer( func_cat, "Module::FindFirstSymbolWithNameAndType (name = %s, type = %i)", name.AsCString(), symbol_type); - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) - return symtab->FindFirstSymbolWithNameAndType( - name, symbol_type, Symtab::eDebugAny, Symtab::eVisibilityAny); - } + if (Symtab *symtab = GetSymtab()) + return symtab->FindFirstSymbolWithNameAndType( + name, symbol_type, Symtab::eDebugAny, Symtab::eVisibilityAny); return nullptr; } void Module::SymbolIndicesToSymbolContextList( @@ -1352,12 +1346,8 @@ size_t Module::FindFunctionSymbols(ConstString name, Timer scoped_timer(func_cat, "Module::FindSymbolsFunctions (name = %s, mask = 0x%8.8x)", name.AsCString(), name_type_mask); - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) - return symtab->FindFunctionSymbols(name, name_type_mask, sc_list); - } + if (Symtab *symtab = GetSymtab()) + return symtab->FindFunctionSymbols(name, name_type_mask, sc_list); return 0; } @@ -1372,14 +1362,10 @@ size_t Module::FindSymbolsWithNameAndType(ConstString name, func_cat, "Module::FindSymbolsWithNameAndType (name = %s, type = %i)", name.AsCString(), symbol_type); const size_t initial_size = sc_list.GetSize(); - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) { - std::vector symbol_indexes; - symtab->FindAllSymbolsWithNameAndType(name, symbol_type, symbol_indexes); - SymbolIndicesToSymbolContextList(symtab, symbol_indexes, sc_list); - } + if (Symtab *symtab = GetSymtab()) { + std::vector symbol_indexes; + symtab->FindAllSymbolsWithNameAndType(name, symbol_type, symbol_indexes); + SymbolIndicesToSymbolContextList(symtab, symbol_indexes, sc_list); } return sc_list.GetSize() - initial_size; } @@ -1396,34 +1382,28 @@ size_t Module::FindSymbolsMatchingRegExAndType(const RegularExpression ®ex, "Module::FindSymbolsMatchingRegExAndType (regex = %s, type = %i)", regex.GetText().str().c_str(), symbol_type); const size_t initial_size = sc_list.GetSize(); - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (sym_vendor) { - Symtab *symtab = sym_vendor->GetSymtab(); - if (symtab) { - std::vector symbol_indexes; - symtab->FindAllSymbolsMatchingRexExAndType( - regex, symbol_type, Symtab::eDebugAny, Symtab::eVisibilityAny, - symbol_indexes); - SymbolIndicesToSymbolContextList(symtab, symbol_indexes, sc_list); - } + if (Symtab *symtab = GetSymtab()) { + std::vector symbol_indexes; + symtab->FindAllSymbolsMatchingRexExAndType( + regex, symbol_type, Symtab::eDebugAny, Symtab::eVisibilityAny, + symbol_indexes); + SymbolIndicesToSymbolContextList(symtab, symbol_indexes, sc_list); } return sc_list.GetSize() - initial_size; } void Module::PreloadSymbols() { std::lock_guard guard(m_mutex); - SymbolVendor * sym_vendor = GetSymbolVendor(); - if (!sym_vendor) { + SymbolFile *sym_file = GetSymbolFile(); + if (!sym_file) return; - } + // Prime the symbol file first, since it adds symbols to the symbol table. - if (SymbolFile *symbol_file = sym_vendor->GetSymbolFile()) { - symbol_file->PreloadSymbols(); - } + sym_file->PreloadSymbols(); + // Now we can prime the symbol table. - if (Symtab * symtab = sym_vendor->GetSymtab()) { + if (Symtab *symtab = sym_file->GetSymtab()) symtab->PreloadSymbols(); - } } void Module::SetSymbolFileFileSpec(const FileSpec &file) { @@ -1433,7 +1413,7 @@ void Module::SetSymbolFileFileSpec(const FileSpec &file) { // Remove any sections in the unified section list that come from the // current symbol vendor. SectionList *section_list = GetSectionList(); - SymbolFile *symbol_file = m_symfile_up->GetSymbolFile(); + SymbolFile *symbol_file = GetSymbolFile(); if (section_list && symbol_file) { ObjectFile *obj_file = symbol_file->GetObjectFile(); // Make sure we have an object file and that the symbol vendor's objfile @@ -1489,7 +1469,7 @@ void Module::SetSymbolFileFileSpec(const FileSpec &file) { } m_symfile_spec = file; m_symfile_up.reset(); - m_did_load_symbol_vendor = false; + m_did_load_symfile = false; } bool Module::IsExecutable() { @@ -1654,6 +1634,26 @@ bool Module::RemapSourceFile(llvm::StringRef path, return m_source_mappings.RemapPath(path, new_path); } +bool Module::MergeArchitecture(const ArchSpec &arch_spec) { + if (!arch_spec.IsValid()) + return false; + LLDB_LOG(GetLogIfAllCategoriesSet(LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_MODULES), + "module has arch %s, merging/replacing with arch %s", + m_arch.GetTriple().getTriple().c_str(), + arch_spec.GetTriple().getTriple().c_str()); + if (!m_arch.IsCompatibleMatch(arch_spec)) { + // The new architecture is different, we just need to replace it. + return SetArchitecture(arch_spec); + } + + // Merge bits from arch_spec into "merged_arch" and set our architecture. + ArchSpec merged_arch(m_arch); + merged_arch.MergeFrom(arch_spec); + // SetArchitecture() is a no-op if m_arch is already valid. + m_arch = ArchSpec(); + return SetArchitecture(merged_arch); +} + llvm::VersionTuple Module::GetVersion() { if (ObjectFile *obj_file = GetObjectFile()) return obj_file->GetVersion(); diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp index 9d795f9e558691e..999ed6b74d7b0c3 100644 --- a/lldb/source/Core/ModuleList.cpp +++ b/lldb/source/Core/ModuleList.cpp @@ -65,31 +65,20 @@ using namespace lldb_private; namespace { -static constexpr PropertyDefinition g_properties[] = { - {"enable-external-lookup", OptionValue::eTypeBoolean, true, true, nullptr, - {}, - "Control the use of external tools and repositories to locate symbol " - "files. Directories listed in target.debug-file-search-paths and " - "directory of the executable are always checked first for separate debug " - "info files. Then depending on this setting: " - "On macOS, Spotlight would be also used to locate a matching .dSYM " - "bundle based on the UUID of the executable. " - "On NetBSD, directory /usr/libdata/debug would be also searched. " - "On platforms other than NetBSD directory /usr/lib/debug would be " - "also searched." - }, - {"clang-modules-cache-path", OptionValue::eTypeFileSpec, true, 0, nullptr, - {}, - "The path to the clang modules cache directory (-fmodules-cache-path)."}}; - -enum { ePropertyEnableExternalLookup, ePropertyClangModulesCachePath }; +#define LLDB_PROPERTIES_modulelist +#include "CoreProperties.inc" + +enum { +#define LLDB_PROPERTIES_modulelist +#include "CorePropertiesEnum.inc" +}; } // namespace ModuleListProperties::ModuleListProperties() { m_collection_sp = std::make_shared(ConstString("symbols")); - m_collection_sp->Initialize(g_properties); + m_collection_sp->Initialize(g_modulelist_properties); llvm::SmallString<128> path; clang::driver::Driver::getDefaultModuleCachePath(path); @@ -99,7 +88,7 @@ ModuleListProperties::ModuleListProperties() { bool ModuleListProperties::GetEnableExternalLookup() const { const uint32_t idx = ePropertyEnableExternalLookup; return m_collection_sp->GetPropertyAtIndexAsBoolean( - nullptr, idx, g_properties[idx].default_uint_value != 0); + nullptr, idx, g_modulelist_properties[idx].default_uint_value != 0); } bool ModuleListProperties::SetEnableExternalLookup(bool new_value) { @@ -135,9 +124,9 @@ ModuleList::ModuleList(ModuleList::Notifier *notifier) const ModuleList &ModuleList::operator=(const ModuleList &rhs) { if (this != &rhs) { std::lock(m_modules_mutex, rhs.m_modules_mutex); - std::lock_guard lhs_guard(m_modules_mutex, + std::lock_guard lhs_guard(m_modules_mutex, std::adopt_lock); - std::lock_guard rhs_guard(rhs.m_modules_mutex, + std::lock_guard rhs_guard(rhs.m_modules_mutex, std::adopt_lock); m_modules = rhs.m_modules; } @@ -155,8 +144,8 @@ void ModuleList::AppendImpl(const ModuleSP &module_sp, bool use_notifier) { } } -void ModuleList::Append(const ModuleSP &module_sp, bool notify) { - AppendImpl(module_sp, notify); +void ModuleList::Append(const ModuleSP &module_sp, bool notify) { + AppendImpl(module_sp, notify); } void ModuleList::ReplaceEquivalent(const ModuleSP &module_sp) { @@ -641,11 +630,11 @@ void ModuleList::LogUUIDAndPaths(Log *log, const char *prefix_cstr) { for (pos = begin; pos != end; ++pos) { Module *module = pos->get(); const FileSpec &module_file_spec = module->GetFileSpec(); - log->Printf("%s[%u] %s (%s) \"%s\"", prefix_cstr ? prefix_cstr : "", - (uint32_t)std::distance(begin, pos), - module->GetUUID().GetAsString().c_str(), - module->GetArchitecture().GetArchitectureName(), - module_file_spec.GetPath().c_str()); + LLDB_LOGF(log, "%s[%u] %s (%s) \"%s\"", prefix_cstr ? prefix_cstr : "", + (uint32_t)std::distance(begin, pos), + module->GetUUID().GetAsString().c_str(), + module->GetArchitecture().GetArchitectureName(), + module_file_spec.GetPath().c_str()); } } } @@ -808,8 +797,9 @@ Status ModuleList::GetSharedModule(const ModuleSpec &module_spec, Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_MODULES)); if (log != nullptr) - log->Printf("module changed: %p, removing from global module list", - static_cast(module_sp.get())); + LLDB_LOGF(log, + "module changed: %p, removing from global module list", + static_cast(module_sp.get())); shared_module_list.Remove(module_sp); module_sp.reset(); diff --git a/lldb/source/Core/PluginManager.cpp b/lldb/source/Core/PluginManager.cpp index 24cadcd85bf5154..80b64fb832fa4b9 100644 --- a/lldb/source/Core/PluginManager.cpp +++ b/lldb/source/Core/PluginManager.cpp @@ -1341,10 +1341,10 @@ PluginManager::GetPlatformCreateCallbackForPluginName(ConstString name) { return nullptr; } -size_t PluginManager::AutoCompletePlatformName(llvm::StringRef name, - StringList &matches) { +void PluginManager::AutoCompletePlatformName(llvm::StringRef name, + CompletionRequest &request) { if (name.empty()) - return matches.GetSize(); + return; std::lock_guard guard(GetPlatformInstancesMutex()); PlatformInstances &instances = GetPlatformInstances(); @@ -1354,9 +1354,8 @@ size_t PluginManager::AutoCompletePlatformName(llvm::StringRef name, for (pos = instances.begin(); pos != end; ++pos) { llvm::StringRef plugin_name(pos->name.GetCString()); if (plugin_name.startswith(name_sref)) - matches.AppendString(plugin_name.data()); + request.AddCompletion(plugin_name.data()); } - return matches.GetSize(); } #pragma mark Process @@ -2084,12 +2083,11 @@ PluginManager::GetInstrumentationRuntimeCreateCallbackForPluginName( #pragma mark TypeSystem struct TypeSystemInstance { - TypeSystemInstance() : name(), description(), create_callback(nullptr) {} - ConstString name; std::string description; TypeSystemCreateInstance create_callback; - TypeSystemEnumerateSupportedLanguages enumerate_callback; + LanguageSet supported_languages_for_types; + LanguageSet supported_languages_for_expressions; }; typedef std::vector TypeSystemInstances; @@ -2104,11 +2102,11 @@ static TypeSystemInstances &GetTypeSystemInstances() { return g_instances; } -bool PluginManager::RegisterPlugin(ConstString name, - const char *description, - TypeSystemCreateInstance create_callback, - TypeSystemEnumerateSupportedLanguages - enumerate_supported_languages_callback) { +bool PluginManager::RegisterPlugin( + ConstString name, const char *description, + TypeSystemCreateInstance create_callback, + LanguageSet supported_languages_for_types, + LanguageSet supported_languages_for_expressions) { if (create_callback) { TypeSystemInstance instance; assert((bool)name); @@ -2116,7 +2114,8 @@ bool PluginManager::RegisterPlugin(ConstString name, if (description && description[0]) instance.description = description; instance.create_callback = create_callback; - instance.enumerate_callback = enumerate_supported_languages_callback; + instance.supported_languages_for_types = supported_languages_for_types; + instance.supported_languages_for_expressions = supported_languages_for_expressions; std::lock_guard guard(GetTypeSystemMutex()); GetTypeSystemInstances().push_back(instance); } @@ -2164,30 +2163,22 @@ PluginManager::GetTypeSystemCreateCallbackForPluginName( return nullptr; } -TypeSystemEnumerateSupportedLanguages -PluginManager::GetTypeSystemEnumerateSupportedLanguagesCallbackAtIndex( - uint32_t idx) { +LanguageSet PluginManager::GetAllTypeSystemSupportedLanguagesForTypes() { std::lock_guard guard(GetTypeSystemMutex()); + LanguageSet all; TypeSystemInstances &instances = GetTypeSystemInstances(); - if (idx < instances.size()) - return instances[idx].enumerate_callback; - return nullptr; + for (unsigned i = 0; i < instances.size(); ++i) + all.bitvector |= instances[i].supported_languages_for_types.bitvector; + return all; } -TypeSystemEnumerateSupportedLanguages -PluginManager::GetTypeSystemEnumerateSupportedLanguagesCallbackForPluginName( - ConstString name) { - if (name) { - std::lock_guard guard(GetTypeSystemMutex()); - TypeSystemInstances &instances = GetTypeSystemInstances(); - - TypeSystemInstances::iterator pos, end = instances.end(); - for (pos = instances.begin(); pos != end; ++pos) { - if (name == pos->name) - return pos->enumerate_callback; - } - } - return nullptr; +LanguageSet PluginManager::GetAllTypeSystemSupportedLanguagesForExpressions() { + std::lock_guard guard(GetTypeSystemMutex()); + LanguageSet all; + TypeSystemInstances &instances = GetTypeSystemInstances(); + for (unsigned i = 0; i < instances.size(); ++i) + all.bitvector |= instances[i].supported_languages_for_expressions.bitvector; + return all; } #pragma mark REPL @@ -2198,7 +2189,7 @@ struct REPLInstance { ConstString name; std::string description; REPLCreateInstance create_callback; - REPLEnumerateSupportedLanguages enumerate_languages_callback; + LanguageSet supported_languages; }; typedef std::vector REPLInstances; @@ -2213,10 +2204,9 @@ static REPLInstances &GetREPLInstances() { return g_instances; } -bool PluginManager::RegisterPlugin( - ConstString name, const char *description, - REPLCreateInstance create_callback, - REPLEnumerateSupportedLanguages enumerate_languages_callback) { +bool PluginManager::RegisterPlugin(ConstString name, const char *description, + REPLCreateInstance create_callback, + LanguageSet supported_languages) { if (create_callback) { REPLInstance instance; assert((bool)name); @@ -2224,7 +2214,7 @@ bool PluginManager::RegisterPlugin( if (description && description[0]) instance.description = description; instance.create_callback = create_callback; - instance.enumerate_languages_callback = enumerate_languages_callback; + instance.supported_languages = supported_languages; std::lock_guard guard(GetREPLMutex()); GetREPLInstances().push_back(instance); } @@ -2270,29 +2260,13 @@ PluginManager::GetREPLCreateCallbackForPluginName(ConstString name) { return nullptr; } -REPLEnumerateSupportedLanguages -PluginManager::GetREPLEnumerateSupportedLanguagesCallbackAtIndex(uint32_t idx) { +LanguageSet PluginManager::GetREPLAllTypeSystemSupportedLanguages() { std::lock_guard guard(GetREPLMutex()); + LanguageSet all; REPLInstances &instances = GetREPLInstances(); - if (idx < instances.size()) - return instances[idx].enumerate_languages_callback; - return nullptr; -} - -REPLEnumerateSupportedLanguages -PluginManager::GetREPLSystemEnumerateSupportedLanguagesCallbackForPluginName( - ConstString name) { - if (name) { - std::lock_guard guard(GetREPLMutex()); - REPLInstances &instances = GetREPLInstances(); - - REPLInstances::iterator pos, end = instances.end(); - for (pos = instances.begin(); pos != end; ++pos) { - if (name == pos->name) - return pos->enumerate_languages_callback; - } - } - return nullptr; + for (unsigned i = 0; i < instances.size(); ++i) + all.bitvector |= instances[i].supported_languages.bitvector; + return all; } #pragma mark PluginManager diff --git a/lldb/source/Core/SearchFilter.cpp b/lldb/source/Core/SearchFilter.cpp index 531fa078de292e4..22c8997ed46027b 100644 --- a/lldb/source/Core/SearchFilter.cpp +++ b/lldb/source/Core/SearchFilter.cpp @@ -13,7 +13,7 @@ #include "lldb/Core/ModuleList.h" #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/SymbolContext.h" -#include "lldb/Symbol/SymbolVendor.h" +#include "lldb/Symbol/SymbolFile.h" #include "lldb/Target/Target.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/Status.h" @@ -316,10 +316,10 @@ SearchFilter::DoCUIteration(const ModuleSP &module_sp, // First make sure this compile unit's functions are parsed // since CompUnit::ForeachFunction only iterates over already // parsed functions. - SymbolVendor *sym_vendor = module_sp->GetSymbolVendor(); - if (!sym_vendor) + SymbolFile *sym_file = module_sp->GetSymbolFile(); + if (!sym_file) continue; - if (!sym_vendor->ParseFunctions(*cu_sp)) + if (!sym_file->ParseFunctions(*cu_sp)) continue; // If we got any functions, use ForeachFunction to do the iteration. cu_sp->ForeachFunction([&](const FunctionSP &func_sp) { @@ -640,7 +640,7 @@ SearchFilterSP SearchFilterByModuleList::CreateFromStructuredData( "SFBM::CFSD: filter module item %zu not a string.", i); return nullptr; } - modules.Append(FileSpec(module)); + modules.EmplaceBack(module); } } @@ -703,7 +703,7 @@ lldb::SearchFilterSP SearchFilterByModuleListAndCU::CreateFromStructuredData( "SFBM::CFSD: filter module item %zu not a string.", i); return result_sp; } - modules.Append(FileSpec(module)); + modules.EmplaceBack(module); } } @@ -725,7 +725,7 @@ lldb::SearchFilterSP SearchFilterByModuleListAndCU::CreateFromStructuredData( "SFBM::CFSD: filter cu item %zu not a string.", i); return nullptr; } - cus.Append(FileSpec(cu)); + cus.EmplaceBack(cu); } return std::make_shared( diff --git a/lldb/source/Core/Section.cpp b/lldb/source/Core/Section.cpp index f30ddd2c18c37f9..de017ed37830a99 100644 --- a/lldb/source/Core/Section.cpp +++ b/lldb/source/Core/Section.cpp @@ -269,7 +269,7 @@ bool Section::ResolveContainedAddress(addr_t offset, Address &so_addr, bool Section::ContainsFileAddress(addr_t vm_addr) const { const addr_t file_addr = GetFileAddress(); - if (file_addr != LLDB_INVALID_ADDRESS) { + if (file_addr != LLDB_INVALID_ADDRESS && !IsThreadSpecific()) { if (file_addr <= vm_addr) { const addr_t offset = (vm_addr - file_addr) * m_target_byte_size; return offset < GetByteSize(); diff --git a/lldb/source/Core/Value.cpp b/lldb/source/Core/Value.cpp index fdb4adb5f431480..3124b9338b365ad 100644 --- a/lldb/source/Core/Value.cpp +++ b/lldb/source/Core/Value.cpp @@ -314,7 +314,7 @@ bool Value::GetData(DataExtractor &data) { } Status Value::GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data, - uint32_t data_offset, Module *module) { + Module *module) { data.Clear(); Status error; @@ -520,13 +520,12 @@ Status Value::GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data, // Make sure we have enough room within "data", and if we don't make // something large enough that does - if (!data.ValidOffsetForDataOfSize(data_offset, byte_size)) { - auto data_sp = - std::make_shared(data_offset + byte_size, '\0'); + if (!data.ValidOffsetForDataOfSize(0, byte_size)) { + auto data_sp = std::make_shared(byte_size, '\0'); data.SetData(data_sp); } - uint8_t *dst = const_cast(data.PeekData(data_offset, byte_size)); + uint8_t *dst = const_cast(data.PeekData(0, byte_size)); if (dst != nullptr) { if (address_type == eAddressTypeHost) { // The address is an address in this process, so just copy it. @@ -597,7 +596,7 @@ Scalar &Value::ResolveValue(ExecutionContext *exe_ctx) { { DataExtractor data; lldb::addr_t addr = m_value.ULongLong(LLDB_INVALID_ADDRESS); - Status error(GetValueAsData(exe_ctx, data, 0, nullptr)); + Status error(GetValueAsData(exe_ctx, data, nullptr)); if (error.Success()) { Scalar scalar; if (compiler_type.GetValueAsScalar(data, 0, data.GetByteSize(), diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index 409f3d6b13fd089..74176eeace3a29e 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -35,7 +35,6 @@ #include "lldb/Target/ExecutionContext.h" #include "lldb/Target/Language.h" #include "lldb/Target/LanguageRuntime.h" -#include "lldb/Target/ObjCLanguageRuntime.h" #include "lldb/Target/Process.h" #include "lldb/Target/StackFrame.h" #include "lldb/Target/Target.h" @@ -74,7 +73,6 @@ class SymbolContextScope; using namespace lldb; using namespace lldb_private; -using namespace lldb_utility; static user_id_t g_value_obj_uid = 0; @@ -227,12 +225,12 @@ bool ValueObject::UpdateValueIfNeeded(bool update_format) { bool ValueObject::UpdateFormatsIfNeeded() { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); - if (log) - log->Printf("[%s %p] checking for FormatManager revisions. ValueObject " - "rev: %d - Global rev: %d", - GetName().GetCString(), static_cast(this), - m_last_format_mgr_revision, - DataVisualization::GetCurrentRevision()); + LLDB_LOGF(log, + "[%s %p] checking for FormatManager revisions. ValueObject " + "rev: %d - Global rev: %d", + GetName().GetCString(), static_cast(this), + m_last_format_mgr_revision, + DataVisualization::GetCurrentRevision()); bool any_change = false; @@ -280,51 +278,21 @@ CompilerType ValueObject::MaybeCalculateCompleteType() { return compiler_type; } - CompilerType class_type; - bool is_pointer_type = false; - - if (ClangASTContext::IsObjCObjectPointerType(compiler_type, &class_type)) { - is_pointer_type = true; - } else if (ClangASTContext::IsObjCObjectOrInterfaceType(compiler_type)) { - class_type = compiler_type; - } else { - return compiler_type; - } - m_did_calculate_complete_objc_class_type = true; - if (class_type) { - ConstString class_name(class_type.GetConstTypeName()); - - if (class_name) { - ProcessSP process_sp( - GetUpdatePoint().GetExecutionContextRef().GetProcessSP()); - - if (process_sp) { - ObjCLanguageRuntime *objc_language_runtime( - ObjCLanguageRuntime::Get(*process_sp)); - - if (objc_language_runtime) { - TypeSP complete_objc_class_type_sp = - objc_language_runtime->LookupInCompleteClassCache(class_name); + ProcessSP process_sp( + GetUpdatePoint().GetExecutionContextRef().GetProcessSP()); - if (complete_objc_class_type_sp) { - CompilerType complete_class( - complete_objc_class_type_sp->GetFullCompilerType()); - - if (complete_class.GetCompleteType()) { - if (is_pointer_type) { - m_override_type = complete_class.GetPointerType(); - } else { - m_override_type = complete_class; - } + if (!process_sp) + return compiler_type; - if (m_override_type.IsValid()) - return m_override_type; - } - } - } - } + if (auto *runtime = + process_sp->GetLanguageRuntime(GetObjectRuntimeLanguage())) { + if (llvm::Optional complete_type = + runtime->GetRuntimeType(compiler_type)) { + m_override_type = complete_type.getValue(); + if (m_override_type.IsValid()) + return m_override_type; } } return compiler_type; @@ -842,7 +810,7 @@ size_t ValueObject::GetPointeeData(DataExtractor &data, uint32_t item_idx, uint64_t ValueObject::GetData(DataExtractor &data, Status &error) { UpdateValueIfNeeded(false); ExecutionContext exe_ctx(GetExecutionContextRef()); - error = m_value.GetValueAsData(&exe_ctx, data, 0, GetModule().get()); + error = m_value.GetValueAsData(&exe_ctx, data, GetModule().get()); if (error.Fail()) { if (m_data.GetByteSize()) { data = m_data; @@ -1695,18 +1663,19 @@ bool ValueObject::IsPossibleDynamicType() { bool ValueObject::IsRuntimeSupportValue() { Process *process(GetProcessSP().get()); - if (process) { - LanguageRuntime *runtime = - process->GetLanguageRuntime(GetObjectRuntimeLanguage()); - if (!runtime) - runtime = ObjCLanguageRuntime::Get(*process); - if (runtime) - return runtime->IsRuntimeSupportValue(*this); - // If there is no language runtime, trust the compiler to mark all - // runtime support variables as artificial. - return GetVariable() && GetVariable()->IsArtificial(); - } - return false; + if (!process) + return false; + + // We trust the the compiler did the right thing and marked runtime support + // values as artificial. + if (!GetVariable() || !GetVariable()->IsArtificial()) + return false; + + if (auto *runtime = process->GetLanguageRuntime(GetVariable()->GetLanguage())) + if (runtime->IsWhitelistedRuntimeValue(GetName())) + return false; + + return true; } bool ValueObject::IsNilReference() { @@ -2747,9 +2716,9 @@ ValueObjectSP ValueObject::CreateConstantValue(ConstString name) { if (IsBitfield()) { Value v(Scalar(GetValueAsUnsigned(UINT64_MAX))); - m_error = v.GetValueAsData(&exe_ctx, data, 0, GetModule().get()); + m_error = v.GetValueAsData(&exe_ctx, data, GetModule().get()); } else - m_error = m_value.GetValueAsData(&exe_ctx, data, 0, GetModule().get()); + m_error = m_value.GetValueAsData(&exe_ctx, data, GetModule().get()); valobj_sp = ValueObjectConstResult::Create( exe_ctx.GetBestExecutionContextScope(), GetCompilerType(), name, data, @@ -3331,32 +3300,32 @@ lldb::ValueObjectSP ValueObjectManager::GetSP() { lldb::ProcessSP process_sp = GetProcessSP(); if (!process_sp) return lldb::ValueObjectSP(); - + const uint32_t current_stop_id = process_sp->GetLastNaturalStopID(); if (current_stop_id == m_stop_id) return m_user_valobj_sp; - + m_stop_id = current_stop_id; - + if (!m_root_valobj_sp) { m_user_valobj_sp.reset(); return m_root_valobj_sp; } - + m_user_valobj_sp = m_root_valobj_sp; - + if (m_use_dynamic != lldb::eNoDynamicValues) { lldb::ValueObjectSP dynamic_sp = m_user_valobj_sp->GetDynamicValue(m_use_dynamic); if (dynamic_sp) m_user_valobj_sp = dynamic_sp; } - + if (m_use_synthetic) { lldb::ValueObjectSP synthetic_sp = m_user_valobj_sp->GetSyntheticValue(m_use_synthetic); if (synthetic_sp) m_user_valobj_sp = synthetic_sp; } - + return m_user_valobj_sp; } diff --git a/lldb/source/Core/ValueObjectCast.cpp b/lldb/source/Core/ValueObjectCast.cpp index 6ccda8c32915e3a..3a74b6a7fe188b3 100644 --- a/lldb/source/Core/ValueObjectCast.cpp +++ b/lldb/source/Core/ValueObjectCast.cpp @@ -79,7 +79,7 @@ bool ValueObjectCast::UpdateValue() { m_value.GetScalar() != old_value.GetScalar()); } ExecutionContext exe_ctx(GetExecutionContextRef()); - m_error = m_value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_error = m_value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); SetValueDidChange(m_parent->GetValueDidChange()); return true; } diff --git a/lldb/source/Core/ValueObjectChild.cpp b/lldb/source/Core/ValueObjectChild.cpp index 01f2e20dd0bcd01..6b4ada154d68b2a 100644 --- a/lldb/source/Core/ValueObjectChild.cpp +++ b/lldb/source/Core/ValueObjectChild.cpp @@ -175,6 +175,30 @@ bool ValueObjectChild::UpdateValue() { // Set this object's scalar value to the address of its value by // adding its byte offset to the parent address m_value.GetScalar() += GetByteOffset(); + + // If a bitfield doesn't fit into the child_byte_size'd + // window at child_byte_offset, move the window forward + // until it fits. The problem here is that Value has no + // notion of bitfields and thus the Value's DataExtractor + // is sized like the bitfields CompilerType; a sequence of + // bitfields, however, can be larger than their underlying + // type. + if (m_bitfield_bit_offset) { + const bool thread_and_frame_only_if_stopped = true; + ExecutionContext exe_ctx(GetExecutionContextRef().Lock( + thread_and_frame_only_if_stopped)); + if (auto type_bit_size = GetCompilerType().GetBitSize( + exe_ctx.GetBestExecutionContextScope())) { + uint64_t bitfield_end = + m_bitfield_bit_size + m_bitfield_bit_offset; + if (bitfield_end > *type_bit_size) { + uint64_t overhang_bytes = + (bitfield_end - *type_bit_size + 7) / 8; + m_value.GetScalar() += overhang_bytes; + m_bitfield_bit_offset -= overhang_bytes * 8; + } + } + } } } break; @@ -203,7 +227,7 @@ bool ValueObjectChild::UpdateValue() { if (GetCompilerType().GetTypeInfo() & lldb::eTypeHasValue) { Value &value = is_instance_ptr_base ? m_parent->GetValue() : m_value; m_error = - value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); } else { m_error.Clear(); // No value so nothing to read... } diff --git a/lldb/source/Core/ValueObjectConstResult.cpp b/lldb/source/Core/ValueObjectConstResult.cpp index a1b2cac96874f5f..71620698da2a88b 100644 --- a/lldb/source/Core/ValueObjectConstResult.cpp +++ b/lldb/source/Core/ValueObjectConstResult.cpp @@ -182,7 +182,7 @@ ValueObjectConstResult::ValueObjectConstResult(ExecutionContextScope *exe_scope, m_name = name; ExecutionContext exe_ctx; exe_scope->CalculateExecutionContext(exe_ctx); - m_error = m_value.GetValueAsData(&exe_ctx, m_data, 0, module); + m_error = m_value.GetValueAsData(&exe_ctx, m_data, module); } ValueObjectConstResult::~ValueObjectConstResult() {} diff --git a/lldb/source/Core/ValueObjectDynamicValue.cpp b/lldb/source/Core/ValueObjectDynamicValue.cpp index 90b46d1f170de7a..59037e2b6b25bca 100644 --- a/lldb/source/Core/ValueObjectDynamicValue.cpp +++ b/lldb/source/Core/ValueObjectDynamicValue.cpp @@ -199,7 +199,7 @@ bool ValueObjectDynamicValue::UpdateValue() { ClearDynamicTypeInformation(); m_dynamic_type_info.Clear(); m_value = m_parent->GetValue(); - m_error = m_value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_error = m_value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); return m_error.Success(); } @@ -243,13 +243,13 @@ bool ValueObjectDynamicValue::UpdateValue() { m_value.SetValueType(value_type); if (has_changed_type && log) - log->Printf("[%s %p] has a new dynamic type %s", GetName().GetCString(), - static_cast(this), GetTypeName().GetCString()); + LLDB_LOGF(log, "[%s %p] has a new dynamic type %s", GetName().GetCString(), + static_cast(this), GetTypeName().GetCString()); if (m_address.IsValid() && m_dynamic_type_info) { // The variable value is in the Scalar value inside the m_value. We can // point our m_data right to it. - m_error = m_value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_error = m_value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); if (m_error.Success()) { if (!CanProvideValue()) { // this value object represents an aggregate type whose children have diff --git a/lldb/source/Core/ValueObjectMemory.cpp b/lldb/source/Core/ValueObjectMemory.cpp index 95d4330ee0c6b1e..1a316bf3e7b015c 100644 --- a/lldb/source/Core/ValueObjectMemory.cpp +++ b/lldb/source/Core/ValueObjectMemory.cpp @@ -168,7 +168,7 @@ bool ValueObjectMemory::UpdateValue() { case Value::eValueTypeScalar: // The variable value is in the Scalar value inside the m_value. We can // point our m_data right to it. - m_error = m_value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_error = m_value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); break; case Value::eValueTypeFileAddress: @@ -209,7 +209,7 @@ bool ValueObjectMemory::UpdateValue() { value.SetCompilerType(m_compiler_type); } - m_error = value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_error = value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); } break; } diff --git a/lldb/source/Core/ValueObjectRegister.cpp b/lldb/source/Core/ValueObjectRegister.cpp index 75a254fbbc21d85..7e97df6d2a34278 100644 --- a/lldb/source/Core/ValueObjectRegister.cpp +++ b/lldb/source/Core/ValueObjectRegister.cpp @@ -18,6 +18,7 @@ #include "lldb/Target/StackFrame.h" #include "lldb/Target/Target.h" #include "lldb/Utility/DataExtractor.h" +#include "lldb/Utility/Log.h" #include "lldb/Utility/Scalar.h" #include "lldb/Utility/Status.h" #include "lldb/Utility/Stream.h" @@ -256,15 +257,19 @@ ValueObjectRegister::~ValueObjectRegister() {} CompilerType ValueObjectRegister::GetCompilerTypeImpl() { if (!m_compiler_type.IsValid()) { ExecutionContext exe_ctx(GetExecutionContextRef()); - Target *target = exe_ctx.GetTargetPtr(); - if (target) { - Module *exe_module = target->GetExecutableModulePointer(); - if (exe_module) { - TypeSystem *type_system = + if (auto *target = exe_ctx.GetTargetPtr()) { + if (auto *exe_module = target->GetExecutableModulePointer()) { + auto type_system_or_err = exe_module->GetTypeSystemForLanguage(eLanguageTypeC); - if (type_system) - m_compiler_type = type_system->GetBuiltinTypeForEncodingAndBitSize( - m_reg_info.encoding, m_reg_info.byte_size * 8); + if (auto err = type_system_or_err.takeError()) { + LLDB_LOG_ERROR( + lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_TYPES), + std::move(err), "Unable to get CompilerType from TypeSystem"); + } else { + m_compiler_type = + type_system_or_err->GetBuiltinTypeForEncodingAndBitSize( + m_reg_info.encoding, m_reg_info.byte_size * 8); + } } } } diff --git a/lldb/source/Core/ValueObjectSyntheticFilter.cpp b/lldb/source/Core/ValueObjectSyntheticFilter.cpp index 40047323575927c..450deddae73404c 100644 --- a/lldb/source/Core/ValueObjectSyntheticFilter.cpp +++ b/lldb/source/Core/ValueObjectSyntheticFilter.cpp @@ -87,20 +87,18 @@ size_t ValueObjectSynthetic::CalculateNumChildren(uint32_t max) { if (max < UINT32_MAX) { size_t num_children = m_synth_filter_up->CalculateNumChildren(max); - if (log) - log->Printf("[ValueObjectSynthetic::CalculateNumChildren] for VO of name " - "%s and type %s, the filter returned %zu child values", - GetName().AsCString(), GetTypeName().AsCString(), - num_children); + LLDB_LOGF(log, + "[ValueObjectSynthetic::CalculateNumChildren] for VO of name " + "%s and type %s, the filter returned %zu child values", + GetName().AsCString(), GetTypeName().AsCString(), num_children); return num_children; } else { size_t num_children = (m_synthetic_children_count = m_synth_filter_up->CalculateNumChildren(max)); - if (log) - log->Printf("[ValueObjectSynthetic::CalculateNumChildren] for VO of name " - "%s and type %s, the filter returned %zu child values", - GetName().AsCString(), GetTypeName().AsCString(), - num_children); + LLDB_LOGF(log, + "[ValueObjectSynthetic::CalculateNumChildren] for VO of name " + "%s and type %s, the filter returned %zu child values", + GetName().AsCString(), GetTypeName().AsCString(), num_children); return num_children; } } @@ -163,21 +161,21 @@ bool ValueObjectSynthetic::UpdateValue() { // ConstString new_parent_type_name = m_parent->GetTypeName(); if (new_parent_type_name != m_parent_type_name) { - if (log) - log->Printf("[ValueObjectSynthetic::UpdateValue] name=%s, type changed " - "from %s to %s, recomputing synthetic filter", - GetName().AsCString(), m_parent_type_name.AsCString(), - new_parent_type_name.AsCString()); + LLDB_LOGF(log, + "[ValueObjectSynthetic::UpdateValue] name=%s, type changed " + "from %s to %s, recomputing synthetic filter", + GetName().AsCString(), m_parent_type_name.AsCString(), + new_parent_type_name.AsCString()); m_parent_type_name = new_parent_type_name; CreateSynthFilter(); } // let our backend do its update if (!m_synth_filter_up->Update()) { - if (log) - log->Printf("[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " - "filter said caches are stale - clearing", - GetName().AsCString()); + LLDB_LOGF(log, + "[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " + "filter said caches are stale - clearing", + GetName().AsCString()); // filter said that cached values are stale m_children_byindex.Clear(); m_name_toindex.Clear(); @@ -190,10 +188,10 @@ bool ValueObjectSynthetic::UpdateValue() { m_synthetic_children_count = UINT32_MAX; m_might_have_children = eLazyBoolCalculate; } else { - if (log) - log->Printf("[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " - "filter said caches are still valid", - GetName().AsCString()); + LLDB_LOGF(log, + "[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " + "filter said caches are still valid", + GetName().AsCString()); } m_provides_value = eLazyBoolCalculate; @@ -201,18 +199,18 @@ bool ValueObjectSynthetic::UpdateValue() { lldb::ValueObjectSP synth_val(m_synth_filter_up->GetSyntheticValue()); if (synth_val && synth_val->CanProvideValue()) { - if (log) - log->Printf("[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " - "filter said it can provide a value", - GetName().AsCString()); + LLDB_LOGF(log, + "[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " + "filter said it can provide a value", + GetName().AsCString()); m_provides_value = eLazyBoolYes; CopyValueData(synth_val.get()); } else { - if (log) - log->Printf("[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " - "filter said it will not provide a value", - GetName().AsCString()); + LLDB_LOGF(log, + "[ValueObjectSynthetic::UpdateValue] name=%s, synthetic " + "filter said it will not provide a value", + GetName().AsCString()); m_provides_value = eLazyBoolNo; CopyValueData(m_parent); @@ -226,32 +224,32 @@ lldb::ValueObjectSP ValueObjectSynthetic::GetChildAtIndex(size_t idx, bool can_create) { Log *log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS); - if (log) - log->Printf("[ValueObjectSynthetic::GetChildAtIndex] name=%s, retrieving " - "child at index %zu", - GetName().AsCString(), idx); + LLDB_LOGF(log, + "[ValueObjectSynthetic::GetChildAtIndex] name=%s, retrieving " + "child at index %zu", + GetName().AsCString(), idx); UpdateValueIfNeeded(); ValueObject *valobj; if (!m_children_byindex.GetValueForKey(idx, valobj)) { if (can_create && m_synth_filter_up != nullptr) { - if (log) - log->Printf("[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at " - "index %zu not cached and will be created", - GetName().AsCString(), idx); + LLDB_LOGF(log, + "[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at " + "index %zu not cached and will be created", + GetName().AsCString(), idx); lldb::ValueObjectSP synth_guy = m_synth_filter_up->GetChildAtIndex(idx); - if (log) - log->Printf( - "[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at index " - "%zu created as %p (is " - "synthetic: %s)", - GetName().AsCString(), idx, static_cast(synth_guy.get()), - synth_guy.get() - ? (synth_guy->IsSyntheticChildrenGenerated() ? "yes" : "no") - : "no"); + LLDB_LOGF( + log, + "[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at index " + "%zu created as %p (is " + "synthetic: %s)", + GetName().AsCString(), idx, static_cast(synth_guy.get()), + synth_guy.get() + ? (synth_guy->IsSyntheticChildrenGenerated() ? "yes" : "no") + : "no"); if (!synth_guy) return synth_guy; @@ -263,20 +261,20 @@ lldb::ValueObjectSP ValueObjectSynthetic::GetChildAtIndex(size_t idx, GetPreferredDisplayLanguage()); return synth_guy; } else { - if (log) - log->Printf("[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at " - "index %zu not cached and cannot " - "be created (can_create = %s, synth_filter = %p)", - GetName().AsCString(), idx, can_create ? "yes" : "no", - static_cast(m_synth_filter_up.get())); + LLDB_LOGF(log, + "[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at " + "index %zu not cached and cannot " + "be created (can_create = %s, synth_filter = %p)", + GetName().AsCString(), idx, can_create ? "yes" : "no", + static_cast(m_synth_filter_up.get())); return lldb::ValueObjectSP(); } } else { - if (log) - log->Printf("[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at " - "index %zu cached as %p", - GetName().AsCString(), idx, static_cast(valobj)); + LLDB_LOGF(log, + "[ValueObjectSynthetic::GetChildAtIndex] name=%s, child at " + "index %zu cached as %p", + GetName().AsCString(), idx, static_cast(valobj)); return valobj->GetSP(); } @@ -322,7 +320,7 @@ lldb::ValueObjectSP ValueObjectSynthetic::GetNonSyntheticValue() { void ValueObjectSynthetic::CopyValueData(ValueObject *source) { m_value = (source->UpdateValueIfNeeded(), source->GetValue()); ExecutionContext exe_ctx(GetExecutionContextRef()); - m_error = m_value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_error = m_value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); } bool ValueObjectSynthetic::CanProvideValue() { diff --git a/lldb/source/Core/ValueObjectVariable.cpp b/lldb/source/Core/ValueObjectVariable.cpp index 5aee82493b28fd1..33f9d5410843109 100644 --- a/lldb/source/Core/ValueObjectVariable.cpp +++ b/lldb/source/Core/ValueObjectVariable.cpp @@ -221,7 +221,7 @@ bool ValueObjectVariable::UpdateValue() { // The variable value is in the Scalar value inside the m_value. We can // point our m_data right to it. m_error = - m_value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + m_value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); break; case Value::eValueTypeFileAddress: @@ -250,7 +250,7 @@ bool ValueObjectVariable::UpdateValue() { Value value(m_value); value.SetContext(Value::eContextTypeVariable, variable); m_error = - value.GetValueAsData(&exe_ctx, m_data, 0, GetModule().get()); + value.GetValueAsData(&exe_ctx, m_data, GetModule().get()); SetValueDidChange(value_type != old_value.GetValueType() || m_value.GetScalar() != old_value.GetScalar()); diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index dd2808a7cf7c956..1eac372d79ec839 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -30,7 +30,7 @@ struct FormatInfo { // current format }; -static FormatInfo g_format_infos[] = { +static constexpr FormatInfo g_format_infos[] = { {eFormatDefault, '\0', "default"}, {eFormatBoolean, 'B', "boolean"}, {eFormatBinary, 'b', "binary"}, @@ -69,7 +69,13 @@ static FormatInfo g_format_infos[] = { {eFormatAddressInfo, 'A', "address"}, {eFormatHexFloat, '\0', "hex float"}, {eFormatInstruction, 'i', "instruction"}, - {eFormatVoid, 'v', "void"}}; + {eFormatVoid, 'v', "void"}, + {eFormatUnicode8, 'u', "unicode8"}, +}; + +static_assert((sizeof(g_format_infos) / sizeof(g_format_infos[0])) == + kNumFormats, + "All formats must have a corresponding info entry."); static uint32_t g_num_format_infos = llvm::array_lengthof(g_format_infos); @@ -630,30 +636,29 @@ FormatManager::GetFormat(ValueObject &valobj, TypeFormatImplSP retval; Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); if (match_data.GetTypeForCache()) { - if (log) - log->Printf( - "\n\n[FormatManager::GetFormat] Looking into cache for type %s", - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, + "\n\n[FormatManager::GetFormat] Looking into cache for type %s", + match_data.GetTypeForCache().AsCString("")); if (m_format_cache.GetFormat(match_data.GetTypeForCache(), retval)) { if (log) { - log->Printf( - "[FormatManager::GetFormat] Cache search success. Returning."); + LLDB_LOGF( + log, "[FormatManager::GetFormat] Cache search success. Returning."); LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); } return retval; } - if (log) - log->Printf( - "[FormatManager::GetFormat] Cache search failed. Going normal route"); + LLDB_LOGF( + log, + "[FormatManager::GetFormat] Cache search failed. Going normal route"); } retval = m_categories_map.GetFormat(match_data); if (!retval) { - if (log) - log->Printf("[FormatManager::GetFormat] Search failed. Giving language a " - "chance."); + LLDB_LOGF(log, + "[FormatManager::GetFormat] Search failed. Giving language a " + "chance."); for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) { if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) { if (lang_category->Get(match_data, retval)) @@ -661,24 +666,22 @@ FormatManager::GetFormat(ValueObject &valobj, } } if (retval) { - if (log) - log->Printf( - "[FormatManager::GetFormat] Language search success. Returning."); + LLDB_LOGF( + log, + "[FormatManager::GetFormat] Language search success. Returning."); return retval; } } if (!retval) { - if (log) - log->Printf("[FormatManager::GetFormat] Search failed. Giving hardcoded " - "a chance."); + LLDB_LOGF(log, "[FormatManager::GetFormat] Search failed. Giving hardcoded " + "a chance."); retval = GetHardcodedFormat(match_data); } if (match_data.GetTypeForCache() && (!retval || !retval->NonCacheable())) { - if (log) - log->Printf("[FormatManager::GetFormat] Caching %p for type %s", - static_cast(retval.get()), - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, "[FormatManager::GetFormat] Caching %p for type %s", + static_cast(retval.get()), + match_data.GetTypeForCache().AsCString("")); m_format_cache.SetFormat(match_data.GetTypeForCache(), retval); } LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", @@ -708,30 +711,29 @@ FormatManager::GetSummaryFormat(ValueObject &valobj, TypeSummaryImplSP retval; Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); if (match_data.GetTypeForCache()) { - if (log) - log->Printf("\n\n[FormatManager::GetSummaryFormat] Looking into cache " - "for type %s", - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, + "\n\n[FormatManager::GetSummaryFormat] Looking into cache " + "for type %s", + match_data.GetTypeForCache().AsCString("")); if (m_format_cache.GetSummary(match_data.GetTypeForCache(), retval)) { if (log) { - log->Printf("[FormatManager::GetSummaryFormat] Cache search success. " - "Returning."); + LLDB_LOGF(log, + "[FormatManager::GetSummaryFormat] Cache search success. " + "Returning."); LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); } return retval; } - if (log) - log->Printf("[FormatManager::GetSummaryFormat] Cache search failed. " - "Going normal route"); + LLDB_LOGF(log, "[FormatManager::GetSummaryFormat] Cache search failed. " + "Going normal route"); } retval = m_categories_map.GetSummaryFormat(match_data); if (!retval) { - if (log) - log->Printf("[FormatManager::GetSummaryFormat] Search failed. Giving " - "language a chance."); + LLDB_LOGF(log, "[FormatManager::GetSummaryFormat] Search failed. Giving " + "language a chance."); for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) { if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) { if (lang_category->Get(match_data, retval)) @@ -739,24 +741,21 @@ FormatManager::GetSummaryFormat(ValueObject &valobj, } } if (retval) { - if (log) - log->Printf("[FormatManager::GetSummaryFormat] Language search " - "success. Returning."); + LLDB_LOGF(log, "[FormatManager::GetSummaryFormat] Language search " + "success. Returning."); return retval; } } if (!retval) { - if (log) - log->Printf("[FormatManager::GetSummaryFormat] Search failed. Giving " - "hardcoded a chance."); + LLDB_LOGF(log, "[FormatManager::GetSummaryFormat] Search failed. Giving " + "hardcoded a chance."); retval = GetHardcodedSummaryFormat(match_data); } if (match_data.GetTypeForCache() && (!retval || !retval->NonCacheable())) { - if (log) - log->Printf("[FormatManager::GetSummaryFormat] Caching %p for type %s", - static_cast(retval.get()), - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, "[FormatManager::GetSummaryFormat] Caching %p for type %s", + static_cast(retval.get()), + match_data.GetTypeForCache().AsCString("")); m_format_cache.SetSummary(match_data.GetTypeForCache(), retval); } LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", @@ -786,30 +785,29 @@ FormatManager::GetSyntheticChildren(ValueObject &valobj, SyntheticChildrenSP retval; Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); if (match_data.GetTypeForCache()) { - if (log) - log->Printf("\n\n[FormatManager::GetSyntheticChildren] Looking into " - "cache for type %s", - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, + "\n\n[FormatManager::GetSyntheticChildren] Looking into " + "cache for type %s", + match_data.GetTypeForCache().AsCString("")); if (m_format_cache.GetSynthetic(match_data.GetTypeForCache(), retval)) { if (log) { - log->Printf("[FormatManager::GetSyntheticChildren] Cache search " - "success. Returning."); + LLDB_LOGF(log, "[FormatManager::GetSyntheticChildren] Cache search " + "success. Returning."); LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", m_format_cache.GetCacheHits(), m_format_cache.GetCacheMisses()); } return retval; } - if (log) - log->Printf("[FormatManager::GetSyntheticChildren] Cache search failed. " - "Going normal route"); + LLDB_LOGF(log, "[FormatManager::GetSyntheticChildren] Cache search failed. " + "Going normal route"); } retval = m_categories_map.GetSyntheticChildren(match_data); if (!retval) { - if (log) - log->Printf("[FormatManager::GetSyntheticChildren] Search failed. Giving " - "language a chance."); + LLDB_LOGF(log, + "[FormatManager::GetSyntheticChildren] Search failed. Giving " + "language a chance."); for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) { if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) { if (lang_category->Get(match_data, retval)) @@ -817,25 +815,23 @@ FormatManager::GetSyntheticChildren(ValueObject &valobj, } } if (retval) { - if (log) - log->Printf("[FormatManager::GetSyntheticChildren] Language search " - "success. Returning."); + LLDB_LOGF(log, "[FormatManager::GetSyntheticChildren] Language search " + "success. Returning."); return retval; } } if (!retval) { - if (log) - log->Printf("[FormatManager::GetSyntheticChildren] Search failed. Giving " - "hardcoded a chance."); + LLDB_LOGF(log, + "[FormatManager::GetSyntheticChildren] Search failed. Giving " + "hardcoded a chance."); retval = GetHardcodedSyntheticChildren(match_data); } if (match_data.GetTypeForCache() && (!retval || !retval->NonCacheable())) { - if (log) - log->Printf( - "[FormatManager::GetSyntheticChildren] Caching %p for type %s", - static_cast(retval.get()), - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, + "[FormatManager::GetSyntheticChildren] Caching %p for type %s", + static_cast(retval.get()), + match_data.GetTypeForCache().AsCString("")); m_format_cache.SetSynthetic(match_data.GetTypeForCache(), retval); } LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", @@ -851,13 +847,13 @@ FormatManager::GetValidator(ValueObject &valobj, TypeValidatorImplSP retval; Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); if (match_data.GetTypeForCache()) { - if (log) - log->Printf( - "\n\n[FormatManager::GetValidator] Looking into cache for type %s", - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF( + log, "\n\n[FormatManager::GetValidator] Looking into cache for type %s", + match_data.GetTypeForCache().AsCString("")); if (m_format_cache.GetValidator(match_data.GetTypeForCache(), retval)) { if (log) { - log->Printf( + LLDB_LOGF( + log, "[FormatManager::GetValidator] Cache search success. Returning."); LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", m_format_cache.GetCacheHits(), @@ -865,16 +861,14 @@ FormatManager::GetValidator(ValueObject &valobj, } return retval; } - if (log) - log->Printf("[FormatManager::GetValidator] Cache search failed. Going " - "normal route"); + LLDB_LOGF(log, "[FormatManager::GetValidator] Cache search failed. Going " + "normal route"); } retval = m_categories_map.GetValidator(match_data); if (!retval) { - if (log) - log->Printf("[FormatManager::GetValidator] Search failed. Giving " - "language a chance."); + LLDB_LOGF(log, "[FormatManager::GetValidator] Search failed. Giving " + "language a chance."); for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) { if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) { if (lang_category->Get(match_data, retval)) @@ -882,24 +876,21 @@ FormatManager::GetValidator(ValueObject &valobj, } } if (retval) { - if (log) - log->Printf("[FormatManager::GetValidator] Language search success. " - "Returning."); + LLDB_LOGF(log, "[FormatManager::GetValidator] Language search success. " + "Returning."); return retval; } } if (!retval) { - if (log) - log->Printf("[FormatManager::GetValidator] Search failed. Giving " - "hardcoded a chance."); + LLDB_LOGF(log, "[FormatManager::GetValidator] Search failed. Giving " + "hardcoded a chance."); retval = GetHardcodedValidator(match_data); } if (match_data.GetTypeForCache() && (!retval || !retval->NonCacheable())) { - if (log) - log->Printf("[FormatManager::GetValidator] Caching %p for type %s", - static_cast(retval.get()), - match_data.GetTypeForCache().AsCString("")); + LLDB_LOGF(log, "[FormatManager::GetValidator] Caching %p for type %s", + static_cast(retval.get()), + match_data.GetTypeForCache().AsCString("")); m_format_cache.SetValidator(match_data.GetTypeForCache(), retval); } LLDB_LOGV(log, "Cache hits: {0} - Cache Misses: {1}", @@ -961,10 +952,7 @@ void FormatManager::LoadSystemFormatters() { lldb::TypeSummaryImplSP string_array_format( new StringSummaryFormat(string_array_flags, "${var%s}")); - lldb::RegularExpressionSP any_size_char_arr( - new RegularExpression(llvm::StringRef("char \\[[0-9]+\\]"))); - lldb::RegularExpressionSP any_size_wchar_arr( - new RegularExpression(llvm::StringRef("wchar_t \\[[0-9]+\\]"))); + RegularExpression any_size_char_arr(llvm::StringRef("char \\[[0-9]+\\]")); TypeCategoryImpl::SharedPointer sys_category_sp = GetCategory(m_system_category_name); @@ -973,8 +961,8 @@ void FormatManager::LoadSystemFormatters() { string_format); sys_category_sp->GetTypeSummariesContainer()->Add( ConstString("unsigned char *"), string_format); - sys_category_sp->GetRegexTypeSummariesContainer()->Add(any_size_char_arr, - string_array_format); + sys_category_sp->GetRegexTypeSummariesContainer()->Add( + std::move(any_size_char_arr), string_array_format); lldb::TypeSummaryImplSP ostype_summary( new StringSummaryFormat(TypeSummaryImpl::Flags() diff --git a/lldb/source/DataFormatters/FormattersHelpers.cpp b/lldb/source/DataFormatters/FormattersHelpers.cpp index 8f007df03faa4c7..b2a5a17595c8fbe 100644 --- a/lldb/source/DataFormatters/FormattersHelpers.cpp +++ b/lldb/source/DataFormatters/FormattersHelpers.cpp @@ -29,10 +29,10 @@ void lldb_private::formatters::AddFormat( if (regex) category_sp->GetRegexTypeFormatsContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - format_sp); + RegularExpression(type_name.GetStringRef()), format_sp); else - category_sp->GetTypeFormatsContainer()->Add(type_name, format_sp); + category_sp->GetTypeFormatsContainer()->Add(std::move(type_name), + format_sp); } void lldb_private::formatters::AddSummary( @@ -40,10 +40,10 @@ void lldb_private::formatters::AddSummary( ConstString type_name, bool regex) { if (regex) category_sp->GetRegexTypeSummariesContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - summary_sp); + RegularExpression(type_name.GetStringRef()), summary_sp); else - category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); + category_sp->GetTypeSummariesContainer()->Add(std::move(type_name), + summary_sp); } void lldb_private::formatters::AddStringSummary( @@ -53,10 +53,10 @@ void lldb_private::formatters::AddStringSummary( if (regex) category_sp->GetRegexTypeSummariesContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - summary_sp); + RegularExpression(type_name.GetStringRef()), summary_sp); else - category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); + category_sp->GetTypeSummariesContainer()->Add(std::move(type_name), + summary_sp); } void lldb_private::formatters::AddOneLineSummary( @@ -67,10 +67,10 @@ void lldb_private::formatters::AddOneLineSummary( if (regex) category_sp->GetRegexTypeSummariesContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - summary_sp); + RegularExpression(type_name.GetStringRef()), summary_sp); else - category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); + category_sp->GetTypeSummariesContainer()->Add(std::move(type_name), + summary_sp); } void lldb_private::formatters::AddCXXSummary( @@ -81,10 +81,10 @@ void lldb_private::formatters::AddCXXSummary( new CXXFunctionSummaryFormat(flags, funct, description)); if (regex) category_sp->GetRegexTypeSummariesContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - summary_sp); + RegularExpression(type_name.GetStringRef()), summary_sp); else - category_sp->GetTypeSummariesContainer()->Add(type_name, summary_sp); + category_sp->GetTypeSummariesContainer()->Add(std::move(type_name), + summary_sp); } void lldb_private::formatters::AddCXXSynthetic( @@ -96,10 +96,10 @@ void lldb_private::formatters::AddCXXSynthetic( new CXXSyntheticChildren(flags, description, generator)); if (regex) category_sp->GetRegexTypeSyntheticsContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - synth_sp); + RegularExpression(type_name.GetStringRef()), synth_sp); else - category_sp->GetTypeSyntheticsContainer()->Add(type_name, synth_sp); + category_sp->GetTypeSyntheticsContainer()->Add(std::move(type_name), + synth_sp); } void lldb_private::formatters::AddFilter( @@ -111,10 +111,10 @@ void lldb_private::formatters::AddFilter( filter_sp->AddExpressionPath(child); if (regex) category_sp->GetRegexTypeFiltersContainer()->Add( - RegularExpressionSP(new RegularExpression(type_name.GetStringRef())), - filter_sp); + RegularExpression(type_name.GetStringRef()), filter_sp); else - category_sp->GetTypeFiltersContainer()->Add(type_name, filter_sp); + category_sp->GetTypeFiltersContainer()->Add(std::move(type_name), + filter_sp); } size_t lldb_private::formatters::ExtractIndexFromString(const char *item_name) { diff --git a/lldb/source/DataFormatters/TypeCategoryMap.cpp b/lldb/source/DataFormatters/TypeCategoryMap.cpp index 69757c9844e193f..b1075e9878d8797 100644 --- a/lldb/source/DataFormatters/TypeCategoryMap.cpp +++ b/lldb/source/DataFormatters/TypeCategoryMap.cpp @@ -180,7 +180,8 @@ TypeCategoryMap::GetFormat(FormattersMatchData &match_data) { if (log) { for (auto match : match_data.GetMatchesVector()) { - log->Printf( + LLDB_LOGF( + log, "[CategoryMap::GetFormat] candidate match = %s %s %s %s reason = " "%" PRIu32, match.GetTypeName().GetCString(), @@ -194,18 +195,16 @@ TypeCategoryMap::GetFormat(FormattersMatchData &match_data) { for (begin = m_active_categories.begin(); begin != end; begin++) { lldb::TypeCategoryImplSP category_sp = *begin; lldb::TypeFormatImplSP current_format; - if (log) - log->Printf("[TypeCategoryMap::GetFormat] Trying to use category %s", - category_sp->GetName()); + LLDB_LOGF(log, "[TypeCategoryMap::GetFormat] Trying to use category %s", + category_sp->GetName()); if (!category_sp->Get(match_data.GetValueObject(), match_data.GetMatchesVector(), current_format, &reason_why)) continue; return current_format; } - if (log) - log->Printf( - "[TypeCategoryMap::GetFormat] nothing found - returning empty SP"); + LLDB_LOGF(log, + "[TypeCategoryMap::GetFormat] nothing found - returning empty SP"); return lldb::TypeFormatImplSP(); } @@ -220,7 +219,8 @@ TypeCategoryMap::GetSummaryFormat(FormattersMatchData &match_data) { if (log) { for (auto match : match_data.GetMatchesVector()) { - log->Printf( + LLDB_LOGF( + log, "[CategoryMap::GetSummaryFormat] candidate match = %s %s %s %s " "reason = %" PRIu32, match.GetTypeName().GetCString(), @@ -234,18 +234,17 @@ TypeCategoryMap::GetSummaryFormat(FormattersMatchData &match_data) { for (begin = m_active_categories.begin(); begin != end; begin++) { lldb::TypeCategoryImplSP category_sp = *begin; lldb::TypeSummaryImplSP current_format; - if (log) - log->Printf("[CategoryMap::GetSummaryFormat] Trying to use category %s", - category_sp->GetName()); + LLDB_LOGF(log, "[CategoryMap::GetSummaryFormat] Trying to use category %s", + category_sp->GetName()); if (!category_sp->Get(match_data.GetValueObject(), match_data.GetMatchesVector(), current_format, &reason_why)) continue; return current_format; } - if (log) - log->Printf( - "[CategoryMap::GetSummaryFormat] nothing found - returning empty SP"); + LLDB_LOGF( + log, + "[CategoryMap::GetSummaryFormat] nothing found - returning empty SP"); return lldb::TypeSummaryImplSP(); } @@ -261,7 +260,8 @@ TypeCategoryMap::GetSyntheticChildren(FormattersMatchData &match_data) { if (log) { for (auto match : match_data.GetMatchesVector()) { - log->Printf( + LLDB_LOGF( + log, "[CategoryMap::GetSyntheticChildren] candidate match = %s %s %s %s " "reason = %" PRIu32, match.GetTypeName().GetCString(), @@ -275,19 +275,18 @@ TypeCategoryMap::GetSyntheticChildren(FormattersMatchData &match_data) { for (begin = m_active_categories.begin(); begin != end; begin++) { lldb::TypeCategoryImplSP category_sp = *begin; lldb::SyntheticChildrenSP current_format; - if (log) - log->Printf( - "[CategoryMap::GetSyntheticChildren] Trying to use category %s", - category_sp->GetName()); + LLDB_LOGF(log, + "[CategoryMap::GetSyntheticChildren] Trying to use category %s", + category_sp->GetName()); if (!category_sp->Get(match_data.GetValueObject(), match_data.GetMatchesVector(), current_format, &reason_why)) continue; return current_format; } - if (log) - log->Printf("[CategoryMap::GetSyntheticChildren] nothing found - returning " - "empty SP"); + LLDB_LOGF(log, + "[CategoryMap::GetSyntheticChildren] nothing found - returning " + "empty SP"); return lldb::SyntheticChildrenSP(); } @@ -302,7 +301,8 @@ TypeCategoryMap::GetValidator(FormattersMatchData &match_data) { if (log) { for (auto match : match_data.GetMatchesVector()) { - log->Printf( + LLDB_LOGF( + log, "[CategoryMap::GetValidator] candidate match = %s %s %s %s reason = " "%" PRIu32, match.GetTypeName().GetCString(), @@ -316,18 +316,16 @@ TypeCategoryMap::GetValidator(FormattersMatchData &match_data) { for (begin = m_active_categories.begin(); begin != end; begin++) { lldb::TypeCategoryImplSP category_sp = *begin; lldb::TypeValidatorImplSP current_format; - if (log) - log->Printf("[CategoryMap::GetValidator] Trying to use category %s", - category_sp->GetName()); + LLDB_LOGF(log, "[CategoryMap::GetValidator] Trying to use category %s", + category_sp->GetName()); if (!category_sp->Get(match_data.GetValueObject(), match_data.GetMatchesVector(), current_format, &reason_why)) continue; return current_format; } - if (log) - log->Printf( - "[CategoryMap::GetValidator] nothing found - returning empty SP"); + LLDB_LOGF(log, + "[CategoryMap::GetValidator] nothing found - returning empty SP"); return lldb::TypeValidatorImplSP(); } diff --git a/lldb/source/DataFormatters/ValueObjectPrinter.cpp b/lldb/source/DataFormatters/ValueObjectPrinter.cpp index 409cffed9b0f9ff..fa43c677a194037 100644 --- a/lldb/source/DataFormatters/ValueObjectPrinter.cpp +++ b/lldb/source/DataFormatters/ValueObjectPrinter.cpp @@ -456,7 +456,7 @@ bool ValueObjectPrinter::PrintObjectDescriptionIfNeeded(bool value_printed, if (object_desc[object_end] == '\n') m_stream->Printf("%s", object_desc); else - m_stream->Printf("%s\n", object_desc); + m_stream->Printf("%s\n", object_desc); return true; } else if (!value_printed && !summary_printed) return true; @@ -751,34 +751,30 @@ bool ValueObjectPrinter::PrintChildrenOneLiner(bool hide_names) { void ValueObjectPrinter::PrintChildrenIfNeeded(bool value_printed, bool summary_printed) { - // this flag controls whether we tried to display a description for this - // object and failed if that happens, we want to display the children, if any + // This flag controls whether we tried to display a description for this + // object and failed if that happens, we want to display the children if any. bool is_failed_description = !PrintObjectDescriptionIfNeeded(value_printed, summary_printed); - auto curr_ptr_depth = m_ptr_depth; - bool print_children = + DumpValueObjectOptions::PointerDepth curr_ptr_depth = m_ptr_depth; + const bool print_children = ShouldPrintChildren(is_failed_description, curr_ptr_depth); - bool print_oneline = + const bool print_oneline = (curr_ptr_depth.CanAllowExpansion() || m_options.m_show_types || !m_options.m_allow_oneliner_mode || m_options.m_flat_output || (m_options.m_pointer_as_array) || m_options.m_show_location) ? false : DataVisualization::ShouldPrintAsOneLiner(*m_valobj); - bool is_instance_ptr = IsInstancePointer(); - uint64_t instance_ptr_value = LLDB_INVALID_ADDRESS; - - if (print_children && is_instance_ptr) { - instance_ptr_value = m_valobj->GetValueAsUnsigned(0); + if (print_children && IsInstancePointer()) { + uint64_t instance_ptr_value = m_valobj->GetValueAsUnsigned(0); if (m_printed_instance_pointers->count(instance_ptr_value)) { - // we already printed this instance-is-pointer thing, so don't expand it + // We already printed this instance-is-pointer thing, so don't expand it. m_stream->PutCString(" {...}\n"); - - // we're done here - get out fast return; - } else - m_printed_instance_pointers->emplace( - instance_ptr_value); // remember this guy for future reference + } else { + // Remember this guy for future reference. + m_printed_instance_pointers->emplace(instance_ptr_value); + } } if (print_children) { diff --git a/lldb/source/DataFormatters/VectorType.cpp b/lldb/source/DataFormatters/VectorType.cpp index 18880f72ef2e9bb..26fc03a4cdc29ec 100644 --- a/lldb/source/DataFormatters/VectorType.cpp +++ b/lldb/source/DataFormatters/VectorType.cpp @@ -15,6 +15,7 @@ #include "lldb/Target/Target.h" #include "lldb/Utility/LLDBAssert.h" +#include "lldb/Utility/Log.h" using namespace lldb; using namespace lldb_private; @@ -219,13 +220,20 @@ class VectorTypeSyntheticFrontEnd : public SyntheticChildrenFrontEnd { CompilerType parent_type(m_backend.GetCompilerType()); CompilerType element_type; parent_type.IsVectorType(&element_type, nullptr); - TargetSP target_sp(m_backend.GetTargetSP()); - m_child_type = ::GetCompilerTypeForFormat( - m_parent_format, element_type, - target_sp - ? target_sp->GetScratchTypeSystemForLanguage(nullptr, - lldb::eLanguageTypeC) - : nullptr); + TypeSystem *type_system = nullptr; + if (auto target_sp = m_backend.GetTargetSP()) { + auto type_system_or_err = + target_sp->GetScratchTypeSystemForLanguage(lldb::eLanguageTypeC); + if (auto err = type_system_or_err.takeError()) { + LLDB_LOG_ERROR( + lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS), + std::move(err), "Unable to update from scratch TypeSystem"); + } else { + type_system = &type_system_or_err.get(); + } + } + m_child_type = + ::GetCompilerTypeForFormat(m_parent_format, element_type, type_system); m_num_children = ::CalculateNumChildren(parent_type, m_child_type); m_item_format = GetItemFormatForFormat(m_parent_format, m_child_type); return false; diff --git a/lldb/source/Expression/CMakeLists.txt b/lldb/source/Expression/CMakeLists.txt index fead8d90040adc9..7e2f19ed5b09a0c 100644 --- a/lldb/source/Expression/CMakeLists.txt +++ b/lldb/source/Expression/CMakeLists.txt @@ -8,7 +8,6 @@ add_lldb_library(lldbExpression Expression.cpp ExpressionVariable.cpp FunctionCaller.cpp - IRDynamicChecks.cpp IRExecutionUnit.cpp IRInterpreter.cpp IRMemoryMap.cpp diff --git a/lldb/source/Expression/DWARFExpression.cpp b/lldb/source/Expression/DWARFExpression.cpp index a9d365325d9e2c0..44aacfde43c06bf 100644 --- a/lldb/source/Expression/DWARFExpression.cpp +++ b/lldb/source/Expression/DWARFExpression.cpp @@ -59,12 +59,9 @@ DWARFExpression::DWARFExpression() DWARFExpression::DWARFExpression(lldb::ModuleSP module_sp, const DataExtractor &data, - const DWARFUnit *dwarf_cu, - lldb::offset_t data_offset, - lldb::offset_t data_length) - : m_module_wp(), m_data(data, data_offset, data_length), - m_dwarf_cu(dwarf_cu), m_reg_kind(eRegisterKindDWARF), - m_loclist_slide(LLDB_INVALID_ADDRESS) { + const DWARFUnit *dwarf_cu) + : m_module_wp(), m_data(data), m_dwarf_cu(dwarf_cu), + m_reg_kind(eRegisterKindDWARF), m_loclist_slide(LLDB_INVALID_ADDRESS) { if (module_sp) m_module_wp = module_sp; } @@ -1135,9 +1132,9 @@ bool DWARFExpression::Evaluate(ExecutionContext *exe_ctx, if (length > 0 && lo_pc <= pc && pc < hi_pc) { return DWARFExpression::Evaluate( - exe_ctx, reg_ctx, module_sp, m_data, m_dwarf_cu, offset, length, - m_reg_kind, initial_value_ptr, object_address_ptr, result, - error_ptr); + exe_ctx, reg_ctx, module_sp, + DataExtractor(m_data, offset, length), m_dwarf_cu, m_reg_kind, + initial_value_ptr, object_address_ptr, result, error_ptr); } offset += length; } @@ -1148,20 +1145,19 @@ bool DWARFExpression::Evaluate(ExecutionContext *exe_ctx, } // Not a location list, just a single expression. - return DWARFExpression::Evaluate( - exe_ctx, reg_ctx, module_sp, m_data, m_dwarf_cu, 0, m_data.GetByteSize(), - m_reg_kind, initial_value_ptr, object_address_ptr, result, error_ptr); + return DWARFExpression::Evaluate(exe_ctx, reg_ctx, module_sp, m_data, + m_dwarf_cu, m_reg_kind, initial_value_ptr, + object_address_ptr, result, error_ptr); } bool DWARFExpression::Evaluate( ExecutionContext *exe_ctx, RegisterContext *reg_ctx, lldb::ModuleSP module_sp, const DataExtractor &opcodes, - const DWARFUnit *dwarf_cu, const lldb::offset_t opcodes_offset, - const lldb::offset_t opcodes_length, const lldb::RegisterKind reg_kind, + const DWARFUnit *dwarf_cu, const lldb::RegisterKind reg_kind, const Value *initial_value_ptr, const Value *object_address_ptr, Value &result, Status *error_ptr) { - if (opcodes_length == 0) { + if (opcodes.GetByteSize() == 0) { if (error_ptr) error_ptr->SetErrorString( "no location, value may have been optimized out"); @@ -1182,8 +1178,7 @@ bool DWARFExpression::Evaluate( if (initial_value_ptr) stack.push_back(*initial_value_ptr); - lldb::offset_t offset = opcodes_offset; - const lldb::offset_t end_offset = opcodes_offset + opcodes_length; + lldb::offset_t offset = 0; Value tmp; uint32_t reg_num; @@ -1191,30 +1186,24 @@ bool DWARFExpression::Evaluate( uint64_t op_piece_offset = 0; Value pieces; // Used for DW_OP_piece - // Make sure all of the data is available in opcodes. - if (!opcodes.ValidOffsetForDataOfSize(opcodes_offset, opcodes_length)) { - if (error_ptr) - error_ptr->SetErrorString( - "invalid offset and/or length for opcodes buffer."); - return false; - } Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)); - while (opcodes.ValidOffset(offset) && offset < end_offset) { + while (opcodes.ValidOffset(offset)) { const lldb::offset_t op_offset = offset; const uint8_t op = opcodes.GetU8(&offset); if (log && log->GetVerbose()) { size_t count = stack.size(); - log->Printf("Stack before operation has %" PRIu64 " values:", - (uint64_t)count); + LLDB_LOGF(log, "Stack before operation has %" PRIu64 " values:", + (uint64_t)count); for (size_t i = 0; i < count; ++i) { StreamString new_value; new_value.Printf("[%" PRIu64 "]", (uint64_t)i); stack[i].Dump(&new_value); - log->Printf(" %s", new_value.GetData()); + LLDB_LOGF(log, " %s", new_value.GetData()); } - log->Printf("0x%8.8" PRIx64 ": %s", op_offset, DW_OP_value_to_name(op)); + LLDB_LOGF(log, "0x%8.8" PRIx64 ": %s", op_offset, + DW_OP_value_to_name(op)); } switch (op) { @@ -1945,7 +1934,7 @@ bool DWARFExpression::Evaluate( case DW_OP_skip: { int16_t skip_offset = (int16_t)opcodes.GetU16(&offset); lldb::offset_t new_offset = offset + skip_offset; - if (new_offset >= opcodes_offset && new_offset < end_offset) + if (opcodes.ValidOffset(new_offset)) offset = new_offset; else { if (error_ptr) @@ -1974,7 +1963,7 @@ bool DWARFExpression::Evaluate( Scalar zero(0); if (tmp.ResolveValue(exe_ctx) != zero) { lldb::offset_t new_offset = offset + bra_offset; - if (new_offset >= opcodes_offset && new_offset < end_offset) + if (opcodes.ValidOffset(new_offset)) offset = new_offset; else { if (error_ptr) @@ -2686,9 +2675,8 @@ bool DWARFExpression::Evaluate( } break; default: - if (log) - log->Printf("Unhandled opcode %s in DWARFExpression.", - DW_OP_value_to_name(op)); + LLDB_LOGF(log, "Unhandled opcode %s in DWARFExpression.", + DW_OP_value_to_name(op)); break; } } @@ -2706,13 +2694,13 @@ bool DWARFExpression::Evaluate( } else { if (log && log->GetVerbose()) { size_t count = stack.size(); - log->Printf("Stack after operation has %" PRIu64 " values:", - (uint64_t)count); + LLDB_LOGF(log, "Stack after operation has %" PRIu64 " values:", + (uint64_t)count); for (size_t i = 0; i < count; ++i) { StreamString new_value; new_value.Printf("[%" PRIu64 "]", (uint64_t)i); stack[i].Dump(&new_value); - log->Printf(" %s", new_value.GetData()); + LLDB_LOGF(log, " %s", new_value.GetData()); } } result = stack.back(); @@ -2720,29 +2708,6 @@ bool DWARFExpression::Evaluate( return true; // Return true on success } -size_t DWARFExpression::LocationListSize(const DWARFUnit *dwarf_cu, - const DataExtractor &debug_loc_data, - lldb::offset_t offset) { - const lldb::offset_t debug_loc_offset = offset; - while (debug_loc_data.ValidOffset(offset)) { - lldb::addr_t start_addr = LLDB_INVALID_ADDRESS; - lldb::addr_t end_addr = LLDB_INVALID_ADDRESS; - if (!AddressRangeForLocationListEntry(dwarf_cu, debug_loc_data, &offset, - start_addr, end_addr)) - break; - - if (start_addr == 0 && end_addr == 0) - break; - - uint16_t loc_length = debug_loc_data.GetU16(&offset); - offset += loc_length; - } - - if (offset > debug_loc_offset) - return offset - debug_loc_offset; - return 0; -} - bool DWARFExpression::AddressRangeForLocationListEntry( const DWARFUnit *dwarf_cu, const DataExtractor &debug_loc_data, lldb::offset_t *offset_ptr, lldb::addr_t &low_pc, lldb::addr_t &high_pc) { diff --git a/lldb/source/Expression/DiagnosticManager.cpp b/lldb/source/Expression/DiagnosticManager.cpp index 53d85f8a6d54d06..5333e3e545b3092 100644 --- a/lldb/source/Expression/DiagnosticManager.cpp +++ b/lldb/source/Expression/DiagnosticManager.cpp @@ -70,19 +70,9 @@ size_t DiagnosticManager::Printf(DiagnosticSeverity severity, return result; } -size_t DiagnosticManager::PutString(DiagnosticSeverity severity, - llvm::StringRef str) { +void DiagnosticManager::PutString(DiagnosticSeverity severity, + llvm::StringRef str) { if (str.empty()) - return 0; + return; AddDiagnostic(str, severity, eDiagnosticOriginLLDB); - return str.size(); -} - -void DiagnosticManager::CopyDiagnostics(DiagnosticManager &otherDiagnostics) { - for (const DiagnosticList::value_type &other_diagnostic: - otherDiagnostics.Diagnostics()) { - AddDiagnostic( - other_diagnostic->GetMessage(), other_diagnostic->GetSeverity(), - other_diagnostic->getKind(), other_diagnostic->GetCompilerID()); - } } diff --git a/lldb/source/Expression/ExpressionVariable.cpp b/lldb/source/Expression/ExpressionVariable.cpp index 97305dcf5a02690..ed8da0ad8675b8e 100644 --- a/lldb/source/Expression/ExpressionVariable.cpp +++ b/lldb/source/Expression/ExpressionVariable.cpp @@ -45,8 +45,7 @@ void PersistentExpressionState::RegisterExecutionUnit( m_execution_units.insert(execution_unit_sp); - if (log) - log->Printf("Registering JITted Functions:\n"); + LLDB_LOGF(log, "Registering JITted Functions:\n"); for (const IRExecutionUnit::JittedFunction &jitted_function : execution_unit_sp->GetJittedFunctions()) { @@ -55,15 +54,13 @@ void PersistentExpressionState::RegisterExecutionUnit( jitted_function.m_remote_addr != LLDB_INVALID_ADDRESS) { m_symbol_map[jitted_function.m_name.GetCString()] = jitted_function.m_remote_addr; - if (log) - log->Printf(" Function: %s at 0x%" PRIx64 ".", - jitted_function.m_name.GetCString(), - jitted_function.m_remote_addr); + LLDB_LOGF(log, " Function: %s at 0x%" PRIx64 ".", + jitted_function.m_name.GetCString(), + jitted_function.m_remote_addr); } } - if (log) - log->Printf("Registering JIIted Symbols:\n"); + LLDB_LOGF(log, "Registering JIIted Symbols:\n"); for (const IRExecutionUnit::JittedGlobalVariable &global_var : execution_unit_sp->GetJittedGlobalVariables()) { @@ -74,9 +71,8 @@ void PersistentExpressionState::RegisterExecutionUnit( Mangled mangler(global_var.m_name); mangler.GetDemangledName(lldb::eLanguageTypeUnknown); m_symbol_map[global_var.m_name.GetCString()] = global_var.m_remote_addr; - if (log) - log->Printf(" Symbol: %s at 0x%" PRIx64 ".", - global_var.m_name.GetCString(), global_var.m_remote_addr); + LLDB_LOGF(log, " Symbol: %s at 0x%" PRIx64 ".", + global_var.m_name.GetCString(), global_var.m_remote_addr); } } } diff --git a/lldb/source/Expression/FunctionCaller.cpp b/lldb/source/Expression/FunctionCaller.cpp index 618c1a13212c4b9..203cfff63d80358 100644 --- a/lldb/source/Expression/FunctionCaller.cpp +++ b/lldb/source/Expression/FunctionCaller.cpp @@ -217,9 +217,8 @@ bool FunctionCaller::InsertFunction(ExecutionContext &exe_ctx, return false; Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_STEP)); - if (log) - log->Printf("Call Address: 0x%" PRIx64 " Struct Address: 0x%" PRIx64 ".\n", - m_jit_start_addr, args_addr_ref); + LLDB_LOGF(log, "Call Address: 0x%" PRIx64 " Struct Address: 0x%" PRIx64 ".\n", + m_jit_start_addr, args_addr_ref); return true; } @@ -231,10 +230,10 @@ lldb::ThreadPlanSP FunctionCaller::GetThreadPlanToCallFunction( Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_EXPRESSIONS | LIBLLDB_LOG_STEP)); - if (log) - log->Printf("-- [FunctionCaller::GetThreadPlanToCallFunction] Creating " - "thread plan to call function \"%s\" --", - m_name.c_str()); + LLDB_LOGF(log, + "-- [FunctionCaller::GetThreadPlanToCallFunction] Creating " + "thread plan to call function \"%s\" --", + m_name.c_str()); // FIXME: Use the errors Stream for better error reporting. Thread *thread = exe_ctx.GetThreadPtr(); @@ -271,10 +270,10 @@ bool FunctionCaller::FetchFunctionResults(ExecutionContext &exe_ctx, Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_EXPRESSIONS | LIBLLDB_LOG_STEP)); - if (log) - log->Printf("-- [FunctionCaller::FetchFunctionResults] Fetching function " - "results for \"%s\"--", - m_name.c_str()); + LLDB_LOGF(log, + "-- [FunctionCaller::FetchFunctionResults] Fetching function " + "results for \"%s\"--", + m_name.c_str()); Process *process = exe_ctx.GetProcessPtr(); @@ -341,10 +340,9 @@ lldb::ExpressionResults FunctionCaller::ExecuteFunction( Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_EXPRESSIONS | LIBLLDB_LOG_STEP)); - if (log) - log->Printf( - "== [FunctionCaller::ExecuteFunction] Executing function \"%s\" ==", - m_name.c_str()); + LLDB_LOGF(log, + "== [FunctionCaller::ExecuteFunction] Executing function \"%s\" ==", + m_name.c_str()); lldb::ThreadPlanSP call_plan_sp = GetThreadPlanToCallFunction( exe_ctx, args_addr, real_options, diagnostic_manager); @@ -362,13 +360,15 @@ lldb::ExpressionResults FunctionCaller::ExecuteFunction( if (log) { if (return_value != lldb::eExpressionCompleted) { - log->Printf("== [FunctionCaller::ExecuteFunction] Execution of \"%s\" " - "completed abnormally ==", - m_name.c_str()); + LLDB_LOGF(log, + "== [FunctionCaller::ExecuteFunction] Execution of \"%s\" " + "completed abnormally ==", + m_name.c_str()); } else { - log->Printf("== [FunctionCaller::ExecuteFunction] Execution of \"%s\" " - "completed normally ==", - m_name.c_str()); + LLDB_LOGF(log, + "== [FunctionCaller::ExecuteFunction] Execution of \"%s\" " + "completed normally ==", + m_name.c_str()); } } diff --git a/lldb/source/Expression/IRExecutionUnit.cpp b/lldb/source/Expression/IRExecutionUnit.cpp index 160f586b2f4c56e..14d09afbe633023 100644 --- a/lldb/source/Expression/IRExecutionUnit.cpp +++ b/lldb/source/Expression/IRExecutionUnit.cpp @@ -122,10 +122,10 @@ Status IRExecutionUnit::DisassembleFunction(Stream &stream, return ret; } - if (log) - log->Printf("Found function, has local address 0x%" PRIx64 - " and remote address 0x%" PRIx64, - (uint64_t)func_local_addr, (uint64_t)func_remote_addr); + LLDB_LOGF(log, + "Found function, has local address 0x%" PRIx64 + " and remote address 0x%" PRIx64, + (uint64_t)func_local_addr, (uint64_t)func_remote_addr); std::pair func_range; @@ -138,9 +138,8 @@ Status IRExecutionUnit::DisassembleFunction(Stream &stream, return ret; } - if (log) - log->Printf("Function's code range is [0x%" PRIx64 "+0x%" PRIx64 "]", - func_range.first, func_range.second); + LLDB_LOGF(log, "Function's code range is [0x%" PRIx64 "+0x%" PRIx64 "]", + func_range.first, func_range.second); Target *target = exe_ctx.GetTargetPtr(); if (!target) { @@ -188,7 +187,7 @@ Status IRExecutionUnit::DisassembleFunction(Stream &stream, target->GetArchitecture().GetAddressByteSize()); if (log) { - log->Printf("Function data has contents:"); + LLDB_LOGF(log, "Function data has contents:"); extractor.PutToLog(log, 0, extractor.GetByteSize(), func_remote_addr, 16, DataExtractor::TypeUInt8); } @@ -255,7 +254,7 @@ void IRExecutionUnit::GetRunnableInfo(Status &error, lldb::addr_t &func_addr, oss.flush(); - log->Printf("Module being sent to JIT: \n%s", s.c_str()); + LLDB_LOGF(log, "Module being sent to JIT: \n%s", s.c_str()); } m_module_up->getContext().setInlineAsmDiagnosticHandler(ReportInlineAsmError, @@ -285,9 +284,6 @@ void IRExecutionUnit::GetRunnableInfo(Status &error, lldb::addr_t &func_addr, m_execution_engine_up.reset(builder.create(target_machine)); - m_strip_underscore = - (m_execution_engine_up->getDataLayout().getGlobalPrefix() == '_'); - if (!m_execution_engine_up) { error.SetErrorToGenericError(); error.SetErrorStringWithFormat("Couldn't JIT the function: %s", @@ -295,6 +291,9 @@ void IRExecutionUnit::GetRunnableInfo(Status &error, lldb::addr_t &func_addr, return; } + m_strip_underscore = + (m_execution_engine_up->getDataLayout().getGlobalPrefix() == '_'); + class ObjectDumper : public llvm::ObjectCache { public: void notifyObjectCompiled(const llvm::Module *module, @@ -433,20 +432,20 @@ void IRExecutionUnit::GetRunnableInfo(Status &error, lldb::addr_t &func_addr, } if (log) { - log->Printf("Code can be run in the target."); + LLDB_LOGF(log, "Code can be run in the target."); StreamString disassembly_stream; Status err = DisassembleFunction(disassembly_stream, process_sp); if (!err.Success()) { - log->Printf("Couldn't disassemble function : %s", - err.AsCString("unknown error")); + LLDB_LOGF(log, "Couldn't disassemble function : %s", + err.AsCString("unknown error")); } else { - log->Printf("Function disassembly:\n%s", disassembly_stream.GetData()); + LLDB_LOGF(log, "Function disassembly:\n%s", disassembly_stream.GetData()); } - log->Printf("Sections: "); + LLDB_LOGF(log, "Sections: "); for (AllocationRecord &record : m_records) { if (record.m_process_address != LLDB_INVALID_ADDRESS) { record.dump(log); @@ -599,11 +598,10 @@ uint8_t *IRExecutionUnit::MemoryManager::allocateCodeSection( GetSectionTypeFromSectionName(SectionName, AllocationKind::Code), Size, Alignment, SectionID, SectionName.str().c_str())); - if (log) { - log->Printf("IRExecutionUnit::allocateCodeSection(Size=0x%" PRIx64 - ", Alignment=%u, SectionID=%u) = %p", - (uint64_t)Size, Alignment, SectionID, (void *)return_value); - } + LLDB_LOGF(log, + "IRExecutionUnit::allocateCodeSection(Size=0x%" PRIx64 + ", Alignment=%u, SectionID=%u) = %p", + (uint64_t)Size, Alignment, SectionID, (void *)return_value); if (m_parent.m_reported_allocations) { Status err; @@ -631,11 +629,10 @@ uint8_t *IRExecutionUnit::MemoryManager::allocateDataSection( (uintptr_t)return_value, permissions, GetSectionTypeFromSectionName(SectionName, AllocationKind::Data), Size, Alignment, SectionID, SectionName.str().c_str())); - if (log) { - log->Printf("IRExecutionUnit::allocateDataSection(Size=0x%" PRIx64 - ", Alignment=%u, SectionID=%u) = %p", - (uint64_t)Size, Alignment, SectionID, (void *)return_value); - } + LLDB_LOGF(log, + "IRExecutionUnit::allocateDataSection(Size=0x%" PRIx64 + ", Alignment=%u, SectionID=%u) = %p", + (uint64_t)Size, Alignment, SectionID, (void *)return_value); if (m_parent.m_reported_allocations) { Status err; @@ -661,11 +658,7 @@ FindBestAlternateMangledName(ConstString demangled, if (!sym_ctx.module_sp) return ConstString(); - SymbolVendor *sym_vendor = sym_ctx.module_sp->GetSymbolVendor(); - if (!sym_vendor) - return ConstString(); - - lldb_private::SymbolFile *sym_file = sym_vendor->GetSymbolFile(); + lldb_private::SymbolFile *sym_file = sym_ctx.module_sp->GetSymbolFile(); if (!sym_file) return ConstString(); @@ -774,7 +767,9 @@ void IRExecutionUnit::CollectFallbackNames( lldb::addr_t IRExecutionUnit::FindInSymbols( const std::vector &specs, - const lldb_private::SymbolContext &sc) { + const lldb_private::SymbolContext &sc, + bool &symbol_was_missing_weak) { + symbol_was_missing_weak = false; Target *target = sc.target_sp.get(); if (!target) { @@ -789,16 +784,26 @@ lldb::addr_t IRExecutionUnit::FindInSymbols( std::function - get_external_load_address = [&best_internal_load_address, target]( + get_external_load_address = [&best_internal_load_address, target, + &symbol_was_missing_weak]( lldb::addr_t &load_address, SymbolContextList &sc_list, const lldb_private::SymbolContext &sc) -> lldb::addr_t { load_address = LLDB_INVALID_ADDRESS; - for (size_t si = 0, se = sc_list.GetSize(); si < se; ++si) { - SymbolContext candidate_sc; - - sc_list.GetContextAtIndex(si, candidate_sc); - + if (sc_list.GetSize() == 0) + return false; + + // missing_weak_symbol will be true only if we found only weak undefined + // references to this symbol. + symbol_was_missing_weak = true; + for (auto candidate_sc : sc_list.SymbolContexts()) { + // Only symbols can be weak undefined: + if (!candidate_sc.symbol) + symbol_was_missing_weak = false; + else if (candidate_sc.symbol->GetType() != lldb::eSymbolTypeUndefined + || !candidate_sc.symbol->IsWeak()) + symbol_was_missing_weak = false; + const bool is_external = (candidate_sc.function) || (candidate_sc.symbol && candidate_sc.symbol->IsExternal()); @@ -835,6 +840,13 @@ lldb::addr_t IRExecutionUnit::FindInSymbols( } } + // You test the address of a weak symbol against NULL to see if it is + // present. So we should return 0 for a missing weak symbol. + if (symbol_was_missing_weak) { + load_address = 0; + return true; + } + return false; }; @@ -930,31 +942,37 @@ lldb::addr_t IRExecutionUnit::FindInUserDefinedSymbols( } lldb::addr_t -IRExecutionUnit::FindSymbol(lldb_private::ConstString name) { +IRExecutionUnit::FindSymbol(lldb_private::ConstString name, bool &missing_weak) { std::vector candidate_C_names; std::vector candidate_CPlusPlus_names; CollectCandidateCNames(candidate_C_names, name); + + lldb::addr_t ret = FindInSymbols(candidate_C_names, m_sym_ctx, missing_weak); + if (ret != LLDB_INVALID_ADDRESS) + return ret; + + // If we find the symbol in runtimes or user defined symbols it can't be + // a missing weak symbol. + missing_weak = false; + ret = FindInRuntimes(candidate_C_names, m_sym_ctx); + if (ret != LLDB_INVALID_ADDRESS) + return ret; - lldb::addr_t ret = FindInSymbols(candidate_C_names, m_sym_ctx); - if (ret == LLDB_INVALID_ADDRESS) - ret = FindInRuntimes(candidate_C_names, m_sym_ctx); + ret = FindInUserDefinedSymbols(candidate_C_names, m_sym_ctx); + if (ret != LLDB_INVALID_ADDRESS) + return ret; - if (ret == LLDB_INVALID_ADDRESS) - ret = FindInUserDefinedSymbols(candidate_C_names, m_sym_ctx); + CollectCandidateCPlusPlusNames(candidate_CPlusPlus_names, candidate_C_names, + m_sym_ctx); + ret = FindInSymbols(candidate_CPlusPlus_names, m_sym_ctx, missing_weak); + if (ret != LLDB_INVALID_ADDRESS) + return ret; - if (ret == LLDB_INVALID_ADDRESS) { - CollectCandidateCPlusPlusNames(candidate_CPlusPlus_names, candidate_C_names, - m_sym_ctx); - ret = FindInSymbols(candidate_CPlusPlus_names, m_sym_ctx); - } + std::vector candidate_fallback_names; - if (ret == LLDB_INVALID_ADDRESS) { - std::vector candidate_fallback_names; - - CollectFallbackNames(candidate_fallback_names, candidate_C_names); - ret = FindInSymbols(candidate_fallback_names, m_sym_ctx); - } + CollectFallbackNames(candidate_fallback_names, candidate_C_names); + ret = FindInSymbols(candidate_fallback_names, m_sym_ctx, missing_weak); return ret; } @@ -989,26 +1007,43 @@ void IRExecutionUnit::GetStaticInitializers( } } +llvm::JITSymbol +IRExecutionUnit::MemoryManager::findSymbol(const std::string &Name) { + bool missing_weak = false; + uint64_t addr = GetSymbolAddressAndPresence(Name, missing_weak); + // This is a weak symbol: + if (missing_weak) + return llvm::JITSymbol(addr, + llvm::JITSymbolFlags::Exported | llvm::JITSymbolFlags::Weak); + else + return llvm::JITSymbol(addr, llvm::JITSymbolFlags::Exported); +} + uint64_t IRExecutionUnit::MemoryManager::getSymbolAddress(const std::string &Name) { + bool missing_weak = false; + return GetSymbolAddressAndPresence(Name, missing_weak); +} + +uint64_t +IRExecutionUnit::MemoryManager::GetSymbolAddressAndPresence( + const std::string &Name, bool &missing_weak) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)); ConstString name_cs(Name.c_str()); - lldb::addr_t ret = m_parent.FindSymbol(name_cs); + lldb::addr_t ret = m_parent.FindSymbol(name_cs, missing_weak); if (ret == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf( - "IRExecutionUnit::getSymbolAddress(Name=\"%s\") = ", - Name.c_str()); + LLDB_LOGF(log, + "IRExecutionUnit::getSymbolAddress(Name=\"%s\") = ", + Name.c_str()); m_parent.ReportSymbolLookupError(name_cs); return 0; } else { - if (log) - log->Printf("IRExecutionUnit::getSymbolAddress(Name=\"%s\") = %" PRIx64, - Name.c_str(), ret); + LLDB_LOGF(log, "IRExecutionUnit::getSymbolAddress(Name=\"%s\") = %" PRIx64, + Name.c_str(), ret); return ret; } } @@ -1031,15 +1066,14 @@ IRExecutionUnit::GetRemoteAddressForLocal(lldb::addr_t local_address) { lldb::addr_t ret = record.m_process_address + (local_address - record.m_host_address); - if (log) { - log->Printf( - "IRExecutionUnit::GetRemoteAddressForLocal() found 0x%" PRIx64 - " in [0x%" PRIx64 "..0x%" PRIx64 "], and returned 0x%" PRIx64 - " from [0x%" PRIx64 "..0x%" PRIx64 "].", - local_address, (uint64_t)record.m_host_address, - (uint64_t)record.m_host_address + (uint64_t)record.m_size, ret, - record.m_process_address, record.m_process_address + record.m_size); - } + LLDB_LOGF(log, + "IRExecutionUnit::GetRemoteAddressForLocal() found 0x%" PRIx64 + " in [0x%" PRIx64 "..0x%" PRIx64 "], and returned 0x%" PRIx64 + " from [0x%" PRIx64 "..0x%" PRIx64 "].", + local_address, (uint64_t)record.m_host_address, + (uint64_t)record.m_host_address + (uint64_t)record.m_size, ret, + record.m_process_address, + record.m_process_address + record.m_size); return ret; } @@ -1166,10 +1200,11 @@ void IRExecutionUnit::AllocationRecord::dump(Log *log) { if (!log) return; - log->Printf("[0x%llx+0x%llx]->0x%llx (alignment %d, section ID %d, name %s)", - (unsigned long long)m_host_address, (unsigned long long)m_size, - (unsigned long long)m_process_address, (unsigned)m_alignment, - (unsigned)m_section_id, m_name.c_str()); + LLDB_LOGF(log, + "[0x%llx+0x%llx]->0x%llx (alignment %d, section ID %d, name %s)", + (unsigned long long)m_host_address, (unsigned long long)m_size, + (unsigned long long)m_process_address, (unsigned)m_alignment, + (unsigned)m_section_id, m_name.c_str()); } lldb::ByteOrder IRExecutionUnit::GetByteOrder() const { diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp index 24a3cd24fdd279c..856c9a0244fb300 100644 --- a/lldb/source/Expression/IRInterpreter.cpp +++ b/lldb/source/Expression/IRInterpreter.cpp @@ -233,8 +233,9 @@ class InterpreterStackFrame { case Value::FunctionVal: if (const Function *constant_func = dyn_cast(constant)) { lldb_private::ConstString name(constant_func->getName()); - lldb::addr_t addr = m_execution_unit.FindSymbol(name); - if (addr == LLDB_INVALID_ADDRESS) + bool missing_weak = false; + lldb::addr_t addr = m_execution_unit.FindSymbol(name, missing_weak); + if (addr == LLDB_INVALID_ADDRESS || missing_weak) return false; value = APInt(m_target_data.getPointerSizeInBits(), addr); return true; @@ -326,10 +327,11 @@ class InterpreterStackFrame { lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)); if (log) { - log->Printf("Made an allocation for argument %s", - PrintValue(value).c_str()); - log->Printf(" Data region : %llx", (unsigned long long)address); - log->Printf(" Ref region : %llx", (unsigned long long)data_address); + LLDB_LOGF(log, "Made an allocation for argument %s", + PrintValue(value).c_str()); + LLDB_LOGF(log, " Data region : %llx", (unsigned long long)address); + LLDB_LOGF(log, " Ref region : %llx", + (unsigned long long)data_address); } return true; @@ -493,8 +495,7 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function, ++fi) { if (fi->begin() != fi->end()) { if (saw_function_with_body) { - if (log) - log->Printf("More than one function in the module has a body"); + LLDB_LOGF(log, "More than one function in the module has a body"); error.SetErrorToGenericError(); error.SetErrorString(too_many_functions_error); return false; @@ -509,8 +510,7 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function, ++ii) { switch (ii->getOpcode()) { default: { - if (log) - log->Printf("Unsupported instruction: %s", PrintValue(&*ii).c_str()); + LLDB_LOGF(log, "Unsupported instruction: %s", PrintValue(&*ii).c_str()); error.SetErrorToGenericError(); error.SetErrorString(unsupported_opcode_error); return false; @@ -531,9 +531,8 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function, } if (!CanIgnoreCall(call_inst) && !support_function_calls) { - if (log) - log->Printf("Unsupported instruction: %s", - PrintValue(&*ii).c_str()); + LLDB_LOGF(log, "Unsupported instruction: %s", + PrintValue(&*ii).c_str()); error.SetErrorToGenericError(); error.SetErrorString(unsupported_opcode_error); return false; @@ -552,9 +551,8 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function, switch (icmp_inst->getPredicate()) { default: { - if (log) - log->Printf("Unsupported ICmp predicate: %s", - PrintValue(&*ii).c_str()); + LLDB_LOGF(log, "Unsupported ICmp predicate: %s", + PrintValue(&*ii).c_str()); error.SetErrorToGenericError(); error.SetErrorString(unsupported_opcode_error); @@ -604,9 +602,8 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function, default: break; case Type::VectorTyID: { - if (log) - log->Printf("Unsupported operand type: %s", - PrintType(operand_type).c_str()); + LLDB_LOGF(log, "Unsupported operand type: %s", + PrintType(operand_type).c_str()); error.SetErrorString(unsupported_operand_error); return false; } @@ -617,18 +614,16 @@ bool IRInterpreter::CanInterpret(llvm::Module &module, llvm::Function &function, // we can just fall back to the JIT rather than // choking. if (operand_type->getPrimitiveSizeInBits() > 64) { - if (log) - log->Printf("Unsupported operand type: %s", - PrintType(operand_type).c_str()); + LLDB_LOGF(log, "Unsupported operand type: %s", + PrintType(operand_type).c_str()); error.SetErrorString(unsupported_operand_error); return false; } if (Constant *constant = llvm::dyn_cast(operand)) { if (!CanResolveConstant(constant)) { - if (log) - log->Printf("Unsupported constant: %s", - PrintValue(constant).c_str()); + LLDB_LOGF(log, "Unsupported constant: %s", + PrintValue(constant).c_str()); error.SetErrorString(unsupported_operand_error); return false; } @@ -658,8 +653,8 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, oss.flush(); - log->Printf("Module as passed in to IRInterpreter::Interpret: \n\"%s\"", - s.c_str()); + LLDB_LOGF(log, "Module as passed in to IRInterpreter::Interpret: \n\"%s\"", + s.c_str()); } DataLayout data_layout(&module); @@ -693,8 +688,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, while (frame.m_ii != frame.m_ie && (++num_insts < 4096)) { const Instruction *inst = &*frame.m_ii; - if (log) - log->Printf("Interpreting %s", PrintValue(inst).c_str()); + LLDB_LOGF(log, "Interpreting %s", PrintValue(inst).c_str()); switch (inst->getOpcode()) { default: @@ -716,10 +710,10 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, const BinaryOperator *bin_op = dyn_cast(inst); if (!bin_op) { - if (log) - log->Printf( - "getOpcode() returns %s, but instruction is not a BinaryOperator", - inst->getOpcodeName()); + LLDB_LOGF( + log, + "getOpcode() returns %s, but instruction is not a BinaryOperator", + inst->getOpcodeName()); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -732,16 +726,14 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar R; if (!frame.EvaluateValue(L, lhs, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(lhs).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(lhs).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; } if (!frame.EvaluateValue(R, rhs, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(rhs).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(rhs).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -805,28 +797,26 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, result, module); if (log) { - log->Printf("Interpreted a %s", inst->getOpcodeName()); - log->Printf(" L : %s", frame.SummarizeValue(lhs).c_str()); - log->Printf(" R : %s", frame.SummarizeValue(rhs).c_str()); - log->Printf(" = : %s", frame.SummarizeValue(inst).c_str()); + LLDB_LOGF(log, "Interpreted a %s", inst->getOpcodeName()); + LLDB_LOGF(log, " L : %s", frame.SummarizeValue(lhs).c_str()); + LLDB_LOGF(log, " R : %s", frame.SummarizeValue(rhs).c_str()); + LLDB_LOGF(log, " = : %s", frame.SummarizeValue(inst).c_str()); } } break; case Instruction::Alloca: { const AllocaInst *alloca_inst = dyn_cast(inst); if (!alloca_inst) { - if (log) - log->Printf("getOpcode() returns Alloca, but instruction is not an " - "AllocaInst"); + LLDB_LOGF(log, "getOpcode() returns Alloca, but instruction is not an " + "AllocaInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; } if (alloca_inst->isArrayAllocation()) { - if (log) - log->Printf( - "AllocaInsts are not handled if isArrayAllocation() is true"); + LLDB_LOGF(log, + "AllocaInsts are not handled if isArrayAllocation() is true"); error.SetErrorToGenericError(); error.SetErrorString(unsupported_opcode_error); return false; @@ -845,8 +835,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb::addr_t R = frame.Malloc(T); if (R == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf("Couldn't allocate memory for an AllocaInst"); + LLDB_LOGF(log, "Couldn't allocate memory for an AllocaInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_allocation_error); return false; @@ -855,8 +844,8 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb::addr_t P = frame.Malloc(Tptr); if (P == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf("Couldn't allocate the result pointer for an AllocaInst"); + LLDB_LOGF(log, + "Couldn't allocate the result pointer for an AllocaInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_allocation_error); return false; @@ -867,8 +856,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.WritePointerToMemory(P, R, write_error); if (!write_error.Success()) { - if (log) - log->Printf("Couldn't write the result pointer for an AllocaInst"); + LLDB_LOGF(log, "Couldn't write the result pointer for an AllocaInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_write_error); lldb_private::Status free_error; @@ -880,9 +868,9 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.m_values[alloca_inst] = P; if (log) { - log->Printf("Interpreted an AllocaInst"); - log->Printf(" R : 0x%" PRIx64, R); - log->Printf(" P : 0x%" PRIx64, P); + LLDB_LOGF(log, "Interpreted an AllocaInst"); + LLDB_LOGF(log, " R : 0x%" PRIx64, R); + LLDB_LOGF(log, " P : 0x%" PRIx64, P); } } break; case Instruction::BitCast: @@ -890,10 +878,9 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, const CastInst *cast_inst = dyn_cast(inst); if (!cast_inst) { - if (log) - log->Printf( - "getOpcode() returns %s, but instruction is not a BitCastInst", - cast_inst->getOpcodeName()); + LLDB_LOGF( + log, "getOpcode() returns %s, but instruction is not a BitCastInst", + cast_inst->getOpcodeName()); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -904,8 +891,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar S; if (!frame.EvaluateValue(S, source, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(source).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(source).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -917,10 +903,9 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, const CastInst *cast_inst = dyn_cast(inst); if (!cast_inst) { - if (log) - log->Printf( - "getOpcode() returns %s, but instruction is not a BitCastInst", - cast_inst->getOpcodeName()); + LLDB_LOGF( + log, "getOpcode() returns %s, but instruction is not a BitCastInst", + cast_inst->getOpcodeName()); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -931,8 +916,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar S; if (!frame.EvaluateValue(S, source, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(source).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(source).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -948,9 +932,8 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, const BranchInst *br_inst = dyn_cast(inst); if (!br_inst) { - if (log) - log->Printf( - "getOpcode() returns Br, but instruction is not a BranchInst"); + LLDB_LOGF( + log, "getOpcode() returns Br, but instruction is not a BranchInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -962,8 +945,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar C; if (!frame.EvaluateValue(C, condition, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(condition).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(condition).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -975,14 +957,15 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.Jump(br_inst->getSuccessor(1)); if (log) { - log->Printf("Interpreted a BrInst with a condition"); - log->Printf(" cond : %s", frame.SummarizeValue(condition).c_str()); + LLDB_LOGF(log, "Interpreted a BrInst with a condition"); + LLDB_LOGF(log, " cond : %s", + frame.SummarizeValue(condition).c_str()); } } else { frame.Jump(br_inst->getSuccessor(0)); if (log) { - log->Printf("Interpreted a BrInst with no condition"); + LLDB_LOGF(log, "Interpreted a BrInst with no condition"); } } } @@ -991,17 +974,16 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, const PHINode *phi_inst = dyn_cast(inst); if (!phi_inst) { - if (log) - log->Printf( - "getOpcode() returns PHI, but instruction is not a PHINode"); + LLDB_LOGF(log, + "getOpcode() returns PHI, but instruction is not a PHINode"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; } if (!frame.m_prev_bb) { - if (log) - log->Printf("Encountered PHI node without having jumped from another " - "basic block"); + LLDB_LOGF(log, + "Encountered PHI node without having jumped from another " + "basic block"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1010,8 +992,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, Value *value = phi_inst->getIncomingValueForBlock(frame.m_prev_bb); lldb_private::Scalar result; if (!frame.EvaluateValue(result, value, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(value).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(value).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1019,18 +1000,17 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, result, module); if (log) { - log->Printf("Interpreted a %s", inst->getOpcodeName()); - log->Printf(" Incoming value : %s", - frame.SummarizeValue(value).c_str()); + LLDB_LOGF(log, "Interpreted a %s", inst->getOpcodeName()); + LLDB_LOGF(log, " Incoming value : %s", + frame.SummarizeValue(value).c_str()); } } break; case Instruction::GetElementPtr: { const GetElementPtrInst *gep_inst = dyn_cast(inst); if (!gep_inst) { - if (log) - log->Printf("getOpcode() returns GetElementPtr, but instruction is " - "not a GetElementPtrInst"); + LLDB_LOGF(log, "getOpcode() returns GetElementPtr, but instruction is " + "not a GetElementPtrInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1042,9 +1022,8 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar P; if (!frame.EvaluateValue(P, pointer_operand, module)) { - if (log) - log->Printf("Couldn't evaluate %s", - PrintValue(pointer_operand).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", + PrintValue(pointer_operand).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1066,17 +1045,14 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar I; if (!frame.EvaluateValue(I, *ii, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(*ii).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(*ii).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; } - if (log) - log->Printf("Evaluated constant index %s as %llu", - PrintValue(*ii).c_str(), - I.ULongLong(LLDB_INVALID_ADDRESS)); + LLDB_LOGF(log, "Evaluated constant index %s as %llu", + PrintValue(*ii).c_str(), I.ULongLong(LLDB_INVALID_ADDRESS)); constant_index = cast(ConstantInt::get( (*ii)->getType(), I.ULongLong(LLDB_INVALID_ADDRESS))); @@ -1093,19 +1069,19 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, Poffset, module); if (log) { - log->Printf("Interpreted a GetElementPtrInst"); - log->Printf(" P : %s", - frame.SummarizeValue(pointer_operand).c_str()); - log->Printf(" Poffset : %s", frame.SummarizeValue(inst).c_str()); + LLDB_LOGF(log, "Interpreted a GetElementPtrInst"); + LLDB_LOGF(log, " P : %s", + frame.SummarizeValue(pointer_operand).c_str()); + LLDB_LOGF(log, " Poffset : %s", frame.SummarizeValue(inst).c_str()); } } break; case Instruction::ICmp: { const ICmpInst *icmp_inst = dyn_cast(inst); if (!icmp_inst) { - if (log) - log->Printf( - "getOpcode() returns ICmp, but instruction is not an ICmpInst"); + LLDB_LOGF( + log, + "getOpcode() returns ICmp, but instruction is not an ICmpInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1120,16 +1096,14 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar R; if (!frame.EvaluateValue(L, lhs, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(lhs).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(lhs).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; } if (!frame.EvaluateValue(R, rhs, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(rhs).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(rhs).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1191,19 +1165,19 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, result, module); if (log) { - log->Printf("Interpreted an ICmpInst"); - log->Printf(" L : %s", frame.SummarizeValue(lhs).c_str()); - log->Printf(" R : %s", frame.SummarizeValue(rhs).c_str()); - log->Printf(" = : %s", frame.SummarizeValue(inst).c_str()); + LLDB_LOGF(log, "Interpreted an ICmpInst"); + LLDB_LOGF(log, " L : %s", frame.SummarizeValue(lhs).c_str()); + LLDB_LOGF(log, " R : %s", frame.SummarizeValue(rhs).c_str()); + LLDB_LOGF(log, " = : %s", frame.SummarizeValue(inst).c_str()); } } break; case Instruction::IntToPtr: { const IntToPtrInst *int_to_ptr_inst = dyn_cast(inst); if (!int_to_ptr_inst) { - if (log) - log->Printf("getOpcode() returns IntToPtr, but instruction is not an " - "IntToPtrInst"); + LLDB_LOGF(log, + "getOpcode() returns IntToPtr, but instruction is not an " + "IntToPtrInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1214,8 +1188,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar I; if (!frame.EvaluateValue(I, src_operand, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(src_operand).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(src_operand).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1224,18 +1197,18 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, I, module); if (log) { - log->Printf("Interpreted an IntToPtr"); - log->Printf(" Src : %s", frame.SummarizeValue(src_operand).c_str()); - log->Printf(" = : %s", frame.SummarizeValue(inst).c_str()); + LLDB_LOGF(log, "Interpreted an IntToPtr"); + LLDB_LOGF(log, " Src : %s", frame.SummarizeValue(src_operand).c_str()); + LLDB_LOGF(log, " = : %s", frame.SummarizeValue(inst).c_str()); } } break; case Instruction::PtrToInt: { const PtrToIntInst *ptr_to_int_inst = dyn_cast(inst); if (!ptr_to_int_inst) { - if (log) - log->Printf("getOpcode() returns PtrToInt, but instruction is not an " - "PtrToIntInst"); + LLDB_LOGF(log, + "getOpcode() returns PtrToInt, but instruction is not an " + "PtrToIntInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1246,8 +1219,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar I; if (!frame.EvaluateValue(I, src_operand, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(src_operand).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(src_operand).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1256,18 +1228,18 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, I, module); if (log) { - log->Printf("Interpreted a PtrToInt"); - log->Printf(" Src : %s", frame.SummarizeValue(src_operand).c_str()); - log->Printf(" = : %s", frame.SummarizeValue(inst).c_str()); + LLDB_LOGF(log, "Interpreted a PtrToInt"); + LLDB_LOGF(log, " Src : %s", frame.SummarizeValue(src_operand).c_str()); + LLDB_LOGF(log, " = : %s", frame.SummarizeValue(inst).c_str()); } } break; case Instruction::Trunc: { const TruncInst *trunc_inst = dyn_cast(inst); if (!trunc_inst) { - if (log) - log->Printf( - "getOpcode() returns Trunc, but instruction is not a TruncInst"); + LLDB_LOGF( + log, + "getOpcode() returns Trunc, but instruction is not a TruncInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1278,8 +1250,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb_private::Scalar I; if (!frame.EvaluateValue(I, src_operand, module)) { - if (log) - log->Printf("Couldn't evaluate %s", PrintValue(src_operand).c_str()); + LLDB_LOGF(log, "Couldn't evaluate %s", PrintValue(src_operand).c_str()); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1288,18 +1259,17 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, frame.AssignValue(inst, I, module); if (log) { - log->Printf("Interpreted a Trunc"); - log->Printf(" Src : %s", frame.SummarizeValue(src_operand).c_str()); - log->Printf(" = : %s", frame.SummarizeValue(inst).c_str()); + LLDB_LOGF(log, "Interpreted a Trunc"); + LLDB_LOGF(log, " Src : %s", frame.SummarizeValue(src_operand).c_str()); + LLDB_LOGF(log, " = : %s", frame.SummarizeValue(inst).c_str()); } } break; case Instruction::Load: { const LoadInst *load_inst = dyn_cast(inst); if (!load_inst) { - if (log) - log->Printf( - "getOpcode() returns Load, but instruction is not a LoadInst"); + LLDB_LOGF( + log, "getOpcode() returns Load, but instruction is not a LoadInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1316,8 +1286,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, Type *pointer_ty = pointer_operand->getType(); PointerType *pointer_ptr_ty = dyn_cast(pointer_ty); if (!pointer_ptr_ty) { - if (log) - log->Printf("getPointerOperand()->getType() is not a PointerType"); + LLDB_LOGF(log, "getPointerOperand()->getType() is not a PointerType"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1328,16 +1297,14 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb::addr_t P = frame.ResolveValue(pointer_operand, module); if (D == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf("LoadInst's value doesn't resolve to anything"); + LLDB_LOGF(log, "LoadInst's value doesn't resolve to anything"); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; } if (P == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf("LoadInst's pointer doesn't resolve to anything"); + LLDB_LOGF(log, "LoadInst's pointer doesn't resolve to anything"); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1348,8 +1315,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.ReadPointerFromMemory(&R, P, read_error); if (!read_error.Success()) { - if (log) - log->Printf("Couldn't read the address to be loaded for a LoadInst"); + LLDB_LOGF(log, "Couldn't read the address to be loaded for a LoadInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_read_error); return false; @@ -1362,8 +1328,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.ReadMemory(buffer.GetBytes(), R, buffer.GetByteSize(), read_error); if (!read_error.Success()) { - if (log) - log->Printf("Couldn't read from a region on behalf of a LoadInst"); + LLDB_LOGF(log, "Couldn't read from a region on behalf of a LoadInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_read_error); return false; @@ -1373,18 +1338,17 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.WriteMemory(D, buffer.GetBytes(), buffer.GetByteSize(), write_error); if (!write_error.Success()) { - if (log) - log->Printf("Couldn't write to a region on behalf of a LoadInst"); + LLDB_LOGF(log, "Couldn't write to a region on behalf of a LoadInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_read_error); return false; } if (log) { - log->Printf("Interpreted a LoadInst"); - log->Printf(" P : 0x%" PRIx64, P); - log->Printf(" R : 0x%" PRIx64, R); - log->Printf(" D : 0x%" PRIx64, D); + LLDB_LOGF(log, "Interpreted a LoadInst"); + LLDB_LOGF(log, " P : 0x%" PRIx64, P); + LLDB_LOGF(log, " R : 0x%" PRIx64, R); + LLDB_LOGF(log, " D : 0x%" PRIx64, D); } } break; case Instruction::Ret: { @@ -1394,9 +1358,9 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, const StoreInst *store_inst = dyn_cast(inst); if (!store_inst) { - if (log) - log->Printf( - "getOpcode() returns Store, but instruction is not a StoreInst"); + LLDB_LOGF( + log, + "getOpcode() returns Store, but instruction is not a StoreInst"); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; @@ -1421,16 +1385,14 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, lldb::addr_t P = frame.ResolveValue(pointer_operand, module); if (D == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf("StoreInst's value doesn't resolve to anything"); + LLDB_LOGF(log, "StoreInst's value doesn't resolve to anything"); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; } if (P == LLDB_INVALID_ADDRESS) { - if (log) - log->Printf("StoreInst's pointer doesn't resolve to anything"); + LLDB_LOGF(log, "StoreInst's pointer doesn't resolve to anything"); error.SetErrorToGenericError(); error.SetErrorString(bad_value_error); return false; @@ -1441,8 +1403,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.ReadPointerFromMemory(&R, P, read_error); if (!read_error.Success()) { - if (log) - log->Printf("Couldn't read the address to be loaded for a LoadInst"); + LLDB_LOGF(log, "Couldn't read the address to be loaded for a LoadInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_read_error); return false; @@ -1455,8 +1416,7 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.ReadMemory(buffer.GetBytes(), D, buffer.GetByteSize(), read_error); if (!read_error.Success()) { - if (log) - log->Printf("Couldn't read from a region on behalf of a StoreInst"); + LLDB_LOGF(log, "Couldn't read from a region on behalf of a StoreInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_read_error); return false; @@ -1466,28 +1426,26 @@ bool IRInterpreter::Interpret(llvm::Module &module, llvm::Function &function, execution_unit.WriteMemory(R, buffer.GetBytes(), buffer.GetByteSize(), write_error); if (!write_error.Success()) { - if (log) - log->Printf("Couldn't write to a region on behalf of a StoreInst"); + LLDB_LOGF(log, "Couldn't write to a region on behalf of a StoreInst"); error.SetErrorToGenericError(); error.SetErrorString(memory_write_error); return false; } if (log) { - log->Printf("Interpreted a StoreInst"); - log->Printf(" D : 0x%" PRIx64, D); - log->Printf(" P : 0x%" PRIx64, P); - log->Printf(" R : 0x%" PRIx64, R); + LLDB_LOGF(log, "Interpreted a StoreInst"); + LLDB_LOGF(log, " D : 0x%" PRIx64, D); + LLDB_LOGF(log, " P : 0x%" PRIx64, P); + LLDB_LOGF(log, " R : 0x%" PRIx64, R); } } break; case Instruction::Call: { const CallInst *call_inst = dyn_cast(inst); if (!call_inst) { - if (log) - log->Printf( - "getOpcode() returns %s, but instruction is not a CallInst", - inst->getOpcodeName()); + LLDB_LOGF(log, + "getOpcode() returns %s, but instruction is not a CallInst", + inst->getOpcodeName()); error.SetErrorToGenericError(); error.SetErrorString(interpreter_internal_error); return false; diff --git a/lldb/source/Expression/IRMemoryMap.cpp b/lldb/source/Expression/IRMemoryMap.cpp index 70e62ac12b0e827..5fdf452bf94e426 100644 --- a/lldb/source/Expression/IRMemoryMap.cpp +++ b/lldb/source/Expression/IRMemoryMap.cpp @@ -327,12 +327,12 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment, break; case eAllocationPolicyMirror: process_sp = m_process_wp.lock(); - if (log) - log->Printf("IRMemoryMap::%s process_sp=0x%" PRIx64 - ", process_sp->CanJIT()=%s, process_sp->IsAlive()=%s", - __FUNCTION__, (lldb::addr_t)process_sp.get(), - process_sp && process_sp->CanJIT() ? "true" : "false", - process_sp && process_sp->IsAlive() ? "true" : "false"); + LLDB_LOGF(log, + "IRMemoryMap::%s process_sp=0x%" PRIx64 + ", process_sp->CanJIT()=%s, process_sp->IsAlive()=%s", + __FUNCTION__, (lldb::addr_t)process_sp.get(), + process_sp && process_sp->CanJIT() ? "true" : "false", + process_sp && process_sp->IsAlive() ? "true" : "false"); if (process_sp && process_sp->CanJIT() && process_sp->IsAlive()) { if (!zero_memory) allocation_address = @@ -344,10 +344,10 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment, if (!error.Success()) return LLDB_INVALID_ADDRESS; } else { - if (log) - log->Printf("IRMemoryMap::%s switching to eAllocationPolicyHostOnly " - "due to failed condition (see previous expr log message)", - __FUNCTION__); + LLDB_LOGF(log, + "IRMemoryMap::%s switching to eAllocationPolicyHostOnly " + "due to failed condition (see previous expr log message)", + __FUNCTION__); policy = eAllocationPolicyHostOnly; allocation_address = FindSpace(allocation_size); if (allocation_address == LLDB_INVALID_ADDRESS) { @@ -417,10 +417,11 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment, break; } - log->Printf("IRMemoryMap::Malloc (%" PRIu64 ", 0x%" PRIx64 ", 0x%" PRIx64 - ", %s) -> 0x%" PRIx64, - (uint64_t)allocation_size, (uint64_t)alignment, - (uint64_t)permissions, policy_string, aligned_address); + LLDB_LOGF(log, + "IRMemoryMap::Malloc (%" PRIu64 ", 0x%" PRIx64 ", 0x%" PRIx64 + ", %s) -> 0x%" PRIx64, + (uint64_t)allocation_size, (uint64_t)alignment, + (uint64_t)permissions, policy_string, aligned_address); } return aligned_address; @@ -477,10 +478,11 @@ void IRMemoryMap::Free(lldb::addr_t process_address, Status &error) { if (lldb_private::Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)) { - log->Printf("IRMemoryMap::Free (0x%" PRIx64 ") freed [0x%" PRIx64 - "..0x%" PRIx64 ")", - (uint64_t)process_address, iter->second.m_process_start, - iter->second.m_process_start + iter->second.m_size); + LLDB_LOGF(log, + "IRMemoryMap::Free (0x%" PRIx64 ") freed [0x%" PRIx64 + "..0x%" PRIx64 ")", + (uint64_t)process_address, iter->second.m_process_start, + iter->second.m_process_start + iter->second.m_size); } m_allocations.erase(iter); @@ -574,12 +576,13 @@ void IRMemoryMap::WriteMemory(lldb::addr_t process_address, if (lldb_private::Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)) { - log->Printf("IRMemoryMap::WriteMemory (0x%" PRIx64 ", 0x%" PRIx64 - ", 0x%" PRId64 ") went to [0x%" PRIx64 "..0x%" PRIx64 ")", - (uint64_t)process_address, (uint64_t)bytes, (uint64_t)size, - (uint64_t)allocation.m_process_start, - (uint64_t)allocation.m_process_start + - (uint64_t)allocation.m_size); + LLDB_LOGF(log, + "IRMemoryMap::WriteMemory (0x%" PRIx64 ", 0x%" PRIx64 + ", 0x%" PRId64 ") went to [0x%" PRIx64 "..0x%" PRIx64 ")", + (uint64_t)process_address, (uint64_t)bytes, (uint64_t)size, + (uint64_t)allocation.m_process_start, + (uint64_t)allocation.m_process_start + + (uint64_t)allocation.m_size); } } @@ -704,12 +707,13 @@ void IRMemoryMap::ReadMemory(uint8_t *bytes, lldb::addr_t process_address, if (lldb_private::Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)) { - log->Printf("IRMemoryMap::ReadMemory (0x%" PRIx64 ", 0x%" PRIx64 - ", 0x%" PRId64 ") came from [0x%" PRIx64 "..0x%" PRIx64 ")", - (uint64_t)process_address, (uint64_t)bytes, (uint64_t)size, - (uint64_t)allocation.m_process_start, - (uint64_t)allocation.m_process_start + - (uint64_t)allocation.m_size); + LLDB_LOGF(log, + "IRMemoryMap::ReadMemory (0x%" PRIx64 ", 0x%" PRIx64 + ", 0x%" PRId64 ") came from [0x%" PRIx64 "..0x%" PRIx64 ")", + (uint64_t)process_address, (uint64_t)bytes, (uint64_t)size, + (uint64_t)allocation.m_process_start, + (uint64_t)allocation.m_process_start + + (uint64_t)allocation.m_size); } } diff --git a/lldb/source/Expression/LLVMUserExpression.cpp b/lldb/source/Expression/LLVMUserExpression.cpp index 5a1b750318c9f5b..d1866823b5f670d 100644 --- a/lldb/source/Expression/LLVMUserExpression.cpp +++ b/lldb/source/Expression/LLVMUserExpression.cpp @@ -12,12 +12,12 @@ #include "lldb/Core/StreamFile.h" #include "lldb/Core/ValueObjectConstResult.h" #include "lldb/Expression/DiagnosticManager.h" +#include "lldb/Expression/ExpressionVariable.h" #include "lldb/Expression/IRExecutionUnit.h" #include "lldb/Expression/IRInterpreter.h" #include "lldb/Expression/Materializer.h" #include "lldb/Host/HostInfo.h" #include "lldb/Symbol/Block.h" -#include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/ClangExternalASTSourceCommon.h" #include "lldb/Symbol/Function.h" #include "lldb/Symbol/ObjectFile.h" @@ -48,9 +48,7 @@ LLVMUserExpression::LLVMUserExpression(ExecutionContextScope &exe_scope, m_stack_frame_bottom(LLDB_INVALID_ADDRESS), m_stack_frame_top(LLDB_INVALID_ADDRESS), m_allow_cxx(false), m_allow_objc(false), m_transformed_text(), m_execution_unit_sp(), - m_materializer_up(), m_jit_module_wp(), m_enforce_valid_object(true), - m_in_cplusplus_method(false), m_in_objectivec_method(false), - m_in_static_method(false), m_needs_object_ptr(false), m_target(nullptr), + m_materializer_up(), m_jit_module_wp(), m_can_interpret(false), m_materialized_address(LLDB_INVALID_ADDRESS) {} LLVMUserExpression::~LLVMUserExpression() { @@ -161,9 +159,9 @@ LLVMUserExpression::DoExecute(DiagnosticManager &diagnostic_manager, function_stack_bottom = function_stack_pointer - HostInfo::GetPageSize(); function_stack_top = function_stack_pointer; - if (log) - log->Printf( - "-- [UserExpression::Execute] Execution of expression begins --"); + LLDB_LOGF( + log, + "-- [UserExpression::Execute] Execution of expression begins --"); if (exe_ctx.GetProcessPtr()) exe_ctx.GetProcessPtr()->SetRunningUserExpression(true); @@ -175,9 +173,8 @@ LLVMUserExpression::DoExecute(DiagnosticManager &diagnostic_manager, if (exe_ctx.GetProcessPtr()) exe_ctx.GetProcessPtr()->SetRunningUserExpression(false); - if (log) - log->Printf("-- [UserExpression::Execute] Execution of expression " - "completed --"); + LLDB_LOGF(log, "-- [UserExpression::Execute] Execution of expression " + "completed --"); if (execution_result == lldb::eExpressionInterrupted || execution_result == lldb::eExpressionHitBreakpoint) { @@ -251,9 +248,8 @@ bool LLVMUserExpression::FinalizeJITExecution( lldb::addr_t function_stack_top) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)); - if (log) - log->Printf("-- [UserExpression::FinalizeJITExecution] Dematerializing " - "after execution --"); + LLDB_LOGF(log, "-- [UserExpression::FinalizeJITExecution] Dematerializing " + "after execution --"); if (!m_dematerializer_sp) { diagnostic_manager.Printf(eDiagnosticSeverityError, diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp index 0f871fcbefbc63b..cd332484debbcdf 100644 --- a/lldb/source/Expression/Materializer.cpp +++ b/lldb/source/Expression/Materializer.cpp @@ -11,7 +11,6 @@ #include "lldb/Core/ValueObjectConstResult.h" #include "lldb/Core/ValueObjectVariable.h" #include "lldb/Expression/ExpressionVariable.h" -#include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/Symbol.h" #include "lldb/Symbol/Type.h" #include "lldb/Symbol/Variable.h" @@ -46,20 +45,6 @@ uint32_t Materializer::AddStructMember(Entity &entity) { return ret; } -void Materializer::Entity::SetSizeAndAlignmentFromType(CompilerType &type) { - if (llvm::Optional size = type.GetByteSize(nullptr)) - m_size = *size; - - uint32_t bit_alignment = type.GetTypeBitAlign(); - - if (bit_alignment % 8) { - bit_alignment += 8; - bit_alignment &= ~((uint32_t)0x111u); - } - - m_alignment = bit_alignment / 8; -} - class EntityPersistentVariable : public Materializer::Entity { public: EntityPersistentVariable(lldb::ExpressionVariableSP &persistent_variable_sp, @@ -94,9 +79,8 @@ class EntityPersistentVariable : public Materializer::Entity { return; } - if (log) - log->Printf("Allocated %s (0x%" PRIx64 ") successfully", - m_persistent_variable_sp->GetName().GetCString(), mem); + LLDB_LOGF(log, "Allocated %s (0x%" PRIx64 ") successfully", + m_persistent_variable_sp->GetName().GetCString(), mem); // Put the location of the spare memory into the live data of the // ValueObject. @@ -158,11 +142,12 @@ class EntityPersistentVariable : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntityPersistentVariable::Materialize [address = 0x%" PRIx64 - ", m_name = %s, m_flags = 0x%hx]", - (uint64_t)load_addr, - m_persistent_variable_sp->GetName().AsCString(), - m_persistent_variable_sp->m_flags); + LLDB_LOGF(log, + "EntityPersistentVariable::Materialize [address = 0x%" PRIx64 + ", m_name = %s, m_flags = 0x%hx]", + (uint64_t)load_addr, + m_persistent_variable_sp->GetName().AsCString(), + m_persistent_variable_sp->m_flags); } if (m_persistent_variable_sp->m_flags & @@ -209,12 +194,12 @@ class EntityPersistentVariable : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf( - "EntityPersistentVariable::Dematerialize [address = 0x%" PRIx64 - ", m_name = %s, m_flags = 0x%hx]", - (uint64_t)process_address + m_offset, - m_persistent_variable_sp->GetName().AsCString(), - m_persistent_variable_sp->m_flags); + LLDB_LOGF(log, + "EntityPersistentVariable::Dematerialize [address = 0x%" PRIx64 + ", m_name = %s, m_flags = 0x%hx]", + (uint64_t)process_address + m_offset, + m_persistent_variable_sp->GetName().AsCString(), + m_persistent_variable_sp->m_flags); } if (m_delegate) { @@ -291,11 +276,10 @@ class EntityPersistentVariable : public Materializer::Entity { ExpressionVariable::EVNeedsFreezeDry || m_persistent_variable_sp->m_flags & ExpressionVariable::EVKeepInTarget) { - if (log) - log->Printf( - "Dematerializing %s from 0x%" PRIx64 " (size = %llu)", - m_persistent_variable_sp->GetName().GetCString(), (uint64_t)mem, - (unsigned long long)m_persistent_variable_sp->GetByteSize()); + LLDB_LOGF(log, "Dematerializing %s from 0x%" PRIx64 " (size = %llu)", + m_persistent_variable_sp->GetName().GetCString(), + (uint64_t)mem, + (unsigned long long)m_persistent_variable_sp->GetByteSize()); // Read the contents of the spare memory area @@ -441,9 +425,10 @@ class EntityVariable : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntityVariable::Materialize [address = 0x%" PRIx64 - ", m_variable_sp = %s]", - (uint64_t)load_addr, m_variable_sp->GetName().AsCString()); + LLDB_LOGF(log, + "EntityVariable::Materialize [address = 0x%" PRIx64 + ", m_variable_sp = %s]", + (uint64_t)load_addr, m_variable_sp->GetName().AsCString()); } ExecutionContextScope *scope = frame_sp.get(); @@ -545,12 +530,15 @@ class EntityVariable : public Materializer::Entity { return; } - size_t bit_align = - m_variable_sp->GetType()->GetLayoutCompilerType().GetTypeBitAlign(); - size_t byte_align = (bit_align + 7) / 8; + llvm::Optional opt_bit_align = + m_variable_sp->GetType()->GetLayoutCompilerType().GetTypeBitAlign(scope); + if (!opt_bit_align) { + err.SetErrorStringWithFormat("can't get the type alignment for %s", + m_variable_sp->GetName().AsCString()); + return; + } - if (!byte_align) - byte_align = 1; + size_t byte_align = (*opt_bit_align + 7) / 8; Status alloc_error; const bool zero_memory = false; @@ -606,9 +594,10 @@ class EntityVariable : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntityVariable::Dematerialize [address = 0x%" PRIx64 - ", m_variable_sp = %s]", - (uint64_t)load_addr, m_variable_sp->GetName().AsCString()); + LLDB_LOGF(log, + "EntityVariable::Dematerialize [address = 0x%" PRIx64 + ", m_variable_sp = %s]", + (uint64_t)load_addr, m_variable_sp->GetName().AsCString()); } if (m_temporary_allocation != LLDB_INVALID_ADDRESS) { @@ -802,11 +791,14 @@ class EntityResultVariable : public Materializer::Entity { err.SetErrorString("can't get size of type"); return; } - size_t bit_align = m_type.GetTypeBitAlign(); - size_t byte_align = (bit_align + 7) / 8; - if (!byte_align) - byte_align = 1; + llvm::Optional opt_bit_align = m_type.GetTypeBitAlign(exe_scope); + if (!opt_bit_align) { + err.SetErrorStringWithFormat("can't get the type alignment"); + return; + } + + size_t byte_align = (*opt_bit_align + 7) / 8; Status alloc_error; const bool zero_memory = true; @@ -869,20 +861,18 @@ class EntityResultVariable : public Materializer::Entity { return; } - Status type_system_error; - TypeSystem *type_system = target_sp->GetScratchTypeSystemForLanguage( - &type_system_error, m_type.GetMinimumLanguage()); + auto type_system_or_err = + target_sp->GetScratchTypeSystemForLanguage(m_type.GetMinimumLanguage()); - if (!type_system) { + if (auto error = type_system_or_err.takeError()) { err.SetErrorStringWithFormat("Couldn't dematerialize a result variable: " "couldn't get the corresponding type " "system: %s", - type_system_error.AsCString()); + llvm::toString(std::move(error)).c_str()); return; } - PersistentExpressionState *persistent_state = - type_system->GetPersistentExpressionState(); + type_system_or_err->GetPersistentExpressionState(); if (!persistent_state) { err.SetErrorString("Couldn't dematerialize a result variable: " @@ -1064,9 +1054,10 @@ class EntitySymbol : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntitySymbol::Materialize [address = 0x%" PRIx64 - ", m_symbol = %s]", - (uint64_t)load_addr, m_symbol.GetName().AsCString()); + LLDB_LOGF(log, + "EntitySymbol::Materialize [address = 0x%" PRIx64 + ", m_symbol = %s]", + (uint64_t)load_addr, m_symbol.GetName().AsCString()); } const Address sym_address = m_symbol.GetAddress(); @@ -1110,9 +1101,10 @@ class EntitySymbol : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntitySymbol::Dematerialize [address = 0x%" PRIx64 - ", m_symbol = %s]", - (uint64_t)load_addr, m_symbol.GetName().AsCString()); + LLDB_LOGF(log, + "EntitySymbol::Dematerialize [address = 0x%" PRIx64 + ", m_symbol = %s]", + (uint64_t)load_addr, m_symbol.GetName().AsCString()); } // no work needs to be done @@ -1179,9 +1171,10 @@ class EntityRegister : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntityRegister::Materialize [address = 0x%" PRIx64 - ", m_register_info = %s]", - (uint64_t)load_addr, m_register_info.name); + LLDB_LOGF(log, + "EntityRegister::Materialize [address = 0x%" PRIx64 + ", m_register_info = %s]", + (uint64_t)load_addr, m_register_info.name); } RegisterValue reg_value; @@ -1241,9 +1234,10 @@ class EntityRegister : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; if (log) { - log->Printf("EntityRegister::Dematerialize [address = 0x%" PRIx64 - ", m_register_info = %s]", - (uint64_t)load_addr, m_register_info.name); + LLDB_LOGF(log, + "EntityRegister::Dematerialize [address = 0x%" PRIx64 + ", m_register_info = %s]", + (uint64_t)load_addr, m_register_info.name); } Status extract_error; @@ -1380,7 +1374,8 @@ Materializer::Materialize(lldb::StackFrameSP &frame_sp, IRMemoryMap &map, if (Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)) { - log->Printf( + LLDB_LOGF( + log, "Materializer::Materialize (frame_sp = %p, process_address = 0x%" PRIx64 ") materialized:", static_cast(frame_sp.get()), process_address); @@ -1415,9 +1410,10 @@ void Materializer::Dematerializer::Dematerialize(Status &error, } else { if (Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)) { - log->Printf("Materializer::Dematerialize (frame_sp = %p, process_address " - "= 0x%" PRIx64 ") about to dematerialize:", - static_cast(frame_sp.get()), m_process_address); + LLDB_LOGF(log, + "Materializer::Dematerialize (frame_sp = %p, process_address " + "= 0x%" PRIx64 ") about to dematerialize:", + static_cast(frame_sp.get()), m_process_address); for (EntityUP &entity_up : m_materializer->m_entities) entity_up->DumpToLog(*m_map, m_process_address, log); } diff --git a/lldb/source/Expression/REPL.cpp b/lldb/source/Expression/REPL.cpp index f4ed887729d8d54..01350f3dd74d14d 100644 --- a/lldb/source/Expression/REPL.cpp +++ b/lldb/source/Expression/REPL.cpp @@ -433,31 +433,30 @@ void REPL::IOHandlerInputComplete(IOHandler &io_handler, std::string &code) { } } -int REPL::IOHandlerComplete(IOHandler &io_handler, const char *current_line, - const char *cursor, const char *last_char, - int skip_first_n_matches, int max_matches, - StringList &matches, StringList &descriptions) { - matches.Clear(); - - llvm::StringRef line(current_line, cursor - current_line); - +void REPL::IOHandlerComplete(IOHandler &io_handler, + CompletionRequest &request) { // Complete an LLDB command if the first character is a colon... - if (!line.empty() && line[0] == ':') { + if (request.GetRawLine().startswith(":")) { Debugger &debugger = m_target.GetDebugger(); // auto complete LLDB commands - const char *lldb_current_line = line.substr(1).data(); - return debugger.GetCommandInterpreter().HandleCompletion( - lldb_current_line, cursor, last_char, skip_first_n_matches, max_matches, - matches, descriptions); + llvm::StringRef new_line = request.GetRawLine().drop_front(); + CompletionResult sub_result; + CompletionRequest sub_request(new_line, request.GetRawCursorPos() - 1, + sub_result); + debugger.GetCommandInterpreter().HandleCompletion(sub_request); + StringList matches, descriptions; + sub_result.GetMatches(matches); + sub_result.GetDescriptions(descriptions); + request.AddCompletions(matches, descriptions); + return; } // Strip spaces from the line and see if we had only spaces - line = line.ltrim(); - if (line.empty()) { + if (request.GetRawLineUntilCursor().trim().empty()) { // Only spaces on this line, so just indent - matches.AppendString(m_indent_str); - return 1; + request.AddCompletion(m_indent_str); + return; } std::string current_code; @@ -479,12 +478,17 @@ int REPL::IOHandlerComplete(IOHandler &io_handler, const char *current_line, } } - if (cursor > current_line) { - current_code.append("\n"); - current_code.append(current_line, cursor - current_line); - } - - return CompleteCode(current_code, matches); + current_code.append("\n"); + current_code += request.GetRawLineUntilCursor(); + + StringList matches; + int result = CompleteCode(current_code, matches); + if (result == -2) { + assert(matches.GetSize() == 1); + request.AddCompletion(matches.GetStringAtIndex(0), "", + CompletionMode::RewriteLine); + } else + request.AddCompletions(matches); } bool QuitCommandOverrideCallback(void *baton, const char **argv) { diff --git a/lldb/source/Expression/UserExpression.cpp b/lldb/source/Expression/UserExpression.cpp index a72e2a07599e53b..e2d1d2f2b3d2fd7 100644 --- a/lldb/source/Expression/UserExpression.cpp +++ b/lldb/source/Expression/UserExpression.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +#include "lldb/Host/Config.h" + #include #if HAVE_SYS_TYPES_H #include @@ -165,9 +167,8 @@ lldb::ExpressionResults UserExpression::Evaluate( Target *target = exe_ctx.GetTargetPtr(); if (!target) { - if (log) - log->Printf("== [UserExpression::Evaluate] Passed a NULL target, can't " - "run expressions."); + LLDB_LOGF(log, "== [UserExpression::Evaluate] Passed a NULL target, can't " + "run expressions."); error.SetErrorString("expression passed a null target"); return lldb::eExpressionSetupError; } @@ -176,9 +177,9 @@ lldb::ExpressionResults UserExpression::Evaluate( if (process == nullptr || process->GetState() != lldb::eStateStopped) { if (execution_policy == eExecutionPolicyAlways) { - if (log) - log->Printf("== [UserExpression::Evaluate] Expression may not run, but " - "is not constant =="); + LLDB_LOGF(log, + "== [UserExpression::Evaluate] Expression may not run, but " + "is not constant =="); error.SetErrorString("expression needed to run but couldn't"); @@ -224,14 +225,14 @@ lldb::ExpressionResults UserExpression::Evaluate( error)); if (error.Fail()) { if (log) - log->Printf("== [UserExpression::Evaluate] Getting expression: %s ==", - error.AsCString()); + LLDB_LOGF(log, "== [UserExpression::Evaluate] Getting expression: %s ==", + error.AsCString()); return lldb::eExpressionSetupError; } if (log) - log->Printf("== [UserExpression::Evaluate] Parsing expression %s ==", - expr.str().c_str()); + LLDB_LOGF(log, "== [UserExpression::Evaluate] Parsing expression %s ==", + expr.str().c_str()); const bool keep_expression_in_memory = true; const bool generate_debug_info = options.GetGenerateDebugInfo(); @@ -310,8 +311,9 @@ lldb::ExpressionResults UserExpression::Evaluate( if (execution_policy == eExecutionPolicyNever && !user_expression_sp->CanInterpret()) { if (log) - log->Printf("== [UserExpression::Evaluate] Expression may not run, but " - "is not constant =="); + LLDB_LOGF(log, + "== [UserExpression::Evaluate] Expression may not run, but " + "is not constant =="); if (!diagnostic_manager.Diagnostics().size()) error.SetExpressionError(lldb::eExpressionSetupError, @@ -332,7 +334,7 @@ lldb::ExpressionResults UserExpression::Evaluate( diagnostic_manager.Clear(); if (log) - log->Printf("== [UserExpression::Evaluate] Executing expression =="); + LLDB_LOGF(log, "== [UserExpression::Evaluate] Executing expression =="); execution_results = user_expression_sp->Execute(diagnostic_manager, exe_ctx, options, @@ -340,8 +342,8 @@ lldb::ExpressionResults UserExpression::Evaluate( if (execution_results != lldb::eExpressionCompleted) { if (log) - log->Printf("== [UserExpression::Evaluate] Execution completed " - "abnormally =="); + LLDB_LOGF(log, "== [UserExpression::Evaluate] Execution completed " + "abnormally =="); if (!diagnostic_manager.Diagnostics().size()) error.SetExpressionError( @@ -354,13 +356,14 @@ lldb::ExpressionResults UserExpression::Evaluate( result_valobj_sp = expr_result->GetValueObject(); if (log) - log->Printf("== [UserExpression::Evaluate] Execution completed " - "normally with result %s ==", - result_valobj_sp->GetValueAsCString()); + LLDB_LOGF(log, + "== [UserExpression::Evaluate] Execution completed " + "normally with result %s ==", + result_valobj_sp->GetValueAsCString()); } else { if (log) - log->Printf("== [UserExpression::Evaluate] Execution completed " - "normally with no result =="); + LLDB_LOGF(log, "== [UserExpression::Evaluate] Execution completed " + "normally with no result =="); error.SetError(UserExpression::kNoResult, lldb::eErrorTypeGeneric); } diff --git a/lldb/source/Expression/UtilityFunction.cpp b/lldb/source/Expression/UtilityFunction.cpp index eeaeca18da868be..aac8b33a6bfa8ac 100644 --- a/lldb/source/Expression/UtilityFunction.cpp +++ b/lldb/source/Expression/UtilityFunction.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +#include "lldb/Host/Config.h" + #include #if HAVE_SYS_TYPES_H #include diff --git a/lldb/source/Host/common/Editline.cpp b/lldb/source/Host/common/Editline.cpp index d3a70aeaa32670e..0a95dffa40eee30 100644 --- a/lldb/source/Host/common/Editline.cpp +++ b/lldb/source/Host/common/Editline.cpp @@ -14,6 +14,7 @@ #include "lldb/Host/Editline.h" #include "lldb/Host/FileSystem.h" #include "lldb/Host/Host.h" +#include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/LLDBAssert.h" #include "lldb/Utility/SelectHelper.h" @@ -863,26 +864,59 @@ unsigned char Editline::BufferEndCommand(int ch) { /// Prints completions and their descriptions to the given file. Only the /// completions in the interval [start, end) are printed. -static void PrintCompletion(FILE *output_file, size_t start, size_t end, - StringList &completions, StringList &descriptions) { - // This is an 'int' because of printf. - int max_len = 0; - - for (size_t i = start; i < end; i++) { - const char *completion_str = completions.GetStringAtIndex(i); - max_len = std::max((int)strlen(completion_str), max_len); +static void +PrintCompletion(FILE *output_file, + llvm::ArrayRef results, + size_t max_len) { + for (const CompletionResult::Completion &c : results) { + fprintf(output_file, "\t%-*s", (int)max_len, c.GetCompletion().c_str()); + if (!c.GetDescription().empty()) + fprintf(output_file, " -- %s", c.GetDescription().c_str()); + fprintf(output_file, "\n"); } +} + +static void +DisplayCompletions(::EditLine *editline, FILE *output_file, + llvm::ArrayRef results) { + assert(!results.empty()); - for (size_t i = start; i < end; i++) { - const char *completion_str = completions.GetStringAtIndex(i); - const char *description_str = descriptions.GetStringAtIndex(i); + fprintf(output_file, "\n" ANSI_CLEAR_BELOW "Available completions:\n"); + const size_t page_size = 40; + bool all = false; - if (completion_str) - fprintf(output_file, "\n\t%-*s", max_len, completion_str); + auto longest = + std::max_element(results.begin(), results.end(), [](auto &c1, auto &c2) { + return c1.GetCompletion().size() < c2.GetCompletion().size(); + }); - // Print the description if we got one. - if (description_str && strlen(description_str)) - fprintf(output_file, " -- %s", description_str); + const size_t max_len = longest->GetCompletion().size(); + + if (results.size() < page_size) { + PrintCompletion(output_file, results, max_len); + return; + } + + size_t cur_pos = 0; + while (cur_pos < results.size()) { + size_t remaining = results.size() - cur_pos; + size_t next_size = all ? remaining : std::min(page_size, remaining); + + PrintCompletion(output_file, results.slice(cur_pos, next_size), max_len); + + cur_pos += next_size; + + if (cur_pos >= results.size()) + break; + + fprintf(output_file, "More (Y/n/a): "); + char reply = 'n'; + int got_char = el_getc(editline, &reply); + fprintf(output_file, "\n"); + if (got_char == -1 || reply == 'n') + break; + if (reply == 'a') + all = true; } } @@ -891,74 +925,64 @@ unsigned char Editline::TabCommand(int ch) { return CC_ERROR; const LineInfo *line_info = el_line(m_editline); - StringList completions, descriptions; - int page_size = 40; - const int num_completions = m_completion_callback( - line_info->buffer, line_info->cursor, line_info->lastchar, - 0, // Don't skip any matches (start at match zero) - -1, // Get all the matches - completions, descriptions, m_completion_callback_baton); + llvm::StringRef line(line_info->buffer, + line_info->lastchar - line_info->buffer); + unsigned cursor_index = line_info->cursor - line_info->buffer; + CompletionResult result; + CompletionRequest request(line, cursor_index, result); - if (num_completions == 0) + m_completion_callback(request, m_completion_callback_baton); + + llvm::ArrayRef results = result.GetResults(); + + StringList completions; + result.GetMatches(completions); + + if (results.size() == 0) return CC_ERROR; - // if (num_completions == -1) - // { - // el_insertstr (m_editline, m_completion_key); - // return CC_REDISPLAY; - // } - // else - if (num_completions == -2) { - // Replace the entire line with the first string... - el_deletestr(m_editline, line_info->cursor - line_info->buffer); - el_insertstr(m_editline, completions.GetStringAtIndex(0)); + + if (results.size() == 1) { + CompletionResult::Completion completion = results.front(); + switch (completion.GetMode()) { + case CompletionMode::Normal: { + std::string to_add = completion.GetCompletion(); + to_add = to_add.substr(request.GetCursorArgumentPrefix().size()); + if (request.GetParsedArg().IsQuoted()) + to_add.push_back(request.GetParsedArg().quote); + to_add.push_back(' '); + el_insertstr(m_editline, to_add.c_str()); + break; + } + case CompletionMode::Partial: { + std::string to_add = completion.GetCompletion(); + to_add = to_add.substr(request.GetCursorArgumentPrefix().size()); + el_insertstr(m_editline, to_add.c_str()); + break; + } + case CompletionMode::RewriteLine: { + el_deletestr(m_editline, line_info->cursor - line_info->buffer); + el_insertstr(m_editline, completion.GetCompletion().c_str()); + break; + } + } return CC_REDISPLAY; } // If we get a longer match display that first. - const char *completion_str = completions.GetStringAtIndex(0); - if (completion_str != nullptr && *completion_str != '\0') { - el_insertstr(m_editline, completion_str); + std::string longest_prefix = completions.LongestCommonPrefix(); + if (!longest_prefix.empty()) + longest_prefix = + longest_prefix.substr(request.GetCursorArgumentPrefix().size()); + if (!longest_prefix.empty()) { + el_insertstr(m_editline, longest_prefix.c_str()); return CC_REDISPLAY; } - if (num_completions > 1) { - int num_elements = num_completions + 1; - fprintf(m_output_file, "\n" ANSI_CLEAR_BELOW "Available completions:"); - if (num_completions < page_size) { - PrintCompletion(m_output_file, 1, num_elements, completions, - descriptions); - fprintf(m_output_file, "\n"); - } else { - int cur_pos = 1; - char reply; - int got_char; - while (cur_pos < num_elements) { - int endpoint = cur_pos + page_size; - if (endpoint > num_elements) - endpoint = num_elements; - - PrintCompletion(m_output_file, cur_pos, endpoint, completions, - descriptions); - cur_pos = endpoint; - - if (cur_pos >= num_elements) { - fprintf(m_output_file, "\n"); - break; - } - - fprintf(m_output_file, "\nMore (Y/n/a): "); - reply = 'n'; - got_char = el_getc(m_editline, &reply); - if (got_char == -1 || reply == 'n') - break; - if (reply == 'a') - page_size = num_elements - cur_pos; - } - } - DisplayInput(); - MoveCursor(CursorLocation::BlockEnd, CursorLocation::EditingCursor); - } + DisplayCompletions(m_editline, m_output_file, results); + + DisplayInput(); + MoveCursor(CursorLocation::BlockEnd, CursorLocation::EditingCursor); return CC_REDISPLAY; } diff --git a/lldb/source/Host/common/File.cpp b/lldb/source/Host/common/File.cpp index c8c8d7a0d496ce3..269548974d1d5b3 100644 --- a/lldb/source/Host/common/File.cpp +++ b/lldb/source/Host/common/File.cpp @@ -513,50 +513,6 @@ Status File::Read(void *buf, size_t &num_bytes, off_t &offset) { return error; } -Status File::Read(size_t &num_bytes, off_t &offset, bool null_terminate, - DataBufferSP &data_buffer_sp) { - Status error; - - if (num_bytes > 0) { - int fd = GetDescriptor(); - if (fd != kInvalidDescriptor) { - struct stat file_stats; - if (::fstat(fd, &file_stats) == 0) { - if (file_stats.st_size > offset) { - const size_t bytes_left = file_stats.st_size - offset; - if (num_bytes > bytes_left) - num_bytes = bytes_left; - - size_t num_bytes_plus_nul_char = num_bytes + (null_terminate ? 1 : 0); - std::unique_ptr data_heap_up; - data_heap_up.reset(new DataBufferHeap()); - data_heap_up->SetByteSize(num_bytes_plus_nul_char); - - if (data_heap_up) { - error = Read(data_heap_up->GetBytes(), num_bytes, offset); - if (error.Success()) { - // Make sure we read exactly what we asked for and if we got - // less, adjust the array - if (num_bytes_plus_nul_char < data_heap_up->GetByteSize()) - data_heap_up->SetByteSize(num_bytes_plus_nul_char); - data_buffer_sp.reset(data_heap_up.release()); - return error; - } - } - } else - error.SetErrorString("file is empty"); - } else - error.SetErrorToErrno(); - } else - error.SetErrorString("invalid file handle"); - } else - error.SetErrorString("invalid file handle"); - - num_bytes = 0; - data_buffer_sp.reset(); - return error; -} - Status File::Write(const void *buf, size_t &num_bytes, off_t &offset) { Status error; diff --git a/lldb/source/Host/common/FileSystem.cpp b/lldb/source/Host/common/FileSystem.cpp index d5ac05bd447c4e9..8dff9f1301fc056 100644 --- a/lldb/source/Host/common/FileSystem.cpp +++ b/lldb/source/Host/common/FileSystem.cpp @@ -49,7 +49,7 @@ void FileSystem::Initialize() { InstanceImpl().emplace(); } -void FileSystem::Initialize(FileCollector &collector) { +void FileSystem::Initialize(lldb_private::FileCollector &collector) { lldbassert(!InstanceImpl() && "Already initialized."); InstanceImpl().emplace(collector); } diff --git a/lldb/source/Host/common/Host.cpp b/lldb/source/Host/common/Host.cpp index be206406e93a61f..8e210c7e5fa56a1 100644 --- a/lldb/source/Host/common/Host.cpp +++ b/lldb/source/Host/common/Host.cpp @@ -99,7 +99,7 @@ struct MonitorInfo { static thread_result_t MonitorChildProcessThreadFunction(void *arg); -HostThread Host::StartMonitoringChildProcess( +llvm::Expected Host::StartMonitoringChildProcess( const Host::MonitorChildProcessCallback &callback, lldb::pid_t pid, bool monitor_signals) { MonitorInfo *info_ptr = new MonitorInfo(); @@ -112,7 +112,7 @@ HostThread Host::StartMonitoringChildProcess( ::snprintf(thread_name, sizeof(thread_name), "", pid); return ThreadLauncher::LaunchThread( - thread_name, MonitorChildProcessThreadFunction, info_ptr, nullptr); + thread_name, MonitorChildProcessThreadFunction, info_ptr, 0); } #ifndef __linux__ @@ -164,8 +164,7 @@ static bool CheckForMonitorCancellation() { static thread_result_t MonitorChildProcessThreadFunction(void *arg) { Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); const char *function = __FUNCTION__; - if (log) - log->Printf("%s (arg = %p) thread starting...", function, arg); + LLDB_LOGF(log, "%s (arg = %p) thread starting...", function, arg); MonitorInfo *info = (MonitorInfo *)arg; @@ -193,9 +192,8 @@ static thread_result_t MonitorChildProcessThreadFunction(void *arg) { while (1) { log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS); - if (log) - log->Printf("%s ::waitpid (pid = %" PRIi32 ", &status, options = %i)...", - function, pid, options); + LLDB_LOGF(log, "%s ::waitpid (pid = %" PRIi32 ", &status, options = %i)...", + function, pid, options); if (CheckForMonitorCancellation()) break; @@ -245,12 +243,12 @@ static thread_result_t MonitorChildProcessThreadFunction(void *arg) { #endif log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS); - if (log) - log->Printf("%s ::waitpid (pid = %" PRIi32 - ", &status, options = %i) => pid = %" PRIi32 - ", status = 0x%8.8x (%s), signal = %i, exit_state = %i", - function, pid, options, wait_pid, status, status_cstr, - signal, exit_status); + LLDB_LOGF(log, + "%s ::waitpid (pid = %" PRIi32 + ", &status, options = %i) => pid = %" PRIi32 + ", status = 0x%8.8x (%s), signal = %i, exit_state = %i", + function, pid, options, wait_pid, status, status_cstr, signal, + exit_status); if (exited || (signal != 0 && monitor_signals)) { bool callback_return = false; @@ -259,18 +257,18 @@ static thread_result_t MonitorChildProcessThreadFunction(void *arg) { // If our process exited, then this thread should exit if (exited && wait_pid == abs(pid)) { - if (log) - log->Printf("%s (arg = %p) thread exiting because pid received " - "exit signal...", - __FUNCTION__, arg); + LLDB_LOGF(log, + "%s (arg = %p) thread exiting because pid received " + "exit signal...", + __FUNCTION__, arg); break; } // If the callback returns true, it means this process should exit if (callback_return) { - if (log) - log->Printf("%s (arg = %p) thread exiting because callback " - "returned true...", - __FUNCTION__, arg); + LLDB_LOGF(log, + "%s (arg = %p) thread exiting because callback " + "returned true...", + __FUNCTION__, arg); break; } } @@ -279,8 +277,7 @@ static thread_result_t MonitorChildProcessThreadFunction(void *arg) { } log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS); - if (log) - log->Printf("%s (arg = %p) thread exiting...", __FUNCTION__, arg); + LLDB_LOGF(log, "%s (arg = %p) thread exiting...", __FUNCTION__, arg); return nullptr; } diff --git a/lldb/source/Host/common/HostInfoBase.cpp b/lldb/source/Host/common/HostInfoBase.cpp index 130f0eb8ac8ddd6..3765f36fc79ae8b 100644 --- a/lldb/source/Host/common/HostInfoBase.cpp +++ b/lldb/source/Host/common/HostInfoBase.cpp @@ -221,25 +221,24 @@ bool HostInfoBase::ComputePathRelativeToLibrary(FileSpec &file_spec, return false; std::string raw_path = lldb_file_spec.GetPath(); - if (log) - log->Printf("HostInfo::%s() attempting to " - "derive the path %s relative to liblldb install path: %s", - __FUNCTION__, dir.data(), raw_path.c_str()); + LLDB_LOGF(log, + "HostInfo::%s() attempting to " + "derive the path %s relative to liblldb install path: %s", + __FUNCTION__, dir.data(), raw_path.c_str()); // Drop bin (windows) or lib llvm::StringRef parent_path = llvm::sys::path::parent_path(raw_path); if (parent_path.empty()) { - if (log) - log->Printf("HostInfo::%s() failed to find liblldb within the shared " - "lib path", - __FUNCTION__); + LLDB_LOGF(log, + "HostInfo::%s() failed to find liblldb within the shared " + "lib path", + __FUNCTION__); return false; } raw_path = (parent_path + dir).str(); - if (log) - log->Printf("HostInfo::%s() derived the path as: %s", __FUNCTION__, - raw_path.c_str()); + LLDB_LOGF(log, "HostInfo::%s() derived the path as: %s", __FUNCTION__, + raw_path.c_str()); file_spec.GetDirectory().SetString(raw_path); return (bool)file_spec.GetDirectory(); } diff --git a/lldb/source/Host/common/HostNativeThreadBase.cpp b/lldb/source/Host/common/HostNativeThreadBase.cpp index a5f876a7232af6e..fe7d85acaf118b4 100644 --- a/lldb/source/Host/common/HostNativeThreadBase.cpp +++ b/lldb/source/Host/common/HostNativeThreadBase.cpp @@ -62,8 +62,7 @@ HostNativeThreadBase::ThreadCreateTrampoline(lldb::thread_arg_t arg) { thread_arg_t thread_arg = info->thread_arg; Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_THREAD)); - if (log) - log->Printf("thread created"); + LLDB_LOGF(log, "thread created"); delete info; return thread_fptr(thread_arg); diff --git a/lldb/source/Host/common/HostProcess.cpp b/lldb/source/Host/common/HostProcess.cpp index d8f71af5e650485..e180687551f8f85 100644 --- a/lldb/source/Host/common/HostProcess.cpp +++ b/lldb/source/Host/common/HostProcess.cpp @@ -32,7 +32,7 @@ lldb::pid_t HostProcess::GetProcessId() const { bool HostProcess::IsRunning() const { return m_native_process->IsRunning(); } -HostThread +llvm::Expected HostProcess::StartMonitoring(const Host::MonitorChildProcessCallback &callback, bool monitor_signals) { return m_native_process->StartMonitoring(callback, monitor_signals); diff --git a/lldb/source/Host/common/MainLoop.cpp b/lldb/source/Host/common/MainLoop.cpp index 1ce09a84671c523..6f774451c8a446b 100644 --- a/lldb/source/Host/common/MainLoop.cpp +++ b/lldb/source/Host/common/MainLoop.cpp @@ -320,6 +320,7 @@ MainLoop::RegisterSignal(int signo, const Callback &callback, Status &error) { // Even if using kqueue, the signal handler will still be invoked, so it's // important to replace it with our "benign" handler. int ret = sigaction(signo, &new_action, &info.old_action); + (void)ret; assert(ret == 0 && "sigaction failed"); #if HAVE_SYS_EVENT_H diff --git a/lldb/source/Host/common/MonitoringProcessLauncher.cpp b/lldb/source/Host/common/MonitoringProcessLauncher.cpp index 2ee69353e19a619..55e9f69a089aa22 100644 --- a/lldb/source/Host/common/MonitoringProcessLauncher.cpp +++ b/lldb/source/Host/common/MonitoringProcessLauncher.cpp @@ -53,8 +53,12 @@ MonitoringProcessLauncher::LaunchProcess(const ProcessLaunchInfo &launch_info, Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); assert(launch_info.GetMonitorProcessCallback()); - process.StartMonitoring(launch_info.GetMonitorProcessCallback(), - launch_info.GetMonitorSignals()); + llvm::Expected maybe_thread = + process.StartMonitoring(launch_info.GetMonitorProcessCallback(), + launch_info.GetMonitorSignals()); + if (!maybe_thread) + error.SetErrorStringWithFormatv("failed to launch host thread: {}", + llvm::toString(maybe_thread.takeError())); if (log) log->PutCString("started monitoring child process."); } else { diff --git a/lldb/source/Host/common/NativeProcessProtocol.cpp b/lldb/source/Host/common/NativeProcessProtocol.cpp index 90272cb8d0bc656..8d37c85f394bb2d 100644 --- a/lldb/source/Host/common/NativeProcessProtocol.cpp +++ b/lldb/source/Host/common/NativeProcessProtocol.cpp @@ -16,6 +16,8 @@ #include "lldb/Utility/State.h" #include "lldb/lldb-enumerations.h" +#include "llvm/Support/Process.h" + using namespace lldb; using namespace lldb_private; @@ -329,22 +331,23 @@ void NativeProcessProtocol::SynchronouslyNotifyProcessStateChanged( if (log) { if (!m_delegates.empty()) { - log->Printf("NativeProcessProtocol::%s: sent state notification [%s] " - "from process %" PRIu64, - __FUNCTION__, lldb_private::StateAsCString(state), GetID()); + LLDB_LOGF(log, + "NativeProcessProtocol::%s: sent state notification [%s] " + "from process %" PRIu64, + __FUNCTION__, lldb_private::StateAsCString(state), GetID()); } else { - log->Printf("NativeProcessProtocol::%s: would send state notification " - "[%s] from process %" PRIu64 ", but no delegates", - __FUNCTION__, lldb_private::StateAsCString(state), GetID()); + LLDB_LOGF(log, + "NativeProcessProtocol::%s: would send state notification " + "[%s] from process %" PRIu64 ", but no delegates", + __FUNCTION__, lldb_private::StateAsCString(state), GetID()); } } } void NativeProcessProtocol::NotifyDidExec() { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); - if (log) - log->Printf("NativeProcessProtocol::%s - preparing to call delegates", - __FUNCTION__); + LLDB_LOGF(log, "NativeProcessProtocol::%s - preparing to call delegates", + __FUNCTION__); { std::lock_guard guard(m_delegates_mutex); @@ -659,6 +662,58 @@ Status NativeProcessProtocol::ReadMemoryWithoutTrap(lldb::addr_t addr, return Status(); } +llvm::Expected +NativeProcessProtocol::ReadCStringFromMemory(lldb::addr_t addr, char *buffer, + size_t max_size, + size_t &total_bytes_read) { + static const size_t cache_line_size = + llvm::sys::Process::getPageSizeEstimate(); + size_t bytes_read = 0; + size_t bytes_left = max_size; + addr_t curr_addr = addr; + size_t string_size; + char *curr_buffer = buffer; + total_bytes_read = 0; + Status status; + + while (bytes_left > 0 && status.Success()) { + addr_t cache_line_bytes_left = + cache_line_size - (curr_addr % cache_line_size); + addr_t bytes_to_read = std::min(bytes_left, cache_line_bytes_left); + status = ReadMemory(curr_addr, reinterpret_cast(curr_buffer), + bytes_to_read, bytes_read); + + if (bytes_read == 0) + break; + + void *str_end = std::memchr(curr_buffer, '\0', bytes_read); + if (str_end != nullptr) { + total_bytes_read = + (size_t)(reinterpret_cast(str_end) - buffer + 1); + status.Clear(); + break; + } + + total_bytes_read += bytes_read; + curr_buffer += bytes_read; + curr_addr += bytes_read; + bytes_left -= bytes_read; + } + + string_size = total_bytes_read - 1; + + // Make sure we return a null terminated string. + if (bytes_left == 0 && max_size > 0 && buffer[max_size - 1] != '\0') { + buffer[max_size - 1] = '\0'; + total_bytes_read--; + } + + if (!status.Success()) + return status.ToError(); + + return llvm::StringRef(buffer, string_size); +} + lldb::StateType NativeProcessProtocol::GetState() const { std::lock_guard guard(m_state_mutex); return m_state; diff --git a/lldb/source/Host/common/NativeRegisterContext.cpp b/lldb/source/Host/common/NativeRegisterContext.cpp index 2f30d52aea6397c..fe40073eb59de3e 100644 --- a/lldb/source/Host/common/NativeRegisterContext.cpp +++ b/lldb/source/Host/common/NativeRegisterContext.cpp @@ -114,16 +114,15 @@ lldb::addr_t NativeRegisterContext::GetPC(lldb::addr_t fail_value) { uint32_t reg = ConvertRegisterKindToRegisterNumber(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC); - if (log) - log->Printf("NativeRegisterContext::%s using reg index %" PRIu32 - " (default %" PRIu64 ")", - __FUNCTION__, reg, fail_value); + LLDB_LOGF(log, + "NativeRegisterContext::%s using reg index %" PRIu32 + " (default %" PRIu64 ")", + __FUNCTION__, reg, fail_value); const uint64_t retval = ReadRegisterAsUnsigned(reg, fail_value); - if (log) - log->Printf("NativeRegisterContext::%s " PRIu32 " retval %" PRIu64, - __FUNCTION__, retval); + LLDB_LOGF(log, "NativeRegisterContext::%s " PRIu32 " retval %" PRIu64, + __FUNCTION__, retval); return retval; } @@ -192,20 +191,19 @@ NativeRegisterContext::ReadRegisterAsUnsigned(const RegisterInfo *reg_info, RegisterValue value; Status error = ReadRegister(reg_info, value); if (error.Success()) { - if (log) - log->Printf("NativeRegisterContext::%s ReadRegister() succeeded, value " - "%" PRIu64, - __FUNCTION__, value.GetAsUInt64()); + LLDB_LOGF(log, + "NativeRegisterContext::%s ReadRegister() succeeded, value " + "%" PRIu64, + __FUNCTION__, value.GetAsUInt64()); return value.GetAsUInt64(); } else { - if (log) - log->Printf("NativeRegisterContext::%s ReadRegister() failed, error %s", - __FUNCTION__, error.AsCString()); + LLDB_LOGF(log, + "NativeRegisterContext::%s ReadRegister() failed, error %s", + __FUNCTION__, error.AsCString()); } } else { - if (log) - log->Printf("NativeRegisterContext::%s ReadRegister() null reg_info", - __FUNCTION__); + LLDB_LOGF(log, "NativeRegisterContext::%s ReadRegister() null reg_info", + __FUNCTION__); } return fail_value; } diff --git a/lldb/source/Host/common/OptionParser.cpp b/lldb/source/Host/common/OptionParser.cpp index 92ff6f63d951f4b..1e76f9b8f9f1406 100644 --- a/lldb/source/Host/common/OptionParser.cpp +++ b/lldb/source/Host/common/OptionParser.cpp @@ -27,8 +27,9 @@ void OptionParser::Prepare(std::unique_lock &lock) { void OptionParser::EnableError(bool error) { opterr = error ? 1 : 0; } -int OptionParser::Parse(int argc, char *const argv[], llvm::StringRef optstring, - const Option *longopts, int *longindex) { +int OptionParser::Parse(llvm::MutableArrayRef argv, + llvm::StringRef optstring, const Option *longopts, + int *longindex) { std::vector