* elf/rtld.c (dl_main) [USE_TLS]: Adjust l_tls_initimage of main
authorRoland McGrath <roland@gnu.org>
Thu, 12 Sep 2002 09:15:22 +0000 (09:15 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 12 Sep 2002 09:15:22 +0000 (09:15 +0000)
executable if needed, in case it's actually a shared object.

ChangeLog
elf/rtld.c

index 687291b..7489eaf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-12  Roland McGrath  <roland@redhat.com>
+
+       * elf/rtld.c (dl_main) [USE_TLS]: Adjust l_tls_initimage of main
+       executable if needed, in case it's actually a shared object.
+
 2002-09-11  Roland McGrath  <roland@redhat.com>
 
        * elf/dl-load.c (_dl_map_object_from_fd): Use l_addr instead of
index 273926e..22aa485 100644 (file)
@@ -832,6 +832,13 @@ of this helper program; chances are you did not intend to run this program.\n\
        break;
 #endif
       }
+#ifdef USE_TLS
+    /* Adjust the address of the TLS initialization image in case
+       the executable is actually an ET_DYN object.  */
+    if (GL(dl_loaded)->l_tls_initimage != NULL)
+      GL(dl_loaded)->l_tls_initimage
+       = (char *) GL(dl_loaded)->l_tls_initimage + GL(dl_loaded)->l_addr;
+#endif
   if (! GL(dl_loaded)->l_map_end)
     GL(dl_loaded)->l_map_end = ~0;
   if (! GL(dl_rtld_map).l_libname && GL(dl_rtld_map).l_name)