This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: [newlib] print formats for FAST and LEAST types
- From: Andre Vieira <Andre dot SimoesDiasVieira at arm dot com>
- To: newlib at sourceware dot org
- Date: Tue, 14 Jul 2015 15:08:26 +0100
- Subject: Re: [newlib] print formats for FAST and LEAST types
- Authentication-results: sourceware.org; auth=none
- References: <55A4EFC1 dot 6000203 at arm dot com> <20150714134949 dot GA10863 at calimero dot vinschen dot de>
On 14/07/15 14:49, Corinna Vinschen wrote:
On Jul 14 12:17, Andre Vieira wrote:
Hello,
Kevin Bracey commented on Launchpad that he was having issues with a
mismatch between <inttypes.h> and <stdint.h> when printing an int_fast32_t.
See https://answers.launchpad.net/gcc-arm-embedded/+question/269083
This is due to the fact that on targets where the size of âintâ and âlongâ
are equal and 32 bits, the current header files will configure the type of
int_fast32_t to be âintâ and PRIdFAST32 to be âldâ and make printf thus
expect a âlongâ. The macroâs used in <stdint.h> come from
âgcc/config/newlib-stdint.hâ.
Are you looking into an older version of newlib by any chance? We
added code to newlib's headers to check explicitely at runtime whether
__INT32_TYPE__ is int or long, and set the PRIxxx32 macros accordingly.
See https://sourceware.org/git/?p=newlib-cygwin.git;h=496380c
I just checked this on 32 bit Cygwin:
$ gcc -E - <<EOF
#include <inttypes.h>
#include <stdint.h>
__INT_FAST32_TYPE__
PRIdFAST32
EOF
[...]
int
"d"
If there's still anything wrong with that, feel free to send patches.
Corinna
Hi Corinna,
I am on a newer version than the linked patch.
However when I run your example I get int and "ld".
In your example, if you pass -dM, does it show INT32_EQ_LONG to be defined?
BR,
Andre