Opened on 01/29/07 at 07:23:57
Closed on 11/23/14 at 15:10:09
#1214 closed defect
inttypes.h's PRI*PTR uses %*ll where it should use %*l
Reported by: | Ralf Corsepius | Owned by: | Ralf Corsepius |
---|---|---|---|
Priority: | normal | Milestone: | 4.11 |
Component: | tool/newlib | Version: | 4.7 |
Severity: | normal | Keywords: | |
Cc: | Blocked By: | ||
Blocking: |
Description (last modified by Gedare Bloom)
newlib-1.15.0's inttypes.h's implementation of the
PRI*PTR macros is broken.
The %*l macro being chosen doesn't correspond to the type being used as intptr_t.
To reproduce, compile this:
cat tmp.c
#include <stdio.h>
#include <inttypes.h>
int main()
{
void *null = 0;
printf( "%" PRIxPTR "\n", (intptr_t) null );
return 0;
}
# for c in /opt/rtems-4.8/bin/*-rtems4.8-gcc; do \
echo "$c:"; $c -o tmp.o -Wall -c tmp.c; done
/opt/rtems-4.8/bin/arm-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/avr-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/bfin-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/h8300-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/i386-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/m68k-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/mips-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/powerpc-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/sparc-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/tic4x-rtems4.8-gcc:
tmp.c: In function `main':
tmp.c:7: warning: long long unsigned int format, different type arg (arg 2)
Affected are all targets on all rtems branches.
Change History (3)
comment:1 Changed on 01/29/07 at 07:23:57 by Ralf Corsepius
comment:2 Changed on 11/22/14 at 14:48:28 by Gedare Bloom
Description: | modified (diff) |
---|---|
Milestone: | 2 → 4.9.5 |
comment:3 Changed on 11/23/14 at 15:10:09 by Joel Sherrill
Milestone: | 4.9.5 → 4.11 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Version: | unknown → 4.7 |
Reported years ago against an old newlib but not worked on until recently. The fix will not be backported. But it is fixed now.
newlib-1.15.0's inttypes.h's implementation of the
PRI*PTR macros is broken.
The %*l macro being chosen doesn't correspond to the type being used as intptr_t.
To reproduce, compile this:
#include <stdio.h>
#include <inttypes.h>
int main()
{
}
# for c in /opt/rtems-4.8/bin/*-rtems4.8-gcc; do \
echo "$c:"; $c -o tmp.o -Wall -c tmp.c; done
/opt/rtems-4.8/bin/arm-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/avr-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/bfin-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/h8300-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/i386-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/m68k-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'long int'
/opt/rtems-4.8/bin/mips-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/powerpc-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/sparc-rtems4.8-gcc:
tmp.c: In function 'main':
tmp.c:7: warning: format '%llx' expects type 'long long unsigned int', but argument 2 has type 'int'
/opt/rtems-4.8/bin/tic4x-rtems4.8-gcc:
tmp.c: In function `main':
tmp.c:7: warning: long long unsigned int format, different type arg (arg 2)
Affected are all targets on all rtems branches.