Separate build type specialized for debugging memory leaks.
Example usage with GBS for Tizen:
$ gbs build --define "build_type VALGRIND"
Change-Id: I7e150609021508541427ff009fa28b97a6004daf
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
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
-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)
--- /dev/null
+[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