Make start address of `osReserveHeapMemory` tunable via command line -xb

Authored by bitonic on Sep 9 2016, 12:15 PM.

Description

Make start address of osReserveHeapMemory tunable via command line -xb

Summary:
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 mmap at 0x200000000:

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.

This patch allows 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.

Reviewers: bgamari, Phyx, simonmar, erikd, austin

Reviewed By: Phyx, simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D2513

(cherry picked from commit 1b5f9207a649a64a1bba20b0283253425f9208d7)

Details

Committed
bgamariSep 12 2016, 9:45 AM
Reviewer
Phyx
Parents
rGHC43149ea634a9: Fix TH ppr output for list comprehensions with only one Stmt
Branches
Unknown
Tags
Unknown