bsps: Thread-local storage (TLS) for linkcmds

This commit is contained in:
Sebastian Huber
2014-01-28 11:52:17 +01:00
parent 16a41ccbce
commit 960fd8546f
79 changed files with 1279 additions and 44 deletions

View File

@@ -139,6 +139,20 @@ SECTIONS
SORT(CONSTRUCTORS) SORT(CONSTRUCTORS)
. = ALIGN(4); . = ALIGN(4);
} =0xFF } =0xFF
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} =0xFF
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
__rodata_end = . ; __rodata_end = . ;
.eh_frame : .eh_frame :
@@ -219,22 +233,7 @@ SECTIONS
/************************************************************************* /*************************************************************************
calculate __ro_end calculate __ro_end
*************************************************************************/ *************************************************************************/
__ro_end = __ro_end = .;
ADDR(.text) +
SIZEOF(.text) +
SIZEOF(.init) +
SIZEOF(.fini) +
SIZEOF(.rodata) +
SIZEOF(.eh_frame) +
SIZEOF(.gcc_except_table) +
SIZEOF(.ctors) +
SIZEOF(.dtors) +
SIZEOF(.jcr) +
SIZEOF(.ARM.extab) +
SIZEOF(.ARM.exidx) +
SIZEOF(.preinit_array) +
SIZEOF(.init_array) +
SIZEOF(.fini_array);
PROVIDE(__text_end__ = __ro_end ); PROVIDE(__text_end__ = __ro_end );
/*** IWRAM ***/ /*** IWRAM ***/
@@ -301,7 +300,6 @@ SECTIONS
*(EXCLUDE_FILE(*.rodata.* *.ewram.o *.iwram.o) .data) *(EXCLUDE_FILE(*.rodata.* *.ewram.o *.iwram.o) .data)
*(.data.* .gnu.linkonce.d.*) *(.data.* .gnu.linkonce.d.*)
*(.data1) *(.data1)
*(.tdata .tdata.* .gnu.linkonce.td.*)
*(.sdata .sdata.* .gnu.linkonce.s.*) *(.sdata .sdata.* .gnu.linkonce.s.*)
. = ALIGN(4); . = ALIGN(4);
} =0xFF } =0xFF
@@ -322,7 +320,6 @@ SECTIONS
.bss : .bss :
{ {
*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
*(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon) *(.tcommon)
*(.sbss .sbss.* .gnu.linkonce.sb.*) *(.sbss .sbss.* .gnu.linkonce.sb.*)
*(.scommon) *(.scommon)

View File

@@ -122,11 +122,19 @@ SECTIONS {
*(.gcc_except_table .gcc_except_table.*) *(.gcc_except_table .gcc_except_table.*)
} > REGION_RODATA AT > REGION_RODATA_LOAD } > REGION_RODATA AT > REGION_RODATA_LOAD
.tdata : ALIGN_WITH_INPUT { .tdata : ALIGN_WITH_INPUT {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*) *(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > REGION_RODATA AT > REGION_RODATA_LOAD } > REGION_RODATA AT > REGION_RODATA_LOAD
.tbss : ALIGN_WITH_INPUT { .tbss : ALIGN_WITH_INPUT {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_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_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.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

@@ -151,9 +151,23 @@ SECTIONS
KEEP (*(.fini0)) KEEP (*(.fini0))
_etext = . ; _etext = . ;
} > text } > text
.data : AT (ADDR (.text) + SIZEOF (.text)) .tdata : AT (ADDR (.text) + SIZEOF (.text)) {
{
PROVIDE (__data_start = .) ; PROVIDE (__data_start = .) ;
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > data
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > data
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data :
{
*(.data) *(.data)
*(.data*) *(.data*)
*(.rodata) /* We need to include .rodata here if gcc is used */ *(.rodata) /* We need to include .rodata here if gcc is used */

View File

@@ -65,6 +65,23 @@ SECTIONS
LONG(0) LONG(0)
___DTOR_END__ = .; ___DTOR_END__ = .;
} > sdram } > sdram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > sdram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > sdram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.fini : .fini :
{ {

View File

@@ -73,6 +73,23 @@ SECTIONS
LONG(0) LONG(0)
___DTOR_END__ = .; ___DTOR_END__ = .;
} > sdram } > sdram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > sdram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > sdram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.fini : .fini :
{ {

View File

@@ -62,6 +62,23 @@ SECTIONS
LONG(0) LONG(0)
___DTOR_END__ = .; ___DTOR_END__ = .;
} > sdram } > sdram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > sdram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > sdram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.fini : .fini :
{ {

View File

@@ -59,7 +59,21 @@ SECTIONS
_etext = .; _etext = .;
} >ram } >ram
.tors SIZEOF(.text) + ADDR(.text): { .tdata SIZEOF(.text) + ADDR(.text): {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} >ram
.tbss SIZEOF(.tdata) + ADDR(.tdata): {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} >ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.tors SIZEOF(.tbss) + ADDR(.tbss): {
___ctors = . ; ___ctors = . ;
*(.ctors) *(.ctors)
___ctors_end = . ; ___ctors_end = . ;

View File

@@ -97,6 +97,20 @@ SECTIONS
PROVIDE (etext = .); PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) } .rodata1 : { *(.rodata1) }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.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

@@ -79,6 +79,20 @@ SECTIONS
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > sdram .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > sdram
.rodata1 : { *(.rodata1) } > sdram .rodata1 : { *(.rodata1) } > sdram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > sdram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > sdram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -78,6 +78,20 @@ SECTIONS
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > sdram .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > sdram
.rodata1 : { *(.rodata1) } > sdram .rodata1 : { *(.rodata1) } > sdram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > sdram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > sdram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -61,6 +61,21 @@ SECTIONS
PROVIDE(__romdatastart = .); /* IF_ROROM */ PROVIDE(__romdatastart = .); /* IF_ROROM */
} > RAM } > RAM
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > RAM
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > RAM
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
. = ALIGN(32 / 8); . = ALIGN(32 / 8);
PROVIDE (__datastart = .); /* IF_ROROM */ PROVIDE (__datastart = .); /* IF_ROROM */

View File

@@ -80,6 +80,20 @@ SECTIONS
PROVIDE (etext = .); PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) } .rodata1 : { *(.rodata1) }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.sdata2 : .sdata2 :
{ {
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*) *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)

