Skip to content

Commit

Permalink
zephyr/alloc: Add newlib-style allocator stub for C++ builds
Browse files Browse the repository at this point in the history
This is a weak stub for the Cadence libc's allocator (which is just a
newlib build).  It's traditionally been provided like this in SOF for
the benefit of C++ code where the standard library needs to link to a
working malloc() even if it will never call it.

Longer term this should be integrated as a working allocator, either
unified with the one here or in the Zephyr libc layer.  Zephyr already
provides a newlib-compatible _sbrk_r(), we just have to tell it to use
it when linking against Cadence libc.

Signed-off-by: Andy Ross <andyross@google.com>
  • Loading branch information
andyross committed Jan 3, 2024
1 parent 9315ada commit eb1922d
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions zephyr/lib/alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,4 +367,16 @@ static int heap_init(void)
return 0;
}

/* This is a weak stub for the Cadence libc's allocator (which is just
* a newlib build). It's traditionally been provided like this in SOF
* for the benefit of C++ code where the standard library needs to
* link to a working malloc() even if it will never call it.
*/
struct _reent;
__weak void *_sbrk_r(struct _reent *ptr, ptrdiff_t incr)
{
k_panic();
return NULL;
}

SYS_INIT(heap_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_OBJECTS);

0 comments on commit eb1922d

Please sign in to comment.