void-packages/srcpkgs/chromium/patches/glibc-2.14.patch
2011-08-10 11:21:31 +02:00

51 lines
1.7 KiB
Diff

--- third_party/tcmalloc/chromium/src/tcmalloc.cc 2011/06/21 07:36:46 89799
+++ third_party/tcmalloc/chromium/src/tcmalloc.cc 2011/06/21 07:37:01 89800
@@ -150,6 +150,13 @@
# define WIN32_DO_PATCHING 1
#endif
+// GLibc 2.14+ requires the hook functions be declared volatile, based on the
+// value of the define __MALLOC_HOOK_VOLATILE. For compatibility with
+// older/non-GLibc implementations, provide an empty definition.
+#if !defined(__MALLOC_HOOK_VOLATILE)
+#define __MALLOC_HOOK_VOLATILE
+#endif
+
using std::max;
using tcmalloc::PageHeap;
using tcmalloc::SizeMap;
@@ -403,7 +410,7 @@
return tc_malloc(size);
}
-void* (*__malloc_hook)(
+void* (*__MALLOC_HOOK_VOLATILE __malloc_hook)(
size_t size, const void* caller) = tc_ptmalloc_malloc_hook;
static void* tc_ptmalloc_realloc_hook(
@@ -411,14 +418,14 @@
return tc_realloc(ptr, size);
}
-void* (*__realloc_hook)(
+void* (*__MALLOC_HOOK_VOLATILE __realloc_hook)(
void* ptr, size_t size, const void* caller) = tc_ptmalloc_realloc_hook;
static void tc_ptmalloc_free_hook(void* ptr, const void* caller) {
tc_free(ptr);
}
-void (*__free_hook)(void* ptr, const void* caller) = tc_ptmalloc_free_hook;
+void (*__MALLOC_HOOK_VOLATILE __free_hook)(void* ptr, const void* caller) = tc_ptmalloc_free_hook;
#endif
@@ -1757,7 +1764,7 @@
MallocHook::InvokeNewHook(result, size);
return result;
}
-void *(*__memalign_hook)(size_t, size_t, const void *) = MemalignOverride;
+void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t, size_t, const void *) = MemalignOverride;
#endif // #ifndef TCMALLOC_FOR_DEBUGALLOCATION
// ---Double free() debugging implementation -----------------------------------