1. Remove PROT_EXEC for global variables, per srhines' suggestion.
2. For code memory, make it writable only when bcc is INSIDE the code
emission of a given function.
Change-Id: I8de1e9841d540511adef3965c3f7ecb9f2fc29c4
diff --git a/bcc.cpp b/bcc.cpp
index c9e649f..1da5997 100644
--- a/bcc.cpp
+++ b/bcc.cpp
@@ -514,7 +514,7 @@
reset();
std::string ErrMsg;
- mpCodeMem = ::mmap(NULL, MaxCodeSize, PROT_READ | PROT_WRITE | PROT_EXEC,
+ mpCodeMem = ::mmap(NULL, MaxCodeSize, PROT_READ | PROT_EXEC,
MAP_PRIVATE | MAP_ANON, -1, 0);
if (mpCodeMem == MAP_FAILED)
llvm::report_fatal_error(
@@ -522,7 +522,7 @@
);
mpGVMem = ::mmap(mpCodeMem, MaxGlobalVarSize,
- PROT_READ | PROT_WRITE | PROT_EXEC,
+ PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANON, -1, 0);
if (mpGVMem == MAP_FAILED)
llvm::report_fatal_error(