diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-22 09:45:39 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-22 09:51:17 +0200 |
commit | d60e760e8096feac0fff494f9bb1a0538115a905 (patch) | |
tree | b8cba4a1a5e2ad9f5004eb5779c9d512884420f2 /c/src/lib/libbsp/m68k/gen68360 | |
parent | bsp/mbx8xx: Fix Makefile.am and bsp_specs (diff) | |
download | rtems-d60e760e8096feac0fff494f9bb1a0538115a905.tar.bz2 |
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.
Diffstat (limited to 'c/src/lib/libbsp/m68k/gen68360')
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/startup/linkcmds | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom | 4 |
3 files changed, 9 insertions, 3 deletions
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 = .; |