[patch] bug in cpp's #ident handling in gcc 3.4 [Was: ccache with buildworld]

Maxim Sobolev sobomax at portaone.com
Thu Aug 26 23:37:02 PDT 2004

Alexander Kabaev wrote:

> On Thu, Aug 26, 2004 at 05:49:42PM +0300, Maxim Sobolev wrote:
>>Hi there,
>>I was looking into the problem with building world using ccache. It was 
>>failing with the following error message:
>>/usr/src/lib/libc/rpc/key_call.c:33:10: extra tokens at end of #ident 
>>Further investigation revealed that pre-processor puts argument of 
>>#ident directive into additional quotes (""). That is, after 
>>pre-processor #ident "foo" becomes #ident ""foo"", so that compiler 
>>considers that in this example ident itself is empty string and foo"" is 
>>"extra tokens". Following script illustrates problem:
>>-bash-2.05b$ echo '#ident "foo bar"' > /tmp/foo.c
>>-bash-2.05b$ cc -E /tmp/foo.c
>># 1 "/tmp/foo.c"
>># 1 "<built-in>"
>># 1 "<command line>"
>># 1 "/tmp/foo.c"
>>#ident ""foo bar""
>>This problem doesn't hit when compilation is made without ccache, since 
>>in this case (for performance reasons probably) no intermediate 
>>pre-processed output is emitted.
>>Attached please find small patch which fixes the problem for me. With 
>>it, I was able to do buildworld using ccache.
>>It would be nice to get it committed before 5.3 is out.
>>--- src/contrib/gcc/c-ppoutput.c	2004/08/26 14:10:04	1.1
>>+++ src/contrib/gcc/c-ppoutput.c	2004/08/26 14:10:32
>>@@ -292,7 +292,7 @@
>> 	  const cpp_string *str)
>> {
>>   maybe_print_line (print.map, line);
>>-  fprintf (print.outf, "#ident \"%s\"\n", str->text);
>>+  fprintf (print.outf, "#ident %s\n", str->text);
>>   print.line++;
>> }
> Not going to happen unless change is first accepted into FSF repository.
> Have you submitted it to GCC folks through proper channel?

Yes, bug 17206.


More information about the freebsd-current mailing list