diff options
Diffstat (limited to 'lib/libpthread/thread')
-rw-r--r-- | lib/libpthread/thread/Makefile.inc | 5 | ||||
-rw-r--r-- | lib/libpthread/thread/thr_init.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/libpthread/thread/Makefile.inc b/lib/libpthread/thread/Makefile.inc index a3f6ff9..f37a21f 100644 --- a/lib/libpthread/thread/Makefile.inc +++ b/lib/libpthread/thread/Makefile.inc @@ -1,4 +1,6 @@ -# $Id$ +# $Id: Makefile.inc,v 1.1 1996/01/22 00:23:03 julian Exp $ + +CPLUSPLUSLIB= cpluspluslib # uthread sources .PATH: ${.CURDIR}/uthread @@ -6,6 +8,7 @@ SRCS+= \ uthread_accept.c \ uthread_attr_setcreatesuspend.c \ + uthread_autoinit.cc \ uthread_bind.c \ uthread_clean.c \ uthread_close.c \ diff --git a/lib/libpthread/thread/thr_init.c b/lib/libpthread/thread/thr_init.c index d044063..6139935 100644 --- a/lib/libpthread/thread/thr_init.c +++ b/lib/libpthread/thread/thr_init.c @@ -202,6 +202,18 @@ _thread_main(int argc, char *argv[], char *env) _thread_init(); return (main(argc, argv, env)); } +#else +/* + * Force our auto-initialization module to be pulled in from the library, + * by referencing a symbol that is defined in it. + * + * The auto-initialization module is a small C++ module. It has a static + * constructor that calls _thread_init() automatically, at the beginning + * of program execution. That eliminates the need for any special hooks + * in crt0.o. + */ +extern int _thread_autoinit_dummy_decl; +static int *_thread_autoinit_dummy_ref = &_thread_autoinit_dummy_decl; #endif #else /* |