diff options
| -rw-r--r-- | ldso/dynlink.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/ldso/dynlink.c b/ldso/dynlink.c index 025ed1b0..e2c3259f 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -29,6 +29,8 @@ static void error(const char *, ...);  #define MAXP2(a,b) (-(-(a)&-(b)))  #define ALIGN(x,y) ((x)+(y)-1 & -(y)) +#define container_of(p,t,m) ((t*)((char *)(p)-offsetof(t,m))) +  struct debug {  	int ver;  	void *head; @@ -1356,7 +1358,8 @@ static void install_new_tls(void)  {  	sigset_t set;  	pthread_t self = __pthread_self(), td; -	uintptr_t (*newdtv)[tls_cnt+1] = (void *)tail->new_dtv; +	struct dso *dtv_provider = container_of(tls_tail, struct dso, tls); +	uintptr_t (*newdtv)[tls_cnt+1] = (void *)dtv_provider->new_dtv;  	struct dso *p;  	size_t i, j;  	size_t old_cnt = self->dtv[0]; | 
