1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.

* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
	* elf/dl-close.c (_dl_close_worker): Likewise.
	* elf/dl-open.c (_dl_open_worker): Likewise.
	* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
This commit is contained in:
Ulrich Drepper
2006-10-29 21:46:32 +00:00
parent 78fbd00f39
commit b94817f913
6 changed files with 16 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
* elf/dl-close.c (_dl_close_worker): Likewise.
* elf/dl-open.c (_dl_open_worker): Likewise.
* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
2006-10-27 Ulrich Drepper <drepper@redhat.com> 2006-10-27 Ulrich Drepper <drepper@redhat.com>
* configure.in: Require assembler support for visibility, compiler * configure.in: Require assembler support for visibility, compiler

View File

@ -399,7 +399,7 @@ _dl_close_worker (struct link_map *map)
struct r_scope_elem **old = imap->l_scope; struct r_scope_elem **old = imap->l_scope;
if (SINGLE_THREAD_P) if (RTLD_SINGLE_THREAD_P)
imap->l_scope = newp; imap->l_scope = newp;
else else
{ {

View File

@ -417,7 +417,7 @@ dl_open_worker (void *a)
memcpy (newp, imap->l_scope, cnt * sizeof (imap->l_scope[0])); memcpy (newp, imap->l_scope, cnt * sizeof (imap->l_scope[0]));
struct r_scope_elem **old = imap->l_scope; struct r_scope_elem **old = imap->l_scope;
if (SINGLE_THREAD_P) if (RTLD_SINGLE_THREAD_P)
imap->l_scope = newp; imap->l_scope = newp;
else else
{ {

View File

@ -93,14 +93,14 @@ _dl_fixup (
version = NULL; version = NULL;
} }
if (l->l_type == lt_loaded && !SINGLE_THREAD_P) if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
__rtld_mrlock_lock (l->l_scope_lock); __rtld_mrlock_lock (l->l_scope_lock);
result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym,
l->l_scope, version, ELF_RTYPE_CLASS_PLT, l->l_scope, version, ELF_RTYPE_CLASS_PLT,
DL_LOOKUP_ADD_DEPENDENCY, NULL); DL_LOOKUP_ADD_DEPENDENCY, NULL);
if (l->l_type == lt_loaded && !SINGLE_THREAD_P) if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
__rtld_mrlock_unlock (l->l_scope_lock); __rtld_mrlock_unlock (l->l_scope_lock);
/* Currently result contains the base load address (or link map) /* Currently result contains the base load address (or link map)
@ -181,7 +181,7 @@ _dl_profile_fixup (
version = NULL; version = NULL;
} }
if (l->l_type == lt_loaded && !SINGLE_THREAD_P) if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
__rtld_mrlock_lock (l->l_scope_lock); __rtld_mrlock_lock (l->l_scope_lock);
result = _dl_lookup_symbol_x (strtab + refsym->st_name, l, &defsym, result = _dl_lookup_symbol_x (strtab + refsym->st_name, l, &defsym,
@ -189,7 +189,7 @@ _dl_profile_fixup (
ELF_RTYPE_CLASS_PLT, ELF_RTYPE_CLASS_PLT,
DL_LOOKUP_ADD_DEPENDENCY, NULL); DL_LOOKUP_ADD_DEPENDENCY, NULL);
if (l->l_type == lt_loaded && !SINGLE_THREAD_P) if (l->l_type == lt_loaded && !RTLD_SINGLE_THREAD_P)
__rtld_mrlock_unlock (l->l_scope_lock); __rtld_mrlock_unlock (l->l_scope_lock);
/* Currently result contains the base load address (or link map) /* Currently result contains the base load address (or link map)

View File

@ -113,7 +113,7 @@ do_sym (void *handle, const char *name, void *who,
the initial binary. And then the more complex part the initial binary. And then the more complex part
where the object is dynamically loaded and the scope where the object is dynamically loaded and the scope
array can change. */ array can change. */
if (match->l_type != lt_loaded || SINGLE_THREAD_P) if (match->l_type != lt_loaded || RTLD_SINGLE_THREAD_P)
result = GLRO(dl_lookup_symbol_x) (name, match, &ref, result = GLRO(dl_lookup_symbol_x) (name, match, &ref,
match->l_scope, vers, 0, match->l_scope, vers, 0,
flags | DL_LOOKUP_ADD_DEPENDENCY, flags | DL_LOOKUP_ADD_DEPENDENCY,

View File

@ -2,6 +2,7 @@
/* No multi-thread handling enabled. */ /* No multi-thread handling enabled. */
#define SINGLE_THREAD_P (1) #define SINGLE_THREAD_P (1)
#define RTLD_SINGLE_THREAD_P (1)
#define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */ #define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */
#define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */ #define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */
#define LIBC_CANCEL_HANDLED() /* Nothing. */ #define LIBC_CANCEL_HANDLED() /* Nothing. */