1*4882a593SmuzhiyunFrom 103c00c8d74a1cd87686850212bd93c0e4d59fc9 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com> 3*4882a593SmuzhiyunDate: Wed, 11 Aug 2021 21:34:59 +0200 4*4882a593SmuzhiyunSubject: [PATCH] Add MEDIA_BUILD_HARDENING option 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunAdd MEDIA_BUILD_HARDENING option to allow the user to disable hardening 7*4882a593Smuzhiyunoptions such as stack-protector-all or FORTIFY SOURCE 2 which are not 8*4882a593Smuzhiyunalways available (e.g. fortify source 2 is only available on glibc >= 6 9*4882a593Smuzhiyunand not musl/uclibc-ng) 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunPatch sent upstream: https://github.com/intel/media-driver/pull/1242 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 14*4882a593SmuzhiyunSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> 15*4882a593Smuzhiyun--- 16*4882a593Smuzhiyun cmrtlib/linux/CMakeLists.txt | 14 ++++++++++---- 17*4882a593Smuzhiyun .../cmake/linux/media_compile_flags_linux.cmake | 12 ++++++++++-- 18*4882a593Smuzhiyun media_driver/media_top_cmake.cmake | 8 +++++++- 19*4882a593Smuzhiyun 3 files changed, 27 insertions(+), 7 deletions(-) 20*4882a593Smuzhiyun 21*4882a593Smuzhiyundiff --git a/cmrtlib/linux/CMakeLists.txt b/cmrtlib/linux/CMakeLists.txt 22*4882a593Smuzhiyunindex 65f71ceef..b066138d9 100644 23*4882a593Smuzhiyun--- a/cmrtlib/linux/CMakeLists.txt 24*4882a593Smuzhiyun+++ b/cmrtlib/linux/CMakeLists.txt 25*4882a593Smuzhiyun@@ -32,12 +32,18 @@ else() 26*4882a593Smuzhiyun endif() 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun # Set up compile options that will be used for the Linux build 29*4882a593Smuzhiyun-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive -fstack-protector-all") 30*4882a593Smuzhiyun-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing -D_FORTIFY_SOURCE=2") 31*4882a593Smuzhiyun+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive") 32*4882a593Smuzhiyun+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing") 33*4882a593Smuzhiyun set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0") 34*4882a593Smuzhiyun-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive -fstack-protector-all") 35*4882a593Smuzhiyun-set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing -D_FORTIFY_SOURCE=2") 36*4882a593Smuzhiyun+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive") 37*4882a593Smuzhiyun+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing") 38*4882a593Smuzhiyun set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0") 39*4882a593Smuzhiyun+if(MEDIA_BUILD_HARDENING) 40*4882a593Smuzhiyun+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS} -fstack-protector-all") 41*4882a593Smuzhiyun+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") 42*4882a593Smuzhiyun+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS} -fstack-protector-all") 43*4882a593Smuzhiyun+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2") 44*4882a593Smuzhiyun+endif() 45*4882a593Smuzhiyun if(MEDIA_BUILD_FATAL_WARNINGS) 46*4882a593Smuzhiyun set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS} -Werror") 47*4882a593Smuzhiyun set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS} -Werror") 48*4882a593Smuzhiyundiff --git a/media_driver/cmake/linux/media_compile_flags_linux.cmake b/media_driver/cmake/linux/media_compile_flags_linux.cmake 49*4882a593Smuzhiyunindex 7a2bd64b6..98896b131 100755 50*4882a593Smuzhiyun--- a/media_driver/cmake/linux/media_compile_flags_linux.cmake 51*4882a593Smuzhiyun+++ b/media_driver/cmake/linux/media_compile_flags_linux.cmake 52*4882a593Smuzhiyun@@ -47,7 +47,6 @@ set(MEDIA_COMPILER_FLAGS_COMMON 53*4882a593Smuzhiyun # Other common flags 54*4882a593Smuzhiyun -fmessage-length=0 55*4882a593Smuzhiyun -fvisibility=hidden 56*4882a593Smuzhiyun- -fstack-protector 57*4882a593Smuzhiyun -fdata-sections 58*4882a593Smuzhiyun -ffunction-sections 59*4882a593Smuzhiyun -Wl,--gc-sections 60*4882a593Smuzhiyun@@ -64,6 +63,11 @@ set(MEDIA_COMPILER_FLAGS_COMMON 61*4882a593Smuzhiyun -g 62*4882a593Smuzhiyun ) 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun+if(MEDIA_BUILD_HARDENING) 65*4882a593Smuzhiyun+ set(MEDIA_COMPILER_FLAGS_COMMON 66*4882a593Smuzhiyun+ ${MEDIA_COMPILER_FLAGS_COMMON} 67*4882a593Smuzhiyun+ -fstack-protector) 68*4882a593Smuzhiyun+endif() 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun if(${UFO_MARCH} STREQUAL "slm") 71*4882a593Smuzhiyun set(MEDIA_COMPILER_FLAGS_COMMON 72*4882a593Smuzhiyun@@ -119,9 +123,13 @@ if(${UFO_VARIANT} STREQUAL "default") 73*4882a593Smuzhiyun set(MEDIA_COMPILER_FLAGS_RELEASE 74*4882a593Smuzhiyun ${MEDIA_COMPILER_FLAGS_RELEASE} 75*4882a593Smuzhiyun -O2 76*4882a593Smuzhiyun- -D_FORTIFY_SOURCE=2 77*4882a593Smuzhiyun -fno-omit-frame-pointer 78*4882a593Smuzhiyun ) 79*4882a593Smuzhiyun+ if(MEDIA_BUILD_HARDENING) 80*4882a593Smuzhiyun+ set(MEDIA_COMPILER_FLAGS_RELEASE 81*4882a593Smuzhiyun+ ${MEDIA_COMPILER_FLAGS_RELEASE} 82*4882a593Smuzhiyun+ -D_FORTIFY_SOURCE=2) 83*4882a593Smuzhiyun+ endif() 84*4882a593Smuzhiyun endif() 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun if(NOT ${PLATFORM} STREQUAL "android") 87*4882a593Smuzhiyundiff --git a/media_driver/media_top_cmake.cmake b/media_driver/media_top_cmake.cmake 88*4882a593Smuzhiyunindex f089ea45f..b0b428914 100755 89*4882a593Smuzhiyun--- a/media_driver/media_top_cmake.cmake 90*4882a593Smuzhiyun+++ b/media_driver/media_top_cmake.cmake 91*4882a593Smuzhiyun@@ -111,7 +111,13 @@ if(MEDIA_BUILD_FATAL_WARNINGS) 92*4882a593Smuzhiyun set_target_properties(${LIB_NAME_OBJ} PROPERTIES COMPILE_FLAGS "-Werror") 93*4882a593Smuzhiyun endif() 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun-set_target_properties(${LIB_NAME} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed -Wl,--gc-sections -z relro -z now -fstack-protector -fPIC") 96*4882a593Smuzhiyun+set(MEDIA_LINK_FLAGS "-Wl,--no-as-needed -Wl,--gc-sections -z relro -z now -fPIC") 97*4882a593Smuzhiyun+option(MEDIA_BUILD_HARDENING "Enable hardening (stack-protector, fortify source)" ON) 98*4882a593Smuzhiyun+if(MEDIA_BUILD_HARDENING) 99*4882a593Smuzhiyun+ set(MEDIA_LINK_FLAGS "${MEDIA_LINK_FLAGS} -fstack-protector") 100*4882a593Smuzhiyun+endif() 101*4882a593Smuzhiyun+set_target_properties(${LIB_NAME} PROPERTIES LINK_FLAGS ${MEDIA_LINK_FLAGS}) 102*4882a593Smuzhiyun+ 103*4882a593Smuzhiyun set_target_properties(${LIB_NAME} PROPERTIES PREFIX "") 104*4882a593Smuzhiyun set_target_properties(${LIB_NAME_STATIC} PROPERTIES PREFIX "") 105*4882a593Smuzhiyun 106