we always define the padding space.
[!TLS_DTV_AT_TP]: Give tcbhead_t field a name, `header', since GCC
stopped supporting its own extensions fully.
[TLS_MULTIPLE_THREADS_IN_TCB]: Put `multiple_threads' inside a wrapper
struct also called `header', so `header.multiple_threads' is the field
name to use on all machines.
* allocatestack.c (allocate_stack): Use `header.' prefix.
* sysdeps/pthread/createthread.c (create_thread): Likewise.
* pthread_create.c (__pthread_create_2_1): Likewise.
* sysdeps/i386/tls.h (INSTALL_NEW_DTV, THREAD_DTV): Likewise.
(THREAD_SELF): Likewise.
* sysdeps/x86_64/tls.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
(SINGLE_THREAD_P): Likewise.
* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
(SINGLE_THREAD_P): Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
(SINGLE_THREAD_P): Likewise.
* sysdeps/s390/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Use REGS[18]
value directly.
2003-03-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN,
ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3,
ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define.
(INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments
clobbered by the syscall.
(ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5,
ASM_ARGS_6): Change constraints from r to index of corresponding
output register.
* sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap
ptid and ctid to match kernel.
* sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise.
* sysdeps/powerpc/powerpc64/elf/configure.in: Remove
* sysdeps/powerpc/powerpc64/elf/configure: Regenerated.
* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: New file.
* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: New file.
* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: New file.
2003-03-11 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
(__condvar_cleanup): Wake up all waiters in case we got signaled
after being woken up but before disabling asynchronous
cancellation.
* sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
(__condvar_cleanup): Likewise.
* init.c (__NR_set_tid_address): If already defined, don't redefine.
Make it an error if architecture has no #if case. Add x86-64.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Add flags for
pt-initfini.s generation.
* sysdeps/x86_64/tls.h: Include <asm/prctl.h>.
(TLS_INIT_TP): Fix typo.
2003-03-11 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define
to __NR_pread if not defined.
(__NR_pwrite64): Define to __NR_pwrite if not defined.
allocate space even for the trailing '/'.
Reported by John Reiser <jreiser@BitWagon.com>.
* sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6,
ASM_CLOBBERS_6): Define.
(ASM_CLOBBERS_5): Use ASM_CLOBBERS_6.
* sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments
to match IA-32 order.
* sysdeps/unix/sysv/linux/i386/clone.S: Fix comment.
* sysdeps/unix/sysv/linux/x86_64/sem_post.S: New file.
* sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: New file.
* sysdeps/unix/sysv/linux/x86_64/sem_wait.S: New file.
* sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Fix error value in
unused code.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
(__lll_mutex_lock_wait): Reverse order of first two parameters.
(__lll_mutex_timedlock_wait): Likewise.
(lll_mutex_lock): Adjust asm for that.
(lll_mutex_timedlock): Likewise. Mark cx, cc, r10 as clobbered.
(lll_lock): Adjust asm for operand order change.
* sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: New file.
* sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: New file.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_lock_wait):
Reverse order of parameters.
(__lll_timedwait_tid): Remove regparms attribute.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: New file.
* sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: New file.
* sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define
__lll_mutex_timedlock_wait only for NOT_IN_libc.
* sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include
lowlevelmutex.S.
* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only
for NOT_IN_libc.
* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include
lowlevellock.S.
* sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Don't define
LOCK is already defined. Don't define __lll_mutex_timedlock_wait
for libc.so.
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Only
define LOCK here (if UP is not defined). The actual code is in
lowlevelmutex.S.
* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Don't define
LOCK is already defined. Don't define lll_unlock_wake_cb and
__lll_timedwait_tid for libc.so.
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Only
define LOCK here (if UP is not defined). The actual code is in
lowlevellock.S.
assembler command.
* sysdeps/unix/Makefile (compile-syscall): New variable.
Pass -g0 to compiler for assembling syscall stubs from stdin.
* sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO]
(STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END):
Define these to do nothing.
* configure.in: New check for -g on .S files.
* configure: Regenerated.
* config.make.in (have-cpp-asm-debuginfo): New variable.
* config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef.
* Makeconfig (ASFLAGS): New variable, if undefined and
$(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS).
* Makerules (compile.S, COMPILE.S): Use $(ASFLAGS).
* sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix many
leftovers from the ia32 code.
* sysdeps/unix/sysv/linux/i386/pthread_once.S: Remove unneccessary
memory load.
(clear_once_control): Don't load %esi.
* sysdeps/x86_64/tls.h: Remove all traces of segment descriptor
handling.
* sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
* sysdeps/i386/i486/bits/atomic.h: Fix a few unused definitions.
* sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove all trace of
lll_wake_tid. This was used only to work around kernel limits in
the early days.
* sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Likewise.
* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
* pthread_attr_setstack.c: Moved to...
* sysdeps/pthread/pthread_attr_setstack.c: ...here. New file.
* pthread_attr_setstackaddr.c: Moved to...
* sysdeps/pthread/pthread_attr_setstackaddr.c: ...here. New file.
* pthread_create.c: Define __pthread_keys using nocommon
attribute, not by placing it explicitly in bss.
Remove DEFINE_DEALLOC definition. Not needed anymore.
* allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
Use it in mmap call to allocate stacks.
* sysdeps/pthread/createthread.c (create_thread): Fix comment.
2003-03-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC.
* sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only
if not already defined. Use SYSDEP_GETRES to allow other files to
provide alternative implementations.
* sysdeps/unix/sysv/linux/clock_getres.c: New file
* sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only
if not already defined. Use SYSDEP_GETTIME to allow other files to
provide alternative implementations.
* sysdeps/unix/sysv/linux/clock_gettime.c: New file.
* sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only
if not already defined. Use SYSDEP_GETTIME to allow other files to
provide alternative implementations.
* sysdeps/unix/sysv/linux/clock_settime.c: New file.
* sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow
other files to provide alternative implementations. Rearrange
tests for invalid parameters.
* sysdeps/unix/sysv/linux/clock_nanosleep.c: New file.
* sysdeps/unix/sysv/linux/sysconf.c: New file.
* sysdeps/unix/sysv/linux/kernel-features.h: Define
__ASSUME_POSIX_TIMERS for Linux 2.4.63 and up.
* sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
_POSIX_MONOTONIC_CLOCK.
* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remnove
_POSIX_THREAD_PRIORITY_SCHEDULING.
* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remove
_XOPEN_REALTIME_THREADS.
* sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
* sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): The
kernel returns EINVAL for PID <= 0, work around it.
* tst-cancel7.c (do_test): Make sure the pid file exists before
canceling the thread.
* libc-cancellation.c (__libc_enable_asynccancel): Rewrite to avoid
2003-02-16 Ulrich Drepper <drepper@redhat.com>
* libc-cancellation.c (__libc_enable_asynccancel): Rwrite to avoid
going into an endless loop.
* Makefile (tests): Add tst-cancel9.
* tst-cancel9.c: New file.
* pthread_cancel.c (pthread_cancel): Use the result of __pthread_kill.
* pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
and __deallocate_stack with internal_function.
* pthread_create.c: Adjust definitions appropriately.
* allocatestack.c: Likewise.
* pthread_join.c: Add one more __builtin_expect.
* pthread_timedjoin.c: Likewise.
* pthread_getspecific.c (__pthread_getspecific): Clear data->data
not data of sequence number does not match.
Add one __builtin_expect.
2003-02-15 Ulrich Drepper <drepper@redhat.com>
* pthread_setconcurrency.c (pthread_setconcurrency): Fail for
negative arguments.
* Makefile (tests): Add tst-basic5.
* tst-basic5.c: New file.
after thread is done. If then zero, call exit(0).
2003-02-14 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/libc-start.c [HAVE_PTR_NTHREADS]: Decrement thread
counter and only call __exit_thread if this is not the last thread.
* descr.h: Define CANCELING_BIT and CANCELING_BITMASK. Introduce
after CANCELTYPE_BIT, move the other bits up. Update CANCEL_RESTMASK.
* init.c (sigcancel_handler): Also set CANCELING_BITMASK bit in newval.
* pthread_cancel.c (pthread_cancel): Likewise. Also set CANCELING_BIT
if asynchronous canceling is enabled.
* pthread_join.c (pthread_join): When recognizing circular joins,
take into account the other thread might be already canceled.
* Makefile (tests): Add tst-join5.
* tst-join5.c: New file.
* tst-cond7.c (do_test): Unlock the mutex before canceling the thread.
* sysdeps/pthread/pthread.h: Add missing initializers. Protect
non-standard initializers with __USE_GNU.
* Makefile: Add rules to build and run tst-atfork2 test.
* tst-atfork2.c: New file.
* tst-atfork2mod.c: New file.
* sysdeps/unix/sysv/linux/unregister-atfork.c
(__unregister_atfork): Free the memory allocated for the handlers
after removing them from the lists.
* sysdeps/unix/sysv/linux/register-atfork.c: Define memeory
cleanup function.
* tst-atfork1.c (do_test): Wait for the child we forked.
Report error in child.
* sysdeps/unix/sysv/linux/fork.c (__libc_fork): Fix comment.
* sysdeps/generic/bits/confname.h: Define _CS_GNU_LIBC_VERSION and
_CS_GNU_LIBPTHREAD_VERSION.
* posix/conststr.c: Handle these new values.
* posix/getconf.c: Likewise.
* io/ftw.c (ftw_startup): When using FTW_CHDIR, always remember
2003-02-08 kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/sh/Makefile: New file.
* sysdeps/sh/bits/atomic.h: New file.
* sysdeps/sh/pthread_spin_init.c: New file.
* sysdeps/sh/pthread_spin_lock.c: New file.
* sysdeps/sh/pthread_spin_trylock.S: New file.
* sysdeps/sh/pthread_spin_unlock.S: New file.
* sysdeps/sh/pthreaddef.h: New file.
* sysdeps/sh/tcb-offsets.sym: New file.
* sysdeps/sh/td_ta_map_lwp2thr.c: New file.
* sysdeps/sh/tls.h: New file.
* sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: New file.
* sysdeps/unix/sysv/linux/sh/bits/semaphore.h: New file.
* sysdeps/unix/sysv/linux/sh/createthread.c: New file.
* sysdeps/unix/sysv/linux/sh/fork.c: New file.
* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: New file.
* sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: New file.
* sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h: New file.
* sysdeps/unix/sysv/linux/sh/lowlevelcond.h: New file.
* sysdeps/unix/sysv/linux/sh/lowlevellock.S: New file.
* sysdeps/unix/sysv/linux/sh/lowlevellock.h: New file.
* sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: New file.
* sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: New file.
* sysdeps/unix/sysv/linux/sh/pt-initfini.c: New file.
* sysdeps/unix/sysv/linux/sh/pt-vfork.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_once.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: New file.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: New file.
* sysdeps/unix/sysv/linux/sh/sem_post.S: New file.
* sysdeps/unix/sysv/linux/sh/sem_timedwait.S: New file.
* sysdeps/unix/sysv/linux/sh/sem_trywait.S: New file.
* sysdeps/unix/sysv/linux/sh/sem_wait.S: New file.
* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: New file.
2003-02-08 Ulrich Drepper <drepper@redhat.com>
* tst-cond2.c: Rearrange code to not rely on behavior undefined
according to POSIX.
* tst-basic2.c (do_test): Lock mutex before creating the thread.
* sysdeps/x86_64/tls.h: Remove unnecessary macros, left over from x86.
(TLS_GET_FS): New #define.
(TLS_SET_FS): New #define.
Correct value of __NR_set_thread_area.
2003-02-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/bits/libc-lock.h (__libc_once): Set control
variable for non-libpthread case to the same value the
pthread_once function would use.
* atomic.h (atomic_compare_and_exchange_acq): Use
__arch_compare_and_exchange_32_acq in return value definition. It
always exists.
(atomic_bit_set): Renamed from atomic_set_bit.
2003-02-03 Ulrich Drepper <drepper@redhat.com>
* allocatestack.c (allocate_stack): Implement coloring of the
allocated stack memory. Rename pagesize to pagesize_m1. It's the
size minus one. Adjust users.
* sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Removed
* sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Removed
* sysdeps/unix/sysv/linux/i386/i586/lowlevelsem.S: Removed
* sysdeps/unix/sysv/linux/i386/i586/lowlevelcond.S: Removed
* sysdeps/unix/sysv/linux/i386/i686/lowlevelsem.S: Removed
* sysdeps/unix/sysv/linux/i386/i686/lowlevelcond.S: Removed
* sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/sem_post.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: New file.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/sem_wait.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/sem_post.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/sem_wait.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/sem_post.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S: New file.
* sysdeps/unix/sysv/linux/i386/lowlevelcond.h: New file.
2003-01-16 Jakub Jelinek <jakub@redhat.com>
* elf/dl-load.c (_dl_map_object_from_fd): Use
GL(dl_tls_dtv_slotinfo_list) != NULL to check whether TLS has
been already initialized.
2003-01-14 Ulrich Drepper <drepper@redhat.com>
* manual/install.texi: Correct description of header preparation for
Linux build. Patch by mhwood@Ameritech.Net [PR libc/4941].
2003-01-14 Guido Guenther <agx@sigxcpu.org>
* sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_SYSCALL,
INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO,
INTERNAL_SYSCALL_ERROR_P, INLINE_SYSCALL): Define.
2003-01-14 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
(INTERNAL_SYSCALL): Make use of ERR parameter.
(INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO,
INTERNAL_SYSCALL_ERROR_P): Adjust accordingly.
(INLINE_SYSCALL): Make use of INTERNAL_SYSCALL.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file.
Patch by Denis Zaitsev <zzz@cd-club.ru>.
that %eax is modified. Reported by Denis Zaitsev <zzz@cd-club.ru>.
2003-01-06 Philip Blundell <philb@gnu.org>
* sysdeps/unix/arm/sysdep.S (syscall_error): Optimise a little.
[__LIBC_REENTRANT]: Unify PIC and non-PIC cases.
* sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO): Remove .type
directive.
(PSEUDO_RET): Use SYSCALL_ERROR in place of __syscall_error.
(SYSCALL_ERROR): New.
(SYSCALL_ERROR_HANDLER) [NOT_IN_libc]: Provide local copy of error
handling code.
(INTERNAL_SYSCALL): Define.
(INLINE_SYSCALL): Use it.
(INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Define.
* sysdeps/unix/sysv/linux/arm/socket.S (__socket): Use
SYSCALL_ERROR in place of __syscall_error.
2003-01-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/ia64/bits/byteswap.h [__GNUC__ >= 2] (__bswap_16,
__bswap_32, __bswap_64): Put x into temporary variable
to avoid warnings.
[!__GNUC__] (__bswap_16, __bswap_32, __bswap_64): Change into static
(inline) functions.
* sysdeps/s390/bits/byteswap.h [__GNUC__ >= 2] (__bswap_16,
__bswap_32, __bswap_64): Put x into temporary variable
to avoid warnings.
[!__GNUC__] (__bswap_16, __bswap_32, __bswap_64): Change into static
(inline) functions.
* sysdeps/i386/bits/byteswap.h [!__GNUC__] (__bswap_16, __bswap_32):
Likewise.
2003-01-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/alpha/adjtime.c (ntp_adjtime): New weak
alias.
2003-01-05 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/clone.S (__clone): Use
SYSCALL_ERROR_HANDLER.
* sysdeps/unix/sysv/linux/sh/pipe.S (__libc_pipe): Likewise.
* sysdeps/unix/sysv/linux/sh/socket.S (__socket): Likewise.
Add support for cancellation handling.
* sysdeps/unix/sysv/linux/sh/syscall.S (__syscall): Use
SYSCALL_ERROR_HANDLER.
* sysdeps/unix/sysv/linux/sh/vfork.S (__vfork): Likewise.
* sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO): Likewise.
Add support for cancellation handling.
(SYSCALL_ERROR_HANDLER): Define PIC variants.
* old_pthread_cond_broadcast.c: Optimize initialization a bit to work
around gcc defficiencies.
* old_pthread_cond_signal.c: Likewise.
* old_pthread_cond_timedwait.c: Likewise.
* old_pthread_cond_wait.c: Likewise.
* pthreadP.h (pthread_cond_2_0_t): New type.
(struct pthread_functions): Use new type for 2.0 condvar callbacks.
Use new type for the 2.0 condvar function prototypes.
* forward.c: Use pthread_cond_2_0_t for 2.0 condvar functions.
* old_pthread_cond_init.c: Use pthread_cond_2_0_t for condvar
parameter.
* old_pthread_cond_destroy.c: Likewise.
* old_pthread_cond_broadcast.c: Likewise. Lock appropriately.
* old_pthread_cond_signal.c: Likewise.
* old_pthread_cond_timedwait.c: Likewise.
* old_pthread_cond_wait.c: Likewise.
2003-01-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/bits/pthreadtypes.h (pthread_cond_t): Add padding.
* condvar.c: Add symbol versioning. The compatibility versions
are the same as the change in the interface does not effect this
implementation.
* Versions [libpthread]: Add definitions for new pthread_cond_*
interfaces for version GLIBC_2.3.2.
2002-12-30 Ulrich Drepper <drepper@redhat.com>
* init.c (__pthread_initialize_minimal_internal): Don't mark as
constructor.
2002-12-31 Jakub Jelinek <jakub@redhat.com>
* Makefile ($(inst_libdir)/libpthread.so): Depend on
$(common-objpfx)format.lds, include that into the output script.
Fix comment.
(extra-B-pthread.so): Change linuxthreads/ into nptl/.
* io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat.
2002-12-30 Jakub Jelinek <jakub@redhat.com>
* forward.c: Make all functions available by default again. It
caused too much trouble.
* internals.h (struct pthread_functions): Rename ptr_pthread_exit
and ptr_pthread_attr_init_2_* to ptr___pthread_exit and
ptr___pthread_attr_init_2_*.
* pthread.c (pthread_functions): Adjust.
2002-12-27 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep.h (I386_USE_SYSENTER):
Only define if USE_DL_SYSINFO is defined.
2002-12-22 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.h (INLINE_SYSCALL,
INTERNAL_SYSCALL, INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERROR):
Define. Patch by Richard Henderson and Jes Sorensen.
(PSEUDO): Remove unnecessary ;;.
* elf/rtld.c (dl_main): Initialize TLS even if no PT_TLS segments
are found unless TLS_INIT_TP_EXPENSIVE. Use NONTLS_INIT_TP.
* sysdeps/generic/libc-tls.c (__libc_setup_tls): Use NONTLS_INIT_TP
if not initializing thread pointer.
[!USE_TLS && NONTLS_INIT_TP] (__pthread_initialize_minimal): New.
* sysdeps/generic/libc-start.c (__pthread_initialize_minimal): Don't
make it weak also if NONTLS_INIT_TP.
* sysdeps/unix/common/pause.c: Handle cancellation.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h [DONT_LOAD_G1]
(LOADSYSCALL): Remove.
(SYSCALL_ERROR_HANDLER_ENTRY): Define.
(SYSCALL_ERROR_HANDLER): Use it.
(PSEUDO): Don't jump around error handler.
* sysdeps/unix/sysv/linux/sparc/sparc32/pipe.S (__libc_pipe): Don't
jump around error handler.
* sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S (syscall): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Branch
to __syscall_error_handler on failure.
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h [DONT_LOAD_G1]
(LOADSYSCALL): Remove.
(SYSCALL_ERROR_HANDLER_ENTRY): Define.
(SYSCALL_ERROR_HANDLER): Use it.
(PSEUDO): Don't jump around error handler.
* sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S (__libc_pipe): Don't
jump around error handler.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S (syscall): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/socket.S (__socket): Branch
to __syscall_error_handler on failure.
2002-12-28 Ulrich Drepper <drepper@redhat.com>
* descr.h (struct pthread): Move header.data.list to the back of the
struct.
* sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct.
(MULTIPLE_THREADS_OFFSET): Adjust offset.
(SYSINFO_OFFSEET): Likewise.
2002-12-27 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO):
Define.
(DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings.
* sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO,
DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define.
(USE_DL_SYSINFO): Undef.
2002-12-22 Jakub Jelinek <jakub@redhat.com>
* Makefile (tests-reverse): Use $(objpfx)../libc.so instead of
$(common-objpfx)libc.so.
* tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that
it is bigger than pipe buffer size even on arches with bigger
page size.
(tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
2002-12-25 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Implement
correct errno access for case that USE___THREAD is not defined.
2002-12-19 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep.h: Add support to use AT_SYSINFO
information for system calls.
* sysdeps/generic/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO to 1 only
for ld.so.
* elf/rtld.c (_dl_start) [USE___THREAD]: Define initdtv.
2002-12-18 Ulrich Drepper <drepper@redhat.com>
* descr.h (struct pthread) [NEED_DL_SYSINFO]: Add sysinfo member.
* sysdeps/i386/tls.h (tcbhead_t): Add sysinfo member.
Define SYSINFO_OFFSEET if NEED_DL_SYSINFO is defined.
(INIT_SYSINFO): New #define.
(TLS_TP_INIT): Use INIT_SYSINFO.
* sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
At test to make sure SYSINFO_OFFSET value is correct.
* sysdeps/unix/sysv/linux/i386/dl-sysdep.h: New file.
2002-12-17 Jakub Jelinek <jakub@redhat.com>
* malloc/thread-m.h (mutex_init, mutex_lock, mutex_trylock,
mutex_unlock): If not building NPTL, use __libc_maybe_call2 if
available, otherwise __libc_maybe_call.
* sysdeps/unix/sysv/linux/x86_64/recv.c: Add support for
cancellation handling.
* sysdeps/unix/sysv/linux/x86_64/send.c: Likewise.
2002-12-16 Ulrich Drepper <drepper@redhat.com>
* stdio-common/Makefile (routines): Remove lockfile. Add
flockfile, ftrylockfile, and funlockfile.
* sysdeps/generic/lockfile.c: Removed. Each function has its own file.
* sysdeps/generic/flockfile.c: New file.
* sysdeps/generic/ftrylockfile.c: New file.
* sysdeps/generic/funlockfile.c: New file.
* init.c (__pthread_initialize_minimal_internal): Renamed from
__pthread_initialize_minimal. Make old name an alias. This
converts a normal relocation into a relative relocation.
2002-12-15 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/fcntl.c (do_fcntl): This is the
original __libc_fcntl code. Just renamed.
* sysdeps/unix/sysv/linux/m68k/clone.S: Make inline syscall to _exit.
2002-12-14 Olaf Hering <olh@suse.de>
* sysdeps/powerpc/bits/setjmp.h: Include <bits/wordsize.h>.
* sysdeps/powerpc/powerpc64/setjmp.S: Fix typo in r18 load.
2002-12-13 Ulrich Drepper <drepper@redhat.com>
* misc/syslog.c (log_cleanup): Don't use parameter in
__libc_lock_unlock call, use syslog_lock directly. Adjust callers to
pass NULL instead of a pointer to syslog_lock.
* sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
Remember function and argument even if cancellation handler
function is not available.
(__libc_cleanup_region_end): Execute registered function directly if
pthread functions are not available.
(__libc_cleanup_end): Likewise.
2002-12-11 Ulrich Drepper <drepper@redhat.com>
* init.c (__pthread_initialize_minimal): Fix initialization in
static lib by preventing gcc from being too clever.
* malloc/hooks.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))]
(malloc_starter, memalign_starter, free_starter): Don't define these.
* malloc/malloc.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))]:
Don't declare them either.
* malloc/arena.c (ptmalloc_init) [_LIBC && USE_TLS]: Don't call
__pthread_initialize, so no need to set hooks to *_starter.
(ptmalloc_init_minimal): New function, broken out of ptmalloc_init.
[_LIBC && SHARED && USE_TLS && !USE___THREAD]
(__libc_malloc_pthread_startup): New function.
* malloc/Versions (libc: GLIBC_PRIVATE): New set, add that function.
* malloc/hooks.c (memalign_starter): New function.
* malloc/malloc.c: Declare it.
* malloc/arena.c (save_memalign_hook): New variable.
(ptmalloc_init): Set __memalign_hook to memalign_starter.
* elf/dl-minimal.c (free): Clear the memory.
(calloc): Just call malloc, knowing all memory it returns is cleared.
* sysdeps/generic/dl-tls.c (allocate_dtv): Use calloc instead of
malloc and memset; calloc can avoid the zeroing when redundant.
(_dl_tls_setup): Likewise.
* elf/dl-load.c (decompose_rpath): Likewise.
* sysdeps/generic/libc-tls.c (__libc_setup_tls): Comment out memset
call, since memory from sbrk at startup is already zero.
* elf/rtld.c (_dl_start, dl_main): TLS_INIT_TP macro now returns an
error string for failure, null for success. Update callers.
* sysdeps/generic/libc-tls.c (__libc_setup_tls): Likewise.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
2002-12-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
lowlevellock.
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: New file.
* sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: New file.
* sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: New file.
* sysdeps/pthread/bits/libc-lock.h: Use lowlevellock implementation
for __libc_lock_* macros.
* Makefile (routines): Add libc-lowlevellock.
2002-10-09 Roland McGrath <roland@redhat.com>
* sysdeps/pthread/bits/libc-lock.h (__libc_maybe_call): New macro.
Under [__PIC__], call the function via the pointer fetched for
comparison rather than a call by name that uses the PLT.
(__libc_lock_init, __libc_rwlock_init, __libc_lock_fini)
(__libc_rwlock_fini, __libc_lock_lock, __libc_rwlock_rdlock)
(__libc_rwlock_wrlock, __libc_lock_trylock, __libc_rwlock_tryrdlock)
(__libc_rwlock_trywrlock, __libc_lock_unlock, __libc_rwlock_unlock)
(__libc_key_create, __libc_getspecific, __libc_setspecific): Use it.
* sysdeps/i386/td_ta_map_lwp2thr.c: Moved from ../nptl_db.
* sysdeps/generic/td_ta_map_lwp2thr.c: New file.
* pthread_create.c (start_thread): Add missing & on __nptl_last_event.