]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1222 in SNORT/snort3 from tcmalloc to master
authorMichael Altizer (mialtize) <mialtize@cisco.com>
Thu, 10 May 2018 15:50:26 +0000 (11:50 -0400)
committerMichael Altizer (mialtize) <mialtize@cisco.com>
Thu, 10 May 2018 15:50:26 +0000 (11:50 -0400)
Squashed commit of the following:

commit 0c6e8c28eefd2e9148562d5153288ee6b400d367
Author: Michael Altizer <mialtize@cisco.com>
Date:   Wed May 9 17:48:58 2018 -0400

    cmake: Add support for building with tcmalloc

CMakeLists.txt
cmake/FindTCMalloc.cmake [new file with mode: 0644]
cmake/configure_options.cmake
cmake/create_options.cmake
configure_cmake.sh

index 11b0928e346070d311905a20335a72c6ed188673..e6a01fb4575568a1086437bddeaeb40c3184dc60 100644 (file)
@@ -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 (file)
index 0000000..4d06641
--- /dev/null
@@ -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)
index 490016a57d628bef3d34072f7c50bd9631829a4f..135d1cf89278c659cc8f7b2bd20d1fd090b2846c 100644 (file)
@@ -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 ()
index faed938c894277ffb67fa6cc7eaf1d3894978871..71368516f583d38b0627d67ec8b4a365b3d856dc 100644 (file)
@@ -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
index 4690d60a118f979407556e20a715a24477fb0647..bfa535c3e13e5653bec2e5b143470779575bb228 100755 (executable)
@@ -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