Description: A simplified variant of GNU libsigsegv. It implements the most important features of GNU libsigsegv: catching SIGSEGV and catching stack overflow. It does *not* implement the 'sigsegv_dispatcher' type (which is not multithread-safe). It supports all modern Unix-like platforms: Linux, Hurd, FreeBSD, NetBSD, OpenBSD, macOS, AIX, Solaris, Cygwin, Haiku, even IRIX. It does *not* support HP-UX, Minix, native Windows; on these platforms the module compiles and provides a header file, but it does not define HAVE_SIGSEGV_RECOVERY and HAVE_STACK_OVERFLOW_RECOVERY. Unlike GNU libsigsegv, which consists of many .h and .c files, this module compiles to just two object files, rather than a library. Files: lib/sigsegv.in.h lib/sigsegv.c lib/stackvma.h lib/stackvma.c m4/mmap-anon.m4 m4/musl.m4 m4/sigaltstack.m4 m4/stack-direction.m4 m4/libsigsegv.m4 m4/sigsegv.m4 Depends-on: gen-header havelib host-cpu-c-abi stdint getpagesize configure.ac: AC_REQUIRE([gl_SIGSEGV]) if test $gl_sigsegv_uses_libsigsegv = yes; then GL_GENERATE_SIGSEGV_H=false else GL_GENERATE_SIGSEGV_H=true fi gl_CONDITIONAL_HEADER([sigsegv.h]) AC_PROG_MKDIR_P if $GL_GENERATE_SIGSEGV_H; then dnl Persuade glibc to declare macros designating register dnl indices: REG_RSP on x86_64, REG_ESP on i386. dnl Persuade Solaris OpenIndiana to include , dnl which declares macros designating register indices, such as ESP on i386. dnl Persuade Solaris OpenIndiana to declare mincore(). AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) gl_MUSL_LIBC AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in solaris2.11) AC_DEFINE([SOLARIS11], [1], [Define on Solaris 11 and its derivates.]) ;; esac gl_FUNC_MMAP_ANON dnl Stack direction. SV_STACK_DIRECTION dnl Catching stack overflow requires an alternate signal stack. dnl The old "install a guard page" trick would be unreliable, because dnl we don't know where exactly to place the guard page. SV_SIGALTSTACK AC_CHECK_FUNCS_ONCE([getrlimit]) fi Makefile.am: BUILT_SOURCES += $(SIGSEGV_H) if GL_GENERATE_SIGSEGV_H sigsegv.h: sigsegv.in.h $(top_builddir)/config.status @NMD@ $(AM_V_GEN)$(MKDIR_P) '%reldir%' $(gl_V_at)$(SED_HEADER_TO_AT_t) $(srcdir)/sigsegv.in.h $(AM_V_at)mv $@-t $@ else sigsegv.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += sigsegv.h sigsegv.h-t if GL_GENERATE_SIGSEGV_H lib_SOURCES += sigsegv.c stackvma.c endif Include: Link: $(LTLIBSIGSEGV) when linking with libtool, $(LIBSIGSEGV) otherwise License: GPLv2+ Maintainer: Bruno Haible