From bc1a95e9e7fd47d4a31ea4384e2ea895e4b04cbe Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 2 Mar 2023 11:46:53 -0800 Subject: [PATCH] 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 --- .../build/gcc/fake_rom.ld | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/fake_rom.ld b/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/fake_rom.ld index b63fad8f0..f8059ecca 100644 --- a/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/fake_rom.ld +++ b/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC/build/gcc/fake_rom.ld @@ -51,6 +51,25 @@ SECTIONS _erodata = .; } >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 : { . = ALIGN(4);