h8300, m32c and PRIuPTR

Joel Sherrill joel.sherrill@oarcorp.com
Mon Mar 16 10:22:00 GMT 2015


Hi

Fighting through more printf() format warnings. This code
compiles without warning on all 18 RTEMS targets with
default arguments but has warnings on a h8300 and m32c
when certain CPU model CFLAGS are added. From a quick
check of the impact of adding the -mcpu=m32cm argument,
it is changing the sizeof(ptr) from 2 to 4 bytes.


==================
#include <stdio.h>
#include <inttypes.h>

void f( uintptr_t x)
{
   printf( "%" PRIuPTR "\n", x );
}
==================

The warning is:

f.c:6:3: warning: format '%u' expects argument of type 'unsigned int', 
but argument 2 has type 'uintptr_t' [-Wformat=]
    printf( "%" PRIuPTR "\n", x );
    ^

Various compiler options that trigger the warning:


h8300-rtems4.11-gcc  -Wall -c f.c <== no warning

h8300-rtems4.11-gcc -mh -mint32 -Wall -c f.c <== warning

h8300-rtems4.11-gcc -msx  -Wall -c f.c <== warning

m32c-rtems4.11-gcc  -Wall -c f.c <== no warning

m32c-rtems4.11-gcc -mcpu=m32cm  -Wall -c f.c <== warning

Any ideas on how to address this?

--joel



More information about the Newlib mailing list