aboutsummaryrefslogtreecommitdiff
path: root/gprof
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-03-11 12:22:20 +0000
committerPedro Alves <palves@redhat.com>2013-03-11 12:22:20 +0000
commit39086a0e1346572fac07542ede2a1ef153308a2a (patch)
tree55287581f85b93530d40c06578f98c07ba535cac /gprof
parent905851752e89f4fa2cc13e6df0f2dbd22c82f623 (diff)
downloadgdb-39086a0e1346572fac07542ede2a1ef153308a2a.zip
gdb-39086a0e1346572fac07542ede2a1ef153308a2a.tar.gz
gdb-39086a0e1346572fac07542ede2a1ef153308a2a.tar.bz2
Avoid invalid pointer to pointer conversions.
Casts between 'char **' <-> 'unsigned char **' and 'char **' <-> const char **' are actually invalid: http://gcc.gnu.org/ml/gcc-help/2013-03/msg00118.html In a nutshell, char (and variants) can alias anything, but pointers to chars get no special treatment (cf. C99/N1256, 6.5/7). Turns out older gcc's actually warn/complain on these constructs, though newer one's don't: http://sourceware.org/ml/gdb-patches/2013-03/msg00429.html http://sourceware.org/ml/gdb-patches/2013-03/msg00430.html This patch fixes the cases I added last week. It also fixes one other preexisting case in charset.c, though it seems even older gccs don't complain of char * <-> const char * aliasing. Tested on x86_64 Fedora 17. gdb/ 2013-03-11 Pedro Alves <palves@redhat.com> * charset.c (convert_between_encodings): Don't cast between different pointer to pointer types. Instead, make the 'inp' local be of the type iconv expects. (wchar_iterate): Don't cast between different pointer to pointer types. Instead, use new pointer local of the type iconv expects. * target.c (target_read_stralloc, target_fileio_read_stralloc): Add new local of type char pointer, and use it to get a char/string view of the byte buffer, instead of casting between pointer to pointer types.
Diffstat (limited to 'gprof')
0 files changed, 0 insertions, 0 deletions