From 75aafc716bfcf989abc986c68d506e8a4f991ade Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 12 Sep 2002 09:15:22 +0000 Subject: [PATCH] * elf/rtld.c (dl_main) [USE_TLS]: Adjust l_tls_initimage of main executable if needed, in case it's actually a shared object. --- ChangeLog | 5 +++++ elf/rtld.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 687291b639..7489eaf59d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-09-12 Roland McGrath + + * 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 * elf/dl-load.c (_dl_map_object_from_fd): Use l_addr instead of diff --git a/elf/rtld.c b/elf/rtld.c index 273926ef53..22aa48543a 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -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) -- 2.11.4.GIT