diff options
author | Tom de Vries <tdevries@suse.de> | 2023-10-02 19:48:21 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-10-02 19:48:21 +0200 |
commit | 89238cfdbaadede9817f0848202f1d34f9885d94 (patch) | |
tree | d84c06a0851be30954e0571ae23eee0cf4db59ee /gdb/testsuite | |
parent | 59912fb2d22f8a4bb0862487f12a5cc65b6a013f (diff) | |
download | gdb-89238cfdbaadede9817f0848202f1d34f9885d94.zip gdb-89238cfdbaadede9817f0848202f1d34f9885d94.tar.gz gdb-89238cfdbaadede9817f0848202f1d34f9885d94.tar.bz2 |
[gdb/testsuite] Add KFAIL for PR ada/30908
With gcc 13.2.1, I run into a cluster of fails:
...
FAIL: gdb.ada/str_binop_equal.exp: print my_str = "ABCD"
FAIL: gdb.ada/widewide.exp: print my_wws = " helo"
FAIL: gdb.ada/widewide.exp: print my_ws = "wide"
...
The problem is that the debug info contains information about function
ada.strings.maps."=", and gdb uses it to implement the comparison.
The function is supposed to compare two char sets, not strings, so gdb
shouldn't use it. This is PR ada/30908.
I don't see the same problem with gcc 7.5.0, because the exec doesn't contain
the debug info for the function, because the corresponding object is not
linked in. Adter adding "with Ada.Strings.Maps; use Ada.Strings.Maps;" to
gdb.ada/widewide/foo.adb I run into the same problem with gcc 7.5.0.
Add KFAILs for the PR.
Tested on x86_64-linux:
- openSUSE Leap 15.4 (using gcc 7.5.0), and
- openSUSE Tumbleweed (using gcc 13.2.1).
Approved-By: Tom Tromey <tom@tromey.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30908
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/gdb.ada/str_binop_equal.exp | 20 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/widewide.exp | 28 |
2 files changed, 44 insertions, 4 deletions
diff --git a/gdb/testsuite/gdb.ada/str_binop_equal.exp b/gdb/testsuite/gdb.ada/str_binop_equal.exp index f3c8a34..38b04f6 100644 --- a/gdb/testsuite/gdb.ada/str_binop_equal.exp +++ b/gdb/testsuite/gdb.ada/str_binop_equal.exp @@ -31,8 +31,24 @@ runto "foo_p211_061.adb:$bp_location" gdb_test "print my_str = my_str" \ " = true" -gdb_test "print my_str = \"ABCD\"" \ - " = true" +set kfail_re \ + [multi_line \ + [string_to_regexp {Symbol: ada.strings.maps."="}] \ + ".*" \ + "\\$$decimal = false"] + +gdb_test_no_output "set debug expr 1" + +gdb_test_multiple {print my_str = "ABCD"} "" { + -re -wrap " = true" { + pass $gdb_test_name + } + -re -wrap $kfail_re { + kfail ada/30908 $gdb_test_name + } +} + +gdb_test "set debug expr 0" gdb_test "print my_str = \"EFGH\"" \ " = false" diff --git a/gdb/testsuite/gdb.ada/widewide.exp b/gdb/testsuite/gdb.ada/widewide.exp index 5c5b5a3..c02d7f3 100644 --- a/gdb/testsuite/gdb.ada/widewide.exp +++ b/gdb/testsuite/gdb.ada/widewide.exp @@ -42,9 +42,33 @@ gdb_test "print my_wws(1)" "= 32 ' '" gdb_test "print my_wws(2)" "= 104 'h'" -gdb_test "print my_wws = \" helo\"" " = true" +set kfail_re \ + [multi_line \ + [string_to_regexp {Symbol: ada.strings.maps."="}] \ + ".*" \ + "\\$$decimal = false"] + +gdb_test_no_output "set debug expr 1" + +gdb_test_multiple {print my_wws = " helo"} "" { + -re -wrap " = true" { + pass $gdb_test_name + } + -re -wrap $kfail_re { + kfail ada/30908 $gdb_test_name + } +} +gdb_test_multiple {print my_ws = "wide"} "" { + -re -wrap " = true" { + pass $gdb_test_name + } + -re -wrap $kfail_re { + kfail ada/30908 $gdb_test_name + } +} + +gdb_test "set debug expr 0" -gdb_test "print my_ws = \"wide\"" " = true" gdb_test "print my_ws = \"nope\"" " = false" gdb_test "print \"x\" & my_ws & \"y\"" " = \"xwidey\"" |