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