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 breakpoint.c m32r-tdep.c mem ...


CVSROOT:	/cvs/src
Module name:	src
Changes by:	brobecke@sourceware.org	2012-03-15 18:33:46

Modified files:
	gdb            : ChangeLog breakpoint.c m32r-tdep.c mem-break.c 

Log message:
	Problem after hitting breakpoint on Windows (with GDBserver)
	
	When debugging on Windows with GDBserver, the debugger starts
	failing after hitting a breakpoint.  For instance:
	
	(gdb) b foo
	Breakpoint 1 at 0x40177e: file foo.adb, line 5.
	(gdb) cont
	Continuing.
	
	Breakpoint 1, foo () at foo.adb:5
	5          Put_Line ("Hello World.");  -- STOP
	(gdb) n
	
	Program received signal SIGSEGV, Segmentation fault.
	0x00401782 in foo () at foo.adb:5
	5          Put_Line ("Hello World.");  -- STOP
	
	There are two issues:
	
	1. While trying to re-insert a breakpoint that is still inserted
	in memory, insert_bp_location wipes out the breakpoint location's
	shadow_contents.  As a consequence, we cannot restore the proper
	instruction when removing the breakpoint anymore.  That's why
	the inferior's behavior changes when trying to resume after
	the breakpoint was hit.
	
	2. mem-break.c:default_memory_insert_breakpoint passes a breakpoint
	location's shadow_contents as the buffer for a memory read.
	This reveals a limitation of the various memory-read target
	functions.  This patch documents this limitation and adjust
	the two calls that seem to hit that limitation.
	
	gdb/ChangeLog:
	
	* breakpoint.c (breakpoint_xfer_memory): Add assertion.
	Update function description.
	(insert_bp_location): Do not wipe bl->target_info out.
	* mem-break.c: #include "gdb_string.h".
	(default_memory_insert_breakpoint): Do not call target_read_memory
	with a pointer to the breakpoint's shadow_contents buffer.  Use
	a local buffer instead.
	* m32r-tdep.c (m32r_memory_insert_breakpoint): Ditto.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.14014&r2=1.14015
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/breakpoint.c.diff?cvsroot=src&r1=1.664&r2=1.665
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/m32r-tdep.c.diff?cvsroot=src&r1=1.69&r2=1.70
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/mem-break.c.diff?cvsroot=src&r1=1.25&r2=1.26


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