2003-07-04 Jakub Jelinek <jakub@redhat.com>
* sysdeps/s390/s390-32/elf/start.S: Emit position independent code
if PIC.
* sysdeps/s390/s390-64/elf/start.S: Likewise.
2003-07-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address)
into .data.rel.ro.local section if PIC to avoid DT_TEXTREL.
2003-07-07 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/kernel-features.h: Version
__ASSUME_CORRECT_SI_PID and __ASSUME_TGKILL if possible.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Adjust for
compilation with HAVE_AUX_SECURE defined.
2003-07-07 Ulrich Drepper <drepper@redhat.com>
* descr.h (struct pthread): Add pid field.
* allocatestack.c (allocate_stack): Initialize pid field in descriptor.
(__reclaim_stacks): Likewise.
* init.c (sigcancel_handler): If __ASSUME_CORRECT_SI_PID is defined
also check for PID of the signal source.
(__pthread_initialize_minimal_internal): Also initialize pid field
of initial thread's descriptor.
* pthread_cancel.c: Use tgkill instead of tkill if possible.
* sysdeps/unix/sysv/linux/fork.c: Likewise.
* sysdeps/unix/sysv/linux/pt-raise.c: Likewise.
* sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
* sysdeps/unix/sysv/linux/raise.c: Likewise.
2003-07-04 Ulrich Drepper <drepper@redhat.com>
* init.c (sigcancel_handler): Change parameters to match handler
for SA_SIGACTION. Check signal number and code to recognize
invalid invocations.
2003-07-01 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/elf/pt-initfini.c: New file.
* sysdeps/alpha/pthread_spin_lock.S: New file.
* sysdeps/alpha/pthread_spin_trylock.S: New file.
* sysdeps/alpha/pthreaddef.h: New file.
* sysdeps/alpha/td_ta_map_lwp2thr.c: New file.
* sysdeps/alpha/tls.h: New file.
* sysdeps/unix/sysv/linux/alpha/Makefile: New file.
* sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: New file.
* sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: New file.
* sysdeps/unix/sysv/linux/alpha/createthread.c: New file.
* sysdeps/unix/sysv/linux/alpha/fork.c: New file.
* sysdeps/unix/sysv/linux/alpha/lowlevellock.h: New file.
* sysdeps/unix/sysv/linux/alpha/pt-vfork.S: New file.
* sysdeps/unix/sysv/linux/alpha/pthread_once.c: New file.
* sysdeps/unix/sysv/linux/alpha/sem_post.c: New file.
* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: New file.
2003-06-30 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
Use correct cleanup handler registration. Add unwind info.
* tst-once3.c: Add cleanup handler and check it is called.
* tst-once4.c: Likewise.
* tst-oncex3.c: New file.
* tst-oncex4.c: New file.
* Makefile: Add rules to build and run tst-oncex3 and tst-oncex4.
2003-06-26 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind
definition to the front.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rename
the cleanup functions to make the names unique. Fix dwarf opcode
un unwind table.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Rename cleanup
functions to make the names unique. Fix CFA offset for two blocks.
* include/time.h: Define CLOCK_IDFIELD_SIZE.
* sysdeps/posix/clock_getres.c: Recognize thread CPU clock IDs.
* sysdeps/unix/clock_gettime.c: Likewise.
* sysdeps/unix/clock_settime.c: Likewise.
* sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Adjust for new
clock id for thread CPU clocks.
* sysdeps/pthread/aio_misc.h: Mark __aio_requests_mutex,
__aio_enqueue_request, __aio_find_req, __aio_find_req_fd,
__aio_free_request, __aio_notify, and __aio_sigqueue as hidden.
* sysdeps/pthread/aio_suspend.c (aio_suspend): Set errno to the result
of pthread_cond_wait if there was an error. Use pthread_cleanup_*
instead of __lbic_cleanup_region_*.
2003-06-19 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sem_post.c: Move to...
* sysdeps/unix/sysv/linux/sem_post.c: ...here.
* sysdeps/unix/sysv/linux/sem_post.c: Move to...
* sysdeps/unix/sysv/linux/powerpc/sem_post.c: ... here. Pass nr + 1
instead of nr to lll_futex_wake. Only set errno and return -1
if err < 0.
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_wait,
lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
return actual return value from the syscall, not 0.
compat_timer_getoverrun.
* tst-cancel4.c (tf_msgsnd): Don't always use 100 as the type,
find a random value.
(tf_msgrcv): Likewise. Also don't report msgrcv returns if
errno==EIDRM.
2003-06-17 Ulrich Drepper <drepper@redhat.com>
* tst-cancel4.c: Add tests for the socket and signal functions, pause.
Also test early cancellation before the thread reaches the cancellation
point.
* Makefile: Compile forward.c with exceptions.
* sysdeps/unix/sysv/linux/sleep.c: New file.
* Makefile: Add CFLAGS definition to compile function wrappers
duplicated from libc with exceptions.
* tst-cancel4.c: Also check cancellation handlers.
2003-06-15 Ulrich Drepper <drepper@redhat.com>
Fix cancellation point handling wrt exception based cleanup.
* io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions.
* misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c
with exceptions.
* posix/Makefile: Compile pread.c, pread64.c, pwrite.c, pwrite64.c,
sleep.c, wait.c, waitid.c, and waitpid.c with exceptions.
* rt/Makefile: Compile aio_suspend.c and clock_nanosleep.c with
exceptions.
* signal/Makefile: Compile sigpause.c, sigsuspend.c, sigtimedwait.c,
sigwait.c, and sigwaitinfo.c with exceptions.
* stdlib/Makefile: Compile system.c with exceptions.
* sysvipc/Makefile: Compile msgrcv.c and msgsnd.c with exceptions.
* termios/Makefile: Compile tcdrain.c with exceptions.
* sysdeps/generic/lockf.c: Add comment explaining the cancellation
situation.
* sysdeps/generic/pselect.c: Likewise.
* sysdeps/posix/sigpause.c: Likewise.
* sysdeps/posix/system.c: Likewise.
* sysdeps/posix/waitid.c: Likewise.
* sysdeps/unix/sysv/linux/sleep.c: Likewise.
* sysdeps/unix/sysv/linux/usleep.c: Likewise.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Major rewrite of
INTERNAL_SYSCALL to not use push inside asm statement so that
unwind info is correct around the syscall.
* sysdeps/unix/clock_nanosleep.c: Add cancellation support.
* sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise.
2003-06-09 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
(__pthread_cond_signal): Some more tweaks to handle cond_lock!=0.
2003-06-08 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Remove
hand-written CFI generation code. Since ENTRY/END also initiated
CFI frames this caused two CFI sets to be generated.
2003-06-04 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
(__pthread_cond_signal): Add some code to eventually handle
cond_lock!=0.
* Makefile (tests): Add tst-sem8 and tst-sem9.
* tst-sem8.c: New file.
* tst-sem9.c: New file.
* sem_open.c: Fix creation of in_use record if the file exists but
no internal record.
2003-05-31 Ulrich Drepper <drepper@redhat.com>
* libio/fileops.c (_IO_file_open): Don't mark as inline.
* sysdeps/ia64/elf/initfini.c ((gmon_initializer): Mark with
attribute used.
* tst-rwlock6.c (do_test): Use correct format specifier.
* sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
(__lll_mutex_lock_wait): Replace one memory operation with one
register operation.
* sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
(__lll_mutex_lock_wait): Likewise.
2003-05-30 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/ia64/lowlevellock.h
(__lll_mutex_cond_lock): Add one to value parameter of
__lll_lock_wait to reflect reality in the futex syscall.
* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
(lll_mutex_cond_lock): Likewise.
* sysdeps/unix/sysv/linux/ia64/lowlevellock.h
(__lll_mutex_unlock_force): New function.
(lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
* tst-rwlock7.c (do_test): Use correct format specifier.
2003-05-28 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/sh/tcb-offsets.sym: Define MUTEX_FUTEX.
* sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
Add __mutex field.
* sysdeps/unix/sysv/linux/sh/lowlevellock.h (SYSCALL_WITH_INST_PAD):
Define.
(lll_futex_wait, lll_futex_wake): Define.
* sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: New file.
* sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Try using
FUTEX_REQUEUE instead of FUTEX_WAIT.
* sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
* sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Remember
mutex which was used in condvar structure. Call
__pthread_mutex_cond_lock instead of __pthread_mutex_lock_internal.
* sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Don't
include tcb-offsets.h. Read wakeup value in locked region.
Use the value of gbr register as THREAD_ID.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
* sysdeps/unix/sysv/linux/sh/sem_trywait.S: Remove futex related
macros.
* pthread_join.c (pthread_join): Set tid field of the joined
thread to -1. This isn't necessary but helps to recognize some
error conditions with almost no cost.
* allocatestack.c (FREE_P): Also negative values indicate an
unused stack.
2003-05-08 Ulrich Drepper <drepper@redhat.com>
* malloc/thread-m.h: Remove special handling of thread_atfork if
HAVE_register_atfork_malloc is defined.
* sysdeps/generic/enbl-secure.c (__libc_enable_secure_decided): New
variable.
(__libc_init_secure): Don't do anything if __libc_enable_secure_decided
is nonzero.
* include/unistd.h: Declare __libc_enable_secure_decided.
* elf/dl-support.c (_dl_aux_init): Recognize AT_UID, AT_EUID, AT_GID,
and AT_EGID. If all found, set __libc_enable_secure and
__libc_enable_secure_decided.
2003-05-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
(pthread_condattr_t): Size is only an int, don't use long for
alignment.
(pthread_mutexattr_t): Likewise.
(pthread_barrierattr_t): Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
* pthread.c (__pthread_initialize_manager): Subtract
TLS_PRE_TCB_SIZE bytes from tcbp to get to descr.
* manager.c (pthread_handle_create): Subtract or add TLS_PRE_TCB_SIZE
instead of sizeof (pthread_descr).
(pthread_free): Add TLS_PRE_TCB_SIZE instead of sizeof (pthread_descr).
* sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define to 0.
2003-04-14 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Use
DW_CFA_advance_loc2 for .Laddl-.Lsubl.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use
DW_CFA_advance_loc for .Laddl-.Lsubl.
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Don't use
position-independent unwind data for static libraries.
Add missing unwind info. Add comments.
2003-04-12 Ulrich Drepper <drepper@redhat.com>
* sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
which mishandles loading of global object addresses in PIC.
(THREAD_SETMEM_NC): Likewise.
2003-04-11 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling.
Remove HAVE_CANCELBUF code. Replace with code using the new
initializers for unwind-based cleanup handling.
* sysdeps/generic/unwind.h: Update from latest gcc version.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Define labels in a few
places to allow unwind data generation.
* sysdeps/i386/bits/setjmp.h: Allow file to be included multiple times.
* sysdeps/x86_64/bits/setjmp.h: Likewise.
* sysdeps/sh/bits/setjmp.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise.
* sysdeps/alpha/bits/setjmp.h: Likewise.
2003-04-05 Ulrich Drepper <drepper@redhat.com>
* malloc/thread-m.h [PTHREAD_MUTEX_INITIALIZER]: If
HAVE_register_atfork_malloc is defined use __register_atfork_malloc
instead of __register_atfork.
2003-04-01 Ulrich Drepper <drepper@redhat.com>
* pthread_create.c (deallocate_tsd): Clear/free memory after the last
round, not the first. Use specific_used flag instead of local
found_nonzero variable. Use THREAD_[SG]ETMEM where possible.
(__free_tcb): Don't call deallocate_tsd here.
(start_thread): Call deallocate_tsd here.
* pthread_setspecific.c: Set specific_used flag really only when
needed.
* Makefile (tests): Add tst-tsd3.c
* tst-tsd3.c: New file.
2003-03-29 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid
netlink_open calls if netlink is known to not be available.
* sysdeps/unix/sysv/linux/kernel-posix-timers.h: Don't declare
__timer_helper_thread. Declare __start_helper_thread, __helper_once,
and __helper_tid.
(struct timer): Remove th and bar field.
* sysdeps/unix/sysv/linux/timer_create.c (timer_create): Remove
debugging code. Create only one helper thread.
* sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Don't kill
helper thread.
* sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
Renamed. Define statically. Use thread info from siginfo.
(__helper_once): New variable.
(__helper_tid): New variable.
(__reset_helper_control): New function.
(__start_helper_thread): New function.
2003-03-27 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Even if
timer_delete syscall fails, but not with ENOSYS, set
__no_posix_timers.
* sysdeps/unix/sysv/linux/timer_settime.c [!__ASSUME_POSIX_TIMERS]
(timer_settime): Fix typo.
2003-03-25 Ulrich Drepper <drepper@redhat.com>
* csu/tst-atomic.c: Adjust tests to what atomic_add_negative and
atomic_add_zero were supposed to do.
* include/atomic.h: Adjust atomic_add_negative and atomic_add_zero
to x86 behavior.
* sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*.
This matches the new timer implementation.
* sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust
timer info for what the kernel provides these days.
(struct sigevent): Add _tid field.
Define SIGEV_THREAD_ID.
* Versions.def (librt): Add GLIBC_2.3.3.
* abilist/libpthread.abilist: Update for nptl.
constraint to permit non-constant BIT argument.
(atomic_bit_test_set): Likewise.
* sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise.
(atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32.
For quadword case, use "i" constraint if __builtin_constant_p and < 32
or "r" constraint otherwise.
* configure.in: Move AC_PROG_CC and other program-finding before all
the version checks.
* configure: Regenerated.