glibc/nptl
Nick Alcock 003a27e819 Initialize the stack guard earlier when linking statically [BZ #7065]
The address of the stack canary is stored in a per-thread variable,
which means that we must ensure that the TLS area is intialized before
calling any -fstack-protector'ed functions.  For dynamically linked
applications, we ensure this (in a later patch) by disabling
-fstack-protector for the whole dynamic linker, but for static
applications, the AT_ENTRY address is called directly by the kernel, so
we must deal with the problem differently.

In static appliations, __libc_setup_tls performs the TCB setup and TLS
initialization, so this commit arranges for it to be called early and
unconditionally.  The call (and the stack guard initialization) is
before the DL_SYSDEP_OSCHECK hook, which if set will probably call
functions which are stack-protected (it does on Linux and NaCL too).  We
also move apply_irel up, so that we can still safely call functions that
require ifuncs while in __libc_setup_tls (though if stack-protection is
enabled we still have to avoid calling functions that are not
stack-protected at this stage).
2016-12-26 10:08:34 +01:00
..
Banner
ChangeLog.old
DESIGN-condvar.txt
DESIGN-rwlock.txt
DESIGN-systemtap-probes.txt
Makefile Fix failing pretty printer tests when CPPFLAGS has optimizations. 2016-12-23 13:46:56 -05:00
TODO
TODO-kernel
TODO-testing
Versions
alloca_cutoff.c
allocatestack.c Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
cancellation.c
cleanup.c
cleanup_compat.c
cleanup_defer.c
cleanup_defer_compat.c
cleanup_routine.c
cond-perf.c
createthread.c
default-sched.h
descr.h Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
eintr.c
elision-conf.h
errno-loc.c
events.c
forward.c
herrno.c
libc-cancellation.c
libc-cleanup.c
libc-lowlevellock.c
libc_multiple_threads.c
libc_pthread_init.c
lll_timedlock_wait.c
lll_timedwait_tid.c
lowlevelcond.sym
lowlevellock.c
lowlevelrobustlock.c Fix robust mutex daedlock [BZ #20263] 2016-07-07 14:33:32 +02:00
lowlevelrobustlock.sym
lowlevelrwlock.sym
nptl-init.c Initialize the stack guard earlier when linking statically [BZ #7065] 2016-12-26 10:08:34 +01:00
nptl-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
nptl_lock_constants.pysym Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
old_pthread_atfork.c
old_pthread_cond_broadcast.c
old_pthread_cond_destroy.c
old_pthread_cond_init.c
old_pthread_cond_signal.c
old_pthread_cond_timedwait.c
old_pthread_cond_wait.c
perf.c
pt-allocrtsig.c
pt-cleanup.c
pt-crti.S
pt-fork.c fork in libpthread cannot use IFUNC resolver [BZ #19861] 2016-06-01 07:14:42 +02:00
pt-interp.c
pt-longjmp.c Use libc_ifunc macro for siglongjmp, longjmp in libpthread. 2016-10-07 10:12:48 +02:00
pt-raise.c
pt-system.c Use libc_ifunc macro for system in libpthread. 2016-10-07 10:12:47 +02:00
pt-vfork.c Use libc_ifunc macro for vfork in libpthread. 2016-10-07 10:12:48 +02:00
pthread-errnos.sym
pthread-pi-defines.sym
pthread-pids.h
pthreadP.h nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
pthread_atfork.c
pthread_attr_destroy.c
pthread_attr_getaffinity.c
pthread_attr_getdetachstate.c
pthread_attr_getguardsize.c
pthread_attr_getinheritsched.c
pthread_attr_getschedparam.c
pthread_attr_getschedpolicy.c
pthread_attr_getscope.c
pthread_attr_getstack.c
pthread_attr_getstackaddr.c
pthread_attr_getstacksize.c
pthread_attr_init.c
pthread_attr_setaffinity.c
pthread_attr_setdetachstate.c
pthread_attr_setguardsize.c
pthread_attr_setinheritsched.c
pthread_attr_setschedparam.c
pthread_attr_setschedpolicy.c
pthread_attr_setscope.c
pthread_attr_setstack.c
pthread_attr_setstackaddr.c
pthread_attr_setstacksize.c
pthread_barrier_destroy.c
pthread_barrier_init.c
pthread_barrier_wait.c
pthread_barrierattr_destroy.c
pthread_barrierattr_getpshared.c
pthread_barrierattr_init.c
pthread_barrierattr_setpshared.c
pthread_cancel.c Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
pthread_clock_gettime.c
pthread_clock_settime.c
pthread_cond_broadcast.c
pthread_cond_destroy.c
pthread_cond_init.c
pthread_cond_signal.c
pthread_cond_timedwait.c
pthread_cond_wait.c
pthread_condattr_destroy.c
pthread_condattr_getclock.c
pthread_condattr_getpshared.c
pthread_condattr_init.c
pthread_condattr_setclock.c
pthread_condattr_setpshared.c
pthread_create.c nptl: support thread stacks that grow up 2016-02-19 12:41:29 -05:00
pthread_detach.c
pthread_equal.c
pthread_exit.c
pthread_getaffinity.c
pthread_getattr_default_np.c
pthread_getattr_np.c Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
pthread_getconcurrency.c
pthread_getcpuclockid.c
pthread_getname.c
pthread_getschedparam.c
pthread_getspecific.c
pthread_join.c
pthread_key_create.c
pthread_key_delete.c
pthread_kill.c
pthread_kill_other_threads.c
pthread_mutex_cond_lock.c
pthread_mutex_consistent.c
pthread_mutex_destroy.c
pthread_mutex_getprioceiling.c
pthread_mutex_init.c Remove __ASSUME_FUTEX_LOCK_PI 2016-06-13 08:36:34 -03:00
pthread_mutex_lock.c Robust mutexes: Fix lost wake-up. 2016-12-19 20:12:15 +01:00
pthread_mutex_setprioceiling.c
pthread_mutex_timedlock.c Robust mutexes: Fix lost wake-up. 2016-12-19 20:12:15 +01:00
pthread_mutex_trylock.c
pthread_mutex_unlock.c Remove atomic_compare_and_exchange_bool_rel. 2016-06-24 23:04:40 +03:00
pthread_mutexattr_destroy.c
pthread_mutexattr_getprioceiling.c
pthread_mutexattr_getprotocol.c
pthread_mutexattr_getpshared.c
pthread_mutexattr_getrobust.c
pthread_mutexattr_gettype.c
pthread_mutexattr_init.c
pthread_mutexattr_setprioceiling.c
pthread_mutexattr_setprotocol.c
pthread_mutexattr_setpshared.c
pthread_mutexattr_setrobust.c
pthread_mutexattr_settype.c
pthread_once.c
pthread_rwlock_destroy.c
pthread_rwlock_init.c
pthread_rwlock_rdlock.c
pthread_rwlock_timedrdlock.c
pthread_rwlock_timedwrlock.c
pthread_rwlock_tryrdlock.c
pthread_rwlock_trywrlock.c
pthread_rwlock_unlock.c Document a behavior of an elided pthread_rwlock_unlock 2016-10-28 19:13:21 -02:00
pthread_rwlock_wrlock.c
pthread_rwlockattr_destroy.c
pthread_rwlockattr_getkind_np.c
pthread_rwlockattr_getpshared.c
pthread_rwlockattr_init.c
pthread_rwlockattr_setkind_np.c
pthread_rwlockattr_setpshared.c
pthread_self.c
pthread_setaffinity.c
pthread_setattr_default_np.c
pthread_setcancelstate.c
pthread_setcanceltype.c
pthread_setconcurrency.c
pthread_setegid.c
pthread_seteuid.c
pthread_setgid.c
pthread_setname.c
pthread_setregid.c
pthread_setresgid.c
pthread_setresuid.c
pthread_setreuid.c
pthread_setschedparam.c
pthread_setschedprio.c
pthread_setspecific.c
pthread_setuid.c
pthread_sigmask.c
pthread_sigqueue.c
pthread_spin_destroy.c
pthread_spin_init.c
pthread_spin_lock.c
pthread_spin_trylock.c
pthread_spin_unlock.c
pthread_testcancel.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
pthread_timedjoin.c
pthread_tryjoin.c
pthread_yield.c
register-atfork.c
res.c
sem_close.c
sem_destroy.c
sem_getvalue.c
sem_init.c nptl: Consolidate sem_init implementations 2016-09-15 16:31:50 -03:00
sem_open.c nptl: Set sem_open as a non cancellation point (BZ #15765) 2016-09-15 11:14:25 -03:00
sem_post.c
sem_timedwait.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
sem_unlink.c
sem_wait.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
sem_waitcommon.c
semaphoreP.h
shlib-versions
sigaction.c
smp.h
sockperf.c
stack-aliasing.h
test-cond-printers.c Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-cond-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-condattr-printers.c Fix failing pretty printer tests when CPPFLAGS has optimizations. 2016-12-23 13:46:56 -05:00
test-condattr-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-mutex-printers.c Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-mutex-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-mutexattr-printers.c Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-mutexattr-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-rwlock-printers.c Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-rwlock-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-rwlockattr-printers.c Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
test-rwlockattr-printers.py Add pretty printers for the NPTL lock types 2016-12-08 18:59:02 +05:30
tpp.c
tst-_res1.c
tst-_res1mod1.c
tst-_res1mod2.c
tst-abstime.c
tst-align.c
tst-align3.c
tst-atfork1.c
tst-atfork2.c
tst-atfork2mod.c
tst-attr1.c
tst-attr2.c
tst-attr3.c
tst-backtrace1.c
tst-bad-schedattr.c
tst-barrier1.c
tst-barrier2.c
tst-barrier3.c
tst-barrier4.c
tst-barrier5.c
tst-basic1.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-basic2.c
tst-basic3.c
tst-basic4.c
tst-basic5.c
tst-basic6.c
tst-basic7.c
tst-cancel-self-cancelstate.c
tst-cancel-self-canceltype.c
tst-cancel-self-cleanup.c
tst-cancel-self-testcancel.c
tst-cancel-self.c
tst-cancel-wrappers.sh
tst-cancel1.c
tst-cancel2.c
tst-cancel3.c
tst-cancel4-common.c nptl: Add more coverage in tst-cancel4 2016-07-05 10:49:37 -03:00
tst-cancel4-common.h nptl: Add more coverage in tst-cancel4 2016-07-05 10:49:37 -03:00
tst-cancel4.c nptl: Add more coverage in tst-cancel4 2016-07-05 10:49:37 -03:00
tst-cancel4_1.c nptl: Add sendmmsg and recvmmsg cancellation tests 2016-06-13 13:37:24 -03:00
tst-cancel4_2.c nptl: Add sendmmsg and recvmmsg cancellation tests 2016-06-13 13:37:24 -03:00
tst-cancel5.c
tst-cancel6.c
tst-cancel7.c nptl/tst-cancel7: Add missing case label 2016-12-13 09:26:20 +01:00
tst-cancel8.c
tst-cancel9.c
tst-cancel10.c
tst-cancel11.c
tst-cancel12.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
tst-cancel13.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
tst-cancel14.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
tst-cancel15.c nptl: Fix sem_wait and sem_timedwait cancellation (BZ#18243) 2016-09-15 11:14:31 -03:00
tst-cancel16.c
tst-cancel17.c Fix tst-cancel17/tst-cancelx17, which sometimes segfaults while exiting. 2016-05-17 10:45:48 +02:00
tst-cancel18.c
tst-cancel19.c
tst-cancel20.c
tst-cancel21-static.c
tst-cancel21.c
tst-cancel22.c
tst-cancel23.c
tst-cancel24-static.cc
tst-cancel24.cc
tst-cancel25.c
tst-cancel26.c
tst-cancel27.c
tst-cancelx1.c
tst-cancelx2.c
tst-cancelx3.c
tst-cancelx4.c
tst-cancelx5.c
tst-cancelx6.c
tst-cancelx7.c
tst-cancelx8.c
tst-cancelx9.c
tst-cancelx10.c
tst-cancelx11.c
tst-cancelx12.c
tst-cancelx13.c
tst-cancelx14.c
tst-cancelx15.c
tst-cancelx16.c
tst-cancelx17.c
tst-cancelx18.c
tst-cancelx20.c
tst-cancelx21.c
tst-cleanup0.c support: Introduce new subdirectory for test infrastructure 2016-12-09 08:18:27 +01:00
tst-cleanup0.expect
tst-cleanup1.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-cleanup2.c
tst-cleanup3.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-cleanup4.c
tst-cleanup4aux.c
tst-cleanupx0.c
tst-cleanupx0.expect
tst-cleanupx1.c
tst-cleanupx2.c
tst-cleanupx3.c
tst-cleanupx4.c
tst-cleanupx4aux.c Compile tst-cleanupx4 test with -fexceptions 2016-06-29 20:24:44 -07:00
tst-clock1.c
tst-clock2.c
tst-cond-except.c
tst-cond1.c
tst-cond2.c
tst-cond3.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-cond4.c
tst-cond5.c
tst-cond6.c
tst-cond7.c
tst-cond8-static.c
tst-cond8.c
tst-cond9.c
tst-cond10.c
tst-cond11.c
tst-cond12.c
tst-cond13.c
tst-cond14.c
tst-cond15.c
tst-cond16.c
tst-cond17.c
tst-cond18.c
tst-cond19.c
tst-cond20.c
tst-cond21.c
tst-cond22.c
tst-cond23.c
tst-cond24.c
tst-cond25.c
tst-context1.c
tst-default-attr.c
tst-detach1.c
tst-dlsym1.c
tst-eintr1.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-eintr2.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-eintr3.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-eintr4.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-eintr5.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-exec1.c
tst-exec2.c
tst-exec3.c
tst-exec4.c
tst-exec5.c posix: Correctly enable/disable cancellation on Linux posix_spawn 2016-09-20 17:18:15 -03:00
tst-execstack-mod.c
tst-execstack.c
tst-exit1.c
tst-exit2.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-exit3.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-fini1.c
tst-fini1mod.c
tst-flock1.c
tst-flock2.c
tst-fork1.c
tst-fork2.c
tst-fork3.c
tst-fork4.c
tst-getpid3.c
tst-initializers1-c11.c
tst-initializers1-c89.c
tst-initializers1-c99.c
tst-initializers1-gnu11.c
tst-initializers1-gnu89.c
tst-initializers1-gnu99.c
tst-initializers1.c
tst-join1.c
tst-join2.c
tst-join3.c
tst-join4.c
tst-join5.c
tst-join6.c
tst-join7.c
tst-join7mod.c
tst-key1.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-key2.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-key3.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-key4.c
tst-kill1.c
tst-kill2.c
tst-kill3.c Use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-kill4.c
tst-kill5.c
tst-kill6.c Use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-locale1.c
tst-locale2.c
tst-mutex-errorcheck.c Don't do lock elision on an error checking mutex (bug 17514) 2016-01-25 16:26:07 +01:00
tst-mutex1.c
tst-mutex2.c
tst-mutex3.c
tst-mutex4.c
tst-mutex5.c
tst-mutex5a.c
tst-mutex6.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-mutex7.c
tst-mutex7a.c
tst-mutex8-static.c
tst-mutex8.c
tst-mutex9.c
tst-mutexpi1.c
tst-mutexpi2.c
tst-mutexpi3.c
tst-mutexpi4.c
tst-mutexpi5.c
tst-mutexpi5a.c
tst-mutexpi6.c
tst-mutexpi7.c
tst-mutexpi7a.c
tst-mutexpi8-static.c
tst-mutexpi8.c
tst-mutexpi9.c
tst-mutexpp1.c
tst-mutexpp6.c
tst-mutexpp10.c
tst-oddstacklimit.c
tst-once1.c
tst-once2.c
tst-once3.c
tst-once4.c
tst-once5.cc nptl/tst-once5: Reduce time to expected failure 2016-08-17 16:14:02 +02:00
tst-oncex3.c
tst-oncex4.c
tst-popen1.c
tst-pthread-attr-affinity.c
tst-pthread-getattr.c
tst-pthread-mutexattr.c
tst-raise1.c
tst-robust1.c
tst-robust2.c
tst-robust3.c
tst-robust4.c
tst-robust5.c
tst-robust6.c
tst-robust7.c
tst-robust8.c
tst-robust9.c
tst-robust10.c Add test case for bug 20263 2016-07-07 14:33:36 +02:00
tst-robustpi1.c
tst-robustpi2.c
tst-robustpi3.c
tst-robustpi4.c
tst-robustpi5.c
tst-robustpi6.c
tst-robustpi7.c
tst-robustpi8.c
tst-robustpi9.c
tst-rwlock1.c
tst-rwlock2.c
tst-rwlock2a.c
tst-rwlock3.c
tst-rwlock4.c
tst-rwlock5.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-rwlock6.c
tst-rwlock7.c
tst-rwlock8.c
tst-rwlock9.c
tst-rwlock10.c
tst-rwlock11.c
tst-rwlock12.c
tst-rwlock13.c
tst-rwlock14.c
tst-rwlock15.c
tst-rwlock16.c
tst-sched1.c
tst-sem1.c
tst-sem2.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-sem3.c
tst-sem4.c
tst-sem5.c
tst-sem6.c
tst-sem7.c
tst-sem8.c
tst-sem9.c
tst-sem10.c
tst-sem11-static.c
tst-sem11.c
tst-sem12-static.c
tst-sem12.c
tst-sem13.c
tst-sem14.c
tst-sem15.c
tst-sem16.c nptl: Set sem_open as a non cancellation point (BZ #15765) 2016-09-15 11:14:25 -03:00
tst-setuid1-static.c
tst-setuid1.c
tst-setuid2.c
tst-setuid3.c
tst-signal1.c
tst-signal2.c
tst-signal3.c
tst-signal4.c
tst-signal5.c
tst-signal6.c
tst-signal7.c
tst-spin1.c
tst-spin2.c
tst-spin3.c nptl: Avoid expected SIGALRM in most tests [BZ #20432] 2016-08-26 19:40:17 +02:00
tst-spin4.c
tst-stack1.c
tst-stack2.c
tst-stack3.c
tst-stack4.c
tst-stack4mod.c
tst-stackguard1-static.c
tst-stackguard1.c
tst-stdio1.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-stdio2.c Write messages to stdout and use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-sysconf.c
tst-thread_local1.cc
tst-tls1.c
tst-tls2.c Use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-tls3-malloc.c malloc: Simplify static malloc interposition [BZ #20432] 2016-08-26 23:20:41 +02:00
tst-tls3.c Use write_message instead of write 2016-11-07 22:09:42 -02:00
tst-tls3mod.c
tst-tls4.c
tst-tls4moda.c
tst-tls4modb.c
tst-tls5.c
tst-tls5.h
tst-tls5mod.c
tst-tls5moda.c
tst-tls5modb.c
tst-tls5modc.c
tst-tls5modd.c
tst-tls5mode.c
tst-tls5modf.c
tst-tls6.sh
tst-tpp.h
tst-tsd1.c
tst-tsd2.c
tst-tsd3.c
tst-tsd4.c
tst-tsd5.c
tst-tsd6.c
tst-typesizes.c
tst-umask1.c
tst-unload.c
tst-vfork1.c
tst-vfork1x.c
tst-vfork2.c
tst-vfork2x.c
unregister-atfork.c
unwind.c
unwindbuf.sym
vars.c
version.c