diff options
| author | Rich Felker <dalias@aerifal.cx> | 2020-08-24 22:45:51 -0400 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2020-08-27 18:36:45 -0400 | 
| commit | 57f6e85c9de417fef5eece2a5b00c1104321f543 (patch) | |
| tree | a975b7e5a36294837ccc19c17c5b8c9a71fa2346 /src/internal | |
| parent | 3a5b9ae7cf656648c80fe155a5239d9b4fb4c485 (diff) | |
| download | musl-57f6e85c9de417fef5eece2a5b00c1104321f543.tar.gz | |
remove redundant pthread struct members repeated for layout purposes
dtv_copy, canary2, and canary_at_end existed solely to match multiple
ABI and asm-accessed layouts simultaneously. now that pthread_arch.h
can be included before struct __pthread is defined, the struct layout
can depend on macros defined by pthread_arch.h.
Diffstat (limited to 'src/internal')
| -rw-r--r-- | src/internal/pthread_impl.h | 23 | 
1 files changed, 14 insertions, 9 deletions
| diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 58e06136..4d709bbc 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -11,16 +11,25 @@  #include "atomic.h"  #include "futex.h" +#include "pthread_arch.h" +  #define pthread __pthread  struct pthread {  	/* Part 1 -- these fields may be external or  	 * internal (accessed via asm) ABI. Do not change. */  	struct pthread *self; +#ifndef TLS_ABOVE_TP  	uintptr_t *dtv; +#endif  	struct pthread *prev, *next; /* non-ABI */  	uintptr_t sysinfo; -	uintptr_t canary, canary2; +#ifndef TLS_ABOVE_TP +#ifdef CANARY_PAD +	uintptr_t canary_pad; +#endif +	uintptr_t canary; +#endif  	/* Part 2 -- implementation details, non-ABI. */  	int tid; @@ -52,8 +61,10 @@ struct pthread {  	/* Part 3 -- the positions of these fields relative to  	 * the end of the structure is external and internal ABI. */ -	uintptr_t canary_at_end; -	uintptr_t *dtv_copy; +#ifdef TLS_ABOVE_TP +	uintptr_t canary; +	uintptr_t *dtv; +#endif  };  enum { @@ -99,12 +110,6 @@ struct __timer {  #define _b_waiters2 __u.__vi[4]  #define _b_inst __u.__p[3] -#include "pthread_arch.h" - -#ifndef CANARY -#define CANARY canary -#endif -  #ifndef TP_OFFSET  #define TP_OFFSET 0  #endif | 
