X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fcharset.c;h=bc7bd6593e4f04aa3b6fbeb007adf225d6546952;hb=ee959deb576c46b85b6174626d700e1393256adf;hp=4cd6f205a7d6f9eee61cc8483b3b74cd5e916534;hpb=2898e56054c7a35f85908729b01c6eb763317269;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/charset.c b/gdb/charset.c index 4cd6f20..bc7bd65 100644 --- a/gdb/charset.c +++ b/gdb/charset.c @@ -1,6 +1,6 @@ /* Character set conversion support for GDB. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -20,7 +20,6 @@ #include "defs.h" #include "charset.h" #include "gdbcmd.h" -#include "gdb_assert.h" #include "gdb_obstack.h" #include "gdb_wait.h" #include "charset-list.h" @@ -28,9 +27,6 @@ #include "environ.h" #include "arch-utils.h" #include "gdb_vecs.h" - -#include -#include "gdb_string.h" #include #ifdef USE_WIN32API @@ -474,7 +470,7 @@ convert_between_encodings (const char *from, const char *to, iconv_t desc; struct cleanup *cleanups; size_t inleft; - char *inp; + ICONV_CONST char *inp; unsigned int space_request; /* Often, the host and target charsets will be the same. */ @@ -490,7 +486,7 @@ convert_between_encodings (const char *from, const char *to, cleanups = make_cleanup (cleanup_iconv, &desc); inleft = num_bytes; - inp = (char *) bytes; + inp = (ICONV_CONST char *) bytes; space_request = num_bytes; @@ -503,10 +499,10 @@ convert_between_encodings (const char *from, const char *to, old_size = obstack_object_size (output); obstack_blank (output, space_request); - outp = obstack_base (output) + old_size; + outp = (char *) obstack_base (output) + old_size; outleft = space_request; - r = iconv (desc, (ICONV_CONST char **) &inp, &inleft, &outp, &outleft); + r = iconv (desc, &inp, &inleft, &outp, &outleft); /* Now make sure that the object on the obstack only includes bytes we have converted. */ @@ -640,14 +636,15 @@ wchar_iterate (struct wchar_iterator *iter, out_request = 1; while (iter->bytes > 0) { + ICONV_CONST char *inptr = (ICONV_CONST char *) iter->input; char *outptr = (char *) &iter->out[0]; const gdb_byte *orig_inptr = iter->input; size_t orig_in = iter->bytes; size_t out_avail = out_request * sizeof (gdb_wchar_t); size_t num; - size_t r = iconv (iter->desc, - (ICONV_CONST char **) &iter->input, - &iter->bytes, &outptr, &out_avail); + size_t r = iconv (iter->desc, &inptr, &iter->bytes, &outptr, &out_avail); + + iter->input = (gdb_byte *) inptr; if (r == (size_t) -1) { @@ -953,7 +950,7 @@ extern char your_gdb_wchar_t_is_bogus[(sizeof (gdb_wchar_t) == 2 || sizeof (gdb_wchar_t) == 4) ? 1 : -1]; -/* intermediate_encoding returns the charset unsed internally by +/* intermediate_encoding returns the charset used internally by GDB to convert between target and host encodings. As the test above compiled, sizeof (gdb_wchar_t) is either 2 or 4 bytes. UTF-16/32 is tested first, UCS-2/4 is tested as a second option,