From f076a7260e355328093067b465d35e979d41fc8d Mon Sep 17 00:00:00 2001 From: Philippe G Date: Tue, 28 Dec 2021 20:04:24 -0800 Subject: [PATCH] make some squeezelite symbol weak to force removal from recovery during link --- components/platform_console/app_recovery/recovery.c | 11 +++++++++++ components/services/CMakeLists.txt | 2 +- components/services/accessors.c | 1 - components/tools/CMakeLists.txt | 6 +++--- components/tools/tools.h | 9 --------- components/tools/trace.c | 2 +- squeezelite.cmake | 3 +++ 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/components/platform_console/app_recovery/recovery.c b/components/platform_console/app_recovery/recovery.c index 9ca42aa1..94557cc2 100644 --- a/components/platform_console/app_recovery/recovery.c +++ b/components/platform_console/app_recovery/recovery.c @@ -30,8 +30,19 @@ const __attribute__((section(".rodata_desc"))) esp_app_desc_t esp_app_desc = { int main(int argc, char **argv){ return 1; } + void register_squeezelite(){ } + +void register_external(void) { +} + +void deregister_external(void) { +} + +void decode_restore(int external) { +} + esp_err_t start_ota(const char * bin_url, char * bin_buffer, uint32_t length) { return process_recovery_ota(bin_url,bin_buffer,length); diff --git a/components/services/CMakeLists.txt b/components/services/CMakeLists.txt index 7617ef6e..6726d125 100644 --- a/components/services/CMakeLists.txt +++ b/components/services/CMakeLists.txt @@ -1,7 +1,7 @@ idf_component_register(SRC_DIRS . INCLUDE_DIRS . ${IDF_PATH}/components/driver REQUIRES json tools platform_config display wifi-manager - PRIV_REQUIRES soc esp32 squeezelite + PRIV_REQUIRES soc esp32 ) diff --git a/components/services/accessors.c b/components/services/accessors.c index f2b454f7..cdd9ad83 100644 --- a/components/services/accessors.c +++ b/components/services/accessors.c @@ -28,7 +28,6 @@ #include "driver/gpio.h" #include "driver/spi_common_internal.h" #include "esp32/rom/efuse.h" -#include "adac.h" #include "tools.h" #include "monitor.h" #include "messaging.h" diff --git a/components/tools/CMakeLists.txt b/components/tools/CMakeLists.txt index 33b3491e..6f51e1c0 100644 --- a/components/tools/CMakeLists.txt +++ b/components/tools/CMakeLists.txt @@ -1,7 +1,7 @@ -idf_component_register(SRCS operator.cpp tools.c trace.c - REQUIRES esp_common pthread +idf_component_register( SRCS operator.cpp tools.c trace.c + REQUIRES esp_common pthread INCLUDE_DIRS . - ) +) #doing our own implementation of new operator for some pre-compiled binaries target_link_libraries(${COMPONENT_LIB} INTERFACE "-u _ZdlPv") diff --git a/components/tools/tools.h b/components/tools/tools.h index f5a3f7e7..785d22e0 100644 --- a/components/tools/tools.h +++ b/components/tools/tools.h @@ -32,15 +32,6 @@ extern "C" { #define ESP_LOG_DEBUG_EVENT(tag,e) ESP_LOGD(tag,"evt: " e) -#ifdef ENABLE_MEMTRACE -void memtrace_print_delta(const char * msg, const char * tag, const char * function); -#define MEMTRACE_PRINT_DELTA() memtrace_print_delta(NULL,TAG,__FUNCTION__); -#define MEMTRACE_PRINT_DELTA_MESSAGE(x) memtrace_print_delta(x,TAG,__FUNCTION__); -#else -#define MEMTRACE_PRINT_DELTA() -#define MEMTRACE_PRINT_DELTA_MESSAGE(x) ESP_LOGD(TAG,"%s",x); -#endif - #ifndef FREE_AND_NULL #define FREE_AND_NULL(x) if(x) { free(x); x=NULL; } #endif diff --git a/components/tools/trace.c b/components/tools/trace.c index 1d80419b..cbfe1da6 100644 --- a/components/tools/trace.c +++ b/components/tools/trace.c @@ -9,8 +9,8 @@ #include "freertos/queue.h" #include "freertos/task.h" #include "esp_event.h" -#include "trace.h" #include "tools.h" +#include "trace.h" static const char TAG[] = "TRACE"; diff --git a/squeezelite.cmake b/squeezelite.cmake index 2381b5c4..a72713d6 100644 --- a/squeezelite.cmake +++ b/squeezelite.cmake @@ -135,6 +135,9 @@ add_custom_command( TARGET recovery.elf PRE_LINK COMMAND xtensa-esp32-elf-objcopy --weaken-symbol esp_app_desc ${build_dir}/esp-idf/app_update/libapp_update.a + COMMAND xtensa-esp32-elf-objcopy --weaken-symbol register_external ${build_dir}/esp-idf/squeezelite/libsqueezelite.a + COMMAND xtensa-esp32-elf-objcopy --weaken-symbol deregister_external ${build_dir}/esp-idf/squeezelite/libsqueezelite.a + COMMAND xtensa-esp32-elf-objcopy --weaken-symbol decode_restore ${build_dir}/esp-idf/squeezelite/libsqueezelite.a # COMMAND xtensa-esp32-elf-objcopy --strip-symbol start_ota ${build_dir}/esp-idf/app_squeezelite/libapp_squeezelite.a ## IDF-V4.2+ COMMAND xtensa-esp32-elf-objcopy --weaken-symbol main ${build_dir}/esp-idf/squeezelite/libsqueezelite.a COMMAND xtensa-esp32-elf-objcopy --globalize-symbol find_command_by_name ${build_dir}/esp-idf/console/libconsole.a