[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
c-stack: improve documentation
From: |
Bruno Haible |
Subject: |
c-stack: improve documentation |
Date: |
Sun, 20 Jul 2008 18:25:27 +0200 |
User-agent: |
KMail/1.5.4 |
Hi,
The documentation of the c_stack_action function is
- hard to find inside the (long) c-stack.c file,
- incomplete: it does not mention that
- non-stackoverflows SIGSEGVs are also caught,
- something is written to standard error,
- the value of the variable 'exit_failure' is used.
I'm applying this improved documentation:
2008-07-20 Bruno Haible <address@hidden>
* lib/c-stack.h (c_stack_action): Add documentation.
* lib/c-stack.c (c_stack_action): Remove incomplete documentation.
*** lib/c-stack.h.orig 2008-07-20 18:22:06.000000000 +0200
--- lib/c-stack.h 2008-07-20 18:20:45.000000000 +0200
***************
*** 1,6 ****
/* Stack overflow handling.
! Copyright (C) 2002, 2004 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
--- 1,6 ----
/* Stack overflow handling.
! Copyright (C) 2002, 2004, 2008 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
***************
*** 15,18 ****
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
! int c_stack_action (void (*) (int));
--- 15,41 ----
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
!
! /* Set up ACTION so that it is invoked on C stack overflow and on other,
! stack-unrelated, segmentation violation.
! Return -1 (setting errno) if this cannot be done.
!
! When a stack overflow or segmentation violation occurs:
! 1) ACTION is called. It is passed an argument equal to
! - 0, for a stack overflow,
! - SIGSEGV, for a segmentation violation that does not appear related
! to stack overflow.
! On many platforms the two cases are hard to distinguish; when in doubt,
! zero is passed.
! 2) If ACTION returns, a message is written to standard error, and the
! program is terminated: in the case of stack overflow, with exit code
! exit_failure (see "exitfail.h"), otherwise through a signal SIGSEGV.
!
! 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. */
!
! extern int c_stack_action (void (* /*action*/) (int));
*** lib/c-stack.c.orig 2008-07-20 18:22:06.000000000 +0200
--- lib/c-stack.c 2008-07-20 18:03:05.000000000 +0200
***************
*** 189,209 ****
die ((!emergency || segv_handler_missing) ? 0 : SIGSEGV);
}
- /* Set up ACTION so that it is invoked on C stack overflow. Return -1
- (setting errno) if this cannot be done.
-
- When ACTION is called, it is passed an argument equal to SIGSEGV
- for a segmentation violation that does not appear related to stack
- overflow, and is passed zero otherwise. On many platforms it is
- hard to tell; when in doubt, zero is passed.
-
- 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. */
-
int
c_stack_action (void (*action) (int))
{
--- 189,194 ----
***************
*** 298,318 ****
}
# endif
- /* Set up ACTION so that it is invoked on C stack overflow. Return -1
- (setting errno) if this cannot be done.
-
- When ACTION is called, it is passed an argument equal to SIGSEGV
- for a segmentation violation that does not appear related to stack
- overflow, and is passed zero otherwise. On many platforms it is
- hard to tell; when in doubt, zero is passed.
-
- 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. */
-
int
c_stack_action (void (*action) (int))
{
--- 283,288 ----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- c-stack: improve documentation,
Bruno Haible <=