git: rtld-elf - Notify thread state to optimize relocations
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat May 11 21:07:43 PDT 2019
commit 50caca1a70a5f1f9dfba401f114bed0e721bbb0f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat May 11 21:01:55 2019 -0700
rtld-elf - Notify thread state to optimize relocations
* Add shims to allow libthread_xu to notify rtld when threading
is being used.
* Requires weak symbols in libc which are overriden by rtld-elf.
* Implement the feature in rtld-elf and use it to avoid making calls
to lwp_gettid(). When threaded, use tls_get_tcb() (which does not
require a system call) instead of lwp_gettid(). When not threaded,
just use a constant.
NOTE: We cannot use tls_get_tcb() unconditionally because the tcb
is not setup during early relocations. So do this whack-a-mole
to make it work.
* This leaves just the sigprocmask wrappers around rtld-elf (which
are needed to prevent stacked relocations from signal handlers).
Poked-by: mjg
Summary of changes:
lib/libc/gen/Symbol.map | 1 +
lib/libc/gen/dlfcn.c | 8 ++++
lib/libthread_xu/thread/thr_kern.c | 1 +
lib/libthread_xu/thread/thr_private.h | 1 +
libexec/rtld-elf/Symbol.map | 1 +
libexec/rtld-elf/rtld.c | 1 +
libexec/rtld-elf/rtld_lock.c | 71 ++++++++++++++++++++++++++---------
7 files changed, 66 insertions(+), 18 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/50caca1a70a5f1f9dfba401f114bed0e721bbb0f
--
DragonFly BSD source repository
More information about the Commits
mailing list