aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-02-19 22:33:42 +0100
committerTom de Vries <tdevries@suse.de>2020-02-19 22:33:42 +0100
commitf20ff8373775e236e63e45ca2d4683d5f69882a7 (patch)
tree8fd8a6c604228f1f11b1bcb5fec5ea423e08a042
parent298e9637305ee85f630638ba723494fb208eabad (diff)
downloadgdb-f20ff8373775e236e63e45ca2d4683d5f69882a7.zip
gdb-f20ff8373775e236e63e45ca2d4683d5f69882a7.tar.gz
gdb-f20ff8373775e236e63e45ca2d4683d5f69882a7.tar.bz2
[gdb/testsuite] Fix funcall_ref.exp xpass
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. gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries <tdevries@suse.de> * gdb.ada/funcall_ref.exp: Replace xfail setup by unsupported check.
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.ada/funcall_ref.exp33
2 files changed, 28 insertions, 9 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 0dff20d..bfa1afc 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2020-02-19 Tom de Vries <tdevries@suse.de>
+
+ * gdb.ada/funcall_ref.exp: Replace xfail setup by unsupported check.
+
2020-02-19 Doug Evans <dje@google.com>
PR rust/25535
diff --git a/gdb/testsuite/gdb.ada/funcall_ref.exp b/gdb/testsuite/gdb.ada/funcall_ref.exp
index 2992e56..02664f6 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!\"\\)"