[Concept,04/15] malloc: Avoid defining calloc()

Message ID 20250819193918.874215-5-sjg@u-boot.org
State New
Headers
Series test: Improvements to make check et al |

Commit Message

Simon Glass Aug. 19, 2025, 7:39 p.m. UTC
  From: Simon Glass <sjg@chromium.org>

The C runtime calls malloc() before starting main(), e.g. to get some
memory to use for dynamic linking.

If CONFIG_TPL_SYS_MALLOC_SIMPLE is enabled, the calloc() symbol is
defined within U-Boot. The C runtime may call that too.

Use the same #define technique as for malloc_simple(), to fix a crash
on my machine when running:

   /tmp/b/sandbox_vpl/tpl/u-boot-tpl -D

This does not happen in CI, perhaps because the C runtime uses malloc()
instead of calloc().

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 common/malloc_simple.c | 2 +-
 include/malloc.h       | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)
  

Patch

diff --git a/common/malloc_simple.c b/common/malloc_simple.c
index f0f90a095bd..d820ded68c3 100644
--- a/common/malloc_simple.c
+++ b/common/malloc_simple.c
@@ -65,7 +65,7 @@  void *memalign_simple(size_t align, size_t bytes)
 }
 
 #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE)
-void *calloc(size_t nmemb, size_t elem_size)
+void *calloc_simple(size_t nmemb, size_t elem_size)
 {
 	size_t size = nmemb * elem_size;
 	void *ptr;
diff --git a/include/malloc.h b/include/malloc.h
index 9e0be482416..728451086aa 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -882,6 +882,7 @@  void malloc_disable_testing(void);
 #if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE)
 #define malloc malloc_simple
 #define realloc realloc_simple
+#define calloc calloc_simple
 #define memalign memalign_simple
 #if IS_ENABLED(CONFIG_VALGRIND)
 #define free free_simple