diff options
| -rw-r--r-- | compiler-rt/ConfigureChecks.cmake | 2 | ||||
| -rw-r--r-- | compiler-rt/lib/enable_execute_stack.c | 14 | 
2 files changed, 12 insertions, 4 deletions
diff --git a/compiler-rt/ConfigureChecks.cmake b/compiler-rt/ConfigureChecks.cmake index 57ae7909c1f..8b027bc3897 100644 --- a/compiler-rt/ConfigureChecks.cmake +++ b/compiler-rt/ConfigureChecks.cmake @@ -11,4 +11,4 @@ SET( SOURCEDIR ${CMAKE_SOURCE_DIR} )  CHECK_INCLUDE_FILE( sys/byteorder.h HAVE_SYS_BYTEORDER_H )  # FUNCTIONS -#CHECK_FUNCTION_EXISTS( strlcpy HAVE_STRLCPY ) +CHECK_FUNCTION_EXISTS( sysconf HAVE_SYSCONF ) diff --git a/compiler-rt/lib/enable_execute_stack.c b/compiler-rt/lib/enable_execute_stack.c index 6f17c9b9528..07c1645ce76 100644 --- a/compiler-rt/lib/enable_execute_stack.c +++ b/compiler-rt/lib/enable_execute_stack.c @@ -10,9 +10,14 @@  #include <stdint.h>  #include <sys/mman.h> + +/* #include "config.h" + * FIXME: CMake - include when cmake system is ready. + */ +  #ifndef __APPLE__  #include <unistd.h> -#endif +#endif /* __APPLE__ */  /* @@ -25,13 +30,16 @@  void __enable_execute_stack(void* addr)  { +  #if __APPLE__  	/* On Darwin, pagesize is always 4096 bytes */  	const uintptr_t pageSize = 4096; +#elif !defined(HAVE_SYSCONF) +#error "HAVE_SYSCONF not defined! See enable_execute_stack.c"  #else -        /* FIXME: We should have a configure check for this. */          const uintptr_t pageSize = sysconf(_SC_PAGESIZE); -#endif +#endif /* __APPLE__ */ +  	const uintptr_t pageAlignMask = ~(pageSize-1);  	uintptr_t p = (uintptr_t)addr;  	unsigned char* startPage = (unsigned char*)(p & pageAlignMask);  | 

