diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 07e206a1a5c..5b89bcd5d85 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-12-11 Tom de Vries + + PR testsuite/26954 + * gdb.base/float128.exp: Detect and handle no mpfr support. + 2020-12-10 Simon Marchi PR gdb/24694 diff --git a/gdb/testsuite/gdb.base/float128.exp b/gdb/testsuite/gdb.base/float128.exp index 40babcadc12..6fe479bb94a 100644 --- a/gdb/testsuite/gdb.base/float128.exp +++ b/gdb/testsuite/gdb.base/float128.exp @@ -74,6 +74,16 @@ gdb_test_multiple "set var f128=20.375l" "$test" { gdb_test "print ld" ".* = 10\\.375.*" "the value of ld is changed to 10.375" gdb_test "print f128" ".* = 20\\.375.*" "the value of f128 is changed to 20.375" +set mpfr_supported -1 +gdb_test_multiple "show configuration" "" { + -wrap -re "--with-mpfr\r\n.*" { + set mpfr_supported 1 + } + -wrap -re "--without-mpfr\r\n.*" { + set mpfr_supported 0 + } +} + # Test that we can correctly handle the largest IEEE-128 value # Note: If we get "inf" instead of the correct result, we may have run into # an internal overflow. This typically happens on host platforms without @@ -84,7 +94,17 @@ gdb_test_multiple "print large128" "$test" { pass "$test" } -re ".* = inf.*$gdb_prompt $" { - fail "$test (GDB may be missing MPFR support!)" + if { $mpfr_supported == 0 } { + # If the host platform has native 128-bit float support (as is + # the case for some versions of s390 and powerpc), the + # "print large128" test should be passing, even without MPFR + # support. So, in those cases we should have fail here rather than + # unsupported. However, given that we don't have a way to readily + # test for this, we fall back to unsupported. + unsupported "$test (Missing MPFR support)" + } else { + fail $test + } } -re ".*$gdb_prompt $" { fail "$test"