Make gdb.fortran/{array-slices,lbound-ubound} work against gdbserver
gdb.fortran/array-slices.exp and gdb.fortran/lbound-ubound.exp were recently disabled unless testing with the native target, because they rely on inferior I/O. However, when testing against gdbserver using the native-gdbserver/native-extended-gdbserver boards, we do have access to inferior I/O. The right way to check whether the board can do I/O, is via checking the gdb,noinferiorio board variable. Switch to using that. And then, tweak the testcases to expect output to appear in inferior_spawn_id, instead of gdb_spawn_id. When testing against the native target, inferior_spawn_id is the same as gdb_spawn_id. When testing against gdbserver, it maps to gdbserver_spawn_id. This exposed a buglet in gdb.fortran/array-slices.f90's show_1d subroutine -- it was missing printing newline at the end of the "Expected GDB Output" text, leading to a test timeout. All other subroutines end with advance=yes, except this one. Fix it by using advance=yes here too. Change-Id: I4640729f334431cfc24b0917e7d3977b677c6ca5
This commit is contained in:
parent
22546800ad
commit
9bde221fec
3 changed files with 45 additions and 15 deletions
|
@ -35,6 +35,11 @@
|
|||
|
||||
if {[skip_fortran_tests]} { return -1 }
|
||||
|
||||
# This test relies on output from the inferior.
|
||||
if [target_info exists gdb,noinferiorio] {
|
||||
return -1
|
||||
}
|
||||
|
||||
standard_testfile ".f90"
|
||||
load_lib fortran.exp
|
||||
|
||||
|
@ -62,12 +67,6 @@ proc run_test { repack } {
|
|||
return -1
|
||||
}
|
||||
|
||||
# This test relies on output from the inferior and is not supported on
|
||||
# remote targets.
|
||||
if {![gdb_is_target_native]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Avoid libc symbols, in particular the 'array' type.
|
||||
gdb_test_no_output "nosharedlibrary"
|
||||
|
||||
|
@ -97,11 +96,19 @@ proc run_test { repack } {
|
|||
set found_final_breakpoint false
|
||||
set expected_result ""
|
||||
set func_name ""
|
||||
set found_prompt false
|
||||
gdb_test_multiple "continue" "continue" {
|
||||
-i $::inferior_spawn_id
|
||||
|
||||
-re ".*GDB = (\[^\r\n\]+)\r\n" {
|
||||
set expected_result $expect_out(1,string)
|
||||
exp_continue
|
||||
if {!$found_prompt} {
|
||||
exp_continue
|
||||
}
|
||||
}
|
||||
|
||||
-i $::gdb_spawn_id
|
||||
|
||||
-re "! Display Element" {
|
||||
set func_name "show_elem"
|
||||
exp_continue
|
||||
|
@ -119,7 +126,14 @@ proc run_test { repack } {
|
|||
exp_continue
|
||||
}
|
||||
-re "$gdb_prompt $" {
|
||||
# We're done.
|
||||
set found_prompt true
|
||||
|
||||
if {$found_final_breakpoint
|
||||
|| ($expected_result != "" && $func_name != "")} {
|
||||
# We're done.
|
||||
} else {
|
||||
exp_continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ subroutine show_1d (array)
|
|||
end if
|
||||
write(*, fmt="(I0)", advance="no") array (i)
|
||||
end do
|
||||
write(*, fmt="(A)", advance="no") ")"
|
||||
write(*, fmt="(A)", advance="yes") ")"
|
||||
|
||||
print *, "" ! Display Array Slice 1D
|
||||
end subroutine show_1d
|
||||
|
|
|
@ -32,9 +32,8 @@ if ![fortran_runto_main] {
|
|||
return -1
|
||||
}
|
||||
|
||||
# This test relies on output from the inferior and is not supported on
|
||||
# remote targets.
|
||||
if {![gdb_is_target_native]} {
|
||||
# This test relies on output from the inferior.
|
||||
if [target_info exists gdb,noinferiorio] {
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -55,15 +54,25 @@ while { $test_count < 500 } {
|
|||
|
||||
set expected_lbound ""
|
||||
set expected_ubound ""
|
||||
set found_prompt false
|
||||
gdb_test_multiple "continue" "continue" {
|
||||
-i $::inferior_spawn_id
|
||||
|
||||
-re ".*LBOUND = (\[^\r\n\]+)\r\n" {
|
||||
set expected_lbound $expect_out(1,string)
|
||||
exp_continue
|
||||
if {!$found_prompt} {
|
||||
exp_continue
|
||||
}
|
||||
}
|
||||
-re ".*UBOUND = (\[^\r\n\]+)\r\n" {
|
||||
set expected_ubound $expect_out(1,string)
|
||||
exp_continue
|
||||
if {!$found_prompt} {
|
||||
exp_continue
|
||||
}
|
||||
}
|
||||
|
||||
-i $::gdb_spawn_id
|
||||
|
||||
-re "! Test Breakpoint" {
|
||||
set func_name "show_elem"
|
||||
exp_continue
|
||||
|
@ -73,7 +82,14 @@ while { $test_count < 500 } {
|
|||
exp_continue
|
||||
}
|
||||
-re "$gdb_prompt $" {
|
||||
# We're done.
|
||||
set found_prompt true
|
||||
|
||||
if {$found_final_breakpoint
|
||||
|| ($expected_lbound != "" && $expected_ubound != "")} {
|
||||
# We're done.
|
||||
} else {
|
||||
exp_continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue