diff options
author | Joel Brobecker <brobecker@gnat.com> | 2012-07-25 18:27:21 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2012-07-25 18:27:21 +0000 |
commit | 33d7655bb2b3cc12ac5401ae107a0aca33085d6e (patch) | |
tree | a45a8f48f08d796940de8a83d903bde13a7f1f12 /gdb/ChangeLog | |
parent | a22d44ff78d262f07f777bc57098574da5afb827 (diff) | |
download | gdb-33d7655bb2b3cc12ac5401ae107a0aca33085d6e.zip gdb-33d7655bb2b3cc12ac5401ae107a0aca33085d6e.tar.gz gdb-33d7655bb2b3cc12ac5401ae107a0aca33085d6e.tar.bz2 |
convert_doublest_to_floatformat: handle off-range values.
On x86_64-linux targetting AVR, we see the following issues:
(gdb) print 1.6e+308
$1 = 0.89002949
(gdb) print 1.6e-308
$3 = 2.87630892
What happens is that GDB is trying to convert the value it read
(as a host "long double") into a target "double" value. The routine
performing the conversion does not realize that 1.6e+308 is just
too large to fit in a double. Similarly, it does not notice that
1.6e-308 is too small to be represented.
This patch enhances convert_doublest_to_floatformat to both handle
floats that are too small and too large.
gdb/ChangeLog:
* doublest.c (convert_doublest_to_floatformat): If the exponent
is too small, treat the value as zero. If the exponent is too
large, treat the value as infinity.
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r-- | gdb/ChangeLog | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b5aa871..2c1520b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2012-07-25 Joel Brobecker <brobecker@adacore.com> + * doublest.c (convert_doublest_to_floatformat): If the exponent + is too small, treat the value as zero. If the exponent is too + large, treat the value as infinity. + +2012-07-25 Joel Brobecker <brobecker@adacore.com> + * configure.ac: Add --enable-lmcheck configure option. * configure: Regenerate. |