On Thu, Nov 4, 2021 at 9:03 PM Iain Sandoe via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> GCC (currently) has an implementation of pre-compiled-headers, that relies
> on being able to launch the compiler executable at the same address each
> time.  This constraint is not permitted by some system security models.
>
> The facility is an optimisation; saving the output of parsing a covering
> header file (that may include many others) so that the parsing need not be
> repeated when the same set of headers is needed in many places in a project.
>
> The patch series disables the operation of the PCH-related command lines,
> but does not cause an error to be emitted.  The intent is that build
> recipes that expect PCH to work will continue to operate, but the compiler
> no longer acts on them and therefore is no longer bound to the requirement
> to launch at a fixed address.
>
>  * When invoked to "generate PCH" the compiler will carry out the parsing
>    as before - producing any diagnostics if relevant and then saving a
>    stub file (to satisfy build recipe targets).  The stub file is marked as
>    invalid PCH.
>
>  * When an include directive is encountered, the compiler no longer checks
>    to see if a PCH header is available.
>
>  * The top-level configure option (--disable-host-pch-support) is also
>    propagated to libstdc++ where it causes the automatic invocation of the
>    existing --disable-libstdxx-pch.
>
> tested on x86_64-darwin, aarch64-darwin, and on x86_64, powerpc64le-linux,
> OK for master?

I had the impression we have support for PCH file relocation to deal with ASLR
at least on some platforms.  But it's IMHO nice to have a way to disable PCH
and that paves the way to have it disabled by default for a release before we
eventually nuke support completely (and then provide a backward-compatible
stub implementation).

So - OK if there are no complaints from reviewers of their respective area the
series touches.

Thanks,
Richard.

> thanks
> Iain
>
> Iain Sandoe (4):
>   config: Add top-level flag to disable host PCH.
>   libstdc++: Adjust build of PCH files accounting configured host
>     support.
>   libcpp: Honour a configuration without host support for PCH.
>   c-family, gcc: Allow configuring without support for PCH.
>
>  Makefile.def              |  9 ++--
>  Makefile.in               | 87 +++++++++++++++++++++++++--------------
>  configure                 | 42 +++++++++++++++++++
>  configure.ac              | 35 ++++++++++++++++
>  gcc/c-family/c-pch.c      | 23 ++++++++++-
>  gcc/config.in             |  6 +++
>  gcc/config/host-darwin.c  | 18 ++++++++
>  gcc/configure             | 29 ++++++++++++-
>  gcc/configure.ac          | 17 ++++++++
>  gcc/doc/install.texi      |  6 +++
>  libcpp/config.in          |  3 ++
>  libcpp/configure          | 24 +++++++++++
>  libcpp/configure.ac       | 16 +++++++
>  libcpp/files.c            | 14 +++++++
>  libcpp/pch.c              | 12 ++++++
>  libstdc++-v3/acinclude.m4 | 49 +++++++++++++---------
>  libstdc++-v3/configure    | 71 +++++++++++++++++++++-----------
>  libstdc++-v3/configure.ac | 11 ++++-
>  18 files changed, 391 insertions(+), 81 deletions(-)
>
> --
> 2.24.3 (Apple Git-128)
>

Reply via email to