New in 2.6:
* sigsegv_leave_handler is changed. Previously it was a normal function with
no arguments. Now it is a function that take a non-returning continuation
function and three arguments for it as arguments.
Where you had code like
int my_handler(void* fault_address, int serious)
{
...code_before()...;
sigsegv_leave_handler();
...code_after()...;
longjmp(...);
}
you now have to write
void my_handler_tail(void* arg1, void* arg2, void* arg3)
{
...code_after()...;
longjmp(...);
}
int my_handler(void* fault_address, int serious)
{
...code_before()...;
#if LIBSIGSEGV_VERSION >= 0x0206
return sigsegv_leave_handler(my_handler_tail, arg, NULL, NULL);
#else
sigsegv_leave_handler();
my_handler_tail(arg, NULL, NULL);
/* NOTREACHED */
abort();
#endif
}
* sigsegv_leave_handler now works correctly on MacOS X.
* Support for 64-bit ABI on MacOS X 10.5.
* Support for building universal binaries on MacOS X.
* Improved distinction between stack overflow and other fault on NetBSD,
OpenBSD, FreeBSD, Linux, AIX, Solaris. Contributed by Eric Blake.
* GNU gnulib now has an autoconf macro for locating libsigsegv:
http://www.gnu.org/software/gnulib/MODULES.html#module=libsigsegv
- On DragonFly, the stack overflow handling should follow the logic
of FreeBSD, similiar the address space scanning. This is now needed
for lang/clisp. Since the installed version differs, bump revision.
from the NEWS file:
New in 2.4:
* Support for GCC 4 on more platforms.
* Added support for catching stack overflow on NetBSD.
* Improved support for catching stack overflow on Linux, Solaris:
Works also when /proc is not mounted or lacks read permissions.
New in 2.3:
* Support for GCC 4 on some platforms contributed by Paolo Bonzini.
* Support for MacOS X i386 contributed by Bruno Haible.
* Improved support for Woe32 contributed by Doug Currie.
Martijn van Buul.
GNU libsigsegv is a library for handling page faults in user mode. A page
fault occurs when a program tries to access a region of memory that is
currently unavailable. Catching and handling a page fault is a useful
technique for implementing:
* Pageable virtual memory
* Memory-mapped access to persistent databases
* Generational garbage collectors
* Stack overflow handlers
* Distributed shared memory