From d60e760e8096feac0fff494f9bb1a0538115a905 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 22 Apr 2014 09:45:39 +0200 Subject: 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. --- c/src/lib/libbsp/m68k/av5282/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/av5282/startup/linkcmdsflash | 4 +++- c/src/lib/libbsp/m68k/av5282/startup/linkcmdsram | 4 +++- c/src/lib/libbsp/m68k/csb360/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/gen68302/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/gen68340/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/gen68360/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp | 4 +++- c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom | 4 +++- c/src/lib/libbsp/m68k/idp/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds.flash | 4 +++- c/src/lib/libbsp/m68k/mcf52235/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mcf5225x/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mcf5235/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsflash | 4 +++- c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsram | 4 +++- c/src/lib/libbsp/m68k/mcf5329/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mcf5329/startup/linkcmdsflash | 4 +++- c/src/lib/libbsp/m68k/mrm332/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mvme136/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mvme147/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mvme162/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/mvme167/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/ods68302/startup/debugger | 4 +++- c/src/lib/libbsp/m68k/ods68302/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/ods68302/startup/rom | 4 +++- c/src/lib/libbsp/m68k/shared/startup/linkcmds.base | 4 +++- c/src/lib/libbsp/m68k/sim68000/startup/linkcmds | 4 +++- c/src/lib/libbsp/m68k/uC5282/startup/linkcmds | 4 +++- 31 files changed, 93 insertions(+), 31 deletions(-) (limited to 'c/src/lib/libbsp/m68k') diff --git a/c/src/lib/libbsp/m68k/av5282/startup/linkcmds b/c/src/lib/libbsp/m68k/av5282/startup/linkcmds index 363958ba3c..c72601d63f 100644 --- a/c/src/lib/libbsp/m68k/av5282/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/av5282/startup/linkcmds @@ -147,9 +147,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE( _data_dest_start = . ); diff --git a/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsflash b/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsflash index ada8ec20a7..3d361df509 100644 --- a/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsflash +++ b/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsflash @@ -146,9 +146,11 @@ SECTIONS } >flash _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_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 ) ) { diff --git a/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsram b/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsram index e6501b35bc..4c11cc7110 100644 --- a/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsram +++ b/c/src/lib/libbsp/m68k/av5282/startup/linkcmdsram @@ -146,9 +146,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE( _data_dest_start = . ); diff --git a/c/src/lib/libbsp/m68k/csb360/startup/linkcmds b/c/src/lib/libbsp/m68k/csb360/startup/linkcmds index 1ec50d7c3f..9b1c2d5e77 100644 --- a/c/src/lib/libbsp/m68k/csb360/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/csb360/startup/linkcmds @@ -115,9 +115,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : diff --git a/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds b/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds index eb76d9ff31..d831f7a7fa 100644 --- a/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/gen68302/startup/linkcmds @@ -128,9 +128,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/gen68340/startup/linkcmds b/c/src/lib/libbsp/m68k/gen68340/startup/linkcmds index 0a9d764f24..bde2809811 100644 --- a/c/src/lib/libbsp/m68k/gen68340/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/gen68340/startup/linkcmds @@ -156,9 +156,11 @@ SECTIONS { } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds index 6b86db2538..7957b043be 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds @@ -120,9 +120,11 @@ SECTIONS { } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { _copy_start = .; diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp index 0c1e710dc8..d14ed8faac 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp +++ b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp @@ -125,9 +125,11 @@ SECTIONS { } >rom _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : AT(SIZEOF(.text)) { _copy_start = .; diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom index a360a3a247..22637bf1d9 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom +++ b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom @@ -124,9 +124,11 @@ SECTIONS { } >rom _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : AT(SIZEOF(.text)) { _copy_start = .; diff --git a/c/src/lib/libbsp/m68k/idp/startup/linkcmds b/c/src/lib/libbsp/m68k/idp/startup/linkcmds index eaaf2003a3..a8efe63648 100644 --- a/c/src/lib/libbsp/m68k/idp/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/idp/startup/linkcmds @@ -125,9 +125,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds b/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds index 5d4f39e302..d7ceb201b1 100644 --- a/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds @@ -150,9 +150,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data BLOCK (0x4) : { copy_start = .; diff --git a/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds.flash b/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds.flash index 48a9c4bddd..12db0e2902 100644 --- a/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds.flash +++ b/c/src/lib/libbsp/m68k/mcf5206elite/startup/linkcmds.flash @@ -150,9 +150,11 @@ SECTIONS } >rom _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_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)) { copy_start = .; diff --git a/c/src/lib/libbsp/m68k/mcf52235/startup/linkcmds b/c/src/lib/libbsp/m68k/mcf52235/startup/linkcmds index bc4d87fc6e..e10a57fad2 100644 --- a/c/src/lib/libbsp/m68k/mcf52235/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mcf52235/startup/linkcmds @@ -134,9 +134,11 @@ SECTIONS } >flash _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data 0x20000400 : AT (_estuff) { diff --git a/c/src/lib/libbsp/m68k/mcf5225x/startup/linkcmds b/c/src/lib/libbsp/m68k/mcf5225x/startup/linkcmds index af3603b7b4..b0a48b70a3 100644 --- a/c/src/lib/libbsp/m68k/mcf5225x/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mcf5225x/startup/linkcmds @@ -134,9 +134,11 @@ SECTIONS } >flash _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data 0x20000400 : AT (_estuff) { diff --git a/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmds b/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmds index d06813523b..e4e752dd54 100644 --- a/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmds @@ -154,9 +154,11 @@ SECTIONS } > dram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE( _data_dest_start = . ); diff --git a/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsflash b/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsflash index 6e5efe133d..8082860fd6 100644 --- a/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsflash +++ b/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsflash @@ -158,9 +158,11 @@ SECTIONS } >flash _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_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 ) ) { diff --git a/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsram b/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsram index dd4f4cc26c..d96036494b 100644 --- a/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsram +++ b/c/src/lib/libbsp/m68k/mcf5235/startup/linkcmdsram @@ -154,9 +154,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE( _data_dest_start = . ); diff --git a/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmds b/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmds index 3c44faec09..b5a228e161 100644 --- a/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmds @@ -145,9 +145,11 @@ SECTIONS } > dram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { diff --git a/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmdsflash b/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmdsflash index ee97da4720..30f46877f3 100644 --- a/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmdsflash +++ b/c/src/lib/libbsp/m68k/mcf5329/startup/linkcmdsflash @@ -141,9 +141,11 @@ SECTIONS } > boot_flash _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data 0x40000500 : AT (_estuff) { diff --git a/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds b/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds index 378559c99d..aeed9a3844 100644 --- a/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds @@ -155,9 +155,11 @@ SECTIONS _TLS_BSS_end = .; } > rom _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .gcc_exc : AT ( ADDR(.tdata) + SIZEOF( .tdata ) ) { diff --git a/c/src/lib/libbsp/m68k/mvme136/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme136/startup/linkcmds index 7f8208a3b6..ad4cba6cb5 100644 --- a/c/src/lib/libbsp/m68k/mvme136/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mvme136/startup/linkcmds @@ -125,9 +125,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds index 21de6f090d..bc75072daf 100644 --- a/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds @@ -129,9 +129,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds index 198634830a..e8ac4c5c70 100644 --- a/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds @@ -129,9 +129,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds index 8e9bf4080b..10a5c1deb4 100644 --- a/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds @@ -132,9 +132,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds index 2a0c797fe2..d585bf9e36 100644 --- a/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds @@ -139,9 +139,11 @@ SECTIONS } >ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/debugger b/c/src/lib/libbsp/m68k/ods68302/startup/debugger index f1653e524a..8d156bd3c8 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/debugger +++ b/c/src/lib/libbsp/m68k/ods68302/startup/debugger @@ -34,9 +34,11 @@ SECTIONS _TLS_BSS_end = .; } _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .vtable (ADDR(.text) + SIZEOF(.text)) : { diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds b/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds index e5664d882c..c153825d39 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/ods68302/startup/linkcmds @@ -141,9 +141,11 @@ SECTIONS } >rom _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data (ADDR(.vtable) + SIZEOF(.vtable)) : diff --git a/c/src/lib/libbsp/m68k/ods68302/startup/rom b/c/src/lib/libbsp/m68k/ods68302/startup/rom index ef2c527875..352ae6a89a 100644 --- a/c/src/lib/libbsp/m68k/ods68302/startup/rom +++ b/c/src/lib/libbsp/m68k/ods68302/startup/rom @@ -34,9 +34,11 @@ SECTIONS _TLS_BSS_end = .; } _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .vtable 0 : { diff --git a/c/src/lib/libbsp/m68k/shared/startup/linkcmds.base b/c/src/lib/libbsp/m68k/shared/startup/linkcmds.base index 27a19800b3..02bc269e85 100644 --- a/c/src/lib/libbsp/m68k/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/m68k/shared/startup/linkcmds.base @@ -67,9 +67,11 @@ SECTIONS { _TLS_BSS_end = .; } > REGION_TEXT AT > REGION_TEXT_LOAD _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .preinit_array : ALIGN_WITH_INPUT { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) diff --git a/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds b/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds index 9744f50beb..9a326b32c3 100644 --- a/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/sim68000/startup/linkcmds @@ -122,9 +122,11 @@ SECTIONS } _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_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)) { PROVIDE (_copy_start = .); diff --git a/c/src/lib/libbsp/m68k/uC5282/startup/linkcmds b/c/src/lib/libbsp/m68k/uC5282/startup/linkcmds index 109bc15c39..dbf90815ea 100644 --- a/c/src/lib/libbsp/m68k/uC5282/startup/linkcmds +++ b/c/src/lib/libbsp/m68k/uC5282/startup/linkcmds @@ -162,9 +162,11 @@ SECTIONS } > ram _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_Size = _TLS_BSS_end - _TLS_Data_begin; - _TLS_Alignment = ALIGNOF (.tdata); + _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); .data : { PROVIDE( _data_dest_start = . ); -- cgit v1.2.3