From 0f268f0920e3e13d8a0c5269bc8ba77dfaddc1f7 Mon Sep 17 00:00:00 2001 From: Sudeep Mohanty Date: Wed, 26 Nov 2025 14:02:01 +0530 Subject: [PATCH] fix(system): Fix linker error for esp32p4 C++ constructors This commit fixes an issue where C++ constructor priority array symbols (__init_priority_array_start/end) were undefined when linking. --- components/esp_system/ld/esp32p4/sections.rev3.ld.in | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/esp_system/ld/esp32p4/sections.rev3.ld.in b/components/esp_system/ld/esp32p4/sections.rev3.ld.in index 8163968790d..d8cbd257294 100644 --- a/components/esp_system/ld/esp32p4/sections.rev3.ld.in +++ b/components/esp_system/ld/esp32p4/sections.rev3.ld.in @@ -407,8 +407,14 @@ SECTIONS ALIGNED_SYMBOL(4, __preinit_array_start) KEEP (*(.preinit_array)) __preinit_array_end = ABSOLUTE(.); - ALIGNED_SYMBOL(4, __init_array_start) + + . = ALIGN(4); + PROVIDE(__init_priority_array_start = ABSOLUTE(.)); KEEP (*(SORT_BY_INIT_PRIORITY(EXCLUDE_FILE (*crtend.* *crtbegin.*) .init_array.*))) + . = ALIGN(4); + PROVIDE(__init_priority_array_end = ABSOLUTE(.)); + + ALIGNED_SYMBOL(4, __init_array_start) KEEP (*(EXCLUDE_FILE (*crtend.* *crtbegin.*) .init_array)) __init_array_end = ABSOLUTE(.);