2003-02-23  Ulrich Drepper  <drepper@redhat.com>

	* resolv/res_libc.c [USE___THREAD] (_res): Initialize _vcsock
	element to -1.
This commit is contained in:
Ulrich Drepper 2003-02-23 09:16:11 +00:00
parent b1b8e747d4
commit fd1a0d0c7c
5 changed files with 40 additions and 26 deletions

View File

@ -1,3 +1,8 @@
2003-02-23 Ulrich Drepper <drepper@redhat.com>
* resolv/res_libc.c [USE___THREAD] (_res): Initialize _vcsock
element to -1.
2003-02-22 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/dl-sysdep.c: Avoid warning.

View File

@ -1,3 +1,10 @@
2003-02-23 Ulrich Drepper <drepper@redhat.com>
* pthread_create.c (start_thread): Set EXITING_BIT early.
* sysdeps/i386/tls.h (THREAD_GETMEM): Mark asm as volatile.
(THREAD_GETMEM_NC): Likewise.
2003-02-22 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave

View File

@ -228,6 +228,9 @@ start_thread (void *arg)
pd->result = pd->start_routine (pd->arg);
}
/* The thread is exiting now. */
atomic_bit_set (&pd->cancelhandling, EXITING_BIT);
/* Clean up any state libc stored in thread-local variables. */
__libc_thread_freeres ();
@ -267,9 +270,6 @@ start_thread (void *arg)
}
/* The thread is exiting now. */
atomic_bit_set (&pd->cancelhandling, EXITING_BIT);
/* If the thread is detached free the TCB. */
if (IS_DETACHED (pd))
/* Free the TCB. */

View File

@ -247,13 +247,13 @@ union user_desc_init
# define THREAD_GETMEM(descr, member) \
({ __typeof (descr->member) __value; \
if (sizeof (__value) == 1) \
asm ("movb %%gs:%P2,%b0" \
: "=q" (__value) \
: "0" (0), "i" (offsetof (struct pthread, member))); \
asm volatile ("movb %%gs:%P2,%b0" \
: "=q" (__value) \
: "0" (0), "i" (offsetof (struct pthread, member))); \
else if (sizeof (__value) == 4) \
asm ("movl %%gs:%P1,%0" \
: "=r" (__value) \
: "i" (offsetof (struct pthread, member))); \
asm volatile ("movl %%gs:%P1,%0" \
: "=r" (__value) \
: "i" (offsetof (struct pthread, member))); \
else \
{ \
if (sizeof (__value) != 8) \
@ -261,11 +261,11 @@ union user_desc_init
4 or 8. */ \
abort (); \
\
asm ("movl %%gs:%P1,%%eax\n\t" \
"movl %%gs:%P2,%%edx" \
: "=A" (__value) \
: "i" (offsetof (struct pthread, member)), \
"i" (offsetof (struct pthread, member) + 4)); \
asm volatile ("movl %%gs:%P1,%%eax\n\t" \
"movl %%gs:%P2,%%edx" \
: "=A" (__value) \
: "i" (offsetof (struct pthread, member)), \
"i" (offsetof (struct pthread, member) + 4)); \
} \
__value; })
@ -274,14 +274,15 @@ union user_desc_init
# define THREAD_GETMEM_NC(descr, member, idx) \
({ __typeof (descr->member[0]) __value; \
if (sizeof (__value) == 1) \
asm ("movb %%gs:%P2(%3),%b0" \
: "=q" (__value) \
: "0" (0), "i" (offsetof (struct pthread, member[0])), \
"r" (idx)); \
asm volatile ("movb %%gs:%P2(%3),%b0" \
: "=q" (__value) \
: "0" (0), "i" (offsetof (struct pthread, member[0])), \
"r" (idx)); \
else if (sizeof (__value) == 4) \
asm ("movl %%gs:%P1(,%2,4),%0" \
: "=r" (__value) \
: "i" (offsetof (struct pthread, member[0])), "r" (idx)); \
asm volatile ("movl %%gs:%P1(,%2,4),%0" \
: "=r" (__value) \
: "i" (offsetof (struct pthread, member[0])), \
"r" (idx)); \
else \
{ \
if (sizeof (__value) != 8) \
@ -289,10 +290,11 @@ union user_desc_init
4 or 8. */ \
abort (); \
\
asm ("movl %%gs:%P1(,%2,8),%%eax\n\t" \
"movl %%gs:4+%P1(,%2,8),%%edx" \
: "=&A" (__value) \
: "i" (offsetof (struct pthread, member[0])), "r" (idx)); \
asm volatile ("movl %%gs:%P1(,%2,8),%%eax\n\t" \
"movl %%gs:4+%P1(,%2,8),%%edx" \
: "=&A" (__value) \
: "i" (offsetof (struct pthread, member[0])), \
"r" (idx)); \
} \
__value; })

View File

@ -72,7 +72,7 @@ res_init(void) {
#if USE___THREAD
/* With __thread support, this per-thread variable is used in all cases. */
__thread struct __res_state _res;
__thread struct __res_state _res = { ._vcsock = -1 };
extern __thread struct __res_state __libc_res __attribute__ ((alias ("_res")))
attribute_hidden;
# define _res __libc_res