gdb/testsuite: change mi_gdb_start to take a list of flags
authorAndrew Burgess <aburgess@redhat.com>
Wed, 27 Apr 2022 17:45:47 +0000 (18:45 +0100)
committerAndrew Burgess <aburgess@redhat.com>
Tue, 3 May 2022 09:30:33 +0000 (10:30 +0100)
After this previous commit I was thinking about the API of
mi_gdb_start.  I felt that the idea of passing flags as separate
arguments and using 'args' to gather these into a list, though clever,
was not an intuitive API.

In this commit I modify mi_gdb_start so that it expects a single
argument, which should be a list of flags.  Thus, where we previously
would have said:

  mi_gdb_start separate-mi-tty separate-inferior-tty

We would now say:

  mi_gdb_start { separate-mi-tty separate-inferior-tty }

However, it turns out we never actually call mi_gdb_start passing two
arguments in this way at all.  We do in some places do this:

  mi_gdb_start separate-inferior-tty

But that's fine, a single string like this works equally well as a
single item list, so this will not need updating.

There is also one place where we do this:

  eval mi_gdb_start $start_ops

where $start_ops is a list that might contains 0, 1, or 2 items.  The
eval here is used to expand the $start_ops list so mi_gdb_start sees
the list contents as separate arguments.  In this case we just need to
drop the use of eval.

I think that the new API is more intuitive, but others might
disagree, in which case I can drop this change.

There should be no change in what is tested after this commit.

gdb/testsuite/gdb.mi/mi-exec-run.exp
gdb/testsuite/lib/mi-support.exp

index ffbe6bcd36eb5c1d6611c859aef3f52dc936be5e..f8e6550850f83f7f4f49bd718f95f8f26258e542 100644 (file)
@@ -60,7 +60,7 @@ proc test {inftty_mode mi_mode force_fail} {
        lappend start_ops "separate-mi-tty"
     }
 
-    if [eval mi_gdb_start $start_ops] {
+    if [mi_gdb_start $start_ops] {
        return
     }
 
index a231b8311b9eeeb53a4e6a40ec70b4c2c906b6ad..e578a7e6f9b74e060b85ceb104845fca8abaac3f 100644 (file)
@@ -131,7 +131,13 @@ proc mi_create_inferior_pty {} {
     }
 }
 
-proc mi_gdb_start_separate_mi_tty { args } {
+#
+# Like default_mi_gdb_start below, but the MI is created as a separate
+# ui in a new tty.  The global MI_SPAWN_ID is updated to point at the
+# new tty created for the MI interface.  The global GDB_MAIN_SPAWN_ID
+# is updated to the current value of the global GDB_SPAWN_ID.
+#
+proc mi_gdb_start_separate_mi_tty { { flags {} } } {
     global gdb_prompt mi_gdb_prompt
     global timeout
     global gdb_spawn_id gdb_main_spawn_id mi_spawn_id
@@ -139,8 +145,8 @@ proc mi_gdb_start_separate_mi_tty { args } {
 
     set separate_inferior_pty 0
 
-    foreach arg $args {
-       if {$arg == "separate-inferior-tty"} {
+    foreach flag $flags {
+       if {$flag == "separate-inferior-tty"} {
            set separate_inferior_pty 1
        }
     }
@@ -183,6 +189,8 @@ proc mi_gdb_start_separate_mi_tty { args } {
 #
 # default_mi_gdb_start [FLAGS] -- start gdb running, default procedure
 #
+# FLAGS is a list of flags, each flag is a string.
+#
 # If "separate-inferior-tty" is specified, the inferior works with
 # it's own PTY.
 #
@@ -193,7 +201,7 @@ proc mi_gdb_start_separate_mi_tty { args } {
 # tests on different hosts all using the same server, things can
 # get really slow.  Give gdb at least 3 minutes to start up.
 #
-proc default_mi_gdb_start { args } {
+proc default_mi_gdb_start { { flags {} } } {
     global use_gdb_stub
     global GDB
     global INTERNAL_GDBFLAGS GDBFLAGS
@@ -218,16 +226,16 @@ proc default_mi_gdb_start { args } {
 
     set separate_inferior_pty 0
 
-    foreach arg $args {
-       if {$arg == "separate-mi-tty"} {
+    foreach flag $flags {
+       if {$flag == "separate-mi-tty"} {
            set separate_mi_pty 1
-       } elseif {$arg == "separate-inferior-tty"} {
+       } elseif {$flag == "separate-inferior-tty"} {
            set separate_inferior_pty 1
        }
     }
 
     if {$separate_mi_pty} {
-       return [eval mi_gdb_start_separate_mi_tty $args]
+       return [mi_gdb_start_separate_mi_tty $flags]
     }
 
     set inferior_pty no-tty