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 ada-lang.c dictionary.c test ...


CVSROOT:	/cvs/src
Module name:	src
Changes by:	brobecke@sourceware.org	2011-12-21 07:10:59

Modified files:
	gdb            : ChangeLog ada-lang.c dictionary.c 
	gdb/testsuite  : ChangeLog 
Added files:
	gdb/testsuite/gdb.ada: task_bp.exp 
	gdb/testsuite/gdb.ada/task_bp: foo.adb pck.adb pck.ads 

Log message:
	[Ada] Breakpoints on task bodies
	
	Consider the following declaration:
	
	package Pck is
	task Dummy_Task is
	entry Start;
	end Dummy_Task;
	end Pck;
	
	Inserting a breakpoint on the body of that task does not currently
	work:
	
	(gdb) b pck.dummy_task
	"pck.dummy_task" is not a function
	Make breakpoint pending on future shared library load? (y or [n]) n
	
	What happens here is that the compiler generates two symbols:
	
	(a) Symbol `pck__dummy_task' which is a *variable* referencing
	the task;
	
	(b) Symbol `pck__dummy_taskTKB' which is the subprogram implementing
	the body of the task.
	
	The symbol lookup only finds the variable before of the TKB suffix in
	the subprogram name. This patch fixes the problem by adjusting the
	ada-lang.c:is_name_suffix routine to recognize "TKB" suffixes.  But
	that's not enough, because the search in the symtab is performed via
	the block dictionary, using a hashing algorithm. So, for the search
	to find `pck__dummy_taskTKB', I had to modify the hashing function
	to ignore TKB suffixes as well.
	
	gdb/ChangeLog:
	
	* ada-lang.c (is_name_suffix): Add handling of "TKB" suffixes.
	Update function documentation.
	* dictionary.c (dict_hash): Ignore "TKB" suffixes in hash
	computation.
	
	gdb/testsuite/ChangeLog:
	
	* gdb.ada/task_bp: New testcase.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.13651&r2=1.13652
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ada-lang.c.diff?cvsroot=src&r1=1.324&r2=1.325
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/dictionary.c.diff?cvsroot=src&r1=1.22&r2=1.23
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.2995&r2=1.2996
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.ada/task_bp.exp.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.ada/task_bp/foo.adb.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.ada/task_bp/pck.adb.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.ada/task_bp/pck.ads.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]