View File

@@ -133,6 +133,23 @@ SECTIONS
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -132,8 +132,25 @@ SECTIONS
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >flash } >flash
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >flash
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x1000 : AT ( ADDR(.text) + SIZEOF ( .text ) ) .data 0x1000 : AT ( ADDR(.tdata) + SIZEOF ( .tdata ) )
{ {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );
PROVIDE( _copy_start = .); PROVIDE( _copy_start = .);

View File

@@ -132,6 +132,23 @@ SECTIONS
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -102,6 +102,24 @@ SECTIONS
} > ram } > ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : .data :
{ {
copy_start = .; copy_start = .;

View File

@@ -114,6 +114,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -142,6 +142,24 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -106,6 +106,24 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
PROVIDE (etext = .); PROVIDE (etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
_copy_start = .; _copy_start = .;
*(.data*) *(.data*)

View File

@@ -111,6 +111,24 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
PROVIDE (etext = .); PROVIDE (etext = .);
} >rom } >rom
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >rom
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : AT(SIZEOF(.text)) { .data : AT(SIZEOF(.text)) {
_copy_start = .; _copy_start = .;
*(.data) *(.data)

View File

@@ -110,6 +110,24 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
PROVIDE (etext = .); PROVIDE (etext = .);
} >rom } >rom
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >rom
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : AT(SIZEOF(.text)) { .data : AT(SIZEOF(.text)) {
_copy_start = .; _copy_start = .;
*(.data) *(.data)

View File

@@ -111,6 +111,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -137,6 +137,23 @@ SECTIONS
} > ram } > ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data BLOCK (0x4) : { .data BLOCK (0x4) : {
copy_start = .; copy_start = .;
*(.shdata) *(.shdata)

View File

@@ -137,6 +137,23 @@ SECTIONS
} >rom } >rom
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >rom
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x30000400 : AT(LOADADDR(.text) + SIZEOF(.text)) { .data 0x30000400 : AT(LOADADDR(.text) + SIZEOF(.text)) {
copy_start = .; copy_start = .;
. = ALIGN (0x10); . = ALIGN (0x10);

View File

@@ -116,11 +116,28 @@ SECTIONS
*(.console_gdb_xfer) *(.console_gdb_xfer)
*(.bootstrap_data) *(.bootstrap_data)
} >flash
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
. = ALIGN(16); . = ALIGN(16);
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >flash } >flash
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x20000400 : AT (_estuff) .data 0x20000400 : AT (_estuff)
{ {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -116,11 +116,28 @@ SECTIONS
*(.console_gdb_xfer) *(.console_gdb_xfer)
*(.bootstrap_data) *(.bootstrap_data)
} >flash
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
. = ALIGN(16); . = ALIGN(16);
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >flash } >flash
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x20000400 : AT (_estuff) .data 0x20000400 : AT (_estuff)
{ {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -140,6 +140,23 @@ SECTIONS
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > dram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > dram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -144,8 +144,25 @@ SECTIONS
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >flash } >flash
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >flash
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x4000 : AT ( ADDR(.text) + SIZEOF ( .text ) ) .data 0x4000 : AT ( ADDR(.tdata) + SIZEOF ( .tdata ) )
{ {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );
PROVIDE( _copy_start = .); PROVIDE( _copy_start = .);

View File

@@ -140,6 +140,23 @@ SECTIONS
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -132,6 +132,23 @@ SECTIONS
PROVIDE (_etext = .); PROVIDE (_etext = .);
} > dram } > dram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > dram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > dram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : .data :
{ {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -123,11 +123,28 @@ SECTIONS
*(.console_gdb_xfer) *(.console_gdb_xfer)
*(.bootstrap_data) *(.bootstrap_data)
} > boot_flash
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
. = ALIGN(16); . = ALIGN(16);
_estuff = .; _estuff = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);
} > boot_flash } > boot_flash
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > boot_flash
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x40000500 : AT (_estuff) .data 0x40000500 : AT (_estuff)
{ {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );

View File

@@ -135,6 +135,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -146,8 +146,22 @@ SECTIONS
_etext = .; _etext = .;
_endtext = .; _endtext = .;
} > rom } > rom
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > rom
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.gcc_exc : .gcc_exc :
AT ( ADDR(.text) + SIZEOF( .text ) ) AT ( ADDR(.tdata) + SIZEOF( .tdata ) )
{ {
*(.gcc_exc) *(.gcc_exc)
} > ram } > ram

