mirror of git://sourceware.org/git/glibc.git
_dl_static_init: Remove nested locking.
This function is now called from dl_open_worker with the GL(dl_load_lock) lock held and no longer needs local protection. GL(dl_load_lock) also correctly protects _dl_lookup_symbol_x called here that relies on the caller to have serialized access to the data structures it uses.
This commit is contained in:
parent
cbe7d24bb4
commit
fe114d2064
|
@ -1,3 +1,10 @@
|
|||
2013-06-27 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-static.c: Do not include
|
||||
<bits/libc-lock.h>.
|
||||
(_dl_static_lock): Remove variable.
|
||||
(_dl_static_init): Remove _dl_static_lock locking.
|
||||
|
||||
2013-06-15 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/nptl/libpthread.abilist: Update.
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2013-06-27 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/mips/dl-static.c: Do not include
|
||||
<bits/libc-lock.h>.
|
||||
(_dl_static_lock): Remove variable.
|
||||
(_dl_static_init): Remove _dl_static_lock locking.
|
||||
|
||||
2013-06-15 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/mips/mips32/nptl/libpthread.abilist:
|
||||
|
|
|
@ -35,9 +35,6 @@ _dl_var_init (void *array[])
|
|||
}
|
||||
|
||||
#else
|
||||
#include <bits/libc-lock.h>
|
||||
|
||||
__libc_lock_define_initialized_recursive (static, _dl_static_lock)
|
||||
|
||||
static void *variables[] =
|
||||
{
|
||||
|
@ -52,8 +49,6 @@ _dl_static_init (struct link_map *map)
|
|||
lookup_t loadbase;
|
||||
void (*f) (void *[]);
|
||||
|
||||
__libc_lock_lock_recursive (_dl_static_lock);
|
||||
|
||||
loadbase = _dl_lookup_symbol_x ("_dl_var_init", map, &ref,
|
||||
map->l_local_scope, NULL, 0, 1, NULL);
|
||||
if (ref != NULL)
|
||||
|
@ -61,8 +56,6 @@ _dl_static_init (struct link_map *map)
|
|||
f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref);
|
||||
f (variables);
|
||||
}
|
||||
|
||||
__libc_lock_unlock_recursive (_dl_static_lock);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -33,9 +33,6 @@ _dl_var_init (void *array[])
|
|||
}
|
||||
|
||||
#else
|
||||
#include <bits/libc-lock.h>
|
||||
|
||||
__libc_lock_define_initialized_recursive (static, _dl_static_lock)
|
||||
|
||||
static void *variables[] =
|
||||
{
|
||||
|
@ -64,8 +61,6 @@ _dl_static_init (struct link_map *l)
|
|||
void (*f) (void *[]);
|
||||
size_t i;
|
||||
|
||||
__libc_lock_lock_recursive (_dl_static_lock);
|
||||
|
||||
loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope,
|
||||
NULL, 0, 1, NULL);
|
||||
|
||||
|
@ -84,8 +79,6 @@ _dl_static_init (struct link_map *l)
|
|||
f (variables);
|
||||
_dl_protect_relro (rtld_map);
|
||||
}
|
||||
|
||||
__libc_lock_unlock_recursive (_dl_static_lock);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue