From fe114d206479a36369d732ea260e81a686fdbb0b Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Thu, 27 Jun 2013 11:15:51 +0100 Subject: _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. --- ports/ChangeLog.ia64 | 7 +++++++ ports/ChangeLog.mips | 7 +++++++ ports/sysdeps/unix/sysv/linux/ia64/dl-static.c | 7 ------- ports/sysdeps/unix/sysv/linux/mips/dl-static.c | 7 ------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ports/ChangeLog.ia64 b/ports/ChangeLog.ia64 index 78d6b586a3..0189858fff 100644 --- a/ports/ChangeLog.ia64 +++ b/ports/ChangeLog.ia64 @@ -1,3 +1,10 @@ +2013-06-27 Maciej W. Rozycki + + * sysdeps/unix/sysv/linux/ia64/dl-static.c: Do not include + . + (_dl_static_lock): Remove variable. + (_dl_static_init): Remove _dl_static_lock locking. + 2013-06-15 Siddhesh Poyarekar * sysdeps/unix/sysv/linux/ia64/nptl/libpthread.abilist: Update. diff --git a/ports/ChangeLog.mips b/ports/ChangeLog.mips index bdb9e5ce48..00542f59e2 100644 --- a/ports/ChangeLog.mips +++ b/ports/ChangeLog.mips @@ -1,3 +1,10 @@ +2013-06-27 Maciej W. Rozycki + + * sysdeps/unix/sysv/linux/mips/dl-static.c: Do not include + . + (_dl_static_lock): Remove variable. + (_dl_static_init): Remove _dl_static_lock locking. + 2013-06-15 Siddhesh Poyarekar * sysdeps/unix/sysv/linux/mips/mips32/nptl/libpthread.abilist: 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 - -__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 - -__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 -- cgit 1.4.1