add relro linker tests (issue 663)
authorkoda
Sat, 08 Jun 2013 01:56:23 +0200
changeset 9153 354a9803fe91
parent 9152 c884e40dca9e
child 9154 a43406054648
add relro linker tests (issue #663)
cmake_modules/compilerchecks.cmake
--- a/cmake_modules/compilerchecks.cmake	Sat Jun 08 01:52:32 2013 +0200
+++ b/cmake_modules/compilerchecks.cmake	Sat Jun 08 01:56:23 2013 +0200
@@ -12,6 +12,22 @@
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_REQUIRED_FLAGS}")
 endif()
 
+#check for full relro on ELF, Debian security
+set(CMAKE_REQUIRED_FLAGS "-Wl,-z,relro,-z,now")
+check_c_compiler_flag("" HAVE_RELROFULL)
+if(HAVE_RELROFULL)
+    list(APPEND pascal_flags "-k-z" "-krelro" "-k-z" "-know")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_REQUIRED_FLAGS}")
+else()
+    #if full relro is not available, try partial relro
+    set(CMAKE_REQUIRED_FLAGS "-Wl,-z,relro")
+    check_c_compiler_flag("" HAVE_RELROPARTIAL)
+    if(HAVE_RELROPARTIAL)
+        list(APPEND pascal_flags "-k-z" "-krelro")
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_REQUIRED_FLAGS}")
+    endif()
+endif()
+
 #check for ASLR on Windows Vista or later, requires binutils >= 2.20
 set(CMAKE_REQUIRED_FLAGS "-Wl,--nxcompat")
 check_c_compiler_flag("" HAVE_WINASLR)