@@ -611,6 +611,40 @@ SECTIONS
611
611
__bss_end__ = .;
612
612
} > RAM
613
613
614
+ .tdata :
615
+ {
616
+ *(.tdata .tdata.* .gnu.linkonce.td.*)
617
+ __tdata_end = .;
618
+ } > RAM AT > FLASH
619
+ PROVIDE ( __tls_base = ADDR (.tdata));
620
+ PROVIDE ( __tdata_start = ADDR (.tdata));
621
+ PROVIDE ( __tdata_source = LOADADDR (.tdata) );
622
+ PROVIDE ( __tdata_source_end = LOADADDR (.tdata) + SIZEOF (.tdata) );
623
+ PROVIDE ( __data_source_end = __tdata_source_end );
624
+ PROVIDE ( __tdata_size = SIZEOF (.tdata) );
625
+
626
+ /*
627
+ * TLS zeroed data is relocated as if it immediately followed
628
+ * the tdata values. However, the linker 'magically' erases the
629
+ * memory allocation so that no ROM is consumed by this
630
+ * section
631
+ */
632
+ .tbss :
633
+ {
634
+ *(.tbss .tbss.* .gnu.linkonce.tb.*)
635
+ *(.tcommon)
636
+ PROVIDE ( __tls_end = . );
637
+ PROVIDE ( __tbss_end = . );
638
+ } > RAM
639
+ PROVIDE ( __tbss_start = ADDR (.tbss));
640
+ PROVIDE ( __tbss_offset = ADDR (.tbss) - ADDR (.tdata) );
641
+ PROVIDE ( __tbss_size = SIZEOF (.tbss) );
642
+ PROVIDE ( __tls_size = __tls_end - __tls_base );
643
+ PROVIDE ( __tls_align = MAX (ALIGNOF(.tdata), ALIGNOF(.tbss)) );
644
+ PROVIDE ( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1));
645
+ PROVIDE ( __arm32_tls_tcb_offset = MAX (8, __tls_align) );
646
+ PROVIDE ( __arm64_tls_tcb_offset = MAX (16, __tls_align) );
647
+
614
648
.heap (NOLOAD) :
615
649
{
616
650
. = ALIGN (8);
@@ -837,4 +871,4 @@ SECTIONS
837
871
838
872
/* Symbol required for RA Configuration tool. */
839
873
__tz_OPTION_SETTING_DATA_FLASH_S_N = __OPTION_SETTING_DATA_FLASH_S_End;
840
- }
874
+ }
0 commit comments