summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafal Krypa <r.krypa@samsung.com>2016-12-30 14:49:03 +0100
committerRafal Krypa <r.krypa@samsung.com>2017-03-28 09:42:49 +0200
commit4316f0ffd0b6852e774645a98df4d357025bd814 (patch)
tree4199c9035fee04119c86fc82c2c00e9b912ff095
parentd356e5bd5348d9ce762b42a74dffb99c10f13ed2 (diff)
downloadsecurity-manager-4316f0ffd0b6852e774645a98df4d357025bd814.tar.gz
security-manager-4316f0ffd0b6852e774645a98df4d357025bd814.tar.bz2
security-manager-4316f0ffd0b6852e774645a98df4d357025bd814.zip
Add "VALGRIND" build type
Separate build type specialized for debugging memory leaks. Example usage with GBS for Tizen: $ gbs build --define "build_type VALGRIND" Change-Id: I7e150609021508541427ff009fa28b97a6004daf
-rw-r--r--CMakeLists.txt1
-rw-r--r--packaging/security-manager.spec3
-rw-r--r--systemd/CMakeLists.txt7
-rw-r--r--systemd/security-manager-valgrind.service.in15
4 files changed, 25 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 77a6a358..d3d885a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,6 +62,7 @@ SET(CMAKE_CXX_FLAGS_PROFILING "-g -std=c++0x -O0 -pg -Wp,-U_FORTIFY_SOURCE")
SET(CMAKE_CXX_FLAGS_DEBUG "-g -std=c++0x -O0 -ggdb -Wp,-U_FORTIFY_SOURCE")
SET(CMAKE_CXX_FLAGS_RELEASE "-g -std=c++0x -O2")
SET(CMAKE_CXX_FLAGS_CCOV "-g -std=c++0x -O2 --coverage")
+SET(CMAKE_CXX_FLAGS_VALGRIND "-ggdb -std=c++0x -O0 -fno-inline -Wp,-U_FORTIFY_SOURCE")
# If supported for the target machine, emit position-independent code,suitable
# for dynamic linking and avoiding any limit on the size of the global offset
diff --git a/packaging/security-manager.spec b/packaging/security-manager.spec
index a03f207b..8d24815a 100644
--- a/packaging/security-manager.spec
+++ b/packaging/security-manager.spec
@@ -11,6 +11,9 @@ Source4: libnss-security-manager.manifest
Source5: security-manager-tests.manifest
Requires: security-manager-policy
Requires: nether
+%if "%{build_type}" == "VALGRIND"
+Requires: valgrind
+%endif
Requires(post): sqlite3
Requires(post): smack
BuildRequires: cmake
diff --git a/systemd/CMakeLists.txt b/systemd/CMakeLists.txt
index 8d0a1aa8..3e20c9b5 100644
--- a/systemd/CMakeLists.txt
+++ b/systemd/CMakeLists.txt
@@ -1,4 +1,9 @@
-CONFIGURE_FILE(security-manager.service.in security-manager.service @ONLY)
+IF(CMAKE_BUILD_TYPE MATCHES "VALGRIND")
+ CONFIGURE_FILE(security-manager-valgrind.service.in security-manager.service @ONLY)
+ELSE()
+ CONFIGURE_FILE(security-manager.service.in security-manager.service @ONLY)
+ENDIF()
+
CONFIGURE_FILE(security-manager-cleanup.service.in security-manager-cleanup.service @ONLY)
CONFIGURE_FILE(security-manager-rules-loader.service.in security-manager-rules-loader.service @ONLY)
diff --git a/systemd/security-manager-valgrind.service.in b/systemd/security-manager-valgrind.service.in
new file mode 100644
index 00000000..ad02fcf3
--- /dev/null
+++ b/systemd/security-manager-valgrind.service.in
@@ -0,0 +1,15 @@
+[Unit]
+Description=Start the security manager
+Before=dbus.service
+
+[Service]
+Type=notify
+Environment="GLIBCXX_FORCE_NEW=1"
+ExecStart=@BIN_INSTALL_DIR@/valgrind -v --tool=memcheck --log-file=/tmp/security-manager.valgrind.%%p.log --num-callers=20 --leak-resolution=high --leak-check=full --show-reachable=yes --track-origins=yes @BIN_INSTALL_DIR@/security-manager
+#ExecStart=@BIN_INSTALL_DIR@/valgrind -v --tool=massif --log-file=/tmp/security-manager.valgrind.%%p.log --massif-out-file=/tmp/security-manager.massif.%%p.log @BIN_INSTALL_DIR@/security-manager
+Sockets=security-manager.socket
+Restart=always
+SmackProcessLabel=System::Privileged
+
+[Install]
+WantedBy=dbus.service