]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit - gdb/ada-lex.l
More invalid pointer to pointer conversions.
authorPedro Alves <palves@redhat.com>
Wed, 13 Mar 2013 16:45:11 +0000 (16:45 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 13 Mar 2013 16:45:11 +0000 (16:45 +0000)
commita0bcdaa75e9fbabdf4e1654e4aba5237c8360989
treeaf562ef27c4f00da7434b6dc60d6f82e53f45da6
parent8ddb196517f30b5e304663e428f345daf030230b
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.
gdb/ChangeLog
gdb/ada-lang.c
gdb/ada-lex.l
gdb/arm-linux-tdep.c
gdb/i386-tdep.c
gdb/solib-dsbt.c
gdb/stap-probe.c