freebsd-nq/lib
Jason Evans 0a3fa43c7e Implement continuations to correctly handle [sig|_]longjmp() inside of a
signal handler.  Explicitly check for jumps to anywhere other than the
current stack, since such jumps are undefined according to POSIX.

While we're at it, convert thread cancellation to use continuations, since
it's cleaner than the original cancellation code.

Avoid delivering a signal to a thread twice.  This was a pre-existing bug,
but was likely unexposed until these other changes were made.

Defer signals generated by pthread_kill() so that they can be delivered on
the appropriate stack.  deischen claims that this is unnecessary, which is
likely true, but without this change, pthread_kill() can cause undefined
priority queue states and/or PANICs in [sig|_]longjmp(), so I'm leaving
this in for now.  To compile this code out and exercise the bug, define
the _NO_UNDISPATCH cpp macro.  Defining _PTHREADS_INVARIANTS as well will
cause earlier crashes.

PR:			kern/14685
Collaboration with:	deischen
2000-01-19 07:04:50 +00:00
..
compat What was I smoking? Use the proper form of the library names. 1999-12-21 06:19:03 +00:00
csu $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libalias Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libatm Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libbind Build more components to get named to build. 1999-11-30 04:40:54 +00:00
libc Make minor entry point changes to support libc_r. 2000-01-19 07:01:40 +00:00
libc_r Implement continuations to correctly handle [sig|_]longjmp() inside of a 2000-01-19 07:04:50 +00:00
libcalendar Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libcam get pd_type from inquiry data itself 2000-01-16 20:15:43 +00:00
libcom_err Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libcompat Aargh, the $FreeBSD$ check caused an inconsistent commit by rejecting 1999-12-22 13:49:14 +00:00
libcrypt A bunch of factual corrections. 2000-01-18 18:23:28 +00:00
libdevstat Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libdisk Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libedit Fix style bugs 1999-10-03 10:41:40 +00:00
libfetch Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libform Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libftpio Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libgnumalloc $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libio $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libipsec Fixed missing include and missing arg in synopsis. 2000-01-13 10:22:50 +00:00
libipx $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libkse Implement continuations to correctly handle [sig|_]longjmp() inside of a 2000-01-19 07:04:50 +00:00
libkvm Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libm ${MACHINE} -> ${MACHINE_ARCH} 1999-11-14 13:54:44 +00:00
libmd Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libmenu Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libncp Remove duplicated extern. 2000-01-01 14:21:31 +00:00
libncurses This is the second half of unbreaking the world build. Add a -DNOHTML 2000-01-11 12:51:56 +00:00
libnetgraph Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libopie Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libpam Upgrade to the pam_ssh module, version 1.1.. 1999-12-28 05:32:54 +00:00
libpanel Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libpcap $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libposix1e Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:13:59 +00:00
libpthread Implement continuations to correctly handle [sig|_]longjmp() inside of a 2000-01-19 07:04:50 +00:00
libradius Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libresolv Don't build elf libresolv.so*, no elf freebsd binaries have used it ever. 1998-10-11 04:21:56 +00:00
librpcsvc $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libskey Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libss sigset_t change (part 5 of 5) 1999-09-29 15:18:46 +00:00
libstand trailing white space removal. 2000-01-18 07:43:12 +00:00
libtacplus Fix error message that was too hastily cut&pasted from libradius. 2000-01-17 04:26:09 +00:00
libtelnet $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libutil Repair internal consistency: Change "login_cap_t * lc" to a more correct 2000-01-18 03:02:29 +00:00
libvgl Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
libwrap $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libxpg4 I have added the support for BIG5 encoding into libc/libxpg4/mklocale. 1998-08-15 12:51:49 +00:00
liby $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
libz Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
msun style fix 1999-11-09 00:18:22 +00:00
ncurses Replace beforeinstall target with new variables used by .mk system. 2000-01-14 07:57:47 +00:00
Makefile Fixed bitrot in library build order. libmd was not built before 2000-01-17 01:32:39 +00:00
Makefile.inc