View File

@@ -111,6 +111,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -115,6 +115,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -115,6 +115,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -118,6 +118,24 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)

View File

@@ -125,6 +125,23 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);

View File

@@ -23,6 +23,21 @@ SECTIONS
__DTOR_END__ = .; __DTOR_END__ = .;
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.vtable (ADDR(.text) + SIZEOF(.text)) : .vtable (ADDR(.text) + SIZEOF(.text)) :
{ {
vtable_start = .; vtable_start = .;

View File

@@ -128,8 +128,26 @@ SECTIONS
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >rom } >rom
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >rom
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >rom
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data (ADDR(.vtable) + SIZEOF(.vtable)) : .data (ADDR(.vtable) + SIZEOF(.vtable)) :
AT (ADDR(.text) + SIZEOF(.text)) { AT (ADDR(.tdata) + SIZEOF(.tdata)) {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)
*(.gnu.linkonce.d*) *(.gnu.linkonce.d*)

View File

@@ -22,6 +22,21 @@ SECTIONS
LONG(0) LONG(0)
__DTOR_END__ = .; __DTOR_END__ = .;
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.vtable 0 : .vtable 0 :
{ {

View File

@@ -57,11 +57,19 @@ SECTIONS {
*(.gcc_except_table .gcc_except_table.*) *(.gcc_except_table .gcc_except_table.*)
} > REGION_TEXT AT > REGION_TEXT_LOAD } > REGION_TEXT AT > REGION_TEXT_LOAD
.tdata : ALIGN_WITH_INPUT { .tdata : ALIGN_WITH_INPUT {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*) *(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > REGION_TEXT AT > REGION_TEXT_LOAD } > REGION_TEXT AT > REGION_TEXT_LOAD
.tbss : ALIGN_WITH_INPUT { .tbss : ALIGN_WITH_INPUT {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_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_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.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

@@ -108,7 +108,25 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (_etext = .); PROVIDE (_etext = .);
} }
.data 0x80000 : AT (ADDR(.text) + SIZEOF (.text)) {
.tdata ADDR(.text) + SIZEOF (.text) : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss ADDR(.tdata) + SIZEOF (.tdata) : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data 0x80000 : AT (ADDR(.tdata) + SIZEOF (.tdata)) {
PROVIDE (_copy_start = .); PROVIDE (_copy_start = .);
*(.data*) *(.data*)
*(.gnu.linkonce.d*) *(.gnu.linkonce.d*)

View File

@@ -149,6 +149,23 @@ SECTIONS
PROVIDE (_etext = .); PROVIDE (_etext = .);
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : { .data : {
PROVIDE( _data_dest_start = . ); PROVIDE( _data_dest_start = . );
PROVIDE( _copy_start = .); PROVIDE( _copy_start = .);

View File

@@ -114,6 +114,23 @@ SECTIONS
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : .data :
{ {
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -111,6 +111,23 @@ SECTIONS
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} >ram } >ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : .data :
{ {
_fdata = ALIGN(16); _fdata = ALIGN(16);

View File

@@ -99,6 +99,24 @@ SECTIONS
*(.rodata.*) *(.rodata.*)
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
_fdata = ALIGN(16); _fdata = ALIGN(16);
.data : { .data : {

View File

@@ -95,6 +95,24 @@ SECTIONS
*(.rodata.*) *(.rodata.*)
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
_fdata = ALIGN(16); _fdata = ALIGN(16);
.data : { .data : {

View File

@@ -95,6 +95,24 @@ SECTIONS
*(.rodata.*) *(.rodata.*)
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
_fdata = ALIGN(16); _fdata = ALIGN(16);
.data : { .data : {

View File

@@ -99,6 +99,24 @@ SECTIONS
*(.rodata.*) *(.rodata.*)
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
_fdata = ALIGN(16); _fdata = ALIGN(16);
.data : { .data : {

View File

@@ -99,6 +99,24 @@ SECTIONS
*(.rodata.*) *(.rodata.*)
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
_fdata = ALIGN(16); _fdata = ALIGN(16);
.data : { .data : {

View File

@@ -132,6 +132,20 @@ SECTIONS
} =0 } =0
.rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) }
.rodata1 : { *(.rodata1) } .rodata1 : { *(.rodata1) }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.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

@@ -195,10 +195,27 @@ SECTIONS
. = ALIGN(32 / 8); . = ALIGN(32 / 8);
*(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata .rodata.* .gnu.linkonce.r.*)
*(.rodata1) *(.rodata1)
} > onchip_memory_0
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > onchip_memory_0
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
. = ALIGN(32 / 8); . = ALIGN(32 / 8);
PROVIDE (__ram_rodata_end = ABSOLUTE(.)); PROVIDE (__ram_rodata_end = ABSOLUTE(.));
} > onchip_memory_0 } > onchip_memory_0
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
PROVIDE (__flash_rodata_start = LOADADDR(.rodata)); PROVIDE (__flash_rodata_start = LOADADDR(.rodata));
.rwdata : .rwdata :

View File

@@ -95,6 +95,20 @@ SECTIONS
.fini : { _fini = .; *(.fini) } >CODE .fini : { _fini = .; *(.fini) } >CODE
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE
.rodata1 : { *(.rodata1) } > CODE .rodata1 : { *(.rodata1) } > CODE
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >CODE
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >CODE
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
_SDA2_BASE_ = __SDATA2_START__ + 0x8000; _SDA2_BASE_ = __SDATA2_START__ + 0x8000;
.sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } > CODE .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } > CODE
.sbss2 : { .sbss2 : {

View File

@@ -64,6 +64,20 @@ SECTIONS
.fini : { _fini = .; *(.fini) } .fini : { _fini = .; *(.fini) }
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } .rodata : { *(.rodata*) *(.gnu.linkonce.r*) }
.rodata1 : { *(.rodata1) } .rodata1 : { *(.rodata1) }
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
}
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.eh_frame : { *(.eh_frame) } .eh_frame : { *(.eh_frame) }
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);

View File

@@ -121,6 +121,21 @@ SECTIONS {
PROVIDE (etext = .); PROVIDE (etext = .);
} > RAM } > RAM
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > RAM
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.sdata2 : { .sdata2 : {
PROVIDE (_SDA2_BASE_ = 32768); PROVIDE (_SDA2_BASE_ = 32768);

View File

@@ -141,6 +141,23 @@ SECTIONS
text.size = text.end - text.start; text.size = text.end - text.start;
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >RAM
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.jcr : { KEEP (*(.jcr)) } >RAM .jcr : { KEEP (*(.jcr)) } >RAM
.rel.dyn : { .rel.dyn : {

View File

@@ -138,6 +138,23 @@ SECTIONS
PROVIDE (etext = .); PROVIDE (etext = .);
PROVIDE (__etext = .); PROVIDE (__etext = .);
} > ram } > ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.rel.dyn : .rel.dyn :
{ {

View File

@@ -140,6 +140,23 @@ SECTIONS
} > ram } > ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.rel.dyn : .rel.dyn :
{ {

View File

@@ -76,6 +76,21 @@ SECTIONS
PROVIDE (__DTOR_END__ = .); PROVIDE (__DTOR_END__ = .);
.jcr : { KEEP (*(.jcr)) } > ROM =0 .jcr : { KEEP (*(.jcr)) } > ROM =0
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >ROM =0
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >ROM =0
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.rodata : .rodata :
{ {
*(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata .rodata.* .gnu.linkonce.r.*)

View File

@@ -103,6 +103,20 @@ SECTIONS
.fini : { _fini = .; __fini = .; *(.fini) } >RAM .fini : { _fini = .; __fini = .; *(.fini) } >RAM
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } >RAM .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } >RAM
.rodata1 : { *(.rodata1) } >RAM .rodata1 : { *(.rodata1) } >RAM
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >RAM
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.eh_frame : { *(.eh_frame) } >RAM .eh_frame : { *(.eh_frame) } >RAM
_etext = .; _etext = .;
PROVIDE (_etext = .); PROVIDE (_etext = .);

View File

@@ -80,6 +80,23 @@ SECTIONS
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE
.rodata1 : { *(.rodata1) } > CODE .rodata1 : { *(.rodata1) } > CODE
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >CODE
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >CODE
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
/* 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(0x10000) + (. & (0x10000 - 1)); . = ALIGN(0x10000) + (. & (0x10000 - 1));

View File

@@ -109,11 +109,19 @@ SECTIONS {
*(.gcc_except_table .gcc_except_table.*) *(.gcc_except_table .gcc_except_table.*)
} > REGION_RODATA AT > REGION_RODATA_LOAD } > REGION_RODATA AT > REGION_RODATA_LOAD
.tdata : ALIGN_WITH_INPUT { .tdata : ALIGN_WITH_INPUT {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*) *(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > REGION_RODATA AT > REGION_RODATA_LOAD } > REGION_RODATA AT > REGION_RODATA_LOAD
.tbss : ALIGN_WITH_INPUT { .tbss : ALIGN_WITH_INPUT {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_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_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.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

@@ -132,6 +132,13 @@ SECTIONS
text.end = .; text.end = .;
PROVIDE (etext = .); PROVIDE (etext = .);
PROVIDE (__etext = .); PROVIDE (__etext = .);
}
text.size = text.end - text.start;
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
/* /*
* .data section contents, copied to RAM at system startup. * .data section contents, copied to RAM at system startup.
@@ -139,7 +146,15 @@ SECTIONS
. = ALIGN(0x20); . = ALIGN(0x20);
data.contents.start = .; data.contents.start = .;
} }
text.size = text.end - text.start; .tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
}
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
/* /*
* If debugging, stack the read/write sections directly after the text * If debugging, stack the read/write sections directly after the text

View File

@@ -113,6 +113,23 @@ SECTIONS {
PROVIDE (etext = .); PROVIDE (etext = .);
} > RAM } > RAM
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > RAM
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.sdata2 : { .sdata2 : {
PROVIDE (_SDA2_BASE_ = 32768); PROVIDE (_SDA2_BASE_ = 32768);

View File

@@ -94,6 +94,23 @@ SECTIONS
.rodata : { *(.rodata.* .gnu.linkonce.r*) } > RAM .rodata : { *(.rodata.* .gnu.linkonce.r*) } > RAM
.rodata1 : { *(.rodata1) } > RAM .rodata1 : { *(.rodata1) } > RAM
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >RAM
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
/* Initialised small data addressed as offsets from r2 */ /* Initialised small data addressed as offsets from r2 */
_SDA2_BASE_ = __SDATA2_START__ + 0x8000; _SDA2_BASE_ = __SDATA2_START__ + 0x8000;
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM

View File

@@ -94,6 +94,23 @@ SECTIONS
.rodata : { *(.rodata.* .gnu.linkonce.r*) } > RAM .rodata : { *(.rodata.* .gnu.linkonce.r*) } > RAM
.rodata1 : { *(.rodata1) } > RAM .rodata1 : { *(.rodata1) } > RAM
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} >RAM
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} >RAM
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
/* Initialised small data addressed as offsets from r2 */ /* Initialised small data addressed as offsets from r2 */
_SDA2_BASE_ = __SDATA2_START__ + 0x8000; _SDA2_BASE_ = __SDATA2_START__ + 0x8000;
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM

View File

@@ -128,9 +128,23 @@ SECTIONS
} > ram } > ram
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);
.fini . : { *(.fini) } =0 .fini . : { *(.fini) } > ram =0
.rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } .rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } > ram
.rodata1 . : { *(.rodata1) } .rodata1 . : { *(.rodata1) } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -139,9 +139,23 @@ SECTIONS
} > ram } > ram
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);
.fini . : { *(.fini) } =0 .fini . : { *(.fini) } > ram =0
.rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } .rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } > ram
.rodata1 . : { *(.rodata1) } .rodata1 . : { *(.rodata1) } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -138,9 +138,23 @@ SECTIONS
} > ram } > ram
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);
.fini . : { *(.fini) } =0 .fini . : { *(.fini) } > ram =0
.rodata . : { *(.rodata) *(.gnu.linkonce.r*) } .rodata . : { *(.rodata) *(.gnu.linkonce.r*) } > ram
.rodata1 . : { *(.rodata1) } .rodata1 . : { *(.rodata1) } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -139,9 +139,23 @@ SECTIONS
} > ram } > ram
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);
.fini . : { *(.fini) } =0 .fini . : { *(.fini) } > ram =0
.rodata . : { *(.rodata) *(.gnu.linkonce.r*) } .rodata . : { *(.rodata) *(.gnu.linkonce.r*) } > ram
.rodata1 . : { *(.rodata1) } .rodata1 . : { *(.rodata1) } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -93,6 +93,20 @@ SECTIONS
*(.rodata.*) *(.rodata.*)
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
} > ram } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.ctors : .ctors :
{ {
___ctors = .; ___ctors = .;

View File

@@ -105,6 +105,20 @@ SECTIONS
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
. = ALIGN(32); . = ALIGN(32);
} > rom } > rom
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > rom
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > rom
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.ctors : .ctors :
{ {
___ctors = .; ___ctors = .;

View File

@@ -92,6 +92,20 @@ SECTIONS
*(.gnu.linkonce.r*) *(.gnu.linkonce.r*)
. = ALIGN(32); . = ALIGN(32);
} > ram } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.ctors : AT(LOADADDR(.rodata) + SIZEOF(.rodata)) .ctors : AT(LOADADDR(.rodata) + SIZEOF(.rodata))
{ {
___ctors = .; ___ctors = .;

View File

@@ -127,8 +127,22 @@ SECTIONS
} =0 } =0
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);
.rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } .rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } > ram
.rodata1 . : { *(.rodata1) } .rodata1 . : { *(.rodata1) } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -121,8 +121,22 @@ SECTIONS
} =0 } =0
_etext = .; _etext = .;
PROVIDE (etext = .); PROVIDE (etext = .);
.rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } .rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } > ram
.rodata1 . : { *(.rodata1) } .rodata1 . : { *(.rodata1) } > ram
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
} > ram
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
} > ram
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
/* 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

@@ -108,6 +108,20 @@ SECTIONS
*(.shdata) *(.shdata)
. = ALIGN (16); . = ALIGN (16);
} > ram } > ram
.tdata : {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > ram
.tbss : {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.rtemsroset : { .rtemsroset : {
/* for pre rtems-libbsd FreeBSD code */ /* for pre rtems-libbsd FreeBSD code */
__start_set_sysctl_set = .; __start_set_sysctl_set = .;

