diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | csu/libc-tls.c | 19 | ||||
-rw-r--r-- | elf/Versions | 2 | ||||
-rw-r--r-- | elf/dl-tls.c | 34 | ||||
-rw-r--r-- | sysdeps/generic/ldsodefs.h | 6 |
5 files changed, 9 insertions, 59 deletions
@@ -1,3 +1,10 @@ +2016-12-21 Florian Weimer <fweimer@redhat.com> + + * csu/libc-tls.c (_dl_tls_setup): Remove. + * elf/dl-tls.c (_dl_tls_setup): Likewise. + * elf/Versions (GLIBC_PRIVATE): Remove _dl_tls_setup. + * sysdeps/generic/ldsodefs.h (_dl_tls_setup): Remove declaration. + 2016-12-21 Nick Alcock <nick.alcock@oracle.com> [BZ #7065] diff --git a/csu/libc-tls.c b/csu/libc-tls.c index 235ac79..8f92234 100644 --- a/csu/libc-tls.c +++ b/csu/libc-tls.c @@ -216,25 +216,6 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign) init_static_tls (memsz, MAX (TLS_TCB_ALIGN, max_align)); } -/* This is called only when the data structure setup was skipped at startup, - when there was no need for it then. Now we have dynamically loaded - something needing TLS, or libpthread needs it. */ -int -internal_function -_dl_tls_setup (void) -{ - init_slotinfo (); - init_static_tls ( -#if TLS_TCB_AT_TP - TLS_TCB_SIZE, -#else - 0, -#endif - TLS_TCB_ALIGN); - return 0; -} - - /* This is the minimal initialization function used when libpthread is not used. */ void diff --git a/elf/Versions b/elf/Versions index 08f76a7..3d57e36 100644 --- a/elf/Versions +++ b/elf/Versions @@ -59,7 +59,7 @@ ld { _dl_allocate_tls; _dl_allocate_tls_init; _dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info; _dl_deallocate_tls; _dl_make_stack_executable; _dl_out_of_memory; - _dl_rtld_di_serinfo; _dl_starting_up; _dl_tls_setup; + _dl_rtld_di_serinfo; _dl_starting_up; _rtld_global; _rtld_global_ro; # Only here for gdb while a better method is developed. diff --git a/elf/dl-tls.c b/elf/dl-tls.c index 60f4c1d..97bd977 100644 --- a/elf/dl-tls.c +++ b/elf/dl-tls.c @@ -274,39 +274,7 @@ _dl_determine_tlsoffset (void) /* The alignment requirement for the static TLS block. */ GL(dl_tls_static_align) = max_align; } - - -/* This is called only when the data structure setup was skipped at startup, - when there was no need for it then. Now we have dynamically loaded - something needing TLS, or libpthread needs it. */ -int -internal_function -_dl_tls_setup (void) -{ - assert (GL(dl_tls_dtv_slotinfo_list) == NULL); - assert (GL(dl_tls_max_dtv_idx) == 0); - - const size_t nelem = 2 + TLS_SLOTINFO_SURPLUS; - - GL(dl_tls_dtv_slotinfo_list) - = calloc (1, (sizeof (struct dtv_slotinfo_list) - + nelem * sizeof (struct dtv_slotinfo))); - if (GL(dl_tls_dtv_slotinfo_list) == NULL) - return -1; - - GL(dl_tls_dtv_slotinfo_list)->len = nelem; - - /* Number of elements in the static TLS block. It can't be zero - because of various assumptions. The one element is null. */ - GL(dl_tls_static_nelem) = GL(dl_tls_max_dtv_idx) = 1; - - /* This initializes more variables for us. */ - _dl_determine_tlsoffset (); - - return 0; -} -rtld_hidden_def (_dl_tls_setup) -#endif +#endif /* SHARED */ static void * internal_function diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 288f5fe..34d7ec1 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -994,12 +994,6 @@ extern size_t _dl_count_modids (void) internal_function attribute_hidden; /* Calculate offset of the TLS blocks in the static TLS block. */ extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden; -/* Set up the data structures for TLS, when they were not set up at startup. - Returns nonzero on malloc failure. - This is called from _dl_map_object_from_fd or by libpthread. */ -extern int _dl_tls_setup (void) internal_function; -rtld_hidden_proto (_dl_tls_setup) - /* Allocate memory for static TLS block (unless MEM is nonzero) and dtv. */ extern void *_dl_allocate_tls (void *mem) internal_function; rtld_hidden_proto (_dl_allocate_tls) |