* sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
(libgcc_s_handle): New variable.
(pthread_cancel_init): Depend in libgcc_s_handle for decision to
load DSO. Assign last.
(__unwind_freeres): New function.
* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c:
Likewise.
Joseph Myers <joseph@codesourcery.com>
* sysdeps/arm/dl-machine.h (elf_machine_dynamic): Ditto.
(elf_machine_load_address): Clear T bit of PLT entry contents.
(RTLD_START): Mark function symbols as such. Tweak pc-relative
addressing to avoid depending on pc read pipeline offset.
* sysdeps/arm/machine-gmon.h (MCOUNT): Add Thumb-2 implementation.
* sysdeps/arm/tls-macros.h: Add alignment for Thumb-2.
(ARM_PC_OFFSET): Define.
(TLS_IE): Define differently for Thumb-2.
(TLS_LE, TLS_LD, TLS_GD): Use ARM_PC_OFFSET.
* sysdeps/arm/elf/start.S: Switch to thumb mode for Thumb-2.
* sysdeps/unix/sysv/linux/arm/eabi/sysdep.h (INTERNAL_SYSCALL_RAW):
Add Thumb implementation.
* sysdeps/unix/sysv/linux/arm/eabi/nptl/aio_misc.h: New.
* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c: Enforce
alignment for Thumb-2. Adjust offset from PC for Thumb-2.
* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c: Ditto.
* sysdeps/unix/sysv/linux/arm/nptl/bits/atomic.h (atomic_full_barrier,
__arch_compare_and_exchange_val_32_acq): Add Thumb-2 implementation.
lll_futex_wake not lll_private_futex_wake.
* sysdeps/unix/sysv/linux/arm/bits/fcntl.h (O_CLOEXEC): Define.
* sysdeps/unix/sysv/linux/arm/eabi/sysdep.h: Include <tls.h>
* sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c
(__lll_lock_wait_private, __lll_lock_wait): New.
(__lll_timedlock_wait): Don't include in libc.so; Take private
argument. Use atomic_compare_and_exchange_bool_acq.
* sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h: Renamed all
lll_mutex_* resp. lll_robust_mutex_* macros to lll_*
resp. lll_robust_*. Renamed all LLL_MUTEX_LOCK_* macros to
LLL_LOCK_*. Include <kernel-features.h>.
(LLL_LOCK_INITIALIZER): Remove duplicate definition.
(__lll_private_flag): Define.
(lll_futex_timed_wait): Pass private flag to syscall.
(lll_futex_wake): Likewise.
(lll_private_futex_wait, lll_private_futex_timed_wait,
lll_private_futex_wake): Remove.
(lll_robust_dead, lll_futex_requeue): Take private arguments.
(lll_futex_wake_unlock): Pass private flag to syscall.
(__lll_robust_trylock): Convert to macro.
(__lll_robust_lock_wait): Add private argument.
(__lll_lock_wait_private, __lll_lock_wait): Declare.
(__lll_lock): Convert to macro. Take private argument.
(__lll_cond_lock): Likewise.
(lll_lock, lll_cond_lock): Take private arguments.
(__lll_robust_lock): Take private argument.
(__lll_timedlock_wait, __lll_robust_timedlock_wait): Take private
arguments.
(__lll_timedlock, __lll_robust_timedlock): Convert to macros.
Take private arguments.
(lll_timedlock, lll_robust_timedlock): Take private arguments.
(__lll_unlock, __lll_robust_unlock): Convert to macros. Take
private arguments.
(lll_unlock, lll_robust_unlock): Take private arguments.
(__lll_mutex_unlock_force, lll_mutex_unlock_force, lll_lock_t,
lll_trylock, lll_lock, lll_unlock, lll_islocked): Remove.
(lll_wait_tid): Pass LLL_SHARED to lll_futex_wait.
(__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
__lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
lll_cond_wake, lll_cond_broadcast): Remove.
* sysdeps/unix/sysv/linux/arm/nptl/pthread_once.c
(clear_once_control, __pthread_once): Use lll_futex_wake not
lll_private_futex_wake.
shmctl, and semctl.
* sysdeps/unix/sysv/linux/arm/eabi/semctl.c,
sysdeps/unix/sysv/linux/arm/eabi/shmctl.c,
sysdeps/unix/sysv/linux/arm/eabi/msgctl.c: New files.