public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
@ 2017-06-13 11:38 H.J. Lu
  2017-06-13 11:40 ` Andreas Schwab
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2017-06-13 11:38 UTC (permalink / raw)
  To: GNU C Library

<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(-)

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)"
+  CXX_CMATH_HEADER="$(find_cxx_header cmath cmath)"
 fi
 
 
diff --git a/configure.ac b/configure.ac
index 7f43042..00cf227 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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)
-- 
2.9.4

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 11:38 [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573] H.J. Lu
@ 2017-06-13 11:40 ` Andreas Schwab
  2017-06-13 11:44   ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Schwab @ 2017-06-13 11:40 UTC (permalink / raw)
  To: H.J. Lu; +Cc: GNU C Library

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.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 11:40 ` Andreas Schwab
@ 2017-06-13 11:44   ` H.J. Lu
  2017-06-13 11:46     ` Andreas Schwab
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2017-06-13 11:44 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: GNU C Library

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?

-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 11:44   ` H.J. Lu
@ 2017-06-13 11:46     ` Andreas Schwab
  2017-06-13 11:54       ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Schwab @ 2017-06-13 11:46 UTC (permalink / raw)
  To: H.J. Lu; +Cc: GNU C Library

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.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 11:46     ` Andreas Schwab
@ 2017-06-13 11:54       ` H.J. Lu
  2017-06-13 15:32         ` H.J. Lu
  2017-06-13 20:13         ` Florian Weimer
  0 siblings, 2 replies; 11+ messages in thread
From: H.J. Lu @ 2017-06-13 11:54 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: GNU C Library

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]

On Tue, Jun 13, 2017 at 4:46 AM, Andreas Schwab <schwab@suse.de> wrote:
> 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,

Here is the updated patch.  OK for master?

Thanks.


-- 
H.J.

[-- Attachment #2: 0001-Make-copy-of-bits-std_abs.h-from-GCC-7-BZ-21573.patch --]
[-- Type: text/x-patch, Size: 2154 bytes --]

From 5b55c60163f4c99301c4c8fe2504a195620d828a Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 13 Jun 2017 04:30:26 -0700
Subject: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]

<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.

	[BZ #21573]
	* configure.ac (find_cxx_header): Use "\,$1," with sed.
	(CXX_CSTDLIB_HEADER): Also make a copy of <bits/std_abs.h>.
	* configure: Regenerated.
---
 configure    | 5 ++++-
 configure.ac | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 422482f..524a8bc 100755
--- a/configure
+++ b/configure
@@ -5336,9 +5336,12 @@ 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 "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header 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)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
 fi
 
diff --git a/configure.ac b/configure.ac
index 7f43042..213a436 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1187,9 +1187,12 @@ 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 "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header 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)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
 fi
 AC_SUBST(CXX_CSTDLIB_HEADER)
-- 
2.9.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 11:54       ` H.J. Lu
@ 2017-06-13 15:32         ` H.J. Lu
  2017-06-13 18:13           ` H.J. Lu
  2017-06-13 20:13         ` Florian Weimer
  1 sibling, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2017-06-13 15:32 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: GNU C Library

On Tue, Jun 13, 2017 at 4:54 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Jun 13, 2017 at 4:46 AM, Andreas Schwab <schwab@suse.de> wrote:
>> 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,
>
> Here is the updated patch.  OK for master?
>
> Thanks.

I am checking it in.

-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 15:32         ` H.J. Lu
@ 2017-06-13 18:13           ` H.J. Lu
  0 siblings, 0 replies; 11+ messages in thread
From: H.J. Lu @ 2017-06-13 18:13 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: GNU C Library

[-- Attachment #1: Type: text/plain, Size: 901 bytes --]

On Tue, Jun 13, 2017 at 8:32 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Jun 13, 2017 at 4:54 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Tue, Jun 13, 2017 at 4:46 AM, Andreas Schwab <schwab@suse.de> wrote:
>>> 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,
>>
>> Here is the updated patch.  OK for master?
>>
>> Thanks.
>
> I am checking it in.
>

A new target for $(common-objpfx)bits/std_abs.h is needed.  Tested
and verified with GCC5, GCC 6 and GCC 7 on x86-64.
This is what I am checking in.

-- 
H.J.

[-- Attachment #2: 0001-Make-copy-of-bits-std_abs.h-from-GCC-7-BZ-21573.patch --]
[-- Type: text/x-patch, Size: 4490 bytes --]

From a65ea28d1833d3502c5070472e43bda04410e6b5 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 13 Jun 2017 09:28:14 -0700
Subject: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]

<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.

	[BZ #21573]
	* Makerules [$(c++-bits-std_abs-h) != ""] (before-compile): Add
	$(common-objpfx)bits/std_abs.h.
	[$(c++-bits-std_abs-h) != ""] ($(common-objpfx)bits/std_abs.h):
	New target.
	* config.make.in (c++-bits-std_abs-h): New.
	* configure.ac (find_cxx_header): Use "\,$1," with sed.
	(CXX_BITS_STD_ABS_H): New.
	(AC_SUBST(CXX_BITS_STD_ABS_H)): Likewise.
	* configure: Regenerated.
---
 ChangeLog      | 13 +++++++++++++
 Makerules      |  8 ++++++++
 config.make.in |  1 +
 configure      |  5 ++++-
 configure.ac   |  4 +++-
 5 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a6978e6..52ffaf8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2017-06-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	[BZ #21573]
+	* Makerules [$(c++-bits-std_abs-h) != ""] (before-compile): Add
+	$(common-objpfx)bits/std_abs.h.
+	[$(c++-bits-std_abs-h) != ""] ($(common-objpfx)bits/std_abs.h):
+	New target.
+	* config.make.in (c++-bits-std_abs-h): New.
+	* configure.ac (find_cxx_header): Use "\,$1," with sed.
+	(CXX_BITS_STD_ABS_H): New.
+	(AC_SUBST(CXX_BITS_STD_ABS_H)): Likewise.
+	* configure: Regenerated.
+
 2017-06-13  Zack Weinberg  <zackw@panix.com>
 
 	* posix/bits/cpu-set.h: Correct indentation of preprocessor
diff --git a/Makerules b/Makerules
index 7656c49..f91a4c5 100644
--- a/Makerules
+++ b/Makerules
@@ -134,6 +134,14 @@ $(common-objpfx)cstdlib: $(c++-cstdlib-header)
 $(common-objpfx)cmath: $(c++-cmath-header)
 	$(INSTALL_DATA) $< $@T
 	$(move-if-change) $@T $@
+ifneq (,$(c++-bits-std_abs-h))
+# Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
+# including /usr/include/stdlib.h.
+before-compile := $(common-objpfx)bits/std_abs.h $(before-compile)
+$(common-objpfx)bits/std_abs.h: $(c++-bits-std_abs-h)
+	$(INSTALL_DATA) $< $@T
+	$(move-if-change) $@T $@
+endif
 endif
 
 before-compile := $(common-objpfx)libc-abis.h $(before-compile)
diff --git a/config.make.in b/config.make.in
index d08a462..dadabf9 100644
--- a/config.make.in
+++ b/config.make.in
@@ -47,6 +47,7 @@ sysincludes = @SYSINCLUDES@
 c++-sysincludes = @CXX_SYSINCLUDES@
 c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
 c++-cmath-header = @CXX_CMATH_HEADER@
+c++-bits-std_abs-h = @CXX_BITS_STD_ABS_H@
 all-warnings = @all_warnings@
 enable-werror = @enable_werror@
 
diff --git a/configure b/configure
index 422482f..ceb5394 100755
--- a/configure
+++ b/configure
@@ -634,6 +634,7 @@ BISON
 INSTALL_INFO
 PERL
 BASH_SHELL
+CXX_BITS_STD_ABS_H
 CXX_CMATH_HEADER
 CXX_CSTDLIB_HEADER
 CXX_SYSINCLUDES
@@ -5336,14 +5337,16 @@ 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 "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+  CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
 fi
 
 
 
+
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
 # LD_LIBRARY_PATH contains the current directory if one of the following
diff --git a/configure.ac b/configure.ac
index 7f43042..d74bd44 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1187,13 +1187,15 @@ 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 "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+  CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
 fi
 AC_SUBST(CXX_CSTDLIB_HEADER)
 AC_SUBST(CXX_CMATH_HEADER)
+AC_SUBST(CXX_BITS_STD_ABS_H)
 
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
-- 
2.9.4


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 11:54       ` H.J. Lu
  2017-06-13 15:32         ` H.J. Lu
@ 2017-06-13 20:13         ` Florian Weimer
  2017-06-13 20:21           ` H.J. Lu
  1 sibling, 1 reply; 11+ messages in thread
From: Florian Weimer @ 2017-06-13 20:13 UTC (permalink / raw)
  To: H.J. Lu, Andreas Schwab; +Cc: GNU C Library

[-- Attachment #1: Type: text/plain, Size: 621 bytes --]

On 06/13/2017 01:54 PM, H.J. Lu wrote:
> -    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
> +    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "\,$1:,{s/:\$//;p}"
>    }
>    CXX_CSTDLIB_HEADER="$(find_cxx_header 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)"

I think the attached patch is needed to suppress the error message if
the header does not exist.  (Regenerated configure file not shown in the
patch.)

Thanks,
Florian

[-- Attachment #2: find_cxx_header.patch --]
[-- Type: text/x-patch, Size: 693 bytes --]

configure: Suppress expected compiler error message

2017-06-13  Florian Weimer  <fweimer@redhat.com>

	* configure.ac (find_cxx_header): Suppress compiler error message.

diff --git a/configure.ac b/configure.ac
index d74bd44..3f486d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1187,7 +1187,8 @@ 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++ - 2>/dev/null \
+	 | sed -n "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 20:13         ` Florian Weimer
@ 2017-06-13 20:21           ` H.J. Lu
  2017-09-07 17:29             ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2017-06-13 20:21 UTC (permalink / raw)
  To: Florian Weimer; +Cc: Andreas Schwab, GNU C Library

On Tue, Jun 13, 2017 at 1:13 PM, Florian Weimer <fweimer@redhat.com> wrote:
> On 06/13/2017 01:54 PM, H.J. Lu wrote:
>> -    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
>> +    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "\,$1:,{s/:\$//;p}"
>>    }
>>    CXX_CSTDLIB_HEADER="$(find_cxx_header 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)"
>
> I think the attached patch is needed to suppress the error message if
> the header does not exist.  (Regenerated configure file not shown in the
> patch.)
>

LGTM.

Thanks.


-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-06-13 20:21           ` H.J. Lu
@ 2017-09-07 17:29             ` H.J. Lu
  2017-09-11 15:53               ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2017-09-07 17:29 UTC (permalink / raw)
  To: Florian Weimer, Libc-stable Mailing List; +Cc: Andreas Schwab, GNU C Library

[-- Attachment #1: Type: text/plain, Size: 882 bytes --]

On Tue, Jun 13, 2017 at 1:21 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Jun 13, 2017 at 1:13 PM, Florian Weimer <fweimer@redhat.com> wrote:
>> On 06/13/2017 01:54 PM, H.J. Lu wrote:
>>> -    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
>>> +    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "\,$1:,{s/:\$//;p}"
>>>    }
>>>    CXX_CSTDLIB_HEADER="$(find_cxx_header 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)"
>>
>> I think the attached patch is needed to suppress the error message if
>> the header does not exist.  (Regenerated configure file not shown in the
>> patch.)
>>
>
> LGTM.
>

Here is a patch to backport these 2 patches to 2.25 branch.   Any
comments?

-- 
H.J.

[-- Attachment #2: 0001-Make-copy-of-bits-std_abs.h-from-GCC-7-BZ-21573.patch --]
[-- Type: text/x-patch, Size: 4059 bytes --]

From a746c011f8b6bb7ffae39258d7e3b24e8b5cde40 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 13 Jun 2017 09:28:14 -0700
Subject: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]

<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.

	* configure.ac (find_cxx_header): Suppress compiler error message.
	* configure: Regenerated.

	[BZ #21573]
	* Makerules [$(c++-bits-std_abs-h) != ""] (before-compile): Add
	$(common-objpfx)bits/std_abs.h.
	[$(c++-bits-std_abs-h) != ""] ($(common-objpfx)bits/std_abs.h):
	New target.
	* config.make.in (c++-bits-std_abs-h): New.
	* configure.ac (find_cxx_header): Use "\,$1," with sed.
	(CXX_BITS_STD_ABS_H): New.
	(AC_SUBST(CXX_BITS_STD_ABS_H)): Likewise.
	* configure: Regenerated.

(cherry picked from commit a65ea28d1833d3502c5070472e43bda04410e6b5 and
 commit c2528fef3b05bcffb1ac27c6c09cc3ff24b7f03f)
---
 Makerules      | 8 ++++++++
 config.make.in | 1 +
 configure      | 6 +++++-
 configure.ac   | 5 ++++-
 4 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/Makerules b/Makerules
index 7403305d30..43343f03ee 100644
--- a/Makerules
+++ b/Makerules
@@ -127,6 +127,14 @@ $(common-objpfx)cstdlib: $(c++-cstdlib-header)
 $(common-objpfx)cmath: $(c++-cmath-header)
 	$(INSTALL_DATA) $< $@T
 	$(move-if-change) $@T $@
+ifneq (,$(c++-bits-std_abs-h))
+# Also make a copy of <bits/std_abs.h> from GCC 7 to prevent it from
+# including /usr/include/stdlib.h.
+before-compile := $(common-objpfx)bits/std_abs.h $(before-compile)
+$(common-objpfx)bits/std_abs.h: $(c++-bits-std_abs-h)
+	$(INSTALL_DATA) $< $@T
+	$(move-if-change) $@T $@
+endif
 endif
 
 before-compile := $(common-objpfx)libc-abis.h $(before-compile)
diff --git a/config.make.in b/config.make.in
index 5836b32a72..709527da4f 100644
--- a/config.make.in
+++ b/config.make.in
@@ -47,6 +47,7 @@ sysincludes = @SYSINCLUDES@
 c++-sysincludes = @CXX_SYSINCLUDES@
 c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
 c++-cmath-header = @CXX_CMATH_HEADER@
+c++-bits-std_abs-h = @CXX_BITS_STD_ABS_H@
 all-warnings = @all_warnings@
 enable-werror = @enable_werror@
 
diff --git a/configure b/configure
index eecd0ace74..ee637a7caf 100755
--- a/configure
+++ b/configure
@@ -634,6 +634,7 @@ BISON
 INSTALL_INFO
 PERL
 BASH_SHELL
+CXX_BITS_STD_ABS_H
 CXX_CMATH_HEADER
 CXX_CSTDLIB_HEADER
 CXX_SYSINCLUDES
@@ -5318,14 +5319,17 @@ 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++ - 2>/dev/null \
+	 | sed -n "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+  CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
 fi
 
 
 
+
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
 # LD_LIBRARY_PATH contains the current directory if one of the following
diff --git a/configure.ac b/configure.ac
index 4a77411b71..d288ff43cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1176,13 +1176,16 @@ 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++ - 2>/dev/null \
+	 | sed -n "\,$1:,{s/:\$//;p}"
   }
   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
+  CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
 fi
 AC_SUBST(CXX_CSTDLIB_HEADER)
 AC_SUBST(CXX_CMATH_HEADER)
+AC_SUBST(CXX_BITS_STD_ABS_H)
 
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
-- 
2.13.5


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573]
  2017-09-07 17:29             ` H.J. Lu
