newlib/libc/include/machine/_default_types.h has this code: #if defined(__GNUC__) && (__GNUC__ >= 3 ) \ && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 ) /* GCC >= 3.3.0 has __<val>__ implicitly defined. */ This fails to do the intended version check for gcc 4.0, 4.1 and 4.2 .