Changeset d60e760 in rtems for c/src/lib/libbsp/sh


Ignore:
Timestamp:
04/22/14 07:45:39 (10 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
a531683
Parents:
e2782684
git-author:
Sebastian Huber <sebastian.huber@…> (04/22/14 07:45:39)
git-committer:
Sebastian Huber <sebastian.huber@…> (04/22/14 07:51:17)
Message:

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.

Location:
c/src/lib/libbsp/sh
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/sh/gensh1/startup/linkcmds

    re2782684 rd60e760  
    143143  } > ram
    144144  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     145  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     146  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    145147  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    146148  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    147   __TLS_Alignment = ALIGNOF (.tdata);
     149  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    148150  /* Adjust the address for the data segment.  We want to adjust up to
    149151     the same address within the page on the next page up.  */
  • c/src/lib/libbsp/sh/gensh2/startup/linkcmds

    re2782684 rd60e760  
    154154  } > ram
    155155  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     156  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     157  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    156158  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    157159  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    158   __TLS_Alignment = ALIGNOF (.tdata);
     160  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    159161  /* Adjust the address for the data segment.  We want to adjust up to
    160162     the same address within the page on the next page up.  */
  • c/src/lib/libbsp/sh/gensh2/startup/linkcmds.ram

    re2782684 rd60e760  
    153153  } > ram
    154154  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     155  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     156  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    155157  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    156158  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    157   __TLS_Alignment = ALIGNOF (.tdata);
     159  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    158160  /* Adjust the address for the data segment.  We want to adjust up to
    159161     the same address within the page on the next page up.  */
  • c/src/lib/libbsp/sh/gensh2/startup/linkcmds.rom

    re2782684 rd60e760  
    154154  } > ram
    155155  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     156  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     157  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    156158  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    157159  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    158   __TLS_Alignment = ALIGNOF (.tdata);
     160  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    159161  /* Adjust the address for the data segment.  We want to adjust up to
    160162     the same address within the page on the next page up.  */
  • c/src/lib/libbsp/sh/gensh4/startup/linkcmds

    re2782684 rd60e760  
    105105  } > ram
    106106  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     107  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     108  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    107109  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    108110  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    109   __TLS_Alignment = ALIGNOF (.tdata);
     111  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    110112  .ctors   :
    111113  {
  • c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom

    re2782684 rd60e760  
    117117  } > rom
    118118  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     119  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     120  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    119121  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    120122  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    121   __TLS_Alignment = ALIGNOF (.tdata);
     123  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    122124  .ctors   :
    123125  {
  • c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom2ram

    re2782684 rd60e760  
    104104  } > ram
    105105  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     106  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     107  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    106108  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    107109  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    108   __TLS_Alignment = ALIGNOF (.tdata);
     110  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    109111  .ctors   :  AT(LOADADDR(.rodata) + SIZEOF(.rodata))
    110112  {
  • c/src/lib/libbsp/sh/shsim/startup/linkcmds

    re2782684 rd60e760  
    141141  } > ram
    142142  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     143  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     144  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    143145  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    144146  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    145   __TLS_Alignment = ALIGNOF (.tdata);
     147  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    146148  /* Adjust the address for the data segment.  We want to adjust up to
    147149     the same address within the page on the next page up.  */
  • c/src/lib/libbsp/sh/shsim/startup/linkcmds.sim

    re2782684 rd60e760  
    135135  } > ram
    136136  __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin;
     137  __TLS_Data_begin = __TLS_Data_size != 0 ? __TLS_Data_begin : __TLS_BSS_begin;
     138  __TLS_Data_end = __TLS_Data_size != 0 ? __TLS_Data_end : __TLS_BSS_begin;
    137139  __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin;
    138140  __TLS_Size = __TLS_BSS_end - __TLS_Data_begin;
    139   __TLS_Alignment = ALIGNOF (.tdata);
     141  __TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
    140142  /* Adjust the address for the data segment.  We want to adjust up to
    141143     the same address within the page on the next page up.  */
Note: See TracChangeset for help on using the changeset viewer.