Update.
2002-02-22 Ulrich Drepper <drepper@redhat.com> * elf/Versions: Add _dl_allocate_tls and _dl_deallocate_tls. * elf/rtld.c (dl_main): Use _dl_allocate_tls with INTUSE. * sysdeps/generic/dl-tls.c: Add INTDEF for _dl_allocate_tls. (_dl_deallocate_tls): New function. * sysdeps/generic/ldsodefs.h: Declare _dl_allocate_tls_internal and _dl_deallocate_tls.
This commit is contained in:
parent
903b3396b8
commit
e413826144
|
@ -1,3 +1,12 @@
|
|||
2002-02-22 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* elf/Versions: Add _dl_allocate_tls and _dl_deallocate_tls.
|
||||
* elf/rtld.c (dl_main): Use _dl_allocate_tls with INTUSE.
|
||||
* sysdeps/generic/dl-tls.c: Add INTDEF for _dl_allocate_tls.
|
||||
(_dl_deallocate_tls): New function.
|
||||
* sysdeps/generic/ldsodefs.h: Declare _dl_allocate_tls_internal and
|
||||
_dl_deallocate_tls.
|
||||
|
||||
2002-02-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* libio/fileops.c (_IO_file_seekoff_mmap): Fix fseek SEEK_END.
|
||||
|
|
|
@ -49,6 +49,6 @@ ld {
|
|||
_dl_map_object; _dl_map_object_deps; _dl_out_of_memory;
|
||||
_dl_relocate_object; _dl_signal_error; _dl_start_profile; _dl_starting_up;
|
||||
_dl_unload_cache;
|
||||
_rtld_global; _dl_tls_symaddr;
|
||||
_rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1240,7 +1240,7 @@ of this helper program; chances are you did not intend to run this program.\n\
|
|||
for the thread descriptor. The memory for the TLS block will
|
||||
never be freed. It should be allocated accordingly. The dtv
|
||||
array can be changed if dynamic loading requires it. */
|
||||
tcbp = _dl_allocate_tls ();
|
||||
tcbp = INTUSE(_dl_allocate_tls) ();
|
||||
if (tcbp == NULL)
|
||||
_dl_fatal_printf ("\
|
||||
cannot allocate TLS data structures for inital thread");
|
||||
|
|
|
@ -324,6 +324,21 @@ _dl_allocate_tls (void)
|
|||
|
||||
return result;
|
||||
}
|
||||
INTDEF(_dl_allocate_tls)
|
||||
|
||||
|
||||
void
|
||||
internal_function
|
||||
_dl_deallocate_tls (void *tcb)
|
||||
{
|
||||
dtv_t *dtv = GET_DTV (tcb);
|
||||
|
||||
/* The array starts with dtv[-1]. */
|
||||
free (dtv - 1);
|
||||
|
||||
munmap (tcb, GL(dl_tls_static_size));
|
||||
}
|
||||
|
||||
|
||||
|
||||
# ifdef SHARED
|
||||
|
|
|
@ -688,6 +688,10 @@ extern void _dl_determine_tlsoffset (void) internal_function;
|
|||
|
||||
/* Allocate memory for static TLS block and dtv. */
|
||||
extern void *_dl_allocate_tls (void) internal_function;
|
||||
extern void *_dl_allocate_tls_internal (void) internal_function;
|
||||
|
||||
/* Deallocate memory allocated with _dl_allocate_tls. */
|
||||
extern void _dl_deallocate_tls (void *tcb) internal_function;
|
||||
|
||||
/* Return the symbol address given the map of the module it is in and
|
||||
the symbol record. */
|
||||
|
|
Loading…
Reference in New Issue