CVSROOT:        /cvs
Module name:    src
Changes by:     guent...@cvs.openbsd.org        2016/05/07 13:05:24

Modified files:
        include        : Makefile tib.h 
        sys/arch/powerpc/include: tcb.h 
        lib/libc       : Makefile.inc Symbols.list shlib_version 
        lib/libc/arch/alpha: Makefile.inc 
        lib/libc/arch/alpha/sys: Ovfork.S cerror.S sigsuspend.S 
        lib/libc/arch/amd64: SYS.h 
        lib/libc/arch/amd64/sys: Ovfork.S brk.S sbrk.S sigprocmask.S 
                                 sigsuspend.S syscall.S tfork_thread.S 
        lib/libc/arch/arm: Makefile.inc SYS.h 
        lib/libc/arch/arm/sys: Ovfork.S cerror.S sigsuspend.S 
        lib/libc/arch/hppa: SYS.h 
        lib/libc/arch/hppa/sys: Ovfork.S sigsuspend.S 
        lib/libc/arch/hppa64: SYS.h 
        lib/libc/arch/hppa64/sys: Ovfork.S sigsuspend.S 
        lib/libc/arch/i386: SYS.h 
        lib/libc/arch/i386/sys: Ovfork.S brk.S sbrk.S sigprocmask.S 
                                sigsuspend.S syscall.S tfork_thread.S 
        lib/libc/arch/m88k: Makefile.inc 
        lib/libc/arch/m88k/sys: Ovfork.S cerror.S sigsuspend.S 
        lib/libc/arch/mips64: Makefile.inc SYS.h 
        lib/libc/arch/mips64/sys: Ovfork.S cerror.S sigsuspend.S 
        lib/libc/arch/powerpc: Makefile.inc SYS.h 
        lib/libc/arch/powerpc/sys: Ovfork.S brk.S cerror.S sbrk.S 
                                   sigprocmask.S sigsuspend.S 
                                   tfork_thread.S 
        lib/libc/arch/sh: Makefile.inc SYS.h 
        lib/libc/arch/sh/sys: Ovfork.S cerror.S sigsuspend.S 
        lib/libc/arch/sparc: SYS.h 
        lib/libc/arch/sparc/sys: Ovfork.S sigsuspend.S 
        lib/libc/arch/sparc64: SYS.h 
        lib/libc/arch/sparc64/sys: Ovfork.S sigsuspend.S 
        lib/libc/dlfcn : Makefile.inc init.c 
        lib/libc/gen   : errno.c getcwd.c 
        lib/libc/hidden: errno.h fcntl.h signal.h stdio.h time.h 
                         unistd.h 
        lib/libc/hidden/sys: mman.h socket.h wait.h 
        lib/libc/include: namespace.h thread_private.h 
        lib/libc/stdio : flockfile.c local.h 
        lib/libc/sys   : Makefile.inc pread.c preadv.c pwrite.c 
                         pwritev.c w_fork.c 
        lib/libc/termios: tcdrain.c 
        lib/libc/thread: Makefile.inc 
        lib/librthread : Makefile rthread.c rthread.h rthread_attr.c 
                         rthread_file.c rthread_fork.c 
                         rthread_getcpuclockid.c rthread_libc.c 
                         rthread_np.c rthread_sem.c rthread_sig.c 
                         rthread_sync.c shlib_version 
        libexec/ld.so  : Makefile Symbols.map library.c library_mquery.c 
                         loader.c resolve.h 
        libexec/ld.so/alpha: ldasm.S syscall.h 
        libexec/ld.so/amd64: ldasm.S syscall.h 
        libexec/ld.so/arm: ldasm.S syscall.h 
        libexec/ld.so/hppa: ldasm.S syscall.h 
        libexec/ld.so/i386: ldasm.S syscall.h 
        libexec/ld.so/m88k: ldasm.S syscall.h 
        libexec/ld.so/mips64: ldasm.S syscall.h 
        libexec/ld.so/powerpc: ldasm.S syscall.h 
        libexec/ld.so/sh: ldasm.S syscall.h 
        libexec/ld.so/sparc: ldasm.S syscall.h 
        libexec/ld.so/sparc64: ldasm.S syscall.h 
        distrib/sets/lists/base: md.alpha md.amd64 md.armish md.armv7 
                                 md.hppa md.hppa64 md.i386 md.landisk 
                                 md.loongson md.luna88k md.macppc 
                                 md.octeon md.sgi md.socppc md.sparc 
                                 md.sparc64 md.zaurus mi 
        distrib/sets/lists/comp: mi 
        distrib/special/libstubs: Makefile 
Added files:
        lib/libc/dlfcn : tib.c 
        lib/libc/hidden: poll.h tib.h 
        lib/libc/hidden/sys: msg.h select.h uio.h 
        lib/libc/include: cancel.h 
        lib/libc/sys   : canceled.c w_accept.c w_accept4.c w_close.c 
                         w_closefrom.c w_connect.c w_fcntl.c w_fsync.c 
                         w_msgrcv.c w_msgsnd.c w_msync.c w_nanosleep.c 
                         w_open.c w_openat.c w_poll.c w_ppoll.c 
                         w_pread.c w_preadv.c w_pselect.c w_pwrite.c 
                         w_pwritev.c w_read.c w_readv.c w_recvfrom.c 
                         w_recvmsg.c w_select.c w_sendmsg.c w_sendto.c 
                         w_sigsuspend.c w_vfork.c w_wait4.c w_write.c 
                         w_writev.c 
        lib/libc/thread: callbacks.c 
        lib/librthread : Symbols.map rthread_cb.h 
        libexec/ld.so  : tib.c 
Removed files:
        lib/libc/arch/alpha/sys: fork.S 
        lib/libc/arch/amd64/sys: cerror.S fork.S 
        lib/libc/arch/arm/sys: fork.S 
        lib/libc/arch/hppa/sys: cerror.S fork.S 
        lib/libc/arch/hppa64/sys: cerror.S fork.S 
        lib/libc/arch/i386/sys: cerror.S fork.S 
        lib/libc/arch/m88k/sys: fork.S 
        lib/libc/arch/mips64/sys: fork.S 
        lib/libc/arch/powerpc/sys: fork.S 
        lib/libc/arch/sh/sys: fork.S 
        lib/libc/arch/sparc/sys: cerror.S fork.S 
        lib/libc/arch/sparc64/sys: cerror.S fork.S 
        lib/libc/thread: unithread_malloc_lock.c unithread_mutex.c 
                         unithread_tag.c 
        lib/librthread : rthread_cancel.c tcb.h 
        lib/librthread/arch/alpha: cerror.S 
        lib/librthread/arch/amd64: cerror.S 
        lib/librthread/arch/arm: cerror.S 
        lib/librthread/arch/hppa: cerror.S 
        lib/librthread/arch/hppa64: cerror.S 
        lib/librthread/arch/i386: cerror.S 
        lib/librthread/arch/m88k: cerror.S 
        lib/librthread/arch/mips64: cerror.S 
        lib/librthread/arch/powerpc: cerror.S 
        lib/librthread/arch/sh: cerror.S 
        lib/librthread/arch/sparc: cerror.S 
        lib/librthread/arch/sparc64: cerror.S 

Log message:
Use a Thread Information Block in both single and multi-threaded programs.
This stores errno, the cancelation flags, and related bits for each thread
and is allocated by ld.so or libc.a.  This is an ABI break from 5.9-stable!

Make libpthread dlopen'able by moving the cancelation wrappers into libc
and doing locking and fork/errno handling via callbacks that libpthread
registers when it first initializes.  'errno' *must* be declared via
<errno.h> now!

Clean up libpthread's symbol exports like libc.

On powerpc, offset the TIB/TCB/TLS data from the register per the ELF spec.

Testing by various, particularly sthen@ and patrick@
ok kettenis@

Reply via email to