Allow the user to pick the address that the RTS reserves for the heap
We stumbled upon a case where an external library (OpenCL) does not work if a specific address (0x200000000) is taken.
It so happens that
osReserveHeapMemory starts trying to
void *hint = (void*)((W_)8 * (1 << 30) + attempt * BLOCK_SIZE); at = osTryReserveHeapMemory(*len, hint);
This makes it impossible to use Haskell programs compiled with GHC 8 with C functions that use OpenCL.
See this example https://github.com/chpatrick/oclwtf for a repro.
My proposal is to allow the user to work around this kind of behavior outside our control by letting the user override the starting address through an RTS command line flag.