| commit 72d36ffd7db55ae599f4c77feb0eae25a0f3714e |
| Author: Florian Weimer <fweimer@redhat.com> |
| Date: Thu Oct 8 10:57:09 2020 +0200 |
| |
| 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> |
| |
| diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c |
| index 4335f1bd24289b01..cf7df8a8d5eabe9d 100644 |
| |
| |
| @@ -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, |
| diff --git a/include/rtld-malloc.h b/include/rtld-malloc.h |
| index b026a3270cd24819..9266ec532f3f3376 100644 |
| |
| |
| @@ -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. */ |