diff options
author | Maciej W. Rozycki <macro@codesourcery.com> | 2013-06-27 11:15:51 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@codesourcery.com> | 2013-06-27 11:49:44 +0100 |
commit | fe114d206479a36369d732ea260e81a686fdbb0b (patch) | |
tree | b073a6e619dd39a7215e042cc76116ba96ca9a23 /ports/sysdeps | |
parent | cbe7d24bb48d5f572d714d893a27a8858870b1d2 (diff) | |
download | glibc-fe114d206479a36369d732ea260e81a686fdbb0b.tar glibc-fe114d206479a36369d732ea260e81a686fdbb0b.tar.gz glibc-fe114d206479a36369d732ea260e81a686fdbb0b.tar.bz2 glibc-fe114d206479a36369d732ea260e81a686fdbb0b.zip |
_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.
Diffstat (limited to 'ports/sysdeps')
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/ia64/dl-static.c | 7 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/mips/dl-static.c | 7 |
2 files changed, 0 insertions, 14 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/dl-static.c b/ports/sysdeps/unix/sysv/linux/ia64/dl-static.c index de635db40e..9853253dcf 100644 --- a/ports/sysdeps/unix/sysv/linux/ia64/dl-static.c +++ b/ports/sysdeps/unix/sysv/linux/ia64/dl-static.c @@ -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 diff --git a/ports/sysdeps/unix/sysv/linux/mips/dl-static.c b/ports/sysdeps/unix/sysv/linux/mips/dl-static.c index e0501be3b6..9290ed9ed3 100644 --- a/ports/sysdeps/unix/sysv/linux/mips/dl-static.c +++ b/ports/sysdeps/unix/sysv/linux/mips/dl-static.c @@ -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 |