mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-05-13 15:13:36 +00:00
In documentation and comments, be more like POSIX in terminology involving multithreading. Explain the distinction between multithreaded process vs multithreaded program. Change “program” to “process” when the latter wording is more accurate or informative. Simplify the wording for the constraints on processes that use unlocked I/O. Change “multithread-safe” to “thread-safe”. Change “thread-safety” to “thread safety”. However, do not change “multithreaded” to “multi-threaded” even though there are some uses of both spellinga, as there are a whole bunch of uses of “multithreaded”, also in identifier names; perhaps Gnulib should even standardize on “multithreaded” (not “multi-threaded”), contra POSIX.
101 lines
2.6 KiB
Plaintext
101 lines
2.6 KiB
Plaintext
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 thread-safe).
|
|
It supports all modern Unix-like platforms: Linux, Hurd, FreeBSD, NetBSD,
|
|
OpenBSD, macOS, AIX, Solaris, Cygwin, Haiku. It does *not* support HP-UX, Minix,
|
|
native Windows; on these platforms the module compiles and provides a
|
|
<sigsegv.h> 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-h
|
|
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 <sys/ucontext.h> to declare macros designating register
|
|
dnl indices: REG_RSP on x86_64, REG_ESP on i386.
|
|
dnl Persuade Solaris OpenIndiana <ucontext.h> to include <sys/regset.h>,
|
|
dnl which declares macros designating register indices, such as ESP on i386.
|
|
dnl Persuade Solaris OpenIndiana <unistd.h> 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:
|
|
<sigsegv.h>
|
|
|
|
Link:
|
|
$(LTLIBSIGSEGV) when linking with libtool, $(LIBSIGSEGV) otherwise
|
|
|
|
License:
|
|
GPLv2+
|
|
|
|
Maintainer:
|
|
Bruno Haible
|