[PATCH] Add and use __INTTYPES_EXP()

Ralf Corsepius ralf.corsepius@rtems.org
Wed Nov 28 13:41:00 GMT 2012


On 11/23/2012 10:41 AM, Corinna Vinschen wrote:
> On Nov 22 12:36, Ralf Corsepius wrote:
>> On 11/22/2012 12:15 PM, Sebastian Huber wrote:
>>> I deleted stdint.h from Newlib, but there seem to be more issues in
>>> inttypes.h.
>>
>> Yes. Like I said, RTEMS has a different patch to inttypes.h, which
>> is supposed to exactly address these issues.
>>
>>> For example the format specifier for PRIuMAX was wrong.
>> Which particular case (target/multilib)?
>>
>> I can check my testsuite with the current rtems toolchain rpms.
>>
>>> I use now stdint.h from Newlib and this works.
>> This would surprise me, because I know, newlib's inttypes.h/stdint.h
>> are broken.
>
> Nice discussion, but would anybody of you let the rest of us in on
> the secret of newlib's stdint.h/intttypes.h brokenness?

It's been a while since I checked the last time, when I had switched 
RTEMS to use GCC's stdint.h. I'll try to check whether the current 
status in vanilla newlib still has issues. Unfortunately I currently 
don't have sufficient time available, so this will take time.

One major issue had been, newlib's stdint.h/inttypes.h types based on 
guesses base on ordinal types' _sizes_, while GCC internally is 
expecting certain _types_ in certain GCC internal operrations/checks.

For example, GCC was issuing warnings for certain types of arguments to 
fprintf, even through the sizes of a stdint-type matches the expectations.

AFAIR, the cause for this, was for example newlib's stdint.h setting 
"int32_t" to "long", while GCC was expecting "int" (with sizeof(int) == 
sizeof(long) == 32bit) ... and vice versa on other targets/multilibs.


Ralf



More information about the Newlib mailing list