From patchwork Fri Jul 2 02:35:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siddhesh Poyarekar X-Patchwork-Id: 44074 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id F0971397302F for ; Fri, 2 Jul 2021 02:36:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F0971397302F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1625193392; bh=7d+HqJZD4yLJUFI/YwPG40FUhMj5ddcy4oZISJbzzUI=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=QD3rzItWItE7mC5vUUOIi6TaA04+MzB41cS2bJdNkgBTUdQCN1hSsvcZ8FHSOgoRy MaxvFXh8VbnvwrV4tpgrg2+QbIG8YzntVE14U2X+fzYLXrdV7wPg8IesS7S9hYN+ec uDLBhoDKxr6M+ivn+0oGdcWKt4bTtQt/GcoYsf74= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from aye.elm.relay.mailchannels.net (aye.elm.relay.mailchannels.net [23.83.212.6]) by sourceware.org (Postfix) with ESMTPS id A1B4B3858004 for ; Fri, 2 Jul 2021 02:36:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A1B4B3858004 X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 6C551642105; Fri, 2 Jul 2021 02:36:07 +0000 (UTC) Received: from pdx1-sub0-mail-a42.g.dreamhost.com (100-96-13-105.trex-nlb.outbound.svc.cluster.local [100.96.13.105]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id E7B8F6423BA; Fri, 2 Jul 2021 02:36:06 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from pdx1-sub0-mail-a42.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384) by 100.96.13.105 (trex/6.3.3); Fri, 02 Jul 2021 02:36:07 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Suffer-Unite: 42f1f5997782969a_1625193367208_3125871440 X-MC-Loop-Signature: 1625193367208:838358505 X-MC-Ingress-Time: 1625193367207 Received: from pdx1-sub0-mail-a42.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a42.g.dreamhost.com (Postfix) with ESMTP id 34629897E4; Fri, 2 Jul 2021 02:36:05 +0000 (UTC) Received: from rhbox.intra.reserved-bit.com (unknown [1.186.101.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a42.g.dreamhost.com (Postfix) with ESMTPSA id 64C1E897E3; Fri, 2 Jul 2021 02:36:00 +0000 (UTC) X-DH-BACKEND: pdx1-sub0-mail-a42 To: libc-alpha@sourceware.org Subject: [PATCH v3 00/10] Remove malloc hooks Date: Fri, 2 Jul 2021 08:05:36 +0530 Message-Id: <20210702023546.3081774-1-siddhesh@sourceware.org> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-3485.0 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NEUTRAL, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Siddhesh Poyarekar via Libc-alpha From: Siddhesh Poyarekar Reply-To: Siddhesh Poyarekar Cc: fweimer@redhat.com Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 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. Most of the malloc tests now run one additional time to verify mcheck() behaviour, specifically with -lmcheck. 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. Finally, tr_break and mallwatch symbols have been deprecated and are not used anywhere. Users are advised to use gdb watchpoints and conditional breakpoints to debug malloc internals since they ought to provide equivalent functionality. 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): mtrace: Deprecate mallwatch and tr_break Add mcheck tests to malloc 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 | 18 + Rules | 15 +- include/malloc.h | 11 +- include/stdlib.h | 3 - malloc/Makefile | 53 +- malloc/Versions | 3 + malloc/arena.c | 26 +- malloc/hooks.c | 545 +++++++----------- malloc/malloc-check.c | 376 ++++++++++++ malloc/malloc-compathooks.c | 166 ++++++ malloc/malloc-internal.h | 6 + malloc/malloc.c | 235 ++++---- 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 | 276 +-------- 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 + 54 files changed, 1597 insertions(+), 1335 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