commit | c39e7c7cc8844e2b75bdc7e58ea5e1c68b318ad9 | [log] [tgz] |
---|---|---|
author | Nicolas Capens <capn@google.com> | Tue Jul 30 16:42:22 2019 -0400 |
committer | Nicolas Capens <nicolascapens@google.com> | Tue Jul 30 21:28:42 2019 +0000 |
tree | b70cd0dd42da1f25ec1ae30cb0dd88b8e3c3a04c | |
parent | 0a94b958225a6d7e0d7e8670071354ee926bbb3b [diff] |
Retry mmap() without MAP_JIT on older macOS The MAP_JIT flag is only supported on macOS 10.14 and higher, so mmap() may fail on older ones. Bug: chromium:985816 Change-Id: If0e12d61b7f243d804e0213a43160e7b3db106d3 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34511 Tested-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Reactor/ExecutableMemory.cpp b/src/Reactor/ExecutableMemory.cpp index 24c83ce..15d5b39 100644 --- a/src/Reactor/ExecutableMemory.cpp +++ b/src/Reactor/ExecutableMemory.cpp
@@ -247,6 +247,13 @@ if(mapping == MAP_FAILED) { + // Retry without MAP_JIT (for older macOS versions). + mapping = mmap(nullptr, length, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + } + + if(mapping == MAP_FAILED) + { mapping = nullptr; } #else