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 ada-lex.l arm-lin ...


CVSROOT:	/cvs/src
Module name:	src
Changes by:	palves@sourceware.org	2013-03-13 16:45:11

Modified files:
	gdb            : ChangeLog ada-lang.c ada-lex.l arm-linux-tdep.c 
	                 i386-tdep.c solib-dsbt.c stap-probe.c 

Log message:
	More invalid pointer to pointer conversions.
	
	As a follow up to:
	
	http://sourceware.org/ml/gdb-patches/2013-03/msg00449.html
	
	In a nutshell, casts between 'char **' <-> 'unsigned char **' and
	'char **' <-> 'const char **' are invalid.
	
	I grepped for "\*\*) &" and found these.  There's another one in
	demangle.c, but I've split fixing that one to a separate patch.
	
	I think the ada_decode_symbol change is perhaps the one that could be
	surprising.  The function's description has this comment, which makes
	things much clearer:
	
	The GSYMBOL parameter is "mutable" in the C++ sense: logically
	const, but nevertheless modified to a semantically equivalent form
	when a decoded name is cached in it.  */
	
	const char *
	ada_decode_symbol (const struct general_symbol_info *gsymbol)
	
	With that out of the way, I think the patch ends up being pretty
	obvious.
	
	Tested on x86_64 Fedora 17.
	
	gdb/
	2013-03-13  Pedro Alves  <palves@redhat.com>
	
	* ada-lang.c (ada_decode_symbol): Cast away constness of GSYMBOL
	rather than casting 'const char * const *' to 'const char **'.
	* ada-lex.l (processInt): Make "trailer" local const.  Remove
	'const char **' cast.
	* arm-linux-tdep.c (arm_stap_parse_special_token): Add 'char *'
	locals, and use those as strtol output pointer, instead than doing
	invalid casts to from 'const char **' to 'char **'.
	(_initialize_demangle): Remove cast.
	* i386-tdep.c (i386_stap_parse_special_token): : Add 'char *'
	locals, and use those as strtol output pointer, instead than doing
	invalid casts to from 'const char **' to 'char **'.
	* solib-dsbt.c (dsbt_get_initial_loadmaps): Remove 'gdb_byte**'
	casts.
	* stap-probe.c (stap_parse_register_operand)
	(stap_parse_single_operand): Likewise.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.15263&r2=1.15264
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ada-lang.c.diff?cvsroot=src&r1=1.395&r2=1.396
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ada-lex.l.diff?cvsroot=src&r1=1.35&r2=1.36
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/arm-linux-tdep.c.diff?cvsroot=src&r1=1.93&r2=1.94
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/i386-tdep.c.diff?cvsroot=src&r1=1.370&r2=1.371
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/solib-dsbt.c.diff?cvsroot=src&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/stap-probe.c.diff?cvsroot=src&r1=1.9&r2=1.10


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