https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68456
--- Comment #3 from Yulia Koval <vaalfreja at gmail dot com> --- I agree, that %u usage is not a bug, but it still looks strange.. For gcc --target=i586-elf <built-in> macro has: #define __UINT32_TYPE__ long unsigned int For non-target gcc or gcc --target=i586-unknown-linux it has: #define __UINT32_TYPE__ unsigned int And this behaviour is changed by a header, called "newlib-stdint"..