This is the mail archive of the gdb-cvs@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

src/gdb ChangeLog i387-tdep.c


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]