From 58aa5f45ed3282751ae118c107ff008d4df765dc Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 3 May 2012 20:42:45 -0400 Subject: overhaul SSP support to use a real canary pthread structure has been adjusted to match the glibc/GCC abi for where the canary is stored on i386 and x86_64. it will need variants for other archs to provide the added security of the canary's entropy, but even without that it still works as well as the old "minimal" ssp support. eventually such changes will be made anyway, since they are also needed for GCC/C11 thread-local storage support (not yet implemented). care is taken not to attempt initializing the thread pointer unless the program actually uses SSP (by reference to __stack_chk_fail). --- src/internal/pthread_impl.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/internal/pthread_impl.h') diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 98d9b22d..5c1b2069 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -22,8 +22,12 @@ struct pthread { struct pthread *self; + void *dtv, *unused1, *unused2; + uintptr_t sysinfo; + uintptr_t canary; pid_t tid, pid; int tsd_used, errno_val, *errno_ptr; + /* All cancellation-related fields must remain together, in order */ volatile uintptr_t cp_sp, cp_ip; volatile int cancel, canceldisable, cancelasync; unsigned char *map_base; -- cgit v1.2.1