summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@codesourcery.com>2013-06-27 11:15:51 +0100
committerMaciej W. Rozycki <macro@codesourcery.com>2013-06-27 11:49:44 +0100
commitfe114d206479a36369d732ea260e81a686fdbb0b (patch)
treeb073a6e619dd39a7215e042cc76116ba96ca9a23
parentcbe7d24bb48d5f572d714d893a27a8858870b1d2 (diff)
downloadglibc-fe114d206479a36369d732ea260e81a686fdbb0b.tar.gz
_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.
-rw-r--r--ports/ChangeLog.ia647
-rw-r--r--ports/ChangeLog.mips7
-rw-r--r--ports/sysdeps/unix/sysv/linux/ia64/dl-static.c7
-rw-r--r--ports/sysdeps/unix/sysv/linux/mips/dl-static.c7
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 <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.
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 <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:
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