https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65040
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> --- -funsigned-char is an option that shouldn't be used without serious consideration. That said, I think in that case the warning is intentional, you are indeed passing a signed value to unsigned format. If you don't care about that, don't use -Wformat=2 or use -Wno-format-signedness.