Darwin: Rewrite host PCH support [PR 55610].
commit22a982409323feb203401d345488a5a9c18e6733
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 13 Nov 2021 12:39:09 +0000 (13 12:39 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Thu, 2 Dec 2021 19:44:44 +0000 (2 19:44 +0000)
treed1b59ebd2620f197c94fa2a5d00817dc007700f1
parent2835977f8460ea59e7d3c877453fa358b31f9a7f
Darwin: Rewrite host PCH support [PR 55610].

We need to revise the PCH memory allocation scheme to enable
support for PIE on aarch64.  The rewrite uses a similar scheme
to the one used on Linux.

We attempt to identify VM segments for each arch/OS version that
are always available to the compiler (note this is not general,
it only needs to work for the cc1* exes).

If we cannot find the preferred segment we fall back to allowing
the kernel to supply one - this is more likely to fail when the
PCH read-in occurs (but that is trapped).

In doing this we obviate the need to unmap any part of the
compiler __DATA segment - thus fixing PR 55610.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
gcc/ChangeLog:

PR target/55610
* config/host-darwin.c (TRY_EMPTY_VM_SPACE,
SAFE_ALLOC_SIZE): New.
(darwin_gt_pch_get_address): Rewrite to use nominated
memory segments rather than part of the compiler __DATA
segment.
(darwin_gt_pch_use_address): Likewise.
gcc/config/host-darwin.c