diff options
author | Roland McGrath <roland@hack.frob.com> | 2015-06-02 16:55:36 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2015-06-02 16:55:36 -0700 |
commit | 1a1a6bde63e0af0d5f2f3465ba45338e7513c4e4 (patch) | |
tree | 803e197475a78b73bf77681e0e7264e3ed487b05 /elf/tst-tlsalign-vars.c | |
parent | e0c349b40c4f51589c2adb63ccdaaf4dcc0fb1ea (diff) | |
download | glibc-1a1a6bde63e0af0d5f2f3465ba45338e7513c4e4.zip glibc-1a1a6bde63e0af0d5f2f3465ba45338e7513c4e4.tar.gz glibc-1a1a6bde63e0af0d5f2f3465ba45338e7513c4e4.tar.bz2 |
BZ#18383: Another test case, with TLS refs and defs in separate TUs.
Diffstat (limited to 'elf/tst-tlsalign-vars.c')
-rw-r--r-- | elf/tst-tlsalign-vars.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/elf/tst-tlsalign-vars.c b/elf/tst-tlsalign-vars.c new file mode 100644 index 0000000..01b3501 --- /dev/null +++ b/elf/tst-tlsalign-vars.c @@ -0,0 +1,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; +} |