summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kledzik <kledzik@apple.com>2010-03-31 19:52:01 +0000
committerNick Kledzik <kledzik@apple.com>2010-03-31 19:52:01 +0000
commitb3d3ec7091de0c7c76545a09daedb68df40fd9d7 (patch)
tree8091f80941a157d8c46af2b172fb7fb72166093f
parent74729ae0940379feff9d4d1ab6652e7c3462ac33 (diff)
downloadbcm5719-llvm-b3d3ec7091de0c7c76545a09daedb68df40fd9d7.tar.gz
bcm5719-llvm-b3d3ec7091de0c7c76545a09daedb68df40fd9d7.zip
<rdar://problem/7813254> check enable_execute_stack implementation
llvm-svn: 100036
-rw-r--r--compiler-rt/lib/enable_execute_stack.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler-rt/lib/enable_execute_stack.c b/compiler-rt/lib/enable_execute_stack.c
index b349d2f312b..193e7dbc23b 100644
--- a/compiler-rt/lib/enable_execute_stack.c
+++ b/compiler-rt/lib/enable_execute_stack.c
@@ -21,6 +21,11 @@
#include <unistd.h>
#endif /* __APPLE__ */
+#if __LP64__
+ #define TRAMPOLINE_SIZE 48
+#else
+ #define TRAMPOLINE_SIZE 40
+#endif
/*
* The compiler generates calls to __enable_execute_stack() when creating
@@ -45,7 +50,7 @@ void __enable_execute_stack(void* addr)
const uintptr_t pageAlignMask = ~(pageSize-1);
uintptr_t p = (uintptr_t)addr;
unsigned char* startPage = (unsigned char*)(p & pageAlignMask);
- unsigned char* endPage = (unsigned char*)((p+48+pageSize) & pageAlignMask);
+ unsigned char* endPage = (unsigned char*)((p+TRAMPOLINE_SIZE+pageSize) & pageAlignMask);
size_t length = endPage - startPage;
(void) mprotect((void *)startPage, length, PROT_READ | PROT_WRITE | PROT_EXEC);
}
OpenPOWER on IntegriCloud