mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-27 01:14:16 +08:00
Fix mi_gdb_exit with secondary MI channels
Tests that use a secondary MI channel (i.e., either tests that call mi_gdb_start with separate-mi-tty, or all tests when FORCE_SEPARATE_MI_TTY=1 is specified on the make check command line), don't close GDB correctly. E.g., if you run gdb.mi/mi-exec-run.exp in a loop: while true; do make check TESTS="gdb.mi/mi-exec-run.exp"; done you can see more than one gdb running at the same time: $ ps -ef | grep -v grep | grep "gdb/gdb" pedro 40507 1 7 15:47 ? 00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory pedro 40562 1 0 15:47 ? 00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory pedro 40727 1 0 15:47 ? 00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory pedro 40786 1 0 15:47 ? 00:00:00 /home/pedro/gdb/build/gdb/testsuite/../../gdb/gdb -nw -nx -data-directory /home/pedro/gdb/build/gdb/testsuite/../data-directory This commit fixes it. gdb/testsuite/ChangeLog: * lib/mi-support.exp (mi_uncatched_gdb_exit) Switch to the main spawn_id before calling remote_close. Close secondary MI channel.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2020-09-20 Pedro Alves <pedro@palves.net>
|
||||||
|
|
||||||
|
* lib/mi-support.exp (mi_uncatched_gdb_exit) Switch to the main
|
||||||
|
spawn_id before calling remote_close. Close secondary MI channel.
|
||||||
|
|
||||||
2020-09-20 Pedro Alves <pedro@palves.net>
|
2020-09-20 Pedro Alves <pedro@palves.net>
|
||||||
|
|
||||||
* gdb.base/testenv.exp (find_env): Bail out if printing 'envp[$i]'
|
* gdb.base/testenv.exp (find_env): Bail out if printing 'envp[$i]'
|
||||||
|
@ -89,6 +89,18 @@ proc mi_uncatched_gdb_exit {} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Switch back to the main spawn id, so that remote_close below
|
||||||
|
# closes it, and not a secondary channel. Closing a secondary
|
||||||
|
# channel does not make GDB exit.
|
||||||
|
if {$gdb_spawn_id != $gdb_main_spawn_id} {
|
||||||
|
switch_gdb_spawn_id $gdb_main_spawn_id
|
||||||
|
}
|
||||||
|
|
||||||
|
# Close secondary MI channel, if there's one.
|
||||||
|
if {$mi_spawn_id != $gdb_main_spawn_id} {
|
||||||
|
close -i $mi_spawn_id
|
||||||
|
}
|
||||||
|
|
||||||
if ![is_remote host] {
|
if ![is_remote host] {
|
||||||
remote_close host
|
remote_close host
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user