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 psymtab.c symtab.c


CVSROOT:	/cvs/src
Module name:	src
Changes by:	brobecke@sourceware.org	2010-08-19 09:04:13

Modified files:
	gdb            : ChangeLog psymtab.c symtab.c 

Log message:
	Fix regression in -file-list-exec-source-files command.
	
	See http://sourceware.org/ml/gdb/2010-07/msg00118.html for
	a description of the problem. Namely, the file and fullname
	fields are inverted in the output of the -file-list-exec-source-files
	GDB/MI command:
	
	(gdb) interpreter-exec mi -file-list-exec-source-files
	^done,files=[{file="/takamaka.a/brobecke/ex/list-exec-source-files/foo.c",fullname="foo.c"},{file="/takamaka.a/brobecke/ex/list-exec-source-files/foo.c",fullname="foo.c"},{file="",fullname="init.c"},{file="",fullname="../sysdeps/x86_64/elf/start.S"},{file="",fullname="../sysdeps/x86_64/elf/start.S"}]
	
	It turns out to be a silly thinko: The map_symbol_filenames function
	calls the psymtab version of map_symbol_filenames routine, and this
	version called the callback function with filename and fullname
	in the wrong order (fullname/filename instead of filename/fullname).
	
	The routine description in symfile.h confirst that expected order for
	the FUN callback parameters:
	
	/* Call a callback for every file defined in OBJFILE.  FUN is the
	callback.  It is passed the file's name, the file's full name,
	and the DATA passed to this function.  */
	void (*map_symbol_filenames) (struct objfile *objfile,
	void (*fun) (const char *, const char *,
	void *),
	void *data);
	
	Fixing this error uncovered another location where the arguments
	were reversed: maybe_add_partial_symtab_filename.  Once the first
	error was fixed, the debugger would crash while attempting to do
	completion, because it was given a NULL fullname instead of the
	non-NULL filename.
	
	gdb/ChangeLog:
	
	* psymtab.c (map_symbol_filenames_psymtab): Call FUN with
	the arguments in the correct order.
	* symtab.c (maybe_add_partial_symtab_filename): Declare
	the arguments in the correct order.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.12098&r2=1.12099
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/psymtab.c.diff?cvsroot=src&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/symtab.c.diff?cvsroot=src&r1=1.250&r2=1.251


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