[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.
This commit is contained in:
Tom de Vries 2020-02-19 22:33:42 +01:00
parent 298e963730
commit f20ff83737
2 changed files with 28 additions and 9 deletions

View File

@ -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

View File

@ -32,13 +32,28 @@ runto "foo.adb:$bp_location"
# Currently, GCC describes such functions as returning pointers (instead of
# references).
setup_xfail *-*-*
gdb_test "p get (\"Hello world!\")" \
"= \\(n => 12, s => \"Hello world!\"\\)" \
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
}
}
setup_xfail *-*-*
gdb_test "ptype get (\"Hello world!\")" \
[multi_line "type = <ref> record" \
" n: natural;" \
" s: access array \\(1 \\.\\. n\\) of character;" \
"end record"] \
if { $supported == 0 } {
return 0
}
gdb_test "p get (\"Hello world!\")" \
"= \\(n => 12, s => \"Hello world!\"\\)"