From: "H.J. Lu via Libc-alpha" <libc-alpha@sourceware.org>
To: Siddhesh Poyarekar <siddhesh@sourceware.org>
Cc: Florian Weimer <fweimer@redhat.com>,
GNU C Library <libc-alpha@sourceware.org>
Subject: Re: [PATCH v8 00/10] malloc hooks removal
Date: Tue, 13 Jul 2021 07:48:24 -0700 [thread overview]
Message-ID: <CAMe9rOr-c5tf8GsL27zR56NfEm1AnG3am5jfFYS0VP14Xje-dw@mail.gmail.com> (raw)
In-Reply-To: <20210713073845.504356-1-siddhesh@sourceware.org>
On Tue, Jul 13, 2021 at 12:39 AM Siddhesh Poyarekar via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> 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
> libc_malloc_debug.so, which can be preloaded for applications that need
> it. By default these hooks no longer have any effect in the library.
>
> Further, debugging features such as MALLOC_CHECK_, mcheck() and mtrace
> have been weaned away from these hooks and also moved to
> libc_malloc_debug.so. With this change, these features are only enabled
> when libc_malloc_debug.so is preloaded using LD_PRELOAD.
>
> Finally, 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.
>
> Testing:
>
> The patchset has gone through a full build and test on x86_64, i686,
> s390x, ppc64le, armv7l and aarch64 through a scratch build on Fedora
> rawhide. I also installed a test package on x86_64 and rebooted to make
> sure the system boots to shell. I did a build-many-glibcs run with
> the patchset and it ran clean on all targets.
Does this series fix posix_memalign:
https://sourceware.org/bugzilla/show_bug.cgi?id=23489
> Changes from v7:
> - Made mcheck tests conditional on GLIBC_2.24
> - Added SHLIB_COMPAT guard around __malloc_initialize_hook usage in
> libc_malloc_debug.so
> - Fixed hurd build failure.
> - Add another patch to fix malloc_usable_size to mcheck
>
> Changes from v6:
> - Moved malloc-check into libc_malloc_debug.so. Tweaked malloc.c to
> allow building twice, once inside libc.so and next in
> libc_malloc_debug.so
> - Included morecore.c into malloc.c
> - Moved hook initialization too into libc_malloc_debug.so.
> - Interposed more functions in libc_malloc_debug.so
> - Versioned all symbols exported from libc_malloc_debug.so and finalized
> them so that the library cannot be linked against
>
> Changes from v5:
> - Rebased on latest master
> - Fixed realloc-mcheck
> - Removed residual mention of libmalloc_compathooks
> - Removed LD_PRELOAD from elf/tst-setuid
>
> Changes from v4:
> - Patchset has a different approach, starting with moving out hooks
> first to restrict all major malloc.c changes to the first patch
> - Renamed libmalloc_compathooks.so to libc_malloc_debug.so
> - Moved all debugging features into libc_malloc_debug.so
> - Made more documentation updates
> - Simplified __malloc_initialized variable use
> - Removed debugging tests on static variables since that is no longer
> supported
>
> Changes from v3:
> - Remove source file dependencies
> - Commit mcheck tests
>
> Changes from v2:
> - Move hooks dependencies to malloc.o{,sS}
>
> Changes from v1:
>
> - Added makefile dependencies for the new hooks files
> - Fixed memset call in calloc debugging hooks
> - Added the tr_break deprecation patch and mcheck test patch to this
> series
>
>
> Siddhesh Poyarekar (10):
> Make mcheck tests conditional on GLIBC_2.24 or earlier
> Remove __after_morecore_hook
> Remove __morecore and __default_morecore
> Move malloc hooks into a compat DSO
> mcheck: Wean away from malloc hooks
> Simplify __malloc_initialized
> mtrace: Wean away from malloc hooks
> glibc.malloc.check: Wean away from malloc hooks
> Remove malloc hooks
> mcheck Fix malloc_usable_size [BZ #22057]
>
> NEWS | 21 +
> Rules | 9 +-
> catgets/Makefile | 4 +-
> elf/Makefile | 15 +-
> elf/tst-leaks1-static.c | 1 -
> iconvdata/Makefile | 3 +-
> include/malloc.h | 6 -
> include/mcheck.h | 4 -
> include/stdlib.h | 3 -
> intl/tst-gettext.sh | 1 +
> libio/Makefile | 12 +-
> localedata/Makefile | 3 +-
> malloc/Makefile | 56 +-
> malloc/Versions | 44 ++
> malloc/arena.c | 48 +-
> malloc/hooks.c | 71 ++-
> malloc/malloc-check.c | 63 ++-
> malloc/malloc-debug.c | 522 ++++++++++++++++++
> malloc/malloc-hooks.h | 24 -
> malloc/malloc.c | 163 ++----
> malloc/malloc.h | 27 -
> malloc/mcheck-impl.c | 412 ++++++++++++++
> malloc/mcheck.c | 397 +------------
> malloc/morecore.c | 34 +-
> malloc/mtrace-impl.c | 226 ++++++++
> malloc/mtrace.c | 313 +----------
> malloc/tst-compathooks-off.c | 145 +++++
> malloc/tst-compathooks-on.c | 2 +
> malloc/tst-malloc-usable-static-tunables.c | 1 -
> malloc/tst-malloc-usable-static.c | 1 -
> malloc/tst-mtrace.sh | 1 +
> manual/memory.texi | 207 +------
> manual/tunables.texi | 4 +-
> misc/Makefile | 6 +-
> nptl/Makefile | 3 +-
> posix/Makefile | 48 +-
> resolv/Makefile | 9 +-
> shlib-versions | 3 +
> stdio-common/Makefile | 15 +-
> sysdeps/aarch64/Makefile | 3 +
> sysdeps/generic/libc_malloc_debug.abilist | 0
> sysdeps/generic/localplt.data | 1 -
> sysdeps/mach/hurd/Makefile | 1 +
> .../mach/hurd/i386/libc_malloc_debug.abilist | 26 +
> sysdeps/mach/hurd/i386/localplt.data | 1 -
> sysdeps/pthread/Makefile | 3 +-
> .../linux/aarch64/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/aarch64/localplt.data | 1 -
> .../linux/alpha/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/alpha/localplt.data | 1 -
> .../sysv/linux/arc/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/arc/localplt.data | 1 -
> .../linux/arm/be/libc_malloc_debug.abilist | 26 +
> .../linux/arm/le/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/arm/localplt.data | 1 -
> .../sysv/linux/csky/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/csky/localplt.data | 1 -
> .../sysv/linux/hppa/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/hppa/localplt.data | 1 -
> sysdeps/unix/sysv/linux/hppa/shlib-versions | 2 +
> .../sysv/linux/i386/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/i386/localplt.data | 1 -
> .../sysv/linux/ia64/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/ia64/localplt.data | 1 -
> sysdeps/unix/sysv/linux/ia64/shlib-versions | 2 +
> .../m68k/coldfire/libc_malloc_debug.abilist | 26 +
> .../sysv/linux/m68k/coldfire/localplt.data | 1 -
> .../m68k/m680x0/libc_malloc_debug.abilist | 26 +
> .../unix/sysv/linux/m68k/m680x0/localplt.data | 1 -
> .../microblaze/be/libc_malloc_debug.abilist | 26 +
> .../microblaze/le/libc_malloc_debug.abilist | 26 +
> .../unix/sysv/linux/microblaze/localplt.data | 1 -
> .../mips/mips32/fpu/libc_malloc_debug.abilist | 26 +
> .../mips32/nofpu/libc_malloc_debug.abilist | 26 +
> .../mips/mips64/n32/libc_malloc_debug.abilist | 26 +
> .../mips/mips64/n64/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/mips/shlib-versions | 2 +
> .../linux/nios2/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/nios2/localplt.data | 1 -
> .../powerpc32/fpu/libc_malloc_debug.abilist | 26 +
> .../linux/powerpc/powerpc32/fpu/localplt.data | 1 -
> .../powerpc32/nofpu/libc_malloc_debug.abilist | 26 +
> .../powerpc/powerpc32/nofpu/localplt.data | 1 -
> .../powerpc64/be/libc_malloc_debug.abilist | 26 +
> .../powerpc64/le/libc_malloc_debug.abilist | 26 +
> .../linux/powerpc/powerpc64/localplt.data | 1 -
> sysdeps/unix/sysv/linux/riscv/localplt.data | 1 -
> .../riscv/rv32/libc_malloc_debug.abilist | 26 +
> .../riscv/rv64/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/s390/localplt.data | 1 -
> .../s390/s390-32/libc_malloc_debug.abilist | 26 +
> .../s390/s390-64/libc_malloc_debug.abilist | 26 +
> .../linux/sh/be/libc_malloc_debug.abilist | 26 +
> .../linux/sh/le/libc_malloc_debug.abilist | 26 +
> sysdeps/unix/sysv/linux/sh/localplt.data | 1 -
> sysdeps/unix/sysv/linux/sh/shlib-versions | 1 +
> .../sparc/sparc32/libc_malloc_debug.abilist | 26 +
> .../sysv/linux/sparc/sparc32/localplt.data | 1 -
> .../sparc/sparc64/libc_malloc_debug.abilist | 26 +
> .../sysv/linux/sparc/sparc64/localplt.data | 1 -
> .../sysv/linux/sparc/sparc64/shlib-versions | 1 +
> .../linux/x86_64/64/libc_malloc_debug.abilist | 26 +
> .../x86_64/x32/libc_malloc_debug.abilist | 26 +
> sysdeps/x86_64/localplt.data | 1 -
> 104 files changed, 2557 insertions(+), 1266 deletions(-)
> delete mode 100644 elf/tst-leaks1-static.c
> create mode 100644 malloc/malloc-debug.c
> delete mode 100644 malloc/malloc-hooks.h
> create mode 100644 malloc/mcheck-impl.c
> create mode 100644 malloc/mtrace-impl.c
> create mode 100644 malloc/tst-compathooks-off.c
> create mode 100644 malloc/tst-compathooks-on.c
> delete mode 100644 malloc/tst-malloc-usable-static-tunables.c
> delete mode 100644 malloc/tst-malloc-usable-static.c
> create mode 100644 sysdeps/generic/libc_malloc_debug.abilist
> create mode 100644 sysdeps/mach/hurd/i386/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/aarch64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/alpha/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/arm/be/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/arm/le/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/csky/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/hppa/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/i386/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/ia64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/m68k/coldfire/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/m68k/m680x0/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/microblaze/be/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/microblaze/le/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/riscv/rv64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/sh/be/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/sh/le/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/x86_64/64/libc_malloc_debug.abilist
> create mode 100644 sysdeps/unix/sysv/linux/x86_64/x32/libc_malloc_debug.abilist
>
> --
> 2.31.1
>
--
H.J.
next prev parent reply other threads:[~2021-07-13 14:50 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-13 7:38 [PATCH v8 00/10] malloc hooks removal Siddhesh Poyarekar via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 01/10] Make mcheck tests conditional on GLIBC_2.24 or earlier Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:03 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 02/10] Remove __after_morecore_hook Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:03 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 03/10] Remove __morecore and __default_morecore Siddhesh Poyarekar via Libc-alpha
2021-07-14 7:01 ` Siddhesh Poyarekar
2021-07-14 12:54 ` Guillaume Morin
2021-07-14 14:13 ` Siddhesh Poyarekar
2021-07-14 16:42 ` Guillaume Morin
2021-07-14 17:15 ` Carlos O'Donell via Libc-alpha
2021-07-14 17:42 ` Adhemerval Zanella via Libc-alpha
2021-07-14 18:37 ` Guillaume Morin
2021-07-14 18:48 ` Siddhesh Poyarekar
2021-07-14 18:31 ` Guillaume Morin
2021-07-14 17:32 ` Siddhesh Poyarekar
2021-07-14 18:25 ` Guillaume Morin
2021-07-14 18:43 ` Siddhesh Poyarekar
2021-07-14 18:51 ` Guillaume Morin
2021-07-17 22:03 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 04/10] Move malloc hooks into a compat DSO Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 05/10] mcheck: Wean away from malloc hooks Siddhesh Poyarekar via Libc-alpha
2021-07-13 15:47 ` H.J. Lu via Libc-alpha
2021-07-14 2:44 ` Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 06/10] Simplify __malloc_initialized Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 07/10] mtrace: Wean away from malloc hooks Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 08/10] glibc.malloc.check: " Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 09/10] Remove " Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 7:38 ` [PATCH v8 10/10] mcheck Fix malloc_usable_size [BZ #22057] Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:04 ` Carlos O'Donell via Libc-alpha
2021-07-13 14:48 ` H.J. Lu via Libc-alpha [this message]
2021-07-13 15:41 ` [PATCH v8 00/10] malloc hooks removal Siddhesh Poyarekar via Libc-alpha
2021-07-17 22:03 ` Carlos O'Donell via Libc-alpha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/libc/involved.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAMe9rOr-c5tf8GsL27zR56NfEm1AnG3am5jfFYS0VP14Xje-dw@mail.gmail.com \
--to=libc-alpha@sourceware.org \
--cc=fweimer@redhat.com \
--cc=hjl.tools@gmail.com \
--cc=siddhesh@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).