This is the mail archive of the
gdb-cvs@sources.redhat.com
mailing list for the GDB project.
src/gdb ChangeLog i387-tdep.c
- To: gdb-cvs at sourceware dot cygnus dot com
- Subject: src/gdb ChangeLog i387-tdep.c
- From: chastain at sourceware dot cygnus dot com
- Date: 7 Jul 2001 00:14:06 -0000
CVSROOT: /cvs/src
Module name: src
Changes by: chastain@sources.redhat.com 2001-07-06 17:14:06
Modified files:
gdb : ChangeLog i387-tdep.c
Log message:
I'm using the obvious fix rule to commit this.
Testing: I tested on native Red Hat Linux 7 using gcc 3.0.
The "info float" command exercises print_i387_value.
2001-07-06 Michael Chastain <chastain@redhat.com>
* i387-tdep.c (print_i387_value): Fix pointer glitch.
===
Index: i387-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i387-tdep.c,v
retrieving revision 1.11
diff -c -1 -0 -p -r1.11 i387-tdep.c
*** gdb/i387-tdep.c 2001/07/04 21:14:05 1.11
--- gdb/i387-tdep.c 2001/07/06 12:47:00
*************** print_i387_value (char *raw)
*** 163,184 ****
DOUBLEST value;
int len = TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT;
char *tmp = alloca (len);
/* This code only works on targets where ... */
gdb_assert (TARGET_LONG_DOUBLE_FORMAT == &floatformat_i387_ext);
/* Take care of the padding. FP reg is 80 bits. The same value in
memory is 96 bits. */
gdb_assert (FPU_REG_RAW_SIZE < len);
! memcpy (&tmp, raw, FPU_REG_RAW_SIZE);
! memset (&tmp + FPU_REG_RAW_SIZE, 0, len - FPU_REG_RAW_SIZE);
/* Extract the value as a DOUBLEST. */
/* Use extract_floating() rather than floatformat_to_doublest().
The latter is lossy in nature. Once GDB gets a host/target
independent and non-lossy FP it will become possible to bypass
extract_floating() and call floatformat*() directly. Note also
the assumptions about TARGET_LONG_DOUBLE above. */
value = extract_floating (tmp, len);
/* We try to print 19 digits. The last digit may or may not contain
--- 163,184 ----
DOUBLEST value;
int len = TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT;
char *tmp = alloca (len);
/* This code only works on targets where ... */
gdb_assert (TARGET_LONG_DOUBLE_FORMAT == &floatformat_i387_ext);
/* Take care of the padding. FP reg is 80 bits. The same value in
memory is 96 bits. */
gdb_assert (FPU_REG_RAW_SIZE < len);
! memcpy (tmp, raw, FPU_REG_RAW_SIZE);
! memset (tmp + FPU_REG_RAW_SIZE, 0, len - FPU_REG_RAW_SIZE);
/* Extract the value as a DOUBLEST. */
/* Use extract_floating() rather than floatformat_to_doublest().
The latter is lossy in nature. Once GDB gets a host/target
independent and non-lossy FP it will become possible to bypass
extract_floating() and call floatformat*() directly. Note also
the assumptions about TARGET_LONG_DOUBLE above. */
value = extract_floating (tmp, len);
/* We try to print 19 digits. The last digit may or may not contain
Patches:
http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.1422&r2=1.1423
http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gdb/i387-tdep.c.diff?cvsroot=src&r1=1.11&r2=1.12