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


The following commit(s) were added to refs/heads/master by this push:
     new 1c0794c435a boards/xtensa/esp32: rework linker scripts for legacy 
esp-idf format
1c0794c435a is described below

commit 1c0794c435ac07f15f8650e01e51ada114668168
Author: Laczen JMS <[email protected]>
AuthorDate: Fri Oct 16 10:44:19 2026 +0200

    boards/xtensa/esp32: rework linker scripts for legacy esp-idf format
    
    Integrate the esp-idf format into the esp32_sections and flat_memory
    scripts.
    
    Update all esp32 boards to include the change.
    
    Signed-off-by: Laczen JMS <[email protected]>
---
 .../xtensa/esp32/common/scripts/esp32_sections.ld  | 312 +++++++--------
 boards/xtensa/esp32/common/scripts/flat_memory.ld  |   2 +-
 .../xtensa/esp32/common/scripts/legacy_sections.ld | 437 ---------------------
 .../xtensa/esp32/esp32-2432S028/scripts/Make.defs  |  16 +-
 .../xtensa/esp32/esp32-audio-kit/scripts/Make.defs |  12 +-
 .../xtensa/esp32/esp32-devkitc/scripts/Make.defs   |  11 +-
 .../esp32/esp32-ethernet-kit/scripts/Make.defs     |  12 +-
 boards/xtensa/esp32/esp32-lyrat/scripts/Make.defs  |  12 +-
 .../xtensa/esp32/esp32-pico-kit/scripts/Make.defs  |  12 +-
 .../esp32/esp32-sparrow-kit/scripts/Make.defs      |  12 +-
 .../esp32/esp32-wrover-kit/scripts/Make.defs       |  12 +-
 .../esp32/heltec_wifi_lora32/scripts/Make.defs     |  14 +-
 .../esp32/lilygo_tbeam_lora_gps/scripts/Make.defs  |  12 +-
 .../xtensa/esp32/ttgo_eink5_v2/scripts/Make.defs   |  12 +-
 .../xtensa/esp32/ttgo_lora_esp32/scripts/Make.defs |  12 +-
 .../esp32/ttgo_t_display_esp32/scripts/Make.defs   |  12 +-
 16 files changed, 217 insertions(+), 695 deletions(-)

diff --git a/boards/xtensa/esp32/common/scripts/esp32_sections.ld 
b/boards/xtensa/esp32/common/scripts/esp32_sections.ld
index 56c026f8d11..4810657e159 100644
--- a/boards/xtensa/esp32/common/scripts/esp32_sections.ld
+++ b/boards/xtensa/esp32/common/scripts/esp32_sections.ld
@@ -1,5 +1,5 @@
 /****************************************************************************
- * boards/xtensa/esp32/common/scripts/simple_boot_sections.ld
+ * boards/xtensa/esp32/common/scripts/esp32_sections.ld
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -148,116 +148,27 @@ SECTIONS
 
   .iram0.text : ALIGN(4)
   {
-    /* Code marked as running out of IRAM */
+      /* Code marked as running out of IRAM */
 
     _iram_text_start = ABSOLUTE(.);
     *(.iram1 .iram1.*)
-    esp32_start.*(.literal .text .literal.* .text.*)
-    *libcoexist.a:(.coexiram .coexiram.*)
-    *libphy.a:(.literal .text .literal.* .text.*)
     *librtc.a:(.literal .text .literal.* .text.*)
-    *libpp.a:wifi_iram.*(.literal .text .literal.* .text.*)
-    *libpp.a:wifi_rx_iram.*(.literal .text .literal.* .text.*)
-    *libpp.a:wifi_extra_iram.*(.literal .text .literal.* .text.*)
-    *libpp.a:wifi_slp_iram.*(.literal .text .literal.* .text.*)
-    *libpp.a:wifi_or_slp_iram.*(.literal .text .literal.* .text.*)
-    *libpp.a:wifi_slp_rx_iram.*(.literal .text .literal.* .text.*)
-    *libhal.a:(.literal .text .literal.* .text.*)
-    *libarch.a:*esp_loader.*(.literal .text .literal.* .text.*)
-    *libarch.a:*brownout_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*cpu.*(.text .text.* .literal .literal.*)
-    *libarch.a:*gpio_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*periph_ctrl.*(.text .text.* .literal .literal.*)
-    *libarch.a:*clk.*(.text .text.* .literal .literal.*)
-    *libarch.a:*efuse_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*efuse_utility.*(.text .text.* .literal .literal.*)
+    *libarch.a:esp_spiflash.*(.literal .text .literal.* .text.*)
     *libarch.a:*esp_clk.*(.text .text.* .literal .literal.*)
