summaryrefslogtreecommitdiff
path: root/libpthread/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'libpthread/nptl')
-rw-r--r--libpthread/nptl/Makefile.in2
-rw-r--r--libpthread/nptl/init.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
index d33656532..1e9f98cea 100644
--- a/libpthread/nptl/Makefile.in
+++ b/libpthread/nptl/Makefile.in
@@ -220,7 +220,7 @@ else
LDFLAGS-libpthread.so := $(LDFLAGS)
endif
-LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so
+LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so -Wl,-z,nodelete,-z,initfirst,-init=__pthread_initialize_minimal_internal
LIBS-libpthread.so := $(LIBS)
diff --git a/libpthread/nptl/init.c b/libpthread/nptl/init.c
index 44f2c86f1..b70de84fd 100644
--- a/libpthread/nptl/init.c
+++ b/libpthread/nptl/init.c
@@ -260,6 +260,12 @@ static bool __nptl_initial_report_events __attribute_used__;
void
__pthread_initialize_minimal_internal (void)
{
+ static int initialized = 0;
+
+ if (initialized)
+ return;
+ initialized = 1;
+
#ifndef SHARED
/* Unlike in the dynamically linked case the dynamic linker has not
taken care of initializing the TLS data structures. */