mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
2d2d9f2b48
Remove all malloc hook uses from core malloc functions and move it into a new library libc_malloc_debug.so. With this, the hooks now no longer have any effect on the core library. libc_malloc_debug.so is a malloc interposer that needs to be preloaded to get hooks functionality back so that the debugging features that depend on the hooks, i.e. malloc-check, mcheck and mtrace work again. Without the preloaded DSO these debugging features will be nops. These features will be ported away from hooks in subsequent patches. Similarly, legacy applications that need hooks functionality need to preload libc_malloc_debug.so. The symbols exported by libc_malloc_debug.so are maintained at exactly the same version as libc.so. Finally, static binaries will no longer be able to use malloc debugging features since they cannot preload the debugging DSO. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
121 lines
2.3 KiB
Plaintext
121 lines
2.3 KiB
Plaintext
libc {
|
|
GLIBC_2.0 {
|
|
# global variables
|
|
_obstack;
|
|
|
|
# interface of malloc functions
|
|
__libc_calloc; __libc_free; __libc_mallinfo; __libc_malloc;
|
|
__libc_mallopt; __libc_memalign; __libc_pvalloc; __libc_realloc;
|
|
__libc_valloc;
|
|
__malloc_initialize_hook; __free_hook; __malloc_hook; __realloc_hook;
|
|
__memalign_hook; __after_morecore_hook;
|
|
__default_morecore; __morecore;
|
|
|
|
# functions used in inline functions or macros
|
|
_obstack_allocated_p; _obstack_begin; _obstack_begin_1;
|
|
_obstack_free; _obstack_memory_used; _obstack_newchunk;
|
|
|
|
# variables in normal name space
|
|
mallwatch; obstack_alloc_failed_handler; obstack_exit_failure;
|
|
|
|
# c*
|
|
calloc; cfree;
|
|
|
|
# f*
|
|
free;
|
|
|
|
# m*
|
|
mallinfo; malloc; malloc_get_state; malloc_set_state; malloc_stats;
|
|
malloc_trim; malloc_usable_size; mallopt; mcheck; memalign; mprobe; mtrace;
|
|
muntrace;
|
|
|
|
# o*
|
|
obstack_free;
|
|
|
|
# p*
|
|
pvalloc;
|
|
|
|
# r*
|
|
realloc;
|
|
|
|
# t*
|
|
tr_break;
|
|
|
|
# v*
|
|
valloc;
|
|
}
|
|
GLIBC_2.1 {
|
|
# Special functions.
|
|
__libc_freeres;
|
|
}
|
|
GLIBC_2.2 {
|
|
# m*
|
|
mcheck_check_all; mcheck_pedantic;
|
|
|
|
# p*
|
|
posix_memalign;
|
|
}
|
|
GLIBC_2.10 {
|
|
malloc_info;
|
|
}
|
|
GLIBC_2.16 {
|
|
aligned_alloc;
|
|
}
|
|
GLIBC_2.26 {
|
|
reallocarray;
|
|
}
|
|
GLIBC_2.33 {
|
|
mallinfo2;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
# Internal startup hook for libpthread.
|
|
__libc_malloc_pthread_startup;
|
|
|
|
# Internal destructor hook for libpthread.
|
|
__libc_thread_freeres;
|
|
|
|
# struct scratch_buffer support
|
|
__libc_scratch_buffer_dupfree;
|
|
__libc_scratch_buffer_grow;
|
|
__libc_scratch_buffer_grow_preserve;
|
|
__libc_scratch_buffer_set_array_size;
|
|
|
|
# Internal name for reallocarray
|
|
__libc_reallocarray;
|
|
|
|
# dynarray support
|
|
__libc_dynarray_at_failure;
|
|
__libc_dynarray_emplace_enlarge;
|
|
__libc_dynarray_finalize;
|
|
__libc_dynarray_resize;
|
|
__libc_dynarray_resize_clear;
|
|
|
|
# struct alloc_buffer support
|
|
__libc_alloc_buffer_alloc_array;
|
|
__libc_alloc_buffer_allocate;
|
|
__libc_alloc_buffer_copy_bytes;
|
|
__libc_alloc_buffer_copy_string;
|
|
__libc_alloc_buffer_create_failure;
|
|
}
|
|
}
|
|
|
|
# Keep in sync with symbols in libc.
|
|
libc_malloc_debug {
|
|
GLIBC_2.0 {
|
|
calloc;
|
|
free;
|
|
malloc;
|
|
memalign;
|
|
pvalloc;
|
|
realloc;
|
|
valloc;
|
|
|
|
}
|
|
GLIBC_2.2 {
|
|
posix_memalign;
|
|
}
|
|
GLIBC_2.16 {
|
|
aligned_alloc;
|
|
}
|
|
}
|