bsps: Fix TLS support in linker command files

The TLS section symbols had wrong values in case of an empty TLS data
section and a nonempty TLS BSS section.
This commit is contained in:
Sebastian Huber
2014-04-22 09:45:39 +02:00
parent e2782684f2
commit d60e760e80
79 changed files with 237 additions and 79 deletions

View File

@@ -150,9 +150,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
__rodata_end = . ; __rodata_end = . ;
.eh_frame : .eh_frame :

View File

@@ -132,9 +132,11 @@ SECTIONS {
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > REGION_RODATA AT > REGION_RODATA_LOAD } > REGION_RODATA AT > REGION_RODATA_LOAD
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.preinit_array : ALIGN_WITH_INPUT { .preinit_array : ALIGN_WITH_INPUT {
PROVIDE_HIDDEN (__preinit_array_start = .); PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array)) KEEP (*(.preinit_array))

View File

@@ -163,9 +163,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > data } > data
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : .data :
{ {
*(.data) *(.data)

View File

@@ -79,9 +79,11 @@ SECTIONS
} > sdram } > sdram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.fini : .fini :
{ {

View File

@@ -87,9 +87,11 @@ SECTIONS
} > sdram } > sdram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.fini : .fini :
{ {

View File

@@ -76,9 +76,11 @@ SECTIONS
} > sdram } > sdram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.fini : .fini :
{ {

View File

@@ -70,9 +70,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} >ram } >ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.tors SIZEOF(.tbss) + ADDR(.tbss): { .tors SIZEOF(.tbss) + ADDR(.tbss): {
___ctors = . ; ___ctors = . ;
*(.ctors) *(.ctors)

View File

@@ -108,9 +108,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame_hdr : { *(.eh_frame_hdr) }
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }

View File

@@ -90,9 +90,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > sdram } > sdram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */

View File

@@ -89,9 +89,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > sdram } > sdram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */

View File

@@ -72,9 +72,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > RAM } > RAM
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
. = ALIGN(32 / 8); . = ALIGN(32 / 8);

View File

@@ -91,9 +91,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.sdata2 : .sdata2 :
{ {
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*) *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)

View File

