summaryrefslogtreecommitdiff
path: root/elf/tst-tlsalign-vars.c
blob: 01b3501d3b8b4567c0451a2c46352e3c32fe8ef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* This is for tst-tlsalign-extern.c, which see.  It's essential for the
   purpose of the test that these definitions be in a separate translation
   unit from the code using the variables.  */

__thread int tdata1 = 1;
__thread int tdata2 __attribute__ ((aligned (0x10))) = 2;
__thread int tdata3 __attribute__ ((aligned (0x1000))) = 4;
__thread int tbss1;
__thread int tbss2 __attribute__ ((aligned (0x10)));
__thread int tbss3 __attribute__ ((aligned (0x1000)));

/* This function is never called.  But its presence in this translation
   unit makes GCC emit the variables above in the order defined (perhaps
   because it's the order in which they're used here?) rather than
   reordering them into descending order of alignment requirement--and so
   keeps it more similar to the tst-tlsalign-static.c case--just in case
   that affects the bug (though there is no evidence that it does).  */

void
unused (void)
{
  tdata1 = -1;
  tdata2 = -2;
  tdata3 = -3;
  tbss1 = -4;
  tbss2 = -5;
  tbss3 = -6;
}