From: Michael Altizer (mialtize) Date: Thu, 10 May 2018 15:50:26 +0000 (-0400) Subject: Merge pull request #1222 in SNORT/snort3 from tcmalloc to master X-Git-Tag: 3.0.0-245~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd1e4c8b4fe08362be03a43885c8f063773acc6c;p=thirdparty%2Fsnort3.git Merge pull request #1222 in SNORT/snort3 from tcmalloc to master Squashed commit of the following: commit 0c6e8c28eefd2e9148562d5153288ee6b400d367 Author: Michael Altizer Date: Wed May 9 17:48:58 2018 -0400 cmake: Add support for building with tcmalloc --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 11b0928e3..e6a01fb45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,6 +133,14 @@ else () SafeC: OFF") endif () +if (HAVE_TCMALLOC) + message("\ + TCMalloc: ON") +else () + message("\ + TCMalloc: OFF") +endif () + if (HAVE_UUID) message("\ UUID: ON") diff --git a/cmake/FindTCMalloc.cmake b/cmake/FindTCMalloc.cmake new file mode 100644 index 000000000..4d0664129 --- /dev/null +++ b/cmake/FindTCMalloc.cmake @@ -0,0 +1,11 @@ + +find_package(PkgConfig) +pkg_check_modules(PC_TCMALLOC libtcmalloc) + +find_library(TCMALLOC_LIBRARIES NAMES tcmalloc tcmalloc_minimal + HINTS ${PC_TCMALLOC_LIBDIR} ${PC_TCMALLOC_LIBRARY_DIRS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(TCMalloc REQUIRED_VARS TCMALLOC_LIBRARIES VERSION_VAR PC_TCMALLOC_VERSION) + +mark_as_advanced(TCMALLOC_CFLAGS TCMALLOC_LIBRARIES) diff --git a/cmake/configure_options.cmake b/cmake/configure_options.cmake index 490016a57..135d1cf89 100644 --- a/cmake/configure_options.cmake +++ b/cmake/configure_options.cmake @@ -157,6 +157,15 @@ if ( ENABLE_UB_SANITIZER ) endif () endif ( ENABLE_UB_SANITIZER ) +if ( ENABLE_TCMALLOC ) + if ( ENABLE_ADDRESS_SANITIZER ) + message ( SEND_ERROR "TCMalloc cannot be used at the same time as address sanitizer!" ) + endif () + find_package ( TCMalloc REQUIRED ) + set ( TCMALLOC_C_FLAGS "-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free" ) + set ( HAVE_TCMALLOC "1" ) +endif ( ENABLE_TCMALLOC ) + if ( ENABLE_CODE_COVERAGE ) include(${CMAKE_MODULE_PATH}/CodeCoverage.cmake) endif ( ENABLE_CODE_COVERAGE ) @@ -173,11 +182,13 @@ message(" COVERAGE_COMPILER_FLAGS = ${COVERAGE_COMPILER_FLAGS} COVERAGE_LINKER_FLAGS = ${COVERAGE_LINKER_FLAGS} COVERAGE_LIBRARIES = ${COVERAGE_LIBRARIES} + TCMALLOC_C_FLAGS = ${TCMALLOC_C_FLAGS} + TCMALLOC_LIBRARIES = ${TCMALLOC_LIBRARIES} ") ]] -set ( EXTRA_C_FLAGS "${EXTRA_C_FLAGS} ${HARDENED_CXX_FLAGS} ${DEBUGGING_C_FLAGS} ${SANITIZER_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" ) -set ( EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} ${HARDENED_CXX_FLAGS} ${DEBUGGING_C_FLAGS} ${SANITIZER_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" ) +set ( EXTRA_C_FLAGS "${EXTRA_C_FLAGS} ${HARDENED_CXX_FLAGS} ${DEBUGGING_C_FLAGS} ${SANITIZER_CXX_FLAGS} ${TCMALLOC_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" ) +set ( EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS} ${HARDENED_CXX_FLAGS} ${DEBUGGING_C_FLAGS} ${SANITIZER_CXX_FLAGS} ${TCMALLOC_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" ) set ( EXTRA_LINKER_FLAGS "${EXTRA_LINKER_FLAGS} ${HARDENED_LINKER_FLAGS} ${SANITIZER_LINKER_FLAGS} ${COVERAGE_LINKER_FLAGS}" ) -foreach (EXTRA_LIBRARY IN LISTS COVERAGE_LIBRARIES) +foreach (EXTRA_LIBRARY IN LISTS COVERAGE_LIBRARIES TCMALLOC_LIBRARIES ) list ( APPEND EXTRA_LIBRARIES ${EXTRA_LIBRARY} ) endforeach () diff --git a/cmake/create_options.cmake b/cmake/create_options.cmake index faed938c8..71368516f 100644 --- a/cmake/create_options.cmake +++ b/cmake/create_options.cmake @@ -44,6 +44,7 @@ option ( ENABLE_PROFILE "Enable profiling options (developers only)" OFF ) option ( ENABLE_ADDRESS_SANITIZER "enable address sanitizer support" OFF ) option ( ENABLE_THREAD_SANITIZER "enable thread sanitizer support" OFF ) option ( ENABLE_UB_SANITIZER "enable undefined behavior sanitizer support" OFF ) +option ( ENABLE_TCMALLOC "enable using tcmalloc for dynamic memory management" OFF ) option ( ENABLE_CODE_COVERAGE "Whether to enable code coverage support" OFF ) # signals diff --git a/configure_cmake.sh b/configure_cmake.sh index 4690d60a1..bfa535c3e 100755 --- a/configure_cmake.sh +++ b/configure_cmake.sh @@ -56,6 +56,8 @@ Optional Features: enable thread sanitizer support --enable-ub-sanitizer enable undefined behavior sanitizer support + --enable-tcmalloc + enable using tcmalloc for dynamic memory management --enable-appid-third-party enable third party appid --enable-unit-tests build unit tests @@ -277,13 +279,19 @@ while [ $# -ne 0 ]; do append_cache_entry ENABLE_THREAD_SANITIZER BOOL false ;; --enable-ub-sanitizer) - append_cache_entry ENABLE_UB_SANITIZER BOOL true + append_cache_entry ENABLE_UB_SANITIZER BOOL true ;; --disable-ub-sanitizer) - append_cache_entry ENABLE_UB_SANITIZER BOOL false + append_cache_entry ENABLE_UB_SANITIZER BOOL false + ;; + --enable-tcmalloc) + append_cache_entry ENABLE_TCMALLOC BOOL true + ;; + --disable-tcmalloc) + append_cache_entry ENABLE_TCMALLOC BOOL false ;; --enable-appid-third-party) - append_cache_entry ENABLE_APPID_THIRD_PARTY BOOL true + append_cache_entry ENABLE_APPID_THIRD_PARTY BOOL true ;; --enable-unit-tests) append_cache_entry ENABLE_UNIT_TESTS BOOL true