summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/RunCMake')
-rw-r--r--Tests/RunCMake/CMakeLists.txt7
-rw-r--r--Tests/RunCMake/execute_process/AnyCommandAbnormalExit-stderr.txt2
-rw-r--r--Tests/RunCMake/execute_process/AnyCommandAbnormalExit.cmake3
-rw-r--r--Tests/RunCMake/execute_process/LastCommandAbnormalExit-1.cmake6
-rw-r--r--Tests/RunCMake/execute_process/LastCommandAbnormalExit-2-stderr.txt2
-rw-r--r--Tests/RunCMake/execute_process/LastCommandAbnormalExit-2.cmake6
-rw-r--r--Tests/RunCMake/execute_process/RunCMakeTest.cmake8
-rw-r--r--Tests/RunCMake/exit_crash.c14
8 files changed, 31 insertions, 17 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 0906f7b..e7df911 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -516,10 +516,15 @@ set_property(TEST RunCMake.add_subdirectory APPEND PROPERTY LABELS "Fortran")
add_RunCMake_test(add_test -DPSEUDO_EMULATOR=$<TARGET_FILE:pseudo_emulator>)
add_RunCMake_test(build_command)
add_executable(exit_code exit_code.c)
+if(NOT CMAKE_C_COMPILER_ID MATCHES "OrangeC|Watcom"
+ AND NOT CMAKE_C_FLAGS MATCHES "-fsanitize=")
+ add_executable(exit_crash exit_crash.c)
+ set(EXIT_CRASH_EXE $<TARGET_FILE:exit_crash>)
+endif()
set(execute_process_ARGS
-DEXIT_CODE_EXE=$<TARGET_FILE:exit_code>
+ -DEXIT_CRASH_EXE=${EXIT_CRASH_EXE}
-DPRINT_STDIN_EXE=$<TARGET_FILE:print_stdin>
- -DPython_EXECUTABLE=${Python_EXECUTABLE}
-DCYGWIN=${CYGWIN}
)
if(NOT CMake_TEST_EXTERNAL_CMAKE)
diff --git a/Tests/RunCMake/execute_process/AnyCommandAbnormalExit-stderr.txt b/Tests/RunCMake/execute_process/AnyCommandAbnormalExit-stderr.txt
index 9627872..b1b0642 100644
--- a/Tests/RunCMake/execute_process/AnyCommandAbnormalExit-stderr.txt
+++ b/Tests/RunCMake/execute_process/AnyCommandAbnormalExit-stderr.txt
@@ -1,4 +1,4 @@
CMake Error at .*AnyCommandAbnormalExit.cmake:[0-9]+ \(execute_process\):
execute_process failed command indexes:
- 1: "Abnormal exit with child return code: Segmentation fault
+ 1: "Abnormal exit with child return code:
diff --git a/Tests/RunCMake/execute_process/AnyCommandAbnormalExit.cmake b/Tests/RunCMake/execute_process/AnyCommandAbnormalExit.cmake
index 1017e0f..ef63778 100644
--- a/Tests/RunCMake/execute_process/AnyCommandAbnormalExit.cmake
+++ b/Tests/RunCMake/execute_process/AnyCommandAbnormalExit.cmake
@@ -1,5 +1,4 @@
-execute_process(COMMAND "${Python_EXECUTABLE}" -c
- "import os; os.kill(os.getpid(),11)"
+execute_process(COMMAND "${EXIT_CRASH_EXE}"
COMMAND ${CMAKE_COMMAND} -E true
COMMAND_ERROR_IS_FATAL ANY
)
diff --git a/Tests/RunCMake/execute_process/LastCommandAbnormalExit-1.cmake b/Tests/RunCMake/execute_process/LastCommandAbnormalExit-1.cmake
index e4a125d..1786d53 100644
--- a/Tests/RunCMake/execute_process/LastCommandAbnormalExit-1.cmake
+++ b/Tests/RunCMake/execute_process/LastCommandAbnormalExit-1.cmake
@@ -1,12 +1,10 @@
-execute_process(COMMAND "${Python_EXECUTABLE}" -c
- "import os; os.kill(os.getpid(),11)"
+execute_process(COMMAND "${EXIT_CRASH_EXE}"
COMMAND ${CMAKE_COMMAND} -E true
RESULT_VARIABLE result
)
if(result EQUAL "0")
- execute_process(COMMAND "${Python_EXECUTABLE}" -c
- "import os; os.kill(os.getpid(),11)"
+ execute_process(COMMAND "${EXIT_CRASH_EXE}"
COMMAND ${CMAKE_COMMAND} -E true
COMMAND_ERROR_IS_FATAL LAST
)
diff --git a/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2-stderr.txt b/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2-stderr.txt
index c915e58..6db023b 100644
--- a/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2-stderr.txt
+++ b/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2-stderr.txt
@@ -1,2 +1,2 @@
CMake Error at .*LastCommandAbnormalExit-2.cmake:[0-9]+ \(execute_process\):
- execute_process Abnormal exit: Segmentation fault
+ execute_process Abnormal exit:
diff --git a/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2.cmake b/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2.cmake
index 6c3fbf8..a0c3aaf 100644
--- a/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2.cmake
+++ b/Tests/RunCMake/execute_process/LastCommandAbnormalExit-2.cmake
@@ -1,13 +1,11 @@
execute_process(COMMAND ${CMAKE_COMMAND} -E true
- COMMAND "${Python_EXECUTABLE}" -c
- "import os; os.kill(os.getpid(),11)"
+ COMMAND "${EXIT_CRASH_EXE}"
RESULT_VARIABLE result
)
if(NOT result EQUAL "0")
execute_process(COMMAND ${CMAKE_COMMAND} -E true
- COMMAND "${Python_EXECUTABLE}" -c
- "import os; os.kill(os.getpid(),11)"
+ COMMAND "${EXIT_CRASH_EXE}"
COMMAND_ERROR_IS_FATAL LAST
)
endif()
diff --git a/Tests/RunCMake/execute_process/RunCMakeTest.cmake b/Tests/RunCMake/execute_process/RunCMakeTest.cmake
index a3a3a9a..f77391a 100644
--- a/Tests/RunCMake/execute_process/RunCMakeTest.cmake
+++ b/Tests/RunCMake/execute_process/RunCMakeTest.cmake
@@ -41,10 +41,10 @@ run_cmake_command(StderrNoexist ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/Stder
run_cmake_command(StdoutStderrNoexist ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/StderrNoexist.cmake)
run_cmake_command(InOutErrDirectory ${CMAKE_COMMAND} -DPRINT_STDIN_EXE=${PRINT_STDIN_EXE} -P ${RunCMake_SOURCE_DIR}/InOutErrDirectory.cmake)
-if(UNIX AND Python_EXECUTABLE)
- run_cmake_command(AnyCommandAbnormalExit ${CMAKE_COMMAND} -DPython_EXECUTABLE=${Python_EXECUTABLE} -P ${RunCMake_SOURCE_DIR}/AnyCommandAbnormalExit.cmake)
- run_cmake_command(LastCommandAbnormalExit-1 ${CMAKE_COMMAND} -DPython_EXECUTABLE=${Python_EXECUTABLE} -P ${RunCMake_SOURCE_DIR}/LastCommandAbnormalExit-1.cmake)
- run_cmake_command(LastCommandAbnormalExit-2 ${CMAKE_COMMAND} -DPython_EXECUTABLE=${Python_EXECUTABLE} -P ${RunCMake_SOURCE_DIR}/LastCommandAbnormalExit-2.cmake)
+if(EXIT_CRASH_EXE)
+ run_cmake_command(AnyCommandAbnormalExit ${CMAKE_COMMAND} -DEXIT_CRASH_EXE=${EXIT_CRASH_EXE} -P ${RunCMake_SOURCE_DIR}/AnyCommandAbnormalExit.cmake)
+ run_cmake_command(LastCommandAbnormalExit-1 ${CMAKE_COMMAND} -DEXIT_CRASH_EXE=${EXIT_CRASH_EXE} -P ${RunCMake_SOURCE_DIR}/LastCommandAbnormalExit-1.cmake)
+ run_cmake_command(LastCommandAbnormalExit-2 ${CMAKE_COMMAND} -DEXIT_CRASH_EXE=${EXIT_CRASH_EXE} -P ${RunCMake_SOURCE_DIR}/LastCommandAbnormalExit-2.cmake)
endif()
if(WIN32 OR CYGWIN)
diff --git a/Tests/RunCMake/exit_crash.c b/Tests/RunCMake/exit_crash.c
new file mode 100644
index 0000000..324ffad
--- /dev/null
+++ b/Tests/RunCMake/exit_crash.c
@@ -0,0 +1,14 @@
+int main(int argc, const char* argv[])
+{
+#ifndef __clang_analyzer__ /* Suppress clang-analyzer warnings */
+ /* Construct an invalid address that cannot be predicted by the
+ compiler/optimizer, and that is not NULL (which is undefined
+ behavior to dereference). */
+ volatile int* invalidAddress = 0;
+ invalidAddress += argc ? 1 : 2;
+ (void)argv;
+ /* Write to the invalid address to cause SIGSEGV or similar. */
+ *invalidAddress = 0;
+#endif
+ return 0;
+}