Hi,

This fixes a stage 1 bootstrap fail on some Darwin versions when the
bootstrap compiler is clang / libc++ from Xcode.

bootstrapped on x86_64-darwin16, x86_64-linux-gnu
OK for master?
thanks
Iain

----


It appears that many targets include the map header transitively in
other std headers included from system.h.  However there are some
editions of clang/libc++ in Xcode that do not, which results in a
bootstrap fail - since when resolver.h is included  there is then a
conflict in declaring abort().

The fix is to ensure that map is pulled in by system.h and before
resolver.h is included.  As a precautionary measure and to alert
anyone perhaps adding another header to resolver.h this patch also
gates the direct includes there on !IN_GCC.

c++tools/ChangeLog:

        * resolver.h: Do not include std headers directly when
        building in GCC.

gcc/cp/ChangeLog:

        * mapper-client.cc (INCLUDE_MAP): New; require map to be
        included from system.h.
        * mapper-resolver.cc (INCLUDE_MAP): Likewise.
---
 c++tools/resolver.h       | 2 ++
 gcc/cp/mapper-client.cc   | 1 +
 gcc/cp/mapper-resolver.cc | 1 +
 3 files changed, 4 insertions(+)

diff --git a/c++tools/resolver.h b/c++tools/resolver.h
index 19339125b26..a9547bf6994 100644
--- a/c++tools/resolver.h
+++ b/c++tools/resolver.h
@@ -24,8 +24,10 @@ along with GCC; see the file COPYING3.  If not see
 // Mapper interface for client and server bits
 #include "cody.hh"
 // C++
+#if !IN_GCC
 #include <string>
 #include <map>
+#endif

 // This is a GCC class, so GCC coding conventions on new bits.
 class module_resolver : public Cody::Resolver
diff --git a/gcc/cp/mapper-client.cc b/gcc/cp/mapper-client.cc
index 774e2b2b095..b9e02168d55 100644
--- a/gcc/cp/mapper-client.cc
+++ b/gcc/cp/mapper-client.cc
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #endif
 #define INCLUDE_STRING
 #define INCLUDE_VECTOR
+#define INCLUDE_MAP
 #include "system.h"

 #include "line-map.h"
diff --git a/gcc/cp/mapper-resolver.cc b/gcc/cp/mapper-resolver.cc
index bcf6c8871e5..db443fb4948 100644
--- a/gcc/cp/mapper-resolver.cc
+++ b/gcc/cp/mapper-resolver.cc
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #define INCLUDE_STRING
 #define INCLUDE_VECTOR
 #define INCLUDE_ALGORITHM
+#define INCLUDE_MAP
 #include "system.h"

 // We don't want or need to be aware of networking
--
2.24.1


Reply via email to