aboutsummaryrefslogtreecommitdiff
path: root/gdb/=news
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/=news')
-rw-r--r--gdb/=news136
1 files changed, 136 insertions, 0 deletions
diff --git a/gdb/=news b/gdb/=news
new file mode 100644
index 0000000..43de9bc
--- /dev/null
+++ b/gdb/=news
@@ -0,0 +1,136 @@
+===================================================================
+RCS file: RCS/printcmd.c,v
+retrieving revision 1.1
+diff -c3 -r1.1 printcmd.c
+*** /tmp/,RCSt1011248 Tue Jan 12 14:06:06 1988
+--- printcmd.c Mon Sep 21 21:33:39 1987
+***************
+*** 174,179
+ VALUE_TYPE (val) = builtin_type_float;
+ if (TYPE_LENGTH (VALUE_TYPE (val)) == sizeof (double))
+ VALUE_TYPE (val) = builtin_type_double;
+ printf ("%g", value_as_double (val));
+ break;
+
+
+--- 174,185 -----
+ VALUE_TYPE (val) = builtin_type_float;
+ if (TYPE_LENGTH (VALUE_TYPE (val)) == sizeof (double))
+ VALUE_TYPE (val) = builtin_type_double;
++ #ifdef PRINTF_BUG
++ if (is_nan(value_as_double (val)))
++ printf ("Nan");
++ else
++ printf ("%g", value_as_double (val));
++ #else
+ printf ("%g", value_as_double (val));
+ #endif
+ break;
+***************
+*** 175,180
+ if (TYPE_LENGTH (VALUE_TYPE (val)) == sizeof (double))
+ VALUE_TYPE (val) = builtin_type_double;
+ printf ("%g", value_as_double (val));
+ break;
+
+ case 0:
+
+--- 181,187 -----
+ printf ("%g", value_as_double (val));
+ #else
+ printf ("%g", value_as_double (val));
++ #endif
+ break;
+
+ case 0:
+===================================================================
+RCS file: RCS/valprint.c,v
+retrieving revision 1.1
+diff -c3 -r1.1 valprint.c
+*** /tmp/,RCSt1011248 Tue Jan 12 14:06:09 1988
+--- valprint.c Mon Sep 21 21:35:45 1987
+***************
+*** 21,26
+ #include <stdio.h>
+ #include "defs.h"
+ #include "initialize.h"
+ #include "symtab.h"
+ #include "value.h"
+
+
+--- 21,27 -----
+ #include <stdio.h>
+ #include "defs.h"
+ #include "initialize.h"
++ #include "param.h"
+ #include "symtab.h"
+ #include "value.h"
+
+***************
+*** 249,255
+ break;
+
+ case TYPE_CODE_FLT:
+! fprintf (stream, "%g", unpack_double (type, valaddr));
+ break;
+
+ case TYPE_CODE_VOID:
+
+--- 250,265 -----
+ break;
+
+ case TYPE_CODE_FLT:
+! { double d = unpack_double (type, valaddr);
+! #ifdef PRINTF_BUG
+! if (is_nan(d))
+! fprintf (stream, "Nan");
+! else
+! fprintf (stream, "%g", d);
+! #else
+! fprintf (stream, "%g", d);
+! #endif
+! }
+ break;
+
+ case TYPE_CODE_VOID:
+***************
+*** 559,563
+ float_type_table[sizeof (float)] = "float";
+ float_type_table[sizeof (double)] = "double";
+ }
+
+ END_FILE
+
+--- 569,599 -----
+ float_type_table[sizeof (float)] = "float";
+ float_type_table[sizeof (double)] = "double";
+ }
++
++
++ #ifdef PRINTF_BUG
++
++ struct ieee { /* IEEE floating format */
++ unsigned int s:1;
++ unsigned int e:11;
++ unsigned int f1:20;
++ unsigned int f2;
++ };
++
++ #define ZERO_F(x) ((x.f1 == 0) && (x.f2 == 0)) /* zero fraction ? */
++ #define ZERO_E(x) (x.e == 0) /* zero exponential ? */
++ #define MAX_E(x) (x.e == 0x7ff) /* max exponential ? */
++ #define MINUS_S(x) (x.s == 1) /* minus ? */
++
++ int
++ is_nan(arg) /* Not a Number ? */
++ struct ieee arg;
++ {
++ if (MAX_E(arg) && !ZERO_F(arg))
++ return (1);
++ else
++ return (0);
++ }
++ #endif
+
+ END_FILE
+