mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-05 05:34:32 +02:00
fix(esp_system): fix binary generation error when no eh_frame but TLS
ERROR: A fatal error occurred: Segment loaded at 0x3c01d150 lands in same 64KB flash mapping as segment loaded at 0x3c018020. Can't generate binary. Suggest changing linker script or ELF to merge sections. Seems binary generator does not handle well empty sections that contains aligning only. I did not investigate much but this change helped.
This commit is contained in:
@@ -55,10 +55,10 @@
|
|||||||
*/
|
*/
|
||||||
*(.rela.*)
|
*(.rela.*)
|
||||||
*(.got .got.plt) /* TODO: GCC-382 */
|
*(.got .got.plt) /* TODO: GCC-382 */
|
||||||
#if !(CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME)
|
#if !EH_FRAME_LINKING_ENABLED
|
||||||
*(.eh_frame_hdr)
|
*(.eh_frame_hdr)
|
||||||
*(.eh_frame)
|
*(.eh_frame)
|
||||||
#endif // !(CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME)
|
#endif // !EH_FRAME_LINKING_ENABLED
|
||||||
}
|
}
|
||||||
#elif CONFIG_IDF_TARGET_ARCH_XTENSA
|
#elif CONFIG_IDF_TARGET_ARCH_XTENSA
|
||||||
/**
|
/**
|
||||||
@@ -79,9 +79,9 @@
|
|||||||
{
|
{
|
||||||
*(.fini)
|
*(.fini)
|
||||||
*(.eh_frame_hdr)
|
*(.eh_frame_hdr)
|
||||||
#if !CONFIG_COMPILER_CXX_EXCEPTIONS
|
#if !EH_FRAME_LINKING_ENABLED
|
||||||
*(.eh_frame)
|
*(.eh_frame)
|
||||||
#endif // !CONFIG_COMPILER_CXX_EXCEPTIONS
|
#endif // !EH_FRAME_LINKING_ENABLED
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#error "Target architecture is not supported!"
|
#error "Target architecture is not supported!"
|
||||||
|
@@ -353,7 +353,7 @@ SECTIONS
|
|||||||
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
||||||
*(.xt_except_desc_end)
|
*(.xt_except_desc_end)
|
||||||
|
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
KEEP(*(.eh_frame))
|
KEEP(*(.eh_frame))
|
||||||
/**
|
/**
|
||||||
@@ -361,7 +361,7 @@ SECTIONS
|
|||||||
* (see __FRAME_END__ in libgcc sources), it is manually provided here.
|
* (see __FRAME_END__ in libgcc sources), it is manually provided here.
|
||||||
*/
|
*/
|
||||||
LONG(0);
|
LONG(0);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* C++ constructor tables.
|
* C++ constructor tables.
|
||||||
|
@@ -227,19 +227,18 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.flash.rodata, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.rodata, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
@@ -247,7 +246,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -258,11 +256,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -345,19 +345,18 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.flash.rodata, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.rodata, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
@@ -365,7 +364,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -376,11 +374,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -378,9 +378,9 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.flash.rodata, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.rodata, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
/* External RAM */
|
/* External RAM */
|
||||||
/**
|
/**
|
||||||
@@ -421,15 +421,14 @@ SECTIONS
|
|||||||
} > extern_ram_seg
|
} > extern_ram_seg
|
||||||
#endif //CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY
|
#endif //CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
@@ -437,7 +436,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -448,11 +446,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -394,19 +394,18 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.flash.rodata, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.rodata, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
@@ -414,7 +413,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -425,11 +423,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -236,10 +236,9 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.flash.rodata, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.rodata, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
|
|
||||||
/* External RAM */
|
/* External RAM */
|
||||||
/**
|
/**
|
||||||
@@ -280,15 +279,14 @@ SECTIONS
|
|||||||
} > extern_ram_seg
|
} > extern_ram_seg
|
||||||
#endif //CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY
|
#endif //CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
@@ -296,7 +294,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -307,11 +304,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -383,19 +383,18 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.flash.rodata, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.rodata, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
@@ -403,7 +402,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -414,11 +412,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > default_rodata_seg
|
} > default_rodata_seg
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -400,19 +400,18 @@ SECTIONS
|
|||||||
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
_esp_system_init_fn_array_end = ABSOLUTE(.);
|
||||||
|
|
||||||
_rodata_end = ABSOLUTE(.);
|
_rodata_end = ABSOLUTE(.);
|
||||||
. = ALIGN(ALIGNOF(.eh_frame_hdr));
|
. = ALIGN(ALIGNOF(SECTION_AFTER_FLASH_RODATA));
|
||||||
} > rodata_seg_low
|
} > rodata_seg_low
|
||||||
ASSERT_SECTIONS_GAP(.flash.init_array, .eh_frame_hdr)
|
ASSERT_SECTIONS_GAP(.flash.init_array, SECTION_AFTER_FLASH_RODATA)
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
ALIGNED_SYMBOL(4, __eh_frame_hdr)
|
||||||
|
|
||||||
KEEP (*(.eh_frame_hdr))
|
KEEP (*(.eh_frame_hdr))
|
||||||
|
|
||||||
__eh_frame_hdr_end = ABSOLUTE(.);
|
__eh_frame_hdr_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.eh_frame));
|
. = ALIGN(ALIGNOF(.eh_frame));
|
||||||
} > rodata_seg_low
|
} > rodata_seg_low
|
||||||
@@ -420,7 +419,6 @@ SECTIONS
|
|||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
|
|
||||||
KEEP (*(.eh_frame))
|
KEEP (*(.eh_frame))
|
||||||
@@ -431,11 +429,11 @@ SECTIONS
|
|||||||
LONG(0);
|
LONG(0);
|
||||||
|
|
||||||
__eh_frame_end = ABSOLUTE(.);
|
__eh_frame_end = ABSOLUTE(.);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
|
||||||
|
|
||||||
. = ALIGN(ALIGNOF(.flash.tdata));
|
. = ALIGN(ALIGNOF(.flash.tdata));
|
||||||
} > rodata_seg_low
|
} > rodata_seg_low
|
||||||
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
ASSERT_SECTIONS_GAP(.eh_frame, .flash.tdata)
|
||||||
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
.flash.tdata :
|
.flash.tdata :
|
||||||
{
|
{
|
||||||
|
@@ -353,7 +353,7 @@ SECTIONS
|
|||||||
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
||||||
*(.xt_except_desc_end)
|
*(.xt_except_desc_end)
|
||||||
|
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
KEEP(*(.eh_frame))
|
KEEP(*(.eh_frame))
|
||||||
/**
|
/**
|
||||||
@@ -361,7 +361,7 @@ SECTIONS
|
|||||||
* (see __FRAME_END__ in libgcc sources), it is manually provided here.
|
* (see __FRAME_END__ in libgcc sources), it is manually provided here.
|
||||||
*/
|
*/
|
||||||
LONG(0);
|
LONG(0);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* C++ constructor tables.
|
* C++ constructor tables.
|
||||||
|
@@ -363,7 +363,7 @@ SECTIONS
|
|||||||
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
||||||
*(.xt_except_desc_end)
|
*(.xt_except_desc_end)
|
||||||
|
|
||||||
#if CONFIG_COMPILER_CXX_EXCEPTIONS
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
ALIGNED_SYMBOL(4, __eh_frame)
|
ALIGNED_SYMBOL(4, __eh_frame)
|
||||||
KEEP(*(.eh_frame))
|
KEEP(*(.eh_frame))
|
||||||
/**
|
/**
|
||||||
@@ -371,7 +371,7 @@ SECTIONS
|
|||||||
* (see __FRAME_END__ in libgcc sources), it is manually provided here.
|
* (see __FRAME_END__ in libgcc sources), it is manually provided here.
|
||||||
*/
|
*/
|
||||||
LONG(0);
|
LONG(0);
|
||||||
#endif // CONFIG_COMPILER_CXX_EXCEPTIONS
|
#endif // EH_FRAME_LINKING_ENABLED
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* C++ constructor tables.
|
* C++ constructor tables.
|
||||||
|
@@ -78,3 +78,13 @@ ASSERT((ADDR(NEXT_SECTION) == ADDR(PREV_SECTION) + SIZEOF(PREV_SECTION)), \
|
|||||||
#define ALIGNED_SYMBOL(X, SYMBOL) \
|
#define ALIGNED_SYMBOL(X, SYMBOL) \
|
||||||
\n . = ALIGN(X); \
|
\n . = ALIGN(X); \
|
||||||
\n SYMBOL = ABSOLUTE(.);
|
\n SYMBOL = ABSOLUTE(.);
|
||||||
|
|
||||||
|
#if CONFIG_COMPILER_CXX_EXCEPTIONS || CONFIG_ESP_SYSTEM_USE_EH_FRAME
|
||||||
|
#define EH_FRAME_LINKING_ENABLED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if EH_FRAME_LINKING_ENABLED
|
||||||
|
#define SECTION_AFTER_FLASH_RODATA .eh_frame_hdr
|
||||||
|
#else
|
||||||
|
#define SECTION_AFTER_FLASH_RODATA .flash.tdata
|
||||||
|
#endif
|
||||||
|
Reference in New Issue
Block a user