This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 1eec5a12da812439393da7baa3f6ccac8cfba401 Author: jingfei <[email protected]> AuthorDate: Tue Oct 13 18:09:18 2026 +0800 libc: build lib_cxx_initialize only for C++ init Without CONFIG_HAVE_CXXINITIALIZE the body of lib_cxx_initialize() compiles away, but the empty function and its call from nxtask_startup() remain. Build the file only when C++ static initialization is supported and make the call a no-op otherwise. stm32f103-minimum:nsh: text -16 bytes. Signed-off-by: jingfei <[email protected]> --- libs/libc/libc.h | 4 ++++ libs/libc/misc/CMakeLists.txt | 5 ++++- libs/libc/misc/Make.defs | 6 +++++- libs/libc/misc/lib_cxx_initialize.c | 3 +-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/libs/libc/libc.h b/libs/libc/libc.h index 02c8d5928a2..65691ed3801 100644 --- a/libs/libc/libc.h +++ b/libs/libc/libc.h @@ -334,7 +334,11 @@ int lib_restoredir(void); /* Defined in lib_cxx_initialize.c */ +#ifdef CONFIG_HAVE_CXXINITIALIZE void lib_cxx_initialize(void); +#else +# define lib_cxx_initialize() +#endif #undef EXTERN #if defined(__cplusplus) diff --git a/libs/libc/misc/CMakeLists.txt b/libs/libc/misc/CMakeLists.txt index 774710ad3f5..c226fd40e8c 100644 --- a/libs/libc/misc/CMakeLists.txt +++ b/libs/libc/misc/CMakeLists.txt @@ -36,7 +36,6 @@ list( lib_xorshift128.c lib_tea_encrypt.c lib_tea_decrypt.c - lib_cxx_initialize.c lib_idr.c lib_impure.c lib_memfd.c @@ -51,6 +50,10 @@ list( lib_getnprocs.c lib_mntent.c) +if(CONFIG_HAVE_CXXINITIALIZE) + list(APPEND SRCS lib_cxx_initialize.c) +endif() + if(CONFIG_LIBC_TEMPBUFFER) list(APPEND SRCS lib_tempbuffer.c) endif() diff --git a/libs/libc/misc/Make.defs b/libs/libc/misc/Make.defs index c5fa595206e..1a1e1f606a6 100644 --- a/libs/libc/misc/Make.defs +++ b/libs/libc/misc/Make.defs @@ -24,11 +24,15 @@ CSRCS += lib_bitmap.c lib_circbuf.c lib_creat.c lib_mknod.c lib_umask.c CSRCS += lib_utsname.c lib_getrandom.c lib_xorshift128.c lib_tea_encrypt.c -CSRCS += lib_tea_decrypt.c lib_cxx_initialize.c lib_impure.c lib_memfd.c +CSRCS += lib_tea_decrypt.c lib_impure.c lib_memfd.c CSRCS += lib_mutex.c lib_fchmodat.c lib_fstatat.c lib_getfullpath.c CSRCS += lib_openat.c lib_mkdirat.c lib_utimensat.c lib_mallopt.c CSRCS += lib_idr.c lib_getnprocs.c lib_mntent.c +ifeq ($(CONFIG_HAVE_CXXINITIALIZE),y) +CSRCS += lib_cxx_initialize.c +endif + ifeq ($(CONFIG_LIBC_TEMPBUFFER),y) CSRCS += lib_tempbuffer.c endif diff --git a/libs/libc/misc/lib_cxx_initialize.c b/libs/libc/misc/lib_cxx_initialize.c index 1f75d5ba8d4..cfb6daa1371 100644 --- a/libs/libc/misc/lib_cxx_initialize.c +++ b/libs/libc/misc/lib_cxx_initialize.c @@ -60,7 +60,6 @@ void lib_cxx_initialize(void) { -#ifdef CONFIG_HAVE_CXXINITIALIZE static int inited = 0; if (inited == 0) @@ -74,6 +73,7 @@ void lib_cxx_initialize(void) for (initp = _sinit; initp < _einit; initp++) { initializer_t initializer = *initp; + sinfo("initp: %p initializer: %p\n", initp, initializer); /* Make sure that the address is non-NULL. Some toolchains may put @@ -89,5 +89,4 @@ void lib_cxx_initialize(void) inited = 1; } -#endif }