-    *libarch.a:*esp_clk_tree.*(.text .text.* .literal .literal.*)
-    *libarch.a:*esp_clk_tree_common.*(.text .text.* .literal .literal.*)
-    *libarch.a:*clk_tree_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*rtc_clk.*(.text .text.* .literal .literal.*)
-    *libarch.a:*rtc_clk_init.*(.text .text.* .literal .literal.*)
-    *libarch.a:*rtc_init.*(.text .text.* .literal .literal.*)
-    *libarch.a:*rtc_time.*(.text .text.* .literal .literal.*)
-    *libarch.a:*regi2c_ctrl.*(.text .text.* .literal .literal.*)
-    *libarch.a:*uart_hal_iram.*(.text .text.* .literal .literal.*)
-    *libarch.a:*wdt_hal_iram.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_banner_wrap.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_init.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_common.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_common_loader.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_console.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_console_loader.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_esp32.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_flash.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_flash_config_esp32.*(.text .text.* .literal 
.literal.*)
-    *libarch.a:*bootloader_clock_init.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_clock_loader.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_efuse.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_panic.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_mem.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_random.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_random*.*(.literal.bootloader_random_disable 
.text.bootloader_random_disable)
-    *libarch.a:*bootloader_random*.*(.literal.bootloader_random_enable 
.text.bootloader_random_enable)
-    *libarch.a:*bootloader_random_esp32.*(.text .text.* .literal .literal.*)
-    *libarch.a:*esp_image_format.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_soc.*(.text .text.* .literal .literal.*)
-    *libarch.a:*bootloader_sha.*(.text .text.* .literal .literal.*)
-    *libarch.a:*uart_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*mpu_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*mmu_hal.*(.text .text.* .literal .literal.*)
-    *libarch.a:*uart_periph.*(.text .text.* .literal .literal.*)
-    *libarch.a:esp_app_desc.*(.literal .text .literal.* .text.*)
-    *libarch.a:*esp_rom_uart.*(.text .text.* .literal .literal.*)
-    *libarch.a:*esp_rom_sys.*(.text .text.* .literal .literal.*)
-    *libarch.a:*esp_rom_spiflash.*(.text .text.* .literal .literal.*)
-    *libarch.a:*esp_rom_wdt.*(.text .text.* .literal .literal.*)
-    *libarch.a:*log.*(.text .text.* .literal .literal.*)
-    *libarch.a:*log_lock.*(.literal .literal.* .text .text.*)
-    *libarch.a:*log_print.*(.literal .literal.* .text .text.*)
-    *libarch.a:*log_timestamp.*(.literal.esp_log_early_timestamp 
.text.esp_log_early_timestamp)
-    *libarch.a:*log_timestamp.*(.literal.esp_log_timestamp 
.text.esp_log_timestamp)
-    *libarch.a:*log_timestamp_common.*(.literal .literal.* .text .text.*)
-    *libarch.a:*log_write.*(.literal.esp_log_write .text.esp_log_write)
-    *libarch.a:*log_write.*(.literal.esp_log_writev .text.esp_log_writev)
-    *libarch.a:*cpu_region_protect.*(.text .text.* .literal .literal.*)
-    *libarch.a:*flash_qio_mode.*(.text .text.* .literal .literal.*)
-    *libarch.a:xtensa_intr.*(.literal .literal.* .text .text.*)
-
-#ifdef CONFIG_STACK_CANARIES
-    *libc.a:lib_stackchk.*(.literal .text .literal.* .text.*)
-#endif
-    *libarch.a:esp32_cpuindex.*(.literal .text .literal.* .text.*)
-    *libarch.a:esp32_user.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_assert.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_cpuint.*(.literal .text .literal.* .text.*)
     *libarch.a:xtensa_cpupause.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_irqdispatch.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_modifyreg32.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_saveusercontext.*(.literal .text .literal.* .text.*)
+    *libarch.a:xtensa_copystate.*(.literal .text .literal.* .text.*)
+    *libarch.a:xtensa_interruptcontext.*(.literal .text .literal.* .text.*)
     *libarch.a:xtensa_testset.*(.literal .text .literal.* .text.*)
-    *libarch.a:rtc_sleep.*(.literal.rtc_sleep_start .text.rtc_sleep_start)
-
-    *libc.a:lib_assert.*(.literal .text .literal.* .text.*)
-    *libc.a:lib_utsname.*(.literal .text .literal.* .text.*)
-    *libc.a:sq_remlast.*(.literal .text .literal.* .text.*)
-    *libc.a:arch_atomic.*(.text .text.* .literal .literal.*)
+    *libarch.a:esp_app_desc.*(.literal .text .literal.* .text.*)
 
-    *libdrivers.a:syslog_flush.*(.literal .text .literal.* .text.*)
+    *libc.a:arch_atomic.*(.literal .text .literal.* .text.*)
 
-    *libsched.a:assert.*(.literal .text .literal.* .text.*)
-    *libsched.a:irq_csection.*(.literal .text .literal.* .text.*)
-    *libsched.a:irq_dispatch.*(.literal .text .literal.* .text.*)
-    *libsched.a:irq_spinlock.*(.literal .text .literal.* .text.*)
-    *libsched.a:panic_notifier.*(.literal.panic_notifier_call_chain 
.text.panic_notifier_call_chain)
-    *libsched.a:sched_gettcb.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_lock.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_note.*(.literal .text .literal.* .text.*)
     *libsched.a:sched_suspendscheduler.*(.literal .text .literal.* .text.*)
+    *libsched.a:sched_note.*(.literal .text .literal.* .text.*)
     *libsched.a:sched_thistask.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_unlock.*(.literal .text .literal.* .text.*)
     *libsched.a:spinlock.*(.literal .text .literal.* .text.*)
-
+    *libsched.a:irq_csection.*(.literal .text .literal.* .text.*)
+    *libsched.a:irq_dispatch.*(.literal .text .literal.* .text.*)
     *libarch.a:esp_spiflash.*(.literal .text .literal.* .text.*)
     *libarch.a:esp_flash_api.*(.text .text.* .literal .literal.*)
     *libarch.a:esp_flash_spi_init.*(.text .text.* .literal .literal.*)
@@ -284,15 +195,92 @@ SECTIONS
     *libarch.a:interrupt.*(.literal.intr_get_item .text.intr_get_item)
     *libarch.a:interrupt.*(.literal.intr_handler_get_arg 
.text.intr_handler_get_arg)
 
