mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
Fix mi-nonstop.exp with extended-remote
Testing with "maint set target-non-stop on" makes mi-nonstop.exp run with the extended-remote board. That reveals that mi-nonstop.exp is using the wrong predicate to check for "using remote protocol". This is not visible today because non-stop tests all fail to run with extended-remote board, because they spawn gdb and then do "set non-stop on". However, with that board, gdb connects to the gdbserver from within mi_gdb_start, and changing non-stop when already connected doesn't work. Fix that by instead enabling non-stop mode on gdb's command line. gdb/testsuite/ChangeLog: 2015-11-30 Pedro Alves <palves@redhat.com> * gdb.mi/mi-nonstop.exp: Append "set non-stop on" to GDBFLAGS instead of issuing "-gdb-set non-stop 1" after starting gdb. Use mi_is_target_remote instead of checking "is_remote target". * lib/gdb.exp (gdb_is_target_remote): Rename to ... (gdb_is_target_remote_prompt): ... this, and add 'prompt_regexp' parameter. (gdb_is_target_remote): Reimplement. * lib/mi-support.exp (mi_is_target_remote): New procedure.
This commit is contained in:
@ -1,3 +1,14 @@
|
|||||||
|
2015-11-30 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* gdb.mi/mi-nonstop.exp: Append "set non-stop on" to GDBFLAGS
|
||||||
|
instead of issuing "-gdb-set non-stop 1" after starting gdb.
|
||||||
|
Use mi_is_target_remote instead of checking "is_remote target".
|
||||||
|
* lib/gdb.exp (gdb_is_target_remote): Rename to ...
|
||||||
|
(gdb_is_target_remote_prompt): ... this, and add 'prompt_regexp'
|
||||||
|
parameter.
|
||||||
|
(gdb_is_target_remote): Reimplement.
|
||||||
|
* lib/mi-support.exp (mi_is_target_remote): New procedure.
|
||||||
|
|
||||||
2014-11-28 Pedro Alves <palves@redhat.com>
|
2014-11-28 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* cp-name-parser.y (conversion_op): Use
|
* cp-name-parser.y (conversion_op): Use
|
||||||
|
@ -23,8 +23,12 @@ load_lib mi-support.exp
|
|||||||
set MIFLAGS "-i=mi"
|
set MIFLAGS "-i=mi"
|
||||||
|
|
||||||
gdb_exit
|
gdb_exit
|
||||||
if {[mi_gdb_start]} {
|
|
||||||
continue
|
save_vars { GDBFLAGS } {
|
||||||
|
append GDBFLAGS " -ex \"set non-stop on\""
|
||||||
|
if {[mi_gdb_start]} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc mi_nonstop_resume { command test } {
|
proc mi_nonstop_resume { command test } {
|
||||||
@ -49,7 +53,6 @@ if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $option
|
|||||||
mi_gdb_reinitialize_dir $srcdir/$subdir
|
mi_gdb_reinitialize_dir $srcdir/$subdir
|
||||||
mi_gdb_load $binfile
|
mi_gdb_load $binfile
|
||||||
|
|
||||||
mi_gdb_test "-gdb-set non-stop 1" ".*"
|
|
||||||
mi_gdb_test "-gdb-set mi-async 1" ".*"
|
mi_gdb_test "-gdb-set mi-async 1" ".*"
|
||||||
mi_detect_async
|
mi_detect_async
|
||||||
|
|
||||||
@ -132,7 +135,7 @@ mi_gdb_test "-thread-select 2" "\\^done.*" "select first worker thread"
|
|||||||
mi_gdb_test "-gdb-set --thread 3 variable exit_first_thread=1" ".*\\^done" "ask the second thread to exit"
|
mi_gdb_test "-gdb-set --thread 3 variable exit_first_thread=1" ".*\\^done" "ask the second thread to exit"
|
||||||
|
|
||||||
set test "wait for thread exit"
|
set test "wait for thread exit"
|
||||||
if { [is_remote target] } {
|
if { [mi_is_target_remote] } {
|
||||||
# The remote protocol doesn't have support for thread exit
|
# The remote protocol doesn't have support for thread exit
|
||||||
# notifications.
|
# notifications.
|
||||||
unsupported $test
|
unsupported $test
|
||||||
|
@ -3023,23 +3023,31 @@ proc skip_compile_feature_tests {} {
|
|||||||
return $result
|
return $result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Helper for gdb_is_target_remote. PROMPT_REGEXP is the expected
|
||||||
|
# prompt.
|
||||||
|
|
||||||
|
proc gdb_is_target_remote_prompt { prompt_regexp } {
|
||||||
|
|
||||||
|
set test "probe for target remote"
|
||||||
|
gdb_test_multiple "maint print target-stack" $test {
|
||||||
|
-re ".*emote serial target in gdb-specific protocol.*$prompt_regexp" {
|
||||||
|
pass $test
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
-re "$prompt_regexp" {
|
||||||
|
pass $test
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# Check whether we're testing with the remote or extended-remote
|
# Check whether we're testing with the remote or extended-remote
|
||||||
# targets.
|
# targets.
|
||||||
|
|
||||||
proc gdb_is_target_remote {} {
|
proc gdb_is_target_remote {} {
|
||||||
global gdb_prompt
|
global gdb_prompt
|
||||||
|
|
||||||
set test "probe for target remote"
|
return [gdb_is_target_remote_prompt "$gdb_prompt $"]
|
||||||
gdb_test_multiple "maint print target-stack" $test {
|
|
||||||
-re ".*emote serial target in gdb-specific protocol.*$gdb_prompt $" {
|
|
||||||
pass $test
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
-re "$gdb_prompt $" {
|
|
||||||
pass $test
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Return 1 if the current remote target is an instance of our GDBserver, 0
|
# Return 1 if the current remote target is an instance of our GDBserver, 0
|
||||||
|
@ -2499,3 +2499,12 @@ proc mi_skip_python_tests {} {
|
|||||||
global mi_gdb_prompt
|
global mi_gdb_prompt
|
||||||
return [skip_python_tests_prompt "$mi_gdb_prompt$"]
|
return [skip_python_tests_prompt "$mi_gdb_prompt$"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check whether we're testing with the remote or extended-remote
|
||||||
|
# targets.
|
||||||
|
|
||||||
|
proc mi_is_target_remote {} {
|
||||||
|
global mi_gdb_prompt
|
||||||
|
|
||||||
|
return [gdb_is_target_remote_prompt "$mi_gdb_prompt"]
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user