From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-4.2 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 370591F5AE for ; Sat, 17 Jul 2021 22:06:14 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 735E83836029 for ; Sat, 17 Jul 2021 22:06:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 735E83836029 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1626559573; bh=o1hf963j26BIGEeQ3hrx7AWn7Bdjr8VUSyUypNlG8V4=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=uFU9UF17yToA5RxS2W/qnDTuu4rcNeu8NysxomCj+AfE4L8Wox2+Zs0h0o1o8n9oP MNq0vgvHHp2UNWFSmHnaTwvD+P96xBnXQA7vWAvdU86dxbN9c/JEHMcUFm4H7dlf7x Mhr67C+QKn/cEgyemVfXfuYjDc7/tfKpXK4rsxFk= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id E246F383802C for ; Sat, 17 Jul 2021 22:03:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E246F383802C Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-475-SQwaml3ZMDWSsbZq0SnWXA-1; Sat, 17 Jul 2021 18:03:54 -0400 X-MC-Unique: SQwaml3ZMDWSsbZq0SnWXA-1 Received: by mail-qt1-f197.google.com with SMTP id g4-20020ac80ac40000b029024ead0ebb62so7980086qti.13 for ; Sat, 17 Jul 2021 15:03:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=o1hf963j26BIGEeQ3hrx7AWn7Bdjr8VUSyUypNlG8V4=; b=rP6fouQavQ1j9wwk+WbZ62ewkI2Ud1e7YYY2xb39kU3qoIJ1z+gsAw4kMdEaZKHTdK BPGcDhWz6lXpGmy6uf+nDi4QiiF/qc6BlUHwV+sPEaPyyqgtaUjSsD1Y8QmuDhqOdbwo YQ28V825bB+CkiqZFdJAPT4M7cCub9TBsj8jfMLV+gTsGVry0378vGxpg37u46JDGP+u uQlQvykS/4vdT7VPCDmCl0F8GG20SpRLqUxh9PlMUelg8T1gfKtSIfen8K6GuAaawwBn 7dmMcc1KzVdyb5cOaN780EYnIy5E3S0ThhfSMqJvx/p5rcHSztg+faFLJb1++xVtuJne cZhQ== X-Gm-Message-State: AOAM530V/vwVPNUYnCsoZ3OVcd089YkM5Fk9qJE5nOz3Zrtooe3yzOse uj8ZyAvoGSGI5WRSq65uZetY4uByOpihqqXT6C+mxh5tP4oIld27h+/qwP8YOeizoHFY6RE3lEa 3zYZ01Uzl/fvmOZO1UNau X-Received: by 2002:ac8:a84:: with SMTP id d4mr15722853qti.109.1626559433985; Sat, 17 Jul 2021 15:03:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzQKC5YSLm0IVWWrGzK7wu3ExBlT4OwRHZG7fShOymM/q9xa2FEKsnQ0da0VAX1dKLwnHZjmw== X-Received: by 2002:ac8:a84:: with SMTP id d4mr15722834qti.109.1626559433793; Sat, 17 Jul 2021 15:03:53 -0700 (PDT) Received: from [192.168.1.16] (198-84-214-74.cpe.teksavvy.com. [198.84.214.74]) by smtp.gmail.com with ESMTPSA id d8sm5742143qkk.119.2021.07.17.15.03.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 17 Jul 2021 15:03:53 -0700 (PDT) Subject: Re: [PATCH v8 03/10] Remove __morecore and __default_morecore To: Siddhesh Poyarekar , libc-alpha@sourceware.org References: <20210713073845.504356-1-siddhesh@sourceware.org> <20210713073845.504356-4-siddhesh@sourceware.org> Organization: Red Hat Message-ID: <636c262a-3ac5-06f1-981b-3290b943762e@redhat.com> Date: Sat, 17 Jul 2021 18:03:52 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210713073845.504356-4-siddhesh@sourceware.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit 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: , From: Carlos O'Donell via Libc-alpha Reply-To: Carlos O'Donell Cc: fweimer@redhat.com Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" On 7/13/21 3:38 AM, Siddhesh Poyarekar wrote: > Make the __morecore and __default_morecore symbols compat-only and > remove their declarations from the API. Also, include morecore.c > directly into malloc.c; this should ideally get merged into malloc in > a future cleanup. OK for 2.34. Tested without regression on x86_64 and i686. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell > --- > NEWS | 5 +++++ > include/stdlib.h | 3 --- > malloc/Makefile | 2 +- > malloc/arena.c | 12 ++---------- > malloc/hooks.c | 2 ++ > malloc/malloc.c | 7 +++---- > malloc/malloc.h | 8 -------- > malloc/morecore.c | 34 +++++++++++----------------------- > 8 files changed, 24 insertions(+), 49 deletions(-) > > diff --git a/NEWS b/NEWS > index 13ffe627da..18d9e65eb2 100644 > --- a/NEWS > +++ b/NEWS > @@ -113,6 +113,11 @@ Deprecated and removed features, and other changes affecting compatibility: > mtrace. Similar functionality can be achieved by using conditional > breakpoints within mtrace functions from within gdb. > > +* The __morecore and __after_morecore_hook malloc hooks and the default > + implementation __default_morecore have been removed from the API. Existing > + applications will continue to link against these symbols but the interfaces > + no longer have any effect on malloc. OK. > + > Changes to build and runtime requirements: > > * On Linux, the shm_open, sem_open, and related functions now expect the > diff --git a/include/stdlib.h b/include/stdlib.h > index 1f6e1508e4..1c6f70b082 100644 > --- a/include/stdlib.h > +++ b/include/stdlib.h > @@ -306,9 +306,6 @@ libc_hidden_proto (__qfcvt_r) > # define MB_CUR_MAX (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX)) > # endif > > -extern void *__default_morecore (ptrdiff_t) __THROW; > -libc_hidden_proto (__default_morecore) OK. > - > struct abort_msg_s > { > unsigned int size; > diff --git a/malloc/Makefile b/malloc/Makefile > index d15729569b..020f781b59 100644 > --- a/malloc/Makefile > +++ b/malloc/Makefile > @@ -104,7 +104,7 @@ tests-exclude-mcheck = tst-mallocstate \ > tests-mcheck = $(filter-out $(tests-exclude-mcheck), $(tests)) > endif > > -routines = malloc morecore mcheck mtrace obstack reallocarray \ > +routines = malloc mcheck mtrace obstack reallocarray \ OK. > scratch_buffer_dupfree \ > scratch_buffer_grow scratch_buffer_grow_preserve \ > scratch_buffer_set_array_size \ > diff --git a/malloc/arena.c b/malloc/arena.c > index 991fc21a7e..f1693ed48f 100644 > --- a/malloc/arena.c > +++ b/malloc/arena.c > @@ -274,14 +274,6 @@ next_env_entry (char ***position) > #endif > > > -#if defined(SHARED) || defined(USE_MTAG) > -static void * > -__failing_morecore (ptrdiff_t d) > -{ > - return (void *) MORECORE_FAILURE; > -} > -#endif > - OK. > #ifdef SHARED > extern struct dl_open_hook *_dl_open_hook; > libc_hidden_proto (_dl_open_hook); > @@ -310,7 +302,7 @@ ptmalloc_init (void) > and that morecore does not support tagged regions, then > disable it. */ > if (__MTAG_SBRK_UNTAGGED) > - __morecore = __failing_morecore; > + __always_fail_morecore = true; OK. > > mtag_enabled = true; > mtag_mmap_flags = __MTAG_MMAP_FLAGS; > @@ -323,7 +315,7 @@ ptmalloc_init (void) > generic sbrk implementation also enforces this, but it is not > used on Hurd. */ > if (!__libc_initial) > - __morecore = __failing_morecore; > + __always_fail_morecore = true; OK. > #endif > > thread_arena = &main_arena; > diff --git a/malloc/hooks.c b/malloc/hooks.c > index 45c91d6502..4aa6dadcff 100644 > --- a/malloc/hooks.c > +++ b/malloc/hooks.c > @@ -20,6 +20,8 @@ > #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); > +void *(*__morecore)(ptrdiff_t); > +compat_symbol (libc, __morecore, __morecore, GLIBC_2_0); OK. > #endif > > /* Hooks for debugging versions. The initial hooks just call the > diff --git a/malloc/malloc.c b/malloc/malloc.c > index 24e7854a0e..6e8fa9e424 100644 > --- a/malloc/malloc.c > +++ b/malloc/malloc.c > @@ -384,12 +384,11 @@ __malloc_assert (const char *assertion, const char *file, unsigned int line, > #define TRIM_FASTBINS 0 > #endif > > - > /* Definition for getting more memory from the OS. */ > -#define MORECORE (*__morecore) > +#include "morecore.c" > + > +#define MORECORE (*__glibc_morecore) OK. > #define MORECORE_FAILURE 0 > -void * __default_morecore (ptrdiff_t); > -void *(*__morecore)(ptrdiff_t) = __default_morecore; OK. > > /* Memory tagging. */ > > diff --git a/malloc/malloc.h b/malloc/malloc.h > index 634b7db868..17ab9ee345 100644 > --- a/malloc/malloc.h > +++ b/malloc/malloc.h > @@ -76,14 +76,6 @@ extern void *valloc (size_t __size) __THROW __attribute_malloc__ > extern void *pvalloc (size_t __size) __THROW __attribute_malloc__ > __wur __attr_dealloc_free; > > -/* Underlying allocation function; successive calls should return > - contiguous pieces of memory. */ > -extern void *(*__morecore) (ptrdiff_t __size) __MALLOC_DEPRECATED; > - > -/* Default value of `__morecore'. */ > -extern void *__default_morecore (ptrdiff_t __size) > -__THROW __attribute_malloc__ __MALLOC_DEPRECATED; OK. > - > /* SVID2/XPG mallinfo structure */ > > struct mallinfo > diff --git a/malloc/morecore.c b/malloc/morecore.c > index 047228779b..8168ef158c 100644 > --- a/malloc/morecore.c > +++ b/malloc/morecore.c > @@ -15,39 +15,27 @@ > License along with the GNU C Library; if not, see > . */ > > -#ifndef _MALLOC_INTERNAL > -# define _MALLOC_INTERNAL > -# include > -#endif > - > -#ifndef __GNU_LIBRARY__ > -# define __sbrk sbrk > -#endif > - > -#ifdef __GNU_LIBRARY__ > -/* It is best not to declare this and cast its result on foreign operating > - systems with potentially hostile include files. */ > - > -# include > -# include > -extern void *__sbrk (ptrdiff_t increment) __THROW; > -libc_hidden_proto (__sbrk) > -#endif > - > -#ifndef NULL > -# define NULL 0 OK. > +#if defined(SHARED) || defined(USE_MTAG) > +static bool __always_fail_morecore = false; > #endif > > /* Allocate INCREMENT more bytes of data space, > and return the start of data space, or NULL on errors. > If INCREMENT is negative, shrink data space. */ > void * > -__default_morecore (ptrdiff_t increment) > +__glibc_morecore (ptrdiff_t increment) > { > +#if defined(SHARED) || defined(USE_MTAG) > + if (__always_fail_morecore) > + return NULL; > +#endif OK. > + > void *result = (void *) __sbrk (increment); > if (result == (void *) -1) > return NULL; > > return result; > } > -libc_hidden_def (__default_morecore) > +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_34) > +compat_symbol (libc, __glibc_morecore, __default_morecore, GLIBC_2_0); OK. Use a new name and create a versioned compat symbol for __default_morecore in case someone calls it. > +#endif > -- Cheers, Carlos.