+#if defined(CONFIG_ESPRESSIF_SIMPLE_BOOT) || 
defined(CONFIG_ESP32_APP_FORMAT_MCUBOOT)
+    /* SIMPLEBOOT has no second-stage bootloader.  __start() runs
+     * bootloader_init() and map_rom_segments() before any flash mapping 
exists,
+     * so everything they reach must be resident in RAM.
+     * MCUBOOT runs map_rom_segments before any flash mappings exist, so
+     * so everything this reaches must be resident in RAM.
+     */
+
+    /* __start() itself runs before the mapping it creates, so it cannot live 
in
+     * flash it is about to map.
+     */
+
+    esp32_start.*(.literal .text .literal.* .text.*)
+
+    *libarch.a:*esp_loader.*(.literal .text .literal.* .text.*)
+    *libarch.a:*bootloader_init.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_common.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_common_loader.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_console.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_console_loader.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_banner_wrap.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_clock_init.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_clock_loader.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_efuse.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_esp32.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_flash.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_flash_config_esp32.*(.text .text.* .literal 
.literal.*)
+    *libarch.a:*bootloader_mem.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_panic.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_random.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_random_esp32.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_sha.*(.text .text.* .literal .literal.*)
+    *libarch.a:*bootloader_soc.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_image_format.*(.text .text.* .literal .literal.*)
+    *libarch.a:*flash_encrypt.*(.text .text.* .literal .literal.*)
+    *libarch.a:*flash_qio_mode.*(.text .text.* .literal .literal.*)
+    *libarch.a:*brownout_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*cpu.*(.text .text.* .literal .literal.*)
+    *libarch.a:*cpu_region_protect.*(.text .text.* .literal .literal.*)
+    *libarch.a:*gpio_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*periph_ctrl.*(.text .text.* .literal .literal.*)
+    *libarch.a:*clk.*(.text .text.* .literal .literal.*)
+    *libarch.a:*clk_tree_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_clk_tree.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_clk_tree_common.*(.text .text.* .literal .literal.*)
+    *libarch.a:*rtc_init.*(.text .text.* .literal .literal.*)
+    *libarch.a:*rtc_clk.*(.text .text.* .literal .literal.*)
+    *libarch.a:*rtc_clk_init.*(.text .text.* .literal .literal.*)
+    *libarch.a:*rtc_sleep.*(.text .text.* .literal .literal.*)
+    *libarch.a:*rtc_time.*(.text .text.* .literal .literal.*)
+    *libarch.a:*regi2c_ctrl.*(.text .text.* .literal .literal.*)
+    *libarch.a:*efuse_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*efuse_utility.*(.text .text.* .literal .literal.*)
+    *libarch.a:*mmu_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*mpu_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*cache_esp32.*(.text .text.* .literal .literal.*)
+    *libarch.a:*cache_hal_esp32.*(.text .text.* .literal .literal.*)
+    *libarch.a:*uart_hal.*(.text .text.* .literal .literal.*)
+    *libarch.a:*uart_hal_iram.*(.text .text.* .literal .literal.*)
+    *libarch.a:*uart_periph.*(.text .text.* .literal .literal.*)
+    *libarch.a:*wdt_hal_iram.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_rom_uart.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_rom_sys.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_rom_spiflash.*(.text .text.* .literal .literal.*)
+    *libarch.a:*esp_rom_wdt.*(.text .text.* .literal .literal.*)
+    *libarch.a:*log.*(.text .text.* .literal .literal.*)
+    *libarch.a:*log_lock.*(.literal .literal.* .text .text.*)
+    *libarch.a:*log_print.*(.literal .literal.* .text .text.*)
+    *libarch.a:*log_timestamp.*(.literal .literal.* .text .text.*)
+    *libarch.a:*log_timestamp_common.*(.literal .literal.* .text .text.*)
+    *libarch.a:*log_write.*(.literal .literal.* .text .text.*)
+    *libarch.a:esp_app_desc.*(.literal .literal.* .text .text.*)
+    *libarch.a:esp_flash_api.*(.text .text.* .literal .literal.*)
+    *libarch.a:esp_flash_spi_init.*(.text .text.* .literal .literal.*)
+    *libarch.a:spi_flash_hal_gpspi.*(.literal .literal.* .text .text.*)
+    *libarch.a:spi_flash_encrypt_hal_iram.*(.text .text.* .literal .literal.*)
+    *libarch.a:spi_flash_os_func_noos.*(.literal .literal.* .text .text.*)
+    *libarch.a:spi_flash_os_func_app.*(.literal .literal.* .text .text.*)
+    *libarch.a:spi_flash_wrap.*(.literal .literal.* .text .text.*)
+#endif
+
     *(.wifirxiram .wifirxiram.*)
-    *(.wifi0iram .wifi0iram.*)
-    *(.wifiorslpiram .wifiorslpiram.*)
+    *(.wifi0iram  .wifi0iram.*)
     *(.wifislpiram .wifislpiram.*)
     *(.wifislprxiram .wifislprxiram.*)
     *(.phyiram .phyiram.*)
-
-    . = ALIGN(4) + 16;
-
     _iram_text_end = ABSOLUTE(.);
 
     /* IRAM heap starts at the end of iram0_0_seg */
@@ -417,105 +405,95 @@ SECTIONS
     KEEP (*(.gnu.linkonce.s2.*))
     KEEP (*(.jcr))
     *(.dram1 .dram1.*)
-    esp32_start.*(.rodata  .rodata.*)
     *libphy.a:(.rodata  .rodata.*)
-#ifdef CONFIG_STACK_CANARIES
-    *libc.a:lib_stackchk.*(.rodata  .rodata.*)
-#endif
-    *libarch.a:xtensa_context.*(.rodata  .rodata.*)
-    *libarch.a:xtensa_copystate.*(.rodata  .rodata.*)
+    *libarch.a:esp_cache_utils.*(.rodata .rodata.*)
+    *libarch.a:esp_spiflash.*(.rodata  .rodata.*)
+    *libarch.a:*esp_clk.*(.rodata .rodata.*)
     *libarch.a:xtensa_cpupause.*(.rodata  .rodata.*)
+    *libarch.a:xtensa_copystate.*(.rodata  .rodata.*)
+    *libarch.a:xtensa_interruptcontext.*(.rodata  .rodata.*)
     *libarch.a:xtensa_testset.*(.rodata  .rodata.*)
+    *libarch.a:spi_flash_chip*.*(.rodata .rodata.*)
+    *libarch.a:critical_section.*(.rodata .rodata.*)
+    *libarch.a:os.*(.rodata.g_int_flags_count .rodata.g_int_flags)
+    *libc.a:arch_atomic.*(.rodata .rodata.*)
 
-    *libdrivers.a:syslog_channel.*(.rodata  .rodata.*)
+#if defined(CONFIG_ESPRESSIF_SIMPLE_BOOT) || 
defined(CONFIG_ESP32_APP_FORMAT_MCUBOOT)
+    /* The read-only data of everything pinned into IRAM above. */
 
-    *libsched.a:sched_suspendscheduler.*(.rodata  .rodata.*)
-    *libsched.a:sched_thistask.*(.rodata  .rodata.*)
-    *libsched.a:sched_note.*(.rodata  .rodata.*)
-    *libsched.a:spinlock.*(.rodata  .rodata.*)
-    *libsched.a:irq_csection.*(.rodata  .rodata.*)
-    *libsched.a:irq_dispatch.*(.rodata  .rodata.*)
+    esp32_start.*(.rodata .rodata.*)
 
     *libarch.a:*esp_loader.*(.rodata .rodata.*)
