1 /* Test the stack guard.
2 Copyright (C) 2000-2023 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
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.
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.
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 <https://www.gnu.org/licenses/>. */
36 foo
= alloca (3 * stacksize
/ 4);
37 for (i
= 0; i
< sizeof foo
; i
++)
44 main (int argc
, char *argv
[])
53 error (1, errno
, "fork");
62 err
= pthread_attr_init (&attr
);
65 err
= pthread_attr_getstacksize (&attr
, &stacksize
);
68 err
= pthread_attr_setguardsize (&attr
, stacksize
/ 2);
71 printf ("Stack guard attribute not supported.\n");
76 err
= pthread_create (&tid
, &attr
, thr
, 0);
79 err
= pthread_attr_destroy (&attr
);
82 err
= pthread_join (tid
, &ret
);
83 /* Should never be successful. */
84 printf ("Thread did not segfault!?!\n");
94 pid
= waitpid (child
, &status
, 0);
95 printf ("pid = %d; child = %d; status = %d\n", pid
, child
, status
);
96 assert (pid
== child
);