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);

Reply via email to