From 6f6d157c55b6973f0a557b65269b212d9dcd1fbe Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 30 May 2016 23:34:23 +0200 Subject: Revert "drop the deprecated malloc/free hooks in hurd/mach-defpager" This reverts commit 8c49801c8f7e3f800cabedf8fca8ccec3cf35a22. The malloc hook is needed for calloc. --- mach-defpager/kalloc.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'mach-defpager') diff --git a/mach-defpager/kalloc.c b/mach-defpager/kalloc.c index 35ddf9a7..ef844acc 100644 --- a/mach-defpager/kalloc.c +++ b/mach-defpager/kalloc.c @@ -34,9 +34,23 @@ #include #include /* for spin locks */ +#include /* for malloc_hook/free_hook */ #include "wiring.h" +static void init_hook (void); +static void *malloc_hook (size_t size, const void *caller); +static void free_hook (void *ptr, const void *caller); + +/* GNU libc 2.14 defines this macro to declare hook variables as volatile. + Define it as empty for older libc versions. */ +#ifndef __MALLOC_HOOK_VOLATILE +# define __MALLOC_HOOK_VOLATILE +#endif + +void (*__MALLOC_HOOK_VOLATILE __malloc_initialize_hook) (void) = init_hook; + + /* #define DEBUG */ /* @@ -250,14 +264,21 @@ kfree( void *data, } } -void * -malloc (size_t size) +static void +init_hook (void) +{ + __malloc_hook = malloc_hook; + __free_hook = free_hook; +} + +static void * +malloc_hook (size_t size, const void *caller) { return (void *) kalloc ((vm_size_t) size); } -void -free (void *ptr) +static void +free_hook (void *ptr, const void *caller) { /* Just ignore harmless attempts at cleanliness. */ /* panic("free not implemented"); */ -- cgit v1.2.3