off-by-one max exponent computation in convert_doublest_to_floatformat
authorJoel Brobecker <brobecker@gnat.com>
Wed, 24 Oct 2012 18:11:21 +0000 (18:11 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Wed, 24 Oct 2012 18:11:21 +0000 (18:11 +0000)
commit3256027470cc5339e32600cd0d5900f3ce3344e7
tree57de7e6b7467258ef88e879bd8f14d2799f4dab8
parent5a04cc987f921c041f358e0b2a7390ba7dcd1aa1
off-by-one max exponent computation in convert_doublest_to_floatformat

Assuming the following variable definition:

    long double inp = 2.0;

On platforms where "long double" is a double precision IEEE flaoting
point, GDB currently behaves as follow:

    (gdb) set variable inp = 1.6e+308l
    (gdb) p inp
    $2 = inf   <<<<---- !!!!

Instead, the value of "inp" should be printed as:

    (gdb) p inp
    $1 = 1.6e+308

The problem is due to a small error in the comparison of the exponent
versus the maximum value this exponent can take, causing us to think
that the value was too big to fit. But it isn't.

gdb/ChangeLog:

        * doublest.c (convert_doublest_to_floatformat): Fix comparison
        against maximum exponent value.

gdb/testsuite/ChangeLog:

        * gdb.base/ldbl_e308.c, gdb.base/ldbl_e308.exp: New files.
gdb/ChangeLog
gdb/doublest.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/ldbl_e308.c [new file with mode: 0644]
gdb/testsuite/gdb.base/ldbl_e308.exp [new file with mode: 0644]