1#include "tst-tls10.h"
2
3__thread int dummy __attribute__((visibility ("hidden"))) = 12;
4__thread struct A a1 = { 4, 5, 6 };
5__thread struct A a2 = { 7, 8, 9 };
6__thread struct A a3 __attribute__((tls_model("initial-exec")))
7 = { 10, 11, 12 };
8__thread struct A a4 __attribute__((tls_model("initial-exec")))
9 = { 13, 14, 15 };
10static __thread struct A local1 = { 16, 17, 18 };
11static __thread struct A local2 __attribute__((tls_model("initial-exec")))
12 = { 19, 20, 21 };
13
14void
15check1 (void)
16{
17 if (a1.a != 4 || a1.b != 5 || a1.c != 6)
18 abort ();
19 if (a2.a != 22 || a2.b != 23 || a2.c != 24)
20 abort ();
21 if (a3.a != 10 || a3.b != 11 || a3.c != 12)
22 abort ();
23 if (a4.a != 25 || a4.b != 26 || a4.c != 27)
24 abort ();
25 if (local1.a != 16 || local1.b != 17 || local1.c != 18)
26 abort ();
27 if (local2.a != 19 || local2.b != 20 || local2.c != 21)
28 abort ();
29}
30
31struct A *
32f1a (void)
33{
34 return &a1;
35}
36
37struct A *
38f2a (void)
39{
40 return &a2;
41}
42
43struct A *
44f3a (void)
45{
46 return &a3;
47}
48
49struct A *
50f4a (void)
51{
52 return &a4;
53}
54
55struct A *
56f5a (void)
57{
58 return &local1;
59}
60
61struct A *
62f6a (void)
63{
64 return &local2;
65}
66
67int
68f1b (void)
69{
70 return a1.a;
71}
72
73int
74f2b (void)
75{
76 return a2.b;
77}
78
79int
80f3b (void)
81{
82 return a3.c;
83}
84
85int
86f4b (void)
87{
88 return a4.a;
89}
90
91int
92f5b (void)
93{
94 return local1.b;
95}
96
97int
98f6b (void)
99{
100 return local2.c;
101}
102

source code of glibc/elf/tst-tlsmod7.c