Remove check for working malloc_set_state

This check was added to 'malloc_initialize_hook' in order to "insulate
Emacs better from configuration screwups" (commit b4788b9394).  With
unexec gone, we no longer use 'malloc_set_state', and thus don't need
this check.

Note that this patch removes the last uses of the deprecated glibc
functions 'malloc_set_state' and 'malloc_get_state' from our code.

* src/alloc.c (malloc_initialize_hook) [DOUG_LEA_MALLOC]:
Remove check for working 'malloc_set_state'.
(alloc_unexec_pre) [DOUG_LEA_MALLOC]: Delete unused function.
(alloc_unexec_post) [DOUG_LEA_MALLOC]: Delete function.
(malloc_state_ptr) [DOUG_LEA_MALLOC]: Delete variable.
* configure.ac (emacs_cv_var_doug_lea_malloc): Don't check for
malloc_set_state and malloc_get_state.
This commit is contained in:
Stefan Kangas 2024-12-10 11:07:01 +01:00
parent bb64e9464c
commit 892be3b3d7
2 changed files with 2 additions and 32 deletions

View file

@ -3206,8 +3206,7 @@ AC_CACHE_CHECK(
[AC_LANG_PROGRAM(
[[#include <malloc.h>
static void hook (void) {}]],
[[malloc_set_state (malloc_get_state ());
__after_morecore_hook = hook;
[[__after_morecore_hook = hook;
__malloc_initialize_hook = hook;]])],
[emacs_cv_var_doug_lea_malloc=yes])
fi])
@ -3255,7 +3254,7 @@ if test "$doug_lea_malloc" = "yes"; then
fi
AC_DEFINE([DOUG_LEA_MALLOC], [1],
[Define to 1 if the system memory allocator is Doug Lea style,
with malloc hooks and malloc_set_state.])
with malloc hooks.])
## Use mmap directly for allocating larger buffers.
## FIXME this comes from src/s/{gnu,gnu-linux}.h:

View file

@ -209,10 +209,6 @@ enum { MALLOC_ALIGNMENT = max (2 * sizeof (size_t), alignof (long double)) };
# define MMAP_MAX_AREAS 100000000
/* A pointer to the memory allocated that copies that static data
inside glibc's malloc. */
static void *malloc_state_ptr;
/* Restore the dumped malloc state. Because malloc can be invoked
even before main (e.g. by the dynamic linker), the dumped malloc
state must be restored as early as possible using this special hook. */
@ -247,10 +243,6 @@ malloc_initialize_hook (void)
break;
}
}
if (malloc_set_state (malloc_state_ptr) != 0)
emacs_abort ();
alloc_unexec_post ();
}
}
@ -266,27 +258,6 @@ voidfuncptr __MALLOC_HOOK_VOLATILE __malloc_initialize_hook EXTERNALLY_VISIBLE
#endif
#if defined DOUG_LEA_MALLOC
/* Allocator-related actions to do just before and after unexec. */
void
alloc_unexec_pre (void)
{
# ifdef DOUG_LEA_MALLOC
malloc_state_ptr = malloc_get_state ();
if (!malloc_state_ptr)
fatal ("malloc_get_state: %s", strerror (errno));
# endif
}
void
alloc_unexec_post (void)
{
# ifdef DOUG_LEA_MALLOC
free (malloc_state_ptr);
# endif
}
# ifdef GNU_LINUX
/* The address where the heap starts. */