Date: Tuesday, October 3, 2017 @ 15:54:38 Author: arojas Revision: 261399
Add missing patch (FS#55848) Added: heaptrack/trunk/heaptrack-glibc-2.26.patch ----------------------------+ heaptrack-glibc-2.26.patch | 114 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) Added: heaptrack-glibc-2.26.patch =================================================================== --- heaptrack-glibc-2.26.patch (rev 0) +++ heaptrack-glibc-2.26.patch 2017-10-03 15:54:38 UTC (rev 261399) @@ -0,0 +1,114 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8cc25bd..5df5f4d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -73,6 +73,11 @@ if (NOT HAVE_LINUX_HEADERS) + message(FATAL_ERROR "You are missing some Linux headers required to compile heaptrack.") + endif() + ++# cfree() does not exist in glibc 2.26+. ++# See: https://bugs.kde.org/show_bug.cgi?id=383889 ++include(CheckSymbolExists) ++check_symbol_exists(cfree malloc.h HAVE_CFREE) ++ + set(BIN_INSTALL_DIR "bin") + set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)") + set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}") +diff --git a/src/track/heaptrack_inject.cpp b/src/track/heaptrack_inject.cpp +index 0bf75f8..2956613 100644 +--- a/src/track/heaptrack_inject.cpp ++++ b/src/track/heaptrack_inject.cpp +@@ -18,6 +18,7 @@ + */ + + #include "libheaptrack.h" ++#include "util/config.h" + + #include <cstdlib> + #include <cstring> +@@ -43,12 +44,6 @@ + #error unsupported word size + #endif + +-#if defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || defined(__USE_MISC) +-#define HAVE_CFREE 1 +-#else +-#define HAVE_CFREE 0 +-#endif +- + namespace { + + namespace Elf { +diff --git a/src/track/heaptrack_preload.cpp b/src/track/heaptrack_preload.cpp +index b106bcd..343b193 100644 +--- a/src/track/heaptrack_preload.cpp ++++ b/src/track/heaptrack_preload.cpp +@@ -18,6 +18,7 @@ + */ + + #include "libheaptrack.h" ++#include "util/config.h" + + #include <cstdio> + #include <cstdlib> +@@ -30,7 +31,6 @@ + using namespace std; + + #define HAVE_ALIGNED_ALLOC defined(_ISOC11_SOURCE) +-#define HAVE_CFREE (defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || defined(__USE_MISC)) + + namespace { + +diff --git a/src/util/config.h.cmake b/src/util/config.h.cmake +index d24034a..8239ae3 100644 +--- a/src/util/config.h.cmake ++++ b/src/util/config.h.cmake +@@ -30,4 +30,8 @@ + + #define HEAPTRACK_DEBUG_BUILD @HEAPTRACK_DEBUG_BUILD@ + ++// cfree() does not exist in glibc 2.26+. ++// See: https://bugs.kde.org/show_bug.cgi?id=383889 ++#cmakedefine01 HAVE_CFREE ++ + #endif // HEAPTRACK_CONFIG_H +diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt +index 63f9526..4bbbbb6 100644 +--- a/tests/manual/CMakeLists.txt ++++ b/tests/manual/CMakeLists.txt +@@ -2,6 +2,10 @@ set(CMAKE_BUILD_TYPE Debug) + + add_executable(test_c test.c) + add_executable(test_cpp test.cpp) ++set_target_properties(test_cpp PROPERTIES ++ INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/../../src/ ++) ++ + add_executable(threaded threaded.cpp) + target_link_libraries(threaded ${CMAKE_THREAD_LIBS_INIT}) + +diff --git a/tests/manual/test.cpp b/tests/manual/test.cpp +index e3f1870..1e9c267 100644 +--- a/tests/manual/test.cpp ++++ b/tests/manual/test.cpp +@@ -1,6 +1,8 @@ + #include <cstdio> + #include <cstdlib> + ++#include "util/config.h" ++ + #define HAVE_ALIGNED_ALLOC defined(_ISOC11_SOURCE) + + struct Foo +@@ -60,7 +62,11 @@ int main() + + buf = calloc(5, 5); + printf("calloc: %p\n", buf); ++#if HAVE_CFREE + cfree(buf); ++#else ++ free(buf); ++#endif + + #if HAVE_ALIGNED_ALLOC + buf = aligned_alloc(16, 160);