Browse Source

Fix Rust lex selftest when using libiconv

The Rust lex selftest fails on our Windows build.  I tracked this down
to a use of UTF-32 as a parameter to convert_between_encodings.  Here,
iconv_open succeeds, but the actual conversion of a tab character
fails with EILSEQ.  I suspect that "UTF-32" is being interpreted as
big-endian, as changing the call to use "UTF-32LE" makes it work.
This patch implements this fix.
binutils-2_38-branch
Tom Tromey 5 years ago
parent
commit
775d36a916
  1. 13
      gdb/rust-parse.c

13
gdb/rust-parse.c

@ -695,9 +695,16 @@ rust_parser::lex_string ()
if (is_byte)
obstack_1grow (&obstack, value);
else
convert_between_encodings ("UTF-32", "UTF-8", (gdb_byte *) &value,
sizeof (value), sizeof (value),
&obstack, translit_none);
{
#if WORDS_BIGENDIAN
#define UTF32 "UTF-32BE"
#else
#define UTF32 "UTF-32LE"
#endif
convert_between_encodings (UTF32, "UTF-8", (gdb_byte *) &value,
sizeof (value), sizeof (value),
&obstack, translit_none);
}
}
else if (pstate->lexptr[0] == '\0')
error (_("Unexpected EOF in string"));

Loading…
Cancel
Save