@@ -35,30 +35,32 @@ include(CMakePushCheckState)
3535add_library (zend_fibers INTERFACE )
3636add_library (Zend::Fibers ALIAS zend_fibers)
3737
38- message (CHECK_START "Whether syscall to create shadow stack exists" )
39- cmake_push_check_state(RESET)
40- set (CMAKE_REQUIRED_QUIET TRUE )
41-
42- check_source_runs(C [[
43- #include <unistd.h>
44- #include <sys/mman.h>
45- int main(void)
46- {
47- void* base = (void *)syscall(451, 0, 0x20000, 0x1);
48- if (base != (void*)-1) {
49- munmap(base, 0x20000);
50- return 0;
38+ if (NOT DEFINED SHADOW_STACK_SYSCALL)
39+ message (CHECK_START "Whether syscall to create shadow stack exists" )
40+ cmake_push_check_state(RESET)
41+ set (CMAKE_REQUIRED_QUIET TRUE )
42+
43+ check_source_runs(C [[
44+ #include <unistd.h>
45+ #include <sys/mman.h>
46+ int main(void)
47+ {
48+ void* base = (void *)syscall(451, 0, 0x20000, 0x1);
49+ if (base != (void*)-1) {
50+ munmap(base, 0x20000);
51+ return 0;
52+ }
53+ return 1;
5154 }
52- return 1;
53- }
54- ]] SHADOW_STACK_SYSCALL)
55- cmake_pop_check_state()
56- if (SHADOW_STACK_SYSCALL)
57- message (CHECK_PASS "yes" )
58- else ()
59- # If the syscall doesn't exist, we may block the final ELF from
60- # __PROPERTY_SHSTK via redefine macro as "-D__CET__=1".
61- message (CHECK_FAIL "no" )
55+ ]] SHADOW_STACK_SYSCALL)
56+ cmake_pop_check_state()
57+ if (SHADOW_STACK_SYSCALL)
58+ message (CHECK_PASS "yes" )
59+ else ()
60+ # If the syscall doesn't exist, we may block the final ELF from
61+ # __PROPERTY_SHSTK via redefine macro as "-D__CET__=1".
62+ message (CHECK_FAIL "no" )
63+ endif ()
6264endif ()
6365
6466block()
0 commit comments