failed to take into account that the library contains wrappers for read()
and write() that calls __libc_read() and __libc_write(). This incorrectly
causes normal read() and write() operations to be retried if aborted by a
signal.
Instead of making __libc_read() and __libc_write() retry if aborted by a
signal, add new functions __libc_safe_read() and __libc_safe_write() that
retries operation after a signal. Change reads from manager pipe and
writes to manager pipe to use __libc_safe_read() and __libc_safe_write().
thread attributes for the main thread.
Add emulation of native threads (libc_r) method of getting the current
thread attributes (pthread_attr_get_np()) and adjust emulation of native
threads pthread_attr_getstackaddr() to return bottom of stack instead of
top of stack.
Correct emulation of native threads pthread_mutexattr_settype() when
selecting recursive mutexes. Previously, the argument conversion before
calling the linuxthreads version of pthread_mutexattr_setattr() ended up
selecting errorcheck mutexes instead of recursive mutexes.
the communication over the pthread manager pipe a little more robust by
retrying after EINTR failures. Without this fix, linuxthreads based
binaries that run fine on FreeBSD 4 starts crashing in mysterious ways
on FreeBSD 6.
Add sys/_pthreadtypes.h to allow compilation on FreeBSD >= 6.0.
Initialize signal trampoline variables earlier to avoid race in wrapper
around sigaction.
Fix known API wrapper bugs.
Port compile time options:
Add option for using an alternate restart signal instead of SIGUSR2.
Add options for adjustment of maximum thread stack size and maximum
number of threads.
Make all options start with LINUXTHREADS_
Note that complete FreeBSD source matching userland must be installed
in /usr/src when compiling this port.
newer versions of FreeBSD 5.X.
Drop use of deprecated AINC variable.
Reenable use of ld(1) to restore the LINUXTHREADS_WRAP_API option.
Rename __thread to __xthread in prototypes to avoid conflict with
new gcc keyword.
Bump port revision.
functions providing most of the native threads API while avoiding name
clashes by transparently prefixing all function names that directly
provide the linuxthreads API.
Defining INSTALL_LIBLTHREAD_PIC_ARCHIVE causes installation and
registration of PIC archive for liblthread, which can be used to
generate a shared liblthread library for a different gcc installation.
Bump port revision.
Don't misuse DESTDIR when building linuxthreads version of libgcc.
Fix varargs warning under 5.0-CURRENT.
Don't try to register profiled libraries when NOPROFILE has been specified.
Don't try to register shared libraries when NOPIC has been specified.
Bump port revision.
PR: 38876
- Block cancel signal while creating new thread to avoid losing
the signal.
- Terminate the process with _exit(1) if it's unsafe to continue
calling atexit functions and destructors.