From owner-freebsd-current@FreeBSD.ORG Thu Aug 26 22:25:42 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CF5AA16A4CF; Thu, 26 Aug 2004 22:25:42 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id C3B1E43D39; Thu, 26 Aug 2004 22:25:42 +0000 (GMT) (envelope-from kan@FreeBSD.org) Received: from freefall.freebsd.org (kan@localhost [127.0.0.1]) i7QMPgZv095315; Thu, 26 Aug 2004 22:25:42 GMT (envelope-from kan@freefall.freebsd.org) Received: (from kan@localhost) by freefall.freebsd.org (8.12.11/8.12.11/Submit) id i7QMPgRC095314; Thu, 26 Aug 2004 22:25:42 GMT (envelope-from kan) Date: Thu, 26 Aug 2004 22:25:42 +0000 From: Alexander Kabaev To: Maxim Sobolev Message-ID: <20040826222542.GA95242@freefall.freebsd.org> References: <412DF886.4030107@portaone.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <412DF886.4030107@portaone.com> User-Agent: Mutt/1.4.1i cc: current@FreeBSD.org cc: iedowse@FreeBSD.org Subject: Re: [patch] bug in cpp's #ident handling in gcc 3.4 [Was: ccache with buildworld] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Aug 2004 22:25:42 -0000 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 > directive > > 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 "" > # 1 "" > # 1 "/tmp/foo.c" > #ident ""foo bar"" > -bash-2.05b$ > > 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. > > Regards, > > Maxim > --- 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? -- Alexander Kabaev