* [PATCH][gdb/testsuite] Fix funcall_ref.exp xpass
@ 2020-02-18 14:21 Tom de Vries
2020-02-19 21:25 ` Tom Tromey
0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2020-02-18 14:21 UTC (permalink / raw)
To: gdb-patches
Hi,
When running gdb.ada/funcall_ref.exp I run into two XPASSes:
...
(gdb) p get ("Hello world!")^M
$1 = (n => 12, s => "Hello world!")^M
(gdb) XPASS: gdb.ada/funcall_ref.exp: p get ("Hello world!")
ptype get ("Hello world!")^M
type = <ref> record^M
n: natural;^M
s: access array (1 .. n) of character;^M
end record^M
(gdb) XPASS: gdb.ada/funcall_ref.exp: ptype get ("Hello world!")
...
The xfails are documented in funcall_ref.exp:
...
# Currently, GCC describes such functions as returning pointers (instead of
# references).
setup_xfail *-*-*
...
Using gnatmake 4.8, we can reproduce the XFAILs:
...
(gdb) p get ("Hello world!")^M
$1 = (access foo.bar) 0x6147b0 <system.secondary_stack.chunk+48>^M
(gdb) XFAIL: gdb.ada/funcall_ref.exp: p get ("Hello world!")
ptype get ("Hello world!")^M
type = access record^M
n: natural;^M
s: access array (1 .. n) of character;^M
end record^M
(gdb) XFAIL: gdb.ada/funcall_ref.exp: ptype get ("Hello world!")
...
Fix the XPASSes by:
- removing the xfail setup
- switching the order of the two tests
- detecting the "access record" type and declaring the first test unsupported,
and skipping the second test
Tested on x86_64-linux, both with gnatmake 4.8.5 and gnatmake 7.5.0.
OK for trunk?
Thanks,
- Tom
[gdb/testsuite] Fix funcall_ref.exp xpass
gdb/testsuite/ChangeLog:
2020-02-18 Tom de Vries <tdevries@suse.de>
* gdb.ada/funcall_ref.exp: Replace xfail setup by unsupported check.
---
gdb/testsuite/gdb.ada/funcall_ref.exp | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/gdb/testsuite/gdb.ada/funcall_ref.exp b/gdb/testsuite/gdb.ada/funcall_ref.exp
index 2992e56a20..02664f6ad3 100644
--- a/gdb/testsuite/gdb.ada/funcall_ref.exp
+++ b/gdb/testsuite/gdb.ada/funcall_ref.exp
@@ -32,13 +32,28 @@ runto "foo.adb:$bp_location"
# Currently, GCC describes such functions as returning pointers (instead of
# references).
-setup_xfail *-*-*
+set pass_re [multi_line "type = <ref> record" \
+ " n: natural;" \
+ " s: access array \\(1 \\.\\. n\\) of character;" \
+ "end record"]
+set unsupported_re [multi_line "type = access record" \
+ " n: natural;" \
+ " s: access array \\(1 \\.\\. n\\) of character;" \
+ "end record"]
+set supported 1
+gdb_test_multiple "ptype get (\"Hello world!\")" "" {
+ -re -wrap $pass_re {
+ pass $gdb_test_name
+ }
+ -re -wrap $unsupported_re {
+ unsupported $gdb_test_name
+ set supported 0
+ }
+}
+
+if { $supported == 0 } {
+ return 0
+}
+
gdb_test "p get (\"Hello world!\")" \
- "= \\(n => 12, s => \"Hello world!\"\\)" \
-
-setup_xfail *-*-*
-gdb_test "ptype get (\"Hello world!\")" \
- [multi_line "type = <ref> record" \
- " n: natural;" \
- " s: access array \\(1 \\.\\. n\\) of character;" \
- "end record"] \
+ "= \\(n => 12, s => \"Hello world!\"\\)"
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-02-19 21:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-18 14:21 [PATCH][gdb/testsuite] Fix funcall_ref.exp xpass Tom de Vries
2020-02-19 21:25 ` Tom Tromey
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).