Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: qiyaoltc@gmail.com (Yao Qi)
Cc: simark@simark.ca (Simon Marchi),
	brobecker@adacore.com (Joel Brobecker),
	       gdb-patches@sourceware.org
Subject: Re: [pushed] Re: [RFC][08/19] Target FP: Use target format throughout expression parsing
Date: Fri, 03 Nov 2017 13:45:00 -0000	[thread overview]
Message-ID: <20171103134549.26512D804DA@oc3748833570.ibm.com> (raw)
In-Reply-To: <20171103123319.GA318@1170ee0b50d5> from "Yao Qi" at Nov 03, 2017 12:33:19 PM

Yao Qi wrote:
> On 17-10-25 15:35:24, Ulrich Weigand wrote:
> > > On 2017-10-09 02:12 PM, Joel Brobecker wrote:
> > > > One C++ thing I did notice but forgot to report...
> > > > 
> > > >> +floatformat_from_string (const struct floatformat *fmt, gdb_byte *out,
> > > >> +			 std::string in)
> > > > 
> > > > Again, to be double-checked, but I think you want to pass the argument
> > > > by reference in this case. Otherwise, you may end up having an overhead
> > > > with might not be necessary due to the creation of a copy of the string
> > > > being passed as argument here.
> > > > 
> > > 
> > > Indeed, it's good practice to pass constant strings (or other objects) as
> > > const references (const std::string &in).
> > 
> > I've now pushed this patch (using the const reference as suggested).
> > 
> 
> Hi Ulrich,
> this patch causes a regression on arm target,
> 
> PASS -> FAIL: gdb.base/bitops.exp: print value of 0.0 || 0
> 
> https://sourceware.org/ml/gdb-testers/2017-q4/msg03040.html
> Do you have any clues?

Huh.  It looks like this exposed a bug in convert_doublest_to_floatformat that
was already present: in the very specific case of converting a value of zero
into the floatformats_ieee_double_littlebyte_bigword format, the output
buffer was simply left uninitialized.  Existing callers didn't notice since
they had zeroed out the input buffer anyway ...

I was able to reproduce it without an ARM system:
(gdb) set architecture arm
The target architecture is assumed to be arm
(gdb) set debug expression 1
(gdb) print 0.0
Dump of expression @ 0x3ae6e10, before conversion to prefix form:
        Language c, 4 elements, 16 bytes each.
        Index                Opcode         Hex Value  String Value
            0              OP_FLOAT  39  '...............
            1    <unknown 61822288>  61822288  PU..............
            2             BINOP_ADD  1  .........Q......
            3              OP_FLOAT  39  '...............
Dump of expression @ 0x3ae6e10, after conversion to prefix form:
Expression: `2.1219957909652723e-314'
        Language c, 4 elements, 16 bytes each.


            0  OP_FLOAT              Type @0x3af5550 (double), value 2.1219957909652723e-314
$1 = 2.1219957909652723e-314

Can you test whether the following patch fixes the problem on a
real ARM system?

Thanks,
Ulrich

diff --git a/gdb/doublest.c b/gdb/doublest.c
index fe9fc23..ef98dde 100644
--- a/gdb/doublest.c
+++ b/gdb/doublest.c
@@ -387,7 +387,7 @@ convert_doublest_to_floatformat (const struct floatformat *fmt,
     }
 
   if (dfrom == 0)
-    return;			/* Result is zero */
+    goto finalize_byteorder;	/* Result is zero */
   if (dfrom != dfrom)		/* Result is NaN */
     {
       /* From is NaN */

-- 
  Dr. Ulrich Weigand
  GNU/Linux compilers and toolchain
  Ulrich.Weigand@de.ibm.com


  reply	other threads:[~2017-11-03 13:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-05 18:21 Ulrich Weigand
2017-10-09 16:07 ` Joel Brobecker
2017-10-09 16:59   ` Ulrich Weigand
2017-10-09 18:12 ` Joel Brobecker
2017-10-09 21:14   ` Simon Marchi
2017-10-25 13:35     ` [pushed] " Ulrich Weigand
2017-11-03 12:33       ` Yao Qi
2017-11-03 13:45         ` Ulrich Weigand [this message]
2017-11-03 15:00           ` Yao Qi
2017-11-03 15:11             ` Ulrich Weigand

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=20171103134549.26512D804DA@oc3748833570.ibm.com \
    --to=uweigand@de.ibm.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=qiyaoltc@gmail.com \
    --cc=simark@simark.ca \
    /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