diff options
author | Tom Tromey <tromey@adacore.com> | 2023-07-24 10:12:17 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-08-01 12:52:26 -0600 |
commit | 7abfd03742d2cea591dca940aa748e865f906018 (patch) | |
tree | a0d520d1a3540bbb222b99264ab6459f8a2f916c | |
parent | f3337b1e944f379fb30e1e1639586d9392096795 (diff) | |
download | binutils-7abfd03742d2cea591dca940aa748e865f906018.zip binutils-7abfd03742d2cea591dca940aa748e865f906018.tar.gz binutils-7abfd03742d2cea591dca940aa748e865f906018.tar.bz2 |
Refactor dap_launch
This patch refactors dap_launch to make it more extensible and also
easier to use.
-rw-r--r-- | gdb/testsuite/gdb.dap/args-env.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dap/stop-at-main.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/lib/dap-support.exp | 67 |
3 files changed, 43 insertions, 28 deletions
diff --git a/gdb/testsuite/gdb.dap/args-env.exp b/gdb/testsuite/gdb.dap/args-env.exp index 96fbb28..ae6cf2e 100644 --- a/gdb/testsuite/gdb.dap/args-env.exp +++ b/gdb/testsuite/gdb.dap/args-env.exp @@ -25,7 +25,7 @@ if {[build_executable ${testfile}.exp $testfile] == -1} { return } -if {[dap_launch $testfile {a "b c"} {{DEI something}}] == ""} { +if {[dap_launch $testfile arguments {a "b c"} env {{DEI something}}] == ""} { return } diff --git a/gdb/testsuite/gdb.dap/stop-at-main.exp b/gdb/testsuite/gdb.dap/stop-at-main.exp index 80a9b81..3f22f4a 100644 --- a/gdb/testsuite/gdb.dap/stop-at-main.exp +++ b/gdb/testsuite/gdb.dap/stop-at-main.exp @@ -25,7 +25,7 @@ if {[build_executable ${testfile}.exp $testfile $srcfile] == -1} { return } -if {[dap_launch $testfile {} {} 1] == ""} { +if {[dap_launch $testfile stop_at_main 1] == ""} { return } diff --git a/gdb/testsuite/lib/dap-support.exp b/gdb/testsuite/lib/dap-support.exp index e3750e1..4a1a288 100644 --- a/gdb/testsuite/lib/dap-support.exp +++ b/gdb/testsuite/lib/dap-support.exp @@ -239,40 +239,55 @@ proc _dap_initialize {name} { # Start gdb, send a DAP initialize request, and then a launch request # specifying FILE as the program to use for the inferior. Returns the # empty string on failure, or the response object from the launch -# request. If specified, ARGS is a list of command-line arguments, -# and ENV is a list of pairs of the form {VAR VALUE} that is used to -# populate the inferior's environment. After this is called, gdb will -# be ready to accept breakpoint requests. If STOP_AT_MAIN is nonzero, -# pass "stopAtBeginningOfMainSubprogram" to the launch request. -proc dap_launch {file {args {}} {env {}} {stop_at_main 0}} { +# request. If specified, ARGS is a dictionary of key-value pairs, +# each passed to the launch request. Valid keys are: +# * arguments - value is a list of strings passed as command-line +# arguments to the inferior +# * env - value is a list of pairs of the form {VAR VALUE} that is +# used to populate the inferior's environment. +# * stop_at_main - value is ignored, the presence of this means that +# "stopAtBeginningOfMainSubprogram" will be passed to the launch +# request. +# +# After this proc is called, gdb will be ready to accept breakpoint +# requests. +proc dap_launch {file {args {}}} { if {[_dap_initialize "startup - initialize"] == ""} { return "" } set params "o program" append params " [format {[%s]} [list s [standard_output_file $file]]]" - if {[llength $args] > 0} { - append params " args" - set arglist "" - foreach arg $args { - append arglist " \[s [list $arg]\]" - } - append params " \[a $arglist\]" - } + foreach {key value} $args { + switch -exact -- $key { + arguments { + append params " args" + set arglist "" + foreach arg $value { + append arglist " \[s [list $arg]\]" + } + append params " \[a $arglist\]" + } - if {[llength $env] > 0} { - append params " env" - set envlist "" - foreach pair $env { - lassign $pair var value - append envlist " $var" - append envlist " [format {[%s]} [list s $value]]" - } - append params " \[o $envlist\]" - } + env { + append params " env" + set envlist "" + foreach pair $value { + lassign $pair var value + append envlist " $var" + append envlist " [format {[%s]} [list s $value]]" + } + append params " \[o $envlist\]" + } + + stop_at_main { + append params { stopAtBeginningOfMainSubprogram [l true]} + } - if {$stop_at_main} { - append params { stopAtBeginningOfMainSubprogram [l true]} + default { + error "unrecognized parameter $key" + } + } } return [dap_check_request_and_response "startup - launch" launch $params] |