tile: add no-op fe*() routines for libc internal use
[platform/upstream/glibc.git] / nptl / tst-tls4modb.c
1 /* Copyright (C) 2003-2014 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <http://www.gnu.org/licenses/>.  */
18
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <unistd.h>
22 #include <tls.h>
23
24
25 static int i;
26 int bar;
27
28 static __thread void *foo [32 / sizeof (void *)]
29   __attribute__ ((tls_model ("initial-exec"), aligned (sizeof (void *))))
30   = { &i, &bar };
31
32 void
33 test1 (void)
34 {
35   size_t s;
36
37   if (foo [0] != &i || foo [1] != &bar)
38     abort ();
39
40   foo [0] = NULL;
41   foo [1] = NULL;
42   for (s = 0; s < sizeof (foo) / sizeof (void *); ++s)
43     {
44       if (foo [s])
45         abort ();
46       foo [s] = &foo[s];
47     }
48 }
49
50 void
51 test2 (void)
52 {
53   size_t s;
54
55   for (s = 0; s < sizeof (foo) / sizeof (void *); ++s)
56     {
57       if (foo [s] != &foo [s])
58         abort ();
59       foo [s] = &foo [s ^ 1];
60     }
61 }