$OpenBSD: patch-js_src_jit_ProcessExecutableMemory_cpp,v 1.2 2019/10/29 14:46:01 kurt Exp $

Don't ComputeRandomAllocationAddress on OpenBSD
https://bugzilla.mozilla.org/show_bug.cgi?id=1586912

Index: js/src/jit/ProcessExecutableMemory.cpp
--- js/src/jit/ProcessExecutableMemory.cpp.orig
+++ js/src/jit/ProcessExecutableMemory.cpp
@@ -242,6 +242,12 @@ static void DecommitPages(void* addr, size_t bytes) {
 }
 #else  // !XP_WIN
 static void* ComputeRandomAllocationAddress() {
+#ifdef __OpenBSD__
+  // OpenBSD already has random mmap and the idea that all x64 cpus
+  // have 48-bit address space is not correct. Returning nullptr
+  // allows OpenBSD do to the right thing.
+  return nullptr;
+#else
   uint64_t rand = js::GenerateRandomSeed();
 
 #ifdef HAVE_64BIT_BUILD
@@ -261,6 +267,7 @@ static void* ComputeRandomAllocationAddress() {
   // Ensure page alignment.
   uintptr_t mask = ~uintptr_t(gc::SystemPageSize() - 1);
   return (void*)uintptr_t(rand & mask);
+#endif
 }
 
 static void* ReserveProcessExecutableMemory(size_t bytes) {
