Add a RTS option -xp to load PIC object anywhere in address space

Authored by watashi on Dec 28 2018, 10:37 PM.

Description

Add a RTS option -xp to load PIC object anywhere in address space

Summary:
This re-applies D5195: Add a RTS option -xp to load PIC object anywhere in address space with fixes for i386:

{P190}

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
ocAllocateSymbolExtra.

Test Plan:
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

Details