@@ -147,9 +147,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -146,9 +146,11 @@ SECTIONS
} >flash } >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x1000 : AT ( ADDR(.tdata) + SIZEOF ( .tdata ) ) .data 0x1000 : AT ( ADDR(.tdata) + SIZEOF ( .tdata ) )
{ {

View File

@@ -146,9 +146,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -115,9 +115,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : .data :

View File

@@ -128,9 +128,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -156,9 +156,11 @@ SECTIONS {
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -120,9 +120,11 @@ SECTIONS {
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
_copy_start = .; _copy_start = .;

View File

@@ -125,9 +125,11 @@ SECTIONS {
} >rom } >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : AT(SIZEOF(.text)) { .data : AT(SIZEOF(.text)) {
_copy_start = .; _copy_start = .;

View File

@@ -124,9 +124,11 @@ SECTIONS {
} >rom } >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : AT(SIZEOF(.text)) { .data : AT(SIZEOF(.text)) {
_copy_start = .; _copy_start = .;

View File

@@ -125,9 +125,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -150,9 +150,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data BLOCK (0x4) : { .data BLOCK (0x4) : {
copy_start = .; copy_start = .;

View File

@@ -150,9 +150,11 @@ SECTIONS
} >rom } >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x30000400 : AT(LOADADDR(.text) + SIZEOF(.text)) { .data 0x30000400 : AT(LOADADDR(.text) + SIZEOF(.text)) {
copy_start = .; copy_start = .;

View File

@@ -134,9 +134,11 @@ SECTIONS
} >flash } >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x20000400 : AT (_estuff) .data 0x20000400 : AT (_estuff)
{ {

View File

@@ -134,9 +134,11 @@ SECTIONS
} >flash } >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x20000400 : AT (_estuff) .data 0x20000400 : AT (_estuff)
{ {

View File

@@ -154,9 +154,11 @@ SECTIONS
} > dram } > dram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -158,9 +158,11 @@ SECTIONS
} >flash } >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x4000 : AT ( ADDR(.tdata) + SIZEOF ( .tdata ) ) .data 0x4000 : AT ( ADDR(.tdata) + SIZEOF ( .tdata ) )
{ {

View File

@@ -154,9 +154,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -145,9 +145,11 @@ SECTIONS
} > dram } > dram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : .data :
{ {

View File

@@ -141,9 +141,11 @@ SECTIONS
} > boot_flash } > boot_flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x40000500 : AT (_estuff) .data 0x40000500 : AT (_estuff)
{ {

View File

@@ -155,9 +155,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > rom } > rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.gcc_exc : .gcc_exc :
AT ( ADDR(.tdata) + SIZEOF( .tdata ) ) AT ( ADDR(.tdata) + SIZEOF( .tdata ) )
{ {

View File

@@ -125,9 +125,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -129,9 +129,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -129,9 +129,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -132,9 +132,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -139,9 +139,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -34,9 +34,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.vtable (ADDR(.text) + SIZEOF(.text)) : .vtable (ADDR(.text) + SIZEOF(.text)) :
{ {

View File

@@ -141,9 +141,11 @@ SECTIONS
} >rom } >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data (ADDR(.vtable) + SIZEOF(.vtable)) : .data (ADDR(.vtable) + SIZEOF(.vtable)) :

View File

@@ -34,9 +34,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.vtable 0 : .vtable 0 :
{ {

View File

@@ -67,9 +67,11 @@ SECTIONS {
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > REGION_TEXT AT > REGION_TEXT_LOAD } > REGION_TEXT AT > REGION_TEXT_LOAD
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.preinit_array : ALIGN_WITH_INPUT { .preinit_array : ALIGN_WITH_INPUT {
PROVIDE_HIDDEN (__preinit_array_start = .); PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array)) KEEP (*(.preinit_array))

View File

@@ -122,9 +122,11 @@ SECTIONS
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data 0x80000 : AT (ADDR(.tdata) + SIZEOF (.tdata)) { .data 0x80000 : AT (ADDR(.tdata) + SIZEOF (.tdata)) {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -162,9 +162,11 @@ SECTIONS
} > ram } > ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -127,9 +127,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : .data :
{ {

View File

@@ -124,9 +124,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : .data :
{ {

View File

@@ -113,9 +113,11 @@ SECTIONS
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -109,9 +109,11 @@ SECTIONS
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -109,9 +109,11 @@ SECTIONS
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -113,9 +113,11 @@ SECTIONS
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -113,9 +113,11 @@ SECTIONS
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -143,9 +143,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame_hdr : { *(.eh_frame_hdr) }
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */

View File

@@ -212,9 +212,11 @@ SECTIONS
} > onchip_memory_0 } > onchip_memory_0
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
PROVIDE (__flash_rodata_start = LOADADDR(.rodata)); PROVIDE (__flash_rodata_start = LOADADDR(.rodata));

View File

@@ -106,9 +106,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} >CODE } >CODE
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2) *(.gnu.linkonce.s2.*) } > CODE .sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2) *(.gnu.linkonce.s2.*) } > CODE
.sbss2 : { .sbss2 : {
PROVIDE (__sbss2_start = .); PROVIDE (__sbss2_start = .);

View File

@@ -75,9 +75,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.eh_frame : { *(.eh_frame) } .eh_frame : { *(.eh_frame) }
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);

View File

@@ -132,9 +132,11 @@ SECTIONS {
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > RAM } > RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.sdata2 : { .sdata2 : {
PROVIDE (_SDA2_BASE_ = 32768); PROVIDE (_SDA2_BASE_ = 32768);

View File

@@ -154,9 +154,11 @@ SECTIONS
} >RAM } >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.jcr : { KEEP (*(.jcr)) } >RAM .jcr : { KEEP (*(.jcr)) } >RAM

View File

@@ -152,9 +152,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.rel.dyn : .rel.dyn :
{ {

View File

@@ -153,9 +153,11 @@ SECTIONS
} >ram } >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.rel.dyn : .rel.dyn :

View File

@@ -87,9 +87,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} >ROM =0 } >ROM =0
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.rodata : .rodata :
{ {

View File

@@ -114,9 +114,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} >RAM } >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.eh_frame : { *(.eh_frame) } >RAM .eh_frame : { *(.eh_frame) } >RAM
_etext = .; _etext = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);

View File

@@ -93,9 +93,11 @@ SECTIONS
} >CODE } >CODE
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */

View File

@@ -119,9 +119,11 @@ SECTIONS {
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > REGION_RODATA AT > REGION_RODATA_LOAD } > REGION_RODATA AT > REGION_RODATA_LOAD
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.preinit_array : ALIGN_WITH_INPUT { .preinit_array : ALIGN_WITH_INPUT {
PROVIDE_HIDDEN (__preinit_array_start = .); PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array)) KEEP (*(.preinit_array))

View File

@@ -152,9 +152,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} }
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* /*
* If debugging, stack the read/write sections directly after the text * If debugging, stack the read/write sections directly after the text

View File

@@ -126,9 +126,11 @@ SECTIONS {
} > RAM } > RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.sdata2 : { .sdata2 : {
PROVIDE (_SDA2_BASE_ = 32768); PROVIDE (_SDA2_BASE_ = 32768);

View File

@@ -107,9 +107,11 @@ SECTIONS
} >RAM } >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Initialised small data addressed as offsets from r2 */ /* Initialised small data addressed as offsets from r2 */
.sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM .sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM

View File

@@ -107,9 +107,11 @@ SECTIONS
} >RAM } >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Initialised small data addressed as offsets from r2 */ /* Initialised small data addressed as offsets from r2 */
.sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM .sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM

View File

@@ -142,9 +142,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(128) + (. & (128 - 1)); . = ALIGN(128) + (. & (128 - 1));

View File

@@ -153,9 +153,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(128) + (. & (128 - 1)); . = ALIGN(128) + (. & (128 - 1));

View File

@@ -152,9 +152,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(128) + (. & (128 - 1)); . = ALIGN(128) + (. & (128 - 1));

View File

@@ -153,9 +153,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(128) + (. & (128 - 1)); . = ALIGN(128) + (. & (128 - 1));

View File

@@ -104,9 +104,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.ctors : .ctors :
{ {
___ctors = .; ___ctors = .;

View File

@@ -116,9 +116,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > rom } > rom
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.ctors : .ctors :
{ {
___ctors = .; ___ctors = .;

View File

@@ -103,9 +103,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.ctors : AT(LOADADDR(.rodata) + SIZEOF(.rodata)) .ctors : AT(LOADADDR(.rodata) + SIZEOF(.rodata))
{ {
___ctors = .; ___ctors = .;

View File

@@ -140,9 +140,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(128) + (. & (128 - 1)); . = ALIGN(128) + (. & (128 - 1));

View File

@@ -134,9 +134,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} > ram } > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
/* Adjust the address for the data segment. We want to adjust up to /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(128) + (. & (128 - 1)); . = ALIGN(128) + (. & (128 - 1));

View File

@@ -117,9 +117,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > ram } > ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.rtemsroset : { .rtemsroset : {
/* for pre rtems-libbsd FreeBSD code */ /* for pre rtems-libbsd FreeBSD code */
__start_set_sysctl_set = .; __start_set_sysctl_set = .;

View File

@@ -160,9 +160,11 @@ SECTIONS
_TLS_BSS_end = .; _TLS_BSS_end = .;
} > ram } > ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : AT (ADDR (.tbss) + SIZEOF (.tbss)) .data : AT (ADDR (.tbss) + SIZEOF (.tbss))
{ {

View File

@@ -102,9 +102,11 @@ SECTIONS
__TLS_BSS_end = .; __TLS_BSS_end = .;
} }
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
__TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin; __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata); __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
.data : .data :
{ {
*(.data) *(.data)

View File

@@ -355,9 +355,11 @@ in its linker command file:
_TLS_BSS_end = .; _TLS_BSS_end = .;
@} @}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin; _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin; _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata); _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
@end example @end example
@section CPU counter @section CPU counter