Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
Commit Message
<bits/std_abs.h> from GCC 7 will include /usr/include/stdlib.h from
"#include_next" (instead of stdlib/stdlib.h in the glibc source
directory), and this turns up as a make dependency. Also make a copy
of <bits/std_abs.h> to prevent it from including /usr/include/stdlib.h.
OK for master?
H.J.
---
[BZ #21573]
* configure.ac (find_cxx_header): Add a second argument to
support <bits/std_abs.h>.
(CXX_CSTDLIB_HEADER): Updated. Also make a copy of
<bits/std_abs.h>.
(CXX_CMATH_HEADER): Updated.
* configure: Regenerated.
---
configure | 9 ++++++---
configure.ac | 9 ++++++---
2 files changed, 12 insertions(+), 6 deletions(-)
Comments
On Jun 13 2017, "H.J. Lu" <hjl.tools@gmail.com> wrote:
> diff --git a/configure b/configure
> index 422482f..888224e 100755
> --- a/configure
> +++ b/configure
> @@ -5336,10 +5336,13 @@ fi
> # copy of those headers in Makerules.
> if test -n "$CXX"; then
> find_cxx_header () {
> - echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
> + echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$2:/{s/:\$//;p}"
> }
> - CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
> - CXX_CMATH_HEADER="$(find_cxx_header cmath)"
> + CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib cstdlib)"
> + # Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
> + # including /usr/include/stdlib.h.
> + CXX_CSTDLIB_HEADER="$CXX_CSTDLIB_HEADER $(find_cxx_header bits/std_abs.h bits\\\/std_abs.h)"
Use a different delimiter in the sed command.
Andreas.
On Tue, Jun 13, 2017 at 4:40 AM, Andreas Schwab <schwab@suse.de> wrote:
> On Jun 13 2017, "H.J. Lu" <hjl.tools@gmail.com> wrote:
>
>> diff --git a/configure b/configure
>> index 422482f..888224e 100755
>> --- a/configure
>> +++ b/configure
>> @@ -5336,10 +5336,13 @@ fi
>> # copy of those headers in Makerules.
>> if test -n "$CXX"; then
>> find_cxx_header () {
>> - echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
>> + echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$2:/{s/:\$//;p}"
>> }
>> - CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
>> - CXX_CMATH_HEADER="$(find_cxx_header cmath)"
>> + CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib cstdlib)"
>> + # Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
>> + # including /usr/include/stdlib.h.
>> + CXX_CSTDLIB_HEADER="$CXX_CSTDLIB_HEADER $(find_cxx_header bits/std_abs.h bits\\\/std_abs.h)"
>
> Use a different delimiter in the sed command.
>
The first / in "/$1:/{s/:\$//;p}" is a command:
[hjl@gnu-tools-1 glibc-test]$ echo "#include <bits/std_abs.h>" |
/usr/gcc-7.1.1-x32/bin/c++ -M -MP -x c++ - | sed -n
",/bits/std_abs.h:,{s/:\$//;p}"
sed: -e expression #1, char 1: unknown command: `,'
What options do I have?
On Jun 13 2017, "H.J. Lu" <hjl.tools@gmail.com> wrote:
> The first / in "/$1:/{s/:\$//;p}" is a command:
It's not a command, it's an address.
> [hjl@gnu-tools-1 glibc-test]$ echo "#include <bits/std_abs.h>" |
> /usr/gcc-7.1.1-x32/bin/c++ -M -MP -x c++ - | sed -n
> ",/bits/std_abs.h:,{s/:\$//;p}"
> sed: -e expression #1, char 1: unknown command: `,'
>
> What options do I have?
\,$1,
Andreas.
@@ -5336,10 +5336,13 @@ fi
# copy of those headers in Makerules.
if test -n "$CXX"; then
find_cxx_header () {
- echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
+ echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$2:/{s/:\$//;p}"
}
- CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
- CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+ CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib cstdlib)"
+ # Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
+ # including /usr/include/stdlib.h.
+ CXX_CSTDLIB_HEADER="$CXX_CSTDLIB_HEADER $(find_cxx_header bits/std_abs.h bits\\\/std_abs.h)"
+ CXX_CMATH_HEADER="$(find_cxx_header cmath cmath)"
fi
@@ -1187,10 +1187,13 @@ AC_SUBST(CXX_SYSINCLUDES)
# copy of those headers in Makerules.
if test -n "$CXX"; then
find_cxx_header () {
- echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
+ echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$2:/{s/:\$//;p}"
}
- CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
- CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+ CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib cstdlib)"
+ # Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
+ # including /usr/include/stdlib.h.
+ CXX_CSTDLIB_HEADER="$CXX_CSTDLIB_HEADER $(find_cxx_header bits/std_abs.h bits\\\/std_abs.h)"
+ CXX_CMATH_HEADER="$(find_cxx_header cmath cmath)"
fi
AC_SUBST(CXX_CSTDLIB_HEADER)
AC_SUBST(CXX_CMATH_HEADER)