From 37538d218877130ac59ebcd62fe093791b110a34 Mon Sep 17 00:00:00 2001 From: Alexey Gerenkov Date: Sat, 20 Mar 2021 00:37:15 +0300 Subject: [PATCH] gcov: Fixes not linked gcov rtio functions --- components/app_trace/CMakeLists.txt | 19 +++++++++++++------ components/app_trace/component.mk | 9 +++++---- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/components/app_trace/CMakeLists.txt b/components/app_trace/CMakeLists.txt index b9bcdddccc..2432e5fb2b 100644 --- a/components/app_trace/CMakeLists.txt +++ b/components/app_trace/CMakeLists.txt @@ -1,4 +1,4 @@ -set(srcs +set(srcs "app_trace.c" "app_trace_util.c" "host_file_io.c" @@ -12,7 +12,7 @@ if(CONFIG_SYSVIEW_ENABLE) sys_view/SEGGER sys_view/Sample/OS) - list(APPEND srcs + list(APPEND srcs "sys_view/SEGGER/SEGGER_SYSVIEW.c" "sys_view/Sample/Config/SEGGER_SYSVIEW_Config_FreeRTOS.c" "sys_view/Sample/OS/SEGGER_SYSVIEW_FreeRTOS.c" @@ -30,7 +30,14 @@ idf_component_register(SRCS "${srcs}" PRIV_REQUIRES soc LDFRAGMENTS linker.lf) -# disable --coverage for this component, as it is used as transport -# for gcov -target_compile_options(${COMPONENT_LIB} PRIVATE "-fno-profile-arcs" "-fno-test-coverage") -target_link_libraries(${COMPONENT_LIB} PUBLIC gcov ${LIBC} ${LIBM} gcc) + +if(CONFIG_ESP32_GCOV_ENABLE) + # disable --coverage for this component, as it is used as transport + # for gcov + target_compile_options(${COMPONENT_LIB} PRIVATE "-fno-profile-arcs" "-fno-test-coverage") + + # Force app_trace to also appear later than gcov in link line + idf_component_get_property(app_trace app_trace COMPONENT_LIB) + target_link_libraries(${COMPONENT_LIB} INTERFACE + "-Wl,--undefined=gcov_rtio_atexit" $ gcov $ c) +endif() diff --git a/components/app_trace/component.mk b/components/app_trace/component.mk index a17fa814f0..b42970693e 100644 --- a/components/app_trace/component.mk +++ b/components/app_trace/component.mk @@ -8,11 +8,7 @@ COMPONENT_ADD_INCLUDEDIRS = include COMPONENT_ADD_LDFLAGS = -lapp_trace -# do not produce gcov info for this module, it is used as transport for gcov -CFLAGS := $(subst --coverage,,$(CFLAGS)) - ifdef CONFIG_SYSVIEW_ENABLE - COMPONENT_ADD_INCLUDEDIRS += \ sys_view/Config \ sys_view/SEGGER \ @@ -26,7 +22,12 @@ COMPONENT_SRCDIRS += \ sys_view/esp32 \ sys_view/ext else +ifdef CONFIG_ESP32_GCOV_ENABLE +# do not produce gcov info for this module, it is used as transport for gcov +CFLAGS := $(subst --coverage,,$(CFLAGS)) +COMPONENT_ADD_LDFLAGS += -Wl,--undefined=gcov_rtio_atexit COMPONENT_SRCDIRS += gcov endif +endif COMPONENT_ADD_LDFRAGMENTS += linker.lf