On Fri, Mar 9, 2018 at 8:16 AM, Himanshu Jha <himanshujha199640@gmail.com> wrote:
Hello everyone,
I just compiled the kernel by passing "-Wformat-signedness" flag
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
-Wformat-signedness: If -Wformat is specified, also warn if the format string requires an unsigned argument and the argument is signed and vice versa.
Now, the C standard says:
"If a conversion specification is invalid, the behavior is undefined. If any argument is not the correct type for the corresponding conversion specification, the behavior is *undefined*."
For eg:
drivers/iio/trigger/stm32-timer-trigger.c:228:24: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘unsigned int’ [-Wformat=] return sprintf(buf, "%d\n", (unsigned int)freq); ~^ ~~~~~~~~~~~~~~~~~~ %d
What is the rationale for not including/using this flag in the HOSTCFLAGS in the Makefile ?
In the past, it was posited the toolchain should be smart enough to know when the programmer intended/needed a signed value versus an unsigned one. Also see http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-11/msg08325.html. Jeff