On Fri, Mar 30, 2007 at 01:59:12PM +0100, Thomas Gill wrote: > > Hi there, > > I maintain a GCC port for a small 16 bit processor called XAP2+. I'm > having problems with strings of wide characters. > > I have the following defines, among others: > > #define BITS_PER_UNIT 16 > ... > #define WCHAR_TYPE "int" > #define WCHAR_TYPE_SIZE 16 > > So, I'm expecting char and wchar_t to both be 16 bits wide.
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"; in a likely looking place in c_common_init_options. Then you shouldn't have to do any translation in your output routines at all. r~