summaryrefslogtreecommitdiffstats
path: root/lib/libthr
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2008-03-21 02:31:55 +0000
committerdavidxu <davidxu@FreeBSD.org>2008-03-21 02:31:55 +0000
commit8420f5505a178be36939d61d6e9da31e0f2eb05a (patch)
tree832c123d62df23c93a1a523d916c6b722a10b886 /lib/libthr
parentf5401384e545c9f770d5826838cbb091e91a4c24 (diff)
downloadFreeBSD-src-8420f5505a178be36939d61d6e9da31e0f2eb05a.zip
FreeBSD-src-8420f5505a178be36939d61d6e9da31e0f2eb05a.tar.gz
Resolve __error()'s PLT early so that it needs not to be resolved again,
otherwise rwlock is recursivly called when signal happens and the __error was never resolved before.
Diffstat (limited to 'lib/libthr')
-rw-r--r--lib/libthr/thread/thr_rtld.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/libthr/thread/thr_rtld.c b/lib/libthr/thread/thr_rtld.c
index 411e995..8c6eddb 100644
--- a/lib/libthr/thread/thr_rtld.c
+++ b/lib/libthr/thread/thr_rtld.c
@@ -220,6 +220,9 @@ _thr_rtld_init(void)
/* force to resolve _umtx_op PLT */
_umtx_op((struct umtx *)&dummy, UMTX_OP_WAKE, 1, 0, 0);
+
+ /* force to resolve errno() PLT */
+ __error();
li.lock_create = _thr_rtld_lock_create;
li.lock_destroy = _thr_rtld_lock_destroy;
OpenPOWER on IntegriCloud