Revert "[lldb/test] Automatically find debug servers to test"

The commit 7df4eaaa93 appears to
break the windows bot. Revert while I investigate.
This commit is contained in:
Pavel Labath 2021-02-11 20:25:10 +01:00
parent 8880a63a15
commit 3cad308ce5
8 changed files with 86 additions and 10 deletions

View File

@ -366,6 +366,12 @@ def parseOptionsAndInitTestdirs():
args.executable)
sys.exit(-1)
if args.server and args.out_of_tree_debugserver:
logging.warning('Both --server and --out-of-tree-debugserver are set')
if args.server and not args.out_of_tree_debugserver:
os.environ['LLDB_DEBUGSERVER_PATH'] = args.server
if args.excluded:
for excl_file in args.excluded:
parseExclusion(excl_file)

View File

@ -100,6 +100,10 @@ def create_parser():
'--executable',
metavar='executable-path',
help='The path to the lldb executable')
group.add_argument(
'--server',
metavar='server-path',
help='The path to the debug server executable to use')
group.add_argument(
'--out-of-tree-debugserver',
dest='out_of_tree_debugserver',

View File

@ -15,12 +15,54 @@ from lldbsuite.support import seven
from lldbsuite.test.lldbtest import *
from lldbsuite.test import configuration
from textwrap import dedent
import shutil
def _get_support_exe(basename):
support_dir = lldb.SBHostOS.GetLLDBPath(lldb.ePathTypeSupportExecutableDir)
def _get_debug_monitor_from_lldb(lldb_exe, debug_monitor_basename):
"""Return the debug monitor exe path given the lldb exe path.
return shutil.which(basename, path=support_dir.GetDirectory())
This method attempts to construct a valid debug monitor exe name
from a given lldb exe name. It will return None if the synthesized
debug monitor name is not found to exist.
The debug monitor exe path is synthesized by taking the directory
of the lldb exe, and replacing the portion of the base name that
matches "lldb" (case insensitive) and replacing with the value of
debug_monitor_basename.
Args:
lldb_exe: the path to an lldb executable.
debug_monitor_basename: the base name portion of the debug monitor
that will replace 'lldb'.
Returns:
A path to the debug monitor exe if it is found to exist; otherwise,
returns None.
"""
if not lldb_exe:
return None
exe_dir = os.path.dirname(lldb_exe)
exe_base = os.path.basename(lldb_exe)
# we'll rebuild the filename by replacing lldb with
# the debug monitor basename, keeping any prefix or suffix in place.
regex = re.compile(r"lldb", re.IGNORECASE)
new_base = regex.sub(debug_monitor_basename, exe_base)
debug_monitor_exe = os.path.join(exe_dir, new_base)
if os.path.exists(debug_monitor_exe):
return debug_monitor_exe
new_base = regex.sub(
'LLDB.framework/Versions/A/Resources/' +
debug_monitor_basename,
exe_base)
debug_monitor_exe = os.path.join(exe_dir, new_base)
if os.path.exists(debug_monitor_exe):
return debug_monitor_exe
return None
def get_lldb_server_exe():
@ -30,8 +72,11 @@ def get_lldb_server_exe():
A path to the lldb-server exe if it is found to exist; otherwise,
returns None.
"""
if "LLDB_DEBUGSERVER_PATH" in os.environ:
return os.environ["LLDB_DEBUGSERVER_PATH"]
return _get_support_exe("lldb-server")
return _get_debug_monitor_from_lldb(
lldbtest_config.lldbExec, "lldb-server")
def get_debugserver_exe():
@ -41,11 +86,15 @@ def get_debugserver_exe():
A path to the debugserver exe if it is found to exist; otherwise,
returns None.
"""
if "LLDB_DEBUGSERVER_PATH" in os.environ:
return os.environ["LLDB_DEBUGSERVER_PATH"]
if configuration.arch and configuration.arch == "x86_64" and \
platform.machine().startswith("arm64"):
return '/Library/Apple/usr/libexec/oah/debugserver'
return _get_support_exe("debugserver")
return _get_debug_monitor_from_lldb(
lldbtest_config.lldbExec, "debugserver")
_LOG_LINE_REGEX = re.compile(r'^(lldb-server|debugserver)\s+<\s*(\d+)>' +
'\s+(read|send)\s+packet:\s+(.+)$')

View File

@ -108,8 +108,18 @@ if(CMAKE_HOST_APPLE)
message(STATUS "LLDB tests use out-of-tree debugserver: ${system_debugserver_path}")
list(APPEND LLDB_TEST_COMMON_ARGS --out-of-tree-debugserver)
add_lldb_test_dependency(debugserver)
elseif(TARGET debugserver)
set(debugserver_path ${LLVM_RUNTIME_OUTPUT_INTDIR}/debugserver)
message(STATUS "LLDB Tests use just-built debugserver: ${debugserver_path}")
set(LLDB_TEST_SERVER ${debugserver_path})
add_lldb_test_dependency(debugserver)
elseif(TARGET lldb-server)
set(lldb_server_path ${LLVM_RUNTIME_OUTPUT_INTDIR}/lldb-server)
message(STATUS "LLDB Tests use just-built lldb-server: ${lldb_server_path}")
set(LLDB_TEST_SERVER ${lldb_server_path})
add_lldb_test_dependency(lldb-server)
else()
message(STATUS "LLDB Tests use just-built debug server")
message(WARNING "LLDB Tests enabled, but no server available")
endif()
endif()
@ -126,6 +136,7 @@ if(LLDB_BUILT_STANDALONE)
string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} LLDB_TEST_EXECUTABLE "${LLDB_TEST_EXECUTABLE}")
string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} LLDB_TEST_COMPILER "${LLDB_TEST_COMPILER}")
string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} LLDB_TEST_DSYMUTIL "${LLDB_TEST_DSYMUTIL}")
string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} LLDB_TEST_SERVER "${LLDB_TEST_SERVER}")
# Remaining ones must be paths to the provided LLVM build-tree.
if(LLVM_CONFIGURATION_TYPES)
@ -152,6 +163,7 @@ string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_BUILD_DI
string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_EXECUTABLE "${LLDB_TEST_EXECUTABLE}")
string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_COMPILER "${LLDB_TEST_COMPILER}")
string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_DSYMUTIL "${LLDB_TEST_DSYMUTIL}")
string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_TEST_SERVER "${LLDB_TEST_SERVER}")
# Configure the API test suite.
configure_lit_site_cfg(

View File

@ -3,7 +3,6 @@ import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
from lldbgdbserverutils import get_debugserver_exe
import os
import platform
@ -29,7 +28,7 @@ class PlatformSDKTestCase(TestBase):
TIMEOUT = 2
def no_debugserver(self):
if get_debugserver_exe() is None:
if os.getenv('LLDB_DEBUGSERVER_PATH') is None:
return 'no debugserver'
return None
@ -89,7 +88,7 @@ class PlatformSDKTestCase(TestBase):
shutil.move(exe, exe_sdk_path)
# Attach to it with debugserver.
debugserver = get_debugserver_exe()
debugserver = os.getenv('LLDB_DEBUGSERVER_PATH')
debugserver_args = [
'localhost:{}'.format(self.PORT), '--attach={}'.format(pid)
]

View File

@ -29,6 +29,7 @@ config.lldb_executable = '@LLDB_TEST_EXECUTABLE@'
config.test_arch = '@LLDB_TEST_ARCH@'
config.test_compiler = '@LLDB_TEST_COMPILER@'
config.dsymutil = '@LLDB_TEST_DSYMUTIL@'
config.server = '@LLDB_TEST_SERVER@'
# The API tests use their own module caches.
config.lldb_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_LLDB@", "lldb-api")
config.clang_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_CLANG@", "lldb-api")
@ -55,6 +56,7 @@ try:
config.lldb_libs_dir = config.lldb_libs_dir % lit_config.params
config.test_compiler = config.test_compiler % lit_config.params
config.dsymutil = config.dsymutil % lit_config.params
config.server = config.server % lit_config.params
config.lldb_framework_dir = config.lldb_framework_dir % lit_config.params
config.dotest_args_str = config.dotest_args_str % lit_config.params
except KeyError as e:

View File

@ -19,6 +19,7 @@ set(vars
LLDB_TEST_EXECUTABLE
LLDB_TEST_COMPILER
LLDB_TEST_DSYMUTIL
LLDB_TEST_SERVER
LLDB_LIBS_DIR
LLVM_TOOLS_DIR
)

View File

@ -8,6 +8,7 @@ arch = '@LLDB_TEST_ARCH@'
executable = '@LLDB_TEST_EXECUTABLE_CONFIGURED@'
compiler = '@LLDB_TEST_COMPILER_CONFIGURED@'
dsymutil = '@LLDB_TEST_DSYMUTIL_CONFIGURED@'
server = '@LLDB_TEST_SERVER_CONFIGURED@'
lldb_build_dir = '@LLDB_TEST_BUILD_DIRECTORY_CONFIGURED@'
lldb_build_intel_pt = "@LLDB_BUILD_INTEL_PT@"
lldb_framework_dir = "@LLDB_FRAMEWORK_DIR_CONFIGURED@"
@ -27,6 +28,8 @@ if __name__ == '__main__':
cmd.extend(['--dsymutil', dsymutil])
cmd.extend(['--lldb-libs-dir', lldb_libs_dir])
cmd.extend(['--llvm-tools-dir', llvm_tools_dir])
if server:
cmd.extend(['--server', server])
if lldb_framework_dir:
cmd.extend(['--framework', lldb_framework_dir])
if lldb_build_intel_pt == "1":