Message ID | 15D35FFE-1E97-4047-A75C-F13D25826E15@andric.com |
---|---|
State | New |
Headers | show |
Series | Fix libcc1plugin and libc1plugin to avoid poisoned identifiers | expand |
Hi Dimitry, > On 7 Mar 2024, at 16:48, Dimitry Andric <dimitry@andric.com> wrote: > > Ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632 > > Use INCLUDE_VECTOR before including system.h, instead of directly > including <vector>, to avoid running into poisoned identifiers. I would say that the patch itself is obvious, but you have not mentioned how it was tested? thanks Iain > > Signed-off-by: Dimitry Andric <dimitry@andric.com> > --- > libcc1/libcc1plugin.cc | 3 +-- > libcc1/libcp1plugin.cc | 3 +-- > 2 files changed, 2 insertions(+), 4 deletions(-) > > diff --git a/libcc1/libcc1plugin.cc b/libcc1/libcc1plugin.cc > index 72d17c3b81c..e64847466f4 100644 > --- a/libcc1/libcc1plugin.cc > +++ b/libcc1/libcc1plugin.cc > @@ -32,6 +32,7 @@ > #undef PACKAGE_VERSION > > #define INCLUDE_MEMORY > +#define INCLUDE_VECTOR > #include "gcc-plugin.h" > #include "system.h" > #include "coretypes.h" > @@ -69,8 +70,6 @@ > #include "gcc-c-interface.h" > #include "context.hh" > > -#include <vector> > - > using namespace cc1_plugin; > > > diff --git a/libcc1/libcp1plugin.cc b/libcc1/libcp1plugin.cc > index 0eff7c68d29..da68c5d0ac1 100644 > --- a/libcc1/libcp1plugin.cc > +++ b/libcc1/libcp1plugin.cc > @@ -33,6 +33,7 @@ > #undef PACKAGE_VERSION > > #define INCLUDE_MEMORY > +#define INCLUDE_VECTOR > #include "gcc-plugin.h" > #include "system.h" > #include "coretypes.h" > @@ -71,8 +72,6 @@ > #include "rpc.hh" > #include "context.hh" > > -#include <vector> > - > using namespace cc1_plugin; > > > -- > 2.43.2 >
On 13 Mar 2024, at 12:30, Iain Sandoe <iain@sandoe.co.uk> wrote: > >> On 7 Mar 2024, at 16:48, Dimitry Andric <dimitry@andric.com> wrote: >> >> Ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632 >> >> Use INCLUDE_VECTOR before including system.h, instead of directly >> including <vector>, to avoid running into poisoned identifiers. > > I would say that the patch itself is obvious, but you have not mentioned how > it was tested? This was tested by doing a --disable-bootstrap build, on a FreeBSD system where llvm-project's libc++ is the default C++ library (specifically 15.0-CURRENT, which has llvm-project 17.0.6), against both the lang/gcc14-devel port, and against gcc master as of gcc-14-9346-g74e8cc28eda. This also required gcc-14-9360-g9970b576b7e to be applied, before it was committed to master. Note that if you do a fully bootstrapped build, there aren't any compile errors, since it will compile the plugins against a freshly built libstdc++: it has already transitively included <vector> via other standard headers, so the #include <vector> statement after #include "system.h" effectively does nothing, and won't run into poisoned identifiers. You would only get compile errors on those poisoned identifiers with the non-bootstrapped, single-stage build which compiles everything against the host system's C++ headers. -Dimitry
diff --git a/libcc1/libcc1plugin.cc b/libcc1/libcc1plugin.cc index 72d17c3b81c..e64847466f4 100644 --- a/libcc1/libcc1plugin.cc +++ b/libcc1/libcc1plugin.cc @@ -32,6 +32,7 @@ #undef PACKAGE_VERSION #define INCLUDE_MEMORY +#define INCLUDE_VECTOR #include "gcc-plugin.h" #include "system.h" #include "coretypes.h" @@ -69,8 +70,6 @@ #include "gcc-c-interface.h" #include "context.hh" -#include <vector> - using namespace cc1_plugin; diff --git a/libcc1/libcp1plugin.cc b/libcc1/libcp1plugin.cc index 0eff7c68d29..da68c5d0ac1 100644 --- a/libcc1/libcp1plugin.cc +++ b/libcc1/libcp1plugin.cc @@ -33,6 +33,7 @@ #undef PACKAGE_VERSION #define INCLUDE_MEMORY +#define INCLUDE_VECTOR #include "gcc-plugin.h" #include "system.h" #include "coretypes.h" @@ -71,8 +72,6 @@ #include "rpc.hh" #include "context.hh" -#include <vector> - using namespace cc1_plugin;
Ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632 Use INCLUDE_VECTOR before including system.h, instead of directly including <vector>, to avoid running into poisoned identifiers. Signed-off-by: Dimitry Andric <dimitry@andric.com> --- libcc1/libcc1plugin.cc | 3 +-- libcc1/libcp1plugin.cc | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-)