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
This commit is contained in:
parent
0e2bc86140
commit
7f1659e652
@ -1,3 +1,7 @@
|
|||||||
|
2001-07-06 Michael Chastain <chastain@redhat.com>
|
||||||
|
|
||||||
|
* i387-tdep.c (print_i387_value): Fix pointer glitch.
|
||||||
|
|
||||||
2001-07-07 Mark Kettenis <kettenis@gnu.org>
|
2001-07-07 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
* lin-lwp.c (count_events_callback): Fix formatting. Turn check
|
* lin-lwp.c (count_events_callback): Fix formatting. Turn check
|
||||||
|
@ -170,8 +170,8 @@ print_i387_value (char *raw)
|
|||||||
/* Take care of the padding. FP reg is 80 bits. The same value in
|
/* Take care of the padding. FP reg is 80 bits. The same value in
|
||||||
memory is 96 bits. */
|
memory is 96 bits. */
|
||||||
gdb_assert (FPU_REG_RAW_SIZE < len);
|
gdb_assert (FPU_REG_RAW_SIZE < len);
|
||||||
memcpy (&tmp, raw, FPU_REG_RAW_SIZE);
|
memcpy (tmp, raw, FPU_REG_RAW_SIZE);
|
||||||
memset (&tmp + FPU_REG_RAW_SIZE, 0, len - FPU_REG_RAW_SIZE);
|
memset (tmp + FPU_REG_RAW_SIZE, 0, len - FPU_REG_RAW_SIZE);
|
||||||
|
|
||||||
/* Extract the value as a DOUBLEST. */
|
/* Extract the value as a DOUBLEST. */
|
||||||
/* Use extract_floating() rather than floatformat_to_doublest().
|
/* Use extract_floating() rather than floatformat_to_doublest().
|
||||||
|
Loading…
Reference in New Issue
Block a user