On Fri, Mar 30, 2007 at 09:52:22AM -0700, Richard Henderson wrote:

> I think the problem is that we've not told libcpp what the correct
> narrow character set is.  I suggest adding something like
> 
>   if (BITS_PER_UNIT >= 32)
>     cpp_opts->narrow_charset = BYTES_BIG_ENDIAN ? "UTF-32BE" : "UTF-32LE";
>   else if (BITS_PER_UNIT >= 16)
>     cpp_opts->narrow_charset = BYTES_BIG_ENDIAN ? "UTF-16BE" : "UTF-16LE";
> 

Ah! That seems to do the trick. I'm still getting problems with numeric
escapes, but I notice this comment in emit_numeric_escape:

 /* Note: this code does not handle the case where the target
    and host have a different number of bits in a byte.  */

So my guess is that needs a fix too. I'm also seeing warnings from
character literals like:

 warning: character constant too long for its type

I should be able to chase this down too, though.


Thanks for the help,
Ned.

Reply via email to