Demo/RISC-V_RV32_QEMU_VIRT_GCC: Add TLS support to linker script

Allocate ROM for initialized thread local storage variables. Allocate
TLS offsets for all thread local storage variables.

Signed-off-by: Keith Packard <keithpac@amazon.com>
This commit is contained in:
Keith Packard 2023-03-02 11:46:53 -08:00 committed by Paul Bartell
parent 9add6bdf98
commit bc1a95e9e7

View file

@ -51,6 +51,25 @@ SECTIONS
_erodata = .; _erodata = .;
} >rom AT>rom } >rom AT>rom
.tdata : {
*(.tdata .tdata.*)
} >rom AT>rom
.tbss (NOLOAD) : {
*(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon)
PROVIDE( __tbss_end = . );
PROVIDE( __tls_end = . );
} >rom AT>rom
PROVIDE( __tdata_source = LOADADDR(.tdata) );
PROVIDE( __tdata_source_end = LOADADDR(.tdata) + SIZEOF(.tdata) );
PROVIDE( __tdata_size = SIZEOF(.tdata) );
PROVIDE( __tbss_offset = ADDR(.tbss) - ADDR(.tdata) );
PROVIDE( __tbss_start = ADDR(.tbss) );
PROVIDE( __tbss_size = SIZEOF(.tbss) );
PROVIDE( __tls_size = __tls_end - ADDR(.tdata) );
PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
.data.align : .data.align :
{ {
. = ALIGN(4); . = ALIGN(4);