This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: h8300, m32c and PRIuPTR
- From: Joel Sherrill <joel dot sherrill at oarcorp dot com>
- To: Eric Blake <eblake at redhat dot com>, Nicholas Clifton <nickc at redhat dot com>, "newlib at sourceware dot org" <newlib at sourceware dot org>
- Date: Mon, 16 Mar 2015 09:38:23 -0500
- Subject: Re: h8300, m32c and PRIuPTR
- Authentication-results: sourceware.org; auth=none
- References: <5506017E dot 8080301 at oarcorp dot com> <5506AECF dot 3040600 at redhat dot com> <5506E448 dot 7080000 at redhat dot com>
On 3/16/2015 9:10 AM, Eric Blake wrote:
> On 03/16/2015 04:22 AM, Nicholas Clifton wrote:
>> Hi Joel,
>>
>>> 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 );
>>> Any ideas on how to address this?
>> How about using an explicit widening cast, as in:
>>
>> printf ("%lu\n", (unsigned long) x);
>>
>>
>> I am assuming that sizeof (uintptr_t) <= sizeof (unsigned long) will
>> always be true, but that seems reasonable to me.
> Not on 64-bit mingw (where sizeof(long)==4, sizeof(uintptr_t)==8). But
> yes, explicitly widening to a known type can work around cases where you
> are otherwise stumped, although for this particular code, it looks like
> PRIuPTR is misdefined for your platform.
>
And we don't want to add casts. We just want to use the PRIxxx constants
to have portable printf formats and avoid warnings.
I am wondering if when we avoided changing newlib-stdint.h to match the
logic
in glibc-stdint.h for uintptr_t by adding configure time logic, we just
pushed
off the problem. At this point, all I can see as a solution is something
like this
in inttypes.h:
#if defined(__m32c__) || defined(__h8300__)
/* do whatever is needed */
#else
/* we can rely on the value provided by configure, use current logic */
#endif
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985