Remove __morecore and __default_morecore

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.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
Siddhesh Poyarekar 2021-07-22 18:37:57 +05:30
parent 57b07bede1
commit 55a4dd3930
8 changed files with 24 additions and 49 deletions

5
NEWS
View File

@ -127,6 +127,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.
Changes to build and runtime requirements:
* On Linux, the shm_open, sem_open, and related functions now expect the

View File

@ -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)
struct abort_msg_s
{
unsigned int size;

View File

@ -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 \
scratch_buffer_dupfree \
scratch_buffer_grow scratch_buffer_grow_preserve \
scratch_buffer_set_array_size \

View File

@ -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
#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;
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;
#endif
thread_arena = &main_arena;

View File

@ -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);
#endif
/* Hooks for debugging versions. The initial hooks just call the

View File

@ -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)
#define MORECORE_FAILURE 0
void * __default_morecore (ptrdiff_t);
void *(*__morecore)(ptrdiff_t) = __default_morecore;
/* Memory tagging. */

View File

@ -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;
/* SVID2/XPG mallinfo structure */
struct mallinfo

View File

@ -15,39 +15,27 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
#ifndef _MALLOC_INTERNAL
# define _MALLOC_INTERNAL
# include <malloc.h>
#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 <stddef.h>
# include <stdlib.h>
extern void *__sbrk (ptrdiff_t increment) __THROW;
libc_hidden_proto (__sbrk)
#endif
#ifndef NULL
# define NULL 0
#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
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);
#endif