On Wed, Mar 31, 2021 at 10:51 PM Iain Sandoe <i...@sandoe.co.uk> wrote: > > 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?
LGTM. Thanks, Richard. > 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 > >