LLVM: Do not map read-only data sections as executable.

As described in full details in the associated bug, LLVM will
map read-only data sections with READ+EXECUTE permissions by
default. Unfortunately, this makes certain tests fail on Fuchsia,
because this platform is very strict regarding the EXECUTE mapping
flag.

This CL fixes the issue by ensuring that non-code sections are
only mapped with the READ permission instead.

An upstream LLVM bug has been sent to https://reviews.llvm.org/D78574

Bug: b/154586551

Change-Id: I0b5bb871f1a305bbfe8a244f7fbcb664b70c209b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/44128
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: David Turner <digit@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/third_party/llvm-10.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp b/third_party/llvm-10.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp
index 925049b..b003bd4 100644
--- a/third_party/llvm-10.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp
+++ b/third_party/llvm-10.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp
@@ -152,8 +152,7 @@
   }
 
   // Make read-only data memory read-only.
-  ec = applyMemoryGroupPermissions(RODataMem,
-                                   sys::Memory::MF_READ | sys::Memory::MF_EXEC);
+  ec = applyMemoryGroupPermissions(RODataMem, sys::Memory::MF_READ);
   if (ec) {
     if (ErrMsg) {
       *ErrMsg = ec.message();
diff --git a/third_party/llvm-7.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp b/third_party/llvm-7.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp
index 05ab4a0..b29fcd1 100644
--- a/third_party/llvm-7.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp
+++ b/third_party/llvm-7.0/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp
@@ -153,8 +153,7 @@
   }
 
   // Make read-only data memory read-only.
-  ec = applyMemoryGroupPermissions(RODataMem,
-                                   sys::Memory::MF_READ | sys::Memory::MF_EXEC);
+  ec = applyMemoryGroupPermissions(RODataMem, sys::Memory::MF_READ);
   if (ec) {
     if (ErrMsg) {
       *ErrMsg = ec.message();