[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AC_EGREP_CPP and AC_EGREP_HEADER users - beware of recent gcc
From: |
Mike Frysinger |
Subject: |
Re: AC_EGREP_CPP and AC_EGREP_HEADER users - beware of recent gcc |
Date: |
Sun, 12 Mar 2017 23:47:12 -0400 |
On 15 Feb 2017 11:52, Bruno Haible wrote:
> Some uses of AC_EGREP_CPP and AC_EGREP_HEADER probably assume that when
> no continuation lines (backslash-newline) and no multiline macro invocations
> are involved, each source line produces at most one output line.
>
> This is no longer the case with GCC >= 5.
>
> Example:
> =============== foo.c ===============
> #include <features.h>
> #define FOO 2
> #define FOO_VERSION 12
>
> Version FOO . FOO_VERSION
> Version __GLIBC__ . __GLIBC_MINOR__
>
> #define show(a,b) Version a . b
> show(FOO,FOO_VERSION)
> show(__GLIBC__,__GLIBC_MINOR__)
> =====================================
>
> With gcc-4.9.4:
> $ gcc -E foo.c
> [...]
>
> Version 2 . 12
> Version 2 . 23
>
>
> Version 2 . 12
> Version 2 . 23
>
> With gcc-5.1.0 and newer:
> $ gcc -E foo.c
> [...]
>
> Version 2 . 12
> Version
> # 6 "foo.c" 3 4
> 2
> # 6 "foo.c"
> .
> # 6 "foo.c" 3 4
> 23
>
>
>
> # 9 "foo.c"
> Version 2 . 12
> Version
> # 10 "foo.c" 3 4
> 2
> # 10 "foo.c"
> .
> # 10 "foo.c" 3 4
> 23
>
>
> As you can see, here 1 source line produces up to 4 output lines (ignoring the
> line number comment lines). Attempts to use 'grep Version' to find the values
> of
> __GLIBC__ and __GLIBC_VERSION__ don't work any more.
>
> Maybe the documentation of AC_EGREP_CPP and AC_EGREP_HEADER could include
> a caveat about this?
seems like we be using -P with CPP when it's supported ?
-mike
signature.asc
Description: Digital signature
- Re: AC_EGREP_CPP and AC_EGREP_HEADER users - beware of recent gcc,
Mike Frysinger <=