Line 0
Link Here
|
|
|
1 |
From b7d677ac9a99ee137c2b8bb75503ce1156a7b650 Mon Sep 17 00:00:00 2001 |
2 |
From: "Tobias C. Berner" <tcberner@FreeBSD.org> |
3 |
Date: Wed, 26 Dec 2018 11:37:55 +0100 |
4 |
Subject: [PATCH] FreeBSD: lld does not support -Wl,-z,nodump |
5 |
|
6 |
--- |
7 |
CMakeLists.txt | 6 +++++- |
8 |
cmake/modules/CheckNodump.cmake | 23 +++++++++++++++++++++++ |
9 |
2 files changed, 28 insertions(+), 1 deletion(-) |
10 |
create mode 100644 cmake/modules/CheckNodump.cmake |
11 |
|
12 |
diff --git CMakeLists.txt CMakeLists.txt |
13 |
index c8e9b3715..5e4e4ceae 100644 |
14 |
--- CMakeLists.txt |
15 |
+++ CMakeLists.txt |
16 |
@@ -295,8 +295,12 @@ IF (UNIX OR APPLE OR ANDROID) |
17 |
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SEC_COMP_FLAGS}") |
18 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEC_COMP_FLAGS}") |
19 |
SET(SEC_LINK_FLAGS "") |
20 |
+ |
21 |
+ include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/CheckNodump.cmake") |
22 |
+ check_nodump(NODUMP_FLAGS) |
23 |
+ |
24 |
IF (NOT APPLE) |
25 |
- SET(SEC_LINK_FLAGS "${SEC_LINK_FLAGS} -Wl,-z,nodump -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") |
26 |
+ SET(SEC_LINK_FLAGS "${SEC_LINK_FLAGS} ${NODUMP_FLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") |
27 |
ENDIF () |
28 |
IF (NOT ANDROID AND NOT APPLE) |
29 |
SET(SEC_LINK_FLAGS "${SEC_LINK_FLAGS} -pie") |
30 |
diff --git cmake/modules/CheckNodump.cmake cmake/modules/CheckNodump.cmake |
31 |
new file mode 100644 |
32 |
index 000000000..a04bc074b |
33 |
--- /dev/null |
34 |
+++ cmake/modules/CheckNodump.cmake |
35 |
@@ -0,0 +1,23 @@ |
36 |
+# Check if the linker supports -Wl,z,nodump |
37 |
+ |
38 |
+function(check_nodump result) |
39 |
+ set(NODUMP_FLAGS "-Wl,-z,nodump") |
40 |
+ cmake_policy(SET CMP0056 NEW) |
41 |
+ set(CMAKE_EXE_LINKER_FLAGS "${NODUMP_FLAGS}") |
42 |
+ set(TEST_PROGRAM "int main() { return 0 ; }") |
43 |
+ set(TEST_FILE "${CMAKE_CURRENT_BINARY_DIR}/test_nodump.cc") |
44 |
+ file(WRITE "${TEST_FILE}" "${TEST_PROGRAM}") |
45 |
+ |
46 |
+ message(STATUS "Checking whether the linker supports ${NODUMP_FLAGS} ...") |
47 |
+ try_compile(SUPPORT_NODUMP |
48 |
+ "${CMAKE_CURRENT_BINARY_DIR}/try_has_nodump" |
49 |
+ "${TEST_FILE}" |
50 |
+ ) |
51 |
+ message(STATUS " suports ${NODUMP_FLAGS}: ${SUPPORT_NODUMP}") |
52 |
+ |
53 |
+ if(SUPPORT_NODUMP) |
54 |
+ set(${result} "${NODUMP_FLAGS}") |
55 |
+ else() |
56 |
+ set(${result} "") |
57 |
+ endif() |
58 |
+endfunction() |
59 |
-- |
60 |
2.20.1 |
61 |
|