]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
elf: Implement __rtld_malloc_is_complete
authorFlorian Weimer <fweimer@redhat.com>
Thu, 8 Oct 2020 08:57:09 +0000 (10:57 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 8 Oct 2020 09:00:42 +0000 (11:00 +0200)
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>
elf/dl-minimal.c
include/rtld-malloc.h

index 7c64e24c879fe365248882770ac3203c6e89eabd..b37abfaff919383a1f1217f94798c65a0a70f398 100644 (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,
index b026a3270cd24819a4c245d77634260696141155..9266ec532f3f3376d8261c8a01a942a6284f52c4 100644 (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.  */