Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Ruslan Kabatsayev <b7.10110111@gmail.com>
To: Pedro Alves <palves@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH][PR 18702] Fix wrong output of x87 registers due to truncation to double on amd64
Date: Fri, 04 Dec 2015 16:09:00 -0000	[thread overview]
Message-ID: <5661BACA.50909@gmail.com> (raw)
In-Reply-To: <5661B2A7.6020005@redhat.com>

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:

	* configure.host: Fix detection of x86_64 host when setting
	floatformats.
	* testsuite/gdb.arch/i386-float.S: Add a regression test for the fix.
	* testsuite/gdb.arch/i386-float.exp: Add checking of the test results.
---
 gdb/configure.host                    | 2 +-
 gdb/testsuite/gdb.arch/i386-float.S   | 4 ++++
 gdb/testsuite/gdb.arch/i386-float.exp | 6 +++++-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/gdb/configure.host b/gdb/configure.host
index 48714f4..ef265eb 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -195,7 +195,7 @@ esac
 # "double" and "long double" types.
 
 case "${host}" in
-i[34567]86-*-*)
+i[34567]86-*-*|x86_64-*-*)
 	gdb_host_float_format="&floatformat_ieee_single_little"
 	gdb_host_double_format="&floatformat_ieee_double_little"
 	gdb_host_long_double_format="&floatformat_i387_ext"
diff --git a/gdb/testsuite/gdb.arch/i386-float.S b/gdb/testsuite/gdb.arch/i386-float.S
index 76126c4..f5de8c2 100644
--- a/gdb/testsuite/gdb.arch/i386-float.S
+++ b/gdb/testsuite/gdb.arch/i386-float.S
@@ -29,6 +29,10 @@
 SYMBOL(main):
 	fninit
 	fldt    val
+	fldt    bigval
+	fldt    smallval
 	ret
 .data
 	val: .byte 0x00,0x00,0x45,0x07,0x11,0x19,0x22,0xe9,0xfe,0xbf
+	smallval: .byte 0xe9,0xd0,0xd7,0x65,0x81,0xb7,0x43,0xc6,0x5c,0x6a
+	bigval:   .byte 0x6a,0x45,0x90,0xdc,0x03,0xc1,0xf8,0xc6,0xe5,0x03
diff --git a/gdb/testsuite/gdb.arch/i386-float.exp b/gdb/testsuite/gdb.arch/i386-float.exp
index e638ceb..4260f29 100644
--- a/gdb/testsuite/gdb.arch/i386-float.exp
+++ b/gdb/testsuite/gdb.arch/i386-float.exp
@@ -39,5 +39,9 @@ if ![runto_main] then {
 
 gdb_test "stepi" ".*fldt.*" "first stepi"
 gdb_test "info float" ".*R7: Empty   0x00000000000000000000\r\n.*"
-gdb_test "stepi" ".*ret.*" "second stepi"
+gdb_test "stepi" ".*fldt.*" "second stepi"
 gdb_test "info float" ".*=>R7: Valid   0xbffee922191107450000 .*"
+gdb_test "stepi" ".*fldt.*" "third stepi"
+gdb_test "info float" ".*=>R6: Valid   0x03e5c6f8c103dc90456a \\+3.500000000000000007e-4632\r\n.*"
+gdb_test "stepi" ".*ret.*" "fourth stepi"
+gdb_test "info float" ".*=>R5: Valid   0x6a5cc643b78165d7d0e9 \\+7.250000000000000005e\\+3264\r\n.*"
-- 
1.9.1


  reply	other threads:[~2015-12-04 16:09 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-20 22:07 Ruslan Kabatsayev
2015-12-02 11:32 ` Yao Qi
2015-12-02 14:26   ` Ruslan Kabatsayev
2015-12-03 11:27     ` Yao Qi
2015-12-04 14:41       ` Ruslan Kabatsayev
2015-12-03 12:28 ` Pedro Alves
2015-12-04 15:06   ` Ruslan Kabatsayev
2015-12-04 15:11     ` Pedro Alves
2015-12-04 15:17       ` Ruslan Kabatsayev
2015-12-04 15:35         ` Pedro Alves
2015-12-04 16:09           ` Ruslan Kabatsayev [this message]
2015-12-05 22:41             ` Andrew Burgess
2015-12-06  6:30               ` Ruslan Kabatsayev
2015-12-09 12:23                 ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5661BACA.50909@gmail.com \
    --to=b7.10110111@gmail.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox