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.
2001-04-21 Ulrich Drepper <drepper@redhat.com>
* elf/dl-support.c: Include cpuclock-init.h. Use CPUCLOCK_VARDEF and
CPUCLOCK_INIT if defined.
* sysdeps/generic/dl-sysdep.c: Likewise.
* sysdeps/generic/cpuclock-init.h: New file.
* sysdeps/unix/i386/i586/cpuclock-init.h: New file.
* sysdeps/unix/i386/i586/Versions: New file.
* sysdeps/unix/i386/i586/clock_settime.c: New file.
* sysdeps/unix/i386/i586/clock_gettime.c: Handle thread CPU clock
separately by calling __pthread_clock_gettime if this function is
available. Subtract offset from tsc value before computing time value.
* internals.h: Declare __pthread_max_stacksize.
* pthread.c (__pthread_max_stacksize): New variable.
(__pthread_initialize_manager): Determine __pthread_initialize_manager
value.
* manager.c (thread_segment): Return always NULL if FLOATING_STACKS.
(pthread_allocate_stack): Allow kernel to choose stack address if
FLOATING_STACKS. This also handles variable-sized stacks.
Always allocate stack and guardoage together. Use mprotect to
change guardpage access.
* sysdeps/i386/useldt.h: Define FLOATING_STACKS and
ARCH_STACK_MAX_SIZE.
* attr.c (__pthread_attr_setstacksize): Also test value against
upper limit.
2000-04-24 Ulrich Drepper <drepper@redhat.com>
* manager.c (pthread_free): Use FREE_THREAD not FREE_THREAD_SELF.
* sysdeps/i386/useldt.h: Use "q" constraint instead of "r" where
necessary.
* sysdeps/i386/i686/pt-machine.h: Include "../useldt.h".
1998-08-28 13:58 Ulrich Drepper <drepper@cygnus.com>
* internals.h: Also define THREAD_GETMEM_NC and THREAD_SETMEM_NC to
access thread data with non-constant offsets.
* specific.c: Use THREAD_GETMEM_NC and THREAD_SETMEM_NC where
necessary.
* sysdeps/i386/useldt.h: Fix typo. Add THREAD_GETMEM_NC and
THREAD_SETMEM_NC definitions.
* sysdeps/sparc/sparc32/pt-machine.h: Define THREAD_GETMEM_NC and
THREAD_SETMEM_NC.
* sysdeps/sparc/sparc64/pt-machine.h: Likewise.
1998-08-27 19:42 Ulrich Drepper <drepper@cygnus.com>
* elf/Makefile (distribute): Add dl-origin.h.
* sysdeps/generic/dl-origin.h: New file.
* sysdeps/unix/sysv/linux/dl-origin.h: New file.
* elf/link.h (struct link_map): Add l_origin field.
* elf/dl-load.c (expand_dynamic_string_token): New function.
(decompose_path): Remove WHERE argument, take link map pointer instead.
Call expand_dynamic_string_token instead of local_strdup to make copy
of rpath.
(_dl_init_paths): Call decompose_path with correct argument.
(_dl_map_object_from_fd): Define static is EXTERNAL_MAP_FROM_FD is
not defined.
Check EI_OSABI and EI_ABIVERSION fields in header.
(_dl_map_object): Call decompose_path with correct argument.
Call expand_dynamic_string_token instead of local_strdup to also
expand DST.
* elf/dl-object.c (_dl_new_object): Determine l_origin for all maps
but the main one.
* elf/dl-support.c: Define _dl_origin_path.
* elf/rtld.c: Likewise. Set _dl_origin_path based on LD_ORIGIN_PATH.
* elf/dl-close (_dl_close): Free l_name and l_origin.
* sysdeps/i386/useldt.h (THREAD_GETMEM, THREAD_SETMEM): Use P
modifier in asm, not c.
* sysdeps/mach/hurd/Makefile [subdirs==elf]: Define CFLAGS-dl-load.c
to -DEXTERNAL_MAP_FROM_FD to make _dl_map_object_from_fd extern.
1998-08-26 15:46 Ulrich Drepper <drepper@cygnus.com>
* internals.h: Define THREAD_GETMEM and THREAD_SETMEM to default if
not already defined.
(struct _pthread_descr_struct): Add p_self and p_nr field.
* manager.c (__pthread_handles): Define second element to point
to manager thread.
(__pthread_handles_num): Initialize to 2.
(__pthread_manager): Use INIT_THREAD_SELF with two arguments.
(pthread_start_thread): Likewise.
(pthread_handle_create): Start search for free slot at entry 2.
Initialize new fields p_self and p_nr.
Call __clone with CLONE_PTRACE if available.
(pthread_free): Call FREE_THREAD_SELF if available.
* pthread.c (__pthread_initial_thread): Initialize new fields.
(__pthread_manager_thread): Likewise.
(__pthread_initialize_manager): Call __clone with CLONE_PTRACE.
* cancel.c: Use THREAD_GETMEM and THREAD_SETMEM to access the
elements of the thread descriptor.
* condvar.c: Likewise.
* errno.c: Likewise.
* join.c: Likewise.
* manager.c: Likewise.
* pthread.c: Likewise.
* ptlongjmp.c: Likewise.
* semaphore.c: Likewise.
* signals.c: Likewise.
* specific.c: Likewise.
* spinlock.c: Likewise.
* sysdeps/alpha/pt-machine.h (INIT_THREAD_SELF): Add extra parameter.
* sysdeps/i386/useldt.h: New file.
* sysdeps/i386/i686/pt-machine.h: Show how to use this file.
* sysdeps/sparc/sparc32/pt-machine.h: Define THREAD_GETMEM and
THREAD_SETMEM using __thread_self.
* sysdeps/sparc/sparc64/pt-machine.h: Likewise.