-    *libarch.a:*brownout.*(.rodata .rodata.*)
-    *libarch.a:*cpu.*(.rodata .rodata.*)
-    *libarch.a:*gpio_hal.*(.rodata .rodata.*)
-    *libarch.a:*periph_ctrl.*(.rodata .rodata.*)
-    *libarch.a:*clk.*(.rodata .rodata.*)
-    *libarch.a:*esp_clk.*(.rodata .rodata.*)
-    *libarch.a:*esp_clk_tree.*(.rodata .rodata.*)
-    *libarch.a:*esp_clk_tree_common.*(.rodata .rodata.*)
-    *libarch.a:*clk_tree_hal.*(.rodata .rodata.*)
-    *libarch.a:*rtc_init.*(.rodata .rodata.*)
-    *libarch.a:*rtc_clk.*(.rodata .rodata.*)
-    *libarch.a:*rtc_clk_init.*(.rodata .rodata.*)
-    *libarch.a:*rtc_time.*(.rodata .rodata.*)
-    *libarch.a:*regi2c_ctrl.*(.rodata .rodata.*)
-    *libarch.a:*uart_hal_iram.*(.rodata .rodata.*)
-    *libarch.a:*wdt_hal_iram.*(.rodata .rodata.*)
-    *libarch.a:*efuse_utility.*(.rodata .rodata.*)
-    *libarch.a:*bootloader_banner_wrap.*(.rodata .rodata.*)
     *libarch.a:*bootloader_init.*(.rodata .rodata.*)
     *libarch.a:*bootloader_common.*(.rodata .rodata.*)
     *libarch.a:*bootloader_common_loader.*(.rodata .rodata.*)
     *libarch.a:*bootloader_console.*(.rodata .rodata.*)
     *libarch.a:*bootloader_console_loader.*(.rodata .rodata.*)
-    *libarch.a:*bootloader_esp32.*(.rodata .rodata.*)
-    *libarch.a:*bootloader_flash.*(.rodata .rodata.*)
-    *libarch.a:*bootloader_flash_config_esp32.*(.rodata .rodata.*)
+    *libarch.a:*bootloader_banner_wrap.*(.rodata .rodata.*)
     *libarch.a:*bootloader_clock_init.*(.rodata .rodata.*)
     *libarch.a:*bootloader_clock_loader.*(.rodata .rodata.*)
     *libarch.a:*bootloader_efuse.*(.rodata .rodata.*)
-    *libarch.a:*bootloader_panic.*(.rodata .rodata.*)
+    *libarch.a:*bootloader_esp32.*(.rodata .rodata.*)
+    *libarch.a:*bootloader_flash.*(.rodata .rodata.*)
+    *libarch.a:*bootloader_flash_config_esp32.*(.rodata .rodata.*)
     *libarch.a:*bootloader_mem.*(.rodata .rodata.*)
+    *libarch.a:*bootloader_panic.*(.rodata .rodata.*)
     *libarch.a:*bootloader_random.*(.rodata .rodata.*)
     *libarch.a:*bootloader_random_esp32.*(.rodata .rodata.*)
-    *libarch.a:*esp_image_format.*(.rodata .rodata.*)
-    *libarch.a:*bootloader_soc.*(.rodata .rodata.*)
     *libarch.a:*bootloader_sha.*(.rodata .rodata.*)
-    *libarch.a:*uart_hal.*(.rodata .rodata.*)
-    *libarch.a:*mpu_hal.*(.rodata .rodata.*)
-    *libarch.a:*mmu_hal.*(.rodata .rodata.*)
+    *libarch.a:*bootloader_soc.*(.rodata .rodata.*)
+    *libarch.a:*esp_image_format.*(.rodata .rodata.*)
+    *libarch.a:*flash_encrypt.*(.rodata .rodata.*)
+    *libarch.a:*flash_qio_mode.*(.rodata .rodata.*)
+    *libarch.a:*brownout_hal.*(.rodata .rodata.*)
+    *libarch.a:*cpu.*(.rodata .rodata.*)
+    *libarch.a:*cpu_region_protect.*(.rodata .rodata.*)
+    *libarch.a:*gpio_hal.*(.rodata .rodata.*)
+    *libarch.a:*periph_ctrl.*(.rodata .rodata.*)
+    *libarch.a:*clk.*(.rodata .rodata.*)
+    *libarch.a:*clk_tree_hal.*(.rodata .rodata.*)
+    *libarch.a:*esp_clk_tree.*(.rodata .rodata.*)
+    *libarch.a:*esp_clk_tree_common.*(.rodata .rodata.*)
+    *libarch.a:*rtc_init.*(.rodata .rodata.*)
+    *libarch.a:*rtc_clk.*(.rodata .rodata.*)
+    *libarch.a:*rtc_clk_init.*(.rodata .rodata.*)
+    *libarch.a:*rtc_time.*(.rodata .rodata.*)
+    *libarch.a:*regi2c_ctrl.*(.rodata .rodata.*)
     *libarch.a:*efuse_hal.*(.rodata .rodata.*)
+    *libarch.a:*efuse_utility.*(.rodata .rodata.*)
+    *libarch.a:*mmu_hal.*(.rodata .rodata.*)
+    *libarch.a:*mpu_hal.*(.rodata .rodata.*)
+    *libarch.a:*cache_esp32.*(.rodata .rodata.*)
+    *libarch.a:*cache_hal_esp32.*(.rodata .rodata.*)
+    *libarch.a:*uart_hal.*(.rodata .rodata.*)
+    *libarch.a:*uart_hal_iram.*(.rodata .rodata.*)
     *libarch.a:*uart_periph.*(.rodata .rodata.*)
+    *libarch.a:*wdt_hal_iram.*(.rodata .rodata.*)
     *libarch.a:*esp_rom_uart.*(.rodata .rodata.*)
     *libarch.a:*esp_rom_sys.*(.rodata .rodata.*)
     *libarch.a:*esp_rom_spiflash.*(.rodata .rodata.*)
     *libarch.a:*esp_rom_wdt.*(.rodata .rodata.*)
     *libarch.a:*log.*(.rodata .rodata.*)
-    *libarch.a:*log_noos.*(.rodata .rodata.*)
-    *libarch.a:*cpu_region_protect.*(.rodata .rodata.*)
-    *libarch.a:*flash_qio_mode.*(.rodata .rodata.*)
-
+    *libarch.a:esp_app_desc.*(.rodata .rodata.*)
     *libarch.a:esp_flash_api.*(.rodata .rodata.*)
     *libarch.a:esp_flash_spi_init.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_hal_iram.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_hal_gpspi.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_chip*.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_wrap.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_os_func_noos.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_os_func_app.*(.rodata .rodata.*)
-    *libarch.a:flash_brownout_hook.*(.rodata .rodata.*)
-    *libarch.a:esp_cache_utils.*(.rodata .rodata.*)
-    *libarch.a:cache_esp32.*(.rodata .rodata.*)
-    *libarch.a:cache_utils.*(.rodata .rodata.*)
-    *libarch.a:cache_hal_esp32.*(.rodata .rodata.*)
-    *libarch.a:memspi_host_driver.*(.rodata .rodata.*)
-    *libarch.a:critical_section.*(.rodata .rodata.*)
-    *libarch.a:os.*(.rodata.g_int_flags_count .rodata.g_int_flags)
+#endif
 
