From: Siddhesh Poyarekar <siddhesh@sourceware.org>
To: libc-alpha@sourceware.org
Cc: carlos@redhat.com, dj@redhat.com, fweimer@redhat.com
Subject: [PATCH v7 0/8] malloc hooks removal
Date: Thu, 8 Jul 2021 23:13:17 +0530 [thread overview]
Message-ID: <20210708174325.3243721-1-siddhesh@sourceware.org> (raw)
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.
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. The test package has also been installed on x86_64 and
rebooted to make sure the system boots to shell.
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 (8):
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
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 | 48 +-
malloc/Versions | 44 ++
malloc/arena.c | 48 +-
malloc/hooks.c | 71 ++-
malloc/malloc-check.c | 63 ++-
malloc/malloc-debug.c | 514 ++++++++++++++++++
malloc/malloc-hooks.h | 24 -
malloc/malloc.c | 163 ++----
malloc/malloc.h | 27 -
malloc/mcheck-impl.c | 406 ++++++++++++++
malloc/mcheck.c | 396 +-------------
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 -
.../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 -
.../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 -
.../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 +
.../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 -
.../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 -
.../linux/x86_64/64/libc_malloc_debug.abilist | 26 +
.../x86_64/x32/libc_malloc_debug.abilist | 26 +
sysdeps/x86_64/localplt.data | 1 -
98 files changed, 2530 insertions(+), 1261 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
next reply other threads:[~2021-07-08 17:43 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-08 17:43 Siddhesh Poyarekar [this message]
2021-07-08 17:43 ` [PATCH v7 1/8] Remove __after_morecore_hook Siddhesh Poyarekar
2021-07-08 17:43 ` [PATCH v7 2/8] Remove __morecore and __default_morecore Siddhesh Poyarekar
2021-07-09 6:27 ` Florian Weimer
2021-07-09 7:02 ` Siddhesh Poyarekar
2021-07-09 7:46 ` Florian Weimer
2021-07-08 17:43 ` [PATCH v7 3/8] Move malloc hooks into a compat DSO Siddhesh Poyarekar
2021-07-09 8:08 ` Florian Weimer
2021-07-09 8:13 ` Siddhesh Poyarekar
2021-07-09 8:17 ` Florian Weimer
2021-07-09 9:17 ` Siddhesh Poyarekar
2021-07-09 9:22 ` Florian Weimer
2021-07-09 8:26 ` Florian Weimer
2021-07-09 9:21 ` Siddhesh Poyarekar
2021-07-08 17:43 ` [PATCH v7 4/8] mcheck: Wean away from malloc hooks Siddhesh Poyarekar
2021-07-08 17:43 ` [PATCH v7 5/8] Simplify __malloc_initialized Siddhesh Poyarekar
2021-07-08 17:43 ` [PATCH v7 6/8] mtrace: Wean away from malloc hooks Siddhesh Poyarekar
2021-07-08 17:43 ` [PATCH v7 7/8] glibc.malloc.check: " Siddhesh Poyarekar
2021-07-08 17:43 ` [PATCH v7 8/8] Remove " Siddhesh Poyarekar
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210708174325.3243721-1-siddhesh@sourceware.org \
--to=siddhesh@sourceware.org \
--cc=carlos@redhat.com \
--cc=dj@redhat.com \
--cc=fweimer@redhat.com \
--cc=libc-alpha@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).