1 /* Copyright (C) 2005-2022 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3 
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8 
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <https://www.gnu.org/licenses/>.  */
17 
18 #include <pthread.h>
19 #include <stdbool.h>
20 #include <stdint.h>
21 #include <stdio.h>
22 #include <tst-stack-align.h>
23 
24 static bool ok = true;
25 static pthread_once_t once = PTHREAD_ONCE_INIT;
26 
27 static void
once_test(void)28 once_test (void)
29 {
30   puts ("in once_test");
31 
32   if (TEST_STACK_ALIGN ())
33     ok = false;
34 }
35 
36 static int
do_test(void)37 do_test (void)
38 {
39   puts ("in main");
40 
41   if (TEST_STACK_ALIGN ())
42     ok = false;
43 
44   if (pthread_once (&once, once_test))
45     {
46       puts ("pthread once failed");
47       return 1;
48     }
49 
50   return ok ? 0 : 1;
51 }
52 
53 
54 #define TEST_FUNCTION do_test ()
55 #include "../test-skeleton.c"
56