From d6398d6713ee13872056d3bd798add314d45aebf Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 7 Sep 2022 19:14:17 +0200 Subject: [PATCH] [gdb/testsuite] xfail gdb.ada/O2_float_param.exp for aarch64 and gcc 7.5.0 On aarch64-linux, with gcc 7.5.0, we run into: ... (gdb) frame^M #0 callee.increment (val=99.0, val@entry=9.18340949e-41, msg=...) at \ callee.adb:21^M 21 if Val > 200.0 then^M (gdb) FAIL: gdb.ada/O2_float_param.exp: scenario=all: frame ... The problem is a GCC bug, filed as "PR98148 - [AArch64] Wrong location expression for function entry values" ( https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98148 ). Xfail the test for aarch64 and gcc 7. Tested on x86_64-linux and aarch64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29418 --- gdb/testsuite/gdb.ada/O2_float_param.exp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.ada/O2_float_param.exp b/gdb/testsuite/gdb.ada/O2_float_param.exp index 0c2969e0c4f..062a27572f5 100644 --- a/gdb/testsuite/gdb.ada/O2_float_param.exp +++ b/gdb/testsuite/gdb.ada/O2_float_param.exp @@ -19,6 +19,13 @@ if { [skip_ada_tests] } { return -1 } standard_ada_testfile foo +set have_xfail 0 +if { [is_aarch64_target] } then { + if { [gcc_major_version] <= 8 } { + set have_xfail 1 + } +} + foreach_with_prefix scenario {all minimal} { set flags [list debug \ optimize=-O2 \ @@ -32,6 +39,21 @@ foreach_with_prefix scenario {all minimal} { runto "increment" - gdb_test "frame" \ + set re \ "#0\\s+callee\\.increment \\(val(=val@entry)?=99\\.0, msg=\\.\\.\\.\\).*" + set re_different_entry_val \ + "#0\\s+callee\\.increment \\(val=99.0, val@entry=.*, msg=\\.\\.\\.\\).*" + gdb_test_multiple "frame" "" { + -re -wrap $re { + pass $gdb_test_name + } + -re -wrap $re_different_entry_val { + if { $have_xfail } { + # GCC PR98148 + xfail $gdb_test_name + } else { + fail $gdb_test_name + } + } + } } -- 2.30.2