View File

@@ -148,8 +148,23 @@ SECTIONS
_endtext = . ; _endtext = . ;
_etext = . ; _etext = . ;
} > ram } > ram
.tdata : AT (ADDR (.text) + SIZEOF (.text)) {
_TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
_TLS_Data_end = .;
} > ram
.tbss : AT (ADDR (.tdata) + SIZEOF (.tdata)) {
_TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
_TLS_BSS_end = .;
} > ram
_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = ALIGNOF (.tdata);
.data : AT (ADDR (.text) + SIZEOF (.text)) .data : AT (ADDR (.tbss) + SIZEOF (.tbss))
{ {
PROVIDE (__data_start = .) ; PROVIDE (__data_start = .) ;
data_start = . ; data_start = . ;

View File

@@ -91,6 +91,20 @@ SECTIONS
.fini : { KEEP (*(.fini)) } =0 .fini : { KEEP (*(.fini)) } =0
.rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) }
.rodata1 : { *(.rodata1) } .rodata1 : { *(.rodata1) }
.tdata : {
__TLS_Data_begin = .;
*(.tdata .tdata.* .gnu.linkonce.td.*)
__TLS_Data_end = .;
}
.tbss : {
__TLS_BSS_begin = .;
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
__TLS_BSS_end = .;
}
__TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
__TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
__TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
__TLS_Alignment = ALIGNOF (.tdata);
.data : .data :
{ {
*(.data) *(.data)