b593e3d9b0
When `info float` is used on an AMD64 system, GDB prints floating-point values of x87 registers with raw contents like 0x361a867a8e0527397ce0 or 0xc4f988454a1ddd3cfdab wrongly. This happens due to truncation to double, after which the former becomes 0.0, and the latter becomes negative infinity. This is caused by failed detection of x86-64 host, which results in setting gdb_host_{float,double,long_double}_format to zeros. This commit fixes this misdetection, and adds a test to make sure future commits don't introduce a regression here. gdb/ChangeLog: 2015-12-09 Ruslan Kabatsayev <b7.10110111@gmail.com> PR gdb/18702 * configure.host: Fix detection of x86_64 host when setting floatformats. gdb/testsuite/ChangeLog: 2015-12-09 Ruslan Kabatsayev <b7.10110111@gmail.com> Pedro Alves <pedro@redhat.com> PR gdb/18702 Add checking of floatformats setup on x86_64 hosts. * gdb.arch/i386-float.S (main): Load bigval and smallval. (smallval, bigval): New labels/constants. * gdb.arch/i386-float.exp: Use with_test_prefix and test "info float" after loading bigval and smallval.
55 lines
1.8 KiB
Text
55 lines
1.8 KiB
Text
# Copyright (C) 2009-2015 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
# This file is part of the gdb testsuite.
|
|
|
|
# Test the x87 floating point information printout.
|
|
|
|
if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then {
|
|
verbose "Skipping i386 tests for x87 floating point support."
|
|
return
|
|
}
|
|
|
|
standard_testfile .S
|
|
|
|
# some targets have leading underscores on assembly symbols.
|
|
set additional_flags [gdb_target_symbol_prefix_flags_asm]
|
|
|
|
if { [prepare_for_testing break.exp $testfile $srcfile [list debug $additional_flags]] } {
|
|
return -1
|
|
}
|
|
|
|
if ![runto_main] then {
|
|
fail "Can't run to main"
|
|
return 0
|
|
}
|
|
|
|
with_test_prefix "zero" {
|
|
gdb_test "stepi" ".*fldt.*"
|
|
gdb_test "info float" "R7: Empty 0x00000000000000000000\r\n.*"
|
|
}
|
|
with_test_prefix "val" {
|
|
gdb_test "stepi" ".*fldt.*"
|
|
gdb_test "info float" "=>R7: Valid 0xbffee922191107450000 .*"
|
|
}
|
|
with_test_prefix "smallval" {
|
|
gdb_test "stepi" ".*fldt.*"
|
|
gdb_test "info float" "=>R6: Valid 0x03e5c6f8c103dc90456a \\+3.500000000000000007e-4632\r\n.*"
|
|
}
|
|
with_test_prefix "bigval" {
|
|
gdb_test "stepi" ".*ret.*"
|
|
gdb_test "info float" "=>R5: Valid 0x6a5cc643b78165d7d0e9 \\+7.250000000000000005e\\+3264\r\n.*"
|
|
}
|