mirror of git://sourceware.org/git/glibc.git
Remove unused function _dl_tls_setup
Commit 7a5e3d9d63 (elf: Assume TLS is
initialized in _dl_map_object_from_fd) removed the last call of
_dl_tls_setup, but did not remove the function itself.
This commit is contained in:
parent
fcd942370f
commit
d08ab9ced7
|
|
@ -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>
|
2016-12-21 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
[BZ #7065]
|
[BZ #7065]
|
||||||
|
|
|
||||||
|
|
@ -216,25 +216,6 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
|
||||||
init_static_tls (memsz, MAX (TLS_TCB_ALIGN, max_align));
|
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
|
/* This is the minimal initialization function used when libpthread is
|
||||||
not used. */
|
not used. */
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ ld {
|
||||||
_dl_allocate_tls; _dl_allocate_tls_init;
|
_dl_allocate_tls; _dl_allocate_tls_init;
|
||||||
_dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info;
|
_dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info;
|
||||||
_dl_deallocate_tls; _dl_make_stack_executable; _dl_out_of_memory;
|
_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;
|
_rtld_global; _rtld_global_ro;
|
||||||
|
|
||||||
# Only here for gdb while a better method is developed.
|
# Only here for gdb while a better method is developed.
|
||||||
|
|
|
||||||
34
elf/dl-tls.c
34
elf/dl-tls.c
|
|
@ -274,39 +274,7 @@ _dl_determine_tlsoffset (void)
|
||||||
/* The alignment requirement for the static TLS block. */
|
/* The alignment requirement for the static TLS block. */
|
||||||
GL(dl_tls_static_align) = max_align;
|
GL(dl_tls_static_align) = max_align;
|
||||||
}
|
}
|
||||||
|
#endif /* SHARED */
|
||||||
|
|
||||||
/* 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
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
internal_function
|
internal_function
|
||||||
|
|
|
||||||
|
|
@ -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. */
|
/* Calculate offset of the TLS blocks in the static TLS block. */
|
||||||
extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden;
|
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. */
|
/* Allocate memory for static TLS block (unless MEM is nonzero) and dtv. */
|
||||||
extern void *_dl_allocate_tls (void *mem) internal_function;
|
extern void *_dl_allocate_tls (void *mem) internal_function;
|
||||||
rtld_hidden_proto (_dl_allocate_tls)
|
rtld_hidden_proto (_dl_allocate_tls)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue