Bug 19447 - unknown conversion type character `q' in format
Summary: unknown conversion type character `q' in format
Status: RESOLVED WONTFIX
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-01-14 18:14 UTC by Ralf Corsepius
Modified: 2005-07-23 22:49 UTC (History)
1 user (show)

See Also:
Host: i386-redhat-linux-gnu
Target: *-rtems
Build: 386-redhat-linux-gnu
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ralf Corsepius 2005-01-14 18:14:20 UTC
When building today's (2005-01-14) gcc-trunk for different (cross-) targets on
FC3, I am seeing many (several 10ths) warnings of this kind:
...
gcc -c   -g -O2  -DIN_GCC -DCROSS_COMPILE  -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-common  
-DHAVE_CONFIG_H    -I. -Icp -I../../gcc-4.0.0/gcc -I../../gcc-4.0.0/gcc/cp
-I../../gcc-4.0.0/gcc/../include -I../../gcc-4.0.0/gcc/../libcpp/include 
../../gcc-4.0.0/gcc/cp/call.c -o cp/call.o
../../gcc-4.0.0/gcc/cp/call.c: In function `build_new_op':
../../gcc-4.0.0/gcc/cp/call.c:3765: warning: unknown conversion type character
`q' in format
../../gcc-4.0.0/gcc/cp/call.c:3765: warning: too many arguments for format
../../gcc-4.0.0/gcc/cp/call.c: In function `enforce_access':
../../gcc-4.0.0/gcc/cp/call.c:4068: warning: unknown conversion type character
`q' in format
../../gcc-4.0.0/gcc/cp/call.c:4068: warning: too many arguments for format
../../gcc-4.0.0/gcc/cp/call.c:4070: warning: unknown conversion type character
`q' in format
../../gcc-4.0.0/gcc/cp/call.c:4070: warning: too many arguments for format
../../gcc-4.0.0/gcc/cp/call.c:4072: warning: unknown conversion type character
`q' in format
../../gcc-4.0.0/gcc/cp/call.c:4072: warning: too many arguments for format
...

In my understanding, this is the native gcc (gcc (GCC) 3.4.2 20041017 (Red Hat
3.4.2-6.fc3)) complaining about GCC-4.0.0 using "%q" as a format string.
I haven't tried, but IMO this probably results into GCC/c++ using non-functional
format strings.
Comment 1 Andrew Pinski 2005-01-14 18:36:12 UTC
Invalid, the warnings were correct for compiling 3.4.x but are not correct when compiling 4.0.0 but you 
have to compile with 4.0.0 to get correct warnings for this case.
Comment 2 Ralf Corsepius 2005-01-15 04:32:41 UTC
(In reply to comment #1)
> Invalid, the warnings were correct for compiling 3.4.x but are not correct 
> when compiling 4.0.0 but you 
> have to compile with 4.0.0 to get correct warnings for this case.
Are you trying to say
* 3.4.x is emitting bogus warnings?
Then this is a gcc-3.4.x bug.
* building 4.0.0 requires a native gcc-4.0.0?
This would qualify as a serious GCC-4.0 regression. 

I both cases this is a bug.
Comment 3 Andrew Pinski 2005-01-15 04:38:53 UTC
No what I am saying if you want accurate warnings for building 4.0.0, you need 4.0.0 but since we don't 
build cross compilers with -Werror for a reason.

Basically we added more formating in 4.0.0 which are not supported at all in 3.4.0 so warning about 
them in 3.4.0 is useful as you know that you messed up when back porting a patch to the 3.4.0 when 
compiling natively.  If you use an earlier version of gcc than 3.4.0, you don't get this warnings at all.  
The only way to fix this would depend on using the formatting warnings only for that certain version of 
gcc (I would assume that the formatting warnings are useful even if we don't support them in 3.4.0 
because you can reconize what version you using to cross compile with).

And yes you should be really using the same version to cross compile with as then it does not get 
confussing when something gets miscompiled (which has been known to happen in the past).