Commit Graph

23 Commits

Author SHA1 Message Date
Ulrich Drepper
58d2d09bde Update.
* sysdeps/generic/dl-tls.c (allocate_dtv): Optimize a bit.
2002-08-20 08:12:32 +00:00
Ulrich Drepper
9a1eb38e4e Update.
2002-08-20  Ulrich Drepper  <drepper@redhat.com>

	* elf/Versions [ld] (GLIBC_PRIVATE): Add _dl_get_tls_static_info.
	* sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Move dtv
	memory allocation to...
	(allocate_dtv): ...here.  New function.
	(_dl_allocate_tls): Change to take parameter.  If parameter is non-NULL
	call allocate_dtv instead of _dl_allocate_tls_storage.
	(_dl_deallocate_tls): New parameter.  Deallocate TCB only if true.
	(_dl_get_tls_static_info): New function.
	* sysdeps/generic/ldsodefs.h: Adjust prototypes of _dl_allocate_tls
	and _dl_deallocate_tls.  Add prototype for _dl_get_tls_static_info.
2002-08-20 07:22:11 +00:00
Ulrich Drepper
b68364367b Update.
2002-08-19  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Return
	immediately if result == NULL.

	* locale/loadarchive.c (_nl_load_locale_from_archive): Braino fix
2002-08-20 00:23:31 +00:00
Roland McGrath
f7c1f4dd1c * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Fix inner loop
start count condition, use TOTAL instead of variable that was never
	set.  Fix outer loop termination condition to TOTAL >= after update.

	* sysdeps/generic/libc-tls.c (__libc_setup_tls): Initialize
	dl_tls_static_align and dl_tls_static_nelem.
2002-08-12 08:48:51 +00:00
Ulrich Drepper
84bdcade74 (_dl_allocate_tls_init): Store dtv pointer at correct index. Clear BSS region now that memalign is used. 2002-08-06 00:51:51 +00:00
Roland McGrath
08da062122 2002-08-05 Roland McGrath <roland@redhat.com>
* sysdeps/generic/ldsodefs.h (struct rtld_global): Replace member
	`bool _dl_initial_dtv_malloced' with `void *_dl_initial_dtv'.
	* elf/rtld.c (dl_main): Set it to the new dtv for the main thread.
	* sysdeps/generic/dl-tls.c (__tls_get_addr): When reallocating the
	dtv, check if it matches _dl_initial_dtv; if so, malloc and copy the
	old data, abandoning the original memory allocated by rtld at startup,
	instead of calling realloc normally.
2002-08-05 18:56:03 +00:00
Roland McGrath
a4dda453b8 * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Allocate the
TCB with __libc_memalign instead of mmap.
	(_dl_deallocate_tls): Free it with free instad of munmap.
2002-08-05 01:28:17 +00:00
Roland McGrath
581dc54b74 2002-08-04 Roland McGrath <roland@redhat.com>
* sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): New function,
	split out of _dl_allocate_tls.
	(_dl_allocate_tls_init): Likewise.
	(_dl_allocate_tls): Call those.
	* sysdeps/generic/ldsodefs.h: Declare them with attribute_hidden.
	* elf/rtld.c (dl_main): Call them separately instead of calling
	_dl_allocate_tls.  Delay _dl_allocate_tls_init until after relocation
	is finished, so that the initializer data has been relocated before we
	copy it into the main thread's TLS block.
	* sysdeps/generic/dl-tls.c (_dl_allocate_tls): Fix off-by-one error in
	loop conditions, prevented the last used module from being initialized.
2002-08-05 01:20:52 +00:00
Ulrich Drepper
8a30f00fe8 Update.
2002-07-23  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/libc-tls.c: New file.
	* csu/Makefile (routines): Add libc-tls.
	(static-only-routines): Add libc-tls.
	* elf/dl-support.c (_dl_phdr): New variable.
	(_dl_phnum): New variable.
	(_dl_aux_init): Initialize _dl_phdr and _dl_phnum from aux vector.
	* sysdeps/generic/libc-start.c (__libc_start_main): Reorganize code
	for !SHARED.  First look through auxiliary vector.  If TLS always
	call __pthread_initialize_minimal.

	* sysdeps/generic/dl-tls.c (_dl_allocate_tls): Make sure size argument
	in mmap call is never zero.
2002-07-23 23:12:01 +00:00
Ulrich Drepper
38a7d8baf4 Update.
2002-05-02  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/ia64/Makefile: Add ia64libgcc in csu subdir.
	* sysdeps/ia64/Versions (__divtf3, __divdf3, __divsf3, __divdi3,
	__moddi3, __udivdi3, __umoddi3, __multi3): Export at GLIBC_2.0.
	* sysdeps/ia64/ia64libgcc.S: New file.

2002-05-02  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/dl-tls.c (oom): Implement using _dl_fatal_printf.

	* malloc/memusage.c: Distinguish anonymous mmap.
2002-05-03 07:39:22 +00:00
Ulrich Drepper
3632a26020 Update.
2002-04-08  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* elf/elf.h: Define R_SH_TLS_xxx macros.
	* elf/rtld.c: Remove an extra parenthesis.
	* elf/tls-macros.h: Define SH version TLS_LE, TLS_IE, TLS_LD and
	TLS_GD macros.
	* sysdeps/generic/dl-tls.c: Add a missing semi-colon.
	* sysdeps/sh/dl-lookupcfg.h: New file.
	* sysdeps/sh/dl-tls.h: New file.
	* sysdeps/sh/dl-machine.h (elf_machine_type_class): Set
	ELF_RTYPE_CLASS_PLT also for the three TLS relocations.
	(elf_machine_rela): Handle R_SH_TLS_DTPMOD32, R_SH_TLS_DTPOFF32 and
	R_SH_TLS_TPOFF32 relocations.
2002-04-08 21:05:48 +00:00
Ulrich Drepper
e413826144 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.
2002-02-23 07:59:56 +00:00
Ulrich Drepper
fc093be160 Update.
* elf/dl-close.c (remove_slotinfo): New function.  Handles everything
	for removing reference of module in slotinfo list.
	(_dl_close): Use remove_slotinfo.
	* sysdeps/generic/dl-tls.c: General pretty printing.
	(oom): Define only if SHARED.
	(_dl_next_tls_modid): Correct starting point for the case we assume
	there is a gap.  Add missing instruction grouping (doh!).  Correct
	tests for reaching maximum index.
	* elf/Makefile: Add rules to build and run tst-tls7.
	* elf/tst-tls7.c: New file.
	* elf/tst-tlsmod3.c: New file.

	* elf/tst-tlsmod1.c: Move #include "tls-macros.h" instead #ifdef
	USE_TLS.
	* elf/tst-tlsmod2.c: Likewise.
2002-02-14 07:57:19 +00:00
Ulrich Drepper
aed283dd45 Update.
2002-02-12  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/dl-tls.c (TLS_DTV_UNALLOCATED): Renamed from
	TLS_DTV_UNALLOCATE.
	(oom): New function.
	(_dl_next_tls_modid): Rewrite to handle dl_tls_dtv_slotinfo_list.
	(_dl_determine_tlsoffset): Likewise.
	(_dl_allocate_tls): Likewise.
	(__TLS_GET_ADDR): Define if not already defined.
	(_dl_tls_symaddr): New function.
	(allocate_and_init): New function.
	(__tls_get_addr): Actually implement handling of generation counter
	and deferred allocation.
	* sysdeps/generic/ldsodefs.h (_rtld_global): Remove _dl_initimage_list,
	add _dl_tls_dtv_slotinfo_list, _dl_tls_static_nelem, and
	_dl_tls_generation.
	Define TLS_SLOTINFO_SURPLUS and DTV_SURPLUS.
	Declare _dl_tls_symaddr.
	* sysdeps/i386/dl-tls.h: Disable __tls_get_addr handling unless
	SHARED.
	* include/link.h (struct link_map):  Remove l_tls_nextimage and
	l_tls_previmage.
	* elf/dl-sym.c (_dl_sym): After successful lookup call _dl_tls_symaddr
	instead of DL_SYMBOL_ADDRESS for STT_TLS symbols.
	(_dl_vsym): Likewise.
	* elf/rtld.c (_dl_start_final): Adjust initdtv initialization for new
	layout.
	(dl_main): Allow PT_TLS be present for empty segment.  Remove
	nextimage list handling.  Instead add all modules using TLS to
	dl_tls_dtv_slotinfo_list.
	* elf/dl-open.c (dl_open_worker): After successfully loading all
	objects add those with TLS to the dl_tls_dtv_slotinfo_list list.
	* elf/dl-load.c (_dl_map_object_from_fd): If PT_TLS entry is for an
	empty segment don't do anything.  Remove handling of initimage list.
	* elf/Versions [ld] (GLIBC_2.0): Add __libc_memalign.
	(GLIBC_PRIVATE): Add _dl_tls_symaddr.
	* elf/dl-minimal.c: Define __libc_memalign.
	* elf/dl-support.c: Remove _dl_initimage_list.  Add
	_dl_tls_dtv_slotinfo_list, _dl_tls_static_nelem, and
	_dl_tls_generation.
	* include/stdlib.h: Declare __libc_memalign.

	* elf/Makefile: Add rules to build and run tst-tls4 and tst-tls5.
	* elf/tst-tls4.c: New file.
	* elf/tst-tls5.c: New file.
	* elf/tst-tlsmod2.c: New file.

	* elf/tls-macros.h: asms using ___tls_get_addr destroy %ecx and %edx.

	* elf/tst-tlsmod1.c: Don't define variables unles USE_TLS.

	* elf/tst-tls1.c: Use test-skeleton.c.
	* elf/tst-tls2.c: Likewise.
	* elf/tst-tls3.c: Likewise.

	* elf/dl-conflict.c (RESOLVE_MAP): Return NULL not 0.

	* sysdeps/mips/machine-gmon.h: Update MCOUNT for current GCC behavior.
2002-02-13 08:03:56 +00:00
Ulrich Drepper
a330abe2cd Update.
* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): More changes
	required by passing pointer to last element of the list.

	* elf/dl-load.c (_dl_map_object_from_fd): Move adjustment of
	l_tls_initimage to a place where it actually is performed.

	* elf/tls-macros.h: ...here.  New file.
2002-02-11 00:57:37 +00:00
Ulrich Drepper
b123d06e21 Update.
* elf/Makefile (tests): Add tst-tls1.
	* elf/tst-tls1.c: New file.

	* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Don't handle
	alignment of TCB for now.

	* elf/rtld.c (dl_main): Use p_vaddr as address of TLS
	initialization image for the application itself.

	loop to initialize TLS block.
2002-02-10 07:44:36 +00:00
Ulrich Drepper
3065b0c799 Update.
2002-02-09  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/dl-tls.c (_dl_allocate_tls): Correctly terminate
	loop to initial TLS block.

	* csu/version.c (banner): If TLS support is available say so.
2002-02-09 19:02:31 +00:00
Ulrich Drepper
a52d15621f Update.
2002-02-08  Ulrich Drepper  <drepper@redhat.com>

	* elf/rtld.c (_dl_start_final): Install DTV explicitly.
	(dl_main): Move dtv/static TLS handling before relocation.
	Unconditionally call _dl_tlsoffset.  Call _dl_allocate_tls and
	TLS_INIT_TP to allocate and install the dtv/static TLS block.
	* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): If no object
	so far uses TLS initialize GL(dl_tls_static_size) and
	GL(dl_tls_static_align) to account for the TCB.
	(_dl_allocate_tls): New function.
	* sysdeps/generic/ldsodefs.h (rtld_global): Add
	_dl_initial_dtv_malloced.

	* configure.in: Test for __builtin_memset more realistically.

	* csu/version.c (banner): If TLS support available say so.
2002-02-09 01:41:44 +00:00
Ulrich Drepper
d555194cb3 Update.
2002-02-07  Andreas Schwab  <schwab@suse.de>

	* configure.in: Fix check for -zcombreloc.

2002-02-06  H.J. Lu  <hjl@gnu.org>

	* config.h.in (HAVE_BUILTIN_MEMSET): New.
	* configure.in: Check if __builtin_memset really works.
	* elf/rtld.c (_dl_start): Check HAVE_BUILTIN_MEMSET instead of
	__GNUC_PREREQ (2, 96) before using __builtin_memset.

2002-02-06  Jakub Jelinek  <jakub@redhat.com>

	* io/bug-ftw3.c (main): Don't try the test if root.

2002-02-06  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/brk.c (__brk): Correct inline assembly
	constraints.
	* sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h (RLIMIT_LOCKS):
	Add RLIMIT_LOCKS and adjust RLIMIT_NLIMITS.
	* sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h (RLIMIT_LOCKS):
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/clone.S (clone): Make clone
	a weak alias for __clone.
	* sysdeps/unix/sysv/linux/s390/s390-64/clone.S (clone): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h: Fix typo.
	* sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Add framestate.
	* sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file.
	* sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap64): Make __mmap
	a weak alias for __mmap64.

	* sysdeps/mips/atomicity.h (exchange_and_add): Not use branch likely.
	* sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise.
	* sysdeps/generic/dl-tls.c: Don't read TLS header if TLS is not needed.
2002-02-07 17:54:45 +00:00
Ulrich Drepper
d4468ab788 Don't read TLS header if TLS is not needed. 2002-02-07 17:29:14 +00:00
Ulrich Drepper
cd30b01ee9 Update.
2002-02-07  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Account for
	alignment of the TCB and store total size and alignment of static
	TLS block in _dl_tls_static_size and _dl_tls_static_align.
	tls_index is a typedef.
	* sysdeps/generic/ldsodefs.h: Declare _dl_tls_static_size and
	_dl_tls_static_align.
	* sysdeps/i386/dl-tls.h: tls_index is a typedef.
	* elf/dl-support.c: Define _dl_tls_static_size and
	_dl_tls_static_align.
2002-02-07 08:44:37 +00:00
Ulrich Drepper
8d4b5a8a50 Update.
2002-02-06  Ulrich Drepper  <drepper@redhat.com>

	* configure.in: Add --without-tls option.
	* sysdeps/i386/elf/configure.in: Don't check for TLS support if
	--without-tls is given.

	* sysdeps/generic/dl-tls.c: Include <tls.h>.

	* sysdeps/i386/dl-tls.h: Don't define anything if !USE_TLS.
2002-02-07 06:38:57 +00:00
Ulrich Drepper
3fb558781f Update.
2002-02-06  Ulrich Drepper  <drepper@redhat.com>

	* Versions.def [ld]: Add GLIBC_2.3.
	* elf/Versions [ld]: Add __tls_get_addr to GLIBC_2.3.
	* elf/Makefile (dl-routines): Add dl-tls.
	(distribute): Add dl-tls.h.
	* sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
	_dl_tls_module_cnt, add _dl_tls_max_dtv_idx and _dl_tls_dtv_gaps.
	Add prototypes for _dl_next_tls_modid and _dl_determine_tlsoffset.
	* elf/dl-load.c (_dl_map_object_from_fd): Store alignment requirement
	along with the other info in the link map.  Change queueing of init
	images for double linked list.  Use _dl_next_tls_modid to compute
	l_tls_modid.
	* elf/rtld.c (_dl_start_final): Store alignment requirement
	along with the other info in rtld map and executable map.
	(dl_main): Add ld.so to the init image list if necessary.  Compute
	final module ID with _dl_next_tls_modid.
	* include/link.h (struct link_map): Add l_tls_previmage and
	l_tls_align.
	* eld/dl-support.c: Define _dl_tls_max_dtv_idx and _dl_tls_dtv_gaps.
	* sysdeps/i386/elf/Versions: New file.
	* sysdeps/generic/dl-tls.c: New file.
	* sysdeps/generic/dl-tls.h: New file.
	* sysdeps/i386/dl-tls.h: New file.

	attribute((packed)) to counter stupid people misusing gcc options.
2002-02-07 04:08:19 +00:00