2011-08-01 Paul Pluzhnikov <ppluzhnikov@google.com>
authorPaul Pluzhnikov <ppluzhnikov@google.com>
Mon, 1 Aug 2011 16:02:03 +0000 (16:02 +0000)
committerPaul Pluzhnikov <ppluzhnikov@google.com>
Mon, 1 Aug 2011 16:02:03 +0000 (16:02 +0000)
PR gdb/13045
* doublest.c (convert_doublest_to_floatformat): Pass correct
mantissa length to put_field.

testsuite/ChangeLog:

2011-07-30  Paul Pluzhnikov  <ppluzhnikov@google.com>

PR gdb/13045
* gdb.base/float.exp: Add new test case for PR gdb/13045
* gdb.base/float.c: New file.

gdb/ChangeLog
gdb/doublest.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/float.c [new file with mode: 0644]
gdb/testsuite/gdb.base/float.exp

index 2904980e64df971023e4c6aedb7b68fcfe04f188..6e20c0a48ed91966aa8f42f2391ec5e3565415fc 100644 (file)
@@ -1,3 +1,9 @@
+2011-08-01  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+       PR gdb/13045
+       * doublest.c (convert_doublest_to_floatformat): Pass correct
+       mantissa length to put_field.
+
 2011-08-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * stack.c (do_gdb_disassembly): Use RETURN_MASK_ERROR, simplify the
@@ -25,7 +31,7 @@
        (struct backtrace_command_args, backtrace_command_stub): Remove, merge
        them into ...
        (backtrace_command, backtrace_full_command): ... here with a TRY_CATCH.
-       New variable e, remove variable btargs and its initialization.  
+       New variable e, remove variable btargs and its initialization.
 
 2011-08-01  Tristan Gingold  <gingold@adacore.com>
 
index a339887f8ecd019725a18d640168a4f8ef02621c..0739fdb91a03500647fa5837553bb45e508c0597 100644 (file)
@@ -274,10 +274,6 @@ convert_floatformat_to_doublest (const struct floatformat *fmt,
   *to = dto;
 }
 \f
-static void put_field (unsigned char *, enum floatformat_byteorders,
-                      unsigned int,
-                      unsigned int, unsigned int, unsigned long);
-
 /* Set a field which starts at START and is LEN bytes long.  DATA and
    TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER.  */
 static void
@@ -449,7 +445,7 @@ convert_doublest_to_floatformat (CONST struct floatformat *fmt,
                 fmt->exp_len, fmt->exp_nan);
       /* Be sure it's not infinity, but NaN value is irrel.  */
       put_field (uto, order, fmt->totalsize, fmt->man_start,
-                32, 1);
+                fmt->man_len, 1);
       goto finalize_byteorder;
     }
 
index 9e21026e571de7e60754b9c0870aab8dff286ece..0c95a61d0e2d93c0c36175929bf3e8704dc618e6 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+       PR gdb/13045
+       * gdb.base/float.exp: Add new test case for PR gdb/13045
+       * gdb.base/float.c: New file.
+
 2011-07-28  Phil Muldoon  <pmuldoon@redhat.com>
 
        * gdb.python/py-mi.exp: Test printers returning string hint, and
diff --git a/gdb/testsuite/gdb.base/float.c b/gdb/testsuite/gdb.base/float.c
new file mode 100644 (file)
index 0000000..052f1d7
--- /dev/null
@@ -0,0 +1,32 @@
+/* This test program is part of GDB, the GNU debugger.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+   */
+
+float
+foo ()
+{
+  float x = 0.0;
+  x = 1.0 / x;
+  return x;
+}
+
+int
+main ()
+{
+  foo ();
+  return 0;
+}
index 170ba774af924549b37823dc2684e9213ab0cebd..21ee7d261d89baaa7ed585066b81f8a1d7ca4f13 100644 (file)
@@ -27,7 +27,7 @@ if $tracelevel {
 #
 
 
-if { [prepare_for_testing float.exp float run.c] } {
+if { [prepare_for_testing float.exp float float.c] } {
     return -1
 }
 
@@ -99,3 +99,6 @@ if { [istarget "alpha*-*-*"] } then {
 } else {
     gdb_test "info float" "No floating.point info available for this processor." "info float (unknown target)"
 }
+
+gdb_test "step"
+gdb_test "finish" "Value returned is .* = (inf|nan).*"