elf: Implement __rtld_malloc_is_complete

In some cases, it is difficult to determine the kind of malloc
based on the execution context, so a function to determine that
is helpful.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
This commit is contained in:
Florian Weimer 2020-10-08 10:57:09 +02:00
parent c0e9ddf59e
commit 72d36ffd7d
2 changed files with 12 additions and 0 deletions

View File

@ -59,6 +59,14 @@ __rtld_malloc_init_stubs (void)
__rtld_realloc = &rtld_realloc;
}
bool
__rtld_malloc_is_complete (void)
{
/* The caller assumes that there is an active malloc. */
assert (__rtld_malloc != NULL);
return __rtld_malloc != &rtld_malloc;
}
/* Lookup NAME at VERSION in the scope of MATCH. */
static void *
lookup_malloc_symbol (struct link_map *main_map, const char *name,

View File

@ -66,6 +66,10 @@ realloc (void *ptr, size_t size)
implementation. */
void __rtld_malloc_init_stubs (void) attribute_hidden;
/* Return false if the active malloc is the ld.so minimal malloc, true
if it is the full implementation from libc.so. */
_Bool __rtld_malloc_is_complete (void) attribute_hidden;
/* Called shortly before the final self-relocation (when RELRO
variables are still writable) to activate the real malloc
implementation. MAIN_MAP is the link map of the executable. */