This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [libiberty and gdb] floatformat_is_valid
On Thu, Sep 18, 2003 at 06:59:37PM -0400, Andrew Cagney wrote:
> >On Mon, Sep 15, 2003 at 10:39:33AM -0400, Daniel Jacobowitz wrote:
> >
> >>GDB's "struct value" has a union in it. This union, named "aligner", has
> >>a
> >>long double member as well as several others; its goal is to be a cheap
> >>way
> >>to ensure that we can load all sorts of values straight from the value
> >>structure, without alignment problems. Unfortunately, this means that
> >>when
> >>debugging GDB we tend to feed random bytes to printf ("%.35Lg"). That's
> >>not
> >>kosher, and on i386 I've found a whole bunch of numbers which can crash
> >>it -
> >>the gist is that GMP shifts normalized numbers over until it hits a one
> >>bit,
> >>and if the explicit integer bit isn't set it walks right out of the
> >>number.
> >>
> >>This could show up in other places too. Anywhere you print floating-point
> >>data from the inferior, really.
> >>
> >>So here's a patch which checks for the problem. I added
> >>floatformat_is_valid to libiberty/floatformat.c. Is this OK?
> >>[Do I need approval? Floatformat.c is in libiberty, but marked as part of
> >>GDB.]
> >>
> >>Oh, this patch misses some copyright year updates. I'll get them before
> >>checking in.
> >
> >
> >This patch fixes a really annoyin problem when debugging GDB. It
> >doesn't generally come up debugging anything else, though.
>
> For the record, I don't care :-) It appears to work (I guess my
> revision should go in?), and fixes a bug.
I asked myself, "Dan, are you going to add this patch to all your GDB
packages anyway?" The answer was yes, so I'm checking it in.
+2003-09-19 Daniel Jacobowitz <drow@mvista.com>
+
+ Merge from mainline:
+ 2003-09-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * values.c (unpack_double): Call floatformat_is_valid.
+2003-09-15 Andrew Cagney <cagney@redhat.com>
+
+ * floatformat.h (floatformat_to_double): Make input buffer constant.
+ (floatformat_from_double, floatformat_is_valid): Ditto.
+
+2003-09-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * floatformat.h (floatformat_is_valid): Add prototype.
+
+2003-09-15 Andrew Cagney <cagney@redhat.com>
+
+ * floatformat.c (get_field): Make "data" constant.
+ (floatformat_is_valid, floatformat_to_double): Make "from"
+ constant, fix casts.
+ (floatformat_from_double): Make "from" constant.
+
+2003-09-15 Daniel Jacobowitz <drow@mvista.com>
+
+ * floatformat.c (floatformat_is_valid): New function.
+ (get_field, put_field): Correct comments.
+
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer