aboutsummaryrefslogtreecommitdiff
path: root/cross-project-tests
diff options
context:
space:
mode:
authorStephen Tozer <Stephen.Tozer@Sony.com>2023-08-21 14:56:31 +0100
committerStephen Tozer <Stephen.Tozer@Sony.com>2023-08-21 15:08:11 +0100
commit262520a3c5450fd7f149438245b2aef12736347f (patch)
treeae4314ea694e9b9375aec630b032ab8337752548 /cross-project-tests
parent3bcce9ca224c1f1a940f19beef76fba491fceb18 (diff)
downloadllvm-262520a3c5450fd7f149438245b2aef12736347f.zip
llvm-262520a3c5450fd7f149438245b2aef12736347f.tar.gz
llvm-262520a3c5450fd7f149438245b2aef12736347f.tar.bz2
[Dexter] Remove builder from Dexter
See "discussion": https://discourse.llvm.org/t/rfc-dexter-feature-removals/60462 This patch removes the builder functionality from Dexter, as it is an active maintenance burden and is no longer required since Dexter is being invoked by other test runners that can handle the build step better, and there has been no objection that it is still needed. Differential Revision: https://reviews.llvm.org/D151465
Diffstat (limited to 'cross-project-tests')
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp5
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/asan.c6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp5
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/hello.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp11
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp8
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp8
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp8
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp8
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp8
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter-tests/vla.c4
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/README.md64
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/builder/Builder.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/builder/__init__.py10
-rwxr-xr-xcross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang-c.sh16
-rwxr-xr-xcross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang.sh16
-rwxr-xr-xcross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/gcc.sh16
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang-cl_vs2015.bat23
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang.bat17
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareFile.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLabel.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/ConditionalController.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/DefaultController.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/dextIR/DextIR.py3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/dextIR/__init__.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/tools/Main.py2
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py67
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/tools/clang_opt_bisect/__init__.py8
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py43
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/dex/utils/windows/PrettyOutput.py1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/precompiled_binary/commands.dex2
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/windows_noncanonical_path/test.dex2
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp11
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect-results.cpp27
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect.cpp16
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/help/help.test1
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp5
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp5
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp5
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp6
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c3
-rw-r--r--cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp5
-rw-r--r--cross-project-tests/lit.cfg.py34
129 files changed, 286 insertions, 495 deletions
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp
index f59777b..fb80a76 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/aggregate-indirect-arg.cpp
@@ -1,9 +1,9 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
//
+// RUN: %clang -O0 -g -lstdc++ %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" \
-// RUN: --ldflags="-lstdc++" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
// Radar 8945514
class SVal {
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp
index 60f505a..0059e57 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/asan-deque.cpp
@@ -8,10 +8,9 @@
// lldb-8, even outside of dexter, will sometimes trigger an asan fault in
// the debugged process and generally freak out.
+// RUN: %clang -O1 -glldb -fsanitize=address -arch x86_64 %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O1 -glldb -fsanitize=address -arch x86_64" \
-// RUN: --ldflags="-fsanitize=address" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
#include <deque>
struct A {
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/asan.c b/cross-project-tests/debuginfo-tests/dexter-tests/asan.c
index 5225350..6eb1736 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/asan.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/asan.c
@@ -3,10 +3,10 @@
// Zorg configures the ASAN stage2 bots to not build the asan
// compiler-rt. Only run this test on non-asanified configurations.
//
+// RUN: %clang --driver-mode=gcc -O0 -glldb -fblocks -arch x86_64 \
+// RUN: -fsanitize=address %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang-c' --debugger 'lldb' \
-// RUN: --cflags "--driver-mode=gcc -O0 -glldb -fblocks -arch x86_64 \
-// RUN: -fsanitize=address" --ldflags="-fsanitize=address" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
struct S {
int a[8];
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp
index 219e902..16133c6 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/ctor.cpp
@@ -1,8 +1,9 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
//
+// RUN: %clang -O0 -glldb %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -glldb" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
class A {
public:
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c b/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c
index e4f4c34..20e867c 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/dbg-arg.c
@@ -2,9 +2,9 @@
// UNSUPPORTED: system-windows
//
// This test case checks debug info during register moves for an argument.
+// RUN: %clang -m64 -mllvm -fast-isel=false -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder clang-c --debugger 'lldb' \
-// RUN: --cflags "-m64 -mllvm -fast-isel=false -g" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
//
// Radar 8412415
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp
index dfc632e..591a5e3 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/deferred_globals.cpp
@@ -4,10 +4,9 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-
+// RUN: %clang -O0 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-g -O0" -v -- %s
+// RUN: --binary %t --debugger 'lldb' -v -- %s
const int d = 100;
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
index 4d35633..ad6b3b1 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/global-constant.cpp
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w --builder 'clang-cl_vs2015' \
-// RUN: --debugger 'dbgeng' --cflags '/Z7 /Zi' --ldflags '/Z7 /Zi' -- %s
+// RUN: %clang-cl /Z7 /Zi %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
// Check that global constants have debug info.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/hello.c b/cross-project-tests/debuginfo-tests/dexter-tests/hello.c
index 89b2a9f..0a3c9fc 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/hello.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/hello.c
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w --builder 'clang-cl_vs2015' \
-// RUN: --debugger 'dbgeng' --cflags '/Z7 /Zi' --ldflags '/Z7 /Zi' -- %s
+// RUN: %clang-cl /Z7 /Zi %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
#include <stdio.h>
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp
index 75e3b63..11e4cf8 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/inline-line-gap.cpp
@@ -1,12 +1,11 @@
// REQUIRES: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w --builder 'clang-cl_vs2015' \
-// RUN: --debugger 'dbgeng' --cflags '/Od /Z7 /Zi' \
-// RUN: --ldflags '/Od /Z7 /Zi' -- %s
+// RUN: %clang-cl /Od /Z7 /Zi %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
//
-// RUN: %dexter --fail-lt 1.0 -w --builder 'clang-cl_vs2015' \
-// RUN: --debugger 'dbgeng' --cflags '/O2 /Z7 /Zi' \
-// RUN: --ldflags '/O2 /Z7 /Zi' -- %s
+// RUN: %clang-cl /O2 /Z7 /Zi %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t \
+// RUN: --debugger 'dbgeng' -- %s
// This code is structured to have an early exit with an epilogue in the middle
// of the function, which creates a gap between the beginning of the inlined
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c
index 70047c9e..4a1f1d3 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/bitcast.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//// Adapted from https://bugs.llvm.org/show_bug.cgi?id=34136#c1
//// LowerDbgDeclare has since been updated to look through bitcasts. We still
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c
index 595e82b..97bd5e8 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/const-branch.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//// Adapted from https://bugs.llvm.org/show_bug.cgi?id=34136#c4
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
index 4dbb3ff..5ff3e25 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ctrl-flow.c
@@ -1,7 +1,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder clang-c --cflags "-O2 -glldb" -- %s
+// RUN: %clang -O2 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//// Check that we give good locations to a variable ('local') which is escaped
//// down some control paths and not others. This example is handled well currently.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c
index 7b59afb0..c4dced5 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/implicit-ptr.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//// Check that 'param' in 'fun' can be read throughout, and that 'pa' and 'pb'
//// can be dereferenced in the debugger even if we can't provide the pointer
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c
index 1da3106..855c837 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inline-escaping-function.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
// 1. param is escaped by inlineme(&param) so it is not promoted by
// SROA/mem2reg.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
index 59a0a4a..73e90fc 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining-dse.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder clang-c --cflags "-O2 -glldb" -- %s
+// RUN: %clang -O2 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//
//// Check that once-escaped variable 'param' can still be read after we
//// perform inlining + mem2reg, and that we see the DSE'd value 255.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
index b8468fb..e1bb535 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c
@@ -1,7 +1,7 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder clang-c --cflags "-O2 -glldb" -- %s
+// RUN: %clang -O2 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//
//// Check that the once-escaped variable 'param' can still be read after
//// we perform inlining + mem2reg. See D89810 and D85555.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
index 97aba17..ea2b6d1 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/loop.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//// Check that escaped local 'param' in function 'fun' has sensible debug info
//// after the escaping function 'use' gets arg promotion (int* -> int). Currently
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c
index 3cf96ec..1c37a9c 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/merged-store.c
@@ -3,8 +3,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
// 1. parama is escaped by esc(&parama) so it is not promoted by
// SROA/mem2reg.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
index 4f0a9af..d2dfaa4 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c
@@ -4,8 +4,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder clang-c --cflags "-O2 -glldb" -- %s
+// RUN: %clang -O2 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//
//// Check that a pointer to a variable living on the stack dereferences to the
//// variable value.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c
index de2e219..0baaac8 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/struct-dse.c
@@ -4,8 +4,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 1.0 -w --debugger lldb \
-// RUN: --builder clang-c --cflags "-O2 -glldb" -- %s
+// RUN: %clang -O2 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
//
//// Check debug-info for the escaped struct variable num is reasonable.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
index f689aae..9a44dbf 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/memvars/unused-merged-value.c
@@ -5,8 +5,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
-// RUN: %dexter --fail-lt 0.1 -w --debugger lldb \
-// RUN: --builder 'clang-c' --cflags "-O3 -glldb" -- %s
+// RUN: %clang -O3 -glldb %s -o %t
+// RUN: %dexter --fail-lt 0.1 -w --debugger lldb --binary %t -- %s
// See NOTE at end for more info about the RUN command.
// 1. SROA/mem2reg fully promotes parama.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp
index fa89421..c949391 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/namespace.cpp
@@ -5,9 +5,9 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
+// RUN: %clang -g -O0 %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-g -O0" -v -- %s
+// RUN: --binary %t --debugger 'lldb' -v -- %s
#include <stdio.h>
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp
index f618fba..4b807a7 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo-string.cpp
@@ -7,13 +7,13 @@
// Zorg configures the ASAN stage2 bots to not build the asan
// compiler-rt. Only run this test on non-asanified configurations.
//
+// RUN: %clang -O0 -glldb -fno-exceptions %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O0 -glldb -fno-exceptions" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
//
+// RUN: %clang -O1 -glldb -fno-exceptions %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O1 -glldb -fno-exceptions" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
//
// PR34513
volatile int sideeffect = 0;
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp
index b94bc72..d71add4 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/nrvo.cpp
@@ -3,8 +3,8 @@
//
// REQUIRES: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w --builder 'clang-cl_vs2015' \
-// RUN: --debugger 'dbgeng' --cflags '/Z7 /Zi' --ldflags '/Z7 /Zi' -- %s
+// RUN: %clang-cl /Z7 /Zi %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
struct string {
string() {}
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
index 8de3fd7..de778ea 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-fastmath.cpp
@@ -1,9 +1,9 @@
+// RUN: %clang -O2 -ffast-math -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-ffast-math -O2 -g" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
+// RUN: %clang -O0 -ffast-math -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-ffast-math -O0 -g" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
// REQUIRES: lldb
// UNSUPPORTED: system-windows
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
index acccd47..54fa9a9 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-loops.cpp
@@ -5,9 +5,9 @@
// UNSUPPORTED: system-windows
// UNSUPPORTED: system-darwin
+// RUN: %clang -O2 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O2 -g" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
// A simple loop of assignments.
// With optimization level > 0 the compiler reorders basic blocks
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
index 83a655b..976a4be 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-simple-functions.cpp
@@ -1,9 +1,9 @@
+// RUN: %clang -O2 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O2 -g" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
+// RUN: %clang -O0 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O0 -g" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
// REQUIRES: lldb, D136396
// UNSUPPORTED: system-windows
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
index 3542a9c..84fde3c 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-struct-and-methods.cpp
@@ -1,9 +1,9 @@
+// RUN: %clang++ -O2 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-g -O2" -v -- %s
+// RUN: --binary %t --debugger 'lldb' -v -- %s
+// RUN: %clang++ -O0 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-g -O0" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
// REQUIRES: lldb
// UNSUPPORTED: system-windows
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
index 8957c5a..a048199 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/optnone-vectors-and-functions.cpp
@@ -1,9 +1,9 @@
+// RUN: %clang -O2 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-g -O2" -v -- %s
+// RUN: --binary %t --debugger 'lldb' -v -- %s
+// RUN: %clang -O0 -g %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-g -O0" -- %s
+// RUN: --binary %t --debugger 'lldb' -- %s
// REQUIRES: lldb
// UNSUPPORTED: system-windows
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp b/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp
index 36d50ef..d07159f 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/realigned-frame.cpp
@@ -1,7 +1,7 @@
// REQUIRES: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w --builder 'clang-cl_vs2015' \
-// RUN: --debugger 'dbgeng' --cflags '/Z7 /Zi' --ldflags '/Z7 /Zi' -- %s
+// RUN: %clang-cl /Z7 /Zi %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'dbgeng' -- %s
// From https://llvm.org/pr38857, where we had issues with stack realignment.
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c b/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c
index 2c70ec2..3595bc2 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/stack-var.c
@@ -1,8 +1,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder clang-c --debugger 'lldb' --cflags "-O -glldb" -- %s
+// RUN: %clang -O -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'lldb' -- %s
void __attribute__((noinline, optnone)) bar(int *test) {}
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter-tests/vla.c b/cross-project-tests/debuginfo-tests/dexter-tests/vla.c
index f0b400f..e76970c 100644
--- a/cross-project-tests/debuginfo-tests/dexter-tests/vla.c
+++ b/cross-project-tests/debuginfo-tests/dexter-tests/vla.c
@@ -2,8 +2,8 @@
// REQUIRES: lldb
// UNSUPPORTED: system-windows
//
-// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder clang-c --debugger 'lldb' --cflags "-O0 -glldb" -- %s
+// RUN: %clang -O0 -glldb %s -o %t
+// RUN: %dexter --fail-lt 1.0 -w --binary %t --debugger 'lldb' -- %s
void init_vla(int size) {
int i;
diff --git a/cross-project-tests/debuginfo-tests/dexter/README.md b/cross-project-tests/debuginfo-tests/dexter/README.md
index 1da6fa1..44c4343 100644
--- a/cross-project-tests/debuginfo-tests/dexter/README.md
+++ b/cross-project-tests/debuginfo-tests/dexter/README.md
@@ -33,13 +33,15 @@ DExTer is current compatible with 'clang' and 'clang-cl' compiler drivers. The
## Running a test case
-The following DExTer commands build the test.cpp from the tests/nostdlib/fibonacci directory and quietly runs it on the Visual Studio debugger, reporting the debug experience heuristic. The first command builds with no optimizations (/Od) and scores 1.0000. The second command builds with optimizations (/Ox) and scores 0.2832 which suggests a worse debugging experience.
+The following commands build fibonacci.cpp from the tests/nostdlib directory and run it in LLDB, reporting the debug experience heuristic. The first pair of commands build with no optimizations (-O0) and score 1.0000. The second pair of commands build with optimizations (-O2) and score 0.2832 which suggests a worse debugging experience.
- dexter.py test --builder clang-cl_vs2015 --debugger vs2017 --cflags="/Od /Zi" --ldflags="/Zi" -- tests/nostdlib/fibonacci
- fibonacci = (1.0000)
+ clang -O0 -g tests/nostdlib/fibonacci.cpp -o tests/nostdlib/fibonacci/test
+ dexter.py test --binary tests/nostdlib/fibonacci/test --debugger lldb -- tests/nostdlib/fibonacci/test.cpp
+ test.cpp = (1.0000)
- dexter.py test --builder clang-cl_vs2015 --debugger vs2017 --cflags="/Ox /Zi" --ldflags="/Zi" -- tests/nostdlib/fibonacci
- fibonacci = (0.2832)
+ clang -O2 -g tests/nostdlib/fibonacci/test.cpp -o tests/nostdlib/fibonacci/test
+ dexter.py test --binary tests/nostdlib/fibonacci/test --debugger lldb -- tests/nostdlib/fibonacci/test.cpp
+ test.cpp = (0.2832)
## An example test case
@@ -107,9 +109,9 @@ to step into a file outside of the test directory.
## Detailed DExTer reports
-Running the command below launches the tests/nostdlib/fibonacci test case in DExTer, using clang-cl as the compiler, Visual Studio 2017 as the debugger, and producing a detailed report:
+Running the command below launches the tests/nostdlib/fibonacci test case in DExTer, using LLDB as the debugger and producing a detailed report:
- $ dexter.py test --builder clang-cl_vs2015 --debugger vs2017 --cflags="/Ox /Zi" --ldflags="/Zi" -v -- tests/nostdlib/fibonacci
+ $ dexter.py test --vs-solution clang-cl_vs2015 --debugger vs2017 --cflags="/Ox /Zi" --ldflags="/Zi" -v -- tests/nostdlib/fibonacci
The detailed report is enabled by `-v` and shows a breakdown of the information from each debugger step. For example:
@@ -255,50 +257,4 @@ shows that for `first` the expected values 0, 1, 2 and 3 were seen, 5 was not.
## Writing new test cases
-Each test requires a `test.cfg` file. Currently the contents of this file are not read, but its presence is used to determine the root directory of a test. In the future, configuration variables for the test such as supported language modes may be stored in this file. Use the various [commands](Commands.md) to encode debugging expectations.
-
-## Additional tools
-
-For clang-based compilers, the `clang-opt-bisect` tool can be used to get a breakdown of which LLVM passes may be contributing to debugging experience issues. For example:
-
- $ dexter.py clang-opt-bisect tests/nostdlib/fibonacci --builder clang-cl --debugger vs2017 --cflags="/Ox /Zi" --ldflags="/Zi"
-
- pass 1/211 = (1.0000) (0.0000) [Simplify the CFG on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 2/211 = (0.7611) (-0.2389) [SROA on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 3/211 = (0.7611) (0.0000) [Early CSE on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 4/211 = (0.7611) (0.0000) [Simplify the CFG on function (main)]
- pass 5/211 = (0.7611) (0.0000) [SROA on function (main)]
- pass 6/211 = (0.7611) (0.0000) [Early CSE on function (main)]
- pass 7/211 = (0.7611) (0.0000) [Infer set function attributes on module (c:\dexter\tests\fibonacci\test.cpp)]
- pass 8/211 = (0.7611) (0.0000) [Interprocedural Sparse Conditional Constant Propagation on module (c:\dexter\tests\fibonacci\test.cpp)]
- pass 9/211 = (0.7611) (0.0000) [Called Value Propagation on module (c:\dexter\tests\fibonacci\test.cpp)]
- pass 10/211 = (0.7611) (0.0000) [Global Variable Optimizer on module (c:\dexter\tests\fibonacci\test.cpp)]
- pass 11/211 = (0.7611) (0.0000) [Promote Memory to Register on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 12/211 = (0.7611) (0.0000) [Promote Memory to Register on function (main)]
- pass 13/211 = (0.7611) (0.0000) [Dead Argument Elimination on module (c:\dexter\tests\fibonacci\test.cpp)]
- pass 14/211 = (0.7611) (0.0000) [Combine redundant instructions on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 15/211 = (0.7611) (0.0000) [Simplify the CFG on function (?Fibonacci@@YAXHAEAH@Z)]a
- pass 16/211 = (0.7345) (-0.0265) [Combine redundant instructions on function (main)]
- pass 17/211 = (0.7345) (0.0000) [Simplify the CFG on function (main)]
- pass 18/211 = (0.7345) (0.0000) [Remove unused exception handling info on SCC (?Fibonacci@@YAXHAEAH@Z)]
- pass 19/211 = (0.7345) (0.0000) [Function Integration/Inlining on SCC (?Fibonacci@@YAXHAEAH@Z)]
- pass 20/211 = (0.7345) (0.0000) [Deduce function attributes on SCC (?Fibonacci@@YAXHAEAH@Z)]
- pass 21/211 = (0.7345) (0.0000) [SROA on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 22/211 = (0.7345) (0.0000) [Early CSE w/ MemorySSA on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 23/211 = (0.7345) (0.0000) [Speculatively execute instructions if target has divergent branches on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 24/211 = (0.7345) (0.0000) [Jump Threading on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 25/211 = (0.7345) (0.0000) [Value Propagation on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 26/211 = (0.7345) (0.0000) [Simplify the CFG on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 27/211 = (0.7345) (0.0000) [Combine redundant instructions on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 28/211 = (0.7345) (0.0000) [Tail Call Elimination on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 29/211 = (0.7345) (0.0000) [Simplify the CFG on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 30/211 = (0.7345) (0.0000) [Reassociate expressions on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 31/211 = (0.8673) (0.1327) [Rotate Loops on loop]
- pass 32/211 = (0.5575) (-0.3097) [Loop Invariant Code Motion on loop]
- pass 33/211 = (0.5575) (0.0000) [Unswitch loops on loop]
- pass 34/211 = (0.5575) (0.0000) [Simplify the CFG on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 35/211 = (0.5575) (0.0000) [Combine redundant instructions on function (?Fibonacci@@YAXHAEAH@Z)]
- pass 36/211 = (0.5575) (0.0000) [Induction Variable Simplification on loop]
- pass 37/211 = (0.5575) (0.0000) [Recognize loop idioms on loop]
- <output-snipped>
-
+Each test can be either embedded within the source file using comments or included as a separate file with the .dex extension. Dexter does not include support for building test cases, although if a Visual Studio Solution (.sln) is used as the test file, VS will build the program as part of launching a debugger session if it has not already been built.
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/Builder.py b/cross-project-tests/debuginfo-tests/dexter/dex/builder/Builder.py
index 1d64876..8986029 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/Builder.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/builder/Builder.py
@@ -24,7 +24,6 @@ def _quotify(text):
def _get_script_environment(
source_files, compiler_options, linker_options, executable_file
):
-
source_files = [_quotify(f) for f in source_files]
object_files = [_quotify("{}.o".format(os.path.basename(f))) for f in source_files]
source_indexes = ["{:02d}".format(i + 1) for i in range(len(source_files))]
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/__init__.py b/cross-project-tests/debuginfo-tests/dexter/dex/builder/__init__.py
deleted file mode 100644
index 3bf0ca4..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# DExTer : Debugging Experience Tester
-# ~~~~~~ ~ ~~ ~ ~~
-#
-# 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 dex.builder.Builder import run_external_build_script
-from dex.builder.ParserOptions import add_builder_tool_arguments
-from dex.builder.ParserOptions import handle_builder_tool_options
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang-c.sh b/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang-c.sh
deleted file mode 100755
index f69f51c..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang-c.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if test -z "$PATHTOCLANG"; then
- PATHTOCLANG=clang
-fi
-
-for INDEX in $SOURCE_INDEXES
-do
- CFLAGS=$(eval echo "\$COMPILER_OPTIONS_$INDEX")
- SRCFILE=$(eval echo "\$SOURCE_FILE_$INDEX")
- OBJFILE=$(eval echo "\$OBJECT_FILE_$INDEX")
- $PATHTOCLANG -std=gnu11 -c $CFLAGS $SRCFILE -o $OBJFILE
-done
-
-$PATHTOCLANG $LINKER_OPTIONS $OBJECT_FILES -o $EXECUTABLE_FILE
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang.sh b/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang.sh
deleted file mode 100755
index 9cf4cdd..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/clang.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if test -z "$PATHTOCLANGPP"; then
- PATHTOCLANGPP=clang++
-fi
-
-for INDEX in $SOURCE_INDEXES
-do
- CFLAGS=$(eval echo "\$COMPILER_OPTIONS_$INDEX")
- SRCFILE=$(eval echo "\$SOURCE_FILE_$INDEX")
- OBJFILE=$(eval echo "\$OBJECT_FILE_$INDEX")
- $PATHTOCLANGPP -std=gnu++11 -c $CFLAGS $SRCFILE -o $OBJFILE
-done
-
-$PATHTOCLANGPP $LINKER_OPTIONS $OBJECT_FILES -o $EXECUTABLE_FILE
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/gcc.sh b/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/gcc.sh
deleted file mode 100755
index c18e333..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/posix/gcc.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-if test -z "$PATHTOGCC"; then
- PATHTOGCC=gcc
-fi
-
-for INDEX in $SOURCE_INDEXES
-do
- CFLAGS=$(eval echo "\$COMPILER_OPTIONS_$INDEX")
- SRCFILE=$(eval echo "\$SOURCE_FILE_$INDEX")
- OBJFILE=$(eval echo "\$OBJECT_FILE_$INDEX")
- $PATHTOGCC -std=gnu++11 -c $CFLAGS $SRCFILE -o $OBJFILE
-done
-
-$PATHTOGCC $LINKER_OPTIONS $OBJECT_FILES -o $EXECUTABLE_FILE
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang-cl_vs2015.bat b/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang-cl_vs2015.bat
deleted file mode 100644
index ea0d441..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang-cl_vs2015.bat
+++ /dev/null
@@ -1,23 +0,0 @@
-@echo OFF
-setlocal EnableDelayedExpansion
-
-call "%VS140COMNTOOLS%..\..\VC\bin\amd64\vcvars64.bat"
-
-@echo OFF
-setlocal EnableDelayedExpansion
-
-for %%I in (%SOURCE_INDEXES%) do (
- %PATHTOCLANGCL% /c !COMPILER_OPTIONS_%%I! !SOURCE_FILE_%%I! /Fo!OBJECT_FILE_%%I!
- if errorlevel 1 goto :FAIL
-)
-
-%PATHTOCLANGCL% %LINKER_OPTIONS% %OBJECT_FILES% /Fe%EXECUTABLE_FILE%
-if errorlevel 1 goto :FAIL
-goto :END
-
-:FAIL
-echo FAILED
-exit /B 1
-
-:END
-exit /B 0
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang.bat b/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang.bat
deleted file mode 100644
index 4aa9e28..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/builder/scripts/windows/clang.bat
+++ /dev/null
@@ -1,17 +0,0 @@
-@setlocal EnableDelayedExpansion
-
-for %%I in (%SOURCE_INDEXES%) do (
- %PATHTOCLANGPP% -fuse-ld=lld -c !COMPILER_OPTIONS_%%I! !SOURCE_FILE_%%I! -o !OBJECT_FILE_%%I!
- if errorlevel 1 goto :FAIL
-)
-
-%PATHTOCLANGPP% -fuse-ld=lld %LINKER_OPTIONS% %OBJECT_FILES% -o %EXECUTABLE_FILE%
-if errorlevel 1 goto :FAIL
-goto :END
-
-:FAIL
-echo FAILED
-exit /B 1
-
-:END
-exit /B 0
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py b/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
index dcf5aea..a98401b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareAddress.py
@@ -15,7 +15,6 @@ from dex.command.CommandBase import CommandBase, StepExpectInfo
class DexDeclareAddress(CommandBase):
def __init__(self, addr_name, expression, **kwargs):
-
if not isinstance(addr_name, str):
raise TypeError("invalid argument type")
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareFile.py b/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareFile.py
index 1377408..4478419 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareFile.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexDeclareFile.py
@@ -14,7 +14,6 @@ from dex.command.CommandBase import CommandBase
class DexDeclareFile(CommandBase):
def __init__(self, declared_file):
-
if not isinstance(declared_file, str):
raise TypeError("invalid argument type")
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLabel.py b/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLabel.py
index 575e5ea..1dd0e54 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLabel.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLabel.py
@@ -13,7 +13,6 @@ from dex.command.CommandBase import CommandBase
class DexLabel(CommandBase):
def __init__(self, label, **kwargs):
-
if not isinstance(label, str):
raise TypeError("invalid argument type")
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/ConditionalController.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/ConditionalController.py
index fb5536d..a7d6b57 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/ConditionalController.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/ConditionalController.py
@@ -164,7 +164,6 @@ class ConditionalController(DebuggerControllerBase):
total_timeout = Timeout(self.context.options.timeout_total)
while not self.debugger.is_finished:
-
breakpoint_timeout = Timeout(self.context.options.timeout_breakpoint)
while self.debugger.is_running and not timed_out:
# Check to see whether we've timed out while we're waiting.
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/DefaultController.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/DefaultController.py
index 9b0a6ac..a193a43 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/DefaultController.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/DebuggerControllers/DefaultController.py
@@ -96,7 +96,6 @@ class DefaultController(DebuggerControllerBase):
total_timeout = Timeout(self.context.options.timeout_total)
max_steps = self.context.options.max_steps
for _ in range(max_steps):
-
breakpoint_timeout = Timeout(self.context.options.timeout_breakpoint)
while self.debugger.is_running and not timed_out:
# Check to see whether we've timed out while we're waiting.
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
index ca71d8b..50a97e2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/debugger/visualstudio/VisualStudio.py
@@ -40,7 +40,6 @@ VSBreakpoint = namedtuple("VSBreakpoint", "path, line, col, cond")
class VisualStudio(
DebuggerBase, metaclass=abc.ABCMeta
): # pylint: disable=abstract-method
-
# Constants for results of Debugger.CurrentMode
# (https://msdn.microsoft.com/en-us/library/envdte.debugger.currentmode.aspx)
dbgDesignMode = 1
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/DextIR.py b/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/DextIR.py
index be3299c..42500c4 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/DextIR.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/DextIR.py
@@ -8,7 +8,6 @@ from collections import OrderedDict
import os
from typing import List
-from dex.dextIR.BuilderIR import BuilderIR
from dex.dextIR.DebuggerIR import DebuggerIR
from dex.dextIR.StepIR import StepIR, StepKind
@@ -47,14 +46,12 @@ class DextIR:
dexter_version: str,
executable_path: str,
source_paths: List[str],
- builder: BuilderIR = None,
debugger: DebuggerIR = None,
commands: OrderedDict = None,
):
self.dexter_version = dexter_version
self.executable_path = executable_path
self.source_paths = source_paths
- self.builder = builder
self.debugger = debugger
self.commands = commands
self.steps: List[StepIR] = []
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/__init__.py b/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/__init__.py
index 463a2c1..1c40986 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/__init__.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/dextIR/__init__.py
@@ -7,7 +7,6 @@
"""dextIR: DExTer Intermediate Representation of DExTer's debugger trace output.
"""
-from dex.dextIR.BuilderIR import BuilderIR
from dex.dextIR.DextIR import DextIR
from dex.dextIR.DebuggerIR import DebuggerIR
from dex.dextIR.FrameIR import FrameIR
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/tools/Main.py b/cross-project-tests/debuginfo-tests/dexter/dex/tools/Main.py
index d9efe32..037ae42 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/tools/Main.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/tools/Main.py
@@ -66,7 +66,6 @@ def get_tools_directory():
def get_tool_names():
"""Returns a list of expected DExTer Tools"""
return [
- "clang-opt-bisect",
"help",
"list-debuggers",
"no-tool-",
@@ -193,7 +192,6 @@ class Context(object):
def main() -> ReturnCode:
-
context = Context()
with PrettyOutput() as context.o:
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py b/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
index dba245f..acbff53 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/tools/TestToolBase.py
@@ -4,15 +4,13 @@
# 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
-"""Base class for subtools that do build/run tests."""
+"""Base class for subtools that run tests."""
import abc
from datetime import datetime
import os
import sys
-from dex.builder import add_builder_tool_arguments
-from dex.builder import handle_builder_tool_options
from dex.debugger.Debuggers import add_debugger_tool_arguments
from dex.debugger.Debuggers import handle_debugger_tool_options
from dex.heuristic.Heuristic import add_heuristic_tool_arguments
@@ -22,15 +20,26 @@ from dex.utils.Exceptions import Error, ToolArgumentError
from dex.utils.ReturnCode import ReturnCode
+def add_executable_arguments(parser):
+ executable_group = parser.add_mutually_exclusive_group(required=True)
+ executable_group.add_argument(
+ "--binary", metavar="<file>", help="provide binary file to debug"
+ )
+ executable_group.add_argument(
+ "--vs-solution",
+ metavar="<file>",
+ help="provide a path to an already existing visual studio solution.",
+ )
+
+
class TestToolBase(ToolBase):
def __init__(self, *args, **kwargs):
super(TestToolBase, self).__init__(*args, **kwargs)
- self.build_script: str = None
def add_tool_arguments(self, parser, defaults):
parser.description = self.__doc__
- add_builder_tool_arguments(parser)
add_debugger_tool_arguments(parser, self.context, defaults)
+ add_executable_arguments(parser)
add_heuristic_tool_arguments(parser)
parser.add_argument(
@@ -53,12 +62,6 @@ class TestToolBase(ToolBase):
def handle_options(self, defaults):
options = self.context.options
- if not options.builder and (options.cflags or options.ldflags):
- self.context.logger.warning(
- "--cflags and --ldflags will be ignored when not using --builder",
- enable_prefix=True,
- )
-
if options.vs_solution:
options.vs_solution = os.path.abspath(options.vs_solution)
if not os.path.isfile(options.vs_solution):
@@ -73,11 +76,6 @@ class TestToolBase(ToolBase):
raise Error(
'<d>could not find binary file</> <r>"{}"</>'.format(options.binary)
)
- else:
- try:
- self.build_script = handle_builder_tool_options(self.context)
- except ToolArgumentError as e:
- raise Error(e)
try:
handle_debugger_tool_options(self.context, defaults)
@@ -113,37 +111,14 @@ class TestToolBase(ToolBase):
)
# Test files contain dexter commands.
- options.test_files = []
- # Source files are to be compiled by the builder script and may also
- # contains dexter commands.
+ options.test_files = [options.test_path]
+ # Source files are the files that the program was built from, and are
+ # used to determine whether a breakpoint is external to the program
+ # (e.g. into a system header) or not.
options.source_files = []
- if os.path.isdir(options.test_path):
- subdirs = sorted(
- [r for r, _, f in os.walk(options.test_path) if "test.cfg" in f]
- )
-
- for subdir in subdirs:
- for f in os.listdir(subdir):
- # TODO: read file extensions from the test.cfg file instead so
- # that this isn't just limited to C and C++.
- file_path = os.path.normcase(os.path.join(subdir, f))
- if f.endswith(".cpp"):
- options.source_files.append(file_path)
- elif f.endswith(".c"):
- options.source_files.append(file_path)
- elif f.endswith(".dex"):
- options.test_files.append(file_path)
- # Source files can contain dexter commands too.
- options.test_files = options.test_files + options.source_files
-
- self._run_test(self._get_test_name(subdir))
- else:
- # We're dealing with a direct file path to a test file. If the file is non
- # .dex, then it must be a source file.
- if not options.test_path.endswith(".dex"):
- options.source_files = [options.test_path]
- options.test_files = [options.test_path]
- self._run_test(self._get_test_name(options.test_path))
+ if not options.test_path.endswith(".dex"):
+ options.source_files = [options.test_path]
+ self._run_test(self._get_test_name(options.test_path))
return self._handle_results()
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/tools/clang_opt_bisect/__init__.py b/cross-project-tests/debuginfo-tests/dexter/dex/tools/clang_opt_bisect/__init__.py
deleted file mode 100644
index b933e69..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/dex/tools/clang_opt_bisect/__init__.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# DExTer : Debugging Experience Tester
-# ~~~~~~ ~ ~~ ~ ~~
-#
-# 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 dex.tools.clang_opt_bisect.Tool import Tool
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py b/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
index 9c73b56..a4881fd 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/tools/test/Tool.py
@@ -12,7 +12,6 @@ import csv
import pickle
import shutil
-from dex.builder import run_external_build_script
from dex.command.ParseCommand import get_command_infos
from dex.debugger.Debuggers import run_debugger_subprocess
from dex.debugger.DebuggerControllers.DefaultController import DefaultController
@@ -24,7 +23,6 @@ from dex.utils.Exceptions import DebuggerException
from dex.utils.Exceptions import BuildScriptException, HeuristicException
from dex.utils.PrettyOutputBase import Stream
from dex.utils.ReturnCode import ReturnCode
-from dex.dextIR import BuilderIR
class TestCase(object):
@@ -109,36 +107,6 @@ class Tool(TestToolBase):
)
super(Tool, self).add_tool_arguments(parser, defaults)
- def _build_test_case(self):
- """Build an executable from the test source with the given --builder
- script and flags (--cflags, --ldflags) in the working directory.
- Or, if the --binary option has been given, copy the executable provided
- into the working directory and rename it to match the --builder output
- or skip if --vs-solution was passed on the command line.
- """
-
- if self.context.options.vs_solution:
- return
-
- options = self.context.options
- if options.binary:
- # Copy user's binary into the tmp working directory
- shutil.copy(options.binary, options.executable)
- builderIR = BuilderIR(name="binary", cflags=[options.binary], ldflags="")
- else:
- options = self.context.options
- compiler_options = [options.cflags for _ in options.source_files]
- linker_options = options.ldflags
- _, _, builderIR = run_external_build_script(
- self.context,
- script_path=self.build_script,
- source_files=options.source_files,
- compiler_options=compiler_options,
- linker_options=linker_options,
- executable_file=options.executable,
- )
- return builderIR
-
def _init_debugger_controller(self):
step_collection = DextIR(
executable_path=self.context.options.executable,
@@ -159,14 +127,13 @@ class Tool(TestToolBase):
return debugger_controller
- def _get_steps(self, builderIR):
+ def _get_steps(self):
"""Generate a list of debugger steps from a test case."""
debugger_controller = self._init_debugger_controller()
debugger_controller = run_debugger_subprocess(
debugger_controller, self.context.working_directory.path
)
steps = debugger_controller.step_collection
- steps.builder = builderIR
return steps
def _get_results_basename(self, test_name):
@@ -249,8 +216,12 @@ class Tool(TestToolBase):
result internally in self._test_cases.
"""
try:
- builderIR = self._build_test_case()
- steps = self._get_steps(builderIR)
+ if self.context.options.binary:
+ # Copy user's binary into the tmp working directory.
+ shutil.copy(
+ self.context.options.binary, self.context.options.executable
+ )
+ steps = self._get_steps()
self._record_steps(test_name, steps)
heuristic_score = Heuristic(self.context, steps)
self._record_score(test_name, heuristic_score)
diff --git a/cross-project-tests/debuginfo-tests/dexter/dex/utils/windows/PrettyOutput.py b/cross-project-tests/debuginfo-tests/dexter/dex/utils/windows/PrettyOutput.py
index bb82e24..7f9522d 100644
--- a/cross-project-tests/debuginfo-tests/dexter/dex/utils/windows/PrettyOutput.py
+++ b/cross-project-tests/debuginfo-tests/dexter/dex/utils/windows/PrettyOutput.py
@@ -27,7 +27,6 @@ class _CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure):
class PrettyOutput(PrettyOutputBase):
-
stdout = Stream(sys.stdout, ctypes.windll.kernel32.GetStdHandle(-11))
stderr = Stream(sys.stderr, ctypes.windll.kernel32.GetStdHandle(-12))
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp
index 7860ffd..adad780 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/dex_declare_file.cpp
@@ -5,7 +5,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: dex_declare_file.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp
index 2493fd0..db81de2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_program_state.cpp:
int GCD(int lhs, int rhs)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
index 2075cd2..bab2de6 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_step_kinds.cpp:
int abs(int i){
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp
index dc5f8c6..76296ca 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_step_order.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp
index d758a0f..9aef64c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp
@@ -9,7 +9,8 @@
// TODO: Reduce this test's coverage and be more specific about
// expected behaviour.
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_type.cpp:
template<class T>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp
index b7fe385..ca8f862 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp
@@ -5,7 +5,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_value.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp
index 519a99a..ee9b7b5 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_out_range.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: float_range_out_range.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp
index e7e04c9..8910878 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/float_range_zero_nonmatch.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: float_range_zero_nonmatch.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp
index 07a7557..f07a43b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/missing_dex_address.cpp
@@ -5,7 +5,8 @@
// The dbgeng driver doesn't support \DexDeclareAddress yet.
// UNSUPPORTED: system-windows
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: missing_dex_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp
index 48f56b7..ea98e43 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp
@@ -5,7 +5,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unreachable.cpp:
int
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp
index a6fd64f..3038277 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_line_range.cpp
@@ -5,7 +5,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unreachable_line_range.cpp:
int
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp
index 91467af..f91a261 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable_on_line.cpp
@@ -5,7 +5,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: not %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unreachable_on_line.cpp:
int
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c
index 7ec1050..d4fae47 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/command_line.c
@@ -1,7 +1,8 @@
// The dbgeng driver doesn't support \DexCommandLine yet.
// UNSUPPORTED: system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: command_line.c:
int main(int argc, const char **argv) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp
index a91bed4..6b46168 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_after_ref.cpp
@@ -2,7 +2,8 @@
// Test that a \DexDeclareAddress value can have its value defined after
// the first reference to that value.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: address_after_ref.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp
index 4538880..1bb995c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/address_hit_count.cpp
@@ -4,7 +4,8 @@
// expression after the target line has been stepped on a given number of
// times.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: address_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp
index 9cea93e..52a0f88 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/expression_address.cpp
@@ -2,7 +2,8 @@
// Test that a \DexDeclareAddress value can be used to compare the
// addresses of two local variables that refer to the same address.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expression_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp
index 4ce590d..71d8f99 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/identical_address.cpp
@@ -2,7 +2,8 @@
// Test that a \DexDeclareAddress value can be used to compare two equal
// pointer variables.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: identical_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp
index b0ec795..487d953 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/multiple_address.cpp
@@ -2,7 +2,8 @@
// Test that multiple \DexDeclareAddress references that point to different
// addresses can be used within a single \DexExpectWatchValue.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: multiple_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp
index 6d4f928..ab60c25 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/offset_address.cpp
@@ -2,7 +2,8 @@
// Test that a \DexDeclareAddress value can be used to compare two pointer
// variables that have a fixed offset between them.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: offset_address.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp
index 93d9787..5c54723 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_address/self_comparison.cpp
@@ -2,7 +2,8 @@
// Test that a \DexDeclareAddress value can be used to check the change in
// value of a variable over time, relative to its initial value.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: self_comparison.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp
index 5f1d50e..71df652 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/dex_and_source/test.cpp
@@ -6,7 +6,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: %dexter_regression_test -- %S | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: dex_and_source
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/precompiled_binary/commands.dex b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/precompiled_binary/commands.dex
index 924f55f..99b0a50 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/precompiled_binary/commands.dex
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/precompiled_binary/commands.dex
@@ -4,7 +4,7 @@
#
# UNSUPPORTED: system-darwin
#
-# RUN: %clang %S/test.cpp -O0 -g -o %t
+# RUN: %dexter_regression_test_build %S/test.cpp -o %t
# RUN: %dexter_regression_base --binary %t %s | FileCheck %s
# CHECK: commands.dex
#
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/windows_noncanonical_path/test.dex b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/windows_noncanonical_path/test.dex
index 1ad9a4e..ec48bc3 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/windows_noncanonical_path/test.dex
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_declare_file/windows_noncanonical_path/test.dex
@@ -3,7 +3,7 @@
#
# REQUIRES: system-windows
#
-# RUN: %clang "%S/source/test file.cpp" -O0 -g -o %t
+# RUN: %dexter_regression_test_build "%S/source/test file.cpp" -o %t
# RUN: %dexter_regression_base --binary %t %s | FileCheck %s
# CHECK: test.dex
#
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp
index 4dacdbd..8138b89 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional.cpp
@@ -6,7 +6,8 @@
// condition (x == 5) is satisfied.
// Tests using the default controller (no \DexLimitSteps).
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: default_conditional.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp
index 680dbd0..bbf6fcf 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_conditional_hit_count.cpp
@@ -7,7 +7,8 @@
// given number of times.
// Tests using the default controller (no \DexLimitSteps).
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: default_conditional_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp
index 1d700d7..efcfcff 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_hit_count.cpp
@@ -4,7 +4,8 @@
// specific number of times.
// Tests using the default controller (no \DexLimitSteps).
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: default_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp
index 953ba39..3e3edbf 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/default_simple.cpp
@@ -4,7 +4,8 @@
// is stepped on.
// Tests using the default controller (no \DexLimitSteps).
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: default_simple.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp
index f7a03c1..0473ede 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional.cpp
@@ -7,7 +7,8 @@
// The dbgeng driver doesn't support \DexLimitSteps yet.
// UNSUPPORTED: system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_conditional.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp
index 766ae53..2869b70 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_conditional_hit_count.cpp
@@ -8,7 +8,8 @@
// The dbgeng driver doesn't support \DexLimitSteps yet.
// UNSUPPORTED: system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_conditional_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp
index 7c57b172..5928d43 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_hit_count.cpp
@@ -7,7 +7,8 @@
// The dbgeng driver doesn't support \DexLimitSteps yet.
// UNSUPPORTED: system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_hit_count.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp
index 7668958..b3d61c5 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/dex_finish_test/limit_steps_simple.cpp
@@ -7,7 +7,8 @@
// The dbgeng driver doesn't support \DexLimitSteps yet.
// UNSUPPORTED: system-windows, system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_simple.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp
index 7aa8b1a..6f822f7 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp
@@ -5,7 +5,8 @@
// UNSUPPORTED: system-darwin
//
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_program_state.cpp:
int GCD(int lhs, int rhs)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp
index 1f7a96b..5d8f45e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp
@@ -10,7 +10,8 @@
// TODO: The dbgeng debugger does not support column step reporting at present.
// XFAIL: system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: direction.cpp:
int func(int i) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp
index b386dc4..2126bd8 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp
@@ -5,7 +5,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: func.cpp:
int func(int i) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp
index cbefcb9..41e7695 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp
@@ -8,7 +8,8 @@
// This fails right now on my linux and windows machine, needs examining as to
// why.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: func_external.cpp:
#include <cstdlib>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp
index 0264420..432b351 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp
@@ -5,7 +5,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: recursive.cpp:
int func(int i) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp
index fb19869..d47058e 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp
@@ -5,7 +5,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: small_loop.cpp:
int func(int i){
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp
index c6e992d..4873591 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp
@@ -4,10 +4,11 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_step_order.cpp:
-int main()
+int main() // DexLabel('main')
{
volatile int a = 1; // DexExpectStepOrder(1)
volatile int b = 1; // DexExpectStepOrder(2)
@@ -19,6 +20,6 @@ int main()
return 0;
}
-// DexExpectStepOrder(4, on_line=16);
-// DexExpectStepOrder(5, on_line=17);
-// DexExpectStepOrder(6, on_line=18);
+// DexExpectStepOrder(4, on_line=ref('main')+6);
+// DexExpectStepOrder(5, on_line=ref('main')+7);
+// DexExpectStepOrder(6, on_line=ref('main')+8);
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp
index 6719406..d59f720 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp
@@ -8,7 +8,8 @@
// in the same manner as LLDB.
// XFAIL: system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_type.cpp:
template<class T>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp
index a4877dd..9286a2c 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: expect_watch_value.cpp:
unsigned long Factorial(int n) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp
index 0d7e1f6..46610b2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_multiple.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: float_range_multiple.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp
index c23fe09..320a400 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_no_arg.cpp
@@ -7,7 +7,8 @@
// work for both dbgeng and lldb, which output floats differently.
// UNSUPPORTED: system-darwin, system-windows
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: float_range_no_arg.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp
index 6a844e7..8034a37 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_small.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: float_range_small.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp
index 7dbd515..0d55ab4 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/float_range_watch/float_range_zero_match.cpp
@@ -3,7 +3,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: float_range_zero_match.cpp:
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp
index 059d501a..50cc3e21 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/hit_count.cpp
@@ -2,7 +2,8 @@
// Test that \DexLimitSteps keyword argument hit_count correctly limits
// the number of times the command can trigger.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: hit_count.cpp
int a;
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp
index ac5d2e9..a89d316 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_check_json_step_count.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Check number of step lines are correctly reported in json output.
//
-// RUN: %dexter_regression_test --verbose -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t --verbose -- %s | FileCheck %s
// CHECK: limit_steps_check_json_step_count.cpp
// CHECK: ## BEGIN ##
// CHECK-COUNT-3: json_step_count.cpp",
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp
index f2ec583..b60c5ca 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_loop.cpp
@@ -2,7 +2,8 @@
// Check the DexLimit steps only gathers step info for 2 iterations of a
// for loop.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_expect_loop.cpp:
int main(const int argc, const char * argv[]) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp
index 8808df6..76c6be6 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_expect_value.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Ensure that limited stepping breaks for all expected values.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_expect_value.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp
index e56d4e4..863782a 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_line_mismatch.cpp
@@ -3,7 +3,8 @@
// doesn't exist. This can happen due to optimisations or label is on an
// empty line.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_line_mismatch.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp
index 6801b24..a250e53 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_overlapping_ranges.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Ensure that multiple overlapping \DexLimitSteps ranges do not interfere.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_overlapping_ranges.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp
index 71c13b7..bc1a690 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/limit_steps_same_line_conditional.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Test that LimitStep commands can exist on the same from line.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: limit_steps_same_line_conditional.cpp
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp
index d97d511..d7bf8ca 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/limit_steps/unconditional.cpp
@@ -2,7 +2,8 @@
// Test that \DexLimitSteps can be used without a condition (i.e. the
// breakpoint range is set any time from_line is stepped on).
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unconditional.cpp
int glob;
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp
index bcc1b83..5e754c0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unreachable.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp
index b63fa31..cd98561 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_not_cmd_lineno.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unreachable_not_cmd_lineno.cpp:
int main(int argc, char **argv)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp
index 21c40c7..a59b8b2 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable_on_line.cpp
@@ -4,7 +4,8 @@
//
// UNSUPPORTED: system-darwin
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: unreachable_on_line.cpp:
int main()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect-results.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect-results.cpp
deleted file mode 100644
index 3d38810..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect-results.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Purpose:
-// Check the `clang-opt-bisect` tool runs with --results-directory.
-//
-// RUN: true
-// RUN: %dexter_base clang-opt-bisect \
-// RUN: --debugger %dexter_regression_test_debugger \
-// RUN: --builder %dexter_regression_test_builder \
-// RUN: --cflags "%dexter_regression_test_cflags" \
-// RUN: --ldflags "%dexter_regression_test_ldflags" \
-// RUN: --results-directory=%t \
-// RUN: -- %s \
-// RUN: | FileCheck %s
-//// Clean up those results files.
-// RUN: rm %t/clang-opt-bisect-results.cpp-pass-summary.csv
-// RUN: rm %t/clang-opt-bisect-results.cpp-per_pass_score.csv
-// RUN: rm %t/overall-pass-summary.csv
-// RUN: rm %t/*.dextIR
-// RUN: rm %t/*.txt
-// RUN: rmdir %t
-// CHECK: running pass 0
-// CHECK: wrote{{.*}}per_pass_score
-// CHECK: wrote{{.*}}pass-summary
-// CHECK: wrote{{.*}}overall-pass-summary
-
-int main() {
- return 0;
-}
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect.cpp
deleted file mode 100644
index d480da8..0000000
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/clang-opt-bisect/clang-opt-bisect.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// Purpose:
-// Check the `clang-opt-bisect` tool runs with typical input.
-//
-// RUN: true
-// RUN: %dexter_base clang-opt-bisect \
-// RUN: --debugger %dexter_regression_test_debugger \
-// RUN: --builder %dexter_regression_test_builder \
-// RUN: --cflags "%dexter_regression_test_cflags" \
-// RUN: --ldflags "%dexter_regression_test_ldflags" \
-// RUN: -- %s \
-// RUN: | FileCheck %s
-// CHECK: running pass 0
-
-int main() {
- return 0;
-}
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/help/help.test b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/help/help.test
index fc3f455..90119a1 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/help/help.test
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/help/help.test
@@ -3,7 +3,6 @@ Purpose:
RUN: %dexter_base help | FileCheck %s
CHECK: The following subtools are available:
-CHECK: clang-opt-bisect
CHECK: help
CHECK: list-debuggers
CHECK: test
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp
index 5d4e39e..cdde328 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/address_printing.cpp
@@ -11,7 +11,8 @@
// The dbgeng driver doesn't support \DexLimitSteps yet.
// UNSUPPORTED: system-windows
//
-// RUN: not %dexter_regression_test -v -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s
// CHECK: Resolved Addresses:
// CHECK-NEXT: 'x_2': 0x[[X2_VAL:[0-9a-f]+]]
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp
index 424edaa..e1a2791 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_bad_label_ref.cpp
@@ -1,9 +1,10 @@
// Purpose:
// Check that referencing an undefined label gives a useful error message.
//
-// RUN: not %dexter_regression_test -v -- %s | FileCheck %s --match-full-lines
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
//
-// CHECK: parser error:{{.*}}err_bad_label_ref.cpp(14): Unresolved label: 'label_does_not_exist'
+// CHECK: parser error:{{.*}}err_bad_label_ref.cpp(15): Unresolved label: 'label_does_not_exist'
// CHECK-NEXT: {{Dex}}ExpectWatchValue('result', '0', on_line=ref('label_does_not_exist'))
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp
index 23bc1a5..2120550 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_address.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Check that declaring duplicate addresses gives a useful error message.
//
-// RUN: not %dexter_regression_test -v -- %s | FileCheck %s --match-full-lines
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp
index 7da6920..d8cef2b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_duplicate_label.cpp
@@ -1,9 +1,10 @@
// Purpose:
// Check that defining duplicate labels gives a useful error message.
//
-// RUN: not %dexter_regression_test -v -- %s | FileCheck %s --match-full-lines
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
//
-// CHECK: parser error:{{.*}}err_duplicate_label.cpp(11): Found duplicate line label: 'oops'
+// CHECK: parser error:{{.*}}err_duplicate_label.cpp(12): Found duplicate line label: 'oops'
// CHECK-NEXT: {{Dex}}Label('oops')
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp
index feb26a7..bac1bae 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren.cpp
@@ -7,9 +7,9 @@
// Note: Despite using 'lldb' as the debugger, lldb is not actually required
// as the test should finish before lldb would be invoked.
//
-// RUN: not %dexter_base test --builder 'clang' --debugger 'lldb' \
-// RUN: --cflags "-O0 -g" -v -- %s \
-// RUN: | FileCheck %s --match-full-lines --strict-whitespace
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_base test --binary %t --debugger 'lldb' \
+// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_paren.cpp(22): Unbalanced parenthesis starting here
// CHECK:// {{Dex}}ExpectWatchValue(
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp
index 7cbce8d..d48d0a0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_paren_mline.cpp
@@ -7,9 +7,9 @@
// Note: Despite using 'lldb' as the debugger, lldb is not actually required
// as the test should finish before lldb would be invoked.
//
-// RUN: not %dexter_base test --builder 'clang' --debugger "lldb" \
-// RUN: --cflags "-O0 -g" -v -- %s \
-// RUN: | FileCheck %s --match-full-lines --strict-whitespace
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_base test --binary %t --debugger "lldb" \
+// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_paren_mline.cpp(23): Unbalanced parenthesis starting here
// CHECK:{{Dex}}ExpectWatchValue(
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp
index a0b8ab7..732baef 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax.cpp
@@ -7,9 +7,9 @@
// Note: Despite using 'lldb' as the debugger, lldb is not actually required
// as the test should finish before lldb would be invoked.
//
-// RUN: not %dexter_base test --builder 'clang' --debugger "lldb" \
-// RUN: --cflags "-O0 -g" -v -- %s \
-// RUN: | FileCheck %s --match-full-lines --strict-whitespace
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_base test --binary %t --debugger "lldb" \
+// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_syntax.cpp(21): invalid syntax
// CHECK:// {{Dex}}ExpectWatchValue(,'a', 3, 3, 3, 3, on_line=0)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp
index f47ddf8..3ede5e9 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_syntax_mline.cpp
@@ -7,9 +7,9 @@
// Note: Despite using 'lldb' as the debugger, lldb is not actually required
// as the test should finish before lldb would be invoked.
//
-// RUN: not %dexter_base test --builder 'clang' --debugger "lldb" \
-// RUN: --cflags "-O0 -g" -v -- %s \
-// RUN: | FileCheck %s --match-full-lines --strict-whitespace
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_base test --binary %t --debugger "lldb" \
+// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_syntax_mline.cpp(24): invalid syntax
// CHECK: ,'a', 3, 3, 3, 3, on_line=0)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp
index d42c5a0..01c1933 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type.cpp
@@ -7,9 +7,9 @@
// Note: Despite using 'lldb' as the debugger, lldb is not actually required
// as the test should finish before lldb would be invoked.
//
-// RUN: not %dexter_base test --builder 'clang' --debugger "lldb" \
-// RUN: --cflags "-O0 -g" -v -- %s \
-// RUN: | FileCheck %s --match-full-lines --strict-whitespace
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_base test --binary %t --debugger "lldb" \
+// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_type.cpp(21): expected at least two args
// CHECK:// {{Dex}}ExpectWatchValue()
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp
index 733c0d4..38a1631 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_type_mline.cpp
@@ -7,9 +7,9 @@
// Note: Despite using 'lldb' as the debugger, lldb is not actually required
// as the test should finish before lldb would be invoked.
//
-// RUN: not %dexter_base test --builder 'clang' --debugger "lldb" \
-// RUN: --cflags "-O0 -g" -v -- %s \
-// RUN: | FileCheck %s --match-full-lines --strict-whitespace
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_base test --binary %t --debugger "lldb" \
+// RUN: -v -- %s | FileCheck %s --match-full-lines --strict-whitespace
//
// CHECK:parser error:{{.*}}err_type_mline.cpp(22): expected at least two args
// CHECK:{{Dex}}ExpectWatchValue(
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp
index baae1ac..7939c9a 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/err_undeclared_addr.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Check that using an undeclared address gives a useful error message.
//
-// RUN: not %dexter_regression_test -v -- %s | FileCheck %s --match-full-lines
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: not %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s --match-full-lines
int main() {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp
index 0a95336..0d2fc0b 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_another_line.cpp
@@ -2,7 +2,8 @@
// Check that the optional keyword argument 'on_line' makes a \DexLabel label
// that line instead of the line the command is found on.
//
-// RUN: %dexter_regression_test -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -- %s | FileCheck %s
// CHECK: label_another_line.cpp: (1.0000)
int main() {
@@ -10,5 +11,5 @@ int main() {
return result;
}
-// DexLabel('test', on_line=10)
+// DexLabel('test', on_line=11)
// DexExpectWatchValue('result', '0', on_line=ref('test'))
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp
index 81d4ca4..1389792 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/label_offset.cpp
@@ -1,7 +1,8 @@
// Purpose:
// Check that we can use label-relative line numbers.
//
-// RUN: %dexter_regression_test -v -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t -v -- %s | FileCheck %s
//
// CHECK: label_offset.cpp: (1.0000)
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp
index 7727391..36db3eb 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/source-root-dir.cpp
@@ -1,10 +1,10 @@
// This test started failing recently for unknown reasons.
// XFAIL:*
+// RUN: %dexter_regression_test_build \
+// RUN: -fdebug-prefix-map=%S=/changed %s -o %t
// RUN: %dexter --fail-lt 1.0 -w \
-// RUN: --builder %dexter_regression_test_builder \
+// RUN: --binary %t \
// RUN: --debugger %dexter_regression_test_debugger \
-// RUN: --cflags "%dexter_regression_test_cflags -fdebug-prefix-map=%S=/changed" \
-// RUN: --ldflags "%dexter_regression_test_ldflags" \
// RUN: --source-root-dir=%S --debugger-use-relative-paths -- %s
#include <stdio.h>
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c
index 11004ad..7efd3c0 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args.c
@@ -1,7 +1,8 @@
// The dbgeng driver doesn't support --target-run-args yet.
// UNSUPPORTED: system-windows
//
-// RUN: %dexter_regression_test --target-run-args "a b 'c d'" -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t --target-run-args "a b 'c d'" -- %s | FileCheck %s
// CHECK: target_run_args.c:
int main(int argc, const char **argv) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c
index f329cb9..34ce63f 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/test/target_run_args_with_command.c
@@ -1,7 +1,8 @@
// The dbgeng driver doesn't support --target-run-args yet.
// UNSUPPORTED: system-windows
//
-// RUN: %dexter_regression_test --target-run-args "a b 'c d'" -- %s | FileCheck %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t --target-run-args "a b 'c d'" -- %s | FileCheck %s
// CHECK: target_run_args_with_command.c:
int main(int argc, const char **argv) {
diff --git a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
index d5b04b3..9373c04 100644
--- a/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
+++ b/cross-project-tests/debuginfo-tests/dexter/feature_tests/subtools/view.cpp
@@ -1,9 +1,10 @@
// Purpose:
// Check the `view` subtool works with typical inputs.
//
-// RUN: %dexter_regression_test --results %t -- %s
+// RUN: %dexter_regression_test_build %s -o %t
+// RUN: %dexter_regression_test_run --binary %t --results %t.results -- %s
//
-// RUN: %dexter_base view %t/view.cpp.dextIR | FileCheck %s
+// RUN: %dexter_base view %t.results/view.cpp.dextIR | FileCheck %s
// CHECK: ## BEGIN
// CHECK: ## END
//
diff --git a/cross-project-tests/lit.cfg.py b/cross-project-tests/lit.cfg.py
index 350dd45..a9d2a7b 100644
--- a/cross-project-tests/lit.cfg.py
+++ b/cross-project-tests/lit.cfg.py
@@ -123,17 +123,15 @@ def configure_dexter_substitutions():
if platform.system() == "Windows":
# The Windows builder script uses lld.
dependencies = ["clang", "lld-link"]
- dexter_regression_test_builder = "clang-cl_vs2015"
+ dexter_regression_test_builder = "clang-cl"
dexter_regression_test_debugger = "dbgeng"
- dexter_regression_test_cflags = "/Zi /Od"
- dexter_regression_test_ldflags = "/Zi"
+ dexter_regression_test_flags = "/Zi /Od"
else:
# Use lldb as the debugger on non-Windows platforms.
dependencies = ["clang", "lldb"]
- dexter_regression_test_builder = "clang"
+ dexter_regression_test_builder = "clang++"
dexter_regression_test_debugger = "lldb"
- dexter_regression_test_cflags = "-O0 -glldb"
- dexter_regression_test_ldflags = ""
+ dexter_regression_test_flags = "-O0 -glldb"
tools.append(
ToolSubst("%dexter_regression_test_builder", dexter_regression_test_builder)
@@ -141,17 +139,16 @@ def configure_dexter_substitutions():
tools.append(
ToolSubst("%dexter_regression_test_debugger", dexter_regression_test_debugger)
)
+ # We don't need to distinguish cflags and ldflags because for Dexter
+ # regression tests we use clang to drive the linker, and so all flags will be
+ # passed in a single command.
tools.append(
- ToolSubst("%dexter_regression_test_cflags", dexter_regression_test_cflags)
- )
- tools.append(
- ToolSubst("%dexter_regression_test_ldflags", dexter_regression_test_cflags)
+ ToolSubst("%dexter_regression_test_flags", dexter_regression_test_flags)
)
# Typical command would take the form:
- # ./path_to_py/python.exe ./path_to_dex/dexter.py test --fail-lt 1.0 -w --builder clang --debugger lldb --cflags '-O0 -g'
- # Exclude build flags for %dexter_regression_base.
- dexter_regression_test_base = " ".join(
+ # ./path_to_py/python.exe ./path_to_dex/dexter.py test --fail-lt 1.0 -w --binary %t --debugger lldb --cflags '-O0 -g'
+ dexter_regression_test_run = " ".join(
# "python", "dexter.py", test, fail_mode, builder, debugger, cflags, ldflags
[
'"{}"'.format(sys.executable),
@@ -162,21 +159,16 @@ def configure_dexter_substitutions():
dexter_regression_test_debugger,
]
)
- tools.append(ToolSubst("%dexter_regression_base", dexter_regression_test_base))
+ tools.append(ToolSubst("%dexter_regression_test_run", dexter_regression_test_run))
# Include build flags for %dexter_regression_test.
dexter_regression_test_build = " ".join(
[
- dexter_regression_test_base,
- "--builder",
dexter_regression_test_builder,
- '--cflags "',
- dexter_regression_test_cflags + '"',
- '--ldflags "',
- dexter_regression_test_ldflags + '"',
+ dexter_regression_test_flags,
]
)
- tools.append(ToolSubst("%dexter_regression_test", dexter_regression_test_build))
+ tools.append(ToolSubst("%dexter_regression_test_build", dexter_regression_test_build))
return dependencies