From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 9EA693848033 for ; Thu, 22 Jul 2021 12:25:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9EA693848033 Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-196-EUoR7I27Nl-ycppudlmDDg-1; Thu, 22 Jul 2021 08:25:40 -0400 X-MC-Unique: EUoR7I27Nl-ycppudlmDDg-1 Received: by mail-qt1-f200.google.com with SMTP id i9-20020ac871c90000b0290252173fe79cso1116621qtp.2 for ; Thu, 22 Jul 2021 05:25:40 -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=EGYaCr+nKYxTrRZ10K0oW1aFCBq4nuZr6OIt5QkgFg8=; b=rPcN5xHqz1TT5bo7NCK8ZsKEKwt3+xy9cInwuVcZCPrkvEwfGvvCAI/qcNUYZ9PGed b2PDqMzXvfpT2NrwLYOU9/vm0r6+pvpq8y6DAk3IkkMJ22CDDWLxGnnngt4JJb7HhmQ6 6OFrH7ZVsIamAQj93Be5fGEW0Y6XMR/RItixQivjDgeF4jef05mDqv/9qBxnlXmNoiWZ WquhI+vO7UnIAGgIFC7z9BzBXJI59zWJLp4VTaSsIpOZSAvlHoeaAOXmDAcQmEodCGfi vmFJVU9UvWk+cdDhov1wt7nNI4yv+q/kXa4oE6bO+xaJU0Ba5mAfKuj4SjS5VT7xHQ7g 05EA== X-Gm-Message-State: AOAM533RvJzY8WhCVkdZJYWl/39T15UKL0JFOCVw2Zmdq67CFFvOQH3r uxjqjDsYx+f6H44bj/0gOtCSsaYeetmOEF7G1ITRI0R36poLePrLLbm4hEcR+1VhAEnXlQU9QX4 nYFeap1FRVI7a4Dv4eVPf X-Received: by 2002:a05:622a:489:: with SMTP id p9mr9141808qtx.256.1626956739978; Thu, 22 Jul 2021 05:25:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwo2g0zNZGlAYoRDYCi7KqRW3LQ36UEQuUOqXcM3nliPgZJrmttg6nIhvBqxtz0CTRxbj7ckQ== X-Received: by 2002:a05:622a:489:: with SMTP id p9mr9141768qtx.256.1626956739442; Thu, 22 Jul 2021 05:25:39 -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 j3sm10531802qth.63.2021.07.22.05.25.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 22 Jul 2021 05:25:38 -0700 (PDT) Subject: Re: [PATCH v10 09/11] Move malloc_{g,s}et_state to libc_malloc_debug To: Siddhesh Poyarekar , libc-alpha@sourceware.org Cc: dj@redhat.com, fweimer@redhat.com References: <20210719184637.1225275-1-siddhesh@sourceware.org> <20210719184637.1225275-10-siddhesh@sourceware.org> From: Carlos O'Donell Organization: Red Hat Message-ID: <584e618b-adfd-1b98-17bb-f73c7f89f502@redhat.com> Date: Thu, 22 Jul 2021 08:25:37 -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: <20210719184637.1225275-10-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-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham 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-List-Received-Date: Thu, 22 Jul 2021 12:25:47 -0000 On 7/19/21 2:46 PM, Siddhesh Poyarekar wrote: > These deprecated functions are only safe to call from > __malloc_initialize_hook and as a result, are not useful in the > general case. Move the implementations to libc_malloc_debug so that > existing binaries that need it will now have to preload the debug DSO > to work correctly. > > This also allows simplification of the core malloc implementation by > dropping all the undumping support code that was added to make > malloc_set_state work. > > One known breakage is that of ancient emacs binaries that depend on > this. They will now crash when running with this libc. With > LD_BIND_NOW=1, it will terminate immediately because of not being able > to find malloc_set_state but with lazy binding it will crash in > unpredictable ways. It will need a preloaded libc_malloc_debug.so so > that its initialization hook is executed to allow its malloc > implementation to work properly. OK for 2.34. Tested without regression for x86_64 and i686. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell > --- > NEWS | 5 + > malloc/Makefile | 5 + > malloc/Versions | 4 +- > malloc/hooks.c | 114 ----------- > malloc/malloc-debug.c | 182 +++++++++++++++++- > malloc/malloc.c | 55 +----- > sysdeps/mach/hurd/i386/libc.abilist | 2 - > .../mach/hurd/i386/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 - > .../linux/aarch64/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 - > .../linux/alpha/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 - > .../linux/arm/be/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 - > .../linux/arm/le/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 - > .../sysv/linux/hppa/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/i386/libc.abilist | 2 - > .../sysv/linux/i386/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 - > .../sysv/linux/ia64/libc_malloc_debug.abilist | 2 + > .../sysv/linux/m68k/coldfire/libc.abilist | 2 - > .../m68k/coldfire/libc_malloc_debug.abilist | 2 + > .../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 - > .../m68k/m680x0/libc_malloc_debug.abilist | 2 + > .../sysv/linux/microblaze/be/libc.abilist | 2 - > .../microblaze/be/libc_malloc_debug.abilist | 2 + > .../sysv/linux/microblaze/le/libc.abilist | 2 - > .../microblaze/le/libc_malloc_debug.abilist | 2 + > .../sysv/linux/mips/mips32/fpu/libc.abilist | 2 - > .../mips/mips32/fpu/libc_malloc_debug.abilist | 2 + > .../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 - > .../mips32/nofpu/libc_malloc_debug.abilist | 2 + > .../sysv/linux/mips/mips64/n32/libc.abilist | 2 - > .../mips/mips64/n32/libc_malloc_debug.abilist | 2 + > .../sysv/linux/mips/mips64/n64/libc.abilist | 2 - > .../mips/mips64/n64/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 - > .../linux/nios2/libc_malloc_debug.abilist | 2 + > .../linux/powerpc/powerpc32/fpu/libc.abilist | 2 - > .../powerpc32/fpu/libc_malloc_debug.abilist | 2 + > .../powerpc/powerpc32/nofpu/libc.abilist | 2 - > .../powerpc32/nofpu/libc_malloc_debug.abilist | 2 + > .../linux/powerpc/powerpc64/be/libc.abilist | 2 - > .../powerpc64/be/libc_malloc_debug.abilist | 2 + > .../linux/powerpc/powerpc64/le/libc.abilist | 2 - > .../powerpc64/le/libc_malloc_debug.abilist | 2 + > .../unix/sysv/linux/s390/s390-32/libc.abilist | 2 - > .../s390/s390-32/libc_malloc_debug.abilist | 2 + > .../unix/sysv/linux/s390/s390-64/libc.abilist | 2 - > .../s390/s390-64/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 - > .../linux/sh/be/libc_malloc_debug.abilist | 2 + > sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 - > .../linux/sh/le/libc_malloc_debug.abilist | 2 + > .../sysv/linux/sparc/sparc32/libc.abilist | 2 - > .../sparc/sparc32/libc_malloc_debug.abilist | 2 + > .../sysv/linux/sparc/sparc64/libc.abilist | 2 - > .../sparc/sparc64/libc_malloc_debug.abilist | 2 + > .../unix/sysv/linux/x86_64/64/libc.abilist | 2 - > .../linux/x86_64/64/libc_malloc_debug.abilist | 2 + > .../unix/sysv/linux/x86_64/x32/libc.abilist | 2 - > .../x86_64/x32/libc_malloc_debug.abilist | 2 + > 64 files changed, 256 insertions(+), 225 deletions(-) > > diff --git a/NEWS b/NEWS > index fa80c9685b..e26a9e2c17 100644 > --- a/NEWS > +++ b/NEWS > @@ -138,6 +138,11 @@ Deprecated and removed features, and other changes affecting compatibility: > features now need to preload a new debugging DSO libc_malloc_debug.so to get > this functionality back. > > +* The deprecated functions malloc_get_state and malloc_set_state have been > + moved from the core C library into libc_malloc_debug.so. Legacy applications > + that still use these functions will now need to preload libc_malloc_debug.so > + in their environment using the LD_PRELOAD environment variable. > + > Changes to build and runtime requirements: > > * On Linux, the shm_open, sem_open, and related functions now expect the > diff --git a/malloc/Makefile b/malloc/Makefile > index 4099d63a2a..a2b4383b68 100644 > --- a/malloc/Makefile > +++ b/malloc/Makefile > @@ -330,3 +330,8 @@ tst-compathooks-on-malloc-check-ENV = \ > LD_PRELOAD=$(objpfx)libc_malloc_debug.so > tst-mallocstate-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so > tst-mallocstate-malloc-check-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so > + > +# The test needs malloc_get_state/malloc_set_state which is in > +# libc_malloc_debug.so. > +$(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so > +$(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so > diff --git a/malloc/Versions b/malloc/Versions > index cbb73d18c1..0a0bcf4bb5 100644 > --- a/malloc/Versions > +++ b/malloc/Versions > @@ -25,7 +25,7 @@ libc { > free; > > # m* > - mallinfo; malloc; malloc_get_state; malloc_set_state; malloc_stats; > + mallinfo; malloc; malloc_stats; > malloc_trim; malloc_usable_size; mallopt; mcheck; memalign; mprobe; mtrace; > muntrace; > > @@ -121,6 +121,8 @@ libc_malloc_debug { > muntrace; > > mallinfo; > + malloc_get_state; > + malloc_set_state; > malloc_stats; > malloc_trim; > malloc_usable_size; > diff --git a/malloc/hooks.c b/malloc/hooks.c > index 6c212fbc21..8e1afe55e5 100644 > --- a/malloc/hooks.c > +++ b/malloc/hooks.c > @@ -39,120 +39,6 @@ void *weak_variable (*__malloc_hook) (size_t, const void *) = NULL; > void *weak_variable (*__realloc_hook) (void *, size_t, const void *) = NULL; > void *weak_variable (*__memalign_hook) (size_t, size_t, const void *) = NULL; > > -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_25) > - > -/* Support for restoring dumped heaps contained in historic Emacs > - executables. The heap saving feature (malloc_get_state) is no > - longer implemented in this version of glibc, but we have a heap > - rewriter in malloc_set_state which transforms the heap into a > - version compatible with current malloc. */ > - > -#define MALLOC_STATE_MAGIC 0x444c4541l > -#define MALLOC_STATE_VERSION (0 * 0x100l + 5l) /* major*0x100 + minor */ > - > -struct malloc_save_state > -{ > - long magic; > - long version; > - mbinptr av[NBINS * 2 + 2]; > - char *sbrk_base; > - int sbrked_mem_bytes; > - unsigned long trim_threshold; > - unsigned long top_pad; > - unsigned int n_mmaps_max; > - unsigned long mmap_threshold; > - int check_action; > - unsigned long max_sbrked_mem; > - unsigned long max_total_mem; /* Always 0, for backwards compatibility. */ > - unsigned int n_mmaps; > - unsigned int max_n_mmaps; > - unsigned long mmapped_mem; > - unsigned long max_mmapped_mem; > - int using_malloc_checking; > - unsigned long max_fast; > - unsigned long arena_test; > - unsigned long arena_max; > - unsigned long narenas; > -}; > - > -/* Dummy implementation which always fails. We need to provide this > - symbol so that existing Emacs binaries continue to work with > - BIND_NOW. */ > -void * > -attribute_compat_text_section > -malloc_get_state (void) > -{ > - __set_errno (ENOSYS); > - return NULL; > -} > -compat_symbol (libc, malloc_get_state, malloc_get_state, GLIBC_2_0); > - > -int > -attribute_compat_text_section > -malloc_set_state (void *msptr) > -{ > - struct malloc_save_state *ms = (struct malloc_save_state *) msptr; > - > - if (ms->magic != MALLOC_STATE_MAGIC) > - return -1; > - > - /* Must fail if the major version is too high. */ > - if ((ms->version & ~0xffl) > (MALLOC_STATE_VERSION & ~0xffl)) > - return -2; > - > - /* We do not need to perform locking here because malloc_set_state > - must be called before the first call into the malloc subsytem > - (usually via __malloc_initialize_hook). pthread_create always > - calls calloc and thus must be called only afterwards, so there > - cannot be more than one thread when we reach this point. */ > - > - /* Patch the dumped heap. We no longer try to integrate into the > - existing heap. Instead, we mark the existing chunks as mmapped. > - Together with the update to dumped_main_arena_start and > - dumped_main_arena_end, realloc and free will recognize these > - chunks as dumped fake mmapped chunks and never free them. */ > - > - /* Find the chunk with the lowest address with the heap. */ > - mchunkptr chunk = NULL; > - { > - size_t *candidate = (size_t *) ms->sbrk_base; > - size_t *end = (size_t *) (ms->sbrk_base + ms->sbrked_mem_bytes); > - while (candidate < end) > - if (*candidate != 0) > - { > - chunk = mem2chunk ((void *) (candidate + 1)); > - break; > - } > - else > - ++candidate; > - } > - if (chunk == NULL) > - return 0; > - > - /* Iterate over the dumped heap and patch the chunks so that they > - are treated as fake mmapped chunks. */ > - mchunkptr top = ms->av[2]; > - while (chunk < top) > - { > - if (inuse (chunk)) > - { > - /* Mark chunk as mmapped, to trigger the fallback path. */ > - size_t size = chunksize (chunk); > - set_head (chunk, size | IS_MMAPPED); > - } > - chunk = next_chunk (chunk); > - } > - > - /* The dumped fake mmapped chunks all lie in this address range. */ > - dumped_main_arena_start = (mchunkptr) ms->sbrk_base; > - dumped_main_arena_end = top; > - > - return 0; > -} > -compat_symbol (libc, malloc_set_state, malloc_set_state, GLIBC_2_0); > - > -#endif /* SHLIB_COMPAT */ > - > /* > * Local variables: > * c-basic-offset: 2 > diff --git a/malloc/malloc-debug.c b/malloc/malloc-debug.c > index f5290aaa6d..b7744460e9 100644 > --- a/malloc/malloc-debug.c > +++ b/malloc/malloc-debug.c > @@ -145,6 +145,19 @@ memalign_hook_ini (size_t alignment, size_t sz, const void *caller) > > static size_t pagesize; > > +/* These variables are used for undumping support. Chunked are marked > + as using mmap, but we leave them alone if they fall into this > + range. NB: The chunk size for these chunks only includes the > + initial size field (of SIZE_SZ bytes), there is no trailing size > + field (unlike with regular mmapped chunks). */ > +static mchunkptr dumped_main_arena_start; /* Inclusive. */ > +static mchunkptr dumped_main_arena_end; /* Exclusive. */ > + > +/* True if the pointer falls into the dumped arena. Use this after > + chunk_is_mmapped indicates a chunk is mmapped. */ > +#define DUMPED_MAIN_ARENA_CHUNK(p) \ > + ((p) >= dumped_main_arena_start && (p) < dumped_main_arena_end) > + > /* The allocator functions. */ > > static void * > @@ -184,7 +197,9 @@ __debug_free (void *mem) > if (__is_malloc_debug_enabled (MALLOC_MCHECK_HOOK)) > mem = free_mcheck (mem); > > - if (__is_malloc_debug_enabled (MALLOC_CHECK_HOOK)) > + if (DUMPED_MAIN_ARENA_CHUNK (mem2chunk (mem))) > + /* Do nothing. */; > + else if (__is_malloc_debug_enabled (MALLOC_CHECK_HOOK)) > free_check (mem); > else > __libc_free (mem); > @@ -207,7 +222,32 @@ __debug_realloc (void *oldmem, size_t bytes) > if ((!__is_malloc_debug_enabled (MALLOC_MCHECK_HOOK) > || !realloc_mcheck_before (&oldmem, &bytes, &oldsize, &victim))) > { > - if (__is_malloc_debug_enabled (MALLOC_CHECK_HOOK)) > + mchunkptr oldp = mem2chunk (oldmem); > + > + /* If this is a faked mmapped chunk from the dumped main arena, > + always make a copy (and do not free the old chunk). */ > + if (DUMPED_MAIN_ARENA_CHUNK (oldp)) > + { > + if (bytes == 0 && oldmem != NULL) > + victim = NULL; > + else > + { > + const INTERNAL_SIZE_T osize = chunksize (oldp); > + /* Must alloc, copy, free. */ > + victim = __debug_malloc (bytes); > + /* Copy as many bytes as are available from the old chunk > + and fit into the new size. NB: The overhead for faked > + mmapped chunks is only SIZE_SZ, not CHUNK_HDR_SZ as for > + regular mmapped chunks. */ > + if (victim != NULL) > + { > + if (bytes > osize - SIZE_SZ) > + bytes = osize - SIZE_SZ; > + memcpy (victim, oldmem, bytes); > + } > + } > + } > + else if (__is_malloc_debug_enabled (MALLOC_CHECK_HOOK)) > victim = realloc_check (oldmem, bytes); > else > victim = __libc_realloc (oldmem, bytes); > @@ -357,6 +397,13 @@ malloc_usable_size (void *mem) > if (__is_malloc_debug_enabled (MALLOC_CHECK_HOOK)) > return malloc_check_get_size (mem); > > + if (mem != NULL) > + { > + mchunkptr p = mem2chunk (mem); > + if (DUMPED_MAIN_ARENA_CHUNK (p)) > + return chunksize (p) - SIZE_SZ; > + } > + > return musable (mem); > } > > @@ -453,3 +500,134 @@ malloc_trim (size_t s) > > return LIBC_SYMBOL (malloc_trim) (s); > } > + > +#if SHLIB_COMPAT (libc_malloc_debug, GLIBC_2_0, GLIBC_2_25) > + > +/* Support for restoring dumped heaps contained in historic Emacs > + executables. The heap saving feature (malloc_get_state) is no > + longer implemented in this version of glibc, but we have a heap > + rewriter in malloc_set_state which transforms the heap into a > + version compatible with current malloc. */ > + > +#define MALLOC_STATE_MAGIC 0x444c4541l > +#define MALLOC_STATE_VERSION (0 * 0x100l + 5l) /* major*0x100 + minor */ > + > +struct malloc_save_state > +{ > + long magic; > + long version; > + mbinptr av[NBINS * 2 + 2]; > + char *sbrk_base; > + int sbrked_mem_bytes; > + unsigned long trim_threshold; > + unsigned long top_pad; > + unsigned int n_mmaps_max; > + unsigned long mmap_threshold; > + int check_action; > + unsigned long max_sbrked_mem; > + unsigned long max_total_mem; /* Always 0, for backwards compatibility. */ > + unsigned int n_mmaps; > + unsigned int max_n_mmaps; > + unsigned long mmapped_mem; > + unsigned long max_mmapped_mem; > + int using_malloc_checking; > + unsigned long max_fast; > + unsigned long arena_test; > + unsigned long arena_max; > + unsigned long narenas; > +}; > + > +/* Dummy implementation which always fails. We need to provide this > + symbol so that existing Emacs binaries continue to work with > + BIND_NOW. */ > +void * > +malloc_get_state (void) > +{ > + __set_errno (ENOSYS); > + return NULL; > +} > +compat_symbol (libc_malloc_debug, malloc_get_state, malloc_get_state, > + GLIBC_2_0); > + > +int > +malloc_set_state (void *msptr) > +{ > + struct malloc_save_state *ms = (struct malloc_save_state *) msptr; > + > + if (ms->magic != MALLOC_STATE_MAGIC) > + return -1; > + > + /* Must fail if the major version is too high. */ > + if ((ms->version & ~0xffl) > (MALLOC_STATE_VERSION & ~0xffl)) > + return -2; > + > + if (debug_initialized == 1) > + return -1; > + > + bool check_was_enabled = __is_malloc_debug_enabled (MALLOC_CHECK_HOOK); > + > + /* It's not too late, so disable MALLOC_CHECK_ and all of the hooks. */ > + __malloc_hook = NULL; > + __realloc_hook = NULL; > + __free_hook = NULL; > + __memalign_hook = NULL; > + __malloc_debug_disable (MALLOC_CHECK_HOOK); > + > + /* We do not need to perform locking here because malloc_set_state > + must be called before the first call into the malloc subsytem (usually via > + __malloc_initialize_hook). pthread_create always calls calloc and thus > + must be called only afterwards, so there cannot be more than one thread > + when we reach this point. Also handle initialization if either we ended > + up being called before the first malloc or through the hook when > + malloc-check was enabled. */ > + if (debug_initialized < 0) > + generic_hook_ini (); > + else if (check_was_enabled) > + __libc_free (__libc_malloc (0)); > + > + /* Patch the dumped heap. We no longer try to integrate into the > + existing heap. Instead, we mark the existing chunks as mmapped. > + Together with the update to dumped_main_arena_start and > + dumped_main_arena_end, realloc and free will recognize these > + chunks as dumped fake mmapped chunks and never free them. */ > + > + /* Find the chunk with the lowest address with the heap. */ > + mchunkptr chunk = NULL; > + { > + size_t *candidate = (size_t *) ms->sbrk_base; > + size_t *end = (size_t *) (ms->sbrk_base + ms->sbrked_mem_bytes); > + while (candidate < end) > + if (*candidate != 0) > + { > + chunk = mem2chunk ((void *) (candidate + 1)); > + break; > + } > + else > + ++candidate; > + } > + if (chunk == NULL) > + return 0; > + > + /* Iterate over the dumped heap and patch the chunks so that they > + are treated as fake mmapped chunks. */ > + mchunkptr top = ms->av[2]; > + while (chunk < top) > + { > + if (inuse (chunk)) > + { > + /* Mark chunk as mmapped, to trigger the fallback path. */ > + size_t size = chunksize (chunk); > + set_head (chunk, size | IS_MMAPPED); > + } > + chunk = next_chunk (chunk); > + } > + > + /* The dumped fake mmapped chunks all lie in this address range. */ > + dumped_main_arena_start = (mchunkptr) ms->sbrk_base; > + dumped_main_arena_end = top; > + > + return 0; > +} > +compat_symbol (libc_malloc_debug, malloc_set_state, malloc_set_state, > + GLIBC_2_0); > +#endif > diff --git a/malloc/malloc.c b/malloc/malloc.c > index b8fcb2f2d3..38b649fcba 100644 > --- a/malloc/malloc.c > +++ b/malloc/malloc.c > @@ -1921,19 +1921,6 @@ static struct malloc_state main_arena = > .attached_threads = 1 > }; > > -/* These variables are used for undumping support. Chunked are marked > - as using mmap, but we leave them alone if they fall into this > - range. NB: The chunk size for these chunks only includes the > - initial size field (of SIZE_SZ bytes), there is no trailing size > - field (unlike with regular mmapped chunks). */ > -static mchunkptr dumped_main_arena_start; /* Inclusive. */ > -static mchunkptr dumped_main_arena_end; /* Exclusive. */ > - > -/* True if the pointer falls into the dumped arena. Use this after > - chunk_is_mmapped indicates a chunk is mmapped. */ > -#define DUMPED_MAIN_ARENA_CHUNK(p) \ > - ((p) >= dumped_main_arena_start && (p) < dumped_main_arena_end) > - > /* There is only one instance of the malloc parameters. */ > > static struct malloc_par mp_ = > @@ -2083,7 +2070,7 @@ do_check_chunk (mstate av, mchunkptr p) > assert (prev_inuse (p)); > } > } > - else if (!DUMPED_MAIN_ARENA_CHUNK (p)) > + else > { > /* address is outside main heap */ > if (contiguous (av) && av->top != initial_top (av)) > @@ -2948,11 +2935,6 @@ munmap_chunk (mchunkptr p) > > assert (chunk_is_mmapped (p)); > > - /* Do nothing if the chunk is a faked mmapped chunk in the dumped > - main arena. We never free this memory. */ > - if (DUMPED_MAIN_ARENA_CHUNK (p)) > - return; > - > uintptr_t mem = (uintptr_t) chunk2mem (p); > uintptr_t block = (uintptr_t) p - prev_size (p); > size_t total_size = prev_size (p) + size; > @@ -3275,8 +3257,7 @@ __libc_free (void *mem) > Dumped fake mmapped chunks do not affect the threshold. */ > if (!mp_.no_dyn_threshold > && chunksize_nomask (p) > mp_.mmap_threshold > - && chunksize_nomask (p) <= DEFAULT_MMAP_THRESHOLD_MAX > - && !DUMPED_MAIN_ARENA_CHUNK (p)) > + && chunksize_nomask (p) <= DEFAULT_MMAP_THRESHOLD_MAX) > { > mp_.mmap_threshold = chunksize (p); > mp_.trim_threshold = 2 * mp_.mmap_threshold; > @@ -3343,12 +3324,9 @@ __libc_realloc (void *oldmem, size_t bytes) > /* Little security check which won't hurt performance: the allocator > never wrapps around at the end of the address space. Therefore > we can exclude some size values which might appear here by > - accident or by "design" from some intruder. We need to bypass > - this check for dumped fake mmap chunks from the old main arena > - because the new malloc may provide additional alignment. */ > + accident or by "design" from some intruder. */ > if ((__builtin_expect ((uintptr_t) oldp > (uintptr_t) -oldsize, 0) > - || __builtin_expect (misaligned_chunk (oldp), 0)) > - && !DUMPED_MAIN_ARENA_CHUNK (oldp)) > + || __builtin_expect (misaligned_chunk (oldp), 0))) > malloc_printerr ("realloc(): invalid pointer"); > > if (!checked_request2size (bytes, &nb)) > @@ -3359,24 +3337,6 @@ __libc_realloc (void *oldmem, size_t bytes) > > if (chunk_is_mmapped (oldp)) > { > - /* If this is a faked mmapped chunk from the dumped main arena, > - always make a copy (and do not free the old chunk). */ > - if (DUMPED_MAIN_ARENA_CHUNK (oldp)) > - { > - /* Must alloc, copy, free. */ > - void *newmem = __libc_malloc (bytes); > - if (newmem == 0) > - return NULL; > - /* Copy as many bytes as are available from the old chunk > - and fit into the new size. NB: The overhead for faked > - mmapped chunks is only SIZE_SZ, not CHUNK_HDR_SZ as for > - regular mmapped chunks. */ > - if (bytes > oldsize - SIZE_SZ) > - bytes = oldsize - SIZE_SZ; > - memcpy (newmem, oldmem, bytes); > - return newmem; > - } > - > void *newmem; > > #if HAVE_MREMAP > @@ -5056,12 +5016,7 @@ musable (void *mem) > p = mem2chunk (mem); > > if (chunk_is_mmapped (p)) > - { > - if (DUMPED_MAIN_ARENA_CHUNK (p)) > - result = chunksize (p) - SIZE_SZ; > - else > - result = chunksize (p) - CHUNK_HDR_SZ; > - } > + result = chunksize (p) - CHUNK_HDR_SZ; > else if (inuse (p)) > result = memsize (p); > > diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist > index b337d0d45b..c5da10a0cd 100644 > --- a/sysdeps/mach/hurd/i386/libc.abilist > +++ b/sysdeps/mach/hurd/i386/libc.abilist > @@ -1267,8 +1267,6 @@ GLIBC_2.2.6 madvise F > GLIBC_2.2.6 makecontext F > GLIBC_2.2.6 mallinfo F > GLIBC_2.2.6 malloc F > -GLIBC_2.2.6 malloc_get_state F > -GLIBC_2.2.6 malloc_set_state F > GLIBC_2.2.6 malloc_stats F > GLIBC_2.2.6 malloc_trim F > GLIBC_2.2.6 malloc_usable_size F > diff --git a/sysdeps/mach/hurd/i386/libc_malloc_debug.abilist b/sysdeps/mach/hurd/i386/libc_malloc_debug.abilist > index c1ff86dfbd..e1d9b10b22 100644 > --- a/sysdeps/mach/hurd/i386/libc_malloc_debug.abilist > +++ b/sysdeps/mach/hurd/i386/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2.6 calloc F > GLIBC_2.2.6 free F > GLIBC_2.2.6 mallinfo F > GLIBC_2.2.6 malloc F > +GLIBC_2.2.6 malloc_get_state F > +GLIBC_2.2.6 malloc_set_state F > GLIBC_2.2.6 malloc_stats F > GLIBC_2.2.6 malloc_trim F > GLIBC_2.2.6 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist > index 8d49fc0835..21a2e50a88 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist > @@ -1324,9 +1324,7 @@ GLIBC_2.17 madvise F > GLIBC_2.17 makecontext F > GLIBC_2.17 mallinfo F > GLIBC_2.17 malloc F > -GLIBC_2.17 malloc_get_state F > GLIBC_2.17 malloc_info F > -GLIBC_2.17 malloc_set_state F > GLIBC_2.17 malloc_stats F > GLIBC_2.17 malloc_trim F > GLIBC_2.17 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/aarch64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/aarch64/libc_malloc_debug.abilist > index 65fb5036bd..c82c88dcf7 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/aarch64/libc_malloc_debug.abilist > @@ -7,7 +7,9 @@ GLIBC_2.17 calloc F > GLIBC_2.17 free F > GLIBC_2.17 mallinfo F > GLIBC_2.17 malloc F > +GLIBC_2.17 malloc_get_state F > GLIBC_2.17 malloc_info F > +GLIBC_2.17 malloc_set_state F > GLIBC_2.17 malloc_stats F > GLIBC_2.17 malloc_trim F > GLIBC_2.17 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist > index db496e108f..a201fd69ba 100644 > --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist > +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist > @@ -792,8 +792,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/alpha/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/alpha/libc_malloc_debug.abilist > index bdf3541c24..15b3293b03 100644 > --- a/sysdeps/unix/sysv/linux/alpha/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/alpha/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist > index 1e73617837..eb3207400c 100644 > --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist > @@ -1757,8 +1757,6 @@ GLIBC_2.4 madvise F > GLIBC_2.4 makecontext F > GLIBC_2.4 mallinfo F > GLIBC_2.4 malloc F > -GLIBC_2.4 malloc_get_state F > -GLIBC_2.4 malloc_set_state F > GLIBC_2.4 malloc_stats F > GLIBC_2.4 malloc_trim F > GLIBC_2.4 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/arm/be/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/arm/be/libc_malloc_debug.abilist > index 81be491d53..e505469154 100644 > --- a/sysdeps/unix/sysv/linux/arm/be/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/arm/be/libc_malloc_debug.abilist > @@ -9,6 +9,8 @@ GLIBC_2.4 calloc F > GLIBC_2.4 free F > GLIBC_2.4 mallinfo F > GLIBC_2.4 malloc F > +GLIBC_2.4 malloc_get_state F > +GLIBC_2.4 malloc_set_state F > GLIBC_2.4 malloc_stats F > GLIBC_2.4 malloc_trim F > GLIBC_2.4 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist > index 2bd1f4a0f4..cdf37e5a3b 100644 > --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist > @@ -1754,8 +1754,6 @@ GLIBC_2.4 madvise F > GLIBC_2.4 makecontext F > GLIBC_2.4 mallinfo F > GLIBC_2.4 malloc F > -GLIBC_2.4 malloc_get_state F > -GLIBC_2.4 malloc_set_state F > GLIBC_2.4 malloc_stats F > GLIBC_2.4 malloc_trim F > GLIBC_2.4 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/arm/le/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/arm/le/libc_malloc_debug.abilist > index 81be491d53..e505469154 100644 > --- a/sysdeps/unix/sysv/linux/arm/le/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/arm/le/libc_malloc_debug.abilist > @@ -9,6 +9,8 @@ GLIBC_2.4 calloc F > GLIBC_2.4 free F > GLIBC_2.4 mallinfo F > GLIBC_2.4 malloc F > +GLIBC_2.4 malloc_get_state F > +GLIBC_2.4 malloc_set_state F > GLIBC_2.4 malloc_stats F > GLIBC_2.4 malloc_trim F > GLIBC_2.4 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist > index 230eb0c85a..7003962fe2 100644 > --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist > +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist > @@ -1181,8 +1181,6 @@ GLIBC_2.2 madvise F > GLIBC_2.2 makecontext F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > -GLIBC_2.2 malloc_get_state F > -GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/hppa/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/hppa/libc_malloc_debug.abilist > index 22d0bf2d8a..8798ca8653 100644 > --- a/sysdeps/unix/sysv/linux/hppa/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/hppa/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2 calloc F > GLIBC_2.2 free F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > +GLIBC_2.2 malloc_get_state F > +GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist > index d58620d817..89f8e13f50 100644 > --- a/sysdeps/unix/sysv/linux/i386/libc.abilist > +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist > @@ -774,8 +774,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/i386/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/i386/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/i386/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/i386/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist > index 5b78b61d4c..dd3a56d3fe 100644 > --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist > @@ -1197,8 +1197,6 @@ GLIBC_2.2 madvise F > GLIBC_2.2 makecontext F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > -GLIBC_2.2 malloc_get_state F > -GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/ia64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/ia64/libc_malloc_debug.abilist > index 6d5574a760..554567ab85 100644 > --- a/sysdeps/unix/sysv/linux/ia64/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/ia64/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2 calloc F > GLIBC_2.2 free F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > +GLIBC_2.2 malloc_get_state F > +GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist > index 9b9d0dff9d..f0f25b9feb 100644 > --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist > +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist > @@ -1741,8 +1741,6 @@ GLIBC_2.4 madvise F > GLIBC_2.4 makecontext F > GLIBC_2.4 mallinfo F > GLIBC_2.4 malloc F > -GLIBC_2.4 malloc_get_state F > -GLIBC_2.4 malloc_set_state F > GLIBC_2.4 malloc_stats F > GLIBC_2.4 malloc_trim F > GLIBC_2.4 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc_malloc_debug.abilist > index 81be491d53..e505469154 100644 > --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc_malloc_debug.abilist > @@ -9,6 +9,8 @@ GLIBC_2.4 calloc F > GLIBC_2.4 free F > GLIBC_2.4 mallinfo F > GLIBC_2.4 malloc F > +GLIBC_2.4 malloc_get_state F > +GLIBC_2.4 malloc_set_state F > GLIBC_2.4 malloc_stats F > GLIBC_2.4 malloc_trim F > GLIBC_2.4 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist > index 6d48dc726c..ac70103870 100644 > --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist > +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist > @@ -773,8 +773,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist > index 6abbed158e..e917e90c03 100644 > --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist > @@ -1326,9 +1326,7 @@ GLIBC_2.18 madvise F > GLIBC_2.18 makecontext F > GLIBC_2.18 mallinfo F > GLIBC_2.18 malloc F > -GLIBC_2.18 malloc_get_state F > GLIBC_2.18 malloc_info F > -GLIBC_2.18 malloc_set_state F > GLIBC_2.18 malloc_stats F > GLIBC_2.18 malloc_trim F > GLIBC_2.18 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc_malloc_debug.abilist > index daa80c4772..a082e71f94 100644 > --- a/sysdeps/unix/sysv/linux/microblaze/be/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc_malloc_debug.abilist > @@ -7,7 +7,9 @@ GLIBC_2.18 calloc F > GLIBC_2.18 free F > GLIBC_2.18 mallinfo F > GLIBC_2.18 malloc F > +GLIBC_2.18 malloc_get_state F > GLIBC_2.18 malloc_info F > +GLIBC_2.18 malloc_set_state F > GLIBC_2.18 malloc_stats F > GLIBC_2.18 malloc_trim F > GLIBC_2.18 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist > index 8b9ae1f072..c2e722596b 100644 > --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist > @@ -1326,9 +1326,7 @@ GLIBC_2.18 madvise F > GLIBC_2.18 makecontext F > GLIBC_2.18 mallinfo F > GLIBC_2.18 malloc F > -GLIBC_2.18 malloc_get_state F > GLIBC_2.18 malloc_info F > -GLIBC_2.18 malloc_set_state F > GLIBC_2.18 malloc_stats F > GLIBC_2.18 malloc_trim F > GLIBC_2.18 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc_malloc_debug.abilist > index daa80c4772..a082e71f94 100644 > --- a/sysdeps/unix/sysv/linux/microblaze/le/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc_malloc_debug.abilist > @@ -7,7 +7,9 @@ GLIBC_2.18 calloc F > GLIBC_2.18 free F > GLIBC_2.18 mallinfo F > GLIBC_2.18 malloc F > +GLIBC_2.18 malloc_get_state F > GLIBC_2.18 malloc_info F > +GLIBC_2.18 malloc_set_state F > GLIBC_2.18 malloc_stats F > GLIBC_2.18 malloc_trim F > GLIBC_2.18 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist > index 095c2ea5da..153528de6d 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist > @@ -771,8 +771,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist > index bc1a353726..e36d47bd32 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist > @@ -771,8 +771,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist > index 63db2192c9..e57dfb4165 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist > @@ -771,8 +771,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist > index 35372f6c1a..c68f7e3c6c 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist > @@ -769,8 +769,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc_malloc_debug.abilist > index bdf3541c24..15b3293b03 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist > index 2303e12935..451a7a4eb2 100644 > --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist > +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist > @@ -1369,9 +1369,7 @@ GLIBC_2.21 madvise F > GLIBC_2.21 makecontext F > GLIBC_2.21 mallinfo F > GLIBC_2.21 malloc F > -GLIBC_2.21 malloc_get_state F > GLIBC_2.21 malloc_info F > -GLIBC_2.21 malloc_set_state F > GLIBC_2.21 malloc_stats F > GLIBC_2.21 malloc_trim F > GLIBC_2.21 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist > index ce6c5f7631..de9a79a6dd 100644 > --- a/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist > @@ -7,7 +7,9 @@ GLIBC_2.21 calloc F > GLIBC_2.21 free F > GLIBC_2.21 mallinfo F > GLIBC_2.21 malloc F > +GLIBC_2.21 malloc_get_state F > GLIBC_2.21 malloc_info F > +GLIBC_2.21 malloc_set_state F > GLIBC_2.21 malloc_stats F > GLIBC_2.21 malloc_trim F > GLIBC_2.21 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist > index b51067a81f..84607fa77f 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist > @@ -782,8 +782,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist > index c5112da9e5..7c5f03520a 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist > @@ -782,8 +782,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist > index 0b7700cb84..cf864632d0 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist > @@ -1301,8 +1301,6 @@ GLIBC_2.3 madvise F > GLIBC_2.3 makecontext F > GLIBC_2.3 mallinfo F > GLIBC_2.3 malloc F > -GLIBC_2.3 malloc_get_state F > -GLIBC_2.3 malloc_set_state F > GLIBC_2.3 malloc_stats F > GLIBC_2.3 malloc_trim F > GLIBC_2.3 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc_malloc_debug.abilist > index 7f134f9b48..9f54dfd562 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.3 calloc F > GLIBC_2.3 free F > GLIBC_2.3 mallinfo F > GLIBC_2.3 malloc F > +GLIBC_2.3 malloc_get_state F > +GLIBC_2.3 malloc_set_state F > GLIBC_2.3 malloc_stats F > GLIBC_2.3 malloc_trim F > GLIBC_2.3 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist > index 47e5a5aa79..d566d675d0 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist > @@ -1412,9 +1412,7 @@ GLIBC_2.17 madvise F > GLIBC_2.17 makecontext F > GLIBC_2.17 mallinfo F > GLIBC_2.17 malloc F > -GLIBC_2.17 malloc_get_state F > GLIBC_2.17 malloc_info F > -GLIBC_2.17 malloc_set_state F > GLIBC_2.17 malloc_stats F > GLIBC_2.17 malloc_trim F > GLIBC_2.17 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc_malloc_debug.abilist > index 65fb5036bd..c82c88dcf7 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc_malloc_debug.abilist > @@ -7,7 +7,9 @@ GLIBC_2.17 calloc F > GLIBC_2.17 free F > GLIBC_2.17 mallinfo F > GLIBC_2.17 malloc F > +GLIBC_2.17 malloc_get_state F > GLIBC_2.17 malloc_info F > +GLIBC_2.17 malloc_set_state F > GLIBC_2.17 malloc_stats F > GLIBC_2.17 malloc_trim F > GLIBC_2.17 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist > index f803a1093c..6d9e7c1463 100644 > --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist > @@ -772,8 +772,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist > index 3ec521cf52..83e542aa8c 100644 > --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist > @@ -1191,8 +1191,6 @@ GLIBC_2.2 madvise F > GLIBC_2.2 makecontext F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > -GLIBC_2.2 malloc_get_state F > -GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist > index 6d5574a760..554567ab85 100644 > --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2 calloc F > GLIBC_2.2 free F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > +GLIBC_2.2 malloc_get_state F > +GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist > index fcb9c99713..ebe10d06ed 100644 > --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist > @@ -1184,8 +1184,6 @@ GLIBC_2.2 madvise F > GLIBC_2.2 makecontext F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > -GLIBC_2.2 malloc_get_state F > -GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sh/be/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/sh/be/libc_malloc_debug.abilist > index 22d0bf2d8a..8798ca8653 100644 > --- a/sysdeps/unix/sysv/linux/sh/be/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/sh/be/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2 calloc F > GLIBC_2.2 free F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > +GLIBC_2.2 malloc_get_state F > +GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist > index aa294c7685..c5dfc4045a 100644 > --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist > @@ -1184,8 +1184,6 @@ GLIBC_2.2 madvise F > GLIBC_2.2 makecontext F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > -GLIBC_2.2 malloc_get_state F > -GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sh/le/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/sh/le/libc_malloc_debug.abilist > index 22d0bf2d8a..8798ca8653 100644 > --- a/sysdeps/unix/sysv/linux/sh/le/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/sh/le/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2 calloc F > GLIBC_2.2 free F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > +GLIBC_2.2 malloc_get_state F > +GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist > index f5f6bf24fd..e2c658d091 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist > @@ -774,8 +774,6 @@ GLIBC_2.0 lseek F > GLIBC_2.0 madvise F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > -GLIBC_2.0 malloc_get_state F > -GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc_malloc_debug.abilist > index 6b3c5bfd0b..55ef952885 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc_malloc_debug.abilist > @@ -6,6 +6,8 @@ GLIBC_2.0 calloc F > GLIBC_2.0 free F > GLIBC_2.0 mallinfo F > GLIBC_2.0 malloc F > +GLIBC_2.0 malloc_get_state F > +GLIBC_2.0 malloc_set_state F > GLIBC_2.0 malloc_stats F > GLIBC_2.0 malloc_trim F > GLIBC_2.0 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist > index e16b738b22..6268875ba3 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist > @@ -1226,8 +1226,6 @@ GLIBC_2.2 madvise F > GLIBC_2.2 makecontext F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > -GLIBC_2.2 malloc_get_state F > -GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc_malloc_debug.abilist > index 6d5574a760..554567ab85 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2 calloc F > GLIBC_2.2 free F > GLIBC_2.2 mallinfo F > GLIBC_2.2 malloc F > +GLIBC_2.2 malloc_get_state F > +GLIBC_2.2 malloc_set_state F > GLIBC_2.2 malloc_stats F > GLIBC_2.2 malloc_trim F > GLIBC_2.2 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist > index 12cabf3f88..095e914b73 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist > @@ -1188,8 +1188,6 @@ GLIBC_2.2.5 madvise F > GLIBC_2.2.5 makecontext F > GLIBC_2.2.5 mallinfo F > GLIBC_2.2.5 malloc F > -GLIBC_2.2.5 malloc_get_state F > -GLIBC_2.2.5 malloc_set_state F > GLIBC_2.2.5 malloc_stats F > GLIBC_2.2.5 malloc_trim F > GLIBC_2.2.5 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc_malloc_debug.abilist > index 3b7b729d64..45dfcd31c5 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/64/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc_malloc_debug.abilist > @@ -8,6 +8,8 @@ GLIBC_2.2.5 calloc F > GLIBC_2.2.5 free F > GLIBC_2.2.5 mallinfo F > GLIBC_2.2.5 malloc F > +GLIBC_2.2.5 malloc_get_state F > +GLIBC_2.2.5 malloc_set_state F > GLIBC_2.2.5 malloc_stats F > GLIBC_2.2.5 malloc_trim F > GLIBC_2.2.5 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist > index 545af5a689..dd910f7fe9 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist > @@ -1329,9 +1329,7 @@ GLIBC_2.16 madvise F > GLIBC_2.16 makecontext F > GLIBC_2.16 mallinfo F > GLIBC_2.16 malloc F > -GLIBC_2.16 malloc_get_state F > GLIBC_2.16 malloc_info F > -GLIBC_2.16 malloc_set_state F > GLIBC_2.16 malloc_stats F > GLIBC_2.16 malloc_trim F > GLIBC_2.16 malloc_usable_size F > diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc_malloc_debug.abilist > index 91d737a7f8..821525018b 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc_malloc_debug.abilist > +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc_malloc_debug.abilist > @@ -7,7 +7,9 @@ GLIBC_2.16 calloc F > GLIBC_2.16 free F > GLIBC_2.16 mallinfo F > GLIBC_2.16 malloc F > +GLIBC_2.16 malloc_get_state F > GLIBC_2.16 malloc_info F > +GLIBC_2.16 malloc_set_state F > GLIBC_2.16 malloc_stats F > GLIBC_2.16 malloc_trim F > GLIBC_2.16 malloc_usable_size F > -- Cheers, Carlos.