@ 2017-09-11 15:53               ` H.J. Lu
  0 siblings, 0 replies; 11+ messages in thread
From: H.J. Lu @ 2017-09-11 15:53 UTC (permalink / raw)
  To: Florian Weimer, Libc-stable Mailing List; +Cc: Andreas Schwab, GNU C Library

On Thu, Sep 7, 2017 at 10:26 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Jun 13, 2017 at 1:21 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Tue, Jun 13, 2017 at 1:13 PM, Florian Weimer <fweimer@redhat.com> wrote:
>>> On 06/13/2017 01:54 PM, H.J. Lu wrote:
>>>> -    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
>>>> +    echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "\,$1:,{s/:\$//;p}"
>>>>    }
>>>>    CXX_CSTDLIB_HEADER="$(find_cxx_header 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)"
>>>
>>> I think the attached patch is needed to suppress the error message if
>>> the header does not exist.  (Regenerated configure file not shown in the
>>> patch.)
>>>
>>
>> LGTM.
>>
>
> Here is a patch to backport these 2 patches to 2.25 branch.   Any
> comments?
>

I am checking it into 2.25 branch.


-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-09-11 15:53 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-13 11:38 [PATCH] Make copy of <bits/std_abs.h> from GCC 7 [BZ #21573] H.J. Lu
2017-06-13 11:40 ` Andreas Schwab
2017-06-13 11:44   ` H.J. Lu
2017-06-13 11:46     ` Andreas Schwab
2017-06-13 11:54       ` H.J. Lu
2017-06-13 15:32         ` H.J. Lu
2017-06-13 18:13           ` H.J. Lu
2017-06-13 20:13         ` Florian Weimer
2017-06-13 20:21           ` H.J. Lu
2017-09-07 17:29             ` H.J. Lu
2017-09-11 15:53               ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).