diff options
author | Florian Weimer <fweimer@redhat.com> | 2020-10-08 10:57:09 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2020-10-08 11:00:42 +0200 |
commit | 72d36ffd7db55ae599f4c77feb0eae25a0f3714e (patch) | |
tree | 3a769d277965e956b728888d4d8c90b1c3eeeed9 | |
parent | c0e9ddf59e73e21afe15fca4e94cf7b4b7359bf2 (diff) | |
download | glibc-72d36ffd7db55ae599f4c77feb0eae25a0f3714e.tar.gz glibc-72d36ffd7db55ae599f4c77feb0eae25a0f3714e.tar.xz glibc-72d36ffd7db55ae599f4c77feb0eae25a0f3714e.zip |
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>
-rw-r--r-- | elf/dl-minimal.c | 8 | ||||
-rw-r--r-- | include/rtld-malloc.h | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c index 7c64e24c87..b37abfaff9 100644 --- a/elf/dl-minimal.c +++ b/elf/dl-minimal.c @@ -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 b026a3270c..9266ec532f 100644 --- a/include/rtld-malloc.h +++ b/include/rtld-malloc.h @@ -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. */ |