diff --git a/arch/x86_64/src/Makefile b/arch/x86_64/src/Makefile index 0c97c4bc6bf..c436a6996e7 100644 --- a/arch/x86_64/src/Makefile +++ b/arch/x86_64/src/Makefile @@ -113,7 +113,7 @@ nuttx$(EXEEXT): board/libboard$(LIBEXT) $(ARCHSCRIPT) @echo "LD: nuttx$(EXEEXT)" $(Q) $(LD) $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ -o $(NUTTX) $(EXTRA_OBJS) \ - $(LDSTARTGROUP) $(EXTRA_LIBS) --whole-archive --no-relax $(LDLIBS) $(LDENDGROUP) + $(LDSTARTGROUP) $(EXTRA_LIBS) --no-relax $(LDLIBS) $(LDENDGROUP) ifneq ($(CONFIG_WINDOWS_NATIVE),y) $(Q) $(NM) $(NUTTX) | \ grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ diff --git a/arch/x86_64/src/cmake/Toolchain.cmake b/arch/x86_64/src/cmake/Toolchain.cmake index f28384815b9..3d79887381c 100644 --- a/arch/x86_64/src/cmake/Toolchain.cmake +++ b/arch/x86_64/src/cmake/Toolchain.cmake @@ -116,6 +116,10 @@ if(CONFIG_DEBUG_OPT_UNUSED_SECTIONS) add_compile_options(-ffunction-sections -fdata-sections) endif() +if(CONFIG_DEBUG_LINK_WHOLE_ARCHIVE) + add_link_options(-Wl,--whole-archive) +endif() + if(CONFIG_ARCH_INTEL64_HAVE_RDRAND) add_compile_options(-mrdrnd) endif() diff --git a/arch/x86_64/src/common/Toolchain.defs b/arch/x86_64/src/common/Toolchain.defs index 68ef67cf5fc..32264de3cc2 100644 --- a/arch/x86_64/src/common/Toolchain.defs +++ b/arch/x86_64/src/common/Toolchain.defs @@ -43,6 +43,10 @@ ifeq ($(CONFIG_HOST_MACOS),y) CROSSDEV = x86_64-elf- endif +ifeq ($(CONFIG_DEBUG_LINK_WHOLE_ARCHIVE),y) + LDFLAGS += --whole-archive +endif + CC = $(CROSSDEV)gcc CPP = $(CROSSDEV)gcc -E -x c LD = $(CROSSDEV)ld