aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/doublest.c6
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/float.c32
-rw-r--r--gdb/testsuite/gdb.base/float.exp5
5 files changed, 50 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2904980..6e20c0a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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>
diff --git a/gdb/doublest.c b/gdb/doublest.c
index a339887..0739fdb 100644
--- a/gdb/doublest.c
+++ b/gdb/doublest.c
@@ -274,10 +274,6 @@ convert_floatformat_to_doublest (const struct floatformat *fmt,
*to = dto;
}
-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;
}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 9e21026..0c95a61 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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
index 0000000..052f1d7
--- /dev/null
+++ b/gdb/testsuite/gdb.base/float.c
@@ -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;
+}
diff --git a/gdb/testsuite/gdb.base/float.exp b/gdb/testsuite/gdb.base/float.exp
index 170ba77..21ee7d2 100644
--- a/gdb/testsuite/gdb.base/float.exp
+++ b/gdb/testsuite/gdb.base/float.exp
@@ -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).*"