summaryrefslogtreecommitdiffstats
path: root/lib/libpthread/thread
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libpthread/thread')
-rw-r--r--lib/libpthread/thread/Makefile.inc5
-rw-r--r--lib/libpthread/thread/thr_init.c12
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
/*
OpenPOWER on IntegriCloud