|  | /* 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; | 
|  | } |