Add a RTS option -xp to load PIC object anywhere in address space
This re-applies D5195: Add a RTS option -xp to load PIC object anywhere in address space with fixes for i386:
- Fix unused label warnings, see D5230: rts/Linker.c: define the 'mmap_again' label only for x86_64 or D5273: Fix unused label on non x86_64 platforms
- Fix a silly bug introduced by moving #if
Add a RTS option -xp to load PIC object anywhere in address space. We do
this by relaxing the requirement of <0x80000000 result of
mmapForLinker and implying USE_CONTIGUOUS_MMAP.
We also need to change calls to ocInit and ocGetNames to avoid
dangling pointers when the address of oc->image is changed by
See D5195: Add a RTS option -xp to load PIC object anywhere in address space, also test under i386:
$ uname -a Linux watashi-arch32 4.18.5-arch1-1.0-ARCH #1 SMP PREEMPT Tue Aug 28 20:45:30 CEST 2018 i686 GNU/Linux $ cd testsuite/tests/th/ && make test ...
will run ./validate on stacked diff.
Reviewers: simonmar, bgamari, alpmestan, trommler, hvr, erikd
Reviewed By: simonmar
Subscribers: rwbarton, carter
Differential Revision: https://phabricator.haskell.org/D5289