--- gcc/config/avr/avr.h.old 2011-05-01 14:39:19.000000000 +0400 +++ gcc/config/avr/avr.h 2011-05-01 16:33:36.000000000 +0400 @@ -175,6 +175,9 @@ #define SIZE_TYPE (INT_TYPE_SIZE == 8 ? "long unsigned int" : "unsigned int") #define PTRDIFF_TYPE (INT_TYPE_SIZE == 8 ? "long int" :"int") +#define CHAR16_TYPE (INT_TYPE_SIZE == 8 ? "long unsigned int" : "unsigned int") +#define CHAR32_TYPE (INT_TYPE_SIZE == 8 ? "long long unsigned int" : "long unsigned int") + #define WCHAR_TYPE_SIZE 16 #define FIRST_PSEUDO_REGISTER 36 --- gcc/defaults.h.old 2011-05-01 14:39:19.000000000 +0400 +++ gcc/defaults.h 2011-05-01 16:33:36.000000000 +0400 @@ -526,17 +526,21 @@ affect C++ name mangling because in C++ these are distinct types not typedefs. */ +#ifndef CHAR16_TYPE #ifdef UINT_LEAST16_TYPE #define CHAR16_TYPE UINT_LEAST16_TYPE #else #define CHAR16_TYPE "short unsigned int" #endif +#endif +#ifndef CHAR32_TYPE #ifdef UINT_LEAST32_TYPE #define CHAR32_TYPE UINT_LEAST32_TYPE #else #define CHAR32_TYPE "unsigned int" #endif +#endif #ifndef WCHAR_TYPE #define WCHAR_TYPE "int"