aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--elf/rtld.c10
2 files changed, 9 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index b4d58724de..d04da2c691 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-06-18 Jakub Jelinek <jakub@redhat.com>
+
+ * elf/rtld.c (dl_main): Don't call init_tls more than once.
+
2007-06-17 Andreas Schwab <schwab@suse.de>
* sysdeps/generic/initfini.c: Tell gcc about the nonstandard sections.
diff --git a/elf/rtld.c b/elf/rtld.c
index c57ef17e13..7612a69324 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1400,6 +1400,11 @@ of this helper program; chances are you did not intend to run this program.\n\
/* Iterate over all entries in the list. The order is important. */
struct audit_ifaces *last_audit = NULL;
struct audit_list *al = audit_list->next;
+
+ /* Since we start using the auditing DSOs right away we need to
+ initialize the data structures now. */
+ tcbp = init_tls ();
+
do
{
int tls_idx = GL(dl_tls_max_dtv_idx);
@@ -1409,11 +1414,6 @@ of this helper program; chances are you did not intend to run this program.\n\
always allocate the static block, we never defer it even if
no DF_STATIC_TLS bit is set. The reason is that we know
glibc will use the static model. */
-
- /* Since we start using the auditing DSOs right away we need to
- initialize the data structures now. */
- tcbp = init_tls ();
-
struct dlmopen_args dlmargs;
dlmargs.fname = al->name;
dlmargs.map = NULL;