-    *libc.a:arch_atomic.*(.rodata .rodata.*)
+    *libsched.a:sched_suspendscheduler.*(.rodata  .rodata.*)
+    *libsched.a:sched_thistask.*(.rodata  .rodata.*)
+    *libsched.a:sched_note.*(.rodata  .rodata.*)
+    *libsched.a:spinlock.*(.rodata  .rodata.*)
+    *libsched.a:irq_csection.*(.rodata  .rodata.*)
+    *libsched.a:irq_dispatch.*(.rodata  .rodata.*)
 
+    . = ALIGN(4);
     _edata = ABSOLUTE(.);
     _data_end = ABSOLUTE(.);
 
-    . = ALIGN(4);
-
     /* Heap starts at the end of .data */
 
     _sheap = ABSOLUTE(.);
-  } >dram0_0_seg AT>ROM
+} >dram0_0_seg AT>ROM
 
   /* This section will be used by the debugger and disassembler to get more
    * information about raw data present in the code.
diff --git a/boards/xtensa/esp32/common/scripts/flat_memory.ld 
b/boards/xtensa/esp32/common/scripts/flat_memory.ld
index 49c7f90a2a4..7ed325f5595 100644
--- a/boards/xtensa/esp32/common/scripts/flat_memory.ld
+++ b/boards/xtensa/esp32/common/scripts/flat_memory.ld
@@ -67,7 +67,7 @@ MEMORY
   ROM (RX) :             org = ORIGIN(metadata) + LENGTH(metadata),
                          len = FLASH_SIZE - ORIGIN(ROM)
 
-#elif defined (CONFIG_ESPRESSIF_SIMPLE_BOOT)
+#else
   /* The 0x20 offset is a convenience for the app binary image generation.
    * Flash cache has 64KB pages. The .bin file which is flashed to the chip
    * has a 0x18 byte file header, and each segment has a 0x08 byte segment
diff --git a/boards/xtensa/esp32/common/scripts/legacy_sections.ld 
b/boards/xtensa/esp32/common/scripts/legacy_sections.ld
deleted file mode 100644
index 59986666cee..00000000000
--- a/boards/xtensa/esp32/common/scripts/legacy_sections.ld
+++ /dev/null
@@ -1,437 +0,0 @@
-/****************************************************************************
- * boards/xtensa/esp32/common/scripts/legacy_sections.ld
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-/* Default entry point: */
-
-ENTRY(__start);
-
-SECTIONS
-{
-  /* Send .iram0 code to iram */
-
-  .iram0.vectors :
-  {
-    /* Vectors go to IRAM */
-
-    _init_start = ABSOLUTE(.);
-
-    /* Vectors according to 
builds/RF-2015.2-win32/esp108_v1_2_s5_512int_2/config.html */
-
-    . = 0x0;
-    KEEP (*(.window_vectors.text));
-    . = 0x180;
-    KEEP (*(.xtensa_level2_vector.text));
-    . = 0x1c0;
-    KEEP (*(.xtensa_level3_vector.text));
-    . = 0x200;
-    KEEP (*(.xtensa_level4_vector.text));
-    . = 0x240;
-    KEEP (*(.xtensa_level5_vector.text));
-    . = 0x280;
-    KEEP (*(.debug_exception_vector.text));
-    . = 0x2c0;
-    KEEP (*(.nmi_vector.text));
-    . = 0x300;
-    KEEP (*(.kernel_exception_vector.text));
-    . = 0x340;
-    KEEP (*(.user_exception_vector.text));
-    . = 0x3c0;
-    KEEP (*(.double_exception_vector.text));
-    . = 0x400;
-    *(.*_vector.literal)
-
-    . = ALIGN (16);
-    *(.entry.text)
-    *(.init.literal)
-    *(.init)
-    _init_end = ABSOLUTE(.);
-  } > iram0_0_seg
-
-  .iram0.text :
-  {
-    /* Code marked as running out of IRAM */
-
-    _iram_text_start = ABSOLUTE(.);
-    *(.iram1 .iram1.*)
-    *librtc.a:(.literal .text .literal.* .text.*)
-#ifdef CONFIG_STACK_CANARIES
-    *libc.a:lib_stackchk.*(.literal .text .literal.* .text.*)
-#endif
-    *libarch.a:esp32_cpuindex.*(.literal .text .literal.* .text.*)
-    *libarch.a:esp32_spicache.*(.literal .text .literal.* .text.*)
-    *libarch.a:esp32_spiflash.*(.literal .text .literal.* .text.*)
-    *libarch.a:esp32_user.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_assert.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_cpuint.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_cpupause.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_irqdispatch.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_modifyreg32.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_saveusercontext.*(.literal .text .literal.* .text.*)
-    *libarch.a:xtensa_testset.*(.literal .text .literal.* .text.*)
-    *libarch.a:esp_app_desc.*(.literal .text .literal.* .text.*)
-
-    *libc.a:lib_assert.*(.literal .text .literal.* .text.*)
-    *libc.a:lib_utsname.*(.literal .text .literal.* .text.*)
-    *libc.a:sq_remlast.*(.literal .text .literal.* .text.*)
-    *libc.a:arch_atomic.*(.literal .text .literal.* .text.*)
-
-    *libdrivers.a:syslog_flush.*(.literal .text .literal.* .text.*)
-
-    *libsched.a:assert.*(.literal .text .literal.* .text.*)
-    *libsched.a:irq_csection.*(.literal .text .literal.* .text.*)
-    *libsched.a:irq_dispatch.*(.literal .text .literal.* .text.*)
-    *libsched.a:irq_spinlock.*(.literal .text .literal.* .text.*)
-    *libsched.a:panic_notifier.*(.literal.panic_notifier_call_chain 
.text.panic_notifier_call_chain)
-    *libsched.a:sched_gettcb.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_lock.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_note.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_suspendscheduler.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_thistask.*(.literal .text .literal.* .text.*)
-    *libsched.a:sched_unlock.*(.literal .text .literal.* .text.*)
-    *libsched.a:spinlock.*(.literal .text .literal.* .text.*)
-
-    *libarch.a:esp_spiflash.*(.literal .text .literal.* .text.*)
-    *libarch.a:esp_flash_api.*(.text .text.* .literal .literal.*)
-    *libarch.a:esp_flash_spi_init.*(.text .text.* .literal .literal.*)
-    *libarch.a:spi_flash_hal_iram.*(.literal .literal.* .text .text.*)
-    *libarch.a:spi_flash_encrypt_hal_iram.*(.text .text.* .literal .literal.*)
-    *libarch.a:spi_flash_hal_gpspi.*(.literal .literal.* .text .text.*)
-    *libarch.a:spi_flash_chip*.*(.literal .literal.* .text .text.*)
-    *libarch.a:spi_flash_wrap.*(.literal .literal.* .text .text.*)
-    *libarch.a:spi_flash_os_func_noos.*(.literal .literal.* .text .text.*)
-    *libarch.a:spi_flash_os_func_app.*(.literal .literal.* .text .text.*)
-    *libarch.a:flash_brownout_hook.*(.literal .literal.* .text .text.*)
-    *libarch.a:esp_cache.*(.literal .literal.* .text .text.*)
-    *libarch.a:cache_hal_esp32.*(.literal .literal.* .text .text.*)
-    *libarch.a:cache_utils.*(.literal .literal.* .text .text.*)
-    *libarch.a:memspi_host_driver.*(.literal .literal.* .text .text.*)
-
-    *(.wifirxiram .wifirxiram.*)
-    *(.wifi0iram  .wifi0iram.*)
-    *(.wifiorslpiram .wifiorslpiram.*)
-    *(.wifislpiram .wifislpiram.*)
-    *(.wifislprxiram .wifislprxiram.*)
-    *(.phyiram .phyiram.*)
-    _iram_text_end = ABSOLUTE(.);
-
-    /* IRAM heap starts at the end of iram0_0_seg */
-
-    . = ALIGN (4);
-    _siramheap = ABSOLUTE(.);
-  } > iram0_0_seg
-
-  /* Shared RAM */
-
-  .dram0.bss (NOLOAD) :
-  {
-    /* .bss initialized on power-up */
-
-    . = ALIGN (8);
-    _sbss = ABSOLUTE(.);
-    _bss_start = ABSOLUTE(.);
-    *(EXCLUDE_FILE(*libble_app.a *libbt.a *libbtdm_app.a *libnimble.a) .bss 
EXCLUDE_FILE(*libble_app.a *libbt.a *libbtdm_app.a *libnimble.a) .bss.*)
-    *(.ext_ram.bss*)
-    *(EXCLUDE_FILE(*libble_app.a *libbt.a *libbtdm_app.a *libnimble.a) COMMON)
-    . = ALIGN(4);
-    _bt_controller_bss_start = ABSOLUTE(.);
-    *libble_app.a:(.bss .bss.*)
-    . = ALIGN(4);
-    _bt_controller_bss_end = ABSOLUTE(.);
-    . = ALIGN(4);
-    _bt_controller_common_start = ABSOLUTE(.);
-    *libble_app.a:(COMMON)
-    . = ALIGN(4);
-    _bt_controller_common_end = ABSOLUTE(.);
-    . = ALIGN(4);
-    _bt_bss_start = ABSOLUTE(.);
-    *libbt.a:(.bss .bss.*)
-    . = ALIGN(4);
-    _bt_bss_end = ABSOLUTE(.);
-    . = ALIGN(4);
-    _bt_common_start = ABSOLUTE(.);
-    *libbt.a:(COMMON)
-    . = ALIGN(4);
-    _bt_common_end = ABSOLUTE(.);
-    . = ALIGN(4);
-    _btdm_bss_start = ABSOLUTE(.);
-    *libbtdm_app.a:(.bss .bss.*)
-    . = ALIGN(4);
-    _btdm_bss_end = ABSOLUTE(.);
-    . = ALIGN(4);
-    _btdm_common_start = ABSOLUTE(.);
-    *libbtdm_app.a:(COMMON)
-    . = ALIGN(4);
-    _btdm_common_end = ABSOLUTE(.);
-    . = ALIGN (8);
-    *(.dynsbss)
-    *(.sbss)
-    *(.sbss.*)
-    *(.gnu.linkonce.sb.*)
-    *(.scommon)
-    *(.sbss2)
-    *(.sbss2.*)
-    *(.gnu.linkonce.sb2.*)
-    *(.dynbss)
-    KEEP (*(.bss))
-    *(.bss.*)
-    *(.share.mem)
-    *(.gnu.linkonce.b.*)
-    *(COMMON)
-#ifdef CONFIG_STACK_CANARIES
-    *libc.a:lib_stackchk.*(.bss  .bss.*  COMMON)
-#endif
-    *libarch.a:esp32_spiflash.*(.bss  .bss.*  COMMON)
-    *libarch.a:xtensa_cpupause.*(.bss  .bss.*  COMMON)
-    *libarch.a:xtensa_copystate.*(.bss  .bss.*  COMMON)
-    *libarch.a:xtensa_interruptcontext.*(.bss  .bss.*  COMMON)
-    *libarch.a:xtensa_testset.*(.bss  .bss.*  COMMON)
-
-    *libsched.a:sched_suspendscheduler.*(.bss  .bss.*  COMMON)
-    *libsched.a:sched_thistask.*(.bss  .bss.*  COMMON)
-    *libsched.a:sched_note.*(.bss  .bss.*  COMMON)
-    *libsched.a:spinlock.*(.bss  .bss.*  COMMON)
-    *libsched.a:irq_csection.*(.bss  .bss.*  COMMON)
-    *libsched.a:irq_dispatch.*(.bss  .bss.*  COMMON)
-
-    . = ALIGN(8);
-    _bss_end = ABSOLUTE(.);
-    _ebss = ABSOLUTE(.);
-  } >dram0_0_seg
-
-  .noinit (NOLOAD):
-  {
-    /* This section contains data that is not initialized during load,
-     * or during the application's initialization sequence.
-     */
-
-    *(.noinit)
-  } >dram0_0_seg
-
-  .dram0.data :
-  {
-    /* .data initialized on power-up in ROMed configurations. */
-
-    _sdata = ABSOLUTE(.);
-    _bt_data_start = ABSOLUTE(.);
-    *libbt.a:(.data .data.*)
-    . = ALIGN (4);
-    _bt_data_end = ABSOLUTE(.);
-    _btdm_data_start = ABSOLUTE(.);
-    *libbtdm_app.a:(.data .data.*)
-    . = ALIGN (4);
-    _btdm_data_end = ABSOLUTE(.);
-    KEEP (*(.data))
-    KEEP (*(.data.*))
-    KEEP (*(.gnu.linkonce.d.*))
-    KEEP (*(.data1))
-    KEEP (*(.sdata))
-    KEEP (*(.sdata.*))
-    KEEP (*(.gnu.linkonce.s.*))
-    KEEP (*(.sdata2))
-    KEEP (*(.sdata2.*))
-    KEEP (*(.gnu.linkonce.s2.*))
-    KEEP (*(.jcr))
-    *(.dram1 .dram1.*)
-    *libphy.a:(.rodata  .rodata.*)
-#ifdef CONFIG_STACK_CANARIES
-    *libc.a:lib_stackchk.*(.rodata  .rodata.*)
-#endif
-    *libarch.a:esp32_spiflash.*(.rodata  .rodata.*)
-    *libarch.a:esp_flash_api.*(.rodata .rodata.*)
-    *libarch.a:esp_flash_spi_init.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_hal_iram.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_hal_gpspi.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_chip*.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_wrap.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_os_func_noos.*(.rodata .rodata.*)
-    *libarch.a:spi_flash_os_func_app.*(.rodata .rodata.*)
-    *libarch.a:flash_brownout_hook.*(.rodata .rodata.*)
-    *libarch.a:esp_cache.*(.rodata .rodata.*)
-    *libarch.a:cache_utils.*(.rodata .rodata.*)
-    *libarch.a:cache_hal_esp32.*(.rodata .rodata.*)
-    *libarch.a:memspi_host_driver.*(.rodata .rodata.*)
-
-    *libarch.a:xtensa_context.*(.rodata  .rodata.*)
-    *libarch.a:xtensa_copystate.*(.rodata  .rodata.*)
-    *libarch.a:xtensa_cpupause.*(.rodata  .rodata.*)
-    *libarch.a:xtensa_testset.*(.rodata  .rodata.*)
-
-    *libdrivers.a:syslog_channel.*(.rodata  .rodata.*)
-
-    *libsched.a:sched_suspendscheduler.*(.rodata  .rodata.*)
-    *libsched.a:sched_thistask.*(.rodata  .rodata.*)
-    *libsched.a:sched_note.*(.rodata  .rodata.*)
-    *libsched.a:spinlock.*(.rodata  .rodata.*)
-    *libsched.a:irq_csection.*(.rodata  .rodata.*)
-    *libsched.a:irq_dispatch.*(.rodata  .rodata.*)
-
-    *libc.a:arch_atomic.*(.rodata .rodata.*)
-
-    . = ALIGN(4);
-    _edata = ABSOLUTE(.);
-
-    /* Heap starts at the end of .data */
-
-    _sheap = ABSOLUTE(.);
-  } >dram0_0_seg
-
-  /* External memory bss, from any global variable with EXT_RAM_ATTR attribute 
*/
-
-  .extmem.bss (NOLOAD) :
-  {
-    _sbss_extmem = ABSOLUTE(.);
-    *(.extmem.bss .extmem.bss.*)
-    . = ALIGN(4);
-    _ebss_extmem = ABSOLUTE(.);
-  } > extmem_seg
-
-  .flash.rodata :
-  {
-    _rodata_reserved_start = ABSOLUTE(.);
-    _srodata = ABSOLUTE(.);
-
-    /* !DO NOT PUT ANYTHING BEFORE THIS! */
-    /* Should be the first.  App version info. */
-    *(.rodata_desc .rodata_desc.*)
-
-    *(.rodata)
-    *(.rodata.*)
-#ifdef CONFIG_ESPRESSIF_WIRELESS
-    *(.rodata_wlog_verbose.*)
-    *(.rodata_wlog_debug.*)
-    *(.rodata_wlog_info.*)
-    *(.rodata_wlog_warning.*)
-    *(.rodata_wlog_error.*)
-#endif
-    *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */
-    *(.gnu.linkonce.r.*)
-    *(.rodata1)
-    __XT_EXCEPTION_TABLE_ = ABSOLUTE(.);
-    *(.xt_except_table)
-    *(.gcc_except_table)
-    *(.gcc_except_table.*)
-    *(.gnu.linkonce.e.*)
-    *(.gnu.version_r)
-    *(.eh_frame)
-
-    . = (. + 3) & ~ 3;
-
-    /* C++ constructor and destructor tables, properly ordered: */
-
-    _sinit = ABSOLUTE(.);
-    __init_array_start = ABSOLUTE(.);
-    KEEP (*crtbegin.o(.ctors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*(.ctors))
-    _einit = ABSOLUTE(.);
-    __init_array_end = ABSOLUTE(.);
-    KEEP (*crtbegin.o(.dtors))
-    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*(.dtors))
-
-    /* System init functions registered via ESP_SYSTEM_INIT_FN */
-
-    . = ALIGN(4);
-    _esp_system_init_fn_array_start = ABSOLUTE(.);
-    KEEP (*(SORT_BY_INIT_PRIORITY(.esp_system_init_fn.*)))
-    _esp_system_init_fn_array_end = ABSOLUTE(.);
-
-    /* C++ exception handlers table: */
-
-    __XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
-    *(.xt_except_desc)
-    *(.gnu.linkonce.h.*)
-    __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
-    *(.xt_except_desc_end)
-    *(.dynamic)
-    *(.gnu.version_d)
-
-    /* Addresses of memory regions reserved via SOC_RESERVE_MEMORY_REGION() */
-
-    soc_reserved_memory_region_start = ABSOLUTE(.);
-    KEEP (*(.reserved_memory_address))
-    soc_reserved_memory_region_end = ABSOLUTE(.);
-
-    _erodata = ABSOLUTE(.);
-    /* Literals are also RO data. */
-    _lit4_start = ABSOLUTE(.);
-    *(*.lit4)
-    *(.lit4.*)
-    *(.gnu.linkonce.lit4.*)
-    _lit4_end = ABSOLUTE(.);
-    . = ALIGN(4);
-  } >default_rodata_seg
-
-  .flash.text :
-  {
-    _stext = .;
-    _text_start = ABSOLUTE(.);
-    *(.literal .text .literal.* .text.* .stub .gnu.warning 
.gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
-    *(.irom0.text) /* catch stray ICACHE_RODATA_ATTR */
-    *(.fini.literal)
-    *(.fini)
-    *(.gnu.version)
-    _text_end = ABSOLUTE(.);
-    _etext = .;
-  } >default_code_seg
-
-  .rtc.text :
-  {
-    . = ALIGN(4);
-    *(.rtc.literal .rtc.text)
-  } >rtc_iram_seg
-
-  .rtc.data :
-  {
-    *(.rtc.data)
-    *(.rtc.data.*)
-    *(.rtc.rodata)
-    *(.rtc.rodata.*)
-
-   /* Whatever is left from the RTC memory is used as a special heap. */
-
-    . = ALIGN (4);
-    _srtcheap = ABSOLUTE(.);
-  } > rtc_slow_seg
-
-   /*
-    * This section holds RTC data that should have fixed addresses.
-    * The data are not initialized at power-up and are retained during deep 
sleep.
-    */
-  .rtc_reserved (NOLOAD):
-  {
-    . = ALIGN(4);
-    _rtc_reserved_start = ABSOLUTE(.);
-    /* New data can only be added here to ensure existing data are not moved.
-        Because data have adhered to the end of the segment and code is relied 
on it.
-        >> put new data here << */
-
-    *(.rtc_timer_data_in_rtc_mem .rtc_timer_data_in_rtc_mem.*)
-    KEEP(*(.bootloader_data_rtc_mem .bootloader_data_rtc_mem.*))
-    _rtc_reserved_end = ABSOLUTE(.);
-  } > rtc_reserved_seg
-}
diff --git a/boards/xtensa/esp32/esp32-2432S028/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-2432S028/scripts/Make.defs
index 5998c411707..e4312a8787f 100644
--- a/boards/xtensa/esp32/esp32-2432S028/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-2432S028/scripts/Make.defs
@@ -33,24 +33,22 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
-CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
+CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
-CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
 CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
 CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
 AFLAGS := $(CFLAGS) -D__ASSEMBLY__
diff --git a/boards/xtensa/esp32/esp32-audio-kit/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-audio-kit/scripts/Make.defs
index 1f800c71de7..eb90a068f52 100644
--- a/boards/xtensa/esp32/esp32-audio-kit/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-audio-kit/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/esp32-devkitc/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-devkitc/scripts/Make.defs
index 2dea0bfe291..89364a734af 100644
--- a/boards/xtensa/esp32/esp32-devkitc/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-devkitc/scripts/Make.defs
@@ -33,12 +33,7 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
 
@@ -48,6 +43,10 @@ ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/Make.defs
index 9172fa600d1..23169a805de 100644
--- a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/esp32-lyrat/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-lyrat/scripts/Make.defs
index 9c766b1fa45..119baee700e 100644
--- a/boards/xtensa/esp32/esp32-lyrat/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-lyrat/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/esp32-pico-kit/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-pico-kit/scripts/Make.defs
index fbeb5730edf..bedea16b7ee 100644
--- a/boards/xtensa/esp32/esp32-pico-kit/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-pico-kit/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/esp32-sparrow-kit/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-sparrow-kit/scripts/Make.defs
index 422845482e1..02bbdd88577 100644
--- a/boards/xtensa/esp32/esp32-sparrow-kit/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-sparrow-kit/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/esp32-wrover-kit/scripts/Make.defs 
b/boards/xtensa/esp32/esp32-wrover-kit/scripts/Make.defs
index ba1de5aa517..c628453e703 100644
--- a/boards/xtensa/esp32/esp32-wrover-kit/scripts/Make.defs
+++ b/boards/xtensa/esp32/esp32-wrover-kit/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/heltec_wifi_lora32/scripts/Make.defs 
b/boards/xtensa/esp32/heltec_wifi_lora32/scripts/Make.defs
index c5245c12325..f0f7b104ce8 100644
--- a/boards/xtensa/esp32/heltec_wifi_lora32/scripts/Make.defs
+++ b/boards/xtensa/esp32/heltec_wifi_lora32/scripts/Make.defs
@@ -33,14 +33,18 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
+endif
+
+# if SPIRAM/PSRAM is used then we need to include a workaround
 
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+ifeq ($(CONFIG_ESP32_SPIRAM),y)
+  ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
 
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
diff --git a/boards/xtensa/esp32/lilygo_tbeam_lora_gps/scripts/Make.defs 
b/boards/xtensa/esp32/lilygo_tbeam_lora_gps/scripts/Make.defs
index d7e2c93fa1f..71bb54f2c71 100644
--- a/boards/xtensa/esp32/lilygo_tbeam_lora_gps/scripts/Make.defs
+++ b/boards/xtensa/esp32/lilygo_tbeam_lora_gps/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/ttgo_eink5_v2/scripts/Make.defs 
b/boards/xtensa/esp32/ttgo_eink5_v2/scripts/Make.defs
index baaf36f6119..137010fb026 100644
--- a/boards/xtensa/esp32/ttgo_eink5_v2/scripts/Make.defs
+++ b/boards/xtensa/esp32/ttgo_eink5_v2/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/ttgo_lora_esp32/scripts/Make.defs 
b/boards/xtensa/esp32/ttgo_lora_esp32/scripts/Make.defs
index 4ba9bbec678..983083ec014 100644
--- a/boards/xtensa/esp32/ttgo_lora_esp32/scripts/Make.defs
+++ b/boards/xtensa/esp32/ttgo_lora_esp32/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
diff --git a/boards/xtensa/esp32/ttgo_t_display_esp32/scripts/Make.defs 
b/boards/xtensa/esp32/ttgo_t_display_esp32/scripts/Make.defs
index e1f504fbb28..f8c208c620a 100644
--- a/boards/xtensa/esp32/ttgo_t_display_esp32/scripts/Make.defs
+++ b/boards/xtensa/esp32/ttgo_t_display_esp32/scripts/Make.defs
@@ -33,21 +33,19 @@ ifeq ($(CONFIG_BUILD_PROTECTED),y)
   ARCHSCRIPT += $(call FINDSCRIPT,kernel-space.ld)
 else
   ARCHSCRIPT += $(call FINDSCRIPT,flat_memory.ld)
-
-  ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y)
-    ARCHSCRIPT += $(call FINDSCRIPT,legacy_sections.ld)
-  else
-    ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
-  endif
+  ARCHSCRIPT += $(call FINDSCRIPT,esp32_sections.ld)
 endif
 
-
 # if SPIRAM/PSRAM is used then we need to include a workaround
 
 ifeq ($(CONFIG_ESP32_SPIRAM),y)
   ARCHCFLAGS += -mfix-esp32-psram-cache-issue
 endif
 
+ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY), y)
+  LDFLAGS += -u esp_app_desc
+endif
+
 CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) 
$(ARCHDEFINES) $(EXTRAFLAGS)
 CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
 CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) 
$(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)

Reply via email to