summary refs log tree commit diff
path: root/malloc/malloc.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-23 10:53:52 +0000
committerRoland McGrath <roland@gnu.org>2002-08-23 10:53:52 +0000
commit404d4cef440253fa66168ca674c4aaf80c05d512 (patch)
treed0d8354370ac47275964f1fa24caf9fa3b721d1e /malloc/malloc.c
parent16495f81270e72edf3a8faae19dd0e0b22373cf1 (diff)
downloadglibc-404d4cef440253fa66168ca674c4aaf80c05d512.tar.gz
glibc-404d4cef440253fa66168ca674c4aaf80c05d512.tar.xz
glibc-404d4cef440253fa66168ca674c4aaf80c05d512.zip
* 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.
Diffstat (limited to 'malloc/malloc.c')
-rw-r--r--malloc/malloc.c37
1 files changed, 37 insertions, 0 deletions
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"