From 5e420717a1c4d9b25c645362f92dc02ccf2c5977 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Thu, 16 Nov 2017 18:26:20 +0000 Subject: [PATCH] Resubmit "Refactor debuginfo-tests" This was reverted due to some failures on specific darwin buildbots, the issue being that the new lit configuration was not setting the SDKROOT environment variable. We've tested a fix locally and confirmed that it works, so this patch resubmits everything with the fix applied. llvm-svn: 318435 --- clang/test/CMakeLists.txt | 7 +++ clang/test/lit.cfg.py | 2 - debuginfo-tests/CMakeLists.txt | 36 +++++++++++++ debuginfo-tests/lit.cfg.py | 59 ++++++++++++++++++++++ debuginfo-tests/lit.site.cfg.py.in | 25 +++++++++ .../{ => tests}/aggregate-indirect-arg.cpp | 2 +- debuginfo-tests/{ => tests}/asan-blocks.c | 0 debuginfo-tests/{ => tests}/asan.c | 0 debuginfo-tests/{ => tests}/block_var.m | 2 +- debuginfo-tests/{ => tests}/blocks.m | 8 +-- debuginfo-tests/{ => tests}/ctor.cpp | 4 +- debuginfo-tests/{ => tests}/dbg-arg.c | 0 debuginfo-tests/{ => tests}/foreach.m | 4 +- .../{ => tests}/forward-declare-class.cpp | 0 debuginfo-tests/{ => tests}/lit.local.cfg | 0 debuginfo-tests/{ => tests}/llgdb.py | 0 debuginfo-tests/{ => tests}/nested-struct.cpp | 0 debuginfo-tests/{ => tests}/nrvo-string.cpp | 0 debuginfo-tests/{ => tests}/safestack.c | 0 debuginfo-tests/{ => tests}/sret.cpp | 10 ++-- debuginfo-tests/{ => tests}/stack-var.c | 0 debuginfo-tests/{ => tests}/static-member-2.cpp | 0 debuginfo-tests/{ => tests}/static-member.cpp | 0 debuginfo-tests/{ => tests}/vla.c | 2 +- llvm/CMakeLists.txt | 19 ++++--- llvm/projects/CMakeLists.txt | 1 + llvm/utils/lit/lit/llvm/config.py | 9 ++-- llvm/utils/test_debuginfo.pl | 2 +- 28 files changed, 163 insertions(+), 29 deletions(-) create mode 100644 debuginfo-tests/CMakeLists.txt create mode 100644 debuginfo-tests/lit.cfg.py create mode 100644 debuginfo-tests/lit.site.cfg.py.in rename debuginfo-tests/{ => tests}/aggregate-indirect-arg.cpp (93%) rename debuginfo-tests/{ => tests}/asan-blocks.c (100%) rename debuginfo-tests/{ => tests}/asan.c (100%) rename debuginfo-tests/{ => tests}/block_var.m (93%) rename debuginfo-tests/{ => tests}/blocks.m (85%) rename debuginfo-tests/{ => tests}/ctor.cpp (78%) rename debuginfo-tests/{ => tests}/dbg-arg.c (100%) rename debuginfo-tests/{ => tests}/foreach.m (94%) rename debuginfo-tests/{ => tests}/forward-declare-class.cpp (100%) rename debuginfo-tests/{ => tests}/lit.local.cfg (100%) rename debuginfo-tests/{ => tests}/llgdb.py (100%) rename debuginfo-tests/{ => tests}/nested-struct.cpp (100%) rename debuginfo-tests/{ => tests}/nrvo-string.cpp (100%) rename debuginfo-tests/{ => tests}/safestack.c (100%) rename debuginfo-tests/{ => tests}/sret.cpp (93%) rename debuginfo-tests/{ => tests}/stack-var.c (100%) rename debuginfo-tests/{ => tests}/static-member-2.cpp (100%) rename debuginfo-tests/{ => tests}/static-member.cpp (100%) rename debuginfo-tests/{ => tests}/vla.c (93%) diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt index c1ac9e4..e001891 100644 --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -88,6 +88,13 @@ set(CLANG_TEST_PARAMS clang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg ) +if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests/CMakeLists.txt") + # This is a hack to keep existing build build infrastructure working while we + # can migrate to the new standard workflow of checking out debuginfo-tests into + # llvm/projects or using it in a mono-repo + add_subdirectory(debuginfo-tests) +endif() + if( NOT CLANG_BUILT_STANDALONE ) list(APPEND CLANG_TEST_DEPS llvm-config diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py index 39bdf36a..d2f0491 100644 --- a/clang/test/lit.cfg.py +++ b/clang/test/lit.cfg.py @@ -58,8 +58,6 @@ tool_dirs = [config.clang_tools_dir, config.llvm_tools_dir] tools = [ 'c-index-test', 'clang-check', 'clang-diff', 'clang-format', 'opt', - ToolSubst('%test_debuginfo', command=os.path.join( - config.llvm_src_root, 'utils', 'test_debuginfo.pl')), ToolSubst('%clang_func_map', command=FindTool( 'clang-func-mapping'), unresolved='ignore'), ] diff --git a/debuginfo-tests/CMakeLists.txt b/debuginfo-tests/CMakeLists.txt new file mode 100644 index 0000000..60a467f --- /dev/null +++ b/debuginfo-tests/CMakeLists.txt @@ -0,0 +1,36 @@ +# Debug Info tests. These tests invoke clang to generate programs with +# various types of debug info, and then run those programs under a debugger +# such as GDB or LLDB to verify the results. + +set(DEBUGINFO_TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +set(DEBUGINFO_TESTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) + +set(DEBUGINFO_TEST_DEPS + clang + llvm-config + FileCheck + count + not + ) + +get_target_property(CLANG_SOURCE_DIR clang SOURCE_DIR) + +if (TARGET lld) + set(DEBUGINFO_TESTS_HAS_LLD 1) + list(APPEND DEBUGINFO_TEST_DEPS lld) + get_target_property(LLD_SOURCE_DIR lld SOURCE_DIR) +endif() + +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py + MAIN_CONFIG + ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py + ) + +add_lit_testsuite(check-debuginfo "Running debug info integration tests" + ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${DEBUGINFO_TEST_DEPS} + ) + +set_target_properties(check-debuginfo PROPERTIES FOLDER "Debug info tests") \ No newline at end of file diff --git a/debuginfo-tests/lit.cfg.py b/debuginfo-tests/lit.cfg.py new file mode 100644 index 0000000..f754cef --- /dev/null +++ b/debuginfo-tests/lit.cfg.py @@ -0,0 +1,59 @@ +# -*- Python -*- + +import os +import platform +import re +import subprocess +import tempfile + +import lit.formats +import lit.util + +from lit.llvm import llvm_config +from lit.llvm.subst import ToolSubst +from lit.llvm.subst import FindTool + +# Configuration file for the 'lit' test runner. + +# name: The name of this test suite. +config.name = 'debuginfo-tests' + +# testFormat: The test format to use to interpret tests. +# +# For now we require '&&' between commands, until they get globally killed and +# the test runner updated. +config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell) + +# suffixes: A list of file extensions to treat as test files. +config.suffixes = ['.c', '.cpp', '.m'] + +# excludes: A list of directories to exclude from the testsuite. The 'Inputs' +# subdirectories contain auxiliary inputs for various tests in their parent +# directories. +config.excludes = ['Inputs'] + +# test_source_root: The root path where tests are located. +config.test_source_root = os.path.join(config.debuginfo_tests_src_root, 'tests') + +# test_exec_root: The root path where tests should be run. +config.test_exec_root = config.debuginfo_tests_obj_root + +llvm_config.use_default_substitutions() + +llvm_config.use_clang() + +if config.llvm_use_sanitizer: + # Propagate path to symbolizer for ASan/MSan. + llvm_config.with_system_environment( + ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']) + +tool_dirs = [config.llvm_tools_dir] + +tools = [ + ToolSubst('%test_debuginfo', command=os.path.join( + config.llvm_src_root, 'utils', 'test_debuginfo.pl')), +] + +llvm_config.add_tool_substitutions(tools, tool_dirs) + +lit.util.usePlatformSdkOnDarwin(config, lit_config) diff --git a/debuginfo-tests/lit.site.cfg.py.in b/debuginfo-tests/lit.site.cfg.py.in new file mode 100644 index 0000000..8c4481a --- /dev/null +++ b/debuginfo-tests/lit.site.cfg.py.in @@ -0,0 +1,25 @@ +@LIT_SITE_CFG_IN_HEADER@ + +import lit.util + +config.test_exec_root = "@CMAKE_BINARY_DIR@" + +config.llvm_src_root = "@LLVM_SOURCE_DIR@" +config.llvm_obj_root = "@LLVM_BINARY_DIR@" +config.llvm_tools_dir = "@LLVM_TOOLS_DIR@" +config.llvm_libs_dir = "@LLVM_LIBS_DIR@" +config.llvm_shlib_dir = "@SHLIBDIR@" +config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@" +config.debuginfo_tests_obj_root = "@DEBUGINFO_TESTS_BINARY_DIR@" +config.debuginfo_tests_src_root = "@DEBUGINFO_TESTS_SOURCE_DIR@" +config.has_lld = lit.util.pythonize_bool("@DEBUGINFO_TESTS_HAS_LLD@") +config.host_triple = "@LLVM_HOST_TRIPLE@" +config.target_triple = "@TARGET_TRIPLE@" +config.host_arch = "@HOST_ARCH@" + +config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@" + +@LIT_SITE_CFG_IN_FOOTER@ + +# Let the main config do the real work. +lit_config.load_config(config, "@DEBUGINFO_TESTS_SOURCE_DIR@/lit.cfg.py") diff --git a/debuginfo-tests/aggregate-indirect-arg.cpp b/debuginfo-tests/tests/aggregate-indirect-arg.cpp similarity index 93% rename from debuginfo-tests/aggregate-indirect-arg.cpp rename to debuginfo-tests/tests/aggregate-indirect-arg.cpp index 86c7caf..eb2fd66 100644 --- a/debuginfo-tests/aggregate-indirect-arg.cpp +++ b/debuginfo-tests/tests/aggregate-indirect-arg.cpp @@ -1,6 +1,6 @@ // RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // Radar 8945514 // DEBUGGER: break 22 // DEBUGGER: r diff --git a/debuginfo-tests/asan-blocks.c b/debuginfo-tests/tests/asan-blocks.c similarity index 100% rename from debuginfo-tests/asan-blocks.c rename to debuginfo-tests/tests/asan-blocks.c diff --git a/debuginfo-tests/asan.c b/debuginfo-tests/tests/asan.c similarity index 100% rename from debuginfo-tests/asan.c rename to debuginfo-tests/tests/asan.c diff --git a/debuginfo-tests/block_var.m b/debuginfo-tests/tests/block_var.m similarity index 93% rename from debuginfo-tests/block_var.m rename to debuginfo-tests/tests/block_var.m index 7ec786f1..3286217 100644 --- a/debuginfo-tests/block_var.m +++ b/debuginfo-tests/tests/block_var.m @@ -1,6 +1,6 @@ // RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework Foundation -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // REQUIRES: system-darwin diff --git a/debuginfo-tests/blocks.m b/debuginfo-tests/tests/blocks.m similarity index 85% rename from debuginfo-tests/blocks.m rename to debuginfo-tests/tests/blocks.m index 8e5a212..12c9977 100644 --- a/debuginfo-tests/blocks.m +++ b/debuginfo-tests/tests/blocks.m @@ -1,6 +1,6 @@ // RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework Foundation -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // REQUIRES: system-darwin // Radar 9279956 @@ -24,9 +24,9 @@ extern void foo(void(^)(void)); int master = 0; __block int m2 = 0; __block int dbTransaction = 0; - int (^x)(void) = ^(void) { (void) self; - (void) master; - (void) dbTransaction; + int (^x)(void) = ^(void) { (void) self; + (void) master; + (void) dbTransaction; m2++; return m2; }; diff --git a/debuginfo-tests/ctor.cpp b/debuginfo-tests/tests/ctor.cpp similarity index 78% rename from debuginfo-tests/ctor.cpp rename to debuginfo-tests/tests/ctor.cpp index 92cdbcd..364401a 100644 --- a/debuginfo-tests/ctor.cpp +++ b/debuginfo-tests/tests/ctor.cpp @@ -1,12 +1,12 @@ // RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // DEBUGGER: break 14 // DEBUGGER: r // DEBUGGER: p *this -// CHECK-NEXT-NOT: Cannot access memory at address +// CHECK-NEXT-NOT: Cannot access memory at address class A { public: diff --git a/debuginfo-tests/dbg-arg.c b/debuginfo-tests/tests/dbg-arg.c similarity index 100% rename from debuginfo-tests/dbg-arg.c rename to debuginfo-tests/tests/dbg-arg.c diff --git a/debuginfo-tests/foreach.m b/debuginfo-tests/tests/foreach.m similarity index 94% rename from debuginfo-tests/foreach.m rename to debuginfo-tests/tests/foreach.m index 2e3c312..ccdc282 100644 --- a/debuginfo-tests/foreach.m +++ b/debuginfo-tests/tests/foreach.m @@ -1,6 +1,6 @@ // RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework Foundation -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // // REQUIRES: system-darwin // Radar 8757124 @@ -19,7 +19,7 @@ int main (int argc, const char * argv[]) { for (NSString *thing in things) { NSLog (@"%@", thing); } - + things = [NSArray arrayWithObjects:@"aaa", @"bbb", @"ccc" , nil]; for (NSString *thing in things) { NSLog (@"%@", thing); diff --git a/debuginfo-tests/forward-declare-class.cpp b/debuginfo-tests/tests/forward-declare-class.cpp similarity index 100% rename from debuginfo-tests/forward-declare-class.cpp rename to debuginfo-tests/tests/forward-declare-class.cpp diff --git a/debuginfo-tests/lit.local.cfg b/debuginfo-tests/tests/lit.local.cfg similarity index 100% rename from debuginfo-tests/lit.local.cfg rename to debuginfo-tests/tests/lit.local.cfg diff --git a/debuginfo-tests/llgdb.py b/debuginfo-tests/tests/llgdb.py similarity index 100% rename from debuginfo-tests/llgdb.py rename to debuginfo-tests/tests/llgdb.py diff --git a/debuginfo-tests/nested-struct.cpp b/debuginfo-tests/tests/nested-struct.cpp similarity index 100% rename from debuginfo-tests/nested-struct.cpp rename to debuginfo-tests/tests/nested-struct.cpp diff --git a/debuginfo-tests/nrvo-string.cpp b/debuginfo-tests/tests/nrvo-string.cpp similarity index 100% rename from debuginfo-tests/nrvo-string.cpp rename to debuginfo-tests/tests/nrvo-string.cpp diff --git a/debuginfo-tests/safestack.c b/debuginfo-tests/tests/safestack.c similarity index 100% rename from debuginfo-tests/safestack.c rename to debuginfo-tests/tests/safestack.c diff --git a/debuginfo-tests/sret.cpp b/debuginfo-tests/tests/sret.cpp similarity index 93% rename from debuginfo-tests/sret.cpp rename to debuginfo-tests/tests/sret.cpp index 3c304e2..640015f 100644 --- a/debuginfo-tests/sret.cpp +++ b/debuginfo-tests/tests/sret.cpp @@ -1,6 +1,6 @@ // RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // Radar 8775834 // DEBUGGER: break 62 // DEBUGGER: r @@ -24,7 +24,7 @@ protected: int m_int; }; -A::A (int i) : +A::A (int i) : m_int(i) { } @@ -50,11 +50,11 @@ class B { public: B () {} - + A AInstance(); }; -A +A B::AInstance() { A a(12); @@ -65,7 +65,7 @@ int main (int argc, char const *argv[]) { B b; int return_val = b.AInstance().get_int(); - + A a(b.AInstance()); return return_val; } diff --git a/debuginfo-tests/stack-var.c b/debuginfo-tests/tests/stack-var.c similarity index 100% rename from debuginfo-tests/stack-var.c rename to debuginfo-tests/tests/stack-var.c diff --git a/debuginfo-tests/static-member-2.cpp b/debuginfo-tests/tests/static-member-2.cpp similarity index 100% rename from debuginfo-tests/static-member-2.cpp rename to debuginfo-tests/tests/static-member-2.cpp diff --git a/debuginfo-tests/static-member.cpp b/debuginfo-tests/tests/static-member.cpp similarity index 100% rename from debuginfo-tests/static-member.cpp rename to debuginfo-tests/tests/static-member.cpp diff --git a/debuginfo-tests/vla.c b/debuginfo-tests/tests/vla.c similarity index 93% rename from debuginfo-tests/vla.c rename to debuginfo-tests/tests/vla.c index 9c8e277..e6ea1ef 100644 --- a/debuginfo-tests/vla.c +++ b/debuginfo-tests/tests/vla.c @@ -1,7 +1,7 @@ // This test case verifies the debug location for variable-length arrays. // RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o // RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -// RUN: %test_debuginfo %s %t.out +// RUN: %test_debuginfo %s %t.out // // DEBUGGER: break 18 // DEBUGGER: r diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 8cd9d05..5f5b138 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -110,7 +110,7 @@ endif() # LLVM_EXTERNAL_${project}_SOURCE_DIR using LLVM_ALL_PROJECTS # This allows an easy way of setting up a build directory for llvm and another # one for llvm+clang+... using the same sources. -set(LLVM_ALL_PROJECTS "clang;libcxx;libcxxabi;lldb;compiler-rt;lld;polly") +set(LLVM_ALL_PROJECTS "clang;libcxx;libcxxabi;lldb;compiler-rt;debuginfo-tests;lld;polly") set(LLVM_ENABLE_PROJECTS "" CACHE STRING "Semicolon-separated list of projects to build (${LLVM_ALL_PROJECTS}), or \"all\".") if( LLVM_ENABLE_PROJECTS STREQUAL "all" ) @@ -885,13 +885,18 @@ if( LLVM_INCLUDE_EXAMPLES ) endif() if( LLVM_INCLUDE_TESTS ) - if(EXISTS ${LLVM_MAIN_SRC_DIR}/projects/test-suite AND TARGET clang) + if(TARGET clang) include(LLVMExternalProjectUtils) - llvm_ExternalProject_Add(test-suite ${LLVM_MAIN_SRC_DIR}/projects/test-suite - USE_TOOLCHAIN - EXCLUDE_FROM_ALL - NO_INSTALL - ALWAYS_CLEAN) + if (EXISTS ${LLVM_MAIN_SRC_DIR}/projects/test-suite) + llvm_ExternalProject_Add(test-suite ${LLVM_MAIN_SRC_DIR}/projects/test-suite + USE_TOOLCHAIN + TOOLCHAIN_TOOLS clang lld clang-cl + EXCLUDE_FROM_ALL + NO_INSTALL + ALWAYS_CLEAN) + endif() + + add_llvm_external_project(debuginfo-tests projects/debuginfo-tests) endif() add_subdirectory(utils/lit) add_subdirectory(test) diff --git a/llvm/projects/CMakeLists.txt b/llvm/projects/CMakeLists.txt index 9102efb..11835fa 100644 --- a/llvm/projects/CMakeLists.txt +++ b/llvm/projects/CMakeLists.txt @@ -10,6 +10,7 @@ foreach(entry ${entries}) (NOT ${entry} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}/libcxxabi) AND (NOT ${entry} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}/libunwind) AND (NOT ${entry} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}/test-suite) AND + (NOT ${entry} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}/debuginfo-tests) AND (NOT ${entry} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}/parallel-libs) AND (NOT ${entry} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}/openmp)) add_subdirectory(${entry}) diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py index 798f08a..d3d8d22 100644 --- a/llvm/utils/lit/lit/llvm/config.py +++ b/llvm/utils/lit/lit/llvm/config.py @@ -27,8 +27,9 @@ class LLVMConfig(object): # For tests that require Windows to run. features.add('system-windows') + lit_tools_dir = getattr(config, 'lit_tools_dir', None) # Seek sane tools in directories and set to $PATH. - path = self.lit_config.getToolsPath(config.lit_tools_dir, + path = self.lit_config.getToolsPath(lit_tools_dir, config.environment['PATH'], ['cmp.exe', 'grep.exe', 'sed.exe']) if path is not None: @@ -413,8 +414,10 @@ class LLVMConfig(object): self.config.substitutions.append( ('%target_itanium_abi_host_triple', '')) - self.config.substitutions.append( - ('%src_include_dir', self.config.clang_src_dir + '/include')) + clang_src_dir = getattr(self.config, 'clang_src_dir', None) + if clang_src_dir: + self.config.substitutions.append( + ('%src_include_dir', os.path.join(clang_src_dir, 'include'))) # FIXME: Find nicer way to prohibit this. self.config.substitutions.append( diff --git a/llvm/utils/test_debuginfo.pl b/llvm/utils/test_debuginfo.pl index aaf90d9..d9613d7 100755 --- a/llvm/utils/test_debuginfo.pl +++ b/llvm/utils/test_debuginfo.pl @@ -56,7 +56,7 @@ my $my_debugger = $ENV{'DEBUGGER'}; if (!$my_debugger) { if ($use_lldb) { my $path = dirname(Cwd::abs_path($0)); - $my_debugger = "/usr/bin/env python $path/../tools/clang/test/debuginfo-tests/llgdb.py"; + $my_debugger = "/usr/bin/env python $path/../tools/clang/test/debuginfo-tests/tests/llgdb.py"; } else { $my_debugger = "gdb"; } -- 2.7.4