@@ -56,7 +56,8 @@ ZJIT_BINDGEN_DIFF_OPTS =
5656# Generate Rust bindings. See source for details.
5757# Needs `./configure --enable-zjit=dev` and Clang.
5858ifneq ($(strip $(CARGO ) ) ,) # if configure found Cargo
59- .PHONY : zjit-bindgen zjit-bindgen-show-unused zjit-test zjit-test-lldb zjit-test-update
59+ .PHONY : zjit-bindgen zjit-bindgen-show-unused zjit-test zjit-test-update
60+ .PHONY : zjit-test-debug zjit-test-lldb zjit-test-gdb zjit-test-rr
6061zjit-bindgen : zjit.$(OBJEXT )
6162 ZJIT_SRC_ROOT_PATH=' $(top_srcdir)' BINDGEN_JIT_NAME=zjit $(CARGO ) run --manifest-path ' $(top_srcdir)/zjit/bindgen/Cargo.toml' -- $(CFLAGS ) $(XCFLAGS ) $(CPPFLAGS )
6263 $(Q ) if [ ' x$(HAVE_GIT)' = xyes ]; then $( GIT) -C " $( top_srcdir) " diff $( ZJIT_BINDGEN_DIFF_OPTS) zjit/src/cruby_bindings.inc.rs; fi
@@ -93,8 +94,11 @@ zjit-test-update:
9394 @$(CARGO ) insta --version > /dev/null 2>&1 || { echo " Error: cargo-insta is not installed. Install with: cargo install cargo-insta" ; exit 1; }
9495 @$(CARGO ) insta accept --manifest-path ' $(top_srcdir)/zjit/Cargo.toml'
9596
96- # Run a ZJIT test written with Rust #[test] under LLDB
97- zjit-test-lldb : libminiruby.a
97+ ZJIT_DEBUGGER =
98+ ZJIT_DEBUGGER_OPTS =
99+
100+ # Run a ZJIT test written with Rust #[test] under $(ZJIT_DEBUGGER)
101+ zjit-test-debug : libminiruby.a
98102 $(Q ) set -eu; \
99103 if [ -z ' $(ZJIT_TESTS)' ]; then \
100104 echo " Please pass a ZJIT_TESTS=... filter to make." ; \
@@ -104,7 +108,19 @@ zjit-test-lldb: libminiruby.a
104108 exe_path=` $( ZJIT_NEXTEST_ENV) \
105109 $(CARGO ) nextest list --manifest-path ' $(top_srcdir)/zjit/Cargo.toml' --message-format json --list-type=binaries-only | \
106110 $(BASERUBY ) -rjson -e ' puts JSON.load(STDIN.read).dig("rust-binaries", "zjit", "binary-path")' ` ; \
107- exec lldb $$ exe_path -- --test-threads=1 $(ZJIT_TESTS )
111+ exec $(ZJIT_DEBUGGER ) $$ exe_path $(ZJIT_DEBUGGER_OPTS ) --test-threads=1 $(ZJIT_TESTS )
112+
113+ # Run a ZJIT test written with Rust #[test] under LLDB
114+ zjit-test-lldb :
115+ $(Q ) $(MAKE ) zjit-test-debug ZJIT_DEBUGGER=lldb ZJIT_DEBUGGER_OPTS=--
116+
117+ # Run a ZJIT test written with Rust #[test] under GDB
118+ zjit-test-gdb : libminiruby.a
119+ $(Q ) $(MAKE ) zjit-test-debug ZJIT_DEBUGGER=" gdb --args"
120+
121+ # Run a ZJIT test written with Rust #[test] under rr-debugger
122+ zjit-test-rr : libminiruby.a
123+ $(Q ) $(MAKE ) zjit-test-debug ZJIT_DEBUGGER=" rr record"
108124
109125# A library for booting miniruby in tests.
110126# Why not use libruby-static.a for this?
0 commit comments