1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
Forwarded: https://github.com/MariaDB/server/pull/1716
From 8c1608a68c57c98cdd695996d44663faca01ddd3 Mon Sep 17 00:00:00 2001
From: Vicentiu Ciorbaru <vicentiu@debian>
Date: Wed, 28 Nov 2018 18:01:04 +0200
Subject: [PATCH] Fix mips compilation failure (__bss_start symbol missing)
__bss_start symbol fails to link if -lsystemd is used. There is no
obvious reason why this happens but the code using it is only relevant
when doing a crash report and it is covered through a separate print
statement anyway (used to print THD->query()).
To fix the compilation problem, just check if we will link with systemd
before checking __bss_start symbol, and add -lsystemd as a required library.
This will reproduce the compilation environment used for the final binary
and will correctly detect if __bss_start will be available or not.
---
CMakeLists.txt | 4 ++--
cmake/systemd.cmake | 2 ++
configure.cmake | 3 +++
3 files changed, 7 insertions(+), 2 deletions(-)
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -363,6 +363,8 @@ ELSE()
SET(DEFAULT_TMPDIR "\"${TMPDIR}\"")
ENDIF()
+CHECK_SYSTEMD()
+
# Run platform tests
INCLUDE(configure.cmake)
@@ -394,8 +396,6 @@ SET(MALLOC_LIBRARY "system")
CHECK_PCRE()
-CHECK_SYSTEMD()
-
IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
INCLUDE(${IMPORT_EXECUTABLES})
--- a/cmake/systemd.cmake
+++ b/cmake/systemd.cmake
@@ -17,6 +17,9 @@ MACRO(CHECK_SYSTEMD)
IF(UNIX)
INCLUDE(FindPkgConfig)
# http://www.cmake.org/cmake/help/v3.0/module/FindPkgConfig.html
+ INCLUDE(CheckFunctionExists)
+ INCLUDE(CheckIncludeFiles)
+
SET(WITH_SYSTEMD "auto" CACHE STRING "Enable systemd scripts and notification support")
IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto")
IF(PKG_CONFIG_FOUND)
--- a/configure.cmake
+++ b/configure.cmake
@@ -139,6 +139,9 @@ IF(UNIX)
SET(CMAKE_REQUIRED_LIBRARIES
${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO})
+ IF (HAVE_SYSTEMD)
+ LIST(APPEND CMAKE_REQUIRED_LIBRARIES -lsystemd)
+ ENDIF()
# Need explicit pthread for gcc -fsanitize=address
IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} pthread)
|