public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Make gdb.fortran/{array-slices, lbound-ubound} work against gdbserver
@ 2022-03-16 12:18 Pedro Alves
0 siblings, 0 replies; only message in thread
From: Pedro Alves @ 2022-03-16 12:18 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9bde221fecaa58b1be8e8288f5ec5c202a61d23f
commit 9bde221fecaa58b1be8e8288f5ec5c202a61d23f
Author: Pedro Alves <pedro@palves.net>
Date: Fri Mar 4 17:34:18 2022 +0000
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
Diff:
---
gdb/testsuite/gdb.fortran/array-slices.exp | 30 +++++++++++++++++++++--------
gdb/testsuite/gdb.fortran/array-slices.f90 | 2 +-
gdb/testsuite/gdb.fortran/lbound-ubound.exp | 28 +++++++++++++++++++++------
3 files changed, 45 insertions(+), 15 deletions(-)
diff --git a/gdb/testsuite/gdb.fortran/array-slices.exp b/gdb/testsuite/gdb.fortran/array-slices.exp
index 8f9c012e399..a38276c67e4 100644
--- a/gdb/testsuite/gdb.fortran/array-slices.exp
+++ b/gdb/testsuite/gdb.fortran/array-slices.exp
@@ -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
+ }
}
}
diff --git a/gdb/testsuite/gdb.fortran/array-slices.f90 b/gdb/testsuite/gdb.fortran/array-slices.f90
index ff3964ffb6b..1eaee82b7b7 100644
--- a/gdb/testsuite/gdb.fortran/array-slices.f90
+++ b/gdb/testsuite/gdb.fortran/array-slices.f90
@@ -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
diff --git a/gdb/testsuite/gdb.fortran/lbound-ubound.exp b/gdb/testsuite/gdb.fortran/lbound-ubound.exp
index 671b251c799..709b74a69e8 100644
--- a/gdb/testsuite/gdb.fortran/lbound-ubound.exp
+++ b/gdb/testsuite/gdb.fortran/lbound-ubound.exp
@@ -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
+ }
}
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-03-16 12:18 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-16 12:18 [binutils-gdb] Make gdb.fortran/{array-slices, lbound-ubound} work against gdbserver Pedro Alves
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).