This is the mail archive of the gdb-cvs@sourceware.org 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]
Other format: [Raw text]

src/gdb ChangeLog i387-tdep.c testsuite/Change ...


CVSROOT:	/cvs/src
Module name:	src
Changes by:	palves@sourceware.org	2013-04-19 14:13:30

Modified files:
	gdb            : ChangeLog i387-tdep.c 
	gdb/testsuite  : ChangeLog 
Added files:
	gdb/testsuite/gdb.arch: i386-float.S i386-float.exp 

Log message:
	Fix the x87 FP register printout when issuing the âinfo floatâ command.
	
	Consider the following simple program:
	
	.globl  _start
	.text
	_start:
	fldt    val
	.data
	val: .byte 0x00,0x00,0x45,0x07,0x11,0x19,0x22,0xe9,0xfe,0xbf
	
	With current GDB on x86-64 GNU/Linux hosts, after the moment the fldt
	command has been executed the register st(0) looks like this,
	according to the âinfo regsâ output (TOP=7):
	
	R7: Valid   0xffffffbffffffffeffffffe922191107450000 -0.910676542908976927
	
	which is clearly wrong (just count its length).  The problem is due to
	the printf statement (see patch) printing a promoted integer value of
	a char argument "raw[i]", and, since char is signed on x86-64
	GNU/Linux, the erroneous âffffffâ are printed for the first three
	bytes which turn out to be "negative".  The fix is to use gdb_byte
	instead which is unsigned (and is the type of value_contents(), the
	type to be used for raw target bytes anyway).  After the fix the value
	will be printed correctly:
	
	R7: Valid   0xbffee922191107450000 -0.910676542908976927
	
	gdb/
	2013-04-19  Vladimir Kargov <kargov@gmail.com>
	Pedro Alves  <palves@redhat.com>
	
	* i387-tdep.c (i387_print_float_info): Use gdb_byte for pointer to
	value contents.
	
	gdb/testsuite/
	2013-04-19  Vladimir Kargov  <kargov@gmail.com>
	Pedro Alves  <palves@redhat.com>
	
	* gdb.arch/i386-float.S: New file.
	* gdb.arch/i386-float.exp: New file.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.15431&r2=1.15432
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/i387-tdep.c.diff?cvsroot=src&r1=1.76&r2=1.77
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.3630&r2=1.3631
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.arch/i386-float.S.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.arch/i386-float.exp.diff?cvsroot=src&r1=NONE&r2=1.1


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