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:
@ -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
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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)
|
||||||
|
@ -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,
|
||||||
|
@ -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. */
|
||||||
|
Reference in New Issue
Block a user