mbox series

[0/8] Remove malloc hooks

Message ID 20210624182312.236596-1-siddhesh@sourceware.org
Headers show
Series Remove malloc hooks | expand

Message

Siddhesh Poyarekar June 24, 2021, 6:23 p.m. UTC
This patchset removes the malloc hooks __malloc_hook, __free_hook,
__realloc_hook and __memalign_hook from the API and leaves compatibility
symbols so that existing applications can continue to link to them.  The
reading and execution of the hooks has been moved to a DSO
libmalloc_compathooks.so, which can be preloaded for applications that
need it.  By default these hooks no longer have any effect in the
library.

Further, the __morecore, __morecore_after_hook and __default_morecore
hooks have also been moved to compat symbols and removed from the API.
Existing applications will continue to link to them but they won't have
any effect on malloc behaviour.

To enable this, the MALLOC_CHECK_, mcheck() and mtrace() hooks have been
weaned away from hooks.  In the process, some mcheck() failures have
been fixed and the overall behaviour is now simpler to follow.

This patchset depends on the mcheck testing infrastructure I've proposed
to expand coverage of tests:

https://sourceware.org/pipermail/libc-alpha/2021-June/127861.html

Siddhesh Poyarekar (8):
  Move glibc.malloc.check implementation into its own file
  malloc: Move malloc hook references to hooks.c
  glibc.malloc.check: Wean away from malloc hooks
  mcheck: Wean away from malloc hooks
  mtrace: Wean away from malloc hooks
  Remove malloc hooks
  Remove __after_morecore_hook
  Remove __morecore and __default_morecore

 Makeconfig                                    |   2 +-
 NEWS                                          |  14 +
 include/malloc.h                              |  11 +-
 include/stdlib.h                              |   3 -
 malloc/Makefile                               |  19 +-
 malloc/Versions                               |   3 +
 malloc/arena.c                                |  26 +-
 malloc/hooks.c                                | 542 +++++++-----------
 malloc/malloc-check.c                         | 376 ++++++++++++
 malloc/malloc-compathooks.c                   | 166 ++++++
 malloc/malloc-internal.h                      |   6 +
 malloc/malloc.c                               | 233 ++++----
 malloc/malloc.h                               |  27 -
 malloc/mcheck-hooks.c                         | 411 +++++++++++++
 malloc/mcheck-init.c                          |  14 +-
 malloc/mcheck.c                               | 369 +-----------
 malloc/morecore.c                             |  15 +-
 malloc/mtrace-hooks.c                         | 137 +++++
 malloc/mtrace.c                               | 233 +-------
 manual/memory.texi                            | 191 +-----
 sysdeps/mach/hurd/i386/libc.abilist           |   1 +
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |   1 +
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |   1 +
 sysdeps/unix/sysv/linux/arc/libc.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist     |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist     |   1 +
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |   1 +
 .../sysv/linux/m68k/coldfire/libc.abilist     |   1 +
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |   1 +
 .../sysv/linux/microblaze/be/libc.abilist     |   1 +
 .../sysv/linux/microblaze/le/libc.abilist     |   1 +
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |   1 +
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |   1 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |   1 +
 .../sysv/linux/mips/mips64/n64/libc.abilist   |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |   1 +
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |   1 +
 .../powerpc/powerpc32/nofpu/libc.abilist      |   1 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |   1 +
 .../linux/powerpc/powerpc64/le/libc.abilist   |   1 +
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |   1 +
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |   1 +
 .../unix/sysv/linux/s390/s390-32/libc.abilist |   1 +
 .../unix/sysv/linux/s390/s390-64/libc.abilist |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |   1 +
 .../sysv/linux/sparc/sparc32/libc.abilist     |   1 +
 .../sysv/linux/sparc/sparc64/libc.abilist     |   1 +
 .../unix/sysv/linux/x86_64/64/libc.abilist    |   1 +
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |   1 +
 53 files changed, 1526 insertions(+), 1305 deletions(-)
 create mode 100644 malloc/malloc-check.c
 create mode 100644 malloc/malloc-compathooks.c
 create mode 100644 malloc/mcheck-hooks.c
 create mode 100644 malloc/mtrace-hooks.c