Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

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 `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. 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. <details><summary>Trac metadata</summary> | Trac field | Value | | ---------------------- | -------------- | | Version | 8.0.1 | | Type | FeatureRequest | | TypeOfFailure | OtherFailure | | Priority | normal | | Resolution | Unresolved | | Component | Runtime System | | Test case | | | Differential revisions | | | BlockedBy | | | Related | | | Blocking | | | CC | simonmar | | Operating system | | | Architecture | | </details> <!-- {"blocked_by":[],"summary":"Allow the user to pick the address that the RTS reserves for the heap","status":"New","operating_system":"","component":"Runtime System","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["simonmar"],"type":"FeatureRequest","description":"We stumbled upon a case where an external library (OpenCL) does not work if a specific address (0x200000000) is taken.\r\n\r\nIt so happens that `osReserveHeapMemory` starts trying to `mmap` at `0x200000000`:\r\n\r\n{{{\r\n void *hint = (void*)((W_)8 * (1 << 30) + attempt * BLOCK_SIZE);\r\n at = osTryReserveHeapMemory(*len, hint);\r\n}}}\r\n\r\nThis makes it impossible to use Haskell programs compiled with GHC 8 with C functions that use OpenCL.\r\n\r\nSee this example https://github.com/chpatrick/oclwtf for a repro.\r\n\r\nMy 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.","type_of_failure":"OtherFailure","blocking":[]} -->
issue