Message ID | 20210713073845.504356-3-siddhesh@sourceware.org |
---|---|
State | New |
Headers | show |
Series | malloc hooks removal | expand |
On 7/13/21 3:38 AM, Siddhesh Poyarekar wrote: > Remove __after_morecore_hook from the API and finalize the symbol so > that it can no longer be used in new applications. Old applications > using __after_morecore_hook will find that their hook is no longer > called. OK for 2.34. Tested without regression on x86_64 and i686. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com> > --- > malloc/hooks.c | 5 +++++ > malloc/malloc.c | 22 +--------------------- > malloc/malloc.h | 3 --- > 3 files changed, 6 insertions(+), 24 deletions(-) > > diff --git a/malloc/hooks.c b/malloc/hooks.c > index daa5c7cfae..45c91d6502 100644 > --- a/malloc/hooks.c > +++ b/malloc/hooks.c > @@ -17,6 +17,11 @@ > License along with the GNU C Library; see the file COPYING.LIB. If > not, see <https://www.gnu.org/licenses/>. */ > > +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34) > +void weak_variable (*__after_morecore_hook) (void) = NULL; > +compat_symbol (libc, __after_morecore_hook, __after_morecore_hook, GLIBC_2_0); OK. > +#endif > + > /* Hooks for debugging versions. The initial hooks just call the > initialization routine, then do the normal work. */ > > diff --git a/malloc/malloc.c b/malloc/malloc.c > index 154f6b460c..24e7854a0e 100644 > --- a/malloc/malloc.c > +++ b/malloc/malloc.c > @@ -2041,8 +2041,6 @@ void *weak_variable (*__realloc_hook) > void *weak_variable (*__memalign_hook) > (size_t __alignment, size_t __size, const void *) > = memalign_hook_ini; > -void weak_variable (*__after_morecore_hook) (void) = NULL; > - OK. > /* This function is called from the arena shutdown hook, to free the > thread cache (if it exists). */ > static void tcache_thread_shutdown (void); > @@ -2668,14 +2666,7 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) > LIBC_PROBE (memory_sbrk_more, 2, brk, size); > } > > - if (brk != (char *) (MORECORE_FAILURE)) > - { > - /* Call the `morecore' hook if necessary. */ > - void (*hook) (void) = atomic_forced_read (__after_morecore_hook); > - if (__builtin_expect (hook != NULL, 0)) > - (*hook)(); > - } > - else OK. > + if (brk == (char *) (MORECORE_FAILURE)) > { > /* > If have mmap, try using it as a backup when MORECORE fails or > @@ -2814,13 +2805,6 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) > correction = 0; > snd_brk = (char *) (MORECORE (0)); > } > - else > - { > - /* Call the `morecore' hook if necessary. */ > - void (*hook) (void) = atomic_forced_read (__after_morecore_hook); > - if (__builtin_expect (hook != NULL, 0)) > - (*hook)(); > - } OK. > } > > /* handle non-contiguous cases */ > @@ -2979,10 +2963,6 @@ systrim (size_t pad, mstate av) > */ > > MORECORE (-extra); > - /* Call the `morecore' hook if necessary. */ > - void (*hook) (void) = atomic_forced_read (__after_morecore_hook); > - if (__builtin_expect (hook != NULL, 0)) > - (*hook)(); OK. > new_brk = (char *) (MORECORE (0)); > > LIBC_PROBE (memory_sbrk_less, 2, new_brk, extra); > diff --git a/malloc/malloc.h b/malloc/malloc.h > index c1c0896d29..634b7db868 100644 > --- a/malloc/malloc.h > +++ b/malloc/malloc.h > @@ -179,9 +179,6 @@ extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment, > size_t __size, > const void *) > __MALLOC_DEPRECATED; > -extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void) > - __MALLOC_DEPRECATED; OK. > - > > __END_DECLS > #endif /* malloc.h */ >
diff --git a/malloc/hooks.c b/malloc/hooks.c index daa5c7cfae..45c91d6502 100644 --- a/malloc/hooks.c +++ b/malloc/hooks.c @@ -17,6 +17,11 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, see <https://www.gnu.org/licenses/>. */ +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34) +void weak_variable (*__after_morecore_hook) (void) = NULL; +compat_symbol (libc, __after_morecore_hook, __after_morecore_hook, GLIBC_2_0); +#endif + /* Hooks for debugging versions. The initial hooks just call the initialization routine, then do the normal work. */ diff --git a/malloc/malloc.c b/malloc/malloc.c index 154f6b460c..24e7854a0e 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -2041,8 +2041,6 @@ void *weak_variable (*__realloc_hook) void *weak_variable (*__memalign_hook) (size_t __alignment, size_t __size, const void *) = memalign_hook_ini; -void weak_variable (*__after_morecore_hook) (void) = NULL; - /* This function is called from the arena shutdown hook, to free the thread cache (if it exists). */ static void tcache_thread_shutdown (void); @@ -2668,14 +2666,7 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) LIBC_PROBE (memory_sbrk_more, 2, brk, size); } - if (brk != (char *) (MORECORE_FAILURE)) - { - /* Call the `morecore' hook if necessary. */ - void (*hook) (void) = atomic_forced_read (__after_morecore_hook); - if (__builtin_expect (hook != NULL, 0)) - (*hook)(); - } - else + if (brk == (char *) (MORECORE_FAILURE)) { /* If have mmap, try using it as a backup when MORECORE fails or @@ -2814,13 +2805,6 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) correction = 0; snd_brk = (char *) (MORECORE (0)); } - else - { - /* Call the `morecore' hook if necessary. */ - void (*hook) (void) = atomic_forced_read (__after_morecore_hook); - if (__builtin_expect (hook != NULL, 0)) - (*hook)(); - } } /* handle non-contiguous cases */ @@ -2979,10 +2963,6 @@ systrim (size_t pad, mstate av) */ MORECORE (-extra); - /* Call the `morecore' hook if necessary. */ - void (*hook) (void) = atomic_forced_read (__after_morecore_hook); - if (__builtin_expect (hook != NULL, 0)) - (*hook)(); new_brk = (char *) (MORECORE (0)); LIBC_PROBE (memory_sbrk_less, 2, new_brk, extra); diff --git a/malloc/malloc.h b/malloc/malloc.h index c1c0896d29..634b7db868 100644 --- a/malloc/malloc.h +++ b/malloc/malloc.h @@ -179,9 +179,6 @@ extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment, size_t __size, const void *) __MALLOC_DEPRECATED; -extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void) - __MALLOC_DEPRECATED; - __END_DECLS #endif /* malloc.h */