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 ia64-linux-nat.c


CVSROOT:	/cvs/src
Module name:	src
Changes by:	brobecke@sourceware.org	2012-03-28 17:08:50

Modified files:
	gdb            : ChangeLog ia64-linux-nat.c 

Log message:
	[ia64-linux] Allow libunwind to fetch register 0
	
	On ia64-linux, GDB sometimes prints the following error when trying
	to switch to a different task:
	
	(gdb) task 3
	Register 0 is not available
	
	This is a random failure that sometimes happens, sometimes does not.
	The error comes from the fact that the libunwind library is requesting
	the value of register 0 (zero): This eventually leads us to
	ia64-linux-nat.c:ia64_linux_fetch_register.
	
	This function relies on ia64_cannot_fetch_register to determine
	whether or not we have access to the register's value.  The ptrace
	interface does not provide the r0 value, and so we end up telling
	the regcache that this register's value is not available.  And yet,
	for r0, we do not need to ask ptrace for its value, since it is
	always zero.
	
	So, the fix was to add a special rule for supplying a nul value
	when regnum == IA64_GR0_REGNUM.
	
	gdb/ChangeLog:
	
	* ia64-linux-nat.c (ia64_linux_fetch_register): Add special
	handling for r0.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.14046&r2=1.14047
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ia64-linux-nat.c.diff?cvsroot=src&r1=1.56&r2=1.57


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