forked from Imagelibrary/binutils-gdb
[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
This commit is contained in:
@@ -31,8 +31,24 @@ runto "foo_p211_061.adb:$bp_location"
|
|||||||
gdb_test "print my_str = my_str" \
|
gdb_test "print my_str = my_str" \
|
||||||
" = true"
|
" = true"
|
||||||
|
|
||||||
gdb_test "print my_str = \"ABCD\"" \
|
set kfail_re \
|
||||||
" = true"
|
[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\"" \
|
gdb_test "print my_str = \"EFGH\"" \
|
||||||
" = false"
|
" = false"
|
||||||
|
|||||||
@@ -42,9 +42,33 @@ gdb_test "print my_wws(1)" "= 32 ' '"
|
|||||||
|
|
||||||
gdb_test "print my_wws(2)" "= 104 'h'"
|
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 my_ws = \"nope\"" " = false"
|
||||||
|
|
||||||
gdb_test "print \"x\" & my_ws & \"y\"" " = \"xwidey\""
|
gdb_test "print \"x\" & my_ws & \"y\"" " = \"xwidey\""
|
||||||
|
|||||||
Reference in New Issue
Block a user