diff --git a/config/nrfconnect/chip-module/CMakeLists.txt b/config/nrfconnect/chip-module/CMakeLists.txt index 2f87e4b01c..416ae66fee 100644 --- a/config/nrfconnect/chip-module/CMakeLists.txt +++ b/config/nrfconnect/chip-module/CMakeLists.txt @@ -125,6 +125,10 @@ else() set(DATA_MODEL_INTERFACE "disabled") endif() +# Force libstdc++_nano + +set_linker_property(PROPERTY c++_library "-lstdc++_nano") + # ============================================================================== # Generate configuration for CHIP GN build system # ============================================================================== diff --git a/config/nrfconnect/chip-module/Kconfig.defaults b/config/nrfconnect/chip-module/Kconfig.defaults index 2b7d7d3213..7a1b9d931f 100644 --- a/config/nrfconnect/chip-module/Kconfig.defaults +++ b/config/nrfconnect/chip-module/Kconfig.defaults @@ -25,9 +25,12 @@ if CHIP # ============================================================================== choice LIBC_IMPLEMENTATION - default NEWLIB_LIBC + default PICOLIBC endchoice +config NEWLIB_LIBC_NANO + default n + config ASSERT default y diff --git a/config/zephyr/Kconfig b/config/zephyr/Kconfig index 4a8a5e65d3..b2555027e0 100644 --- a/config/zephyr/Kconfig +++ b/config/zephyr/Kconfig @@ -29,7 +29,6 @@ menuconfig CHIP select CPP imply REQUIRES_FULL_LIBCPP imply REQUIRES_FULL_LIBC - imply NEWLIB_LIBC_NANO imply CBPRINTF_LIBC_SUBSTS imply POSIX_API if !ARCH_POSIX && !CHIP_NRF_PLATFORM imply EVENTFD if !ARCH_POSIX diff --git a/src/platform/Zephyr/SysHeapMalloc.cpp b/src/platform/Zephyr/SysHeapMalloc.cpp index 3f2a65283d..d1a6c13bde 100644 --- a/src/platform/Zephyr/SysHeapMalloc.cpp +++ b/src/platform/Zephyr/SysHeapMalloc.cpp @@ -184,6 +184,7 @@ EXTERNALLY_VISIBLE void * WRAP(calloc)(size_t num, size_t size) ALIAS("_ZN4chip1 EXTERNALLY_VISIBLE void * WRAP(realloc)(void * mem, size_t size) ALIAS("_ZN4chip11DeviceLayer6Malloc7ReallocEPvj"); EXTERNALLY_VISIBLE void WRAP(free)(void * mem) ALIAS("_ZN4chip11DeviceLayer6Malloc4FreeEPv"); +#ifdef CONFIG_NEWLIB_LIBC EXTERNALLY_VISIBLE void * WRAP(_malloc_r)(_reent *, size_t size) { return WRAP(malloc)(size); @@ -203,6 +204,7 @@ EXTERNALLY_VISIBLE void WRAP(_free_r)(_reent *, void * mem) { WRAP(free)(mem); } +#endif // CONFIG_NEWLIB_LIBC } // extern "C"