From 3dcf301752a09d91961ebf4f17d08864ff3b05d4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 18 Dec 2023 10:11:30 +0100 Subject: [PATCH] runtests: support -gl. Like -g but for lldb. Follow-up to 63b5748 Invokes the test case via lldb instead of gdb. Since using gdb is such a pain on mac, using lldb is sometimes less quirky. Closes #12547 --- tests/runner.pm | 22 ++++++++++++++++++---- tests/runtests.1 | 5 +++++ tests/runtests.pl | 4 ++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/tests/runner.pm b/tests/runner.pm index 8b61eb4b3b..1ee912fc7f 100644 --- a/tests/runner.pm +++ b/tests/runner.pm @@ -945,9 +945,16 @@ sub singletest_run { if($gdbthis) { my $gdbinit = "$TESTDIR/gdbinit$testnum"; open(my $gdbcmd, ">", "$LOGDIR/gdbcmd") || die "Failure writing gdb file"; - print $gdbcmd "set args $cmdargs\n"; - print $gdbcmd "show args\n"; - print $gdbcmd "source $gdbinit\n" if -e $gdbinit; + if($gdbthis == 1) { + # gdb mode + print $gdbcmd "set args $cmdargs\n"; + print $gdbcmd "show args\n"; + print $gdbcmd "source $gdbinit\n" if -e $gdbinit; + } + else { + # lldb mode + print $gdbcmd "set args $cmdargs\n"; + } close($gdbcmd) || die "Failure writing gdb file"; } @@ -963,11 +970,18 @@ sub singletest_run { $testnum, "$gdb --directory $LIBDIR " . shell_quote($DBGCURL) . " -x $LOGDIR/gdbcmd"); } - elsif($gdbthis) { + elsif($gdbthis == 1) { + # gdb my $GDBW = ($gdbxwin) ? "-w" : ""; runclient("$gdb --directory $LIBDIR " . shell_quote($DBGCURL) . " $GDBW -x $LOGDIR/gdbcmd"); $cmdres=0; # makes it always continue after a debugged run } + elsif($gdbthis == 2) { + # $gdb is "lldb" + print "runs lldb -- $CURL $cmdargs\n"; + runclient("lldb -- $CURL $cmdargs"); + $cmdres=0; # makes it always continue after a debugged run + } else { # Convert the raw result code into a more useful one ($cmdres, $dumped_core) = normalize_cmdres(runclient("$CMDLINE")); diff --git a/tests/runtests.1 b/tests/runtests.1 index 6d895d2b9b..01d490b2c7 100644 --- a/tests/runtests.1 +++ b/tests/runtests.1 @@ -116,6 +116,11 @@ Run the given test(s) with gdb. This is best used on a single test case and curl built --disable-shared. This then fires up gdb with command line set to run the specified test case. Simply (set a break-point and) type 'run' to start. +.IP "-gl" +Run the given test(s) with lldb. This is best used on a single test case and +curl built --disable-shared. This then fires up lldb with command line set to +run the specified test case. Simply (set a break-point and) type 'run' to +start. .IP "-gw" Run the given test(s) with gdb as a windowed application. .IP "-h, --help" diff --git a/tests/runtests.pl b/tests/runtests.pl index e7b9f01f6a..9dbe4e2d68 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -2215,6 +2215,10 @@ while(@ARGV) { # run this test with gdb $gdbthis=1; } + elsif ($ARGV[0] eq "-gl") { + # run this test with lldb + $gdbthis=2; + } elsif ($ARGV[0] eq "-gw") { # run this test with windowed gdb $gdbthis=1;