diff options
author | davidxu <davidxu@FreeBSD.org> | 2008-03-21 02:31:55 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2008-03-21 02:31:55 +0000 |
commit | 8420f5505a178be36939d61d6e9da31e0f2eb05a (patch) | |
tree | 832c123d62df23c93a1a523d916c6b722a10b886 /lib/libthr | |
parent | f5401384e545c9f770d5826838cbb091e91a4c24 (diff) | |
download | FreeBSD-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.c | 3 |
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; |