glibc-2.14 changed the _hook prototypes with a volatile pointer. Submitted upstream: http://code.google.com/p/chromium/issues/detail?id=86646 --- third_party/tcmalloc/chromium/src/tcmalloc.cc.orig 2011-06-18 10:29:01.407015864 +0200 +++ third_party/tcmalloc/chromium/src/tcmalloc.cc 2011-06-18 10:29:32.305013564 +0200 @@ -375,7 +375,7 @@ static void* tc_ptmalloc_malloc_hook(siz return tc_malloc(size); } -void* (*__malloc_hook)( +void* (* volatile __malloc_hook)( size_t size, const void* caller) = tc_ptmalloc_malloc_hook; static void* tc_ptmalloc_realloc_hook( @@ -383,14 +383,14 @@ static void* tc_ptmalloc_realloc_hook( return tc_realloc(ptr, size); } -void* (*__realloc_hook)( +void* (* 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 (* volatile __free_hook)(void* ptr, const void* caller) = tc_ptmalloc_free_hook; #endif @@ -1584,7 +1584,7 @@ static void *MemalignOverride(size_t ali MallocHook::InvokeNewHook(result, size); return result; } -void *(*__memalign_hook)(size_t, size_t, const void *) = MemalignOverride; +void *(* volatile __memalign_hook)(size_t, size_t, const void *) = MemalignOverride; #endif // #ifndef TCMALLOC_FOR_DEBUGALLOCATION // ---Double free() debugging implementation -----------------------------------