diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | malloc/hooks.c | 34 | ||||
-rw-r--r-- | malloc/malloc.c | 37 |
3 files changed, 42 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog index 55e1888362..c95e6f8371 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2002-08-23 Roland McGrath <roland@redhat.com> + * malloc/hooks.c (__malloc_initialize_hook, __free_hook, + __malloc_hook, __realloc_hook, __memalign_hook, + __after_morecore_hook): Variable definitions moved to ... + * malloc/malloc.c: ... here, so as to be before all references. + * sysdeps/i386/dl-machine.h (elf_machine_load_address): Add a dummy global variable reference in an unused asm parameter, to ensure the compiler has set up the GOT register before we use it. diff --git a/malloc/hooks.c b/malloc/hooks.c index 9fab05c307..a36980360a 100644 --- a/malloc/hooks.c +++ b/malloc/hooks.c @@ -20,40 +20,6 @@ /* $Id$ */ -#ifndef weak_variable -#ifndef _LIBC -#define weak_variable /**/ -#else -/* In GNU libc we want the hook variables to be weak definitions to - avoid a problem with Emacs. */ -#define weak_variable weak_function -#endif -#endif - -/* Forward declarations. */ -static Void_t* malloc_hook_ini __MALLOC_P ((size_t sz, - const __malloc_ptr_t caller)); -static Void_t* realloc_hook_ini __MALLOC_P ((Void_t* ptr, size_t sz, - const __malloc_ptr_t caller)); -static Void_t* memalign_hook_ini __MALLOC_P ((size_t alignment, size_t sz, - const __malloc_ptr_t caller)); - -/* Define and initialize the hook variables. These weak definitions must - appear before any use of the variables in a function. */ -void weak_variable (*__malloc_initialize_hook) __MALLOC_P ((void)) = NULL; -void weak_variable (*__free_hook) __MALLOC_P ((__malloc_ptr_t __ptr, - const __malloc_ptr_t)) = NULL; -__malloc_ptr_t weak_variable (*__malloc_hook) - __MALLOC_P ((size_t __size, const __malloc_ptr_t)) = malloc_hook_ini; -__malloc_ptr_t weak_variable (*__realloc_hook) - __MALLOC_P ((__malloc_ptr_t __ptr, size_t __size, const __malloc_ptr_t)) - = realloc_hook_ini; -__malloc_ptr_t weak_variable (*__memalign_hook) - __MALLOC_P ((size_t __alignment, size_t __size, const __malloc_ptr_t)) - = memalign_hook_ini; -void weak_variable (*__after_morecore_hook) __MALLOC_P ((void)) = NULL; - - #ifndef DEFAULT_CHECK_ACTION #define DEFAULT_CHECK_ACTION 1 #endif diff --git a/malloc/malloc.c b/malloc/malloc.c index b6fd367f8b..03c3c9a33b 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -2263,6 +2263,43 @@ static void malloc_consolidate(); static Void_t** iALLOc(); #endif + +/* -------------- Early definitions for debugging hooks ---------------- */ + +/* Define and initialize the hook variables. These weak definitions must + appear before any use of the variables in a function (arena.c uses one). */ +#ifndef weak_variable +#ifndef _LIBC +#define weak_variable /**/ +#else +/* In GNU libc we want the hook variables to be weak definitions to + avoid a problem with Emacs. */ +#define weak_variable weak_function +#endif +#endif + +/* Forward declarations. */ +static Void_t* malloc_hook_ini __MALLOC_P ((size_t sz, + const __malloc_ptr_t caller)); +static Void_t* realloc_hook_ini __MALLOC_P ((Void_t* ptr, size_t sz, + const __malloc_ptr_t caller)); +static Void_t* memalign_hook_ini __MALLOC_P ((size_t alignment, size_t sz, + const __malloc_ptr_t caller)); + +void weak_variable (*__malloc_initialize_hook) __MALLOC_P ((void)) = NULL; +void weak_variable (*__free_hook) __MALLOC_P ((__malloc_ptr_t __ptr, + const __malloc_ptr_t)) = NULL; +__malloc_ptr_t weak_variable (*__malloc_hook) + __MALLOC_P ((size_t __size, const __malloc_ptr_t)) = malloc_hook_ini; +__malloc_ptr_t weak_variable (*__realloc_hook) + __MALLOC_P ((__malloc_ptr_t __ptr, size_t __size, const __malloc_ptr_t)) + = realloc_hook_ini; +__malloc_ptr_t weak_variable (*__memalign_hook) + __MALLOC_P ((size_t __alignment, size_t __size, const __malloc_ptr_t)) + = memalign_hook_ini; +void weak_variable (*__after_morecore_hook) __MALLOC_P ((void)) = NULL; + + /* ------------------- Support for multiple arenas -------------------- */ #include "arena.c" |