Add linker pool allocator for aarch64 under qemu (cf GHC #24432)
When running the GHC RTS linker under qemu user-mode emulation,
mmap hint addresses are ignored, causing allocations to scatter
across the address space. This leads to ADR_GOT_PAGE relocation
overflow (±4GB range exceeded) on aarch64.
This patch pre-allocates a single contiguous 512MB RWX pool and
sub-allocates from it for all linker needs: sections, GOT, BSS,
and COMMON symbols. The pool is split into RW (growing down) and
RX (growing up) halves, guaranteeing all allocations stay close.
Also fixes GOT slot allocation for STB_LOCAL symbols (e.g.
approx_tab in Android NDK's libm.a) which have GOT-relative
relocations but were not assigned GOT slots.
Applied to GHC 9.6.7, 9.8.3+, 9.10.2+ (versions that already use
m32 for regular sections but missed BSS, COMMON, and GOT).
Enables android and aarch64-cross TH tests (annotations,
js-template-haskell, th-dlls) that were previously disabled due to
iserv hanging under qemu.