summaryrefslogtreecommitdiffstats
path: root/abs/extra/community/chromium/glibc-2.14.patch
blob: 1bfbbeefb52c449da923bb70e7457fb4c96c28b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
--- trunk/src/third_party/tcmalloc/chromium/src/tcmalloc.cc	2011/06/21 07:36:46	89799
+++ trunk/src/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 -----------------------------------