New in 2.10:
* Support for Linux/S390.
<sigsegv.h> now defines a macro SIGSEGV_FAULT_ADDRESS_ALIGNMENT.
It is either 1 or pagesize. Its meaning is that
- The fault address passed to a SIGSEGV handler has been rounded down
to a multiple of SIGSEGV_FAULT_ADDRESS_ALIGNMENT.
- The address and length arguments of sigsegv_register function calls
must be multiples of SIGSEGV_FAULT_ADDRESS_ALIGNMENT.
* Faster distinction between stack overflow and other fault on OpenBSD.
New in 2.9:
* Correct support for 64-bit ABI on MacOS X 10.5 and newer.
* Fix alternate stack overflow on at least Linux for PowerPC64;
regression introduced in 2.6.
New in 2.7:
* Support for platforms that follow POSIX:2008, not POSIX:2001.
* Support for MirBSD 10.
* Support for IRIX 5.3. Contributed by Eric Blake.
* On Linux platforms, libsigsegv now prefers the POSIX way of defining the
signal handler over than the traditional one, when both are supported.
As a consequence, on Linux/i386 and other Linux platforms, the type
'stackoverflow_context_t' is now typedefed to 'ucontext_t *' rather than
'struct sigcontext *'.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
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.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
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