mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
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.
This commit is contained in:
@ -695,9 +695,16 @@ rust_parser::lex_string ()
|
|||||||
if (is_byte)
|
if (is_byte)
|
||||||
obstack_1grow (&obstack, value);
|
obstack_1grow (&obstack, value);
|
||||||
else
|
else
|
||||||
convert_between_encodings ("UTF-32", "UTF-8", (gdb_byte *) &value,
|
{
|
||||||
sizeof (value), sizeof (value),
|
#if WORDS_BIGENDIAN
|
||||||
&obstack, translit_none);
|
#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')
|
else if (pstate->lexptr[0] == '\0')
|
||||||
error (_("Unexpected EOF in string"));
|
error (_("Unexpected EOF in string"));
|
||||||
|
Reference in New Issue
Block a user