Message ID | F0CB554C-D6D2-44F6-B0D7-A4035C68E528@sandoe.co.uk |
---|---|
State | New |
Headers | show |
Series | modules : Make sure we include <map> in system.h. | expand |
On Wed, Mar 31, 2021 at 10:51 PM Iain Sandoe <iain@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 > >
On 3/31/21 4:50 PM, Iain Sandoe 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? > thanks > Iain ok, thanks for tracking this down!
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