Jonas Devlieghere f7d5e593d3
[lldb] Check for arm64e debugserver in skipUnlessArm64eSupported (#188082)
Explicitly check whether we are building debugserver for arm64e. To
debug an arm64e binary, debugserver itself needs to be an arm64e
process.

This PR eliminates the possibility of configuring LLDB with Right now,
it's possible to configure CMake with
`LLDB_ENABLE_ARM64E_DEBUGSERVER=Off` and the decorator wouldn't account
for that.
2026-03-23 14:45:05 -05:00

67 lines
2.7 KiB
Plaintext
Executable File

#!@Python3_EXECUTABLE@
import os
import subprocess
import sys
dotest_path = '@LLDB_SOURCE_DIR_CONFIGURED@/test/API/dotest.py'
dotest_common_args_str = '@LLDB_TEST_COMMON_ARGS_CONFIGURED@'
dotest_user_args_str = '@LLDB_TEST_USER_ARGS_CONFIGURED@'
arch = '@LLDB_TEST_ARCH@'
executable = '@LLDB_TEST_EXECUTABLE_CONFIGURED@'
compiler = '@LLDB_TEST_COMPILER_CONFIGURED@'
dsymutil = '@LLDB_TEST_DSYMUTIL_CONFIGURED@'
make = '@LLDB_TEST_MAKE_CONFIGURED@'
lldb_build_dir = '@LLDB_TEST_BUILD_DIRECTORY_CONFIGURED@'
lldb_build_intel_pt = "@LLDB_BUILD_INTEL_PT@"
lldb_framework_dir = "@LLDB_FRAMEWORK_DIR_CONFIGURED@"
lldb_libs_dir = "@LLDB_LIBS_DIR_CONFIGURED@"
llvm_tools_dir = "@LLVM_TOOLS_DIR_CONFIGURED@"
lldb_obj_root = "@LLDB_BINARY_DIR@"
lldb_launcher = "@LLDB_LAUNCHER_CONFIGURED@"
has_libcxx = @LLDB_HAS_LIBCXX@
libcxx_libs_dir = "@LIBCXX_LIBRARY_DIR@"
libcxx_include_dir = "@LIBCXX_GENERATED_INCLUDE_DIR@"
libcxx_include_target_dir = "@LIBCXX_GENERATED_INCLUDE_TARGET_DIR@"
cmake_build_type = "@CMAKE_BUILD_TYPE@"
lldb_enable_arm64e_debugserver = @LLDB_USE_ARM64E_DEBUGSERVER@
if __name__ == '__main__':
wrapper_args = sys.argv[1:]
dotest_args = []
# split on an empty string will produce [''] and if you
# add that to the command, it will be treated as a directory...
if dotest_common_args_str:
dotest_args.extend(dotest_common_args_str.split(';'))
if dotest_user_args_str:
dotest_args.extend(dotest_user_args_str.split(';'))
# Build dotest.py command.
cmd = [sys.executable, dotest_path]
cmd.extend(['--arch', arch])
cmd.extend(dotest_args)
cmd.extend(['--build-dir', lldb_build_dir])
cmd.extend(['--executable', executable])
cmd.extend(['--compiler', compiler])
cmd.extend(['--dsymutil', dsymutil])
cmd.extend(['--make', make])
cmd.extend(['--lldb-libs-dir', lldb_libs_dir])
cmd.extend(['--llvm-tools-dir', llvm_tools_dir])
if has_libcxx:
cmd.extend(['--libcxx-include-dir', libcxx_include_dir])
if libcxx_include_target_dir:
cmd.extend(['--libcxx-include-target-dir', libcxx_include_target_dir])
cmd.extend(['--libcxx-library-dir', libcxx_libs_dir])
if lldb_framework_dir:
cmd.extend(['--framework', lldb_framework_dir])
if lldb_build_intel_pt == "1":
cmd.extend(['--enable-plugin', 'intel-pt'])
if lldb_enable_arm64e_debugserver:
cmd.extend(['--arm64e-debugserver'])
cmd.extend(['--lldb-obj-root', lldb_obj_root])
cmd.extend(['--cmake-build-type', cmake_build_type])
cmd.extend(wrapper_args)
if lldb_launcher:
cmd = [lldb_launcher] + cmd
# Invoke dotest.py and return exit code.
print(' '.join(cmd))
sys.exit(subprocess.call(cmd))