Update.
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:
parent
b1b8e747d4
commit
fd1a0d0c7c
@ -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>
|
2003-02-22 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/generic/dl-sysdep.c: Avoid warning.
|
* sysdeps/generic/dl-sysdep.c: Avoid warning.
|
||||||
|
@ -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>
|
2003-02-22 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave
|
* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave
|
||||||
|
@ -228,6 +228,9 @@ start_thread (void *arg)
|
|||||||
pd->result = pd->start_routine (pd->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. */
|
/* Clean up any state libc stored in thread-local variables. */
|
||||||
__libc_thread_freeres ();
|
__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 the thread is detached free the TCB. */
|
||||||
if (IS_DETACHED (pd))
|
if (IS_DETACHED (pd))
|
||||||
/* Free the TCB. */
|
/* Free the TCB. */
|
||||||
|
@ -247,13 +247,13 @@ union user_desc_init
|
|||||||
# define THREAD_GETMEM(descr, member) \
|
# define THREAD_GETMEM(descr, member) \
|
||||||
({ __typeof (descr->member) __value; \
|
({ __typeof (descr->member) __value; \
|
||||||
if (sizeof (__value) == 1) \
|
if (sizeof (__value) == 1) \
|
||||||
asm ("movb %%gs:%P2,%b0" \
|
asm volatile ("movb %%gs:%P2,%b0" \
|
||||||
: "=q" (__value) \
|
: "=q" (__value) \
|
||||||
: "0" (0), "i" (offsetof (struct pthread, member))); \
|
: "0" (0), "i" (offsetof (struct pthread, member))); \
|
||||||
else if (sizeof (__value) == 4) \
|
else if (sizeof (__value) == 4) \
|
||||||
asm ("movl %%gs:%P1,%0" \
|
asm volatile ("movl %%gs:%P1,%0" \
|
||||||
: "=r" (__value) \
|
: "=r" (__value) \
|
||||||
: "i" (offsetof (struct pthread, member))); \
|
: "i" (offsetof (struct pthread, member))); \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
if (sizeof (__value) != 8) \
|
if (sizeof (__value) != 8) \
|
||||||
@ -261,11 +261,11 @@ union user_desc_init
|
|||||||
4 or 8. */ \
|
4 or 8. */ \
|
||||||
abort (); \
|
abort (); \
|
||||||
\
|
\
|
||||||
asm ("movl %%gs:%P1,%%eax\n\t" \
|
asm volatile ("movl %%gs:%P1,%%eax\n\t" \
|
||||||
"movl %%gs:%P2,%%edx" \
|
"movl %%gs:%P2,%%edx" \
|
||||||
: "=A" (__value) \
|
: "=A" (__value) \
|
||||||
: "i" (offsetof (struct pthread, member)), \
|
: "i" (offsetof (struct pthread, member)), \
|
||||||
"i" (offsetof (struct pthread, member) + 4)); \
|
"i" (offsetof (struct pthread, member) + 4)); \
|
||||||
} \
|
} \
|
||||||
__value; })
|
__value; })
|
||||||
|
|
||||||
@ -274,14 +274,15 @@ union user_desc_init
|
|||||||
# define THREAD_GETMEM_NC(descr, member, idx) \
|
# define THREAD_GETMEM_NC(descr, member, idx) \
|
||||||
({ __typeof (descr->member[0]) __value; \
|
({ __typeof (descr->member[0]) __value; \
|
||||||
if (sizeof (__value) == 1) \
|
if (sizeof (__value) == 1) \
|
||||||
asm ("movb %%gs:%P2(%3),%b0" \
|
asm volatile ("movb %%gs:%P2(%3),%b0" \
|
||||||
: "=q" (__value) \
|
: "=q" (__value) \
|
||||||
: "0" (0), "i" (offsetof (struct pthread, member[0])), \
|
: "0" (0), "i" (offsetof (struct pthread, member[0])), \
|
||||||
"r" (idx)); \
|
"r" (idx)); \
|
||||||
else if (sizeof (__value) == 4) \
|
else if (sizeof (__value) == 4) \
|
||||||
asm ("movl %%gs:%P1(,%2,4),%0" \
|
asm volatile ("movl %%gs:%P1(,%2,4),%0" \
|
||||||
: "=r" (__value) \
|
: "=r" (__value) \
|
||||||
: "i" (offsetof (struct pthread, member[0])), "r" (idx)); \
|
: "i" (offsetof (struct pthread, member[0])), \
|
||||||
|
"r" (idx)); \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
if (sizeof (__value) != 8) \
|
if (sizeof (__value) != 8) \
|
||||||
@ -289,10 +290,11 @@ union user_desc_init
|
|||||||
4 or 8. */ \
|
4 or 8. */ \
|
||||||
abort (); \
|
abort (); \
|
||||||
\
|
\
|
||||||
asm ("movl %%gs:%P1(,%2,8),%%eax\n\t" \
|
asm volatile ("movl %%gs:%P1(,%2,8),%%eax\n\t" \
|
||||||
"movl %%gs:4+%P1(,%2,8),%%edx" \
|
"movl %%gs:4+%P1(,%2,8),%%edx" \
|
||||||
: "=&A" (__value) \
|
: "=&A" (__value) \
|
||||||
: "i" (offsetof (struct pthread, member[0])), "r" (idx)); \
|
: "i" (offsetof (struct pthread, member[0])), \
|
||||||
|
"r" (idx)); \
|
||||||
} \
|
} \
|
||||||
__value; })
|
__value; })
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ res_init(void) {
|
|||||||
|
|
||||||
#if USE___THREAD
|
#if USE___THREAD
|
||||||
/* With __thread support, this per-thread variable is used in all cases. */
|
/* 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")))
|
extern __thread struct __res_state __libc_res __attribute__ ((alias ("_res")))
|
||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
# define _res __libc_res
|
# define _res __libc_res
|
||||||
|
Loading…
x
Reference in New Issue
Block a user