/* Stack overflow handling.
- Copyright (C) 2002, 2004, 2008-2011 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2008-2021 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* Set up ACTION so that it is invoked on C stack overflow and on other,
A null ACTION acts like an action that does nothing.
- ACTION must be async-signal-safe. ACTION together with its callees
- must not require more than SIGSTKSZ bytes of stack space. Also,
- ACTION should not call longjmp, because this implementation does
- not guarantee that it is safe to return to the original stack.
+ Restrictions:
+ - ACTION must be async-signal-safe.
+ - ACTION together with its callees must not require more than 64 KiB of
+ stack space.
+ - ACTION must not create and then invoke nested functions
+ <https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html>, because
+ this implementation does not guarantee an executable stack.
+ - ACTION should not call longjmp, because this implementation does not
+ guarantee that it is safe to return to the original stack.
This function may install a handler for the SIGSEGV signal or for the SIGBUS
signal or exercise other system dependent exception handling APIs. */
-extern int c_stack_action (void (* /*action*/) (int));
+extern int c_stack_action (_GL_ASYNC_SAFE void (* /*action*/) (int));