aa46008767b50e1c09331c3de294911d38c44353
[platform/upstream/glibc.git] / nptl / ChangeLog
1 2006-01-09  Roland McGrath  <roland@redhat.com>
2
3         * tst-initializers1-c89.c: New file.
4         * tst-initializers1-c99.c: New file.
5         * tst-initializers1-gnu89.c: New file.
6         * tst-initializers1-gnu99.c: New file.
7         * Makefile (tests): Add them.
8         (CFLAGS-tst-initializers1-c89.c): New variable.
9         (CFLAGS-tst-initializers1-c99.c): New variable.
10         (CFLAGS-tst-initializers1-gnu89.c): New variable.
11         (CFLAGS-tst-initializers1-gnu99.c): New variable.
12
13         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
14         Use __extension__ on anonymous union definition.
15         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
16         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
17         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
18         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
19         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
20
21 2006-01-08  Jakub Jelinek  <jakub@redhat.com>
22
23         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
24         Don't give the union a name because it changes the mangled name.
25         Instead name the struct for __data.
26         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_mutex_t):
27         Likewise.
28         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_mutex_t):
29         Likewise.
30
31 2006-01-09  Jakub Jelinek  <jakub@redhat.com>
32
33         * sysdeps/sparc/sparc64/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Add
34         stack bias to mc_ftp field.
35
36 2006-01-07  Ulrich Drepper  <drepper@redhat.com>
37
38         * sysdeps/pthread/aio_misc.h (AIO_MISC_WAIT): Work around gcc
39         being too clever and reloading the futex value where it shouldn't.
40
41 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
42
43         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX): Use
44         correct type.
45
46 2006-01-06  Jakub Jelinek  <jakub@redhat.com>
47
48         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
49         Add cfi directives.
50
51 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
52
53         * sysdeps/ia64/tls.h (tcbhead_t): Rename private member to __private.
54         * sysdeps/ia64/tcb-offsets.sym: Adjust for private->__private
55         rename in tcbhead_t.
56
57         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
58         Don't give the union a name because it changes the mangled name.
59         Instead name the struct for __data.
60         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
61         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
62         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
63         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
64         * pthread_create.c (start_thread): Adjust robust mutex free loop.
65         * descr.h (ENQUEUE_MUTEX, DEQUEUE_MUTEX): Adjust.
66
67 2006-01-05  Ulrich Drepper  <drepper@redhat.com>
68
69         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
70         Return status.
71         (lll_futex_timed_wait): Define.
72         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
73         * sysdeps/pthread/aio_misc.h: New file.
74
75 2006-01-03  Joseph S. Myers  <joseph@codesourcery.com>
76
77         * Makefile ($(objpfx)$(multidir)): Use mkdir -p.
78
79 2006-01-03  Steven Munroe  <sjmunroe@us.ibm.com>
80
81         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
82         (PSEUDO): Remove redundant cfi_startproc and cfi_endproc directives.
83         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
84
85 2006-01-04  Ulrich Drepper  <drepper@redhat.com>
86
87         * tst-cancel24.cc: Use C headers instead of C++ headers.
88
89 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
90
91         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Remove #error for
92         sparc-linux configured glibc.
93         (lll_futex_wake_unlock): Define to 1 for sparc-linux configured glibc.
94         (__lll_mutex_trylock, __lll_mutex_cond_trylock, __lll_mutex_lock,
95         __lll_mutex_cond_lock, __lll_mutex_timedlock): Use
96         atomic_compare_and_exchange_val_24_acq instead of
97         atomic_compare_and_exchange_val_acq.
98         (lll_mutex_unlock, lll_mutex_unlock_force): Use atomic_exchange_24_rel
99         instead of atomic_exchange_rel.
100         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: New file.
101         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c: New
102         file.
103         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c: New
104         file.
105         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: New file.
106         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c: New file.
107         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c: New file.
108         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c: New file.
109         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c: New file.
110         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c:
111         New file.
112         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
113         New file.
114         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: New file.
115         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: New file.
116         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c: New
117         file.
118         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_trywait.c: New
119         file.
120         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: New file.
121
122 2006-01-03  Ulrich Drepper  <drepper@redhat.com>
123
124         * sysdeps/pthread/pthread.h [__WORDSIZE==64]: Don't use cast in
125         mutex initializers.
126
127 2006-01-02  Jakub Jelinek  <jakub@redhat.com>
128
129         * sysdeps/sparc/tls.h (tcbhead_t): Add pointer_guard field.
130         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
131         THREAD_COPY_POINTER_GUARD): Define.
132         * sysdeps/sparc/tcb-offsets.sym (POINTER_GUARD): Define.
133         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Revert 2005-12-27 changes.
134
135 2006-01-01  Ulrich Drepper  <drepper@redhat.com>
136
137         * version.c: Update copyright year.
138
139 2005-12-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
140
141         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Remove explicit
142         .eh_frame section, use cfi_* directives.
143         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Add cfi instrumentation.
144
145 2005-12-30  Ulrich Drepper  <drepper@redhat.com>
146
147         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Undo last change for
148         now.
149
150 2005-12-29  Ulrich Drepper  <drepper@redhat.com>
151
152         * sysdeps/pthread/sigaction.c: Removed.
153         * sigaction.c: New file.
154         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-sigaction.c.
155
156 2005-12-28  Ulrich Drepper  <drepper@redhat.com>
157
158         * Makefile (tests): Add tst-signal7.
159         * tst-signal7.c: New file.
160
161 2005-12-27  Roland McGrath  <roland@redhat.com>
162
163         * sysdeps/x86_64/jmpbuf-unwind.h (_jmpbuf_sp): New inline function.
164         (_JMPBUF_UNWINDS_ADJ): Use it, to PTR_DEMANGLE before comparison.
165         * sysdeps/alpha/jmpbuf-unwind.h: Likewise.
166         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
167         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
168         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
169         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
170         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
171         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
172         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
173         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
174
175 2005-12-27  Jakub Jelinek  <jakub@redhat.com>
176
177         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Add __next
178         and __prev field to pthread_mutex_t.
179         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
180         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
181         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
182         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
183         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Add __next field
184         to pthread_mutex_t.
185
186 2005-12-26  Ulrich Drepper  <drepper@redhat.com>
187
188         * pthreadP.h: Define PTHREAD_MUTEX_ROBUST_PRIVATE_NP,
189         PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP,
190         PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP,
191         PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP,
192         PTHREAD_MUTEXATTR_FLAG_ROBUST, PTHREAD_MUTEXATTR_FLAG_PSHARED,
193         and PTHREAD_MUTEXATTR_FLAG_BITS.
194         * descr.h (struct pthread): Add robust_list field and define
195         ENQUEUE_MUTEX and DEQUEUE_MUTEX macros.
196         * pthread_mutexattr_getrobust.c: New file.
197         * pthread_mutexattr_setrobust.c: New file.
198         * pthread_mutex_consistent.c: New file.
199         * sysdeps/pthread/pthread.h: Declare pthread_mutexattr_getrobust,
200         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
201         Define PTHREAD_MUTEX_STALLED_NP and PTHREAD_MUTEX_ROBUST_NP.
202         Adjust pthread_mutex_t initializers.
203         * nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Add __next
204         field to pthread_mutex_t.
205         * nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Add __next
206         and __prev field to pthread_mutex_t.
207         * Versions [GLIBC_2.4]: Export pthread_mutexattr_getrobust_np,
208         pthread_mutexattr_setrobust_np, and pthread_mutex_consistent_np.
209         * pthread_mutexattr_getpshared.c: Use PTHREAD_MUTEXATTR_FLAG_PSHARED
210         and PTHREAD_MUTEXATTR_FLAG_BITS macros instead of magic numbers.
211         * pthread_mutexattr_gettype.c: Likewise.
212         * pthread_mutexattr_setpshared.c: Likewise.
213         * pthread_mutexattr_settype.c: Likewise.
214         * pthread_mutex_init.c: Reject robust+pshared attribute for now.
215         Initialize mutex kind according to robust flag.
216         * pthread_mutex_lock.c: Implement local robust mutex.
217         * pthread_mutex_timedlock.c: Likewise.
218         * pthread_mutex_trylock.c: Likewise.
219         * pthread_mutex_unlock.c: Likewise.
220         * pthread_create.c (start_thread): Mark robust mutexes which remained
221         locked as dead.
222         * tst-robust1.c: New file.
223         * tst-robust2.c: New file.
224         * tst-robust3.c: New file.
225         * tst-robust4.c: New file.
226         * tst-robust5.c: New file.
227         * tst-robust6.c: New file.
228         * tst-robust7.c: New file.
229         * Makefile (libpthread-routines): Add pthread_mutexattr_getrobust,
230         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
231         (tests): Add tst-robust1, tst-robust2, tst-robust3, tst-robust4,
232         tst-robust5, tst-robust6, and tst-robust7.
233
234         * tst-typesizes.c: New file.
235         * Makefile (tests): Add tst-typesizes.
236
237         * tst-once3.c: More debug output.
238
239 2005-12-24  Ulrich Drepper  <drepper@redhat.com>
240
241         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Add break
242         missing after last change.
243
244         * version.c: Update copyright year.
245
246 2005-12-23  Ulrich Drepper  <drepper@redhat.com>
247
248         * pthread_mutex_destroy.c: Set mutex type to an invalid value.
249         * pthread_mutex_lock.c: Return EINVAL for invalid mutex type.
250         * pthread_mutex_trylock.c: Likewise.
251         * pthread_mutex_timedlock.c: Likewise.
252         * pthread_mutex_unlock.c: Likewise.
253
254 2005-12-22  Roland McGrath  <roland@redhat.com>
255
256         * sysdeps/pthread/sigaction.c: Use "" instead of <> to include self,
257         so that #include_next's search location is not reset to the -I..
258         directory where <nptl/...> can be found.
259
260 2005-12-22  Ulrich Drepper  <drepper@redhat.com>
261
262         [BZ #1913]
263         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
264         Fix unwind info.  Remove useless branch prediction prefix.
265         * tst-cancel24.cc: New file.
266         * Makefile: Add rules to build and run tst-cancel24.
267
268 2005-12-21  Roland McGrath  <roland@redhat.com>
269
270         * libc-cancellation.c: Use <> rather than "" #includes.
271         * pt-cleanup.c: Likewise.
272         * pthread_create.c: Likewise.
273         * pthread_join.c: Likewise.
274         * pthread_timedjoin.c: Likewise.
275         * pthread_tryjoin.c: Likewise.
276         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Likewise.
277         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
278         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
279         * unwind.c: Likewise.
280
281 2005-12-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
282
283         * sysdeps/sh/tcb-offsets.sym: Add POINTER_GUARD.
284         * sysdeps/sh/tls.h (tcbhead_t): Remove private and add pointer_guard.
285         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
286         THREAD_COPY_POINTER_GUARD): Define.
287
288 2005-12-19  Jakub Jelinek  <jakub@redhat.com>
289
290         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Make room for 2 uintptr_t's
291         rather than one.
292         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
293         THREAD_COPY_POINTER_GUARD): Define.
294         * sysdeps/powerpc/tcb-offsets.sym (POINTER_GUARD): Add.
295         * sysdeps/powerpc/tls.h (tcbhead_t): Add pointer_guard field.
296         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
297         THREAD_COPY_POINTER_GUARD): Define.
298         * sysdeps/s390/tcb-offsets.sym (STACK_GUARD): Add.
299         * sysdeps/s390/tls.h (THREAD_GET_POINTER_GUARD,
300         THREAD_SET_POINTER_GUARD, THREAD_COPY_POINTER_GUARD): Define.
301         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S (__ia64_longjmp):
302         Use PTR_DEMANGLE for B0 if defined.
303
304 2005-12-17  Ulrich Drepper  <drepper@redhat.com>
305
306         * pthread_create.c (__pthread_create_2_1): Use
307         THREAD_COPY_POINTER_GUARD if available.
308         * sysdeps/i386/tcb-offsets.sym: Add POINTER_GUARD.
309         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
310         * sysdeps/i386/tls.h (tcbhead_t): Add pointer_guard.
311         Define THREAD_SET_POINTER_GUARD and THREAD_COPY_POINTER_GUARD.
312         * sysdeps/x86_64/tls.h: Likewise.
313
314 2005-12-15  Roland McGrath  <roland@redhat.com>
315
316         * sysdeps/unix/sysv/linux/mq_notify.c: Don't use sysdeps/generic.
317
318 2005-12-13  Ulrich Drepper  <drepper@redhat.com>
319
320         * sysdeps/pthread/sigfillset.c: Adjust for files moved out of
321         sysdeps/generic.
322         * errno-loc.c: New file.
323
324 2005-12-12  Roland McGrath  <roland@redhat.com>
325
326         * init.c (__pthread_initialize_minimal_internal): Do __static_tls_size
327         adjustments before choosing stack size.  Update minimum stack size
328         calculation to match allocate_stack change.
329
330 2005-12-12  Ulrich Drepper  <drepper@redhat.com>
331
332         * allocatestack.c (allocate_stack): Don't demand that there is an
333         additional full page available on the stack beside guard, TLS, the
334         minimum stack.
335
336 2005-11-24  Ulrich Drepper  <drepper@redhat.com>
337
338         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
339         (__cleanup_fct_attribute): Use __regparm__ not regparm.
340
341         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: When
342         compiling 32-bit code we must define __cleanup_fct_attribute.
343
344 005-11-24  Jakub Jelinek  <jakub@redhat.com>
345
346         [BZ #1920]
347         * sysdeps/pthread/pthread.h (__pthread_unwind_next): Use
348         __attribute__ instead of __attribute.
349         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
350         (__cleanup_fct_attribute): Likewise.
351
352 2005-11-17  Jakub Jelinek  <jakub@redhat.com>
353
354         * sysdeps/pthread/unwind-forcedunwind.c (pthread_cancel_init): Put
355         a write barrier before writing libgcc_s_getcfa.
356
357 2005-11-06  Ulrich Drepper  <drepper@redhat.com>
358
359         * sysdeps/unix/sysv/linux/configure: Removed.
360
361 2005-11-05  Ulrich Drepper  <drepper@redhat.com>
362
363         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Remove trace of
364         optional init_array/fini_array support.
365
366 2005-10-24  Roland McGrath  <roland@redhat.com>
367
368         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Remove unnecessary
369         versioned_symbol use.
370
371 2005-10-16  Roland McGrath  <roland@redhat.com>
372
373         * init.c (__pthread_initialize_minimal_internal): Even when using a
374         compile-time default stack size, apply the minimum that allocate_stack
375         will require, and round up to page size.
376
377 2005-10-10  Daniel Jacobowitz  <dan@codesourcery.com>
378
379         * Makefile ($(test-modules)): Remove static pattern rule.
380
381 2005-10-14  Jakub Jelinek  <jakub@redhat.com>
382             Ulrich Drepper  <drepper@redhat.com>
383
384         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix stack
385         alignment in callback function.
386         * Makefile: Add rules to build and run tst-align3.
387         * tst-align3.c: New file.
388
389 2005-10-03  Jakub Jelinek  <jakub@redhat.com>
390
391         * allocatestack.c (setxid_signal_thread): Add
392         INTERNAL_SYSCALL_DECL (err).
393
394 2005-10-02  Jakub Jelinek  <jakub@redhat.com>
395
396         * allocatestack.c (setxid_signal_thread): Need to use
397         atomic_compare_and_exchange_bool_acq.
398
399 2005-10-01  Ulrich Drepper  <drepper@redhat.com>
400             Jakub Jelinek  <jakub@redhat.com>
401
402         * descr.h: Define SETXID_BIT and SETXID_BITMASK.  Adjust
403         CANCEL_RESTMASK.
404         (struct pthread): Move specific_used field to avoid padding.
405         Add setxid_futex field.
406         * init.c (sighandler_setxid): Reset setxid flag and release the
407         setxid futex.
408         * allocatestack.c (setxid_signal_thread): New function.  Broken
409         out of the bodies of the two loops in __nptl_setxid.  For undetached
410         threads check whether they are exiting and if yes, don't send a signal.
411         (__nptl_setxid): Simplify loops by using setxid_signal_thread.
412         * pthread_create.c (start_thread): For undetached threads, check
413         whether setxid bit is set.  If yes, wait until signal has been
414         processed.
415
416         * allocatestack.c (STACK_VARIABLES): Initialize them.
417         * pthread_create.c (__pthread_create_2_1): Initialize pd.
418
419 2004-09-02  Jakub Jelinek  <jakub@redhat.com>
420
421         * pthread_cond_destroy.c (__pthread_cond_destroy): If there are
422         waiters, awake all waiters on the associated mutex.
423
424 2005-09-22  Roland McGrath  <roland@redhat.com>
425
426         * perf.c [__x86_64__] (HP_TIMING_NOW): New macro (copied from
427         ../sysdeps/x86_64/hp-timing.h).
428
429 2005-08-29  Jakub Jelinek  <jakub@redhat.com>
430
431         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_WAKE_OP,
432         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
433         (lll_futex_wake_unlock): Define.
434         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_WAKE_OP,
435         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
436         (lll_futex_wake_unlock): Define.
437         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_WAKE_OP,
438         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
439         (lll_futex_wake_unlock): Define.
440         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_WAKE_OP,
441         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
442         (lll_futex_wake_unlock): Define.
443         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_WAKE_OP,
444         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
445         (lll_futex_wake_unlock): Define.
446         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal): Use
447         lll_futex_wake_unlock.
448         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
449         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
450         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
451         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
452         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
453         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
454
455 2005-09-05  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
456
457         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
458         Fix typo in register name.
459
460 2005-08-23  Ulrich Drepper  <drepper@redhat.com>
461
462         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
463         Use __sigfillset.  Document that sigfillset does the right thing wrt
464         to SIGSETXID.
465
466 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
467
468         [BZ #1102]
469         * sysdeps/pthread/pthread.h (PTHREAD_MUTEX_INITIALIZER,
470         PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
471         PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP,
472         PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_RWLOCK_INITIALIZER,
473         PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
474         PTHREAD_COND_INITIALIZER): Supply zeros for all fields
475         in the structure.
476         * Makefile (tests): Add tst-initializers1.
477         (CFLAGS-tst-initializers1.c): Set.
478         * tst-initializers1.c: New test.
479
480 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
481
482         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_rwlock_t):
483         Make sure __flags are located at offset 48 from the start of the
484         structure.
485
486 2005-07-02  Roland McGrath  <roland@redhat.com>
487
488         * Makeconfig: Comment fix.
489
490 2005-07-05  Jakub Jelinek  <jakub@redhat.com>
491
492         * descr.h (PTHREAD_STRUCT_END_PADDING): Define.
493         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): If PTHREAD_STRUCT_END_PADDING
494         is smaller than 8 bytes, increase TLS_PRE_TCB_SIZE by 16 bytes.
495         (THREAD_SYSINFO, THREAD_SELF, DB_THREAD_SELF): Don't assume
496         TLS_PRE_TCB_SIZE is sizeof (struct pthread).
497         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
498         * sysdeps/ia64/tcb-offsets.sym (PID, TID, MULTIPLE_THREADS_OFFSET):
499         Use TLS_PRE_TCB_SIZE instead of sizeof (struct pthread).
500         * sysdeps/unix/sysv/linux/ia64/createthread.c (TLS_VALUE): Don't
501         assume TLS_PRE_TCB_SIZE is sizeof (struct pthread).
502
503 2005-06-25  Jakub Jelinek  <jakub@redhat.com>
504
505         * sysdeps/i386/tls.h (tcbhead_t): Add stack_guard field.
506         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
507         * sysdeps/x86_64/tls.h (tcbhead_t): Add sysinfo and stack_guard
508         fields.
509         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
510         * sysdeps/s390/tls.h (tcbhead_t): Add stack_guard
511         field.  Put in sysinfo field unconditionally.
512         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
513         * sysdeps/powerpc/tls.h (tcbhead_t): Add stack_guard field.
514         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
515         * sysdeps/sparc/tls.h (tcbhead_t): Add sysinfo and stack_guard
516         fields.
517         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
518         * pthread_create.c (__pthread_create_2_1): Use
519         THREAD_COPY_STACK_GUARD macro.
520         * Makefile: Add rules to build and run tst-stackguard1{,-static}
521         tests.
522         * tst-stackguard1.c: New file.
523         * tst-stackguard1-static.c: New file.
524
525 2005-06-14  Alan Modra  <amodra@bigpond.net.au>
526
527         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
528         Invoke CGOTSETUP and CGOTRESTORE.
529         (CGOTSETUP, CGOTRESTORE): Define.
530
531 2005-05-29  Richard Henderson  <rth@redhat.com>
532
533         * tst-cancel4.c (WRITE_BUFFER_SIZE): New.
534         (tf_write, tf_writev): Use it.
535         (do_test): Use socketpair instead of pipe.  Set SO_SNDBUF to
536         the system minimum.
537
538 2005-05-23  Jakub Jelinek  <jakub@redhat.com>
539
540         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
541         [IS_IN_librt] (CENABLE, CDISABLE): Use JUMPTARGET instead of
542         __librt_*_asynccancel@local.
543
544 2005-05-17  Alan Modra  <amodra@bigpond.net.au>
545
546         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Delete
547         all occurrences of JUMPTARGET.  Instead append @local to labels.
548
549 2005-05-20  Jakub Jelinek  <jakub@redhat.com>
550
551         * sysdeps/i386/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN): Define to
552         size/alignment of struct pthread rather than tcbhead_t.
553         * sysdeps/x86_64/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
554         Likewise.
555         * sysdeps/s390/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
556         Likewise.
557         * sysdeps/sparc/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
558         Likewise.
559
560 2005-05-19  Richard Henderson  <rth@redhat.com>
561
562         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use
563         __sync_val_compare_and_swap, not explicit _si variant.
564         * sysdeps/ia64/pthread_spin_trylock.c (pthread_spin_trylock): Likewise.
565
566 2005-05-03  Ulrich Drepper  <drepper@redhat.com>
567
568         [BZ #915]
569         * sysdeps/pthread/pthread.h: Avoid empty initializers.
570
571 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
572
573         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Remove explicit
574         .eh_frame section, use cfi_* directives.
575
576 2005-04-27  Jakub Jelinek  <jakub@redhat.com>
577
578         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: Use <> instead
579         of "" includes.
580
581 2005-04-27  Ulrich Drepper  <drepper@redhat.com>
582
583         [BZ #1075]
584         * tst-cancel17.c (do_test): Add arbitrary factor to make sure
585         aio_write blocks.
586
587 2005-04-27  Roland McGrath  <roland@redhat.com>
588
589         * Makefile (tests): Remove tst-clock2.
590
591         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Handle
592         CLOCK_PROCESS_CPUTIME_ID and CLOCK_PROCESS_THREAD_ID specially,
593         translating to the kernel clockid_t for our own process/thread clock.
594
595         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: New file.
596
597 2005-04-15  Jakub Jelinek  <jakub@redhat.com>
598
599         * old_pthread_cond_init.c: Include <errno.h>.
600         (__pthread_cond_init_2_0): Fail with EINVAL if COND_ATTR is
601         process shared or uses clock other than CLOCK_REALTIME.
602         * pthread_cond_init.c (__pthread_cond_init): Remove bogus comment.
603
604 2005-04-13  David S. Miller  <davem@davemloft.net>
605
606         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: New file.
607         * sysdeps/sparc/sparc64/clone.S: New file.
608
609 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
610
611         [BZ #1102]
612         * sysdeps/pthread/pthread.h (__pthread_cleanup_routine): Use
613         __inline instead of inline.
614         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_routine): Likewise.
615
616 2005-03-31  Jakub Jelinek  <jakub@redhat.com>
617
618         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Use
619         functionally equivalent, but shorter instructions.
620         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
621         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
622         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
623         Likewise.
624         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise.
625         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
626         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
627         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
628         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
629         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
630         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
631         Likewise.
632         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
633         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
634         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
635         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
636         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
637
638 2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
639
640         * sysdeps/mips/Makefile: New file.
641         * sysdeps/mips/nptl-sysdep.S: New file.
642         * sysdeps/mips/tcb-offsets.sym: New file.
643         * sysdeps/mips/pthread_spin_lock.S: New file.
644         * sysdeps/mips/pthread_spin_trylock.S: New file.
645         * sysdeps/mips/pthreaddef.h: New file.
646         * sysdeps/mips/tls.h: New file.
647         * sysdeps/mips/jmpbuf-unwind.h: New file.
648         * sysdeps/unix/sysv/linux/mips/lowlevellock.h: New file.
649         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h: New file.
650         * sysdeps/unix/sysv/linux/mips/bits/semaphore.h: New file.
651         * sysdeps/unix/sysv/linux/mips/pthread_once.c: New file.
652         * sysdeps/unix/sysv/linux/mips/fork.c: New file.
653         * sysdeps/unix/sysv/linux/mips/pt-vfork.S: New file.
654         * sysdeps/unix/sysv/linux/mips/vfork.S: New file.
655         * sysdeps/unix/sysv/linux/mips/clone.S: New file.
656         * sysdeps/unix/sysv/linux/mips/createthread.c: New file.
657         * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: New file.
658
659 2005-03-23  Ulrich Drepper  <drepper@redhat.com>
660
661         [BZ #1112]
662         * pthread_create.c (__pthread_create_2_1): Rename syscall error
663         variable to scerr.
664
665 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
666
667         * tst-getpid1.c (do_test): Align stack passed to clone{2,}.
668
669 2005-02-25  Roland McGrath  <roland@redhat.com>
670
671         * alloca_cutoff.c: Correct license text.
672         * tst-unload.c: Likewise.
673         * sysdeps/pthread/allocalim.h: Likewise.
674         * sysdeps/pthread/pt-initfini.c: Likewise.
675         * sysdeps/pthread/bits/libc-lock.h: Likewise.
676         * sysdeps/pthread/bits/sigthread.h: Likewise.
677         * sysdeps/unix/sysv/linux/bits/local_lim.h: Likewise.
678         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
679
680 2005-02-16  Roland McGrath  <roland@redhat.com>
681
682         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
683         Use unsigned int * for ptr_nthreads.
684
685 2005-02-14  Alan Modra  <amodra@bigpond.net.au>
686
687         [BZ #721]
688         * sysdeps/powerpc/tcb-offsets.sym (thread_offsetof): Redefine to suit
689         gcc4.
690
691 2005-02-07  Richard Henderson  <rth@redhat.com>
692
693         [BZ #787]
694         * sysdeps/pthread/pthread.h (__sigsetjmp): Use pointer as first
695         argument.
696
697 2004-11-03  Marcus Brinkmann  <marcus@gnu.org>
698
699         * sysdeps/generic/lowlevellock.h (__generic_mutex_unlock): Fix
700         order of arguments in invocation of atomic_add_zero.
701
702 2005-01-26  Jakub Jelinek  <jakub@redhat.com>
703
704         [BZ #737]
705         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (__new_sem_trywait):
706         Use direct %gs segment access or, if NO_TLS_DIRECT_SEG_REFS,
707         at least gotntpoff relocation and addition.
708         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
709         Likewise.
710         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
711         Likewise.
712         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
713         Likewise.
714
715 2005-01-06  Ulrich Drepper  <drepper@redhat.com>
716
717         * allocatestack.c (init_one_static_tls): Adjust initialization of DTV
718         entry for static tls deallocation fix.
719         * sysdeps/alpha/tls.h (dtv_t): Change pointer type to be struct which
720         also contains information whether the memory pointed to is static
721         TLS or not.
722         * sysdeps/i386/tls.h: Likewise.
723         * sysdeps/ia64/tls.h: Likewise.
724         * sysdeps/powerpc/tls.h: Likewise.
725         * sysdeps/s390/tls.h: Likewise.
726         * sysdeps/sh/tls.h: Likewise.
727         * sysdeps/sparc/tls.h: Likewise.
728         * sysdeps/x86_64/tls.h: Likewise.
729
730 2004-12-27  Ulrich Drepper  <drepper@redhat.com>
731
732         * init.c (__pthread_initialize_minimal_internal): Use __sigemptyset.
733
734 2004-12-21  Jakub Jelinek  <jakub@redhat.com>
735
736         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Maintain 16 byte alignment of
737         %esp.
738         * Makefile (tests): Add tst-align2.
739         * tst-align2.c: New test.
740         * sysdeps/i386/Makefile (CFLAGS-tst-align{,2}.c): Add
741         -mpreferred-stack-boundary=4.
742
743 2004-12-18  Roland McGrath  <roland@redhat.com>
744
745         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h:
746         New file removed withdrawn for the moment.
747
748 2004-12-17  Richard Henderson  <rth@redhat.com>
749
750         * sysdeps/unix/sysv/linux/alpha/clone.S: New file.
751         * sysdeps/alpha/tcb-offsets.sym (TID_OFFSET): New.
752
753 2004-12-16  Ulrich Drepper  <drepper@redhat.com>
754
755         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h: New file.
756         Increased PTHREAD_STACK_MIN.
757
758         * tst-context1.c (stacks): Use bigger stack size.
759
760 2004-12-16  Jakub Jelinek  <jakub@redhat.com>
761
762         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: New file.
763         * sysdeps/sparc/tcb-offsets.sym: Add TID.
764
765 2004-12-15  Jakub Jelinek  <jakub@redhat.com>
766
767         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: New file.
768         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file.
769         * sysdeps/s390/tcb-offsets.sym (TID): Add.
770
771 2004-12-15  Ulrich Drepper  <drepper@redhat.com>
772
773         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: New file.
774
775 2004-12-14  Ulrich Drepper  <drepper@redhat.com>
776
777         * sysdeps/powerpc/tcb-offsets.sym: Add TID.
778         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: New file.
779
780         * tst-getpid1.c: If child crashes, report this first.  Print which
781         signal.
782
783 2004-12-09  Ulrich Drepper  <drepper@redhat.com>
784
785         * init.c (__pthread_initialize_minimal_internal): Also unblock
786         SIGSETXID.
787
788 2004-12-01  Jakub Jelinek  <jakub@redhat.com>
789
790         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
791         _POSIX_THREAD_CPUTIME): Define to 0.
792         * sysdeps/pthread/timer_create.c (timer_create): Remove unused code
793         handling CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
794         * sysdeps/pthread/timer_routines.c (__timer_signal_thread_pclk,
795         __timer_signal_thread_tclk): Remove.
796         (init_module): Remove their initialization.
797         (thread_cleanup): Remove their cleanup assertions.
798         * sysdeps/pthread/posix-timer.h (__timer_signal_thread_pclk,
799         __timer_signal_thread_tclk): Remove.
800         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
801         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
802         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
803
804 2004-12-07  Jakub Jelinek  <jakub@redhat.com>
805
806         * sysdeps/ia64/tcb-offsets.sym (TID): Add.
807         * sysdeps/unix/sysv/linux/ia64/clone2.S: New file.
808
809         * Makefile (tests): Add tst-getpid2.
810         * tst-getpid1.c (TEST_CLONE_FLAGS): Define.
811         (do_test): Use it.  Use __clone2 instead of clone on ia64.
812         * tst-getpid2.c: New test.
813
814 2004-12-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
815
816         * sysdeps/unix/sysv/linux/sh/clone.S: New file.
817
818 2004-12-04  Ulrich Drepper  <drepper@redhat.com>
819
820         * Makefile (tests): Add tst-getpid1.
821         * tst-getpid1.c: New file.
822         * sysdeps/unix/sysv/linux/i386/clone.S: New file.
823         * sysdeps/unix/sysv/linux/x86_64/clone.S: New file.
824
825 2004-12-02  Roland McGrath  <roland@redhat.com>
826
827         * Makefile (libpthread-nonshared): Variable removed.
828         ($(objpfx)libpthread_nonshared.a): Target removed.
829         ($(inst_libdir)/libpthread_nonshared.a): Likewise.
830         These are now handled by generic magic from
831         libpthread-static-only-routines being set.
832
833 2004-11-27  Ulrich Drepper  <drepper@redhat.com>
834
835         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_PRIORITIZED_IO,
836         _POSIX2_CHAR_TERM, _POSIX_THREAD_PRIO_INHERIT,
837         _POSIX_THREAD_PRIO_PROTECT): Define.
838         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
839         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
840         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
841
842 2004-11-26  Jakub Jelinek  <jakub@redhat.com>
843
844         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_ADVISORY_INFO,
845         _POSIX_SPORADIC_SERVER, _POSIX_THREAD_SPORADIC_SERVER, _POSIX_TRACE,
846         _POSIX_TRACE_EVENT_FILTER, _POSIX_TRACE_INHERIT, _POSIX_TRACE_LOG,
847         _POSIX_TYPED_MEMORY_OBJECTS, _POSIX_IPV6, _POSIX_RAW_SOCKETS): Define.
848         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
849         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
850         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
851
852 2004-11-24  Ulrich Drepper  <drepper@redhat.com>
853
854         * sysdeps/x86_64/Makefile [nptl]: Define CFLAGS-pthread_create.c.
855
856         * Makefile (libpthread-routines): Add pthread_setschedprio.
857         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setschedprio.
858         * sysdeps/pthread/pthread.h: Declare pthread_setschedprio.
859         * pthread_setschedprio.c: New file.
860
861 2004-11-20  Jakub Jelinek  <jakub@redhat.com>
862
863         * pthread_create.c (pthread_cancel): Add PTHREAD_STATIC_FN_REQUIRE.
864         * pthread_cancel.c (pthread_create): Likewise.
865
866         * Makefile (libpthread-routines): Add vars.
867         * sysdeps/pthread/createthread.c (__pthread_multiple_threads): Remove.
868         * init.c (__default_stacksize, __is_smp): Remove.
869         * vars.c: New file.
870         * pthreadP.h (__find_thread_by_id): If !SHARED, add weak_function
871         and define a wrapper macro.
872         (PTHREAD_STATIC_FN_REQUIRE): Define.
873         * allocatestack.c (__find_thread_by_id): Undefine.
874         * pthread_create (__pthread_keys): Remove.
875         (pthread_mutex_lock, pthread_mutex_unlock, pthread_once,
876         pthread_key_create, pthread_setspecific, pthread_getspecific): Add
877         PTHREAD_STATIC_FN_REQUIRE.
878
879 2004-11-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
880
881         * sysdeps/sh/tls.h (DB_THREAD_SELF): Set the correct bias
882         parameter to REGISTER macro.
883
884 2004-11-17  Roland McGrath  <roland@redhat.com>
885
886         * sysdeps/unix/sysv/linux/timer_routines.c (__start_helper_thread):
887         Make sure SIGCANCEL is blocked as well.
888
889 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
890
891         * sysdeps/pthread/setxid.h: New file.
892         * sysdeps/pthread/pthread-functions.h (HAVE_PTR__NPTL_SETXID): Remove.
893         (struct xid_command): Add forward decl.
894         (struct pthread_functions): Change return type of __nptl_setxid hook
895         to int.
896         * pthreadP.h (__nptl_setxid): Change return type to int.
897         * allocatestack.c (__nptl_setxid): Call INTERNAL_SYSCALL_NCS in the
898         calling thread, return its return value and set errno on failure.
899         * descr.h (struct xid_command): Change id type to long array.
900
901         * Makefile: Add rules to build and test tst-setuid1 and
902         tst-setuid1-static.
903         * tst-setuid1.c: New test.
904         * tst-setuid1-static.c: New test.
905
906 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
907
908         * Makefile (tests): Add tst-exit3.
909         * tst-exit3.c: New test.
910
911 2004-11-09  Ulrich Drepper  <drepper@redhat.com>
912
913         * Makefile (tests): Add tst-exit2.
914         * tst-exit2.c: New file.
915
916 2004-11-09  Roland McGrath  <roland@redhat.com>
917
918         [BZ #530]
919         * sysdeps/pthread/createthread.c (do_clone): Increment __nptl_nthreads
920         here, before calling clone.
921         * pthread_create.c (start_thread): Don't do it here.
922
923 2004-11-02  Jakub Jelinek  <jakub@redhat.com>
924
925         * sysdeps/unix/sysv/linux/smp.h: Include <errno.h>.
926
927 2004-10-29  Kaz  Kojima  <kkojima@rr.iij4u.or.jp>
928
929         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
930         Set ETIMEDOUT to errno when time is up.  Tweak to avoid
931         assembler warning.
932
933 2004-10-28  Jakub Jelinek  <jakub@redhat.com>
934
935         * pthread_create.c (__pthread_create_2_1): Avoid leaking stacks
936         if sched_priority is not between minprio and maxprio.
937
938 2004-10-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
939
940         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
941         (__pthread_cond_timedwait): Use clock_gettime syscall if exists.
942
943         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
944         (__lll_mutex_timedlock_wait): Fix a bad branch condition.
945
946 2004-10-24  Ulrich Drepper  <drepper@redhat.com>
947
948         * sysdeps/unix/sysv/linux/smp.h (is_smp_system): Use
949         not-cancelable I/O functions.
950
951 2004-10-21  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
952
953         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
954         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
955         make sure 2 is stored in the futex and we looked at the old value.
956         Fix a few other problems to return the correct value.
957
958 2004-10-14  Richard Henderson  <rth@redhat.com>
959
960         * sysdeps/alpha/tcb-offsets.sym (thread_offsetof): Redefine to
961         make gcc4 happy.
962
963 2004-10-06  Jakub Jelinek  <jakub@redhat.com>
964
965         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include pthreadP.h instead
966         of pthread-functions.h and pthreaddef.h.
967         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Likewise.
968
969         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
970         Change __data.__nwaiters from int to unsigned int.
971
972         * tst-clock2.c (do_test): Don't fail if _POSIX_THREAD_CPUTIME == 0 and
973         sysconf (_SC_THREAD_CPUTIME) returns negative value.
974
975         * allocatestack.c (__find_thread_by_id): Move attribute_hidden
976         before return type.
977
978         * sysdeps/s390/jmpbuf-unwind.h: Include bits/wordsize.h.
979         (JMPBUF_CFA_UNWINDS_ADJ): Subtract 96 resp. 160 bytes from CFA.
980
981 2004-10-06  Ulrich Drepper  <drepper@redhat.com>
982
983         * tst-cancel4.c (tf_msgrcv): Check for failure in msgget.  If the
984         test fails, remove message queue.
985         (tf_msgsnd): Likewise.
986
987 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
988
989         * tst-clock1.c: Change #ifdef to #if defined.
990         * tst-clock2.c: Likewise.
991         * tst-cond11.c: Likewise.
992
993         * sysdeps/pthread/timer_create.c (timer_create): Use
994         defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 instead of
995         defined CLOCK_PROCESS_CPUTIME_ID #ifs and similarly for
996         THREAD_CPUTIME.
997
998 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
999
1000         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME,
1001         _POSIX_THREAD_CPUTIME): Define to 0.
1002
1003 2004-10-04  Ulrich Drepper  <drepper@redhat.com>
1004
1005         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Define _POSIX_CPUTIME
1006         and _POSIX_THREAD_CPUTIME to zero.
1007         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
1008         * tst-barrier2.c: Fix testing for POSIX feature.
1009         * tst-clock1.c: Likewise.
1010         * tst-clock2.c: Likewise.
1011         * tst-cond11.c: Likewise.
1012         * tst-cond4.c: Likewise.
1013         * tst-cond6.c: Likewise.
1014         * tst-flock2.c: Likewise.
1015         * tst-mutex4.c: Likewise.
1016         * tst-mutex9.c: Likewise.
1017         * tst-rwlock12.c: Likewise.
1018         * tst-rwlock4.c: Likewise.
1019         * tst-signal1.c: Likewise.
1020         * tst-spin2.c: Likewise.
1021         * sysdeps/pthread/posix-timer.h: Likewise.
1022         * sysdeps/pthread/timer_create.c: Likewise.
1023         * sysdeps/pthread/timer_routines.c: Likewise.
1024
1025 2004-10-01  Ulrich Drepper  <drepper@redhat.com>
1026
1027         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
1028         (__lll_mutex_timedlock_wait): Address futex correctly.
1029
1030         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
1031         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
1032         make sure 2 is stored in the futex and we looked at the old value.
1033         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
1034         (__lll_mutex_timedlock_wait): Likewise.  Fix a few other problems
1035         which might very well made the code not working at all before.
1036         [BZ #417]
1037
1038 2004-09-28  Ulrich Drepper  <drepper@redhat.com>
1039
1040         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
1041         allow SIGSETXID to be sent.
1042         * sysdeps/pthread/sigaction.c (__sigaction): Don't allow action
1043         for SIGSETXID to be defined.
1044         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
1045         SIGSETXID cannot be blocked.
1046
1047         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1048         Add __extension__ to long long types.
1049         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1050         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1051         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1052         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1053         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
1054         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1055         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
1056
1057 2004-09-25  Ulrich Drepper  <drepper@redhat.com>
1058
1059         * descr.h (struct pthread): Add stopped_start field.
1060         * sysdeps/pthread/createthread.c (create_thread): Set
1061         start_stopped flag in descriptor for new thread appropriately.
1062         * pthread_create.c (start_thread): Only take lock to be stopped on
1063         startup if stopped_start flag says so.
1064
1065 2004-09-24  Ulrich Drepper  <drepper@redhat.com>
1066
1067         * pthread_create.c (__pthread_create_2_1): Remember whether thread
1068         is created detached and if yes, do not try to free the stack in case
1069         the thread creation failed.
1070         * sysdeps/pthread/createthread.c (do_clone): Free stack here if clone
1071         call fails.  Don't depend on INTERNAL_SYSCALL_ERRNO return zero in
1072         case there has been no error.  [BZ #405]
1073
1074         * pthread_create.c (start_thread): Don't wait for scheduler data
1075         etc to be set at the beginning of the function.  The cancellation
1076         infrastructure must have been set up.  And enable async
1077         cancellation before potentially going to sleep.  [BZ #401]
1078
1079 2004-09-20  Ulrich Drepper  <drepper@redhat.com>
1080
1081         * Versions: Remove exports for pthread_set*id_np functions.
1082         * sysdeps/pthread/pthread.h: Remove pthread_set*id_np prototypes
1083         for now.
1084         * Makefile: Don't build pthread_set*id code for now.
1085
1086 2004-09-19  Ulrich Drepper  <drepper@redhat.com>
1087
1088         * sysdeps/unix/sysv/linux/allocrtsig.c: Allocate second signal for
1089         internal use.
1090         * allocatestack.c (__nptl_setxid): New function.
1091         * descr.h (struct xid_command): Define type.
1092         * init.c (pthread_functions): Add ptr__nptl_setxid initialization.
1093         (sighandler_setxid): New function.
1094         (__pthread_initialize_minimal): Register sighandler_setxid for
1095         SIGCANCEL.
1096         * pt-allocrtsig.c: Update comment.
1097         * pthreadP.h: Define SIGSETXID.  Declare __xidcmd variable.
1098         Declare __nptl_setxid.
1099         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_setxid.
1100         * sysdeps/pthread/pthread.h: Declare pthread_setgid_np,
1101         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
1102         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
1103         and pthread_setresuid_np.
1104         * pthread_setgid_np.c: New file.
1105         * pthread_setuid_np.c: New file.
1106         * pthread_setegid_np.c: New file.
1107         * pthread_seteuid_np.c: New file.
1108         * pthread_setregid_np.c: New file.
1109         * pthread_setreuid_np.c: New file.
1110         * pthread_setresgid_np.c: New file.
1111         * pthread_setresuid_np.c: New file.
1112         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setgid_np,
1113         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
1114         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
1115         and pthread_setresuid_np.
1116         * Makefile (libpthread-routines): Add pthread_setuid, pthread_seteuid,
1117         pthread_setreuid, pthread_setresuid, pthread_setgid, pthread_setegid,
1118         pthread_setregid, and pthread_setresgid.
1119
1120 2004-09-18  Ulrich Drepper  <drepper@redhat.com>
1121
1122         * allocatestack.c (allocate_stack): Return EAGAIN instead of
1123         ENOMEM when out of memory.
1124
1125 2004-09-10  Roland McGrath  <roland@redhat.com>
1126
1127         [BZ #379]
1128         * allocatestack.c (allocate_stack): Remove [__ASSUME_CLONE_STOPPED]
1129         code, since we don't try to use the broken CLONE_STOPPED any more.
1130         * pthread_create.c (start_thread): Likewise.
1131
1132 2004-09-15  Richard Henderson  <rth@redhat.com>
1133
1134         * sysdeps/unix/sysv/linux/alpha/vfork.S: Use libc_hidden_def.
1135
1136 2004-09-01  David Mosberger  <davidm@hpl.hp.com>
1137
1138         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h
1139         (__libc_unwind_longjmp): Delete macro and declare as function.
1140         * sysdeps/unix/sysv/linux/ia64/Makefile (sysdep_routines): Mention
1141         __ia64_longjmp, sigstack_longjmp, and __sigstack_longjmp for
1142         nptl directory.
1143         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S: New file.
1144         * sysdeps/unix/sysv/linux/ia64/__sigstack_longjmp.c: New file.
1145         * sysdeps/unix/sysv/linux/ia64/unwind_longjmp.c: New file.
1146
1147 2004-09-12  Ulrich Drepper  <drepper@redhat.com>
1148
1149         * sysdeps/pthread/pthread.h: Make rwlock prototypes available also
1150         for __USE_XOPEN2K.
1151         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define rwlock
1152         types also for __USE_XOPEN2K.
1153         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1154         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1155         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1156         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1157         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
1158         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1159         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
1160         [BZ #320]
1161
1162 2004-09-08  Ulrich Drepper  <drepper@redhat.com>
1163
1164         * sysdeps/pthread/pthread.h
1165         (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): Make safe for C++.
1166         (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Likewise.
1167         (PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Likewise.
1168         (PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP): Likewise.
1169         [BZ #375]
1170
1171 2004-09-07  Ulrich Drepper  <drepper@redhat.com>
1172
1173         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Allow
1174         PSEUDO to be used with . prefix.
1175
1176         * sysdeps/unix/sysv/linux/alpha/pthread_once.c (__pthread_once):
1177         Use atomic_increment instead of atomic_exchange_and_add.
1178         * sysdeps/unix/sysv/linux/sparc/pthread_once.c (__pthread_once):
1179         Likewise.
1180         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
1181         Likewise.
1182         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
1183         Likewise.
1184
1185         * allocatestack.c (allocate_stack): Use atomic_increment_val
1186         instead of atomic_exchange_and_add.
1187         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Likewise.
1188         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
1189         Likewise.
1190         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
1191         Likewise.
1192
1193         * sysdeps/pthread/pthread.h (pthread_once): Remove __THROW since
1194         the initialization function might throw.
1195
1196 2005-09-05  Richard Henderson  <rth@redhat.com>
1197
1198         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
1199         Move definition inside libpthread, libc, librt check.  Provide
1200         definition for rtld.
1201
1202 2004-09-02  Ulrich Drepper  <drepper@redhat.com>
1203
1204         * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp.
1205         * sysdeps/i386/jmpbuf-unwind.h: Likewise
1206         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
1207         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
1208         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
1209         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
1210         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
1211         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
1212         * unwind.c: Use it.
1213
1214         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
1215         Rename __data.__clock to __data.__nwaiters, make it unsigned int.
1216         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
1217         Likewise.
1218         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
1219         Decrement __nwaiters.  If pthread_cond_destroy has been called and
1220         this is the last waiter, signal pthread_cond_destroy caller and
1221         avoid using the pthread_cond_t structure after unlock.
1222         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
1223         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1224         Read clock type from the least significant bits of __nwaiters instead
1225         of __clock.
1226         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
1227         * sysdeps/unix/sysv/linux/internaltypes.h: Define COND_CLOCK_BITS.
1228
1229 2004-08-31  Jakub Jelinek  <jakub@redhat.com>
1230
1231         [BZ #342]
1232         * Makefile (tests): Add tst-cond20 and tst-cond21.
1233         * tst-cond20.c: New test.
1234         * tst-cond21.c: New test.
1235         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
1236         (pthread_cond_t): Rename __data.__clock to __data.__nwaiters, make
1237         it unsigned int.
1238         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
1239         Likewise.
1240         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
1241         (pthread_cond_t): Likewise.
1242         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
1243         Likewise.
1244         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1245         Likewise.
1246         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
1247         Likewise.
1248         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_clock): Remove.
1249         (cond_nwaiters): New.
1250         (clock_bits): New.
1251         * pthread_cond_destroy.c (__pthread_cond_destroy): Return EBUSY
1252         if there are waiters not signalled yet.
1253         Wait until all already signalled waiters wake up.
1254         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Decrement
1255         __nwaiters.  If pthread_cond_destroy has been called and this is the
1256         last waiter, signal pthread_cond_destroy caller and avoid using
1257         the pthread_cond_t structure after unlock.
1258         (__pthread_cond_wait): Increment __nwaiters in the beginning,
1259         decrement it when leaving.  If pthread_cond_destroy has been called
1260         and this is the last waiter, signal pthread_cond_destroy caller.
1261         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
1262         Likewise.  Read clock type from the least significant bits of
1263         __nwaiters instead of __clock.
1264         * pthread_condattr_setclock.c (pthread_condattr_setclock): Check
1265         whether clock ID can be encoded in COND_CLOCK_BITS bits.
1266         * pthread_condattr_getclock.c (pthread_condattr_getclock): Decode
1267         clock type just from the last COND_CLOCK_BITS bits of value.
1268         * pthread_cond_init.c (__pthread_cond_init): Initialize __nwaiters
1269         instead of __clock, just from second bit of condattr's value.
1270
1271 2004-08-30  Jakub Jelinek  <jakub@redhat.com>
1272
1273         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Include
1274         bits/wordsize.h.  Make the header match i386 header when __WORDSIZE
1275         != 64.
1276         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
1277
1278 2004-08-15  Roland McGrath  <roland@frob.com>
1279
1280         * pthread_atfork.c: Update copyright terms including special exception
1281         for these trivial files, which are statically linked into executables
1282         that use dynamic linking for the significant library code.
1283
1284 2004-08-09  Jakub Jelinek  <jakub@redhat.com>
1285
1286         * DESIGN-rwlock.txt: Add decreasing of nr_readers_queued to
1287         pthread_rwlock_rdlock.
1288         * sysdeps/pthread/pthread_rwlock_rdlock (__pthread_rwlock_rdlock):
1289         Decrease __nr_readers_queued after reacquiring lock.
1290         * sysdeps/pthread/pthread_rwlock_timedrdlock
1291         (pthread_rwlock_timedrdlock): Likewise.
1292         Reported by Bob Cook <bobcook47@hotmail.com>.
1293
1294 2004-08-11  Jakub Jelinek  <jakub@redhat.com>
1295
1296         * tst-rwlock14.c (tf): Read main thread handle from *ARG
1297         before pthread_barrier_wait.
1298
1299 2004-08-07  Ulrich Drepper  <drepper@redhat.com>
1300
1301         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
1302         Remove unnecessary exception handling data.
1303
1304 2004-07-23  Jakub Jelinek  <jakub@redhat.com>
1305
1306         [BZ #284]
1307         * sysdeps/pthread/pthread.h (pthread_getcpuclockid): Use __clockid_t
1308         instead of clockid_t.
1309
1310 2004-07-21  Roland McGrath  <roland@redhat.com>
1311
1312         * Makefile ($(objpfx)multidir.mk): Use $(make-target-directory).
1313
1314 2004-07-19  Roland McGrath  <roland@redhat.com>
1315
1316         * tst-cancel4.c (tf_waitid): Use WEXITED flag bit if available.
1317
1318 2004-07-02  Roland McGrath  <roland@redhat.com>
1319
1320         * configure: Don't exit.
1321
1322 2004-07-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1323
1324         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
1325         (__pthread_cond_timedwait): Check for invalid nanosecond in
1326         timeout value.
1327
1328 2004-07-07  Ulrich Drepper  <drepper@redhat.com>
1329
1330         * Makefile: Add rules to build and run tst-fini1.
1331         * tst-fini1.c: New file.
1332         * tst-fini1mod.c: New file.
1333
1334 2004-07-05  Ulrich Drepper  <drepper@redhat.com>
1335
1336         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
1337         if no cancellation support is needed.
1338         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
1339         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
1340         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
1341         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
1342         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
1343         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
1344         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
1345         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
1346         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
1347
1348         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define __NR_futex
1349         only if not already defined.
1350
1351 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
1352
1353         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_unlock): Use
1354         constraint "m" instead of "0" for futex.
1355
1356         * shlib-versions: Add powerpc64-.*-linux.*.
1357
1358 2004-07-04  Jakub Jelinek  <jakub@redhat.com>
1359
1360         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
1361         (pthread_rwlock_timedrdlock): Use cmpq instead of cmpl to check
1362         for valid tv_nsec.
1363         * tst-rwlock14.c (do_test): Test for invalid tv_nsec equal to
1364         1 billion and 64-bit tv_nsec which is valid when truncated to 32
1365         bits.
1366
1367 2004-06-29  Roland McGrath  <roland@redhat.com>
1368
1369         * Banner: NPTL no longer has its own version number.
1370         * Makefile (nptl-version): Variable removed.
1371         * sysdeps/pthread/Makefile (CFLAGS-confstr.c): Set LIBPTHREAD_VERSION
1372         using $(version), the glibc version number.
1373
1374 2004-06-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1375
1376         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
1377         Fix branch offset for a PLT entry.
1378         * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post):
1379         Likewise.
1380         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
1381         Likewise.
1382         * sysdeps/unix/sysv/linux/sh/sem_trywait.S (__new_sem_trywait):
1383         Likewise.
1384         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait):
1385         Likewise.
1386
1387 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
1388
1389         * sysdeps/alpha/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define
1390         unconditionally.
1391
1392 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
1393
1394         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
1395         (pthread_rwlock_timedwrlock): Return EINVAL if tv_nsec is negative,
1396         instead of tv_sec.
1397         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
1398         (pthread_rwlock_timedrdlock): Likewise.
1399
1400 2004-06-22  Jakub Jelinek  <jakub@redhat.com>
1401
1402         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
1403         Set __r7 to val, not mutex.
1404
1405 2004-06-27  Ulrich Drepper  <drepper@redhat.com>
1406
1407         * Makefile: Add rules to build tst-rwlock14.
1408         * tst-rwlock14.c: New file.
1409
1410 2004-06-24  Boris Hu  <boris.hu@intel.com>
1411
1412         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Add timeout validation
1413         check.
1414         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
1415
1416 2004-06-19  Andreas Jaeger  <aj@suse.de>
1417
1418         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix
1419         assembler in last patch.
1420
1421 2004-06-17  Ulrich Drepper  <drepper@redhat.com>
1422
1423         * sysdeps/pthread/pthread_cond_timedwait.c
1424         (__pthread_cond_timedwait): Also check for negativ nanoseconds.
1425         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1426         (__pthread_cond_timedwait): Check for invalid nanosecond in
1427         timeout value.
1428         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
1429         * tst-cond19.c: New file.
1430         * Makefile: Add rules to build and run tst-cond19.
1431
1432 2004-06-15  Steven Munroe  <sjmunroe@us.ibm.com>
1433
1434         * tst-context1.c (GUARD_PATTERN): Defined.
1435         (tst_context_t): Define struct containing ucontext_t & guard words.
1436         (ctx): Declare as an array of tst_context_t.
1437         (fct): Verify uc_link & guard words are still valid.
1438         (tf): Initialize guard words in ctx.  Adjust ctx refs for new struct.
1439
1440 2004-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1441
1442         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1443         Add __data.__futex field, reshuffle __data.__clock.
1444         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
1445         (__pthread_cond_signal): Increment __futex at the same time as
1446         __wakeup_seq or __total_seq.  Pass address of __futex instead of
1447         address of low 32-bits of __wakeup_seq to futex syscall.
1448         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
1449         (__pthread_cond_wait): Likewise.  Pass __futex value from before
1450         releasing internal lock to FUTEX_WAIT.
1451         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
1452         (__pthread_cond_timedwait): Likewise.
1453         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
1454         (FUTEX_CMP_REQUEUE): Define.
1455         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
1456         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
1457         Pass __futex value from before the unlock and __futex address instead
1458         of address of low 32-bits of __wakeup_seq to futex syscall.
1459         Fallback to FUTEX_WAKE all on any errors.
1460
1461 2004-06-08  Jakub Jelinek  <jakub@redhat.com>
1462
1463         * pthread_mutexattr_getpshared.c (pthread_mutex_getpshared): Fix
1464         comment typo.
1465         * pthread_mutexattr_gettype.c (pthread_mutexattr_gettype): Likewise.
1466         * pthread_mutexattr_init.c (__pthread_mutexattr_init): Likewise.
1467         * pthread_mutexattr_settype.c (__pthread_mutexattr_settype): Likewise.
1468         * pthread_mutexattr_setpshared.c (pthread_mutexattr_setpshared):
1469         Likewise.  Reported by Bob Cook <bobcook47@hotmail.com>.
1470
1471 2004-06-11  Martin Schwidefsky  <schwidefsky@de.ibm.com>
1472
1473         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_compare_and_swap):
1474         Add memory clobber to inline assembly.
1475         (__lll_mutex_trylock): Likewise.
1476         (__lll_mutex_cond_trylock): Likewise.
1477
1478 2004-06-07  Martin Schwidefsky  <schwidefsky@de.ibm.com>
1479
1480         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
1481         Pass val argument as 6th system call argument in %r7.
1482
1483 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
1484
1485         * Makefile (tests): Add tst-cond16.
1486         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_futex): Add.
1487         * pthread_cond_init.c (__pthread_cond_init): Clear __data.__futex.
1488         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
1489         Add __data.__futex field, reshuffle __data.__clock.
1490         * sysdeps/unix/sysv/linux/i386/pthread_cond_signal.S
1491         (__pthread_cond_signal): Increment __futex at the same time as
1492         __wakeup_seq or __total_seq.  Pass address of __futex instead of
1493         address of low 32-bits of __wakeup_seq to futex syscall.
1494         * sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S
1495         (__pthread_cond_wait): Likewise.  Pass __futex value from before
1496         releasing internal lock to FUTEX_WAIT.
1497         * sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S
1498         (__pthread_cond_timedwait): Likewise.
1499         * sysdeps/unix/sysv/linux/i386/pthread_cond_broadcast.S
1500         (FUTEX_CMP_REQUEUE): Define.
1501         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
1502         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
1503         Pass __futex value from before the unlock and __futex address instead
1504         of address of low 32-bits of __wakeup_seq to futex syscall.
1505         Fallback to FUTEX_WAKE all on any errors.
1506         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_CMP_REQUEUE):
1507         Define.
1508         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1509         internally.  Return non-zero if error, zero if success.
1510         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
1511         Add __data.__futex field, reshuffle __data.__clock.
1512         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_CMP_REQUEUE):
1513         Define.
1514         (lll_futex_requeue): Add val argument, return 1 unconditionally
1515         for the time being.
1516         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
1517         Add __data.__futex field, reshuffle __data.__clock.
1518         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_CMP_REQUEUE):
1519         Define.
1520         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1521         internally.  Return non-zero if error, zero if success.
1522         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
1523         (pthread_cond_t): Add __data.__futex field, reshuffle __data.__clock.
1524         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_CMP_REQUEUE):
1525         Define.
1526         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1527         internally.  Return non-zero if error, zero if success.
1528         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
1529         Add __data.__futex field, reshuffle __data.__clock.
1530         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_CMP_REQUEUE):
1531         Define.
1532         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1533         internally.  Return non-zero if error, zero if success.
1534         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
1535         Add __data.__futex field, reshuffle __data.__clock.
1536         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
1537         Add __data.__futex field, reshuffle __data.__clock.
1538         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal):
1539         Increment __futex at the same time as __wakeup_seq or __total_seq.
1540         Pass address of __futex instead of address of low 32-bits of
1541         __wakeup_seq to futex syscall.
1542         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
1543         Pass __futex value from before releasing internal lock
1544         to FUTEX_WAIT.
1545         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
1546         Likewise.  Avoid unnecessary shadowing of variables.
1547         * sysdeps/pthread/pthread_cond_broadcast.c (__pthread_cond_broadcast):
1548         Set __futex to 2 * __total_seq.  Pass __futex value from before the
1549         unlock and __futex address instead of address of low 32-bits of
1550         __wakeup_seq to futex_requeue macro, adjust for new return value
1551         meaning.
1552         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
1553         (__pthread_cond_signal): Increment __futex at the same time as
1554         __wakeup_seq or __total_seq.  Pass address of __futex instead of
1555         address of low 32-bits of __wakeup_seq to futex syscall.
1556         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
1557         (__pthread_cond_wait): Likewise.  Pass __futex value from before
1558         releasing internal lock to FUTEX_WAIT.
1559         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1560         (__pthread_cond_timedwait): Likewise.
1561         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1562         (FUTEX_CMP_REQUEUE): Define.
1563         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
1564         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
1565         Pass __futex value from before the unlock and __futex address instead
1566         of address of low 32-bits of __wakeup_seq to futex syscall.
1567         Fallback to FUTEX_WAKE all on any errors.
1568
1569 2004-06-03  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1570
1571         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_mutex_lock):
1572         Add nop to align the end of critical section.
1573         (lll_mutex_cond_lock, lll_mutex_timedlock): Likewise.
1574
1575 2004-06-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1576
1577         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1578         Add __broadcast_seq field.
1579         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Mark
1580         all waiters as woken with woken_seq and bump broadcast counter.
1581         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use new
1582         __broadcast_seq.  Increment __woken_seq correctly when cleanuped.
1583         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
1584         Comment typo fixes.  Avoid returning -ETIMEDOUT.
1585
1586 2004-06-01  Ulrich Drepper  <drepper@redhat.com>
1587
1588         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1589         (__condvar_tw_cleanup): Fix access to saved broadcast_seq value.
1590         Reported by Kaz Kojima.
1591
1592 2004-05-25  Jakub Jelinek  <jakub@redhat.com>
1593
1594         * sysdeps/unix/sysv/linux/aio_misc.h: New file.
1595
1596 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
1597
1598         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Compare
1599         __broadcast_seq with bc_seq after acquiring internal lock instead of
1600         before it.
1601
1602 2004-05-18  Jakub Jelinek  <jakub@redhat.com>
1603
1604         * Makefile (.NOTPARALLEL): Only serialize make check/xcheck, not
1605         compilation.
1606         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1607         (__pthread_cond_timedwait): Avoid returning -ETIMEDOUT.
1608         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
1609         (pthread_cond_t): Add __data.__broadcast_seq field.
1610         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1611         (FRAME_SIZE): Define.
1612         (__pthread_cond_timedwait): Use it.  Store/check broadcast_seq.
1613         Comment typo fixes.
1614         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (FRAME_SIZE):
1615         Define.
1616         (__pthread_cond_wait): Use it.  Store/check broadcast_seq.  Comment
1617         typo fixes.
1618         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1619         (__pthread_cond_broadcast): Increment broadcast_seq.  Comment typo
1620         fixes.
1621
1622 2004-05-18  Ulrich Drepper  <drepper@redhat.com>
1623
1624         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add broadcast_seq entry.
1625         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
1626         Add __broadcast_seq field.
1627         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1628         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1629         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1630         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1631         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1632         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Mark
1633         all waiters as woken with woken_seq and bump broadcast counter.
1634         * sysdeps/pthread/pthread_cond_broadcast.c: Likewise.
1635         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use new
1636         __broadcast_seq field.
1637         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1638         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
1639         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
1640         * pthread_cond_init.c: Initialize __broadcast_seq field.
1641         * Makefile (tests): Add tst-cond17 and tst-cond18.
1642         Add .NOTPARALLEL goal.
1643         * tst-cond16.c: New file.  From Jakub.
1644         * tst-cond17.c: New file.  From Jakub.
1645         * tst-cond18.c: New file.  From Jakub.
1646
1647 2004-05-16  Ulrich Drepper  <drepper@redhat.com>
1648
1649         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Correct some
1650         unwind info.
1651
1652         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
1653         Parametrize frame size.  Correct some unwind info.
1654         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1655
1656 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
1657
1658         * tst-stack3.c: Note testing functionality beyond POSIX.
1659
1660 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
1661
1662         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (USE___THREAD):
1663         Change conditional from ifdef to if.
1664
1665 2004-04-23  Jakub Jelinek  <jakub@redhat.com>
1666
1667         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SYSDEP_CANCEL_ERRNO,
1668         SYSDEP_CANCEL_ERROR): Define.
1669         (PSEUDO): Use it.
1670
1671 2004-05-01  Jakub Jelinek  <jakub@redhat.com>
1672
1673         * Versions (libpthread): Remove __pthread_cleanup_upto@@GLIBC_PRIVATE.
1674
1675 2004-04-20  Jakub Jelinek  <jakub@redhat.com>
1676
1677         * sem_unlink.c (sem_unlink): Change EPERM into EACCES.
1678
1679 2004-04-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1680
1681         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Add frame info.
1682         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
1683         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Remove unneeded frame
1684         info.  Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
1685
1686 2004-04-19  Ulrich Drepper  <drepper@redhat.com>
1687
1688         * sysdeps/unix/sysv/linux/timer_routines.c: Make sure helper
1689         thread has all signals blocked.
1690
1691 2004-04-18  Andreas Jaeger  <aj@suse.de>
1692
1693         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
1694         (SEM_VALUE_MAX): Add missing brace.
1695
1696 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
1697
1698         * sysdeps/pthread/Makefile (tests): Add tst-mqueue8x
1699         in rt subdir.
1700         (CFLAGS-tst-mqueue8x.c): Add -fexceptions.
1701         * sysdeps/pthread/tst-mqueue8x.c: New test.
1702         * tst-cancel4.c: Update comment about message queues.
1703
1704         * sysdeps/pthread/timer_gettime.c (timer_gettime): For expired timer
1705         return it_value { 0, 0 }.
1706         * sysdeps/pthread/timer_create.c (timer_create): Handle SIGEV_NONE
1707         like SIGEV_SIGNAL.
1708         * sysdeps/pthread/timer_routines.c (thread_expire_timer): Remove
1709         assertion for SIGEV_NONE.
1710         (thread_attr_compare): Compare all attributes, not just a partial
1711         subset.
1712
1713 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
1714
1715         * sysdeps/unix/sysv/linux/mq_notify.c: Include stdlib.h.
1716
1717 2004-04-17  Ulrich Drepper  <drepper@redhat.com>
1718
1719         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h (SEM_VALUE_MAX):
1720         Just use a plain number.
1721         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Likewise.
1722         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
1723         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
1724         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
1725         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
1726         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
1727         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
1728
1729 2004-04-16  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1730
1731         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Remove unneeded
1732         frame info.
1733         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
1734
1735 2004-04-15  Jakub Jelinek  <jakub@redhat.com>
1736
1737         * sysdeps/unix/sysv/linux/timer_routines.c: Include errno.h.
1738         (timer_helper_thread): Use inline rt_sigtimedwait syscall instead
1739         of calling sigwaitinfo.
1740
1741 2004-04-16  Ulrich Drepper  <drepper@redhat.com>
1742
1743         * allocatestack.c (allocate_stack): Set reported_guardsize
1744         unconditionally.
1745         * pthread_getattr_np.c (pthread_getattr_np): Use
1746         reported_guardsize instead of guardsize.
1747         * descr.h (struct pthread): Add reported_guardsize field.
1748
1749 2004-04-13  Jakub Jelinek  <jakub@redhat.com>
1750
1751         * sysdeps/unix/sysv/linux/mq_notify.c: Shut up GCC warning.
1752
1753 2004-04-12  Ulrich Drepper  <drepper@redhat.com>
1754
1755         * sysdeps/unix/sysv/linux/mq-notify.c: New file.
1756
1757 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
1758
1759         * sysdeps/unix/sysv/linux/bits/local_lim.h (MQ_PRIO_MAX): Define.
1760         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h (MQ_PRIO_MAX): Define.
1761         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h (MQ_PRIO_MAX): Define.
1762         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h (MQ_PRIO_MAX): Define.
1763         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_MESSAGE_PASSING):
1764         Define.
1765         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
1766         (_POSIX_MESSAGE_PASSING): Define.
1767         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h
1768         (_POSIX_MESSAGE_PASSING): Define.
1769         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h
1770         (_POSIX_MESSAGE_PASSING): Define.
1771
1772 2004-04-04  Ulrich Drepper  <drepper@redhat.com>
1773
1774         * tst-context1.c (fct): Check whether correct stack is used.
1775
1776 2004-04-03  Ulrich Drepper  <drepper@redhat.com>
1777
1778         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Never use
1779         matching constraints for asm mem parameters.
1780
1781         * tst-clock2.c (tf): Don't define unless needed.
1782
1783 2004-03-30  H.J. Lu  <hongjiu.lu@intel.com>
1784
1785         * Makefile (link-libc-static): Use $(static-gnulib) instead of
1786         $(gnulib).
1787
1788 2004-03-30  Ulrich Drepper  <drepper@redhat.com>
1789
1790         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_deallocate_tsd.
1791         * init.c (pthread_functions): Add ptr__nptl_deallocate_tsd.
1792         * pthreadP.h: Declare __nptl_deallocate_tsd.
1793         * pthread_create.c (deallocate_tsd): Remove to __nptl_deallocate_tsd.
1794         Adjust caller.
1795
1796         * Makefile (tests): Add tst-tsd5.
1797         * tst-tsd5.c: New file.
1798
1799 2004-03-29  Ulrich Drepper  <drepper@redhat.com>
1800
1801         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
1802         (__pthread_attr_setaffinity_old): Prepend GLIBC_ to version names
1803         is SHLIB_COMPAT check.
1804         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
1805         (__pthread_attr_getaffinity_old): Likewise.
1806         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
1807         (__pthread_getaffinity_old): Likewise.
1808         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
1809         (__pthread_setaffinity_old): Likewise.
1810
1811 2004-03-26  Ulrich Drepper  <drepper@redhat.com>
1812
1813         * allocatestack.c (_make_stacks_executable): Call
1814         _dl_make_stack_executable first.
1815
1816 2004-03-24  Roland McGrath  <roland@redhat.com>
1817
1818         * sysdeps/i386/pthread_spin_lock.c (pthread_spin_lock): Use "m"
1819         constraint instead of "0".
1820
1821 2004-03-24  Ulrich Drepper  <drepper@redhat.com>
1822
1823         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
1824         (lll_mutex_cond_trylock): Define as wrapper around __lll_cond_trylock.
1825
1826         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Reorganize
1827         code to avoid warning.
1828
1829 2004-03-24  Andreas Jaeger  <aj@suse.de>
1830
1831         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
1832         (__pthread_attr_setaffinity_old): Remove const.
1833
1834 2004-03-23  Ulrich Drepper  <drepper@redhat.com>
1835
1836         * sysdeps/unix/sysv/linux/smp.h: New file.
1837         * sysdeps/unix/sysv/linux/sh/smp.h: New file.
1838         * init.c: Define __is_smp.
1839         (__pthread_initialize_minimal_internal): Call is_smp_system to
1840         initialize __is_smp.
1841         * pthreadP.h: Declare __is_smp.
1842         Define MAX_ADAPTIVE_COUNT is necessary.
1843         * pthread_mutex_init.c: Add comment regarding __spins field.
1844         * pthread_mutex_lock.c: Implement adaptive mutex type.
1845         * pthread_mutex_timedlock.c: Likewise.
1846         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
1847         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
1848         Add __spins field.
1849         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1850         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1851         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1852         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
1853         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1854         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1855         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
1856         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define
1857         lll_mutex_cond_trylock.
1858         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1859         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
1860         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1861         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1862         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1863         Define BUSY_WAIT_NOP.
1864         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1865         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
1866
1867         * tst-mutex5.c: Add support for testing adaptive mutexes.
1868         * tst-mutex7.c: Likewise.
1869         * tst-mutex5a.c: New file.
1870         * tst-mutex7a.c: New file.
1871         * Makefile (tests): Add tst-mutex5a and tst-mutex7a.
1872
1873         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
1874         (__lll_mutex_timedlock_wait): Preserve r8 and r9 since the
1875         vgettimeofday call might destroy the content.
1876
1877         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use hint
1878         @pause in the loop.
1879
1880         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
1881         No need to restrict type of ret.  Make it int.  Add comment.
1882
1883         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
1884         Remove unnecessary setne instruction.
1885
1886 2004-03-22  Jakub Jelinek  <jakub@redhat.com>
1887
1888         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
1889         (__pthread_getaffinity_new): Use INT_MAX instead of UINT_MAX.
1890         * pthread_getattr_np.c (pthread_getattr_np): Double size every cycle.
1891         If realloc fails, break out of the loop.
1892
1893 2004-03-20  Andreas Jaeger  <aj@suse.de>
1894
1895         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
1896         (__pthread_setaffinity_old): Fix interface.
1897         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
1898         (__pthread_getaffinity_old): Likewise.
1899
1900         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
1901         (__pthread_setaffinity_new): Remove duplicate declaration.
1902
1903 2004-03-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1904
1905         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (CENABLE): Save
1906         the return value to a safe register.
1907         (CDISABLE): Set the function argument correctly.
1908
1909 2004-03-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1910
1911         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XCHG): Define.
1912         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
1913         Rewrite so that only one locked memory operation per round is needed.
1914         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
1915         (pthread_barrier_wait): After wakeup, release lock only when the
1916         last thread stopped using the barrier object.
1917         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
1918         (__pthread_cond_wait): Don't store mutex address if the current
1919         value is ~0l.  Add correct cleanup support and unwind info.
1920         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
1921         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
1922         (__pthread_cond_broadcast): Don't use requeue for pshared condvars.
1923         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Update comment.
1924         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
1925         Add correct cleanup support and unwind info.
1926         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait): Likewise.
1927         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Add unwind
1928         information for syscall wrappers.
1929
1930 2004-03-18  Ulrich Drepper  <drepper@redhat.com>
1931
1932         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
1933         cpusetsize field, remove next.
1934         * sysdeps/pthread/pthread.h (pthread_getaffinity_np): Add new second
1935         parameter for size of the CPU set.
1936         (pthread_setaffinity_np): Likewise.
1937         (pthread_attr_getaffinity_np): Likewise.
1938         (pthread_attr_setaffinity_np): Likewise.
1939         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: Implement
1940         interface change, keep compatibility code.
1941         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: Likewise.
1942         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: Likewise.
1943         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: Likewise.
1944         * pthreadP.h: Remove hidden_proto for pthread_getaffinity_np.  Declare
1945         __pthread_getaffinity_np.
1946         * Versions: Add version for changed interfaces.
1947         * tst-attr3.c: Adjust test for interface change.
1948         * pthread_getattr_np.c: Query the kernel about the affinity mask with
1949         increasing buffer sizes.
1950         * pthread_attr_destroy.c: Remove unused list handling.
1951         * pthread_attr_init.c: Likewise.
1952
1953 2004-03-17  Roland McGrath  <roland@redhat.com>
1954
1955         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Pass missing
1956         first argument to clock_getres so we ever enable kernel timers.
1957
1958 2004-03-15  Ulrich Weigand  <uweigand@de.ibm.com>
1959
1960         * init.c (nptl_version): Add __attribute_used__ to nptl_version.
1961
1962 2004-03-12  Richard Henderson  <rth@redhat.com>
1963
1964         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Propagate
1965         oldvalue from CENABLE to CDISABLE.
1966
1967 2004-03-12  Ulrich Drepper  <drepper@redhat.com>
1968
1969         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define HOST_NAME_MAX.
1970         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
1971         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
1972         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
1973
1974 2004-03-11  Richard Henderson  <rth@redhat.com>
1975
1976         * sysdeps/alpha/tcb-offsets.sym (PID_OFFSET): New.
1977         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: Save/restore PID.
1978         * sysdeps/unix/sysv/linux/alpha/vfork.S: New file.
1979
1980 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
1981
1982         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Use jgnl
1983         instead of jnl instruction to jump to SYSCALL_ERROR_LABEL.
1984         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S (__vfork): Likewise.
1985
1986 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
1987
1988         * forward.c (__pthread_cond_broadcast_2_0,
1989         __pthread_cond_destroy_2_0, __pthread_cond_init_2_0,
1990         __pthread_cond_signal_2_0, __pthread_cond_wait_2_0,
1991         __pthread_cond_timedwait_2_0): Use return 0 as defaction instead of 0.
1992
1993 2004-03-11  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1994
1995         * sysdeps/sh/tcb-offsets.sym: Add PID.
1996         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: Properly handle PID cache.
1997         * sysdeps/unix/sysv/linux/sh/vfork.S: New file.
1998
1999 2004-03-10  Ulrich Drepper  <drepper@redhat.com>
2000
2001         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: No need to
2002         include <sysdep-cancel.h>, vfork is no cancellation point.
2003         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: Likewise.
2004         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: Likewise.
2005         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: Likewise.
2006
2007 2004-03-10  Jakub Jelinek  <jakub@redhat.com>
2008
2009         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S (__vfork): Add
2010         libc_hidden_def.
2011         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Likewise.
2012         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S (__vfork):
2013         Likewise.
2014         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S (__vfork):
2015         Likewise.
2016         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S (__vfork): Likewise.
2017         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S (__vfork): Likewise.
2018         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Include tcb-offsets.h.
2019         * sysdeps/unix/sysv/linux/ia64/vfork.S (__vfork): Use DO_CALL instead
2020         of DO_CALL_VIA_BREAK.  Work around a gas problem.
2021
2022         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: Remove.
2023         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file.
2024         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: New file.
2025         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file.
2026         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: New file.
2027         * sysdeps/powerpc/tcb-offsets.sym: Add PID.
2028
2029         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S (__vfork): Don't use
2030         a local register for saving old PID.  Negate PID in parent upon exit.
2031
2032         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include
2033         tcb-offsets.h.
2034         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
2035         before syscall, set to the old value in the parent afterwards.
2036         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: New file.
2037         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: Include
2038         tcb-offsets.h.
2039         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
2040         before syscall, set to the old value in the parent afterwards.
2041         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: New file.
2042         * sysdeps/s390/tcb-offsets.sym: Add PID.
2043
2044         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: Remove.
2045         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: New file.
2046         * sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S: New file.
2047         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: New file.
2048         * sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: New file.
2049         * sysdeps/sparc/tcb-offsets.sym: Add PID.
2050
2051 2004-03-10  Andreas Schwab  <schwab@suse.de>
2052
2053         * sysdeps/ia64/tcb-offsets.sym: Add PID.
2054         * sysdeps/unix/sysv/linux/ia64/vfork.S: New file.
2055         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Properly handle PID cache.
2056
2057 2004-03-09  Jakub Jelinek  <jakub@redhat.com>
2058
2059         * tst-cancel20.c (do_one_test): Clear in_sh_body first.
2060         * tst-cancel21.c (do_one_test): Likewise.
2061         Reported by Gordon Jin <gordon.jin@intel.com>.
2062
2063 2004-02-09  Jakub Jelinek  <jakub@redhat.com>
2064
2065         * sysdeps/unix/sysv/linux/i386/vfork.S (SAVE_PID): Negate PID
2066         if non-zero and set to INT_MIN if zero.
2067         * sysdeps/unix/sysv/linux/x86_64/vfork.S (SAVE_PID): Likewise.
2068         * sysdeps/unix/sysv/linux/i386/pt-vfork.S: Include tcb-offsets.h.
2069         (SAVE_PID, RESTORE_PID): Define.
2070         (__vfork): Use it.
2071         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: Include tcb-offsets.h.
2072         Use relative path to avoid including NPTL i386/vfork.S.
2073         (SAVE_PID, RESTORE_PID): Define.
2074         * sysdeps/unix/sysv/linux/raise.c: Include limits.h.
2075         (raise): Handle THREAD_SELF->pid INT_MIN the same as 0.
2076         * Makefile (tests): Add tst-vfork1, tst-vfork2, tst-vfork1x and
2077         tst-vfork2x.
2078         (tests-reverse): Add tst-vfork1x and tst-vfork2x.
2079         * tst-vfork1.c: New test.
2080         * tst-vfork2.c: New test.
2081         * tst-vfork1x.c: New test.
2082         * tst-vfork2x.c: New test.
2083
2084 2004-03-08  Ulrich Drepper  <drepper@redhat.com>
2085
2086         * sysdeps/i386/tcb-offsets.sym: Add PID.
2087         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
2088         * sysdeps/unix/sysv/linux/i386/vfork.S: New file.
2089         * sysdeps/unix/sysv/linux/x86_64/vfork.S: New file.
2090
2091 2004-03-08  Steven Munroe  <sjmunroe@us.ibm.com>
2092
2093         * sysdeps/unix/sysv/linux/powerpc/Versions: Remove leading tabs.
2094
2095 2004-03-08  H.J. Lu  <hongjiu.lu@intel.com>
2096
2097         * sysdeps/s390/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
2098         _rtld_global_ro.
2099
2100 2004-03-07  Ulrich Drepper  <drepper@redhat.com>
2101
2102         * sysdeps/ia64/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
2103         _rtld_global_ro.
2104
2105         * tst-once4.c: Remove unnecessary macro definition.
2106
2107         * tst-mutex7.c (do_test): Limit thread stack size.
2108         * tst-once2.c (do_test): Likewise.
2109         * tst-tls3.c (do_test): Likewise.
2110         * tst-tls1.c (do_test): Likewise.
2111         * tst-signal3.c (do_test): Likewise.
2112         * tst-kill6.c (do_test): Likewise.
2113         * tst-key4.c (do_test): Likewise.
2114         * tst-join4.c (do_test): Likewise.
2115         * tst-fork1.c (do_test): Likewise.
2116         * tst-context1.c (do_test): Likewise.
2117         * tst-cond2.c (do_test): Likewise.
2118         * tst-cond10.c (do_test): Likewise.
2119         * tst-clock2.c (do_test): Likewise.
2120         * tst-cancel10.c (do_test): Likewise.
2121         * tst-basic2.c (do_test): Likewise.
2122         * tst-barrier4.c (do_test): Likewise.
2123
2124 2004-03-05  Ulrich Drepper  <drepper@redhat.com>
2125
2126         * sysdeps/i386/tls.h: Use GLRO instead of GL where appropriate.
2127
2128 2004-03-01  Ulrich Drepper  <drepper@redhat.com>
2129
2130         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2131         (__pthread_cond_timedwait): Optimize wakeup test.
2132         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
2133         (__pthread_cond_wait): Likewise.
2134         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
2135         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
2136         Likewise.
2137
2138 2004-02-29  Ulrich Drepper  <drepper@redhat.com>
2139
2140         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
2141         (__lll_mutex_lock_wait): Optimize a bit more.  Just one copy of
2142         the atomic instruction needed.
2143         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2144         (__lll_mutex_lock_wait): Likewise.
2145
2146 2004-02-28  Ulrich Drepper  <drepper@redhat.com>
2147
2148         * Makefile (tests): Add tst-cond14 and tst-cond15.
2149         * tst-cond14.c: New file.
2150         * tst-cond15.c: New file.
2151
2152 2004-02-27  Ulrich Drepper  <drepper@redhat.com>
2153
2154         * sysdeps/pthread/createthread.c (create_thread): Remove use of
2155         CLONE_STOPPED.  We cannot use SIGCONT which means CLONE_STOPPED
2156         needs to be implemented differently to be useful.
2157
2158 2004-02-26  Ulrich Drepper  <drepper@redhat.com>
2159
2160         * pthread_attr_setschedparam.c: Don't test priority against limits
2161         here.  Set ATTR_FLAG_SCHED_SET flag.
2162         * pthread_attr_setschedpolicy.c: Set ATTR_FLAG_POLICY_SET flag.
2163         * pthread_create.c (__pthread_create_2_1): Copy scheduling attributes
2164         from parent thread to child.  If attribute is used and scheduling
2165         parameters are not inherited, copy parameters from attribute or
2166         compute them.  Check priority value.
2167         * pthread_getschedparam.c: If the parameters aren't known yet get
2168         them from the kernel.
2169         * pthread_setschedparam.c: Set ATTR_FLAG_SCHED_SET and
2170         ATTR_FLAG_POLICY_SET flag for thread.
2171         * sysdeps/unix/sysv/linux/internaltypes.h: Define ATTR_FLAG_SCHED_SET
2172         and ATTR_FLAG_POLICY_SET.
2173
2174         * sysdeps/pthread/createthread.c: Use tgkill if possible.
2175
2176         * pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr): Don't
2177         fail if stack address hasn't been set.  Just return 0.
2178
2179 2004-02-25  Ulrich Drepper  <drepper@redhat.com>
2180
2181         * Makefile (tests-nolibpthread): Add tst-unload.  Don't link with
2182         libpthread for the files in this list.
2183         (CFLAGS-tst-unload): Removed.
2184         * tst-unload.c (do_test): Don't use complete path for
2185         LIBPHREAD_SO.
2186
2187         * Makefile: Define sonames for tst-tls5mod, tst-_res1mod1, and
2188         tst-_res1mod2.
2189
2190 2004-02-22  Ulrich Drepper  <drepper@redhat.com>
2191
2192         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
2193         (__lll_mutex_lock_wait): Rewrite so that only one locked memory
2194         operation per round is needed.
2195         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2196         (__lll_mutex_lock_wait): Likewise.
2197
2198 2004-02-20  Ulrich Drepper  <drepper@redhat.com>
2199
2200         * tst-cancel9.c (cleanup): Don't print to stderr.
2201
2202 2004-02-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2203
2204         * sysdeps/sh/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Fix variable name.
2205
2206 2004-02-20  Jakub Jelinek  <jakub@redhat.com>
2207
2208         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
2209         (__syscall_error_handler2): Call CDISABLE.
2210         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
2211         (__syscall_error_handler2): Call CDISABLE.
2212
2213         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
2214         Release lock before the loop, don't reacquire it.
2215
2216         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define.
2217
2218 2004-02-19  Andreas Schwab  <schwab@suse.de>
2219
2220         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
2221         Fix last change.
2222
2223 2004-02-18  Ulrich Drepper  <drepper@redhat.com>
2224
2225         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
2226         (pthread_barrier_wait): After wakeup, release lock only when the
2227         last thread stopped using the barrier object.
2228         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
2229         (pthread_barrier_wait): Likewise.
2230         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
2231         Likewise.
2232         * Makefile (tests): Add tst-barrier4.
2233         * tst-barrier4.c: New file.
2234
2235         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2236         (__pthread_cond_timedwait): Perform timeout test while holding
2237         internal lock to prevent wakeup race.
2238         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
2239         * sysdeps/pthread/pthread_cond_timedwait.c
2240         (__pthread_cond_timedwait): Likewise.
2241         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
2242         (__pthread_cond_timedwait): Likewise.
2243
2244 2004-02-18  Jakub Jelinek  <jakub@redhat.com>
2245
2246         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
2247         (__pthread_rwlock_unlock): Access WRITER as 32-bit value.
2248         * Makefile (tests): Add tst-rwlock13.
2249         * tst-rwlock13.c: New test.
2250
2251 2004-02-16  Ulrich Drepper  <drepper@redhat.com>
2252
2253         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2254         (__condvar_tw_cleanup): Little optimization.
2255         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
2256
2257 2004-02-16  Steven Munroe  <sjmunroe@us.ibm.com>
2258
2259         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Replace libc with
2260         libpthread as "lib" parameter to SHLIB_COMPAT.
2261         (__novmx_siglongjmp): Fix typo in function name.
2262         (__novmx_longjmp): Fix typo in function name.
2263
2264 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
2265
2266         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Add a
2267         __builtin_expect.
2268
2269         * sysdeps/generic/pt-longjmp.c: Moved to...
2270         * sysdeps/pthread/pt-longjmp.c: ...here.  New file.
2271
2272 2004-01-29  Steven Munroe  <sjmunroe@us.ibm.com>
2273
2274         * Makefile (libpthread-routines): Add pt-cleanup.
2275         * pt-longjmp.c: Removed.
2276         * pt-cleanup.c: Copied __pthread_cleanup_upto to here. New file.
2277         * sysdeps/generic/pt-longjmp.c: Copied longjmp to here. New file.
2278         * sysdeps/unix/sysv/linux/powerpc/Versions: New file.
2279         Version longjmp, siglongjmp for GLIBC_2.3.4.
2280         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: New File.
2281
2282 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
2283
2284         * sysdeps/pthread/pthread_cond_timedwait.c
2285         (__pthread_cond_timedwait): Optimize.  Drop internal lock earlier.
2286         Reuse code.  Add __builtin_expects.
2287
2288         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2289         (__pthread_cond_timedwait): Get internal lock in case timeout has
2290         passed before the futex syscall.
2291         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
2292
2293 2004-01-20  Ulrich Drepper  <drepper@redhat.com>
2294
2295         * allocatestack.c: Pretty printing.
2296
2297         * sysdeps/pthread/createthread.c (create_thread): Don't add
2298         CLONE_DETACHED bit if it is not necessary.
2299
2300 2004-01-16  Ulrich Drepper  <drepper@redhat.com>
2301
2302         * pthread_getattr_np.c: Include ldsodefs.h.
2303
2304 2004-01-16  Richard Henderson  <rth@redhat.com>
2305
2306         * allocatestack.c: Don't declare __libc_stack_end.
2307         * init.c (__pthread_initialize_minimal_internal): Likewise.
2308         * pthread_getattr_np.c (pthread_getattr_np): Likewise.
2309
2310 2004-01-15  Richard Henderson  <rth@redhat.com>
2311
2312         * sysdeps/alpha/tls.h (tcbhead_t): Add private.
2313         (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN, TLS_TCB_SIZE,
2314         TLS_PRE_TCB_SIZE, TLS_TCB_ALIGN, INSTALL_DTV, INSTALL_NEW_DTV,
2315         GET_DTV, THREAD_DTV, THREAD_SELF, DB_THREAD_SELF): Match ia64.
2316         (TLS_TCB_OFFSET, THREAD_ID, NO_TLS_OFFSET): Remove.
2317         (THREAD_GETMEM, THREAD_GETMEM_NC): Simplify.
2318         (THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
2319         * sysdeps/unix/sysv/linux/alpha/createthread.c (TLS_VALUE): Match ia64.
2320
2321 2004-01-14  Ulrich Drepper  <drepper@redhat.com>
2322
2323         * init.c (pthread_functions): Make array const.
2324
2325 2004-01-13  Ulrich Drepper  <drepper@redhat.com>
2326
2327         * allocatestack.c (__make_stacks_executable): Change interface.
2328         Check parameters.  Pass parameter on to libc counterpart.
2329         * pthreadP.h: Change declaration.
2330
2331 2004-01-13  Richard Henderson  <rth@redhat.com>
2332
2333         * pthread_attr_setstack.c (__old_pthread_attr_setstack): Use
2334         prototype form.
2335         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize):
2336         Likewise.
2337
2338         * sysdeps/alpha/Makefile: New file.
2339         * sysdeps/alpha/tcb-offsets.sym: New file.
2340         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
2341         Use MULTIPLE_THREADS_OFFSET to implement !libpthread !libc version.
2342
2343         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Rewrite based
2344         on powerpc version.
2345
2346 2004-01-08  Jakub Jelinek  <jakub@redhat.com>
2347
2348         * Makefile (tests): Add tst-backtrace1.
2349         * tst-backtrace1.c: New test.
2350
2351 2003-12-11  Ulrich Weigand  <uweigand@de.ibm.com>
2352
2353         * sysdeps/alpha/tls.h (DB_THREAD_SELF): Pass bit size of thread
2354         register as second parameter to the REGISTER macro.
2355         * sysdeps/ia64/tls.h (DB_THREAD_SELF): Likewise.
2356         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): Likewise.
2357         * sysdeps/sh/tls.h (DB_THREAD_SELF): Likewise.
2358         * sysdeps/sparc/tls.h (DB_THREAD_SELF): Likewise.
2359         * sysdeps/s390/tls.h (DB_THREAD_SELF): Pass __WORDSIZE as bit size
2360         of thread register as second parameter to REGISTER macro in 64 case.
2361
2362 2004-01-03  Ulrich Drepper  <drepper@redhat.com>
2363
2364         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Removed.
2365         (CFLAGS-getpid.o): Defined.
2366         (CFLAGS-getpid.os): Defined.
2367
2368 2003-12-31  Ulrich Drepper  <drepper@redhat.com>
2369
2370         * pthread_getattr_np.c (pthread_getattr_np): Make sure stack info
2371         returned for main thread does not overlap with any other VMA.
2372         Patch by Jakub Jelinek.
2373
2374 2003-12-29  Jakub Jelinek  <jakub@redhat.com>
2375
2376         * tst-raise1.c: Include stdio.h.
2377
2378 2003-12-23  Jakub Jelinek  <jakub@redhat.com>
2379
2380         * sysdeps/unix/sysv/linux/raise.c (raise): Protect pid = selftid
2381         setting with __ASSUME_TGKILL || defined __NR_tgkill.
2382         If pid is 0, set it to selftid.
2383         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Make inline.
2384         Don't set self->pid but self->tid.  If self->pid == 0 and self->tid
2385         != 0, return self->tid without doing a syscall.
2386         * descr.h (struct pthread): Move pid field after tid.
2387
2388         * Makefile (tests): Add tst-raise1.
2389         * tst-raise1.c: New file.
2390
2391 2003-12-23  Roland McGrath  <roland@redhat.com>
2392
2393         * tst-oddstacklimit.c: New file.
2394         * Makefile (tests): Add it.
2395         (tst-oddstacklimit-ENV): New variable.
2396
2397         * init.c (__pthread_initialize_minimal_internal): Round stack rlimit
2398         value up to page size for __default_stacksize.
2399
2400 2003-12-21  Ulrich Drepper  <drepper@redhat.com>
2401
2402         * Makefile (tests): Add tst-eintr5.
2403         * tst-eintr5.c: New file.
2404
2405         * eintr.c (eintr_source): Prevent sending signal to self.
2406
2407         * tst-eintr2.c (tf1): Improve error message.
2408
2409 2003-12-20  Ulrich Drepper  <drepper@redhat.com>
2410
2411         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define.
2412         * sysdeps/unix/sysv/linux/getpid.c: New file.
2413         * pthread_cancel.c: Add comment explaining use of PID field.
2414         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
2415         * pthread_getattr_np.c: Use abs() when comparing PID and TID fields.
2416         * sysdeps/unix/sysv/linux/fork.c: Negate PID field of parent
2417         temporarily to signal the field must not be relied on and updated
2418         by getpid().
2419         * sysdeps/unix/sysv/linux/pt-raise.c: Handle case where PID is
2420         temporarily negative.
2421         * sysdeps/unix/sysv/linux/raise.c: Likewise.
2422
2423 2003-12-19  Ulrich Drepper  <drepper@redhat.com>
2424
2425         * eintr.c (setup_eintr): Add new parameter.  Pass to thread function.
2426         (eintr_source): If ARG != NULL, use pthread_kill.
2427         * tst-eintr1.c: Adjust for this change.
2428         * tst-eintr2.c: Likewise.
2429         * Makefile (tests): Add tst-eintr3 and tst-eintr4.
2430         * tst-eintr3.c: New file.
2431         * tst-eintr4.c: New file.
2432
2433 2003-12-19  Jakub Jelinek  <jakub@redhat.com>
2434
2435         * libc-cancellation.c (__libc_enable_asynccancel): Don't cancel
2436         if CANCELSTATE_BITMASK is set.
2437         * sysdeps/pthread/librt-cancellation.c (__librt_enable_asynccancel):
2438         Likewise.
2439
2440         * Makefile (tests): Add tst-cancel22 and tst-cancel23.
2441         (tests-reverse): Add tst-cancel23.
2442         * tst-cancel22.c: New test.
2443         * tst-cancel23.c: New test.
2444
2445 2003-12-18  Ulrich Drepper  <drepper@redhat.com>
2446
2447         * tst-eintr1.c: Better error messages.
2448
2449         * Makefile (tests): Add tst-eintr2.
2450         * tst-eintr2.c: New file.
2451
2452 2003-12-18  Jakub Jelinek  <jakub@redhat.com>
2453
2454         * Makefile (tests): Add tst-cancel21 and tst-cancelx21.
2455         (CFLAGS-tst-cancelx21.c): Set.
2456         * tst-cancel21.c: New test.
2457         * tst-cancelx21.c: New test.
2458
2459         * unwind.c (FRAME_LEFT): Add adj argument.  Subtract it from each
2460         comparison operand.
2461         (unwind_stop): Use _JMPBUF_CFA_UNWINDS_ADJ macro instead of
2462         _JMPBUF_CFA_UNWINDS.  Adjust FRAME_LEFT invocations.
2463         * pt-longjmp.c: Include jmpbuf-unwind.h.
2464         (__pthread_cleanup_upto): Use _JMPBUF_UNWINDS_ADJ macro instead of
2465         _JMPBUF_UNWINDS.  Adjust compared pointers.
2466         * init.c (__pthread_initialize_minimal_internal): Initialize
2467         pd->stackblock_size.
2468         * sysdeps/pthread/jmpbuf-unwind.h: Removed.
2469         * sysdeps/alpha/jmpbuf-unwind.h: New file.
2470         * sysdeps/i386/jmpbuf-unwind.h: New file.
2471         * sysdeps/powerpc/jmpbuf-unwind.h: New file.
2472         * sysdeps/s390/jmpbuf-unwind.h: New file.
2473         * sysdeps/sh/jmpbuf-unwind.h: New file.
2474         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: New file.
2475         * sysdeps/x86_64/jmpbuf-unwind.h: New file.
2476         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Include stdint.h.
2477         (_JMPBUF_CFA_UNWINDS): Remove.
2478         (_JMPBUF_CFA_UNWINDS_ADJ, _JMPBUF_UNWINDS_ADJ): Define.
2479
2480 2003-12-12  Jakub Jelinek  <jakub@redhat.com>
2481
2482         * Makefile (tests): Add tst-cancel20 and tst-cancelx20.
2483         (CFLAGS-tst-cancelx20.c): Set.
2484         * tst-cancel20.c: New test.
2485         * tst-cancelx20.c: New test.
2486
2487 2003-12-17  Ulrich Drepper  <drepper@redhat.com>
2488
2489         * init.c (__pthread_initialize_minimal_internal): Don't treat
2490         architectures with separate register stack special here when
2491         computing default stack size.
2492
2493 2003-12-17  Roland McGrath  <roland@redhat.com>
2494
2495         * Makefile (tst-cancelx7-ARGS): New variable.
2496         Reportd by Greg Schafer <gschafer@zip.com.au>.
2497
2498 2003-12-17  Jakub Jelinek  <jakub@redhat.com>
2499
2500         * Makefile (tests): Add tst-stack3.  Depend on $(objpfx)tst-stack3-mem.
2501         (generated): Add tst-stack3.mtrace and tst-stack3-mem.
2502         (tst-stack3-ENV): Set.
2503         ($(objpfx)tst-stack3-mem): New.
2504         * tst-stack3.c: New test.
2505
2506 2003-12-10  David Mosberger  <davidm@hpl.hp.com>
2507
2508         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init_EPILOG_BEGINS):
2509         Add unwind directives.  Drop unused .regstk directive.
2510         (_fini_EPILOG_BEGINS): Add unwind directives.
2511
2512 2003-12-11  Ulrich Drepper  <drepper@redhat.com>
2513
2514         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
2515         Assume parameter is a pointer.
2516         (lll_futex_wake): Likewise.
2517         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_wait):
2518         Likewise.
2519         (lll_futex_wake): Likewise.
2520         Reported by Boris Hu.
2521         * sysdeps/unix/sysv/linux/unregister-atfork.c
2522         (__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.
2523
2524         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
2525
2526 2003-12-10  Ulrich Drepper  <drepper@redhat.com>
2527
2528         * sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
2529         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Call
2530         __rtld_lock_initialize for ld.so lock.
2531         Patch in part by Adam Li <adam.li@intel.com>.
2532
2533 2003-12-02  David Mosberger  <davidm@hpl.hp.com>
2534
2535         * Makefile (link-libc-static): Remove -lgcc_eh---it's already mentioned
2536         in $(gnulib).  Also, remove stale comment.
2537
2538 2003-11-12  David Mosberger  <davidm@hpl.hp.com>
2539
2540         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Take
2541         advantage of new syscall stub and optimize accordingly.
2542
2543         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__NR_futex): Rename
2544         from SYS_futex, to match expectations of
2545         sysdep.h:DO_INLINE_SYSCALL.
2546         (lll_futex_clobbers): Remove.
2547         (lll_futex_timed_wait): Rewrite in terms of DO_INLINE_SYSCALL.
2548         (lll_futex_wake): Likewise.
2549         (lll_futex_requeue): Likewise.
2550         (__lll_mutex_trylock): Rewrite to a macro, so we can include this
2551         file before DO_INLINE_SYSCALL is defined (proposed by Jakub
2552         Jelinek).
2553         (__lll_mutex_lock): Likewise.
2554         (__lll_mutex_cond_lock): Likewise.
2555         (__lll_mutex_timed_lock): Likewise.
2556         (__lll_mutex_unlock): Likewise.
2557         (__lll_mutex_unlock_force): Likewise.
2558
2559         * sysdeps/ia64/tls.h: Move declaration of __thread_self up so it
2560         comes before the include of <sysdep.h>.
2561         (THREAD_SELF_SYSINFO): New macro.
2562         (THREAD_SYSINFO): Likewise.
2563         (INIT_SYSINFO): New macro.
2564         (TLS_INIT_TP): Call INIT_SYSINFO.
2565
2566         * sysdeps/ia64/tcb-offsets.sym: Add SYSINFO_OFFSET.
2567
2568         * sysdeps/pthread/createthread.c (create_thread): Use
2569         THREAD_SELF_SYSINFO and THREAD_SYSINFO instead of open code.
2570         * allocatestack.c (allocate_stack): Use THREAD_SYSINFO and
2571         THREAD_SELF_SYSINFO instead of open code.
2572         * sysdeps/i386/tls.h (THREAD_SELF_SYSINFO): New macro.
2573         (THREAD_SYSINFO): Likewise.
2574
2575         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: New file.
2576
2577         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Work around gas problem.
2578
2579 2003-12-06  Ulrich Drepper  <drepper@redhat.com>
2580
2581         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Use .init_array
2582         instead of .init.  Patch by David Mosberger.
2583
2584 2003-11-30  Thorsten Kukuk  <kukuk@suse.de>
2585
2586         * sysdeps/pthread/configure.in: Remove broken declaration in C
2587         cleanup handling check.
2588
2589 2003-11-30  Andreas Jaeger  <aj@suse.de>
2590
2591         * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
2592         * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
2593         Likewise.
2594
2595 2003-11-27  Jakub Jelinek  <jakub@redhat.com>
2596
2597         * sysdeps/unix/sysv/linux/internaltypes.h (ATTR_FLAG_OLDATTR): Define.
2598         * pthread_attr_destroy.c: Include shlib-compat.h.
2599         (__pthread_attr_destroy): Return immediately if ATTR_FLAG_OLDATTR
2600         is set in iattr->flags.
2601         * pthread_attr_init.c (__pthread_attr_init_2_0): Set ATTR_FLAG_OLDATTR.
2602
2603 2003-11-21  Jakub Jelinek  <jakub@redhat.com>
2604
2605         * Makefile (distribute): Add tst-cleanup4aux.c.
2606
2607         * tst-cond12.c (prepare): Add prototype.  Move after test-skeleton.c
2608         include.
2609
2610 2003-11-21  Ulrich Drepper  <drepper@redhat.com>
2611
2612         * tst-cond12.c (do_test): If USE_COND_SIGNAL is defined, use
2613         pthread_cond_signal.
2614
2615         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Don't
2616         store mutex address if the current value is ~0l.
2617         * sysdeps/pthread/pthread_cond_timedwait.c
2618         (__pthread_cond_timedwait): Likewise.
2619         * sysdeps/pthread/pthread_cond_broadcast.c
2620         (__pthread_cond_broadcast): Don't use requeue for pshared
2621         condvars.
2622
2623         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
2624         (__pthread_cond_wait): Don't store mutex address if the current
2625         value is ~0l.
2626         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
2627         (__pthread_cond_timedwait): Likewise.
2628         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
2629         (__pthread_cond_broadcast): Don't use requeue for pshared
2630         condvars.
2631
2632         * pthread_cond_init.c (__pthread_cond_init): Initialize __mutex
2633         element with ~0l for pshared condvars, with NULL otherwise.
2634
2635         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
2636         (__pthread_cond_wait): Don't store mutex address if the current
2637         value is ~0l.
2638         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2639         (__pthread_cond_timedwait): Likewise.
2640         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
2641         (__pthread_cond_broadcast): Don't use requeue for pshared
2642         condvars.
2643
2644         * Makefile: Add rules to build and run tst-cond12 and tst-cond13.
2645         * tst-cond12.c: New file.
2646         * tst-cond13.c: New file.
2647
2648 2003-11-17  Ulrich Drepper  <drepper@redhat.com>
2649
2650         * sysdeps/pthread/configure.in: Make missing forced unwind support
2651         fatal.
2652
2653 2003-11-11  Ulrich Drepper  <drepper@redhat.com>
2654
2655         * pthreadP.h: Don't declare __pthread_unwind as weak inside libpthread.
2656
2657 2003-11-06  Ulrich Drepper  <drepper@redhat.com>
2658
2659         * Makefile: Add magic to clean up correctly.
2660
2661 2003-11-05  Jakub Jelinek  <jakub@redhat.com>
2662
2663         * unwind.c (FRAME_LEFT): Define.
2664         (unwind_stop): Handle old style cleanups here.
2665         (__pthread_unwind): Handle old style cleanups only if
2666         !HAVE_FORCED_UNWIND.
2667         * Makefile (tests): Add tst-cleanup4 and tst-cleanupx4.
2668         (CFLAGS-tst-cleanupx4.c): Add -fexceptions.
2669         ($(objpfx)tst-cleanup4): Depend on $(objpfx)tst-cleanup4aux.o.
2670         ($(objpfx)tst-cleanupx4): Likewise.
2671         * tst-cleanup4.c: New test.
2672         * tst-cleanup4aux.c: New.
2673         * tst-cleanupx4.c: New test.
2674
2675 2003-11-04  Ulrich Drepper  <drepper@redhat.com>
2676
2677         * sysdeps/pthread/bits/stdio-lock.h: Use lll_*lock instead of
2678         lll_mutex_*lock macros to skip atomic operations on some archs.
2679
2680 2003-11-03  Ulrich Drepper  <drepper@redhat.com>
2681
2682         * sysdeps/pthread/tst-timer.c (main): Initialize
2683         sigev2.sigev_value as well.
2684
2685 2003-10-15  Roland McGrath  <roland@redhat.com>
2686
2687         * sysdeps/pthread/configure.in: Barf if visibility attribute support
2688         is missing.
2689         * sysdeps/pthread/configure: Regenerated.
2690
2691 2003-10-09  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2692
2693         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Completely revamp the
2694         locking macros.  No distinction between normal and mutex locking
2695         anymore.
2696         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Rewrite mutex locking.
2697         Merge bits from lowlevelmutex.S we still need.
2698         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Remove.
2699         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
2700         * sysdeps/unix/sysv/linux/sh/not-cancel.h: New file.
2701         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Adjust for
2702         new mutex implementation.
2703         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Likewise.
2704         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
2705         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
2706         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
2707         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
2708         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
2709         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
2710         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
2711         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
2712         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (PSEUDO): Also defined
2713         symbol for entry point to avoid cancellation.
2714
2715 2003-10-07  Jakub Jelinek  <jakub@redhat.com>
2716
2717         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Backout 2003-10-02
2718         changes.
2719         (SAVE_OLDTYPE_0): Fix a typo.
2720
2721 2003-10-03  Ulrich Drepper  <drepper@redhat.com>
2722
2723         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
2724         Check __sigsetjmp return value.  Reported by Daniel Jacobowitz.
2725
2726 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
2727
2728         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (DOCARGS_1): Use
2729         correct offset.
2730
2731 2003-10-02  Jakub Jelinek  <jakub@redhat.com>
2732
2733         * Makefile (tests): Add tst-cancel19.
2734         * tst-cancel19.c: New test.
2735
2736 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
2737
2738         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Fix saving and
2739         restoring of the old cancellation type.
2740
2741 2003-09-30  Jakub Jelinek  <jakub@redhat.com>
2742
2743         * sysdeps/pthread/malloc-machine.h: Remove misleading comment.
2744
2745 2003-09-27  Wolfram Gloger  <wg@malloc.de>
2746
2747         * sysdeps/pthread/malloc-machine.h: New file
2748
2749 2003-09-24  Roland McGrath  <roland@redhat.com>
2750
2751         * allocatestack.c (__make_stacks_executable): Don't ignore return
2752         value from _dl_make_stack_executable.
2753
2754 2003-09-24  Ulrich Drepper  <drepper@redhat.com>
2755
2756         * allocatestack.c (__make_stacks_executable): Also change
2757         permission of the currently unused stacks.
2758
2759         * allocatestack.c (change_stack_perm): Split out from
2760         __make_stacks_executable.
2761         (allocate_stack): If the required permission changed between the time
2762         we started preparing the stack and queueing it, change the permission.
2763         (__make_stacks_executable): Call change_stack_perm.
2764
2765         * Makefile: Build tst-execstack-mod locally.
2766         * tst-execstack-mod.c: New file.
2767
2768 2003-09-23  Jakub Jelinek  <jakub@redhat.com>
2769
2770         * Makefile (tests): Only add tst-execstack if have-z-execstack is yes.
2771
2772 2003-09-23  Roland McGrath  <roland@redhat.com>
2773
2774         * tst-execstack.c: New file.
2775         * Makefile (tests): Add it.
2776         ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets.
2777         (LDFLAGS-tst-execstack): New variable.
2778
2779         * allocatestack.c (allocate_stack): Use GL(dl_stack_flags) to decide
2780         whether to use PROT_EXEC for stack mmap.
2781         (__make_stacks_executable): New function.
2782         * pthreadP.h: Declare it.
2783         * init.c (__pthread_initialize_minimal_internal): Set
2784         GL(dl_make_stack_executable_hook) to that.
2785
2786 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
2787
2788         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Adjust for latest
2789         recommendation from AMD re avoidance of lock prefix.
2790
2791 2003-09-22  Jakub Jelinek  <jakub@redhat.com>
2792
2793         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait): Use
2794         lll_futex_timed_wait instead of lll_futex_wait.
2795         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Removed.
2796         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Removed.
2797         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: Removed.
2798         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: Removed.
2799         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Removed.
2800         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Removed.
2801         * sysdeps/unix/sysv/linux/s390/sem_post.c: Removed.
2802         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Removed.
2803         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Include atomic.h.
2804         Completely revamp the locking macros.  No distinction between
2805         normal and mutex locking anymore.
2806         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
2807         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock_wait,
2808         __lll_lock_timedwait): Fix prototypes.
2809         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_lock_wait,
2810         __lll_lock_timedwait): Likewise.
2811         (lll_mutex_lock, lll_mutex_cond_lock): Use _val instead of _bool
2812         macros, add __builtin_expect.
2813         (lll_mutex_timedlock): Likewise.  Fix return value.
2814         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Removed.
2815         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: Removed.
2816         * sysdeps/unix/sysv/linux/i386/i586/lowlevelmutex.S: Removed.
2817         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: Removed.
2818         * sysdeps/unix/sysv/linux/i386/i686/lowlevelmutex.S: Removed.
2819         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: Removed.
2820         * sysdeps/unix/sysv/linux/lowlevelmutex.c: Removed.
2821         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: Removed.
2822
2823 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
2824
2825         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
2826         (__lll_mutex_lock_wait): Minor optimization to avoid one atomic
2827         operation if possible.
2828
2829         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't play tricks
2830         like jumping over the lock prefix.
2831
2832 2003-09-21  Ulrich Drepper  <drepper@redhat.com>
2833
2834         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Completely revamp the
2835         locking macros.  No distinction between normal and mutex locking
2836         anymore.
2837         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
2838         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
2839         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
2840         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Rewrite mutex
2841         locking.  Merge bits from lowlevelmutex.S we still need.
2842         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
2843         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
2844         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Removed.
2845         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Removed.
2846         * Makefile (routines): Remove libc-lowlevelmutex.
2847         (libpthread-rountines): Remove lowlevelmutex.
2848         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Adjust
2849         for new mutex implementation.
2850         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
2851         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
2852         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
2853         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
2854         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
2855         Likewise.
2856         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
2857         Likewise.
2858         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
2859         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
2860         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise
2861         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
2862         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
2863         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
2864         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
2865         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
2866         Likewise.
2867         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
2868         Likewise.
2869         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
2870         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
2871         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
2872         Don't use requeue.
2873         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
2874         * sysdeps/pthread/pthread_cond_signal.c: Don't use requeue.
2875
2876 2003-09-20  Ulrich Drepper  <drepper@redhat.com>
2877
2878         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't match memory
2879         in parameters of asm with output parameters.
2880
2881         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Change
2882         type of DECR parameter to int.
2883         * pthreadP.h: Adjust prototype of __pthread_mutex_unlock_usercnt.
2884
2885 2003-09-18  Jakub Jelinek  <jakub@redhat.com>
2886
2887         * tst-attr3.c (tf, do_test): Print stack start/end/size and
2888         guardsize for each thread.
2889
2890 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
2891
2892         * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
2893         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
2894         (pthread_attr_setaffinity_np): Handle cpuset == NULL.
2895
2896         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
2897         (pthread_attr_getaffinity_np): Don't segfault if iattr->cpuset is
2898         NULL.
2899         * pthread_getattr_np.c: Set cpuset using pthread_getaffinity_np.
2900         * pthreadP.h (pthread_getaffinity_np): Add hidden_proto.
2901         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
2902         (pthread_getaffinity_np): Add hidden_def.
2903
2904         * Makefile (tests): Add tst-attr3.
2905         * tst-attr3.c: New test.
2906
2907         * sysdeps/i386/Makefile (CFLAGS-tst-align.c): Remove.
2908
2909 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
2910
2911         * sysdeps/i386/Makefile (CFLAGS-pthread_create.c,
2912         CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
2913
2914 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
2915
2916         * Makefile (CFLAGS-tst-align.c): Add $(stack-align-test-flags).
2917         * tst-align.c: Include tst-stack-align.h.
2918         (tf, do_test): Use TEST_STACK_ALIGN macro.
2919
2920 2003-09-17  Ulrich Drepper  <drepper@redhat.com>
2921
2922         * pthread_attr_init.c (__pthread_attr_init_2_0): Remove unused
2923         variable.
2924
2925 2003-09-16  Ulrich Drepper  <drepper@redhat.com>
2926
2927         * pthread_getattr_np.c (pthread_getattr_np): Correctly fill in the
2928         stack-related values for the initial thread.
2929
2930 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
2931
2932         * Makefile (CFLAGS-pthread_once.c): Add $(uses-callbacks).
2933
2934 2003-09-11  Ulrich Drepper  <drepper@redhat.com>
2935
2936         * pthread_mutex_lock.c: Minor code rearrangements.
2937
2938 2003-09-05  Roland McGrath  <roland@redhat.com>
2939
2940         * pthread_create.c (__pthread_pthread_sizeof_descr): Removed.
2941         Instead, include ../nptl_db/db_info.c to do its magic.
2942         * pthread_key_create.c (__pthread_pthread_keys_max): Removed.
2943         (__pthread_pthread_key_2ndlevel_size): Likewise.
2944         * sysdeps/alpha/tls.h (DB_THREAD_SELF): New macro.
2945         * sysdeps/i386/tls.h (DB_THREAD_SELF): New macro.
2946         * sysdeps/ia64/tls.h (DB_THREAD_SELF): New macro.
2947         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): New macro.
2948         * sysdeps/s390/tls.h (DB_THREAD_SELF): New macro.
2949         * sysdeps/sh/tls.h (DB_THREAD_SELF): New macro.
2950         * sysdeps/sparc/tls.h (DB_THREAD_SELF): New macro.
2951         * sysdeps/x86_64/tls.h (DB_THREAD_SELF): New macro.
2952         * sysdeps/alpha/td_ta_map_lwp2thr.c: File removed.
2953         * sysdeps/generic/td_ta_map_lwp2thr.c: File removed.
2954         * sysdeps/i386/td_ta_map_lwp2thr.c: File removed.
2955         * sysdeps/ia64/td_ta_map_lwp2thr.c: File removed.
2956         * sysdeps/powerpc/td_ta_map_lwp2thr.c: File removed.
2957         * sysdeps/s390/td_ta_map_lwp2thr.c: File removed.
2958         * sysdeps/sh/td_ta_map_lwp2thr.c: File removed.
2959         * sysdeps/sparc/td_ta_map_lwp2thr.c: File removed.
2960         * sysdeps/x86_64/td_ta_map_lwp2thr.c: File removed.
2961
2962 2003-09-08  Ulrich Drepper  <drepper@redhat.com>
2963
2964         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Change type
2965         of pthread_t to be compatible with LT.
2966         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
2967         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
2968         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
2969         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
2970         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
2971         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
2972         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
2973
2974 2003-09-04  Ulrich Drepper  <drepper@redhat.com>
2975
2976         * sysdeps/unix/sysv/linux/i386/not-cancel.h (fcntl_not_cancel): Define.
2977
2978 2003-09-04  Jakub Jelinek  <jakub@redhat.com>
2979
2980         * unwind-forcedunwind.c: Move to...
2981         * sysdeps/pthread/unwind-forcedunwind.c: ...here.
2982         (pthread_cancel_init): Use ARCH_CANCEL_INIT if defined.
2983         * sysdeps/pthread/jmpbuf-unwind.h: New file.
2984         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c: New file.
2985         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: New file.
2986         * unwind.c: Include jmpbuf-unwind.h.
2987         (unwind_stop): Use _JMPBUF_CFA_UNWINDS macro.
2988
2989 2003-09-02  Jakub Jelinek  <jakub@redhat.com>
2990
2991         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file.
2992         * sysdeps/unix/sysv/linux/ia64/Versions (libpthread): Export
2993         pthread_attr_setstack and pthread_attr_setstacksize @@GLIBC_2.3.3.
2994         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file.
2995         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
2996         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file.
2997         * sysdeps/unix/sysv/linux/sparc/Versions: New file.
2998         * pthread_attr_setstack.c (__old_pthread_attr_setstack): New function.
2999         (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export
3000         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2.
3001         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize): New
3002         function.
3003         (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export
3004         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1.
3005         * Makefile (tests): Add tst-stack2.
3006         * tst-stack2.c: New test.
3007         * tst-stack1.c: Include limits.h and sys/param.h.
3008         (do_test): Set size to MAX (4 * getpagesize (), PTHREAD_STACK_MIN).
3009
3010         * pthread_condattr_setpshared.c: Include errno.h.
3011         (pthread_condattr_setpshared): Return EINVAL if pshared
3012         is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
3013
3014         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Also
3015         defined symbol for entry point to avoid cancellation.
3016         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
3017         Likewise.
3018         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
3019         Likewise.
3020         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
3021         Likewise.
3022         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h (PSEUDO):
3023         Likewise.
3024         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
3025         Likewise.
3026         * sysdeps/unix/sysv/linux/i386/not-cancel.h (__open_nocancel,
3027         __close_nocancel, __read_nocancel, __write_nocancel,
3028         __waitpid_nocancel): Add attribute_hidden.  If not in libc.so,
3029         libpthread.so or librt.so, define to corresponding function
3030         without _nocancel suffix.
3031         * sysdeps/unix/sysv/linux/s390/not-cancel.h: New file.
3032         * sysdeps/unix/sysv/linux/powerpc/not-cancel.h: New file.
3033         * sysdeps/unix/sysv/linux/sparc/not-cancel.h: New file.
3034
3035         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: Fix a typo.
3036
3037 2003-09-02  Ulrich Drepper  <drepper@redhat.com>
3038
3039         * sysdeps/unix/sysv/linux/i386/not-cancel.h: New file.
3040         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: New file.
3041
3042         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Make sure the code
3043         in subsections has a symbol associated with it.
3044
3045         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (PSEUDO): Also
3046         defined symbol for entry point to avoid cancellation.
3047         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Likewise.
3048
3049 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
3050
3051         * Makefile (tests): Add tst-tls5.
3052         (module-names): Add tst-tls5mod{,a,b,c,d,e,f}.
3053         ($(objpfx)tst-tls5mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes.
3054         ($(objpfx)tst-tls5): New.
3055         ($(objpfx)tst-tls6.out): Likewise.
3056         (tests): Depend on $(objpfx)tst-tls6.out.
3057         * tst-tls3.c: Include stdint.h and pthreaddef.h.
3058         (do_test): Check pthread_self () return value alignment.
3059         * tst-tls3mod.c: Include stdint.h and pthreaddef.h.
3060         (tf): Check pthread_self () return value alignment.
3061         * tst-tls5.c: New test.
3062         * tst-tls5.h: New.
3063         * tst-tls5mod.c: New.
3064         * tst-tls5moda.c: New.
3065         * tst-tls5modb.c: New.
3066         * tst-tls5modc.c: New.
3067         * tst-tls5modd.c: New.
3068         * tst-tls5mode.c: New.
3069         * tst-tls5modf.c: New.
3070         * tst-tls6.sh: New test.
3071
3072         * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
3073         ptr___pthread_cond_timedwait and ptr___pthread_cond_timedwait_2_0.
3074         * init.c (pthread_functions): Initialize them.
3075         * forward.c (pthread_cond_timedwait@GLIBC_2.0,
3076         pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
3077         * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
3078         pthread_cond_timedwait@@GLIBC_2.3.2.
3079
3080 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
3081
3082         * sysdeps/unix/sysv/linux/alpha/timer_create.c: New file.
3083         * sysdeps/unix/sysv/linux/alpha/timer_delete.c: New file.
3084         * sysdeps/unix/sysv/linux/alpha/timer_getoverr.c: New file.
3085         * sysdeps/unix/sysv/linux/alpha/timer_gettime.c: New file.
3086         * sysdeps/unix/sysv/linux/alpha/timer_settime.c: New file.
3087         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
3088
3089         * sysdeps/unix/sysv/linux/alpha/aio_cancel.c: New file.
3090
3091         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Define
3092         _POSIX_THREAD_PRIORITY_SCHEDULING.
3093         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
3094
3095 2003-08-31  Ulrich Drepper  <drepper@redhat.com>
3096
3097         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock): Avoid
3098         nested function, use static inline function from libio.h.
3099         Code by Richard Henderson.
3100
3101         * sysdeps/pthread/bits/libc-lock.h: Mark pthread_setcancelstate as
3102         weak.
3103
3104 2003-08-30  Jakub Jelinek  <jakub@redhat.com>
3105
3106         * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file.
3107         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c: New file.
3108         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c: New file.
3109         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c: New file.
3110         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c: New file.
3111         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c: New file.
3112         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: New file.
3113         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: New file.
3114         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: New file.
3115         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: New file.
3116         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: New file.
3117         * sysdeps/unix/sysv/linux/sparc/pthread_once.c: New file.
3118         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: New file.
3119         * sysdeps/unix/sysv/linux/sparc/fork.c: New file.
3120         * sysdeps/unix/sysv/linux/sparc/aio_cancel.c: New file.
3121         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c: New file.
3122         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c: New file.
3123         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c: New file.
3124         * sysdeps/sparc/sparc32/pthread_spin_lock.c: New file.
3125         * sysdeps/sparc/sparc32/pthread_spin_trylock.c: New file.
3126         * sysdeps/sparc/sparc32/pthreaddef.h: New file.
3127         * sysdeps/sparc/sparc64/pthread_spin_lock.c: New file.
3128         * sysdeps/sparc/sparc64/pthread_spin_trylock.c: New file.
3129         * sysdeps/sparc/sparc64/pthread_spin_unlock.c: New file.
3130         * sysdeps/sparc/sparc64/pthreaddef.h: New file.
3131         * sysdeps/sparc/tls.h: New file.
3132         * sysdeps/sparc/tcb-offsets.sym: New file.
3133         * sysdeps/sparc/Makefile: New file.
3134         * sysdeps/sparc/td_ta_map_lwp2thr.c: New file.
3135         * init.c [__sparc__] (__NR_set_tid_address): Define.
3136
3137 2003-08-29  Jakub Jelinek  <jakub@redhat.com>
3138
3139         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock,
3140         _IO_release_lock): Define.
3141
3142 2003-08-29  Jakub Jelinek  <jakuB@redhat.com>
3143
3144         * tst-cancel4.c (tf_sigwait, tf_sigwaitinfo, tf_sigtimedwait): Add
3145         sigemptyset before sigaddset.  Reported by jreiser@BitWagon.com.
3146
3147 2003-08-27  Ulrich Drepper  <drepper@redhat.com>
3148
3149         * sysdeps/pthread/pthread.h (pthread_exit): Remove __THROW.
3150         (__pthread_cleanup_class): Add missing return types of member
3151         functions.
3152
3153 2003-08-26  Steven Munroe <sjmunroe@us.ibm.com>
3154
3155         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
3156         (lll_mutex_unlock_force): Add memory barrier between store and futex
3157         syscall.
3158
3159 2003-08-25  Ulrich Drepper  <drepper@redhat.com>
3160
3161         * tst-cancel4.c (do_test): Also unlink tempfname and remove
3162         tempmsg in first loop.
3163
3164 2003-08-18  Ulrich Drepper  <drepper@redhat.com>
3165
3166         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
3167         _POSIX_THREAD_PRIORITY_SCHEDULING.
3168         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
3169
3170 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
3171
3172         * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED]
3173         (__rtld_lock_default_lock_recursive,
3174         __rtld_lock_default_unlock_recursive): Define.
3175         [_LIBC && SHARED] (__rtld_lock_lock_recursive,
3176         __rtld_lock_unlock_recursive): Define using
3177         GL(_dl_rtld_*lock_recursive).
3178         * init.c (__pthread_initialize_minimal_internal): Initialize
3179         _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
3180         Lock GL(_dl_load_lock) the same number of times as
3181         GL(_dl_load_lock) using non-mt implementation was nested.
3182
3183         * pthreadP.h (__pthread_cleanup_upto): Add hidden_proto.
3184         * pt-longjmp.c (__pthread_cleanup_upto): Add hidden_def.
3185
3186 2003-08-06  Jakub Jelinek  <jakub@redhat.com>
3187
3188         * tst-cancel17.c (do_test): Make len2 maximum of page size and
3189         PIPE_BUF.
3190
3191 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
3192
3193         * pthread_create.c (__pthread_create_2_0): Clear new_attr.cpuset.
3194
3195 2003-08-03  Jakub Jelinek  <jakub@redhat.com>
3196
3197         * sysdeps/pthread/createthread.c (do_clone): Move error handling
3198         to first syscall error check.  Move syscall error check for tkill
3199         into __ASSUME_CLONE_STOPPED #ifdef.
3200
3201 2003-08-02  Ulrich Drepper  <drepper@redhat.com>
3202
3203         * sysdeps/pthread/createthread.c (do_clone): If __ASSUME_CLONE_STOPPED
3204         is not defined, do explicit synchronization.
3205         (create_thread): Do not lock pd->lock here.  If __ASSUME_CLONE_STOPPED
3206         is not defined also unlock pd->lock for non-debugging case in case
3207         it is necessary.
3208         * pthread_create.c (start_thread): Always get and release pd->lock
3209         if __ASSUME_CLONE_STOPPED is not defined.
3210         (start_thread_debug): Removed.  Adjust users.
3211         * allocatestack.c (allocate_stack): Always initialize lock if
3212         __ASSUME_CLONE_STOPPED is not defined.
3213         * Makefile (tests): Add tst-sched1.
3214         * tst-sched1.c: New file.
3215
3216         * sysdeps/pthread/createthread.c (do_clone): Only use
3217         sched_setschduler and pass correct parameters.
3218
3219 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
3220
3221         * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr,
3222         pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to
3223         PTHREAD_STACK_MIN in comments.
3224
3225 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
3226
3227         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
3228         Shut up warnings if INTERNAL_SYSCALL_ERROR_P does not use its first
3229         argument.
3230         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise.
3231         * pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise.
3232         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Include pthreaddef.h.
3233         (__pthread_cleanup_upto): Fix prototype.
3234         (_longjmp_unwind): Adjust caller.
3235         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_timedlock):
3236         Change second argument to const struct pointer.
3237         * tst-sem8.c (main): Remove unused s2 and s3 variables.
3238         * tst-sem9.c (main): Likewise.
3239         * unwind.c: Include string.h for strlen prototype.
3240
3241 2003-07-31  Ulrich Drepper  <drepper@redhat.com>
3242
3243         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
3244         (__pthread_cond_timedwait): Don't use cmov unless HAVE_CMOV is defined.
3245         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S:
3246         Define HAVE_CMOV.
3247         Patch by Nicholas Miell <nmiell@attbi.com>.
3248
3249 2003-07-30  Jakub Jelinek  <jakub@redhat.com>
3250
3251         * init.c (__pthread_initialize_minimal_internal): Initialize
3252         GL(dl_init_static_tls).
3253         * pthreadP.h (__pthread_init_static_tls): New prototype.
3254         * allocatestack.c (init_one_static_tls, __pthread_init_static_tls):
3255         New functions.
3256         * Makefile (tests): Add tst-tls4.
3257         (modules-names): Add tst-tls4moda and tst-tls4modb.
3258         ($(objpfx)tst-tls4): Link against libdl and libpthread.
3259         ($(objpfx)tst-tls4.out): Depend on tst-tls4moda.so and
3260         tst-tls4modb.so.
3261         * tst-tls4.c: New file.
3262         * tst-tls4moda.c: New file.
3263         * tst-tls4modb.c: New file.
3264
3265 2003-06-19  Daniel Jacobowitz  <drow@mvista.com>
3266
3267         * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
3268         before __timer_dealloc.
3269         * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
3270         Don't call list_unlink.
3271
3272 2003-07-29  Roland McGrath  <roland@redhat.com>
3273
3274         * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
3275
3276 2003-07-25  Jakub Jelinek  <jakub@redhat.com>
3277
3278         * tst-cancel17.c (do_test): Check if aio_cancel failed.
3279         Don't reuse struct aiocb A if it failed.
3280         Write fpathconf (fds[1], _PC_PIPE_BUF) + 2 bytes using aio_write,
3281         not just one byte, as that does not block.
3282
3283 2003-07-22  Jakub Jelinek  <jakub@redhat.com>
3284
3285         * sysdeps/pthread/unwind-resume.c: New file.
3286         * sysdeps/pthread/Makefile (routines, shared-only-routines): Add
3287         unwind-resume in csu subdir.
3288         (CFLAGS-unwind-resume.c, CFLAGS-rt-unwind-resume.c): Compile with
3289         exceptions.
3290         (librt-sysdep_routines, librt-shared-only-routines): Add
3291         rt-unwind-resume.
3292         * sysdeps/pthread/rt-unwind-resume.c: New file.
3293         * unwind-forcedunwind.c: New file.
3294         * Makefile (libpthread-routines): Add unwind-forcedunwind.
3295         (libpthread-shared-only-routines): Likewise.
3296         (CFLAGS-unwind-forcedunwind.c): Compile with exceptions.
3297         * pthreadP.h (pthread_cancel_init): New prototype.
3298         * pthread_cancel.c (pthread_cancel): Call pthread_cancel_init.
3299
3300         * sysdeps/pthread/createthread.c (do_thread, create_thread): Make
3301         attr argument const struct pthread_attr *.
3302
3303         * res.c (__res_state): Return __resp.
3304         * descr.h: Include resolv.h.
3305         (struct pthread): Add res field.
3306         * pthread_create.c: Include resolv.h.
3307         (start_thread): Initialize __resp.
3308         * Makefile (tests): Add tst-_res1.
3309         (module-names): Add tst-_res1mod1, tst-_res1mod2.
3310         ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so.
3311         ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and
3312         libpthread.
3313         * tst-_res1.c: New file.
3314         * tst-_res1mod1.c: New file.
3315         * tst-_res1mod2.c: New file.
3316
3317 2003-07-21  Ulrich Drepper  <drepper@redhat.com>
3318
3319         * sysdeps/pthread/createthread.c: Don't define CLONE_STOPPED.
3320
3321         * Makefile: Define various *-no-z-defs variables for test DSOs
3322         which has undefined symbols.
3323
3324 2003-07-21  Steven Munroe  <sjmunroe@us.ibm.com>
3325
3326         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
3327         Retry if the stwcx fails to store once_control.
3328
3329 2003-07-20  Ulrich Drepper  <drepper@redhat.com>
3330
3331         * Makefile (libpthread-routines): Add pthread_attr_getaffinity and
3332         pthread_attr_setaffinity.
3333         * Versions [libpthread] (GLIBC_2.3.3): Likewise.
3334         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: New file.
3335         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: New file.
3336         * pthread_attr_destroy.c: Free cpuset element if allocated.
3337         * pthread_create.c: Pass iattr as additional parameter to
3338         create_thread.
3339         * sysdeps/pthread/createthread.c: If attribute is provided and
3340         a new thread is created with affinity set or scheduling parameters,
3341         start thread with CLONE_STOPPED.
3342         * sysdeps/pthread/pthread.h: Declare pthread_attr_getaffinity and
3343         pthread_attr_setaffinity.
3344         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
3345         cpuset element.
3346
3347 2003-07-15  Ulrich Drepper  <drepper@redhat.com>
3348
3349         * tst-tcancel-wrappers.sh: lseek and llseek are not cancelation points.
3350
3351 2003-07-14  Ulrich Drepper  <drepper@redhat.com>
3352
3353         * sysdeps/pthread/configure.in: Require CFI directives also for
3354         ppc and s390.
3355
3356 2003-07-15  Jakub Jelinek  <jakub@redhat.com>
3357
3358         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
3359         Add cfi directives.
3360
3361 2003-07-12  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3362
3363         * sysdeps/sh/tcb-offsets.sym: Add RESULT, TID, CANCELHANDLING and
3364         CLEANUP_JMP_BUF.
3365         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use more
3366         registers as variables.  Call __pthread_mutex_unlock_usercnt.
3367         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
3368         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Store TID
3369         not self pointer in __writer.  Compare with TID to determine
3370         deadlocks.
3371         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
3372         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S:
3373         Likewise.
3374         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S:
3375         Likewise.
3376         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Add cancellation support.
3377         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
3378         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Define all the nice
3379         macros also when compiling librt.
3380
3381 2003-07-11  Jakub Jelinek  <jakub@redhat.com>
3382
3383         * Makefile (CFLAGS-pthread_once.c): Add -fexceptions
3384         -fasynchronous-unwind-tables.
3385         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
3386         (PSEUDO): Add cfi directives.
3387         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO):
3388         Likewise.
3389         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
3390         Likewise.
3391
3392 2003-07-08  Jakub Jelinek  <jakub@redhat.com>
3393
3394         * pthreadP.h (__pthread_unwind_next, __pthread_register_cancel,
3395         __pthread_unregister_cancel): Add prototypes and hidden_proto.
3396         * unwind.c (__pthread_unwind_next): Add hidden_def.
3397         * cleanup.c (__pthread_register_cancel, __pthread_unregister_cancel):
3398         Likewise.
3399         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
3400         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
3401         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
3402         Likewise.
3403         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
3404         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
3405         Likewise.
3406         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once): Use
3407         HIDDEN_JUMPTARGET to call __pthread_register_cancel,
3408         __pthread_unregister_cancel and __pthread_unwind_next.
3409
3410 2003-07-04  Jakub Jelinek  <jakub@redhat.com>
3411
3412         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
3413         different symbol for the cancellation syscall wrapper and
3414         non-cancellation syscall wrapper.
3415         (PSEUDO_END): Define.
3416
3417 2003-07-05  Richard Henderson  <rth@redhat.com>
3418
3419         * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
3420         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_wait,
3421         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
3422         return actual return value from the syscall, not 0.
3423
3424 2003-07-07  Ulrich Drepper  <drepper@redhat.com>
3425
3426         * descr.h (struct pthread): Add pid field.
3427         * allocatestack.c (allocate_stack): Initialize pid field in descriptor.
3428         (__reclaim_stacks): Likewise.
3429         * init.c (sigcancel_handler): If __ASSUME_CORRECT_SI_PID is defined
3430         also check for PID of the signal source.
3431         (__pthread_initialize_minimal_internal): Also initialize pid field
3432         of initial thread's descriptor.
3433         * pthread_cancel.c: Use tgkill instead of tkill if possible.
3434         * sysdeps/unix/sysv/linux/fork.c: Likewise.
3435         * sysdeps/unix/sysv/linux/pt-raise.c: Likewise.
3436         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
3437         * sysdeps/unix/sysv/linux/raise.c: Likewise.
3438
3439 2003-07-05  Ulrich Drepper  <drepper@redhat.com>
3440
3441         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_push): Renamed.
3442         Fix use of parameter.
3443         (__libc_cleanup_pop): Likewise.
3444
3445 2003-07-04  Ulrich Drepper  <drepper@redhat.com>
3446
3447         * init.c (sigcancel_handler): Change parameters to match handler
3448         for SA_SIGACTION.  Check signal number and code to recognize
3449         invalid invocations.
3450
3451 2003-07-03  Roland McGrath  <roland@redhat.com>
3452
3453         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr):
3454         Apply sizeof (struct pthread) bias to r13 value.
3455
3456 2003-07-03  Ulrich Drepper  <drepper@redhat.com>
3457
3458         * sysdeps/pthread/configure.in: Require CFI directives.
3459
3460         * sysdeps/pthread/librt-cancellation.c (__pthread_unwind): Remove
3461         definition.
3462         * pthreadP.h (__pthread_unwind): Add hidden_proto if used in
3463         libpthread compilation.
3464         * unwind.c (__pthread_unwind): Add hidden_def.
3465         * Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_unwind.
3466
3467 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
3468
3469         * libc-cancellation.c (__libc_cleanup_routine): Define.
3470         * sysdeps/pthread/bits/libc-lock.h (__pthread_cleanup_push): Define.
3471         (__pthread_cleanup_pop): Define.
3472
3473 2003-07-01  Richard Henderson  <rth@redhat.com>
3474
3475         * sysdeps/alpha/elf/pt-initfini.c: New file.
3476         * sysdeps/alpha/pthread_spin_lock.S: New file.
3477         * sysdeps/alpha/pthread_spin_trylock.S: New file.
3478         * sysdeps/alpha/pthreaddef.h: New file.
3479         * sysdeps/alpha/td_ta_map_lwp2thr.c: New file.
3480         * sysdeps/alpha/tls.h: New file.
3481         * sysdeps/unix/sysv/linux/alpha/Makefile: New file.
3482         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: New file.
3483         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: New file.
3484         * sysdeps/unix/sysv/linux/alpha/createthread.c: New file.
3485         * sysdeps/unix/sysv/linux/alpha/fork.c: New file.
3486         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: New file.
3487         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: New file.
3488         * sysdeps/unix/sysv/linux/alpha/pthread_once.c: New file.
3489         * sysdeps/unix/sysv/linux/alpha/sem_post.c: New file.
3490         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: New file.
3491
3492 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
3493
3494         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Add correct
3495         cleanup support and unwind info.
3496
3497 2003-06-30  Ulrich Drepper  <drepper@redhat.com>
3498
3499         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
3500         Use correct cleanup handler registration.  Add unwind info.
3501         * sysdeps/unix/sysv/linux/unwindbuf.sym: New file.
3502         * sysdeps/unix/sysv/linux/Makefile: Add rule to build unwindbuf.h.
3503         * tst-once3.c: Add cleanup handler and check it is called.
3504         * tst-once4.c: Likewise.
3505         * tst-oncex3.c: New file.
3506         * tst-oncex4.c: New file.
3507         * Makefile: Add rules to build and run tst-oncex3 and tst-oncex4.
3508
3509 2003-06-29  Ulrich Drepper  <drepper@redhat.com>
3510
3511         * sysdeps/pthread/configure.in: Check for C cleanup handling in gcc.
3512
3513 2003-06-27  Ulrich Drepper  <drepper@redhat.com>
3514
3515         * tst-cancel4.c (tf_msgrcv): Use IPC_PRIVATE in msgget call.
3516         (tf_msgsnd): Likewise.
3517
3518         * tst-cancel4.c (tf_msgrcv): Strengthen test against valid
3519         premature returns a bit more.
3520
3521 2003-06-26  Ulrich Drepper  <drepper@redhat.com>
3522
3523         * sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind
3524         definition to the front.
3525
3526         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rename
3527         the cleanup functions to make the names unique.  Fix dwarf opcode
3528         un unwind table.
3529         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Rename cleanup
3530         functions to make the names unique.  Fix CFA offset for two blocks.
3531
3532 2003-06-25  Ulrich Drepper  <drepper@redhat.com>
3533
3534         * sysdeps/pthread/pthread.h (class __pthread_cleanup_class): Add
3535         missing closing braces.
3536         Patch by Christophe Saout <christophe@saout.de>.
3537
3538 2003-06-24  Roland McGrath  <roland@redhat.com>
3539
3540         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Typo fix.
3541
3542 2003-06-24  Ulrich Drepper  <drepper@redhat.com>
3543
3544         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: New file.
3545         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: New file.
3546
3547         * pthreadP.h: Declare __find_thread_by_id.
3548         * allocatestack.c [HP_TIMING_AVAIL]: Define __find_thread_by_id.
3549         * pthread_clock_gettime.c: Allow using other thread's clock.
3550         * pthread_clock_settime.c: Likewise.
3551         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
3552         * Makefile: Add rules to build and run tst-clock2.
3553         * tst-clock2.c: New file.
3554
3555 2003-06-23  Ulrich Drepper  <drepper@redhat.com>
3556
3557         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rewrite
3558         to use exception-based cleanup handler.
3559         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3560
3561         * tst-cond8.c (ch): Announce that we are done.
3562
3563         * pthreadP.h (__pthread_mutex_cond_lock): Mark with internal_function.
3564
3565         * tst-cancel17.c (tf): Retry aio_suspend in case of EINTR.
3566         Also test aio_suspend with timeout value.
3567
3568 2003-06-22  Ulrich Drepper  <drepper@redhat.com>
3569
3570         * pthreadP.h: Mark __pthread_mutex_unlock_usercnt also hidden.
3571         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Add
3572         attribute_hidden.
3573
3574         * pthreadP.h (__pthread_mutex_init_internal): Mark hidden.
3575         (__pthread_mutex_lock_internal): Likewise.
3576         (__pthread_mutex_unlock_internal): Likewise.
3577         (__pthread_mutex_unlock_usercnt): Declare.
3578         * pthread_mutex_destroy.c: Always fail if used in any way.
3579         * pthread_mutex_init.c: Update comment.
3580         * pthread_mutex_lock.c: If NO_INCR is not defined adjust __nusers.
3581         * pthread_mutex_timedlock.c: Adjust __nusers.
3582         * pthread_mutex_trylock.c: Adjust __nusers.
3583         * pthread_mutex_unlock.c: Old code is in __pthread_mutex_unlock_usercnt
3584         and public interfaces are wrapper with pass additional parameter.
3585         __pthread_mutex_unlock_usercnt does not adjust __nusers if second
3586         parameter zero.
3587         * tst-mutex8.c: New file.
3588         * Makefile (tests): Add tst-mutex8.
3589         * sysdeps/pthread/pthread_cond_timedwait.c: Call
3590         __pthread_mutex_unlock_usercnt.
3591         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
3592         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
3593         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3594         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
3595         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
3596         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Define NO_INCR.
3597         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3598         Add __nusers.
3599         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3600         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3601         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3602         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3603         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3604
3605         * pthread_mutex_lock.c: Don't store THREAD_ID in __owner, use TID.
3606         * pthread_mutex_timedlock.c: Likewise.
3607         * pthread_mutex_trylock.c: Adjust __nusers.
3608         * pthread_mutex_unlock.c: Compare with TID not THREAD_ID.
3609         * tst-mutex9.c: New file.
3610         * Makefile (tests): Add tst-mutex9.
3611         * sysdeps/i386/tls.h: Remove THREAD_ID definition.
3612         * sysdeps/ia64/tls.h: Likewise.
3613         * sysdeps/powerpc/tls.h: Likewise.
3614         * sysdeps/s390/tls.h: Likewise.
3615         * sysdeps/sh/tls.h: Likewise.
3616         * sysdeps/x86_64/tls.h: Likewise.
3617         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3618         Change type of __owner.
3619         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3620         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3621         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3622         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3623         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3624
3625 2003-06-19  Jakub Jelinek  <jakub@redhat.com>
3626
3627         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Move to...
3628         * sysdeps/unix/sysv/linux/sem_post.c: ...here.
3629
3630         * sysdeps/unix/sysv/linux/sem_post.c: Move to...
3631         * sysdeps/unix/sysv/linux/powerpc/sem_post.c: ... here.  Pass nr + 1
3632         instead of nr to lll_futex_wake.  Only set errno and return -1
3633         if err < 0.
3634
3635         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_wait,
3636         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
3637         return actual return value from the syscall, not 0.
3638
3639 2003-06-18  Ulrich Drepper  <drepper@redhat.com>
3640
3641         * tst-cancel4.c (tf_msgsnd): Don't always use 100 as the type,
3642         find a random value.
3643         (tf_msgrcv): Likewise.  Also don't report msgrcv returns if
3644         errno==EIDRM.
3645
3646         * sysdeps/unix/sysv/linux/timer_settime.c: Add prototype for
3647         compat_timer_settime.
3648         * sysdeps/unix/sysv/linux/timer_gettime.c: Add prototype for
3649         compat_timer_gettime.
3650         * sysdeps/unix/sysv/linux/timer_getoverr.c: Add prototype for
3651         compat_timer_getoverrun.
3652         * sysdeps/unix/sysv/linux/timer_delete.c: Add prototype for
3653         compat_timer_delete.
3654
3655         * pthread_mutex_destroy.c (__pthread_mutex_destroy): For
3656         error-checking mutex detect busy mutexes.
3657
3658 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
3659
3660         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_mutex_lock):
3661         Add ax to clobber list.
3662         (lll_mutex_cond_lock): Likewise.
3663         (lll_mutex_unlock): Likewise.
3664         (lll_lock): Likewise.
3665         (lll_unlock): Likewise.
3666
3667         * Makefile: Add rules to build and run tst-cancel18 and tst-cancelx18.
3668         * tst-cancel18.c: New file.
3669         * tst-cancelx18.c: New file.
3670
3671         * tst-cancel4.c: Test connect, creat, msgrcv, msgsnd, sendmsg, sendto,
3672         and tcdrain.
3673
3674         * Makefile: Add rules to build and run tst-cancel17 and tst-cancel17x.
3675         * tst-cancel17.c: New file.
3676         * tst-cancelx17.c: New file.
3677
3678         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
3679         * sysdeps/unix/sysv/linux/sigwait.c: New file.
3680         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
3681
3682         * tst-cancel4.c: Test open, close, pread, pwrite, fsync, and msync.
3683
3684 2003-06-16  Jakub Jelinek  <jakub@redhat.com>
3685
3686         * sysdeps/pthread/createthread.c (create_thread): Set
3687         header.multiple_threads unconditionally.
3688         * allocatestack.c (allocate_stack): Likewise.
3689         * descr.h (struct pthread): Add header.multiple_threads
3690         unconditionally.
3691         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (CENABLE, CDISABLE):
3692         Define for librt.  #error if neither libpthread, libc nor librt.
3693         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (CENABLE, CDISABLE):
3694         Likewise.
3695         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (CENABLE,
3696         CDISABLE): Likewise.
3697         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (CENABLE,
3698         CDISABLE): Likewise.
3699         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (CENABLE,
3700         CDISABLE): Likewise.
3701         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (CENABLE,
3702         CDISABLE): Likewise.  Access header.multiple_threads outside of
3703         libc and libpthread.
3704         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (CENABLE, CDISABLE):
3705         Likewise.
3706         * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads.
3707         * sysdeps/x86_64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define.
3708
3709 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
3710
3711         * tst-cancel4.c: Add tests for the socket and signal functions, pause.
3712         Also test early cancellation before the thread reaches the cancellation
3713         point.
3714
3715         * Makefile: Compile forward.c with exceptions.
3716
3717         * sysdeps/unix/sysv/linux/sleep.c: New file.
3718
3719 2003-06-16  Ulrich Drepper  <drepper@redhat.com>
3720
3721         * Makefile: Add CFLAGS definition to compile function wrappers
3722         duplicated from libc with exceptions.
3723         * tst-cancel4.c: Also check cancellation handlers.
3724
3725         * Makefile: Add rules to build and run tst-cancel16 and
3726         tst-cancelx16.  Add missing CFLAGS definitions.
3727         * tst-cancel16.c: New file.
3728         * tst-cancelx16.c: New file.
3729
3730 2003-06-15  Ulrich Drepper  <drepper@redhat.com>
3731
3732         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
3733         (DL_SYSINFO_IMPLEMENTATION): Use CFI opcodes.
3734         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
3735         (DL_SYSINFO_IMPLEMENTATION): Likewise.
3736
3737         * pthreadP.h (LIBC_CANCEL_ASYNC): Also define for librt.
3738         (LIBC_CANCEL_RESET): Likewise.
3739         Declare __librt_enable_asynccancel and __librt_disable_asynccancel.
3740         * sysdeps/pthread/Makefile (librt-sysdep_routines): Add
3741         librt-cancellation.
3742         (CFLAGS-libcrt-cancellation.c): Define.
3743         * sysdeps/pthread/librt-cancellation.c: New file.
3744         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define all the nice
3745         macros also when compiling librt.
3746         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
3747         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
3748         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
3749         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
3750         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
3751         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
3752         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
3753
3754         * sysdeps/unix/sysv/linux/timer_create.c: Add prototype for
3755         compat_timer_create.
3756
3757 2003-06-14  Ulrich Drepper  <drepper@redhat.com>
3758
3759         * sysdeps/pthread/posix-timer.h (timespec_compare): Always inline.
3760
3761         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
3762         __register_atfork.
3763         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
3764         Add libc_hidden_def.
3765
3766 2003-06-13  Roland McGrath  <roland@redhat.com>
3767
3768         * sysdeps/x86_64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Pass FS
3769         constant from <sys/reg.h> to ps_get_thread_area, not register contents.
3770
3771 2003-06-11  Ulrich Drepper  <drepper@redhat.com>
3772
3773         * allocatestack.c (queue_stack): Always inline.
3774         * ptreadhP.h (__do_cancel): Likewise.
3775
3776 2003-06-10  Jakub Jelinek  <jakub@redhat.com>
3777
3778         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait): Fix
3779         a typo.
3780
3781 2003-06-10  Ulrich Drepper  <drepper@redhat.com>
3782
3783         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
3784         (__pthread_cond_signal): Remove incorrect second addition for
3785         cond_lock!=0.
3786
3787 2003-06-09  Ulrich Drepper  <drepper@redhat.com>
3788
3789         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
3790         (__pthread_cond_signal): Use correct futex pointer in
3791         __lll_mutex_lock_wait call.
3792
3793         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
3794         (__pthread_cond_signal): Some more tweaks to handle cond_lock!=0.
3795
3796 2003-06-08  Ulrich Drepper  <drepper@redhat.com>
3797
3798         * sysdeps/unix/sysv/linux/s390/sem_wait.c (__new_sem_wait): Make
3799         cancelable.
3800         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
3801         Likewise.
3802
3803         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Remove
3804         hand-written CFI generation code.  Since ENTRY/END also initiated
3805         CFI frames this caused two CFI sets to be generated.
3806
3807 2003-06-07  Ulrich Drepper  <drepper@redhat.com>
3808
3809         * cleanup_routine.c: New file.
3810         * Versions (libpthread) [GLIBC_2.3.3]: Add __pthread_cleanup_routine.
3811         * sysdeps/pthread/pthread.h: Add support for fully exception-based
3812         cleanup handling.
3813         * Makefile (libpthread-routines): Add cleanup_routine.
3814         Add more CFLAGS variables to compile with exceptions.  Add comments
3815         why which file needs unwind tables.
3816         (tests) [have-forced-unwind==yes]: Add tst-cancelx* and tst-cleanupx*
3817         tests.
3818         * tst-cancelx1.c: New file.
3819         * tst-cancelx2.c: New file.
3820         * tst-cancelx3.c: New file.
3821         * tst-cancelx4.c: New file.
3822         * tst-cancelx5.c: New file.
3823         * tst-cancelx6.c: New file.
3824         * tst-cancelx7.c: New file.
3825         * tst-cancelx8.c: New file.
3826         * tst-cancelx9.c: New file.
3827         * tst-cancelx10.c: New file.
3828         * tst-cancelx11.c: New file.
3829         * tst-cancelx12.c: New file.
3830         * tst-cancelx13.c: New file.
3831         * tst-cancelx14.c: New file.
3832         * tst-cancelx15.c: New file.
3833         * tst-cleanupx0.c: New file.
3834         * tst-cleanupx0.expect: New file.
3835         * tst-cleanupx1.c: New file.
3836         * tst-cleanupx2.c: New file.
3837         * tst-cleanupx3.c: New file.
3838
3839         * tst-cleanup0.c: Make standard compliant.
3840         * tst-cleanup1.c: Likewise.
3841
3842         * sysdeps/unix/sysv/linux/sem_timedwait.c: Add cancellation support.
3843         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
3844         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
3845         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
3846         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
3847         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
3848         * sysdeps/i386/tcb-offsets.sym: Add RESULT, CANCELHANDLING, and
3849         CLEANUP_JMP_BUF.
3850         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
3851         * tst-cancel12.c: New file.
3852         * tst-cancel13.c: New file.
3853         * tst-cancel14.c: New file.
3854         * tst-cancel15.c: New file.
3855         * Makefile (tests): Add tst-cancel12, tst-cancel13, tst-cancel14,
3856         and tst-cancel15.
3857
3858         * tst-cancel1.c: Add some comments.
3859
3860         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Compute relative
3861         timeout correctly.
3862
3863 2003-06-06  Ulrich Drepper  <drepper@redhat.com>
3864
3865         * Makefile (CFLAGS-pthread_cancel.c): Define.
3866
3867 2003-06-05  Ulrich Drepper  <drepper@redhat.com>
3868
3869         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_rwlock_t):
3870         Change type of __writer element to int.
3871         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3872         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3873         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3874         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3875         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3876         * sysdeps/i386/tcb-offsets.sym: Replace SELF entry with TID entry.
3877         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
3878         * pthread_rwlock_trywrlock.c: Store TID not self pointer in __writer.
3879         Compare with TID to determine deadlocks.
3880         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
3881         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
3882         * sysdeps/pthread/pthread_rwlock_timedwrlock.: Likewise.
3883         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
3884         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
3885         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
3886         Likewise.
3887         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
3888         Likewise.
3889         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
3890         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
3891         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
3892         Likewise.
3893         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
3894         Likewise.
3895         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
3896         * Makefile (tests): Add tst-rwlock12.
3897         * tst-rwlock12.c: New file.
3898
3899 2003-06-05  Jakub Jelinek  <jakub@redhat.com>
3900
3901         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait,
3902         __lll_timedlock_wait, lll_unlock_wake_cb, __lll_timedwait_tid):
3903         Remove bogus hidden_proto.
3904         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
3905         Likewise.
3906         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_lock,
3907         lll_unlock_wake_cb, ___lll_timedwait_tid): Likewise.
3908         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (___lll_mutex_lock,
3909         ___lll_mutex_timedlock): Likewise.
3910
3911 2003-06-04  Ulrich Drepper  <drepper@redhat.com>
3912
3913         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
3914         (__pthread_cond_signal): Add some code to eventually handle
3915         cond_lock!=0.
3916
3917 2003-06-01  Ulrich Drepper  <drepper@redhat.com>
3918
3919         * Makefile (tests): Add tst-exec4.
3920         (tst-exec4-ARGS): Define.
3921         * tst-exec4.c: New file.
3922
3923 2003-05-31  Ulrich Drepper  <drepper@redhat.com>
3924
3925         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
3926         Also fail if tv_nsec < 0.
3927         (__lll_timedwait_tid): Likewise.
3928         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
3929         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_timedwait_tid):
3930         Likewise.
3931         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_timedwait_tid):
3932         Likewise.
3933         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (__lll_mutex_timedlock):
3934         Likewise.
3935         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
3936         Likewise.
3937         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_timedwait_tid):
3938         Likewise.
3939         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_timedwait_tid):
3940         Likewise.
3941
3942         * Makefile (tests): Add tst-sem8 and tst-sem9.
3943         * tst-sem8.c: New file.
3944         * tst-sem9.c: New file.
3945         * sem_open.c: Fix creation of in_use record if the file exists but
3946         no internal record.
3947
3948         * posix-timer.h: Remove old, unused timer_id2ptr and timer_ptr2id
3949         definitions.
3950
3951         * sysdeps/pthread/timer_create.c (timer_create): In case
3952         evp==NULL, assign timer ID to sival_ptr.
3953
3954         * descr.h (struct pthread_unwind_buf): Change type of prev element to
3955         struct pthread_unwind_buf *.
3956         (struct pthread): Likewise for cleanup_jmp_buf element.
3957
3958         * cleanup.c (__pthread_register_cancel): Add cast to avoid warning.
3959         * cleanup_defer.c (__pthread_register_cancel_defer): Likewise.
3960         * unwind.c (__pthread_unwind_next): Likewise.
3961
3962 2003-05-30  Ulrich Drepper  <drepper@redhat.com>
3963
3964         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
3965         (lll_futex_timed_wait): Use int for futex value parameter.
3966         (lll_futex_wake): Likewise.
3967         (lll_futex_requeue): Likewise.
3968
3969         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
3970         Replace one memory operation with one register operation.
3971
3972         * tst-join4.c (do_test): Fix error message.
3973
3974         * tst-rwlock6.c (do_test): Use correct format specifier.
3975
3976         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
3977         (__lll_mutex_lock_wait): Replace one memory operation with one
3978         register operation.
3979         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
3980         (__lll_mutex_lock_wait): Likewise.
3981
3982         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
3983         (__lll_mutex_cond_lock): Add one to value parameter of
3984         __lll_lock_wait to reflect reality in the futex syscall.
3985         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
3986         (lll_mutex_cond_lock): Likewise.
3987
3988 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
3989
3990         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_cond_lock):
3991         New function.
3992         (lll_mutex_cond_lock): Define.
3993
3994 2003-05-29  Ulrich Drepper  <drepper@redhat.com>
3995
3996         * Makefile (tests): Add tst-signal6.
3997         * tst-signal6.c: New file.
3998
3999         * sysdeps/unix/sysv/linux/s390/lowlevellock.h
4000         (__lll_mutex_unlock_force): New function
4001         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
4002
4003         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
4004         (__lll_mutex_unlock_force): New function.
4005         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
4006
4007         * tst-rwlock7.c (do_test): Use correct format specifier.
4008
4009         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue):
4010         Find break parameter in correct asm argument.
4011
4012 2003-05-27  Jakub Jelinek  <jakub@redhat.com>
4013
4014         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_clobbers):
4015         Remove out4.
4016         (lll_futex_requeue): Fix __o3 constraint, return negative errno if
4017         error occured.
4018         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
4019         Add __mutex.
4020         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_REQUEUE,
4021         lll_futex_requeue, lll_mutex_unlock_force): Define.
4022
4023 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
4024
4025         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4026         (pthread_cond_t): Add __mutex.
4027         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_REQUEUE,
4028         lll_futex_requeue, lll_mutex_unlock_force): Define.
4029
4030 2003-05-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4031
4032         * sysdeps/sh/tcb-offsets.sym: Define MUTEX_FUTEX.
4033         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4034         Add __mutex field.
4035         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (SYSCALL_WITH_INST_PAD):
4036         Define.
4037         (lll_futex_wait, lll_futex_wake): Define.
4038         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: New file.
4039         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Try using
4040         FUTEX_REQUEUE instead of FUTEX_WAIT.
4041         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
4042         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Remember
4043         mutex which was used in condvar structure.  Call
4044         __pthread_mutex_cond_lock instead of __pthread_mutex_lock_internal.
4045         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
4046
4047         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Don't
4048         include tcb-offsets.h.  Read wakeup value in locked region.
4049         Use the value of gbr register as THREAD_ID.
4050         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
4051         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
4052         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
4053
4054         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Remove futex related
4055         macros.
4056
4057 2003-05-28  Ulrich Drepper  <drepper@redhat.com>
4058
4059         * sysdeps/pthread/pthread_cond_broadcast.c
4060         (__pthread_cond_broadcast): Fix typo: MAX_INT -> INT_MAX.
4061
4062 2003-05-26  Ulrich Drepper  <drepper@redhat.com>
4063
4064         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Fix
4065         typo in register name.
4066         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Use parameters
4067         correctly.  Actually use requeue.  Little optimization.
4068         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Store
4069         mutex address early.  Handle cancellation state as 32-bit value.
4070         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4071         Remove unnecessary label.
4072
4073 2003-05-25  Ulrich Drepper  <drepper@redhat.com>
4074
4075         * sysdeps/pthread/pthread_cond_broadcast.c: Try using FUTEX_REQUEUE
4076         instead of FUTEX_WAIT.
4077         * sysdeps/pthread/pthread_cond_signal.c: Likewise.
4078         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
4079         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
4080         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
4081         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
4082         * sysdeps/pthread/pthread_cond_timedwait.c: Remember mutex which was
4083         used in condvar structure.  Call __pthread_mutex_cond_lock instead
4084         of __pthread_mutex_lock_internal.
4085         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4086         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4087         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
4088         (__condvar_cleanup): Always call __pthread_mutex_cond_lock.
4089         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4090         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4091         * sysdeps/unix/sysv/linux/Makefile (libpthread-sysdep_routines):
4092         Add pthread_mutex_cond_lock.
4093         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add dep_mutex.
4094         * sysdeps/unix/sysv/linux/pthread_cond_mutex_lock.c: New file.
4095         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define
4096         lll_mutex_cond_lock.
4097         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
4098         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
4099         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
4100         Add __mutex field.
4101         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4102         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4103
4104         * sysdeps/i386/tcb-offsets.sym: Define MUTEX_FUTEX.
4105         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
4106
4107         * pthreadP.h: Declare __pthread_mutex_cond_lock.
4108         * pthread_mutex_lock.c: Define LLL_MUTEX_LOCK if not already defined.
4109         Use it instead of lll_mutex_lock.  If __pthread_mutex_lock is a
4110         macro don't define aliases.
4111
4112         * cancellation.c: Remove __pthread_enable_asynccancel_2.
4113         * pthreadP.h: Remove declaration of __pthread_enable_asynccancel_2.
4114         * sysdeps/pthread/pthread_cond_timedwait.c: Use
4115         __pthread_enable_asynccancel instead of __pthread_enable_asynccancel_2.
4116         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4117         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4118         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
4119         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4120         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4121
4122 2003-05-17  Ulrich Drepper  <drepper@redhat.com>
4123
4124         * sem_open.c: Fix one endless loop.  Implement correct semantics
4125         wrt opening the same semaphore more then once.
4126         * sem_close.c: Adjust for sem_open change.
4127         * semaphoreP.h: Include <semaphore.h>.  Define struct inuse_sem.
4128         Declare __sem_mappings, __sem_mappings_lock, __sem_search.
4129         * Makefile (tests): Add tst-sem7.
4130         * tst-sem7.c: New file.
4131
4132 2003-05-16  Roland McGrath  <roland@redhat.com>
4133
4134         * sysdeps/unix/sysv/linux/register-atfork.c (libc_freeres_fn): Fix
4135         uninitialized variable braino.
4136
4137 2003-05-16  Ulrich Drepper  <drepper@redhat.com>
4138
4139         * sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime): Correct
4140         test for syscall availability.
4141
4142         * sysdeps/unix/sysv/linux/timer_settime.c (timer_settime): Set
4143         __no_posix_timers to -1 if the syscalls don't exist.
4144
4145         * pthread_join.c (pthread_join): Set tid field of the joined
4146         thread to -1.  This isn't necessary but helps to recognize some
4147         error conditions with almost no cost.
4148
4149         * allocatestack.c (FREE_P): Also negative values indicate an
4150         unused stack.
4151
4152         * unwind.c: Include <unistd.h>.
4153
4154 2003-05-14  Ulrich Drepper  <drepper@redhat.com>
4155
4156         * Makefile ($(objpfx)$(multidir)): Add rule to create the directory.
4157
4158 2003-05-14  Jakub Jelinek  <jakub@redhat.com>
4159
4160         * Makefile (crti-objs, crtn-objs): New variables.
4161         (omit-deps, extra-objs): Add crtn.
4162         ($(objpfx)libpthread.so): Depend on both crti and crtn
4163         and links to them in multidir.
4164         ($(objpfx)crtn.S, $(objpfx)crtn.o): New rules.
4165
4166 2003-05-12  Steven Munroe  <sjmunroe@us.ibm.com>
4167
4168         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
4169         (lll_mutex_unlock): Use atomic_exchange_rel.
4170
4171 2003-05-11  Ulrich Drepper  <drepper@redhat.com>
4172
4173         * cond-perf.c (cons): Add missing locking around setting of alldone.
4174
4175 2003-05-10  Ulrich Drepper  <drepper@redhat.com>
4176
4177         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Remove futex
4178         related macros.
4179         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
4180
4181 2003-05-09  Ulrich Drepper  <drepper@redhat.com>
4182
4183         * tst-sem6.c: New file.
4184         * Makefile (tests): Add tst-sem6.
4185
4186         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (___lll_mutex_unlock):
4187         Use atomic_exchange_rel instead of atomic_exchange.
4188         * sysdeps/unix/sysv/linux/lowlevellock.c (lll_unlock_wake_cb):
4189         Likewise.
4190
4191         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Improve quality of
4192         code for lll_futex_wait and lll_futex_wake in static apps.  Use
4193         vsyscall is possible.
4194
4195         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: New file.
4196         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: New file.
4197         * sysdeps/pthread/pthread.h: Declare pthread_getaffinity_np and
4198         pthread_setaffinity_np.
4199         * Versions [libpthread] (GLIBC_2.3.3): Add pthread_getaffinity_np
4200         and pthread_setaffinity_np.
4201         * Makefile (libpthread-routines): Add pthread_getaffinity and
4202         pthread_setaffinity.
4203
4204         * allocatestack.c (allocate_stack): If ARCH_RETRY_MMAP is defined,
4205         use it in case mmap to allocate the stack fails.
4206         * sysdeps/unix/sysv/linux/x86_64/Makefile: Don't define
4207         ARCH_MAP_FLAGS here.
4208         * sysdeps/x86_64/pthreaddef.h: Define ARCH_MAP_FLAGS and
4209         ARCH_RETRY_MMAP.
4210
4211 2003-05-08  Ulrich Drepper  <drepper@redhat.com>
4212
4213         * sysdeps/unix/sysv/linux/fork.c: Complete rewrite of the atfork
4214         handler implementation.  It is now lockless in fork().
4215         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
4216         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
4217         * sysdeps/unix/sysv/linux/fork.h: Don't include <link.h>.  Don't
4218         declare the __fork_*_lists.
4219         (struct fork_handler): Include pointers to all three functions.
4220         Add next, refcntr and need_signal elements.
4221         (__fork_handlers): New declaration.
4222         (__register_atfork_malloc): Remove declaration.
4223         (HAVE_register_atfork_malloc): Remove definition.
4224         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove
4225         __pthread_child_handler variable.
4226         (__libc_pthread_init): Use __register_atfork instead of explicitly
4227         adding to the list.
4228         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define lll_futex_wait
4229         and lll_futex_wake.
4230         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
4231
4232         * unwind.c (unwind_cleanup): Print error message and then abort.  This
4233         function must never be reached.
4234
4235         * cond-perf.c: New file.
4236
4237 2003-05-05  Ulrich Drepper  <drepper@redhat.com>
4238
4239         * sysdeps/i386/tls.h (TLS_INIT_TP): Include \n in error message.
4240
4241 2003-05-04  Roland McGrath  <roland@redhat.com>
4242
4243         * Makefile ($(objpfx)../libc.so): New target.
4244
4245 2003-05-02  Ulrich Drepper  <drepper@redhat.com>
4246
4247         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4248         (pthread_condattr_t): Size is only an int, don't use long for
4249         alignment.
4250         (pthread_mutexattr_t): Likewise.
4251         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4252         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4253         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4254
4255 2003-05-01  Ulrich Drepper  <drepper@redhat.com>
4256
4257         * sysdeps/i386/tls.h: Define THREAD_ID.
4258         * sysdeps/ia64/tls.h: Likewise.
4259         * sysdeps/powerpc/tls.h: Likewise.
4260         * sysdeps/s390/tls.h: Likewise.
4261         * sysdeps/sh/tls.h: Likewise.
4262         * sysdeps/x86_64/tls.h: Likewise.
4263         * pthread_mutex_lock.c: Use THREAD_ID instead of THREAD_SELF to
4264         record ownership.
4265         * pthread_mutex_timedlock.c: Likewise.
4266         * pthread_mutex_trylock.c: Likewise.
4267         * pthread_mutex_unlock.c: Likewise.
4268         * pthread_rwlock_trywrlock.c: Likewise.
4269         * sysdeps/pthread/pthread_rwlocklock_rdlock.c: Likewise.
4270         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
4271         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
4272         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
4273
4274         * sysdeps/pthread/createthread.c (create_thread): Use CLONE_SYSVSEM
4275         flag.
4276
4277 2003-04-29  Jakub Jelinek  <jakub@redhat.com>
4278
4279         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
4280         (__SIZEOF_PTHREAD_COND_T): Define to 48.
4281         (pthread_rwlock_t): Add 16 bytes of pad instead of 8 before __flags.
4282         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
4283         Make __align long long instead of long.
4284         (pthread_rwlock_t): Formatting.
4285         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
4286         (pthread_rwlock_t): Formatting.
4287         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4288         (pthread_cond_t): Make __align long long instead of long.
4289         (pthread_rwlock_t): Move __flags field to the same position as in
4290         linuxthreads.
4291
4292 2003-04-30  Ulrich Drepper  <drepper@redhat.com>
4293
4294         * tst-rwlock6.c (do_test): Use correct printf format specifiers.
4295         * tst-rwlock7.c (do_test): Likewise.
4296
4297 2003-04-26  Roland McGrath  <roland@redhat.com>
4298
4299         * Makefile ($(test-modules)): Depend on $(common-objpfx)shlib.lds.
4300
4301 2003-04-22  Jakub Jelinek  <jakub@redhat.com>
4302
4303         * allocatestack.c (TLS_TPADJ): Add TLS_PRE_TCB_SIZE instead of
4304         sizeof (struct pthread).
4305         (allocate_stack): Subtract TLS_PRE_TCB_SIZE bytes instead of
4306         1 struct pthread.
4307         * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define
4308         to 0.
4309         (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of
4310         struct pthread.
4311         (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad
4312         to 32-bit bytes.
4313         (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before
4314         tcbp.
4315         (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE
4316         unneccessarily.
4317         (NO_TLS_OFFSET): Define.
4318         * sysdeps/unix/sysv/linux/powerpc/createthread.c (TLS_VALUE): Don't
4319         add TLS_TCB_SIZE unnecessarily.
4320
4321 2003-04-22  Roland McGrath  <roland@redhat.com>
4322
4323         * Makeconfig (shared-thread-library): Reverse link order to work
4324         around linker bug.
4325
4326 2003-04-22  Ulrich Drepper  <drepper@redhat.com>
4327
4328         * semaphore.h: Fix typo in comment.
4329
4330 2003-04-21  Ulrich Drepper  <drepper@redhat.com>
4331
4332         * sysdeps/pthread/sigfillset.c: New file.
4333
4334         * init.c (__pthread_initialize_minimal): Don't block SIGTIMER.
4335         * pthreadP.h: Make SIGTIMER and SIGCANCEL the same.
4336         * sysdeps/pthread/pthread_sigmask.c: Remove handling of SIGTIMER.
4337         * sysdeps/pthread/sigaction.c: Likewise.
4338         * sysdeps/pthread/sigprocmask.c: New file.
4339         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): Define as
4340         __SIGRTMIN+1.
4341         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
4342         Block SIGTIMER.  Also handle SI_TKILL events and terminate thread
4343         in this case.
4344
4345 2003-04-19  Ulrich Drepper  <drepper@redhat.com>
4346
4347         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
4348         (DL_SYSINFO_IMPLEMENTATION): Add .eh_frame information.
4349
4350         * sysdeps/unix/sysv/linux/unregister-atfork.c
4351         (__unregister_atfork): Don't free memory not allocated dynamically.
4352
4353         * semaphore.h: Remove __THROW marker from cancellation points.
4354         * nptl/sysdeps/pthread/pthread.h: Likewise.
4355
4356 2003-04-18  Ulrich Drepper  <drepper@redhat.com>
4357
4358         * sysdeps/pthread/pthread.h: Don't mark pthread_testcancel,
4359         pthread_cancel, pthread_setcancelstate, and pthread_setcanceltype with
4360         __THROW.
4361
4362 2003-04-16  Jakub Jelinek  <jakub@redhat.com>
4363
4364         * tst-cancel4.c (do_test): Use %zd instead of %d when printing cnt.
4365
4366 2003-04-15  Roland McGrath  <roland@redhat.com>
4367
4368         * forward.c (__pthread_unwind): Tweak to avoid warning.
4369
4370 2003-04-15  Ulrich Drepper  <drepper@redhat.com>
4371
4372         * pthreadP.h: Move THREAD_ATOMIC_* replacements to the top.
4373
4374 2003-04-14  Ulrich Drepper  <drepper@redhat.com>
4375
4376         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Don't
4377         overflow CFA advance instructions.
4378         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4379
4380 2003-04-14  Jakub Jelinek  <jakub@redhat.com>
4381
4382         * sysdeps/i386/tls.h: Rename LOCK to LOCK_PREFIX.
4383         * sysdeps/i386/pthread_spin_lock.c: Likewise.
4384         * sysdeps/x86_64/tls.h: Likewise.  Define LOCK_PREFIX if not already
4385         defined.
4386
4387         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Use
4388         DW_CFA_advance_loc2 for .Laddl-.Lsubl.
4389         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use
4390         DW_CFA_advance_loc for .Laddl-.Lsubl.
4391
4392 2003-04-13  Ulrich Drepper  <drepper@redhat.com>
4393
4394         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Don't use
4395         position-independent unwind data for static libraries.
4396         Add missing unwind info.  Add comments.
4397
4398         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info.
4399         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4400         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4401         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4402
4403 2003-04-12  Ulrich Drepper  <drepper@redhat.com>
4404
4405         * Makefile: Make sure all cancellation points are compiled with
4406         exception and asynchronous unwind tables.
4407
4408         * sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
4409         which mishandles loading of global object addresses in PIC.
4410         (THREAD_SETMEM_NC): Likewise.
4411
4412 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
4413
4414         * pthread.h: Define new data structure for cleanup buffer.  Declare
4415         new cleanup handler interfaces.
4416         * descr.h: Include <unwind.h> if necessary.  Define pthread_unwind_buf.
4417         (struct pthread): Add cleanup_jmp_buf pointer.  Define
4418         HAVE_CLEANUP_JMP_BUF and not HAVE_CANCELBUF.
4419         * pthreadP.h: Declare __pthread_unwind.  Define __do_cancel to use
4420         it.  Declare old cleanup handler installation functions.
4421         * cleanup.c: Rewrite.  Install handler for unwind-based cleanup
4422         handling.
4423         * cleanup_defer.c: Likewise.
4424         * cleanup_compat.c: New file.  Old cleanup code.
4425         * cleanup_def_compat.c: New file.  Old cleanup code.
4426         * pthread_create.c (start_thread): Initialize cleanup_jmp_buf element
4427         if own thread descriptor.
4428         * unwind.c: New file.
4429         * forward.c: Add __pthread_unwind.
4430         * init.c (pthread_functions): Add __pthread_unwind.
4431         * sysdeps/pthread/pthread-functions.s (struct pthread_functions):
4432         Add ptr___pthread_unwind.
4433         * Versions [GLIBC_2.3.3] (libpthread): Export new cleanup handling
4434         and unwind function.
4435         * Makefile (libpthread-routines): Add cleanup_compat,
4436         cleanup_def_compat, and unwind.  Define CFLAGS to enable unwind
4437         table generation if necessary.
4438         * version.c: Record whether unwind support is compiled in.
4439         * sysdeps/pthread/configure.in: Add checks for unwind unterfaces.
4440         * sysdeps/pthread/bits/libc-lock.h: Add prototypes of the old cleanup
4441         handler interfaces.
4442         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add quite a bit of
4443         complication to generate unwind information for syscall wrappers.
4444         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
4445         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
4446         __cleanup_fct_attribute.
4447
4448         * Makefile: Add rules to build and run tst-cleanup0.
4449         * tst-cleanup0.c: New file.
4450         * tst-cleanup0.expect: New file.
4451
4452         * pthread_create.c (deallocate_tsd): Don't take parameter.  Adjust
4453         caller.  Optimize to avoid often unecessary local variable.
4454
4455 2003-04-11  Roland McGrath  <roland@redhat.com>
4456
4457         * Makefile ($(objpfx)multidir.mk): New target, generated makefile that
4458         sets variable `multidir'; include that.
4459         (generated): Add it.
4460         ($(objpfx)$(multidir)/crti.o): New target.
4461         [$(multidir) != .] (generated-dirs, extra-objs, omit-deps): Add it.
4462
4463 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
4464
4465         * tst-attr2.c (do_test): Add cast to avoid warning.
4466         * tst-mutex4.c (do_test): Likewise.
4467
4468 2003-04-10  Ulrich Drepper  <drepper@redhat.com>
4469
4470         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset CPU clocks
4471         in child.
4472
4473 2003-04-09  Ulrich Drepper  <drepper@redhat.com>
4474
4475         * Makefile (tests): Add tst-detach1.
4476         * tst-detach1.c: New file.
4477
4478 2003-04-08  Ulrich Drepper  <drepper@redhat.com>
4479
4480         * sysdeps/pthread/pthread.h: Remove duplicate
4481         pthread_cleanup_{push,pop} definitions.
4482
4483         * tst-barrier2.c: Eliminate warnings.
4484         * tst-cancel4.c: Likewise.
4485         * tst-cond4.c: Likewise.
4486         * tst-cond6.c: Likewise.
4487         * tst-detach1.c: Likewise.
4488         * tst-rwlock4.c: Likewise.
4489         * tst-rwlock6.c: Likewise.
4490         * tst-rwlock7.c: Likewise.
4491         * tst-sem3.c: Likewise.
4492         * tst-spin2.c: Likewise.
4493         * tst-umask1.c: Likewise.
4494
4495 2003-04-07  Ulrich Drepper  <drepper@redhat.com>
4496
4497         * pthread_detach.c (pthread_detach): Fix test for invalid TID.
4498
4499 2003-04-06  Ulrich Drepper  <drepper@redhat.com>
4500
4501         * descr.h (struct pthread): Move cancelhandling member to the front.
4502
4503 2003-04-05  Ulrich Drepper  <drepper@redhat.com>
4504
4505         * sysdeps/unix/sysv/linux/register-atfork.c: Define malloc_prepare,
4506         malloc_parent, and malloc_child statically.
4507         (__register_atfork_malloc): New function.
4508         (free_mem): Don't free any of the malloc_* variables on the list.
4509         * sysdeps/unix/sysv/linux/fork.h: Declare __register_atfork_malloc.
4510         Define HAVE_register_atfork_malloc.
4511
4512 2003-04-04  Ulrich Drepper  <drepper@redhat.com>
4513
4514         * sysdeps/pthread/createthread.c (create_thread): Add some more
4515         comments explaining when to set multiple_threads and when not.
4516
4517         * pthreadP.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
4518         THREAD_ATOMIC_BIT_SET if not already defined.
4519         * sysdeps/i386/tls.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
4520         THREAD_ATOMIC_BIT_SET:
4521         * sysdeps/x86_64/tls.h: Likewise.
4522         * cleanup_defer.c (_pthread_cleanup_push_defer): Rewrite to use
4523         THREAD_ATOMIC_CMPXCHG_VAL.
4524         (_pthread_cleanup_pop_restore): Likewise.
4525         * cancellation.c (__pthread_enable_asynccancel): Likewise.
4526         (__pthread_enable_asynccancel_2): Likewise.
4527         (__pthread_disable_asynccancel): Likewise.
4528         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
4529         (__libc_disable_asynccancel): Likewise.
4530         * init.c (sigcancel_handler): Likewise.
4531         * pthread_setcancelstate.c (__pthread_setcancelstate): Likewise.
4532         * pthread_setcanceltype.c (__pthread_setcanceltype): Likewise.
4533
4534 2003-04-03  Ulrich Drepper  <drepper@redhat.com>
4535
4536         * init.c (sigcancel_handler): Don't set EXITING_BIT here.
4537         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
4538         * pthreadP.h (__do_cancel): Set EXITING_BIT here.
4539         * Makefile (tests): Add tst-cancel11.
4540         * tst-cancel11.c: New file.
4541
4542 2003-04-01  Ulrich Drepper  <drepper@redhat.com>
4543
4544         * pthread_create.c (deallocate_tsd): Clear/free memory after the last
4545         round, not the first.  Use specific_used flag instead of local
4546         found_nonzero variable.  Use THREAD_[SG]ETMEM where possible.
4547         (__free_tcb): Don't call deallocate_tsd here.
4548         (start_thread): Call deallocate_tsd here.
4549         * pthread_setspecific.c: Set specific_used flag really only when
4550         needed.
4551         * Makefile (tests): Add tst-tsd3.c and tst-tsd4.
4552         * tst-tsd3.c: New file.
4553         * tst-tsd4.c: New file.
4554
4555 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
4556
4557         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_mutex_lock):
4558         Use atomic_exchange_and_add instead of __lll_add.
4559         (__lll_mutex_timedlock): Likewise.
4560         Patch by Ian Wienand.
4561
4562 2003-03-24  Steven Munroe  <sjmunroe@us.ibm.com>
4563
4564         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
4565         (SINGLE_THREAD_P): Fix typo.
4566         * tst-cancel-wrappers.sh: Handle '.'ed symbols.
4567
4568 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
4569
4570         * Makefile (tests): Add tst-align.
4571         * tst-align.c: New file.
4572         * sysdeps/i386/Makefile: Define CFLAGS-tst-align.
4573
4574         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Align stack of called
4575         function correctly.
4576
4577         * tst-tsd2.c: Add casts to avoid warnings.
4578
4579 2003-03-30  Ulrich Drepper  <drepper@redhat.com>
4580
4581         * descr.h (struct pthread): Move most often used elements to the front.
4582
4583 2003-03-29  Ulrich Drepper  <drepper@redhat.com>
4584
4585         * Makefile (libpthread-routines): Add pthread_atfork.
4586         (libpthread-static-only-routines): Add pthread_atfork.
4587
4588 2003-03-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4589
4590         * sysdeps/sh/tls.h: Include nptl/descr.h after the definition
4591         of TLS_DTV_AT_TP.
4592         (INSTALL_DTV): Add parens.
4593         (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC):
4594         Use passed descr instead of THREAD_SELF.
4595         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
4596         (__lll_mutex_timedlock_wait): Correct expected value after
4597         spurious wakeup.
4598         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S:
4599         Release lock before waking up the waiters.
4600         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Correct exit
4601         criteria.  Reorderstruct passed to cleanup handler.  Fix
4602         handling of cancellation and failung pthread_mutex_unlock call.
4603         Use __pthread_enable_asynccancel_2 instead of
4604         __pthread_enable_asynccancel.
4605         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
4606         Return result of lock re-get if it fails.
4607         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Fix wrong argument
4608         for __pthread_cleanup_push.
4609         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Fix
4610         completely broken rwlock implementation.
4611         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
4612         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
4613         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
4614         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
4615         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
4616         * sysdeps/unix/sysv/linux/sh/sem_post.S: Fix error value.  Use
4617         versioned_symbol macro.
4618         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Use versioned_symbol macro.
4619         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
4620
4621 2003-03-27  Ulrich Drepper  <drepper@redhat.com>
4622
4623         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Don't declare
4624         __timer_helper_thread.  Declare __start_helper_thread, __helper_once,
4625         and __helper_tid.
4626         (struct timer): Remove th and bar field.
4627         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Remove
4628         debugging code.  Create only one helper thread.
4629         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Don't kill
4630         helper thread.
4631         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
4632         Renamed.  Define statically.  Use thread info from siginfo.
4633         (__helper_once): New variable.
4634         (__helper_tid): New variable.
4635         (__reset_helper_control): New function.
4636         (__start_helper_thread): New function.
4637
4638         * pthread_create.c (start_thread): Don't use setjmp inside
4639         __builtin_expect to work around gcc bug.
4640
4641         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Even if
4642         timer_delete syscall fails, but not with ENOSYS, set
4643         __no_posix_timers.
4644
4645         * sysdeps/unix/sysv/linux/timer_settime.c [!__ASSUME_POSIX_TIMERS]
4646         (timer_settime): Fix typo.
4647         * sysdeps/unix/sysv/linux/timer_getoverr.c
4648         [!__ASSUME_POSIX_TIMERS] (timer_getoverrun): Likewise.
4649
4650 2003-03-27  Jakub Jelinek  <jakub@redhat.com>
4651
4652         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Fix
4653         offset of cleanupbuf.__prev.
4654
4655 2003-03-26  Jakub Jelinek  <jakub@redhat.com>
4656
4657         * sysdeps/unix/sysv/linux/timer_getoverr.c: Fix typo in name
4658         of included file.
4659
4660 2003-03-26  Ulrich Drepper  <drepper@redhat.com>
4661
4662         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): If EVP ==
4663         NULL provide default definition to syscall.
4664
4665 2003-03-25  Roland McGrath  <roland@redhat.com>
4666
4667         * sysdeps/pthread/posix-timer.h (TIMER_MAX): Define if not defined.
4668         (timer_id2ptr): Fix typo.
4669
4670 2003-03-25  Ulrich Drepper  <drepper@redhat.com>
4671
4672         * pthreadP.h: Define SIGCANCEL and SIGTIMER.
4673         * sysdeps/i386/pthreaddef.h: Remove SIGCANCEL definition.
4674         * sysdeps/ia64/pthreaddef.h: Likewise.
4675         * sysdeps/powerpc/pthreaddef.h: Likewise.
4676         * sysdeps/s390/pthreaddef.h: Likewise.
4677         * sysdeps/sh/pthreaddef.h: Likewise.
4678         * sysdeps/x86_64/pthreaddef.h: Likewise.
4679         * init.c (__pthread_initialize_minimal): Block SIGTIMER.
4680         * sysdeps/pthread/sigaction.c: Also prevent SIGTIMER handler from
4681         being changed.
4682         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
4683         SIGTIMER is not unblocked.
4684         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): One more
4685         RT signal taken.
4686         * sysdeps/unix/sysv/linux/pthread_kill.c: Do not allow SIGTIMER to
4687         be send.
4688         * sysdeps/pthread/posix-timer.h (timer_id2ptr, timer_ptr2id): Just
4689         pass pointer through as ID.
4690         * sysdeps/unix/sysv/linux/bits/local_lim.h (TIMER_MAX): Removed.
4691         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: New file.
4692         * sysdeps/unix/sysv/linux/timer_create.c: New file.
4693         * sysdeps/unix/sysv/linux/timer_delete.c: New file.
4694         * sysdeps/unix/sysv/linux/timer_getoverr.c: New file.
4695         * sysdeps/unix/sysv/linux/timer_gettime.c: New file.
4696         * sysdeps/unix/sysv/linux/timer_routines.c: New file.
4697         * sysdeps/unix/sysv/linux/timer_settime.c: New file.
4698         * sysdeps/unix/sysv/linux/ia64/Versions: New file.
4699         * sysdeps/unix/sysv/linux/ia64/timer_create.c: New file.
4700         * sysdeps/unix/sysv/linux/ia64/timer_delete.c: New file.
4701         * sysdeps/unix/sysv/linux/ia64/timer_getoverr.c: New file.
4702         * sysdeps/unix/sysv/linux/ia64/timer_gettime.c: New file.
4703         * sysdeps/unix/sysv/linux/ia64/timer_settime.c: New file.
4704         * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: New file.
4705         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c: New file.
4706         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c: New file.
4707         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c: New file.
4708         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c: New file.
4709         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c: New file.
4710         * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file.
4711         * sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c: New file.
4712         * sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c: New file.
4713         * sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c: New file.
4714         * sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c: New file.
4715         * sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c: New file.
4716         * sysdeps/unix/sysv/linux/x86_64/Versions: New file.
4717         * sysdeps/unix/sysv/linux/x86_64/compat-timer.h: New file.
4718         * sysdeps/unix/sysv/linux/x86_64/timer_create.c: New file.
4719         * sysdeps/unix/sysv/linux/x86_64/timer_delete.c: New file.
4720         * sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c: New file.
4721         * sysdeps/unix/sysv/linux/x86_64/timer_gettime.c: New file.
4722         * sysdeps/unix/sysv/linux/x86_64/timer_settime.c: New file.
4723
4724         * pthreadP.h: Remove FRAME_LEFT definition.
4725         * cleanup.c (_pthread_cleanup_push): Don't check for reference to
4726         already left frame.  Programs which have this problem are not POSIX
4727         compliant.
4728         * cleanup_defer.c (_pthread_cleanup_push_defer): Likewise.
4729
4730 2003-03-24  Ulrich Drepper  <drepper@redhat.com>
4731
4732         * sysdeps/pthread/tst-timer.c: Check return values of the
4733         functions we test.
4734
4735 2003-03-23  Roland McGrath  <roland@redhat.com>
4736
4737         * tst-tls3.c (do_test) [! HAVE___THREAD]: Don't test anything.
4738         * tst-tls3mod.c: Likewise.
4739         * tst-tls1.c: Likewise.
4740         * tst-tls2.c: Likewise.
4741
4742         * tst-mutex5.c (do_test): Unlock before destroy, otherwise we invoke
4743         undefined behavior.
4744
4745         * tst-join5.c (tf1, tf2): Add a cast.
4746
4747         * Makeconfig (includes): Append -I$(..)nptl to this variable.
4748
4749         * tst-barrier2.c (do_test) [! _POSIX_THREAD_PROCESS_SHARED]:
4750         Don't test anything.
4751         * tst-cond4.c: Likewise.
4752         * tst-cond6.c: Likewise.
4753         * tst-flock2.c: Likewise.
4754         * tst-mutex4.c: Likewise.
4755         * tst-rwlock4.c: Likewise.
4756         * tst-signal1.c: Likewise.
4757         * tst-spin2.c: Likewise.
4758         * tst-cond11.c [! _POSIX_CLOCK_SELECTION]: Likewise.
4759
4760         * tst-mutex4.c: Use test-skeleton.c.
4761         * tst-spin2.c: Likewise.
4762         * tst-sysconf.c: Likewise.
4763         * tst-barrier2.c: Likewise.
4764         * tst-cond4.c: Likewise.
4765         * tst-cond6.c: Likewise.
4766         * tst-rwlock4.c: Likewise.
4767         * tst-unload.c: Likewise.
4768         * tst-flock2.c (do_test): Use return instead of exit.
4769
4770 2003-03-22  Jakub Jelinek  <jakub@redhat.com>
4771
4772         * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def.
4773
4774 2003-03-21  Ulrich Drepper  <drepper@redhat.com>
4775
4776         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
4777         (__lll_mutex_trylock): Use atomic_compare_and_exchange_val_acq
4778         instead of __lll_compare_and_swap.
4779         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
4780         Likewise.
4781         Removed definition if __lll_compare_and_swap.
4782
4783         * cancellation.c: Adjust for new form of compare&exchange macros.
4784         * cleanup_defer.c: Likewise.
4785         * init.c: Likewise.
4786         * libc-cancellation.c: Likewise.
4787         * old_pthread_cond_broadcast.c: Likewise.
4788         * old_pthread_cond_signal.c: Likewise.
4789         * old_pthread_cond_timedwait.c: Likewise.
4790         * old_pthread_cond_wait.c: Likewise.
4791         * pthread_cancel.c: Likewise.
4792         * pthread_create.c: Likewise.
4793         * pthread_detach.c: Likewise.
4794         * pthread_join.c: Likewise.
4795         * pthread_key_delete.c: Likewise.
4796         * pthread_setcancelstate.c: Likewise.
4797         * pthread_setcanceltype.c: Likewise.
4798         * pthread_timedjoin.c: Likewise.
4799         * pthread_tryjoin.c: Likewise.
4800         * sysdeps/pthread/createthread.c: Likewise.
4801
4802 2003-03-20  Ulrich Drepper  <drepper@redhat.com>
4803
4804         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Include <atomic.h>.
4805         Remove __lll_add, __lll_dec_if_positive, and __lll_test_and_set
4806         definitions.  Replace uses with calls to atomic_* functions.
4807         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
4808         * sysdeps/unix/sysv/linux/lowlevellock.c: Replace __lll_add and
4809         __lll_test_and_set calls with atomic_exchange_and_add and
4810         atomic_exchange calls respectively.
4811         * sysdeps/unix/sysv/linux/sem_post.c: Likewise.
4812         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
4813         * sysdeps/unix/sysv/linux/sem_trywait.c: Likewise.
4814         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
4815         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Likewise.
4816         * sysdeps/unix/sysv/linux/ia64/sem_port.c: Likewise.
4817         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: Likewise.
4818
4819         * allocatestack.c (allocate_stack): Assume atomic_exchange_and_add
4820         returns the old value.
4821
4822 2003-03-20  Martin Schwidefsky  <sky@mschwid3.boeblingen.de.ibm.com>
4823
4824         * sysdeps/s390/pthread_spin_lock.c (pthread_spin_lock): Use type
4825         int for variable OLDVAL and correct inline assembler contraint.
4826         * sysdeps/s390/pthread_spin_trylock.c (pthread_spin_trylock): Use
4827         type int for variable OLD.
4828
4829         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it
4830         only for s390-32.
4831         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
4832         (SINGLE_THREAD_P): Use global variable __local_multiple_threads
4833         instead of multiple_threads field in the TCB.
4834
4835 2003-03-19  Ulrich Drepper  <drepper@redhat.com>
4836
4837         * sysdeps/i386/i686/bits/atomic.h: Removed.
4838         * sysdeps/i386/i586/bits/atomic.h: Removed.
4839         * sysdeps/i386/i486/bits/atomic.h: Removed.  Moved to glibc.
4840         * sysdeps/x86_64/bits/atomic.h: Removed.  Moved to glibc.
4841         * sysdeps/s390/bits/atomic.h: Removed.  Moved to glibc.
4842         * sysdeps/sh/bits/atomic.h: Removed.  Moved to glibc.
4843         * sysdeps/ia64/bits/atomic.h: Removed.  Moved to glibc.
4844         * sysdeps/powerpc/bits/atomic.h: Removed.  Moved to glibc.
4845         * atomic.h: Removed.  Moved to glibc.
4846
4847         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Add
4848         support for clock selection.
4849
4850         * sysdeps/pthread/pthread_cond_broadcast.c: Release lock before
4851         signalling waiters.
4852
4853 2003-03-18  Roland McGrath  <roland@redhat.com>
4854
4855         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
4856         Add __lll_rel_instr first.  Add memory clobber.
4857         (lll_mutex_unlock): Use __lll_test_and_set.
4858         From Paul Mackerras <paulus@samba.org>.
4859
4860         * sysdeps/powerpc/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define
4861         unconditionally.
4862         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
4863         (SINGLE_THREAD_P):  Add `header.' prefix.
4864         From Paul Mackerras <paulus@samba.org>.
4865
4866         * Versions (libpthread: GLIBC_2.3.2): Move pthread_tryjoin_np and
4867         pthread_timedjoin_np to ...
4868         (libpthread: GLIBC_2.3.3): ... here.
4869         (libpthread: GLIBC_2.2): Move pthread_barrierattr_getpshared there too.
4870
4871         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
4872         Avoid shadowing VAL variable.
4873
4874         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
4875         New macro.
4876
4877 2003-03-18  Ulrich Drepper  <drepper@redhat.com>
4878
4879         * Makefile (tests): Add tst-cond11.
4880         * tst-cond11.c: New file.
4881
4882         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Reorder
4883         struct passed to cleanup handler to eliminate one more
4884         instruction.
4885         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4886
4887         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
4888         (pthrad_cond_t): Replace __unused field with __clock.
4889
4890         * sysdeps/pthread/pthread_cond_wait.c: Release condvar lock before
4891         waken all waiters in cleanup handler.
4892         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4893         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4894
4895         * pthread_condattr_getclock.c: New file.
4896         * pthread_condattr_setclock.c: New file.
4897         * sysdeps/pthread/pthread.h: Declare these new functions.
4898         * Versions [GLIBC_2.3.3] (libpthread): Add the new functions.
4899         * Makefile (libpthread-routines): Add the new functions.
4900         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_condattr):
4901         Renamed field to value.  Document use of the bits.
4902         * pthread_condattr_getpshared.c: Adjust for struct pthread_condattr
4903         change.
4904         * pthread_condattr_setpshared.c: Likewise.
4905         * pthread_cond_init.c (__pthread_cond_init): Initialized __clock field.
4906         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add cond_clock symbol.
4907         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
4908         Add __clock field.
4909         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4910         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4911         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4912         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
4913         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
4914         Implement clock selection.
4915         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
4916         * pthread-errnos.sym: Add ENOSYS.
4917         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
4918         _POSIX_CLOCK_SELECTION.
4919         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
4920
4921         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Remove
4922         invalid .size directive.
4923
4924 2003-03-17  Roland McGrath  <roland@redhat.com>
4925
4926         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
4927         Formatting tweaks.
4928
4929 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
4930
4931         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Use __builtin_expect.
4932         Use __lll_add instead of spelling it out.  Use protected symbol names.
4933         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Use __builtin_expect.
4934         Use __lll_add.
4935         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_compare_and_swap):
4936         Renamed from lll_compare_and_swap.  Use new name where necessary.
4937         (__lll_add): Defined.
4938         (__lll_dec_if_positive): Defined.
4939         (__lll_test_and_set): Defined.
4940         * sysdeps/ia64/pthread_spin_init.c: Removed.
4941         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Removed.
4942         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Removed.
4943         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Removed.
4944         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Removed.
4945         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: Removed.
4946         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: Removed.
4947         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Removed.
4948         * sysdeps/ia64/bits/atomic.h: Add __builtin_expect where appropriate.
4949         * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
4950         __sync_lock_release_si.
4951         Patch by Jakub Jelinek.
4952
4953         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
4954         Fix timeout handling.
4955         (__lll_timedwait_tid): Likewise.
4956         (lll_unlock_wake_cb): Wake up other waiters if necessary.
4957         Patch by Jakub Jelinek.
4958
4959         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Pretty printing.
4960
4961 2003-03-17  Roland McGrath  <roland@redhat.com>
4962
4963         PowerPC port contributed by Paul Mackerras <paulus@samba.org>.
4964         * sysdeps/pthread/pthread_spin_init.c: New file.
4965         * sysdeps/pthread/pthread_spin_unlock.c: New file.
4966         * sysdeps/powerpc/Makefile: New file.
4967         * sysdeps/powerpc/pthread_spin_lock.c: New file.
4968         * sysdeps/powerpc/pthread_spin_trylock.c: New file.
4969         * sysdeps/powerpc/pthreaddef.h: New file.
4970         * sysdeps/powerpc/tcb-offsets.sym: New file.
4971         * sysdeps/powerpc/td_ta_map_lwp2thr.c: New file.
4972         * sysdeps/powerpc/tls.h: New file.
4973         * sysdeps/powerpc/bits/atomic.h: New file.
4974         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: New file.
4975         * sysdeps/unix/sysv/linux/libc-lowlevellock.c: New file.
4976         * sysdeps/unix/sysv/linux/lowlevellock.c: New file.
4977
4978         * sysdeps/unix/sysv/linux/lowlevelmutex.c: New file.
4979         * sysdeps/unix/sysv/linux/sem_post.c: New file.
4980         * sysdeps/unix/sysv/linux/sem_timedwait.c: New file.
4981         * sysdeps/unix/sysv/linux/sem_trywait.c: New file.
4982         * sysdeps/unix/sysv/linux/sem_wait.c: New file.
4983         * sysdeps/unix/sysv/linux/powerpc/Makefile: New file.
4984         * sysdeps/unix/sysv/linux/powerpc/createthread.c: New file.
4985         * sysdeps/unix/sysv/linux/powerpc/fork.c: New file.
4986         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: New file.
4987         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: New file.
4988         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: New file.
4989         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: New file.
4990         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: New file.
4991         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: New file.
4992         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: New file.
4993
4994         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Use __gettimeofday,
4995         not gettimeofday.
4996         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Likewise.
4997         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
4998         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Likewise.
4999         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Likewise.
5000         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
5001
5002 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
5003
5004         * sysdeps/pthread/pthread_cond_wait.c: Correct exit criteria.
5005         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
5006         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5007         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
5008         Patch by Ewald Snel <ewald@rambo.its.tudelft.nl>.
5009
5010 2003-03-16  Roland McGrath  <roland@redhat.com>
5011
5012         * tst-fork4.c: Include <string.h>.
5013         * tst-signal2.c: Likewise.
5014         * tst-mutex5.c (do_test): exit -> return.
5015         * tst-mutex2.c: Include <stdlib.h>.
5016
5017 2003-03-16  Ulrich Drepper  <drepper@redhat.com>
5018
5019         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
5020         (__lll_mutex_timedlock_wait): Correct expected value after
5021         spurious wakeup.  Otherwise we would never wait again.
5022
5023         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Work around red
5024         zone versus inline asm stupidity.  Use correct instructions.
5025
5026         * tst-rwlock6.c: Add some more status output.
5027
5028 2003-03-15  Roland McGrath  <roland@redhat.com>
5029
5030         * sysdeps/pthread/configure.in: New file.
5031         * sysdeps/pthread/configure: New file (generated).
5032
5033 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
5034
5035         * allocatestack.c (allocate_stack): Store the exact stack size of
5036         user allocated stacks.
5037
5038 2003-03-15  Jakub Jelinek  <jakub@redhat.com>
5039
5040         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
5041         (SINGLE_THREAD): Use `header' prefix instead of `header.data'.
5042         * sysdeps/sh/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
5043         * sysdeps/sh/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define.
5044         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SINGLE_THREAD_P):
5045         Use `header.' prefix.
5046         * sysdeps/ia64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
5047
5048 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
5049
5050         * sysdeps/x86_64/pthreaddef.h (CURRENT_STACK_FRAME): Don't use
5051         __builtin_frame_address, use stack pointer.
5052
5053         * sysdeps/unix/sysv/linux/jmp-unwind.c: Use CURRENT_STACK_FRAME
5054         instead of __builtin_frame_pointer.
5055
5056 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
5057
5058         * tst-basic1.c (do_test): Add cast to avoid warning.
5059         * tst-basic2.c (do_test): Likewise.
5060
5061         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Use correct
5062         amount of stack correction.
5063
5064         * tst-fork4.c: Use test-skeleton.c.
5065
5066 2003-03-14  Roland McGrath  <roland@redhat.com>
5067
5068         * init.c: Fix typo "#eli" for "#else".
5069
5070 2003-03-14  Steven Munroe  <sjmunroe@us.ibm.com>
5071
5072         * allocatestack.c (__stack_user): Use hidden_data_def.
5073         * pthread_create.c (__pthread_keys): Likewise.
5074
5075         * init.c [__powerpc__] (__NR_set_tid_address): Define it.
5076
5077 2003-03-14  Roland McGrath  <roland@redhat.com>
5078
5079         * tst-fork4.c: New file.
5080         * Makefile (tests): Add it.
5081
5082         * descr.h (struct pthread): Move the union out of [!TLS_DTV_AT_TP], so
5083         we always define the padding space.
5084         [!TLS_DTV_AT_TP]: Give tcbhead_t field a name, `header', since GCC
5085         stopped supporting its own extensions fully.
5086         [TLS_MULTIPLE_THREADS_IN_TCB]: Put `multiple_threads' inside a wrapper
5087         struct also called `header', so `header.multiple_threads' is the field
5088         name to use on all machines.
5089         * allocatestack.c (allocate_stack): Use `header.' prefix.
5090         * sysdeps/pthread/createthread.c (create_thread): Likewise.
5091         * pthread_create.c (__pthread_create_2_1): Likewise.
5092         * sysdeps/i386/tls.h (INSTALL_NEW_DTV, THREAD_DTV): Likewise.
5093         (THREAD_SELF): Likewise.
5094         * sysdeps/x86_64/tls.h: Likewise.
5095         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
5096         (SINGLE_THREAD_P): Likewise.
5097         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
5098         (SINGLE_THREAD_P): Likewise.
5099         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
5100         (SINGLE_THREAD_P): Likewise.
5101
5102         * sysdeps/s390/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Use REGS[18]
5103         value directly.
5104
5105 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
5106
5107         * pthread_create.c (start_thread): Use CALL_THREAD_FCT if defined.
5108         * sysdeps/i386/tls.h: Define CALL_THREAD_FCT.
5109
5110         * pthread_create.c (start_thread): setjmp is expected to return 0.
5111
5112         * sysdeps/x86_64/tls.h (THREAD_GETMEM): Mark asms volatile.
5113         (THREAD_GETMEM_NC): Likewise.
5114
5115 2003-03-13  Ulrich Drepper  <drepper@redhat.com>
5116
5117         * allocatestack.c (allocate_stack): If MULTI_PAGE_ALIASING is defined
5118         and the size of the stack which must be allocated is a multiple,
5119         allocate one more page.
5120         * sysdeps/i386/i686/Makefile: Don't define COLORING_INCREMENT, but
5121         MULTI_PAGE_ALIASING.
5122
5123 2003-03-13  Roland McGrath  <roland@redhat.com>
5124
5125         * pthread_create.c (start_thread): Set EXITING_BIT after the
5126         event-reporting (and destructors), not before.
5127
5128 2003-03-13  Jakub Jelinek  <jakub@redhat.com>
5129
5130         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_timed_wait,
5131         lll_futex_wake): Declare register variables as long int instead of
5132         unsigned long int.  Patch by Ian Wienand <ianw@gelato.unsw.edu.au>.
5133         Make syscall arguments clobbered by the syscall.
5134         (lll_futex_wait): Define using lll_futex_timed_wait.
5135
5136         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Cast regs[13]
5137         to void *.
5138
5139         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Only declare and set
5140         PPID if [! NDEBUG].
5141
5142         * allocatestack.c (nptl_ncreated): Only declare if
5143         COLORING_INCREMENT != 0.
5144
5145         * pthreadP.h (__pthread_enable_asynccancel_2): New prototype.
5146         (__libc_enable_asynccancel_2): Remove prototype.
5147
5148         * sysdeps/unix/sysv/linux/ia64/fork.c (ARCH_FORK): Swap ptid and
5149         ctid to match kernel.
5150
5151 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
5152
5153         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add
5154         libc_multiple_threads.
5155         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Move definition of
5156         __libc_multiple_threads to...
5157         * sysdeps/unix/sysv/linux/libc_multiple_threads.c: ...here.  New file.
5158
5159         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Remove unnecessary
5160         versioning.
5161         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
5162         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
5163
5164         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S
5165         (__pthread_once_internal): Define.
5166
5167         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Use shlib-compat.h
5168         macros instead of .symver directly.
5169         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
5170         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
5171
5172         * sysdeps/x86_64/tls.h [__ASSEMBLER__]: Include tcb-offsets.h.
5173         * sysdeps/x86_64/tcb-offsets.sym: New file.
5174         * sysdeps/x86_64/Makefile: New file.
5175
5176         * sysdeps/i386/tcb-offsets.sym: Add SELF.
5177         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use SELF
5178         to access own pthread_t in TCB.
5179         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5180         Likewise.
5181         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5182         Likewise.
5183         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5184
5185 2003-03-12  Roland McGrath  <roland@redhat.com>
5186
5187         * pthread-errnos.sym: New file.
5188         * Makefile (gen-as-const-headers): New variable, list that file.
5189         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include generated
5190         header <pthread-errnos.h> instead of defining errno values here.
5191         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
5192         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
5193         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
5194         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5195         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5196         Likewise.
5197         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5198         Likewise.
5199         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
5200         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5201         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
5202         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
5203         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
5204         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
5205         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
5206         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
5207         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
5208         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
5209         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
5210         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
5211         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
5212         * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
5213         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
5214         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
5215         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
5216         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
5217         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5218         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
5219         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
5220         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
5221         * sysdeps/i386/i486/pthread_spin_trylock.S: Likewise.
5222         * sysdeps/x86_64/pthread_spin_trylock.S: Likewise.
5223         * sysdeps/sh/pthread_spin_trylock.S: Likewise.
5224         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
5225         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
5226
5227         * sysdeps/unix/sysv/linux/fork.c: Add an assert to check that
5228         CLONE_CHILD_SETTID worked.
5229
5230 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
5231
5232         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: New
5233         file.
5234         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: New
5235         file.
5236
5237         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
5238         (pthread_cond_t): Add padding.
5239
5240         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: New file.
5241         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: New file.
5242         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: New file.
5243
5244         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
5245         (__pthread_rwlock_timedwrlock): Add missing opcode suffix.
5246         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
5247         (__pthread_rwlock_timedrdlock): Likewise.
5248         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
5249         (__pthread_rwlock_wrlock): Likewise.
5250         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
5251         (__pthread_rwlock_rdlock): Likewise.
5252
5253         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: New file.
5254
5255         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Return
5256         result of lock re-get if it fails.
5257
5258 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
5259
5260         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Fix asm syntax.
5261         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
5262         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
5263         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
5264         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
5265         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
5266         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
5267         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
5268         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
5269         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
5270
5271         * sysdeps/x86_64/tls.h (THREAD_SELF, THREAD_GETMEM, THREAD_GETMEM_NC,
5272         THREAD_SETMEM, THREAD_SETMEM_NC): Correct asm syntax.
5273
5274         * allocatestack.c [! TLS_MULTIPLE_THREADS_IN_TCB] (allocate_stack):
5275         Initialize *__libc_multiple_threads_ptr not __libc_multiple_threads.
5276         * sysdeps/pthread/createthread.c [! TLS_MULTIPLE_THREADS_IN_TCB]
5277         (create_thread): Likewise.
5278         Define __pthread_multiple_threads and __libc_multiple_threads_ptr.
5279         * init.c (__pthread_initialize_minimal_internal): Initialize
5280         __libc_multiple_threads_ptr if necessary.
5281         * pthreadP.h: Adjust prototype for __libc_pthread_init.  Declare
5282         __pthread_multiple_threads and __libc_multiple_threads_ptr.
5283         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Define
5284         __libc_multiple_threads.
5285         (__libc_pthread_init): Return pointer to __libc_pthread_init if
5286         necessary.
5287
5288         * sysdeps/i386/tls.h (THREAD_SETMEM): Fix one-byte variant.
5289         (THREAD_SETMEM_NC): Likewise.
5290
5291         * sysdeps/x86_64/pthread_spin_trylock.c: Removed.
5292         * sysdeps/x86_64/pthread_spin_trylock.S: New file.
5293         * sysdeps/x86_64/pthread_spin_unlock.c: Removed.
5294         * sysdeps/x86_64/pthread_spin_unlock.S: New file.
5295
5296         * sysdeps/i386/i486/pthread_spin_trylock.S (pthread_spin_trylock):
5297         Eliminate one entire instruction.
5298
5299         * cancellation.c (__pthread_enable_asynccancel_2): New function.
5300         * pthreadP.h: Declare __pthread_enable_asynccancel_2.
5301         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5302         (__pthread_cond_timedwait): Use __pthread_enable_asynccancel_2
5303         instead of __pthread_enable_asynccancel.
5304         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5305         (__pthread_cond_wait): Likewise.
5306         * sysdeps/pthread/pthread_cond_timedwait.c
5307         (__pthread_cond_timedwait): Likewise.
5308         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
5309
5310         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5311         (__condvar_cleanup): Wake up all waiters in case we got signaled
5312         after being woken up but before disabling asynchronous
5313         cancellation.
5314         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
5315         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
5316         (__condvar_cleanup): Likewise.
5317
5318         * init.c (__NR_set_tid_address): If already defined, don't redefine.
5319         Make it an error if architecture has no #if case.  Add x86-64.
5320
5321         * sysdeps/unix/sysv/linux/x86_64/Makefile: Add flags for
5322         pt-initfini.s generation.
5323
5324         * sysdeps/x86_64/tls.h: Include <asm/prctl.h>.
5325         (TLS_INIT_TP): Fix typo.
5326
5327 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
5328
5329         * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Swap 2nd and
5330         3rd argument of __arch_compare_and_exchange_{32,64}_val_acq.
5331
5332         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Include semaphore.h.
5333         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
5334         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Likewise.
5335         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Likewise.
5336         * sysdeps/unix/sysv/linux/s390/sem_post.c: Likewise.
5337         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
5338         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
5339         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
5340
5341 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
5342
5343         * sysdeps/pthread/pthread_cond_timedwait.c
5344         (__pthread_cond_timedwait): Return the result of the final
5345         locking.  If it succeeds, the regular function return value.
5346
5347         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait):
5348         Return result of the final locking.
5349         * version.c (__nptl_main): Work around problems with the strange
5350         INTERNAL_SYSCALL macro on ppc32.
5351         * init.c (__pthread_initialize_minimal_internal): Unblock
5352         SIGCANCEL in case the parent blocked it.
5353         Reported by Paul Mackerras <paulus@samba.org>.
5354
5355         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: New file.
5356         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: New file.
5357         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: New file.
5358
5359 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
5360
5361         * sysdeps/pthread/pthread_cond_timedwait.c
5362         (__pthread_cond_timedwait): Unlock and fail if
5363         __pthread_mutex_unlock_internal failed.
5364
5365         * sysdeps/pthread/createthread.c (ARCH_CLONE): Define if not defined.
5366         (create_thread): Only assert PD->tcb != NULL under [TLS_TCB_AT_TP].
5367         Use ARCH_CLONE.
5368         * allocatestack.c (ALLOCATE_STACK_PARMS): New macro.
5369         [NEED_SEPARATE_REGISTER_STACK] (STACK_VARIABLES,
5370         STACK_VARIABLES_ARGS, STACK_VARIABLES_PARMS, ALLOCATE_STACK_PARMS,
5371         ALLOCATE_STACK): New macros.
5372         (TLS_TPADJ): New macro.
5373         (get_cached_stack, queue_stack, __deallocate_stack): Use TLS_TPADJ.
5374         (allocate_stack): Handle TLS_DTV_AT_TP and
5375         NEED_SEPARATE_REGISTER_STACK.  Use TLS_TPADJ.
5376         * pthread_create.c (__pthread_create_2_1) [! TLS_TCB_AT_TP]:
5377         Don't set PD->self.
5378         * init.c [__ia64__] (__NR_set_tid_address): Define.
5379
5380         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: New file.
5381         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: New file.
5382         * sysdeps/unix/sysv/linux/ia64/fork.c: New file.
5383         * sysdeps/unix/sysv/linux/ia64/createthread.c: New file.
5384         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: New file.
5385         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: New file.
5386         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: New file.
5387         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: New file.
5388         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: New file.
5389         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: New file.
5390         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: New file.
5391         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: New file.
5392         * sysdeps/unix/sysv/linux/ia64/sem_post.c: New file.
5393         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: New file.
5394         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: New file.
5395         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: New file.
5396         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: New file.
5397         * sysdeps/ia64/bits/atomic.h: New file.
5398         * sysdeps/ia64/Makefile: New file.
5399         * sysdeps/ia64/pthread_spin_init.c: New file.
5400         * sysdeps/ia64/pthread_spin_lock.c: New file.
5401         * sysdeps/ia64/pthread_spin_trylock.c: New file.
5402         * sysdeps/ia64/pthread_spin_unlock.c: New file.
5403         * sysdeps/ia64/pthreaddef.h: New file.
5404         * sysdeps/ia64/tcb-offsets.sym: New file.
5405         * sysdeps/ia64/td_ta_map_lwp2thr.c: New file.
5406         * sysdeps/ia64/tls.h: New file.
5407
5408         * sysdeps/s390/pthreaddef.h (__exit_thread_inline): Pass 1 argument
5409         to syscall instead of no arguments.
5410
5411 2003-03-10  Ulrich Drepper  <drepper@redhat.com>
5412
5413         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: New file.
5414         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: New file.
5415         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: New file.
5416         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: New file.
5417
5418         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Fix error value in
5419         unused code.
5420
5421         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: New file
5422
5423         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
5424         lowlevelbarrier.sym.
5425         * sysdeps/unix/sysv/linux/lowlevelbarrier.sym: New file.
5426         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S:
5427         Include lowlevelbarrier.h and don't define offsets locally.
5428         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Likewise.
5429
5430         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
5431         (__lll_mutex_lock_wait): Reverse order of first two parameters.
5432         (__lll_mutex_timedlock_wait): Likewise.
5433         (lll_mutex_lock): Adjust asm for that.
5434         (lll_mutex_timedlock): Likewise.  Mark cx, cc, r10 as clobbered.
5435         (lll_lock): Adjust asm for operand order change.
5436         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: New file.
5437         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: New file.
5438
5439         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_lock_wait):
5440         Reverse order of parameters.
5441         (__lll_timedwait_tid): Remove regparms attribute.
5442         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: New file.
5443         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: New file.
5444
5445         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5446         (__lll_timedwait_tid): Remove one unnecessary instruction.
5447
5448         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define
5449         __lll_mutex_timedlock_wait only for NOT_IN_libc.
5450         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include
5451         lowlevelmutex.S.
5452
5453         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
5454         lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only
5455         for NOT_IN_libc.
5456         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include
5457         lowlevellock.S.
5458
5459         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Don't define
5460         LOCK is already defined.  Don't define __lll_mutex_timedlock_wait
5461         for libc.so.
5462         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Only
5463         define LOCK here (if UP is not defined).  The actual code is in
5464         lowlevelmutex.S.
5465
5466         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Don't define
5467         LOCK is already defined.  Don't define lll_unlock_wake_cb and
5468         __lll_timedwait_tid for libc.so.
5469         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Only
5470         define LOCK here (if UP is not defined).  The actual code is in
5471         lowlevellock.S.
5472
5473         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Not needed anymore.
5474         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: Likewise.
5475         * sysdeps/unix/sysv/linux/s390/sem_post.c: Include lowlevellock.h
5476         instead of lowlevelsem.h.
5477         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
5478         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
5479         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
5480
5481         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
5482         lowlevelrwlock.sym.
5483         * sysdeps/unix/sysv/linux/lowlevelrwlock.sym: New file.
5484         * sysdeps/unix/sysv/linux/i386/lowlevelrwlock.h: Removed.
5485         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: Removed.
5486
5487         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_trylock): Fix
5488         register loading.
5489         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_trylock): Undo
5490         last changed.  D'oh.
5491
5492         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: New file.
5493
5494         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove declaration
5495         of __libc_locking_needed.
5496         (lll_trylock): Initialize %eax to zero.
5497
5498         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Update
5499         pthread_cond_t definition.
5500
5501 2003-03-10  Roland McGrath  <roland@redhat.com>
5502
5503         * sysdeps/unix/sysv/linux/lowlevelcond.sym: New file.
5504         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add it.
5505         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: File removed.
5506         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: Likewise.
5507         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: Likewise.
5508
5509         * allocatestack.c (allocate_stack) [!TLS_MULTIPLE_THREADS_IN_TCB]:
5510         Instead of setting PD->multiple_threads, set globals
5511         __pthread_multiple_threads and __libc_multiple_threads.
5512         * sysdeps/pthread/createthread.c (create_thread): Likewise.
5513         * sysdeps/i386/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it.
5514         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Likewise.
5515
5516         * descr.h (struct pthread): Conditionalize first member on
5517         [!TLS_DTV_AT_TP].  Replace the `header' member with an anonymous union
5518         containing an anonymous tcbhead_t.  Move `list' member out.
5519         [TLS_MULTIPLE_THREADS_IN_TCB]: Define a `multiple_threads' member.
5520         * allocatestack.c: Remove use of `header.data.' prefix.
5521         * pthread_create.c: Likewise.
5522         * init.c (__pthread_initialize_minimal_internal): Likewise.
5523         * sysdeps/pthread/createthread.c (create_thread): Likewise.
5524         * sysdeps/i386/tls.h (INSTALL_DTV): Add parens.
5525         (THREAD_SELF, THREAD_DTV, INSTALL_NEW_DTV): No `header.data.' prefix.
5526         * sysdeps/x86_64/tls.h: Likewise.
5527         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
5528         (SINGLE_THREAD_P): Likewise.
5529         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
5530         (SINGLE_THREAD_P): Likewise.
5531         * sysdeps/i386/tls.h (tcbhead_t): Remove `list' member.
5532         * sysdeps/s390/tls.h (tcbhead_t): Likewise.
5533
5534 2003-03-09  Ulrich Drepper  <drepper@redhat.com>
5535
5536         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: New file.
5537
5538         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: New file.
5539         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
5540
5541         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix many
5542         leftovers from the ia32 code.
5543
5544         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Remove unneccessary
5545         memory load.
5546         (clear_once_control): Don't load %esi.
5547
5548         * sysdeps/x86_64/tls.h: Remove all traces of segment descriptor
5549         handling.
5550
5551         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
5552
5553         * sysdeps/unix/sysv/linux/s390/createthread.c: Moved to...
5554         * sysdeps/unix/sysv/linux/createthread.c: ...here.
5555
5556         * Makefile (tests): Add tst-cond10.
5557         * tst-cond10.c: New file.
5558
5559 2003-03-08  Ulrich Drepper  <drepper@redhat.com>
5560
5561         * tst-tls2.c (do_test): Add TEMP_FAILURE_RETRY around sem_wait call.
5562         * tst-signal3.c (do_test): Likewise.
5563         * tst-sem5.c (do_test): Likewise.
5564         * tst-kill6.c (do_test): Likewise.
5565         * tst-tls3.c (do_test): Likewise.  Include <errno.h>.
5566
5567         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use add/sub instead
5568         of inc/dec.
5569         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
5570         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise
5571         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
5572         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
5573         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5574         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
5575         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5576         Likewise.
5577         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5578         Likewise.
5579         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
5580         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
5581         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5582         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
5583         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
5584         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
5585         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
5586         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
5587
5588         * allocatestack.c (allocate_stack): If mprotect() fails free the
5589         TLS memory.
5590
5591 2003-03-07  Ulrich Drepper  <drepper@redhat.com>
5592
5593         * sysdeps/i386/i486/bits/atomic.h: Fix a few unused definitions.
5594
5595         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove all trace of
5596         lll_wake_tid.  This was used only to work around kernel limits in
5597         the early days.
5598         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
5599         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Likewise.
5600         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
5601         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
5602
5603         * init.c (__static_tls_align_m1): Renamed from __static_tls_align.
5604         (__pthread_initialize_minimal_internal): Change initialization of
5605         __static_tls_align_m1 appropriately.
5606         * pthreadP.h (__static_tls_align_m1): Renamed from
5607         __static_tls_align.
5608         * allocatestack.c (allocate_stack): Use __static_tls_align_m1
5609         instead of __static_tls_align-1.
5610
5611 2003-03-04  Ulrich Drepper  <drepper@redhat.com>
5612
5613         * sysdeps/unix/sysv/linux/x86_64/Makefile: New file.
5614
5615         * pthread_create.c: Define __pthread_keys using nocommon
5616         attribute, not by placing it explicitly in bss.
5617         Remove DEFINE_DEALLOC definition.  Not needed anymore.
5618
5619         * allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
5620         Use it in mmap call to allocate stacks.
5621
5622         * sysdeps/pthread/createthread.c (create_thread): Fix comment.
5623
5624         * pthread_create.c (start_thread): Use THREAD_SETMEM to store
5625         result of the thread function.
5626
5627 2003-03-03  Ulrich Drepper  <drepper@redhat.com>
5628
5629         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: Removed.  The generic
5630         version is just fine.
5631
5632         * sysdeps/unix/sysv/linux/libc_pthread_init.c
5633         (__pthread_child_handler): Renamed from pthread_child_handler,
5634         exported, and marked hidden.  Change all users.
5635         * sysdeps/unix/sysv/linux/register-atfork.c (free_mem): Do not
5636         free __pthread_child_handler from child list.
5637
5638 2003-03-03  Martin Schwidefsky  <schwidefsky@de.ibm.com>
5639
5640         * atomic.h (atomic_exchange_and_add): Return newval, not oldval.
5641
5642         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5643         Fix handling of cancellation and failing pthread_mutex_unlock call.
5644         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
5645         (__pthread_cond_wait): Likewise.
5646
5647         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
5648         (pthread_rwlock_timedrdlock): Fix clobber of result variable by
5649         lll_futex_timed_wait call.
5650         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
5651         (pthread_rwlock_timedwrlock): Likewise.
5652
5653         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
5654         Don't define lll_unlock_wake_cb and ___lll_timedwait_tid in libc.so.
5655         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Remove XXX comments.
5656
5657         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Fix
5658         check of lll_futex_wake return value.
5659
5660 2003-03-03  Roland McGrath  <roland@redhat.com>
5661
5662         * forward.c: Fix typo in __pthread_attr_init_2_0 compat_symbol decl.
5663
5664         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
5665         Argument to ptr___pthread_cleanup_upto is __jmp_buf, not jmp_buf.
5666         * sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
5667
5668 2003-03-02  Ulrich Drepper  <drepper@redhat.com>
5669
5670         * sysdeps/pthread/timer_create.c (timer_create): Return correct
5671         error for CPU clocks.
5672
5673         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
5674         _POSIX_MONOTONIC_CLOCK.
5675         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
5676
5677         * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset
5678         recent kernels.
5679
5680 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
5681
5682         * descr.h (struct pthread): Move cleanup field to the front.
5683
5684 2003-03-01  Roland McGrath  <roland@redhat.com>
5685
5686         * sem_open.c (sem_open): Braino fix.
5687
5688 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
5689
5690         * sysdeps/i386/tcb-offsets.sym: Add CLEANUP and CLEANUP_PREV.
5691         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Inline
5692         __pthread_cleanup_pop functionality.
5693         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5694
5695         * descr.h (struct pthread): Move tid field to the front now that
5696         it is often used.
5697
5698         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S
5699         (__lll_mutex_timedlock_wait): Remove.
5700         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
5701         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
5702         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
5703         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5704         (lll_unlock_wake_cb): Don't save and restore %esi.
5705         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
5706         %esi.
5707         (__lll_timedwait_tid): Add alignment.
5708         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
5709         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
5710         %esi.
5711         (__lll_timedwait_tid): Removed.
5712         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
5713         (__pthread_cond_broadcast): Don't save, load, and restore %esi.
5714         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
5715         (pthread_barrier_wait): Don't save, load, and restore %esi for
5716         last thread.
5717         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
5718         (__pthread_cond_signal): Don't save, load, and restore %esi.
5719         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
5720         (__pthread_rwlock_unlock): Don't save, load, and restore %esi.
5721         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
5722         Don't save, load, and restore %esi.
5723
5724 2003-02-27  Ulrich Drepper  <drepper@redhat.com>
5725
5726         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
5727         Release lock before waking up the waiters.
5728
5729         * tst-exit1.c (do_test): Don't start more than one thread in parallel.
5730
5731         * tst-rwlock9.c (writer_thread): Correct adding TIMEOUT.
5732         (reader_thread): Likewise.
5733
5734         * sysdeps/pthread/pthread_rwlock_unlock.c
5735         (__pthread_rwlock_unlock): Release internal lock early.  Don't try
5736         to wake up readers if there are none.
5737
5738         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
5739         Release internal lock before wake threads.
5740
5741 2003-02-26  Ulrich Drepper  <drepper@redhat.com>
5742
5743         * Makefile (tests): Add tst-rwlock10 and tst-rwlock11.
5744         * tst-rwlock8.c: Initialize lock with INIT.  Allow INIT to be
5745         predefined.
5746         * tst-rwlock9.c: Likewise.
5747         * tst-rwlock10.c: New file.
5748         * tst-rwlock11.c: New file.
5749
5750         * Makefile (tests): Add tst-dlsym1.
5751         * tst-dlsym1.c: New file.
5752
5753         * init.c (__pthread_initialize_minimal_internal): Set
5754         GL(dl_error_catch_tsd) to __libc_dl_error_tsd.
5755         * Versions (libc:GLIBC_PRIVATE): Export __libc_dl_error_tsd.
5756
5757 2003-02-24  Ulrich Drepper  <drepper@redhat.com>
5758
5759         * sem_open.c (sem_open): Fix handling of O_CREAT without O_EXCL.
5760
5761         * tst-cond2.c: Fix sychronization with child.
5762
5763         * tst-rwlock8.c (reader_thread): Remove unused variable.
5764
5765         * Makefile: Add rules to build and run tst-tls3.
5766         * tst-tls3.c: New file.
5767         * tst-tls3mod.c: New file.
5768
5769         * Makefile (tests): Add tst-rwlock8 and tst-rwlock9.
5770         * tst-rwlock8.c: New file.
5771         * tst-rwlock9.c: New file.
5772         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Fix
5773         complete broken rwlock implementation.
5774         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5775         Likewise.
5776         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5777         Likewise.
5778         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
5779         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5780         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
5781         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
5782         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
5783         * sysdeps/pthread/pthread_rwlock_unlock.c: Likewise.
5784         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
5785
5786 2003-02-23  Roland McGrath  <roland@redhat.com>
5787
5788         * Makefile (nptl-version): Change regexp so case sensitivity is ok.
5789
5790 2003-02-23  Ulrich Drepper  <drepper@redhat.com>
5791
5792         * Makefile (tests): Add tst-context1.
5793         * tst-context1.c: New file.
5794
5795         * Makefile (tests): Add tst-tls1 and tst-tls2.
5796         * tst-tls1.c: New file.
5797         * tst-tls2.c: New file.
5798
5799         * libc-cancellation.c (__libc_enable_asynccancel): Correct test
5800         for failed cmpxchg.
5801
5802         * pthread_create.c (start_thread): Set EXITING_BIT early.
5803
5804         * sysdeps/i386/tls.h (THREAD_GETMEM): Mark asm as volatile.
5805         (THREAD_GETMEM_NC): Likewise.
5806
5807 2003-02-22  Ulrich Drepper  <drepper@redhat.com>
5808
5809         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave
5810         off 3 more bytes by using offset-less instructions when possible.
5811
5812         * Makefile: Add dependency for $(objpfx)version.d.
5813
5814         * eintr.c (eintr_source): Add unnecessary return but the compiler
5815         insists.
5816
5817         * tst-kill3.c: Include <unistd.h>.
5818
5819 2003-02-21  Roland McGrath  <roland@redhat.com>
5820
5821         * pthread_create.c (start_thread): Call __libc_thread_freeres.
5822
5823 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
5824
5825         * Makefile (tests): Add tst-eintr1.
5826         (distribute): Add eintr.c.
5827         * tst-eintr1.c: New file.
5828         * eintr.c: New file.
5829
5830         * pthread_cancel.c (pthread_cancel): Use tkill directly.
5831
5832         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill):
5833         Disallow sending SIGCANCEL.
5834
5835         * Makefile (tests): Remove tst-basic7.  Add tst-kill1, tst-kill2,
5836         tst-kill3, tst-kill4, tst-kill5, tst-kill6.
5837         * tst-kill1.c: New file.
5838         * tst-kill2.c: New file.
5839         * tst-kill3.c: New file.
5840         * tst-kill5.c: New file.
5841         * tst-kill6.c: New file.
5842         * tst-basic7.c: Renamed to...
5843         * tst-kill4.c: ...this.
5844
5845 2003-02-21  Roland McGrath  <roland@redhat.com>
5846
5847         * Makefile (install-lib-ldscripts): New variable.
5848
5849 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
5850
5851         * pthreadP.h: Define INVALID_TD_P and INVALID_NOT_TERMINATED_TD_P.
5852         * pthread_cancel.c: Use INVALID_TD_P.
5853         * pthread_detach.c: Likewise.
5854         * pthread_getschedparam.c: Likewise.
5855         * pthread_setschedparam.c: Likewise.
5856         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
5857         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
5858         * pthread_join.c: Use INVALID_NOT_TERMINATED_TD_P.
5859         * pthread_timedjoin.c: Likewise.
5860
5861         * tst-basic7.c: Include <signal.h>.
5862
5863         * pthread_join.c (pthread_join): Limited checking for invalid
5864         descriptors.
5865         * pthread_timedjoin.c (pthread_timedjoin_np): Likewise.
5866
5867 2003-02-20  Ulrich Drepper  <drepper@redhat.com>
5868
5869         * pthread_create.c (deallocate_tsd): Reset found_nonzero at the
5870         beginning of the loop.  Clear the entire first block of TSD.
5871         * Makefile (tests): Add tst-key4.
5872         * tst-key4.c: New file.
5873
5874 2003-02-18  Ulrich Drepper  <drepper@redhat.com>
5875
5876         * Makefile (tests): Add tst-basic7.
5877         * tst-basic7.c: New file.
5878
5879         * pthread_create.c (deallocate_tsd): Mark as internal_function.
5880         Add some more __builtin_expect.
5881
5882         * pthreadP.h: Define dummy version of DEBUGGING_P.
5883
5884 2003-02-17  Ulrich Drepper  <drepper@redhat.com>
5885
5886         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remnove
5887         _POSIX_THREAD_PRIORITY_SCHEDULING.
5888         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remove
5889         _XOPEN_REALTIME_THREADS.
5890         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
5891
5892         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): The
5893         kernel returns EINVAL for PID <= 0, work around it.
5894
5895         * Makefile (tests): Add tst-signal5.
5896         * tst-signal5.c: New file.
5897
5898         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define TTY_NAME_MAX
5899         and LOGIN_NAME_MAX.
5900
5901         * tst-cancel1.c (tf): Block all signals.
5902
5903         * Makefile (tests): Add tst-basic6.
5904         * tst-basic6.c: New file.
5905
5906         * tst-basic1.c: Add test for process ID.
5907
5908         * Makefile (tests): Add tst-cancel10.
5909         * tst-cancel10.c: New file.
5910
5911         * Makefile (tests): Add tst-signal4.
5912         * tst-signal4.c: New file.
5913
5914         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use
5915         __sigismember instead of sigismember.  Add __builtin_expect.
5916
5917 2003-02-16  Ulrich Drepper  <drepper@redhat.com>
5918
5919         * tst-attr1.c (do_test): Add tests for pthread_setcanceltype,
5920         pthread_setcancelstate, and pthread_rwlock_setpshared.
5921
5922         * tst-cancel7.c (do_test): Make sure the pid file exists before
5923         canceling the thread.
5924
5925         * tst-rwlock6.c: More pthread_rwlock_timedwrlock and
5926         pthread_rwlock_timedrdlock tests.
5927         * tst-rwlock7.c: More pthread_rwlock_timedwrlock tests.
5928         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5929         Check for invalid tv_nsec field.
5930         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5931         Likewise.
5932
5933         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Protect
5934         recursive mutex of overflow.
5935
5936         * tst-attr1.c (do_test): Add test for pthread_mutexattr_setpshared.
5937
5938         * libc-cancellation.c (__libc_enable_asynccancel): Rewrite to avoid
5939         going into an endless loop.
5940         * Makefile (tests): Add tst-cancel9.
5941         * tst-cancel9.c: New file.
5942
5943         * pthread_cancel.c (pthread_cancel): Use the result of __pthread_kill.
5944
5945 2003-02-15  Ulrich Drepper  <drepper@redhat.com>
5946
5947         * tst-mutex5.c (do_test): Add more timedlock tests.
5948
5949         * tst-mutex2.c: Tests of trylock and unlock with ERROR mutexes.
5950         * tst-mutex3.c (do_test): Add tests for trylock with RECURSIVE mutexes.
5951
5952         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
5953         use INLINE_SYSCALL.  Error number is returned, not -1.
5954
5955         * pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
5956         and __deallocate_stack with internal_function.
5957         * pthread_create.c: Adjust definitions appropriately.
5958         * allocatestack.c: Likewise.
5959
5960         * pthread_join.c: Add one more __builtin_expect.
5961         * pthread_timedjoin.c: Likewise.
5962
5963         * pthread_getspecific.c (__pthread_getspecific): Clear data->data
5964         not data of sequence number does not match.
5965         Add one __builtin_expect.
5966
5967         * Makefile (tests): Add tst-clock1.
5968         * tst-clock1.c: New file.
5969
5970         * pthread_setconcurrency.c (pthread_setconcurrency): Fail for
5971         negative arguments.
5972         * Makefile (tests): Add tst-basic5.
5973         * tst-basic5.c: New file.
5974
5975 2003-02-14  Ulrich Drepper  <drepper@redhat.com>
5976
5977         * Makefile (tests): Add tst-basic4.
5978         * tst-basic4.c: New file.
5979
5980         * pthreadP.h: Add declaraction for __nptl_nthreads.
5981         * pthread_create.c: Define __nptl_nthreads
5982         (start_thread): Increment __nptl_nthreads at beginning.  Decrement
5983         after thread is done.  If then zero, call exit(0).
5984         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
5985         Add ptr_nthreads.  Define HAVE_PTR_NTHREADS.
5986         * init.c (pthread_functions): Initialize ptr_nthreads.
5987         * allocatestack.c (nptl_nthreads): Remove definition and all uses.
5988         (__reclaim_stacks): Decrement __nptl_nthreads.
5989         * sysdeps/pthread/Makefile [$(subdir)==csu] (CFLAGS-libc-start.c):
5990         Define.
5991         * Makefile (tests): Add tst-basic3.
5992         * tst-basic3.c: New file.
5993
5994         * descr.h: Define CANCELING_BIT and CANCELING_BITMASK.  Introduce
5995         after CANCELTYPE_BIT, move the other bits up.  Update CANCEL_RESTMASK.
5996         * init.c (sigcancel_handler): Also set CANCELING_BITMASK bit in newval.
5997         * pthread_cancel.c (pthread_cancel): Likewise.  Also set CANCELING_BIT
5998         if asynchronous canceling is enabled.
5999         * pthread_join.c (pthread_join): When recognizing circular joins,
6000         take into account the other thread might be already canceled.
6001         * Makefile (tests): Add tst-join5.
6002         * tst-join5.c: New file.
6003
6004         * Makefile (tests): Add tst-join4.
6005         * tst-join4.c: New file.
6006
6007 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
6008
6009         * tst-cond4.c (main): Add test of pthread_attr_getpshared.
6010
6011 2003-02-13  Martin Schwidefsky  <schwidefsky@de.ibm.com>
6012
6013         * sysdeps/s390/tls.h (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM,
6014         THREAD_SETMEM_NC): Use passed descr instead of THREAD_SELF.
6015         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c (_longjmp_unwind): Avoid
6016         warning.
6017         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Include <sys/time.h>
6018         to avoid warning.
6019         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Return
6020         error if lll_futex_wake failed.
6021
6022 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
6023
6024         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Fix
6025         handling of cancellation and failung pthread_mutex_unlock call.
6026         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6027         * Makefile (tests): Add tst-cond8 and tst-cond9.
6028         * tst-cond8.c: New file.
6029         * tst-cond9.c: New file.
6030
6031         * tst-cond7.c (do_test): Unlock the mutex before canceling the thread.
6032
6033         * sysdeps/pthread/pthread.h: Add missing initializers.  Protect
6034         non-standard initializers with __USE_GNU.
6035
6036         * Makefile (tests): Add tst-cleanup3.
6037         * tst-cleanup3.c: New file.
6038
6039 2003-02-12  Ulrich Drepper  <drepper@redhat.com>
6040
6041         * Makefile (tests): Add tst-attr1 and tst-attr2.
6042         * tst-attr1.c: New file.
6043         * tst-attr2.c: New file.
6044
6045         * Makefile: Add rules to build and run tst-atfork2 test.
6046         * tst-atfork2.c: New file.
6047         * tst-atfork2mod.c: New file.
6048
6049         * sysdeps/unix/sysv/linux/unregister-atfork.c
6050         (__unregister_atfork): Free the memory allocated for the handlers
6051         after removing them from the lists.
6052
6053         * sysdeps/unix/sysv/linux/register-atfork.c: Define memeory
6054         cleanup function.
6055
6056         * tst-atfork1.c (do_test): Wait for the child we forked.
6057         Report error in child.
6058
6059         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Fix comment.
6060
6061         * sysdeps/pthread/Makefile: Define CFLAGS-confstr.c.
6062
6063 2003-02-10  Ulrich Drepper  <drepper@redhat.com>
6064
6065         * Makefile (tests): Add tst-cancel8.
6066         * tst-cancel8.c: New file.
6067
6068         * sysdeps/unix/sysv/linux/i386/pthread_once.S (clear_once_control): Fix
6069         clearing of control variable.
6070         * Makefile (tests): Add tst-once3 and tst-once4.
6071         * tst-once3.c: New file.
6072         * tst-once4.c: New file.
6073
6074 2003-02-08  kaz Kojima  <kkojima@rr.iij4u.or.jp>
6075
6076         * sysdeps/sh/Makefile: New file.
6077         * sysdeps/sh/bits/atomic.h: New file.
6078         * sysdeps/sh/pthread_spin_init.c: New file.
6079         * sysdeps/sh/pthread_spin_lock.c: New file.
6080         * sysdeps/sh/pthread_spin_trylock.S: New file.
6081         * sysdeps/sh/pthread_spin_unlock.S: New file.
6082         * sysdeps/sh/pthreaddef.h: New file.
6083         * sysdeps/sh/tcb-offsets.sym: New file.
6084         * sysdeps/sh/td_ta_map_lwp2thr.c: New file.
6085         * sysdeps/sh/tls.h: New file.
6086         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: New file.
6087         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: New file.
6088         * sysdeps/unix/sysv/linux/sh/createthread.c: New file.
6089         * sysdeps/unix/sysv/linux/sh/fork.c: New file.
6090         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: New file.
6091         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: New file.
6092         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h: New file.
6093         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: New file.
6094         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: New file.
6095         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: New file.
6096         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: New file.
6097         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: New file.
6098         * sysdeps/unix/sysv/linux/sh/pt-initfini.c: New file.
6099         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: New file.
6100         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: New file.
6101         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: New file.
6102         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: New file.
6103         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: New file.
6104         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: New file.
6105         * sysdeps/unix/sysv/linux/sh/pthread_once.S: New file.
6106         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: New file.
6107         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: New file.
6108         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: New file.
6109         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: New file.
6110         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: New file.
6111         * sysdeps/unix/sysv/linux/sh/sem_post.S: New file.
6112         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: New file.
6113         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: New file.
6114         * sysdeps/unix/sysv/linux/sh/sem_wait.S: New file.
6115         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: New file.
6116
6117 2003-02-08  Ulrich Drepper  <drepper@redhat.com>
6118
6119         * tst-cond2.c: Rearrange code to not rely on behavior undefined
6120         according to POSIX.
6121
6122         * tst-basic2.c (do_test): Lock mutex before creating the thread.
6123
6124 2003-02-07  Ulrich Drepper  <drepper@redhat.com>
6125
6126         * sysdeps/x86_64/tls.h: Remove unnecessary macros, left over from x86.
6127         (TLS_GET_FS): New #define.
6128         (TLS_SET_FS): New #define.
6129         Correct value of __NR_set_thread_area.
6130
6131         * sysdeps/x86_64/td_ta_map_lwp2thr.c: New file.
6132
6133 2003-02-06  Ulrich Drepper  <drepper@redhat.com>
6134
6135         * Makefile (tests): Add tst-popen1.
6136         * tst-popen1.c: New file.
6137
6138         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Remove wrong
6139         but inactive generalization.
6140         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6141         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
6142         Minor optimization, remove one instruction.
6143         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
6144
6145 2003-02-04  Martin Schwidefsky  <schwidefsky@de.ibm.com>
6146
6147         * sysdeps/unix/sysv/linux/s390/fork.c: Correct order of parameters.
6148
6149 2003-01-31  Martin Schwidefsky  <schwidefsky@de.ibm.com>
6150
6151         * init.c (__NR_set_tid_address): Add #ifdef for s390.
6152         * sysdeps/pthread/pthread_barrier_wait.c: New file.
6153         * sysdeps/pthread/pthread_cond_broadcast.c: New file.
6154         * sysdeps/pthread/pthread_cond_signal.c: New file.
6155         * sysdeps/pthread/pthread_cond_timedwait.c: New file.
6156         * sysdeps/pthread/pthread_cond_wait.c: New file.
6157         * sysdeps/pthread/pthread_rwlock_rdlock.c: New file.
6158         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: New file.
6159         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: New file.
6160         * sysdeps/pthread/pthread_rwlock_unlock.c: New file.
6161         * sysdeps/pthread/pthread_rwlock_wrlock.c: New file.
6162         * sysdeps/s390/Makefile: New file.
6163         * sysdeps/s390/bits/atomic.h: New file.
6164         * sysdeps/s390/pthread_spin_init.c: New file.
6165         * sysdeps/s390/pthread_spin_lock.c: New file.
6166         * sysdeps/s390/pthread_spin_trylock.c: New file.
6167         * sysdeps/s390/pthread_spin_unlock.c: New file.
6168         * sysdeps/s390/pthreaddef.h: New file.
6169         * sysdeps/s390/tcb-offsets.sym: New file.
6170         * sysdeps/s390/td_ta_map_lwp2thr.c: New file.
6171         * sysdeps/s390/tls.h: New file.
6172         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: New file.
6173         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: New file.
6174         * sysdeps/unix/sysv/linux/s390/createthread.c: New file.
6175         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: New file.
6176         * sysdeps/unix/sysv/linux/s390/fork.c: New file.
6177         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: New file.
6178         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
6179         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: New file.
6180         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: New file.
6181         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: New file.
6182         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: New file.
6183         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: New file.
6184         * sysdeps/unix/sysv/linux/s390/pthread_once.c: New file.
6185         * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c: New file.
6186         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: New file.
6187         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: New file.
6188         * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c: New file.
6189         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: New file.
6190         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: New file.
6191         * sysdeps/unix/sysv/linux/s390/sem_post.c: New file.
6192         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: New file.
6193         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
6194         * sysdeps/unix/sysv/linux/s390/sem_wait.c: New file.
6195
6196 2003-02-04  Ulrich Drepper  <drepper@redhat.com>
6197
6198         * atomic.h: Add a couple more default implementations.
6199         (atomic_compare_and_exchange_acq): Use
6200         __arch_compare_and_exchange_32_acq in return value definition.  It
6201         always exists.
6202         (atomic_bit_set): Renamed from atomic_set_bit.
6203         Add missing atomic_ prefixes.
6204
6205         * sysdeps/pthread/bits/libc-lock.h (__libc_once): In case no
6206         thread library is available, use correct value to mark initialized
6207         once variable.
6208
6209 2003-02-03  Ulrich Drepper  <drepper@redhat.com>
6210
6211         * allocatestack.c (allocate_stack): Use __getpagesize instead of
6212         __sysconf to determine pagesize.
6213
6214         * pthread_create.c: Include <atomic.h>.
6215         * allocatestack.c (allocate_stack): Implement coloring of the
6216         allocated stack memory.  Rename pagesize to pagesize_m1.  It's the
6217         size minus one.  Adjust users.
6218         * sysdeps/i386/i686/Makefile: New file.
6219
6220 2003-02-02  Ulrich Drepper  <drepper@redhat.com>
6221
6222         * allocatestack.c: Improve comment throughout the file.
6223
6224         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
6225         (__lll_lock_wait): Add branch prediction.
6226         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
6227         (__lll_lock_wait): Likewise.
6228         (lll_unlock_wake_cb): Removed.
6229
6230 2003-01-31  Ulrich Drepper  <drepper@redhat.com>
6231
6232         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Remove
6233         _POSIX_THREAD_PRIORITY_SCHEDULING.
6234
6235 2003-01-30  Jakub Jelinek  <jakub@redhat.com>
6236
6237         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
6238         Fix return type of ptr___pthread_getspecific.
6239
6240 2003-01-29  Ulrich Drepper  <drepper@redhat.com>
6241
6242         * Makefile (tests): Add tst-umask1.
6243         (tst-umask1-ARGS): Define.
6244         * tst-umask1.c: New file.
6245
6246 2003-01-28  Ulrich Drepper  <drepper@redhat.com>
6247
6248         * Makefile (libpthread-routines): Remove lowlevelrwlock.  Add
6249         pthread_rwlock_rdlock, pthread_rwlock_timedrdlock,
6250         pthread_rwlock_wrlock, pthread_rwlock_timedwrlock, and
6251         pthread_rwlock_unlock.
6252         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Removed
6253         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrwlock.S: Removed
6254         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Removed
6255         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: New file.
6256         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
6257         New file.
6258         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: New file.
6259         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
6260         New file.
6261         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: New file.
6262         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S: New file.
6263         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S:
6264         New file.
6265         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S: New file.
6266         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S:
6267         New file.
6268         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S: New file.
6269         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S: New file.
6270         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S:
6271         New file.
6272         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S: New file.
6273         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S:
6274         New file.
6275         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S: New file.
6276
6277         * Makefile (libpthread-routines): Remove lowlevelcond and
6278         lowlevelsem.  Add sem_wait, sem_trywait, sem_timedwait, sem_post,
6279         pthread_cond_wait, pthread_cond_timedwait, pthread_cond_signal,
6280         and pthread_cond_broadcast.
6281         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Removed
6282         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Removed
6283         * sysdeps/unix/sysv/linux/i386/i586/lowlevelsem.S: Removed
6284         * sysdeps/unix/sysv/linux/i386/i586/lowlevelcond.S: Removed
6285         * sysdeps/unix/sysv/linux/i386/i686/lowlevelsem.S: Removed
6286         * sysdeps/unix/sysv/linux/i386/i686/lowlevelcond.S: Removed
6287         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: New file.
6288         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: New file.
6289         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: New file.
6290         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: New file.
6291         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: New file.
6292         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: New file.
6293         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: New file.
6294         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: New file.
6295         * sysdeps/unix/sysv/linux/i386/i586/sem_wait.S: New file.
6296         * sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S: New file.
6297         * sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S: New file.
6298         * sysdeps/unix/sysv/linux/i386/i586/sem_post.S: New file.
6299         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S: New file.
6300         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S: New file.
6301         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S: New file.
6302         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S: New file.
6303         * sysdeps/unix/sysv/linux/i386/i686/sem_wait.S: New file.
6304         * sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S: New file.
6305         * sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S: New file.
6306         * sysdeps/unix/sysv/linux/i386/i686/sem_post.S: New file.
6307         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S: New file.
6308         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S: New file.
6309         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S: New file.
6310         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S: New file.
6311         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: New file.
6312
6313         * sysdeps/unix/sysv/linux/i386/createthread.c: Define
6314         PREPARE_CREATE and TLS_VALUE with x86-specific bits.  All the rest
6315         of the code is moved to ...
6316         * sysdeps/pthread/createthread.c: ...here.  New file.
6317
6318 2003-01-27  Ulrich Drepper  <drepper@redhat.com>
6319
6320         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
6321         (__new_sem_post): Clear %eax before returning.
6322         Reported by MAEDA Naoaki <maeda.naoaki@jp.fujitsu.com>.
6323
6324         * Makefile (tests): Add tst-cleanup2.
6325         * tst-cleanup2.c: New file.
6326
6327         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
6328         Interpret first parameter correctly.
6329
6330 2003-01-17  Ulrich Drepper  <drepper@redhat.com>
6331
6332         * Makefile (headers): Add bits/semaphore.h.
6333
6334 2003-01-16  Jakub Jelinek  <jakub@redhat.com>
6335
6336         * sysdeps/i386/tls.h (INIT_SYSINFO): Initialize _head->sysinfo even
6337         if not SHARED.
6338
6339 2003-01-14  Ulrich Drepper  <drepper@redhat.com>
6340
6341         * sem_open.c (sem_open): Return SEM_FAILED if existing semaphore
6342         must be used and mapping failed.
6343         Reported by Luke Elliott <luke.elliott@activfinancial.com>.
6344
6345         * Makefile (CFLAGS-pthread_self.os): Define this, not
6346         CFLAGS-pthread_self.c.
6347
6348 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
6349
6350         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Don't export
6351         lll_unlock_wake_cb.
6352
6353         * Makefile (libpthread-routines): Add version.  Add rules to build
6354         version.os and banner.h.
6355         * version.c: New file.
6356
6357 2003-01-13  Jakub Jelinek  <jakub@redhat.com>
6358
6359         * pthread_mutex_lock.c (__pthread_mutex_lock_internal): Make
6360         the alias unconditional.
6361         * pthread_mutex_unlock.c  (__pthread_mutex_unlock_internal): Likewise.
6362
6363 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
6364
6365         * Makefile (CFLAGS-pthread_self.c): New definition.
6366
6367 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
6368
6369         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Add
6370         INTERNAL_SYSCALL_DECL, add err argument to INTERNAL_SYSCALL* macros.
6371         * sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
6372         * init.c (__pthread_initialize_minimal_internal): Likewise.
6373
6374 2003-01-07  Jakub Jelinek  <jakub@redhat.com>
6375
6376         * pthreadP.h (__pthread_cond_timedwait): Add prototype.
6377
6378         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
6379         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
6380         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
6381         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
6382         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
6383         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
6384
6385 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
6386
6387         * pthreadP.h (LIBC_CANCEL_HANDLED): Define.
6388         * pt-system.c (LIBC_CANCEL_HANDLED): Add.
6389         * tst-cancel-wrappers.sh: Remove all exceptions.
6390
6391 2003-01-05  Ulrich Drepper  <drepper@redhat.com>
6392
6393         * tst-cancel-wrappers.sh: Invoke gawk not awk since we use GNU awk
6394         features.  Reported by Marijn Ros <marijn@mad.scientist.com>.
6395
6396         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include <pthread-functions.h>.
6397         Use __libc_pthread_functions array if SHARED.
6398
6399         * pthreadP.h: Move pthread_cond_2_0_t definition to...
6400         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.
6401
6402         * sysdeps/pthread/bits/libc-lock.h (__libc_ptf_call): New #define.
6403         (__libc_rwlock_rdlock, __libc_rwlock_wrlock, __libc_rwlock_unlock,
6404         __libc_key_create, __libc_getspecific, __libc_setspecific): Use
6405         __libc_ptf_call instead of __libc_maybe_call.
6406         (PTF): New #define.
6407         (__libc_cleanup_region_start): Wrap function name with PTF call.
6408         (__libc_cleanup_region_end): Likewise.
6409         (__libc_cleanup_end): Likewise.
6410
6411         * pthread_getspecific.c: Add __pthread_getspecific_internal alias.
6412         * pthread_setspecific.c: Add __pthread_setspecific_internal alias.
6413         * pthread_key_create.c: Add __pthread_key_create_internal alias.
6414         * pthreadP.h: Add prototypes.
6415
6416         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Add
6417         __pthread_rwlock_rdlock, __pthread_rwlock_wrlock, and
6418         __pthread_rwlock_unlock aliases.
6419         * pthreadP.h: Add prototypes for new aliases.
6420
6421         * pthreadP.h (struct pthead_functions): Moved to...
6422         * sysdeps/pthread/pthread-functions.h: ...here.  New file.
6423         * init.c (pthread_functions): Add initializers for new elements.
6424
6425         * cleanup_defer.c: Add __pthread_cleanup_push_defer and
6426         __pthread_cleanup_pop_restore aliases.
6427         * pthreadP.h: Add prototypes.
6428
6429         * cleanup.c: Rename _GI_pthread_cleanup_push to __pthread_cleanup_push
6430         and _GI_pthread_cleanup_pop to __pthread_cleanup_pop.
6431         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Adjust caller.
6432         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
6433         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
6434         * pthreadP.h: Adjust prototypes and callers.
6435
6436 2003-01-04  Ulrich Drepper  <drepper@redhat.com>
6437
6438         * Makefile (tests): Add tst-cancel7.
6439         (tst-cancel7-ARGS): New variable.
6440         * tst-cancel7.c: New file.
6441
6442         * old_pthread_cond_broadcast.c: Optimize initialization a bit to work
6443         around gcc defficiencies.
6444         * old_pthread_cond_signal.c: Likewise.
6445         * old_pthread_cond_timedwait.c: Likewise.
6446         * old_pthread_cond_wait.c: Likewise.
6447
6448         * pthreadP.h (pthread_cond_2_0_t): Remove unneeded lock element.
6449
6450 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
6451
6452         * Makefile (tests): Add tst-cond7.
6453         * tst-cond7.c: New file.
6454
6455         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
6456         (condvar_cleanup): Get condvar address from the right place.
6457
6458         * atomic.h: Correct definitions of atomic_full_barrier,
6459         atomic_read_barrier, atomic_write_barrier.
6460
6461         * old_pthread_cond_broadcast.c: Make memory allocate and initialization
6462         race-free.
6463         * old_pthread_cond_signal.c: Likewise.
6464         * old_pthread_cond_timedwait.c: Likewise.
6465         * old_pthread_cond_wait.c: Likewise.
6466
6467 2003-01-03  Jakub Jelinek  <jakub@redhat.com>
6468
6469         * Makefile ($(objpfx)libpthread.so): Depend on ld.so.
6470
6471 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
6472
6473         * pthreadP.h (pthread_cond_2_0_t): New type.
6474         (struct pthread_functions): Use new type for 2.0 condvar callbacks.
6475         Use new type for the 2.0 condvar function prototypes.
6476         * forward.c: Use pthread_cond_2_0_t for 2.0 condvar functions.
6477         * old_pthread_cond_init.c: Use pthread_cond_2_0_t for condvar
6478         parameter.
6479         * old_pthread_cond_destroy.c: Likewise.
6480         * old_pthread_cond_broadcast.c: Likewise.  Lock appropriately.
6481         * old_pthread_cond_signal.c: Likewise.
6482         * old_pthread_cond_timedwait.c: Likewise.
6483         * old_pthread_cond_wait.c: Likewise.
6484
6485         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
6486         (__pthread_cond_wait): Don't save cancellation mode and seq value
6487         in same location.
6488
6489         * herrno.c (__h_errno_location): Don't define as weak.
6490
6491 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
6492
6493         * Versions [libc] (GLIBC_2.3.2): Export pthread_cond_broadcast,
6494         pthread_cond_destroy, pthread_cond_init, pthread_cond_signal
6495         and pthread_cond_wait.
6496         * old_pthread_cond_broadcast.c (__old_pthread_cond_broadcast):
6497         Renamed to...
6498         (__pthread_cond_broadcast_2_0): ... this.
6499         * old_pthread_cond_destroy.c (__old_pthread_cond_destroy):
6500         Renamed to...
6501         (__pthread_cond_destroy_2_0): ... this.
6502         * old_pthread_cond_init.c (__old_pthread_cond_init):
6503         Renamed to...
6504         (__pthread_cond_init_2_0): ... this.
6505         * old_pthread_cond_signal.c (__old_pthread_cond_signal):
6506         Renamed to...
6507         (__pthread_cond_signal_2_0): ... this.
6508         * old_pthread_cond_wait.c (__old_pthread_cond_wait):
6509         Renamed to...
6510         (__pthread_cond_wait_2_0): ... this.
6511         * pthread_cond_destroy.c: Include shlib-compat.h.
6512         (pthread_cond_destroy): Change strong_alias into versioned_symbol.
6513         * pthread_cond_init.c: Include shlib-compat.h.
6514         (pthread_cond_init): Change strong_alias into versioned_symbol.
6515         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_cond_*
6516         fields to ptr___pthread_cond_* and add ptr___pthread_cond_*_2_0
6517         fields.
6518         (__pthread_cond_broadcast_2_0, __pthread_cond_destroy_2_0,
6519         __pthread_cond_init_2_0, __pthread_cond_signal_2_0,
6520         __pthread_cond_wait_2_0): New prototypes.
6521         (__old_pthread_cond_broadcast, __old_pthread_cond_destroy,
6522         __old_pthread_cond_init, __old_pthread_cond_signal,
6523         __old_pthread_cond_wait): Removed.
6524         * init.c: Include shlib-compat.h.
6525         (pthread_functions): Guard ptr___pthread_attr_init_2_0
6526         initialization with SHLIB_COMPAT (GLIBC_2_0, GLIBC_2_1).
6527         Rename ptr_pthread_cond_* to ptr___pthread_cond_*, initialize
6528         ptr___pthread_cond_*_2_0 fields.
6529         * forward.c: Export both pthread_cond_*@@GLIBC_2.3.2 and
6530         pthread_cond_*@GLIBC_2.0 compatibility symbols.
6531
6532         * sysdeps/pthread/sigaction.c (SIGCANCEL): Only define if
6533         LIBC_SIGACTION was not yet defined.
6534         [!defined LIBC_SIGACTION]: Define LIBC_SIGACTION, #include self.
6535         [!defined LIBC_SIGACTION] (__sigaction): New function and
6536         libc_hidden_weak.
6537         [!defined LIBC_SIGACTION] (sigaction): New weak_alias.
6538         [defined LIBC_SIGACTION]: #include_next <sigaction.c>.
6539
6540 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
6541
6542         * Makefile (CFLAGS-pthread_atfork.c): Add -DNOT_IN_libc.
6543
6544 2003-01-02  Ulrich Drepper  <drepper@redhat.com>
6545
6546         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
6547         New, larger type definition.
6548         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: New condvar
6549         implementation.
6550         * Versions [libpthread]: Add definitions for new pthread_cond_*
6551         interfaces for version GLIBC_2.3.2.
6552         * pthread_cond_init.c: Update initialization for new type definition.
6553         * Makefile (libpthread-routines): Remove pthread_cond_wait,
6554         pthread_cond_timedwait, pthread_cond_signal, and
6555         pthread_cond_broadcast.  Add old_pthread_cond_init,
6556         old_pthread_cond_destroy, old_pthread_cond_wait,
6557         old_pthread_cond_timedwait, old_pthread_cond_signal, and
6558         old_pthread_cond_broadcast.
6559         * old_pthread_cond_broadcast.c: New file.
6560         * old_pthread_cond_destroy.c: New file.
6561         * old_pthread_cond_init.c: New file.
6562         * old_pthread_cond_signal.c: New file.
6563         * old_pthread_cond_timedwait.c: New file.
6564         * old_pthread_cond_wait.c: New file.
6565         * pthreadP.h: Add prototypes for the compatibility interfaces.
6566
6567         * pthread_cond_destroy.c: Don't include <errno.h>.
6568
6569 2003-01-01  Ulrich Drepper  <drepper@redhat.com>
6570
6571         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Avoid
6572         unnecessary zero offset when addressing MUTEX.
6573
6574 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
6575
6576         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
6577         __register_atfork.
6578         * sysdeps/unix/sysv/linux/register-atfork.c: Add libc_hidden_def
6579         for __register_atfork.
6580
6581 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
6582
6583         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use __ASSEMBLER__
6584         instead of ASSEMBLER test macro.
6585
6586         * sysdeps/unix/sysv/linux/allocrtsig.c (__libc_current_sigrtmin,
6587         __libc_current_sigrtmax): Add libc_hidden_def.
6588
6589         * sysdeps/pthread/list.h: Remove assert.h include.
6590
6591 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
6592
6593         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Use
6594         __pthread_initialize_minimal_internal not
6595         __pthread_initialize_minimal.
6596
6597 2002-12-30  Ulrich Drepper  <drepper@redhat.com>
6598
6599         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Mark
6600         __pthread_initialize_minimal as hidden.
6601
6602         * init.c (__pthread_initialize_minimal_internal): Don't mark as
6603         constructor.
6604
6605 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
6606
6607         * Makefile ($(inst_libdir)/libpthread.so): Depend on
6608         $(common-objpfx)format.lds, include that into the output script.
6609         Fix comment.
6610         (extra-B-pthread.so): Change linuxthreads/ into nptl/.
6611
6612 2002-12-28  Andreas Jaeger  <aj@suse.de>
6613
6614         * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for
6615         nsec resolution changes.
6616         (xstat64_conv): Likewise.
6617         (xstat32_conv): Likewise.
6618         * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for
6619         struct kernel_stat.
6620         * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for
6621         structs stat and stat64.
6622         * time/time.h (__timespec_defined): Define for __USE_MISC.
6623         * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat.
6624
6625 2002-12-30  Jakub Jelinek  <jakub@redhat.com>
6626
6627         * forward.c (FORWARD2): Renamed from FORWARD3.  Remove unused export
6628         argument.
6629         (pthread_attr_init_2_0, pthread_attr_init_2_1): Use FORWARD macro.
6630         (pthread_exit): Use strong_alias to avoid warnings.
6631         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_exit
6632         and ptr_pthread_attr_init_2_* to ptr___pthread_exit and
6633         ptr___pthread_attr_init_2_*.
6634         * init.c (pthread_functions): Adjust.
6635
6636 2002-12-29  Ulrich Drepper  <drepper@redhat.com>
6637
6638         * forward.c: Make all functions available by default again.  It
6639         caused too much trouble.
6640
6641         * pt-siglongjmp.c: Removed.
6642
6643 2002-12-28  Jakub Jelinek  <jakub@redhat.com>
6644
6645         * sysdeps/i386/tls.h: Include tcb-offsets.h in assembler.
6646         (SYSINFO_OFFSET, MULTIPLE_THREADS_OFFSET): Remove.
6647         * sysdeps/i386/Makefile: New file.
6648         * sysdeps/i386/tcb-offsets.sym: New file.
6649         * sysdeps/pthread/tcb-offsets.h: New file.
6650         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
6651         Remove MULTIPLE_THREADS_OFFSET and SYSINFO_OFFSET checks.
6652
6653         * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_PRIVATE): Move
6654         __register_atfork...
6655         (GLIBC_2.3.2): ...here.
6656
6657 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
6658
6659         * sysdeps/pthread/pthread.h: Mark pthread_attr_getstackaddr and
6660         pthread_attr_setstackaddr with __attribute_deprecated__.
6661
6662 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
6663
6664         * pt-system.c (system): Remove cancellation handling.
6665         * tst-cancel-wrappers.sh: Allow pt-system.o* to not use the
6666         cancellation routines.
6667
6668 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
6669
6670         * descr.h: Include <dl-sysdep.h>.
6671         (struct pthread): Move header.data.list to the back of the struct.
6672         * sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct.
6673         (MULTIPLE_THREADS_OFFSET): Adjust offset.
6674         (SYSINFO_OFFSEET): Likewise.
6675
6676 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
6677
6678         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO):
6679         Define.
6680         (DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings.
6681         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO,
6682         DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define.
6683         (USE_DL_SYSINFO): Undef.
6684
6685 2002-12-22  Jakub Jelinek  <jakub@redhat.com>
6686
6687         * Makefile (tests-reverse): Use $(objpfx)../libc.so instead of
6688         $(common-objpfx)libc.so.
6689         * tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that
6690         it is bigger than pipe buffer size even on arches with bigger
6691         page size.
6692         (tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
6693
6694 2002-12-25  Ulrich Drepper  <drepper@redhat.com>
6695
6696         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Implement
6697         correct errno access for case that USE___THREAD is not defined.
6698
6699 2002-12-24  Ulrich Drepper  <drepper@redhat.com>
6700
6701         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Add missing #endif.
6702         Patch by Marijn Ros <marijn@mad.scientist.com>.
6703
6704 2002-12-22  Roland McGrath  <roland@redhat.com>
6705
6706         * Makefile (omit-deps): Add $(unix-syscalls:%=ptw-%).
6707
6708 2002-12-20  Ulrich Drepper  <drepper@redhat.com>
6709
6710         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_inexpensive): Define.
6711
6712 2002-12-19  Ulrich Drepper  <drepper@redhat.com>
6713
6714         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Don't define
6715         NEED_DL_SYSINFO since no processor < i686 had the sysenter opcode.
6716         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: New file.
6717
6718         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Use ENTER_KERNEL instead
6719         of int $0x80.
6720         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
6721         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Likewise.
6722         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Likewise.
6723         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
6724         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
6725         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Likewise.
6726         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Likewise.
6727         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
6728
6729         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add support for using
6730         sysenter.
6731         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
6732
6733         * sysdeps/i386/tls.h: Unconditionally include <dl-sysdep.h>.
6734
6735         * allocatestack.c (allocate_stack) [NEED_DL_SYSINFO]: Set sysinfo
6736         in new TCB.
6737         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Check
6738         that sysinfo is properly initialized.
6739         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO
6740         to 1 only for ld.so.
6741
6742         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
6743         RTLD_CORRECT_DYNAMIC_WEAK.
6744
6745 2002-12-19  Jakub Jelinek  <jakub@redhat.com>
6746
6747         * forward.c (pthread_attr_init_2_0, pthread_attr_init_2_1):
6748         Use return 0 as 6th argument to FORWARD4.
6749         * pthread_equal.c: Include pthreadP.h instead of pthread.h.
6750
6751 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
6752
6753         * descr.h (struct pthread) [NEED_DL_SYSINFO]: Add sysinfo member.
6754         * sysdeps/i386/tls.h (tcbhead_t): Add sysinfo member.
6755         Define SYSINFO_OFFSEET if NEED_DL_SYSINFO is defined.
6756         (INIT_SYSINFO): New #define.
6757         (TLS_TP_INIT): Use INIT_SYSINFO.
6758         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
6759         At test to make sure SYSINFO_OFFSET value is correct.
6760         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: New file.
6761
6762 2002-12-18  Jakub Jelinek  <jakub@redhat.com>
6763
6764         * sysdeps/pthread/flockfile.c (flockfile): Change into weak alias.
6765         * sysdeps/unix/sysv/linux/raise.c (gsignal): Add weak alias to raise.
6766         * Versions [libc: GLIBC_2.0]: Add pthread_attr_init.
6767         [libpthread: GLIBC_2.1]: Remove __pthread_rwlock_init,
6768         __pthread_rwlock_destroy, __pthread_rwlock_rdlock,
6769         __pthread_rwlock_wrlock, __pthread_rwlock_unlock,
6770         __pthread_rwlock_tryrdlock and __pthread_rwlock_trywrlock.
6771
6772 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
6773
6774         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use ENTER_KERNEL
6775         macro instead of using int $0x80 directly.
6776
6777         * sysdeps/pthread/bits/stdio-lock.h: New file.
6778         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: New file.
6779         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: New file.
6780         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: New file.
6781         * Makefile (routines): Add libc-lowlevelmutex.
6782
6783         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Remove
6784         __i686.get_pc_thunk.dx.
6785
6786 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
6787
6788         * Makefile (libpthread-shared-only-routines): Add pt-allocrtsig.
6789         (tests): Depend on $(objpfx)tst-cancel-wrappers.out.
6790         ($(objpfx)tst-cancel-wrappers.out): New rule.
6791         * tst-cancel-wrappers.sh: New test.
6792         * tst-locale1.c: Include signal.h.
6793         (uselocale): Test static linking of __libc_current_sigrt*.
6794
6795 2002-12-17  Ulrich Drepper  <drepper@redhat.com>
6796
6797         * Makefile (tests): Add tst-cancel6.
6798         * tst-cancel6.c: New file
6799
6800 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
6801
6802         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (SINGLE_THREAD_P):
6803         Define meaningfully for assembler as well.
6804         * pthreadP.h (struct pthread_functions): Remove
6805         ptr_pthread_attr_init field.  Add ptr_pthread_attr_init_2_0
6806         and ptr_pthread_attr_init_2_1 fields.
6807         * init.c (pthread_functions): Initialize ptr_pthread_attr_init_2_0
6808         and ptr_pthread_attr_init_2_1 instead of ptr_pthread_attr_init.
6809         * forward.c (FORWARD4): Renamed from FORWARD3. Add export argument.
6810         (FORWARD3): Define using FORWARD4.
6811         (pthread_attr_init): Provide both @GLIBC_2.0 and @@GLIBC_2.1
6812         versions.
6813         * pt-system.c: Remove duplicate stdlib.h include.
6814
6815 2002-12-16  Ulrich Drepper  <drepper@redhat.com>
6816
6817         * sem_init.c: Define sem_init@GLIBC_2.0.
6818         * sem_destroy.c: Define sem_destroy@GLIBC_2.0.
6819         * sem_getvalue.c: Define sem_getvalue@GLIBC_2.0.
6820
6821         * flockfile.c: Moved to...
6822         * sysdeps/pthread/flockfile.c: ...here.  New file.
6823         * funlockfile.c: Moved to...
6824         * sysdeps/pthread/funlockfile.c: ...here.  New file.
6825         * ftrylockfile.c: Moved to...
6826         * sysdeps/pthread/ftrylockfile.c: ...here.  New file.
6827
6828 2002-12-16  Jakub Jelinek  <jakub@redhat.com>
6829
6830         * libc-cancellation.c: Guard both function with
6831         #if !defined NOT_IN_libc.
6832         * Makefile (libpthread-routines): Use ptw-, not pt- prefix for the
6833         automatically provided pthread wrappers.
6834         * pthreadP.h (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): Define to
6835         CANCEL_* if IS_IN_libpthread and to dummy versions if not in libc
6836         nor in libpthread.
6837         * pt-open.c: Removed.
6838         * pt-fcntl.c: Removed.
6839         * pt-fsync.c: Removed.
6840         * pt-lseek.c: Removed.
6841         * pt-msgrcv.c: Removed.
6842         * pt-msgsnd.c: Removed.
6843         * pt-msync.c: Removed.
6844         * pt-nanosleep.c: Removed.
6845         * pt-open64.c: Removed.
6846         * pt-pause.c: Removed.
6847         * pt-pread.c: Removed.
6848         * pt-pread64.c: Removed.
6849         * pt-pwrite.c: Removed.
6850         * pt-pwrite64.c: Removed.
6851         * pt-read.c: Removed.
6852         * pt-recv.c: Removed.
6853         * pt-recvfrom.c: Removed.
6854         * pt-recvmsg.c: Removed.
6855         * pt-send.c: Removed.
6856         * pt-sendto.c: Removed.
6857         * pt-sigtimedwait.c: Removed.
6858         * pt-sigwait.c: Removed.
6859         * pt-wait.c: Removed.
6860         * pt-waitpid.c: Removed.
6861         * pt-write.c: Removed.
6862         * pt-accept.c: Removed.
6863         * pt-close.c: Removed.
6864         * pt-connect.c: Removed.
6865         * pt-lseek64.c: Removed.
6866         * pt-sendmsg.c: Removed.
6867         * pt-tcdrain.c: Removed.
6868
6869 2002-12-15  Ulrich Drepper  <drepper@redhat.com>
6870
6871         * init.c (__pthread_initialize_minimal_internal): Renamed from
6872         __pthread_initialize_minimal.  Make old name an alias.  This
6873         converts a normal relocation into a relative relocation.
6874
6875         * pt-fcntl.c (__fcntl): Use fcntl64 syscall, not fcntl.
6876
6877         * Versions [libpthread: GLIBC_2.3.2]: Remove creat, poll, pselect,
6878         readv, select, sigpause, sigsuspend, sigwaitinfo, waitid, writev.
6879         * Makefile (libpthread-routines): Remove pt-creat, pt-poll,
6880         pt-pselect, pt-readv, pt-select, pt-sigpause, pt-sigsuspend,
6881         pt-sigwaitinfo, pt-waitid, and pt-writev.
6882         * pt-creat.c: Removed.
6883         * pt-poll.c: Removed.
6884         * pt-pselect.c: Removed.
6885         * pt-readv.c: Removed.
6886         * pt-select.c: Removed.
6887         * pt-sigpause.c: Removed.
6888         * pt-sigsuspend.c: Removed.
6889         * pt-sigwaitinfo.c: Removed.
6890         * pt-waitid.c: Removed.
6891         * pt-writev.c: Removed.
6892
6893         * init.c (pthread_functions): New variable.
6894         (__pthread_initialize_minimal): Pass pointer to pthread_functions
6895         (or NULL) to __libc_pthread_init.
6896         * forward.c: Rewrite to use __libc:pthread_functions array to get
6897         function addresses.
6898         * sysdeps/unix/sysv/linux/fork.h: Remove __libc_pthread_init
6899         prototype.
6900         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
6901         Take new parameter.  Copy content of variable pointed to by it
6902         to __libc_pthread_init.
6903
6904         * pthreadP.h (struct pthread_functions): New type.
6905         (__libc_pthread_init): Declare.
6906
6907         * pthread_attr_destroy.c: Add namespace protected alias.
6908         * pthread_attr_getdetachstate.c: Likewise.
6909         * pthread_attr_getinheritsched.c: Likewise.
6910         * pthread_attr_getschedparam.c: Likewise.
6911         * pthread_attr_getschedpolicy.c: Likewise.
6912         * pthread_attr_getscope.c: Likewise.
6913         * pthread_attr_setdetachstate.c: Likewise.
6914         * pthread_attr_setinheritsched.c: Likewise.
6915         * pthread_attr_setschedparam.c: Likewise.
6916         * pthread_attr_setschedpolicy.c: Likewise.
6917         * pthread_attr_setscope.c: Likewise.
6918         * pthread_cond_broadcast.c: Likewise.
6919         * pthread_cond_destroy.c: Likewise.
6920         * pthread_cond_init.c: Likewise.
6921         * pthread_cond_signal.c: Likewise.
6922         * pthread_cond_wait.c: Likewise.
6923         * pthread_condattr_destroy.c: Likewise.
6924         * pthread_condattr_init.c: Likewise.
6925         * pthread_equal.c: Likewise.
6926         * pthread_exit.c: Likewise.
6927         * pthread_getschedparam.c: Likewise.
6928         * pthread_self.c: Likewise.
6929         * pthread_setcancelstate.c: Likewise.
6930         * pthread_setschedparam.c: Likewise.
6931         * pthread_mutex_destroy.c: Likewise.
6932         * pthread_mutex_init.c: Likewise.
6933         * pthreadP.h: Add prototypes for the aliases.
6934
6935         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Set
6936         multiple_threads member in correct TCB to 1.
6937
6938         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define
6939         SINGLE_THREAD_P.  If in libc or libpthread examine multiple_thread
6940         member of thread decriptor, otherwise return unconditionally 1.
6941
6942 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
6943
6944         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Changes folded into the
6945         regular Linux version.  Remove file.
6946         * sysdeps/unix/sysv/linux/connect.S: Likewise.  Remove file.
6947         * sysdeps/unix/sysv/linux/llseek.c: Likewise.  Remove file.
6948         * sysdeps/unix/sysv/linux/msgrcv.c: Likewise.  Remove file.
6949         * sysdeps/unix/sysv/linux/msgsnd.c: Likewise.  Remove file.
6950         * sysdeps/unix/sysv/linux/open64.c: Likewise.  Remove file.
6951         * sysdeps/unix/sysv/linux/poll.c: Likewise.  Remove file.
6952         * sysdeps/unix/sysv/linux/pread.c: Likewise.  Remove file.
6953         * sysdeps/unix/sysv/linux/pread64.c: Likewise.  Remove file.
6954         * sysdeps/unix/sysv/linux/pselect.c: Likewise.  Remove file.
6955         * sysdeps/unix/sysv/linux/pwrite.c: Likewise.  Remove file.
6956         * sysdeps/unix/sysv/linux/pwrite64.c: Likewise.  Remove file.
6957         * sysdeps/unix/sysv/linux/readv.c: Likewise.  Remove file.
6958         * sysdeps/unix/sysv/linux/recv.S: Likewise.  Remove file.
6959         * sysdeps/unix/sysv/linux/recvfrom.S: Likewise.  Remove file.
6960         * sysdeps/unix/sysv/linux/recvmsg.S: Likewise.  Remove file.
6961         * sysdeps/unix/sysv/linux/send.S: Likewise.  Remove file.
6962         * sysdeps/unix/sysv/linux/sendmsg.S: Likewise.  Remove file.
6963         * sysdeps/unix/sysv/linux/sendto.S: Likewise.  Remove file.
6964         * sysdeps/unix/sysv/linux/sigpause.c: Likewise.  Remove file.
6965         * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise.  Remove file.
6966         * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.  Remove file.
6967         * sysdeps/unix/sysv/linux/sigwait.c: Likewise.  Remove file.
6968         * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.  Remove file.
6969         * sysdeps/unix/sysv/linux/system.c: Likewise.  Remove file.
6970         * sysdeps/unix/sysv/linux/tcdrain.c: Likewise.  Remove file.
6971         * sysdeps/unix/sysv/linux/wait.c: Likewise.  Remove file.
6972         * sysdeps/unix/sysv/linux/waitid.c: Likewise.  Remove file.
6973         * sysdeps/unix/sysv/linux/waitpid.c: Likewise.  Remove file.
6974         * sysdeps/unix/sysv/linux/writev.c: Likewise.  Remove file.
6975         * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.  Remove file.
6976
6977 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
6978
6979         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: New file.
6980         * sysdeps/unix/sysv/linux/open.c: Removed.
6981         * sysdeps/unix/sysv/linux/fsync.c: Removed.
6982         * sysdeps/unix/sysv/linux/lseek.c: Removed.
6983         * sysdeps/unix/sysv/linux/msync.c: Removed.
6984         * sysdeps/unix/sysv/linux/read.c: Removed.
6985         * sysdeps/unix/sysv/linux/close.c: Removed.
6986         * sysdeps/unix/sysv/linux/creat.c: Removed.
6987         * sysdeps/unix/sysv/linux/nanosleep.c: Removed.
6988         * sysdeps/unix/sysv/linux/pause.c: Removed.
6989         * sysdeps/unix/sysv/linux/select.c: Removed.
6990         * sysdeps/unix/sysv/linux/write.c: Removed.
6991
6992 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
6993
6994         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Check multiple_threads
6995         element in TCB to see whether locking is needed.
6996
6997         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Check that
6998         MULTIPLE_THREADS_OFFSET value is correct.
6999
7000         * sysdeps/unix/sysv/linux/close.c: New file.
7001         * sysdeps/unix/sysv/linux/connect.S: New file.
7002         * sysdeps/unix/sysv/linux/creat.c: New file.
7003         * sysdeps/unix/sysv/linux/fsync.c: New file.
7004         * sysdeps/unix/sysv/linux/llseek.c: New file.
7005         * sysdeps/unix/sysv/linux/lseek.c: New file.
7006         * sysdeps/unix/sysv/linux/msgrcv.c: New file.
7007         * sysdeps/unix/sysv/linux/msgsnd.c: New file.
7008         * sysdeps/unix/sysv/linux/msync.c: New file.
7009         * sysdeps/unix/sysv/linux/nanosleep.c: New file.
7010         * sysdeps/unix/sysv/linux/open.c: New file.
7011         * sysdeps/unix/sysv/linux/open64.c: New file.
7012         * sysdeps/unix/sysv/linux/pause.c: New file.
7013         * sysdeps/unix/sysv/linux/poll.c: New file.
7014         * sysdeps/unix/sysv/linux/pread.c: New file.
7015         * sysdeps/unix/sysv/linux/pread64.c: New file.
7016         * sysdeps/unix/sysv/linux/pselect.c: New file.
7017         * sysdeps/unix/sysv/linux/pwrite.c: New file.
7018         * sysdeps/unix/sysv/linux/pwrite64.c: New file.
7019         * sysdeps/unix/sysv/linux/readv.c: New file.
7020         * sysdeps/unix/sysv/linux/recv.S: New file.
7021         * sysdeps/unix/sysv/linux/recvfrom.S: New file.
7022         * sysdeps/unix/sysv/linux/recvmsg.S: New file.
7023         * sysdeps/unix/sysv/linux/select.c: New file.
7024         * sysdeps/unix/sysv/linux/send.S: New file.
7025         * sysdeps/unix/sysv/linux/sendmsg.S: New file.
7026         * sysdeps/unix/sysv/linux/sendto.S: New file.
7027         * sysdeps/unix/sysv/linux/sigpause.c: New file.
7028         * sysdeps/unix/sysv/linux/sigsuspend.c: New file.
7029         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
7030         * sysdeps/unix/sysv/linux/sigwait.c: New file.
7031         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
7032         * sysdeps/unix/sysv/linux/system.c: New file.
7033         * sysdeps/unix/sysv/linux/tcdrain.c: New file.
7034         * sysdeps/unix/sysv/linux/wait.c: New file.
7035         * sysdeps/unix/sysv/linux/waitid.c: New file.
7036         * sysdeps/unix/sysv/linux/waitpid.c: New file.
7037         * sysdeps/unix/sysv/linux/writev.c: New file.
7038         * sysdeps/unix/sysv/linux/i386/fcntl.c: New file.
7039
7040         * pt-readv.c: Fix comment.
7041
7042 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
7043
7044         * tst-cleanup1.c: Include stdlib.h.
7045
7046         * tst-cancel5.c: New test.
7047         * Makefile (tests): Add tst-cancel5.
7048         (tst-cancel5): Link against libc.so libpthread.so in that order.
7049
7050 2002-12-13  Ulrich Drepper  <drepper@redhat.com>
7051
7052         * forward.c (test_loaded): Prevent recursive calls.
7053
7054         * Makefile (routines): Add libc-cancellation.
7055         * libc-cancellation.c: New file.
7056         * descr.h (struct pthread): Add multiple_threads field.
7057         * allocatestack.c (allocate_stack): Initialize multiple_header field of
7058         new thread descriptor to 1.
7059         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread):
7060         Initialize multiple_thread field after successful thread creation.
7061         * cancellation.c (__do_cancel): Move to pthreadP.h.
7062         (__pthread_enable_asynccancel): Remove parameter from __do_cancel call.
7063         (__pthread_disable_asynccancel): Add internal_function attribute.
7064         * init.c (sigcancel_handler): Remove parameter from __do_cancel call.
7065         * pthread_setcancelstate.c: Likewise.
7066         * pthread_setcanceltype.c: Likewise.
7067         * pthread_exit.c: Likewise.
7068         * pthreadP.h (CANCELLATION_P): Likewise.
7069         (__do_cancel): Define as static inline.
7070         (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): New #defines.
7071         (__libc_enable_asynccancel, __libc_disable_asynccancel): New
7072         declarations.
7073         * sysdeps/i386/tls.h (tcbhead_t): Add list and multiple_threads
7074         fields.  Define MULTIPLE_THREADS_OFFSET.
7075         * sysdeps/pthread/bits/libc-lock.h: Remove __libc_locking_needed
7076         declaration.
7077         * sysdeps/unix/sysv/linux/accept.S: New file.
7078         * sysdeps/unix/sysv/linux/read.c: New file.
7079         * sysdeps/unix/sysv/linux/write.c: New file.
7080         * sysdeps/unix/sysv/linux/i386/pt-socket.S: New file.
7081         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove definition and
7082         initialization of __libc_locking_needed.
7083         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't use
7084         __libc_locking_needed, use multiple_threads field in TCB.
7085         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
7086
7087 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
7088
7089         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: Use i486
7090         version.
7091         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: Likewise.
7092
7093         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Correct
7094         access to __libc_locking_needed for PIC.
7095
7096 2002-12-12  Jakub Jelinek  <jakub@redhat.com>
7097
7098         * sysdeps/pthread/bits/libc-lock.h (__libc_locking_needed): Only
7099         declare for libc.so.
7100         (__libc_lock_init, __libc_lock_init_recursive): Change into comma
7101         expression.
7102         (__libc_lock_lock): Put into statement expression.
7103         (__libc_lock_unlock): Remove trailing semicolon.
7104         * sysdeps/unix/sysv/linux/fork.h (__libc_pthread_init): Fix typo.
7105
7106 2002-12-12  Roland McGrath  <roland@redhat.com>
7107
7108         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use asm operand with
7109         "m" constraint to refer to __libc_locking_needed.  Declare it here.
7110
7111 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
7112
7113         * sysdeps/unix/sysv/linux/fork-gen.c: Renamed to...
7114         * sysdeps/unix/sysv/linux/libc_pthread_init.c: ...this.
7115         Initialize __libc_locking_needed.
7116         * init.c (__pthread_initialize_minimal): Call __libc_pthread_init
7117         instead of __register_pthread_fork_handler.
7118         * sysdeps/pthread/bits/libc-lock.h: Declare __libc_locking_needed.
7119         * sysdeps/unix/sysv/linux/Makefile (sysdep_routimes): Replace
7120         fork-gen with libc_pthread_init.
7121         * sysdeps/unix/sysv/linux/Versions: Use __libc_pthread_init instead
7122         of __register_pthread_fork_handler.
7123         * sysdeps/unix/sysv/linux/fork.h: Declare __libc_pthread_init instead
7124         of __register_pthread_fork_handler.
7125         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use
7126         __libc_locking_needed to determine whether lock prefix can be avoided.
7127         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
7128
7129 2002-12-11  Ulrich Drepper  <drepper@redhat.com>
7130
7131         * Makefile (tests): Add tst-cleanup1.
7132         * tst-cleanup1.c: New file.
7133         * cancellation.c (__cleanup_thread): Removed.
7134         (__do_cancel): Remove call to __cleanup_thread.
7135         * pthreadP.h: Remove __cleanup_thread prorotype.
7136
7137         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
7138         Remember function and argument even if cancellation handler
7139         function is not available.
7140         (__libc_cleanup_region_end): Execute registered function directly if
7141         pthread functions are not available.
7142         (__libc_cleanup_end): Likewise.
7143
7144         * init.c (__pthread_initialize_minimal): Fix initialization in
7145         static lib by preventing gcc from being too clever.
7146
7147 2002-12-10  Ulrich Drepper  <drepper@redhat.com>
7148
7149         * init.c (__pthread_initialize_minimal): Remove unneccesary
7150         sigaddset call.
7151
7152         * Makefile (tests): We can run tst-locale2 now.
7153
7154 2002-12-09  Ulrich Drepper  <drepper@redhat.com>
7155
7156         * Versions: Remove duplicated sigwait entry.
7157
7158 2002-12-08  Ulrich Drepper  <drepper@redhat.com>
7159
7160         * pthreadP.h: Enable pthread_cleanup_{push,pop} optimizations only
7161         inside libpthread.
7162
7163         * pt-fcntl.c (__fcntl): Initialize oldtype to avoid warning.
7164
7165         * pthreadP.h: Declare __pthread_enable_asynccancel and
7166         __pthread_disable_asynccancel.
7167         (CANCEL_ASYNC): Use __pthread_enable_asynccancel.
7168         (CANCEL_RESET): Use __pthread_disable_asynccancel.
7169         * cancellation.c (__pthread_enable_asynccancel): New function.
7170         (__pthread_disable_asynccancel): New function.
7171         * pt-accept.c: Adjust for CANCEL_ASYNC and CANCEL_RESET change.
7172         * pt-close.c: Likewise.
7173         * pt-connect.c: Likewise.
7174         * pt-creat.c: Likewise.
7175         * pt-fcntl.c: Likewise.
7176         * pt-fsync.c: Likewise.
7177         * pt-lseek.c: Likewise.
7178         * pt-lseek64.c: Likewise.
7179         * pt-msgrcv.c: Likewise.
7180         * pt-msgsnd.c: Likewise.
7181         * pt-msync.c: Likewise.
7182         * pt-nanosleep.c: Likewise.
7183         * pt-open.c: Likewise.
7184         * pt-open64.c: Likewise.
7185         * pt-pause.c: Likewise.
7186         * pt-poll.c: Likewise.
7187         * pt-pread.c: Likewise.
7188         * pt-pread64.c: Likewise.
7189         * pt-pselect.c: Likewise.
7190         * pt-pwrite.c: Likewise.
7191         * pt-pwrite64.c: Likewise.
7192         * pt-read.c: Likewise.
7193         * pt-readv.c: Likewise.
7194         * pt-recv.c: Likewise.
7195         * pt-recvfrom.c: Likewise.
7196         * pt-recvmsg.c: Likewise.
7197         * pt-select.c: Likewise.
7198         * pt-send.c: Likewise.
7199         * pt-sendmsg.c: Likewise.
7200         * pt-sendto.c: Likewise.
7201         * pt-sigpause.c: Likewise.
7202         * pt-sigsuspend.c: Likewise.
7203         * pt-sigtimedwait.c: Likewise.
7204         * pt-sigwait.c: Likewise.
7205         * pt-sigwaitinfo.c: Likewise.
7206         * pt-system.c: Likewise.
7207         * pt-tcdrain.c: Likewise.
7208         * pt-wait.c: Likewise.
7209         * pt-waitid.c: Likewise.
7210         * pt-waitpid.c: Likewise.
7211         * pt-write.c: Likewise.
7212         * pt-writev.c: Likewise.
7213         * pthread_join.c: Likewise.
7214         * pthread_timedjoin.c: Likewise.
7215
7216         * pt-sigpause.c (sigsuspend): Call __sigsuspend.
7217         (__xpg_sigpause): New function.
7218         * Versions (libpthread:GLIBC_2.3.2): Add __xpg_sigpause.
7219
7220 2002-12-07  Ulrich Drepper  <drepper@redhat.com>
7221
7222         * Makefile (CFLAGS-ftrylockfile.c): Add -D_IO_MTSAFE_IO.
7223
7224         * cleanup.c: Move declarations of _GI_pthread_cleanup_push and
7225         _GI_pthread_cleanup_pop to pthreadP.h.
7226
7227         * ftrylockfile.c: Use _IO_lock_trylock instead of
7228         pthread_mutex_trylock.
7229
7230         * pthreadP.h (CANCEL_ASYNC): Use __pthread_setcanceltype.
7231         (CANCEL_RESET): Likewise.
7232         (__pthread_setcanceltype_): Declare.
7233         (__pthread_mutex_lock_internal): Declare.
7234         (__pthread_mutex_unlock_internal): Declare.
7235         (__pthread_once_internal): Declare.
7236         (pthread_cleanup_push): Redefine using _GI_pthread_cleanup_push.
7237         (pthread_cleanup_pop): Redefine using _GI_pthread_cleanup_pop.
7238
7239         * pthread_cond_timedwait.c: Use INTUSE is calls to pthread_mutex_lock
7240         and pthread_mutex_unlock.
7241         * pthread_cond_wait.c: Likewise.
7242         * pthread_mutex_lock.c: Use INTDEF to define alias if needed.
7243         * pthread_mutex_unlock.c: Likewise.
7244
7245         * pthread_setcanceltype.c: Add additional alias
7246         __pthread_setcanceltype.
7247
7248         * sem_unlink.c (sem_unlink): Use __pthread_once with INTDEF.
7249         * sem_open.c (sem_open): Likewise.
7250         Use __libc_open, __libc_write, and __libc_close instead of
7251         open, write, and close respectively.
7252
7253         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_trylock_internal):
7254         Rewrite as statement expression since it must return a value.
7255
7256         * pthread_cancel.c: Use __pthread_kill instead of pthread_kill.
7257         * sysdeps/unix/sysv/linux/pthread_kill.c: Define additional alias
7258         __pthread_kill.
7259
7260         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Define additional
7261         alias __pthread_once_internal.
7262
7263         * sysdeps/unix/sysv/linux/raise.c: Use libc_hidden_def for raise.
7264
7265 2002-12-06  Ulrich Drepper  <drepper@redhat.com>
7266
7267         * Makefile (tests): Add tst-stdio1 and tst-stdio2.
7268         * tst-stdio1.c: New file.
7269         * tst-stdio2.c: New file.
7270
7271         * init.c (__pthread_initialize_minimal): Correct INIT_LIST_HEAD use.
7272
7273         * Makefile (tests): Comment out tst-locale2 for now.
7274         (CFLAGS-flockfile.c, CFLAGS-funlockfile.c): Define to -D_IO_MTSAFE_IO.
7275
7276         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-fork.c to
7277         -D_IO_MTSAFE_IO.
7278         * sysdeps/unix/sysv/linux/fork.c: Include <bits/stdio-lock.h>.
7279         Use _IO_lock_init instead of explicit assignment.
7280
7281         * sysdeps/pthread/bits/libc-lock.h: Define __rtld_lock_* macros.
7282         Define __libc_lock_* and __libc_lock_recursive macros with
7283         lowlevellock macros, not pthread mutexes.
7284
7285         * flockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_lock instead
7286         of pthread_mutex_lock.
7287         * funlockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_unlock
7288         instead of pthread_mutex_unlock.
7289
7290 2002-12-06  Roland McGrath  <roland@redhat.com>
7291
7292         * allocatestack.c (__stack_user): Use uninitialized defn.
7293         * init.c (__pthread_initialize_minimal): Initialize it here.
7294
7295 2002-12-05  Roland McGrath  <roland@redhat.com>
7296
7297         * sysdeps/i386/tls.h (TLS_INIT_TP): Make it return zero or an error
7298         string.
7299         * sysdeps/x86_64/tls.h (TLS_INIT_TP): Likewise.
7300
7301         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Add
7302         missing & here too.
7303
7304 2002-12-05  Ulrich Drepper  <drepper@redhat.com>
7305
7306         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
7307         lowlevellock.
7308         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: New file.
7309         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: New file.
7310         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: New file.
7311         * sysdeps/pthread/bits/libc-lock.h: Use lowlevellock implementation
7312         for __libc_lock_* macros.
7313         * Makefile (routines): Add libc-lowlevellock.
7314
7315 2002-10-09  Roland McGrath  <roland@redhat.com>
7316
7317         * sysdeps/pthread/bits/libc-lock.h (__libc_maybe_call): New macro.
7318         Under [__PIC__], call the function via the pointer fetched for
7319         comparison rather than a call by name that uses the PLT.
7320         (__libc_lock_init, __libc_rwlock_init, __libc_lock_fini)
7321         (__libc_rwlock_fini, __libc_lock_lock, __libc_rwlock_rdlock)
7322         (__libc_rwlock_wrlock, __libc_lock_trylock, __libc_rwlock_tryrdlock)
7323         (__libc_rwlock_trywrlock, __libc_lock_unlock, __libc_rwlock_unlock)
7324         (__libc_key_create, __libc_getspecific, __libc_setspecific): Use it.
7325
7326 2002-12-04  Roland McGrath  <roland@redhat.com>
7327
7328         * forward.c (pthread_self): Use FORWARD3 macro to correct return type.
7329
7330         * sysdeps/i386/td_ta_map_lwp2thr.c: Moved from ../nptl_db.
7331         * sysdeps/generic/td_ta_map_lwp2thr.c: New file.
7332
7333         * pthread_create.c (start_thread): Add missing & on __nptl_last_event.
7334
7335 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
7336
7337         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Make pthread_t
7338         a completely opaque, non-integer type.
7339         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7340
7341 2002-12-05  Jakub Jelinek  <jakub@redhat.com>
7342
7343         * sysdeps/i386/tls.h: Include stdlib.h.
7344         * sysdeps/x86_64/tls.h: Likewise.
7345
7346 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
7347
7348         * Makefile (tests): Add tst-locale2.
7349         (tests-static): Likewise.
7350         * tst-locale2.c: New file.
7351
7352         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Mark asms as
7353         volatile and add memory clobbers to lock operations.
7354
7355 2002-12-03  Ulrich Drepper  <drepper@redhat.com>
7356
7357         * sysdeps/i386/i686/bits/atomic.h: Use i486 version.
7358         * sysdeps/i386/i486/bits/atomic.h: New file.
7359         * sysdeps/i386/i586/bits/atomic.h: New file.
7360         * sysdeps/i386/i686/pthread_spin_trylock.S: Define HAVE_CMOV and
7361         include i486 version.
7362         * sysdeps/i386/i486/pthread_spin_trylock.S: New file.
7363         * sysdeps/i386/i586/pthread_spin_trylock.S: New file.
7364         Patch by Marijn Ros <marijn@mad.scientist.com>.
7365
7366         * allocatestack.c (get_cached_stack): Don't crash if we first
7367         found a stack with a larger size then needed.
7368         Reported by Hui Huang <hui.huang@sun.com>.
7369
7370         * Makefile (tests): Add tst-sysconf.
7371         * tst-sysconf.c: New file.
7372
7373         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine
7374         PTHREAD_THREADS_MAX.
7375
7376 2002-12-02  Roland McGrath  <roland@redhat.com>
7377
7378         * pthreadP.h (__stack_user, __nptl_create_event, __nptl_death_event):
7379         Declare using hidden_proto instead of attribute_hidden, so there are
7380         non-.hidden static symbols for gdb to find.
7381         (__pthread_keys): Likewise.
7382         * events.c (__nptl_create_event, __nptl_death_event): Add hidden_def.
7383         * allocatestack.c (__stack_user): Likewise.
7384         * pthread_create.c (__pthread_keys): Likewise.
7385         (__nptl_threads_events, __nptl_last_event): Make these static instead
7386         of hidden.
7387         * pthread_key_create.c (__pthread_pthread_keys_max,
7388         __pthread_pthread_key_2ndlevel_size): Renamed from __linuxthreads_*.
7389
7390 2002-12-02  Ulrich Drepper  <drepper@redhat.com>
7391
7392         * Makefile (tests): Add tst-locale1.  If buid-static is yes link
7393         statically.
7394         * tst-locale1.c: New file.
7395
7396         * pthread_cond_timedwait.c: Include <stdlib.h>.
7397
7398         * Makefile (tests): Add tst-fork2 and tst-fork3.
7399         * tst-fork2.c: New file.
7400         * tst-fork3.c: New file.
7401
7402 2002-11-28  Ulrich Drepper  <drepper@redhat.com>
7403
7404         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: New file.
7405
7406         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define macros which
7407         require it to 200112L.
7408
7409         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Use cmov
7410         instruction only if HAVE_CMOV is defined.
7411         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Define HAVE_CMOV.
7412
7413         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: New file.
7414
7415         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: New file.
7416
7417         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: New file.
7418
7419         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: New file.
7420
7421 2002-11-27  Ulrich Drepper  <drepper@redhat.com>
7422
7423         * sysdeps/x86_64/bits/atomic.h: New file.
7424
7425         * sysdeps/i386/i686/bits/atomic.h: Fix asm syntax for 8- and
7426         16-bit operations.
7427
7428         * sysdeps/unix/sysv/linux/raise.c (raise): Use INTERNAL_SYSCALL if
7429         possible since gettid cannot fail.
7430
7431         * sysdeps/x86_64/pthreaddef.h: New file.
7432
7433         * sysdeps/i386/pthreaddef.h (gettid): Removed.
7434
7435         * sysdeps/x86_64/pthread_spin_init.c: New file.
7436         * sysdeps/x86_64/pthread_spin_lock.c: New file.
7437         * sysdeps/x86_64/pthread_spin_trylock.c: New file.
7438         * sysdeps/x86_64/pthread_spin_unlock.c: New file.
7439
7440         * sysdeps/i386/i686/pthread_spin_trylock.S (pthread_spin_trylock):
7441         Add missing lock prefix.  Minute optimization.
7442
7443         * tst-spin2.c (main): Also check successful trylock call.
7444
7445         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use correct
7446         syscall.  Fix typo in case INTERNAL_SYSCALL is not used.
7447
7448         * sysdeps/i386/pthread_spin_destroy.c: Moved to...
7449         * sysdeps/pthread/pthread_spin_destroy.c: ...here.  New file.
7450
7451         * sysdeps/i386/pthread_sigmask.c: Removed.  Use the generic code.
7452         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Return correct
7453         value in case of an error.  Add support for INTERNAL_SYSCALL.
7454
7455         * sysdeps/i386/pthread_sigmask.c (pthread_sigmask): Return correct
7456         value in case of an error.
7457
7458         * sysdeps/x86_64/tls.h: New file.
7459
7460 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
7461
7462         * sysdeps/i386/tls.h (THREAD_GETMEM_NC): Change interface.  It now
7463         takes the array member name and the index as parameters.
7464         (THREAD_SETMEM_NC): Likewise.
7465         * pthread_getspecific.c: Use new THREAD_GETMEM_NC interface.
7466         * pthread_setspecific.c: Use new THREAD_GETMEM_NC and THREAD_SETMEM_NC
7467         interfaces.
7468
7469         * sysdeps/i386/tls.h (THREAD_SETMEM): Use size of member element
7470         to decide which code to use.
7471         (THREAD_SETMEM_NC): Likewise.
7472
7473         * allocatestack.c (queue_stack): Don't remove stack from list here.
7474         Do it in the caller.  Correct condition to prematurely terminate
7475         loop to free stacks.
7476         (__deallocate_stack): Remove stack from list here.
7477
7478 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
7479
7480         * Makefile (tests): Add tst-stack1.
7481         * tst-stack1.c: New file.
7482
7483         * allocatestack.c (allocate_stack): Initialize the TCB on a user
7484         provided stack.
7485
7486         * pthread_attr_getstack.c: Return bottom of the thread area.
7487
7488 2002-11-25  Ulrich Drepper  <drepper@redhat.com>
7489
7490         * Makefile (libpthread-routines): Add pt-allocrtsig and
7491         pthread_kill_other_threads.
7492         * pt-allocrtsig.c: New file.
7493         * pthread_kill_other_threads.c: New file.
7494         * sysdeps/unix/sysv/linux/allocrtsig.c: Add additional aliases for
7495         all three functions.
7496         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
7497         allocrtsig.
7498         * sysdeps/unix/sysv/linux/Versions (libc:GLIBC_PRIVATE): Export
7499         __libc_current_sigrtmin_private, __libc_current_sigrtmax_private,
7500         and __libc_allocate_rtsig_private.
7501         * Versions (libpthread): Export pthread_kill_other_threads_np,
7502         __libc_current_sigrtmin, and __libc_current_sigrtmax.
7503
7504 2002-11-24  Ulrich Drepper  <drepper@redhat.com>
7505
7506         * allocatestack.c (allocate_stack): stackaddr in attribute points to
7507         the end of the stack.  Adjust computations.
7508         When mprotect call fails dequeue stack and free it.
7509         * pthread_attr_setstack.c: Store top of the stack in stackaddr
7510         attribute.
7511         * pthread_getattr_np.c: Likewise.
7512
7513         * descr.h (IS_DETACHED): Add some more parenthesis to prevent
7514         surprises.
7515
7516 2002-11-23  Ulrich Drepper  <drepper@redhat.com>
7517
7518         * sysdeps/pthread/pthread.h (pthread_self): __THROW must come before
7519         attribute definitions.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
7520
7521 2002-11-22  Ulrich Drepper  <drepper@redhat.com>
7522
7523         * pthread_getspecific.c: Optimize access to first 2nd-level array.
7524         * pthread_setspecific.c: Likewise.
7525
7526 2002-11-21  Ulrich Drepper  <drepper@redhat.com>
7527
7528         * sysdeps/unix/sysv/linux/i386/createthread.c: Remove CLONE_ flags
7529         definitions.  Get them from the official place.
7530         * sysdeps/unix/sysv/linux/i386/fork.c: Likewise.
7531
7532         * sysdeps/unix/sysv/linux/i386/createthread.c: Update CLONE_* flags.
7533         Use new CLONE_ flags in clone() calls.
7534
7535         * sysdeps/unix/sysv/linux/fork.c: Use ARCH_FORK to actually fork.
7536         * sysdeps/unix/sysv/linux/i386/fork.c: New file.
7537
7538         * Versions: Add pthread_* functions for libc.
7539         * forward.c: New file.
7540
7541         * sysdeps/pthread/Makefile (libpthread-sysdeps_routines): Add
7542         errno-loc.
7543         * herrno.c: New file.
7544         * res.c: New file.
7545
7546         * Makefile (libpthread-routines): Remove sem_post, sem_wait,
7547         sem_trywait, and sem_timedwait.  Add herrno and res.
7548         * sem_init.c: Don't initialize lock and waiters members.
7549         * sem_open.c: Likewise.
7550         * sem_post.c: Removed.
7551         * sem_wait.c: Removed.
7552         * sem_trywait.c: Removed.
7553         * sem_timedwait.c: Removed.
7554         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Complete rewrite.
7555         Includes full implementations of sem_post, sem_wait, sem_trywait,
7556         and sem_timedwait.
7557         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Adjust
7558         for new implementation.
7559         * sysdeps/unix/sysv/linux/internaltypes.h (struct sem): Remove lock
7560         and waiters fields.
7561
7562         * tst-sem3.c: Improve error message.
7563         * tst-signal3.c: Likewise.
7564
7565         * init.c (__pthread_initialize_minimal): Use set_tid_address syscall
7566         to tell the kernel about the termination futex and to initialize tid
7567         member.  Don't initialize main_thread.
7568         * descr.h (struct pthread): Remove main_thread member.
7569         * cancelllation.c (__do_cancel): Remove code handling main thread.
7570         The main thread is not special anymore.
7571
7572         * allocatestack.c (__reclaim_stacks): Mark stacks as unused.  Add
7573         size of the stacks to stack_cache_actsize.
7574
7575         * pt-readv.c: Add missing "defined".
7576         * pt-sigwait.c: Likewise.
7577         * pt-writev.c: Likewise.
7578
7579 2002-11-09  Ulrich Drepper  <drepper@redhat.com>
7580
7581         * Versions: Export __connect from libpthread.
7582         Patch by Luca Barbieri <ldb@ldb.ods.org>.
7583
7584         * Makefile (libpthread-routines): Add pt-raise.
7585         * sysdeps/unix/sysv/linux/raise.c: New file.
7586         * sysdeps/unix/sysv/linux/pt-raise.c: New file.
7587         * sysdeps/generic/pt-raise.c: New file.
7588
7589         * pthread_cond_init.c: Initialize all data elements of the condvar
7590         structure.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
7591
7592         * pthread_attr_init.c: Actually implement 2.0 compatibility version.
7593         * pthread_create.c: Likewise.
7594
7595         * Makefile (tests): Add tst-key1, tst-key2, tst-key3.
7596         * tst-key1.c: New file.
7597         * tst-key2.c: New file.
7598         * tst-key3.c: New file.
7599
7600         * Versions: Export pthread_detach for version GLIBC_2.0.
7601         Reported by Saurabh Desai <sdesai@austin.ibm.com>.
7602
7603 2002-11-08  Ulrich Drepper  <drepper@redhat.com>
7604
7605         * pthread_key_create.c: Terminate search after an unused key was found.
7606         Patch by Luca Barbieri <ldb@ldb.ods.org>.
7607
7608         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Return zero.
7609         Patch by Luca Barbieri <ldb@ldb.ods.org>.
7610
7611 2002-10-10  Ulrich Drepper  <drepper@redhat.com>
7612
7613         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Use slow generic
7614         dynamic lookup for errno in PIC.
7615
7616         * allocatestack.c (get_cached_stack): Rearrange code slightly to
7617         release the stack lock as soon as possible.
7618         Call _dl_allocate_tls_init for TCB from the cache to re-initialize
7619         the static TLS block.
7620         (allocate_stack): Call _dl_allocate_tls_init for user-provided stack.
7621
7622         * cancellation.c: Renamed from cancelation.c.
7623         * Makefile: Adjust accordingly.
7624         * pthreadP.h (CANCELLATION_P): Renamed from CANCELATION_P.
7625         * cleanup_defer.c: Use CANCELLATION_P.
7626         * pthread_testcancel.c: Likewise.
7627         * descr.h: Fix spelling in comments.
7628         * init.c: Likewise.
7629         * pthread_getattr_np.c: Likewise.
7630         * pthread_getschedparam.c: Likewise.
7631         * pthread_setschedparam.c: Likewise.
7632         * Versions: Likewise.
7633
7634         * pt-pselect.c: New file.
7635         * Makefile (libpthread-routines): Add pt-pselect.
7636         * Versions: Add pselect.
7637
7638         * tst-cancel4.c: New file.
7639         * Makefile (tests): Add tst-cancel4.
7640
7641 2002-10-09  Ulrich Drepper  <drepper@redhat.com>
7642
7643         * pthread_mutex_lock.c: Always record lock ownership.
7644         * pthread_mutex_timedlock.c: Likewise.
7645         * pthread_mutex_trylock.c: Likewise.
7646
7647         * pt-readv.c: New file.
7648         * pt-writev.c: New file.
7649         * pt-creat.c: New file.
7650         * pt-msgrcv.c: New file.
7651         * pt-msgsnd.c: New file.
7652         * pt-poll.c: New file.
7653         * pt-select.c: New file.
7654         * pt-sigpause.c: New file.
7655         * pt-sigsuspend.c: New file.
7656         * pt-sigwait.c: New file.
7657         * pt-sigwaitinfo.c: New file.
7658         * pt-waitid.c: New file.
7659         * Makefile (libpthread-routines): Add pt-readv, pt-writev, pt-creat,
7660         pt-msgrcv, pt-msgsnd, pt-poll, pt-select, pt-sigpause, pt-sigsuspend,
7661         pt-sigwait, pt-sigwaitinfo, and pt-waitid.
7662         * Versions: Add all the new functions.
7663
7664         * tst-exit1.c: New file.
7665         * Makefile (tests): Add tst-exit1.
7666
7667         * sem_timedwait.c: Minor optimization for more optimal fastpath.
7668
7669 2002-10-08  Ulrich Drepper  <drepper@redhat.com>
7670
7671         * pt-fcntl.c: Only enable asynchronous cancellation for F_SETLKW.
7672
7673         * pthread_join.c: Enable asynchronous cancellation around lll_wait_tid
7674         call.  pthread_join is an official cancellation point.
7675         * pthread_timedjoin.c: Likewise.
7676
7677         * pthread_cond_wait.c: Revert order in which internal lock are dropped
7678         and the condvar's mutex are retrieved.
7679         * pthread_cond_timedwait.c: Likewise.
7680         Reported by dice@saros.East.Sun.COM.
7681
7682 2002-10-07  Ulrich Drepper  <drepper@redhat.com>
7683
7684         * pthreadP.h: Cut out all type definitions and move them...
7685         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.  New file.
7686         * pthreadP.h: Include <internaltypes.h>.
7687
7688         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Little
7689         performance tweaks.
7690
7691         * sem_trywait.c: Shuffle #includes around to get right order.
7692         * sem_timedwait.c: Likewise.
7693         * sem_post.c: Likewise.
7694         * sem_wait.c: Likewise.
7695
7696         * nptl 0.3 released.
7697
7698         * Makefile (tests): Add tst-signal3.
7699         * tst-signal3.c: New file.
7700
7701 2002-10-05  Ulrich Drepper  <drepper@redhat.com>
7702
7703         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Tell the compiler that
7704         the asms modify the sem object.
7705         (__lll_sem_timedwait): Now takes struct sem* as first parameter.
7706
7707         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h (sem_t): Don't expose
7708         the actual members.
7709         * pthreadP.h (struct sem): New type.  Actual semaphore type.
7710         * semaphoreP.h: Include pthreadP.h.
7711         * sem_getvalue.c: Adjust to sem_t change.
7712         * sem_init.c: Likewise.
7713         * sem_open.c: Likewise.
7714         * sem_post.c: Likewise.
7715         * sem_timedwait.c: Likewise.
7716         * sem_trywait.c: Likewise.
7717         * sem_wait.c: Likewise.
7718
7719 2002-10-04  Ulrich Drepper  <drepper@redhat.com>
7720
7721         * Makefile (tests): Add tst-basic2, tst-exec1, tst-exec3, tst-exec3.
7722         * tst-basic2.c: New file.
7723         * tst-exec1.c: New file.
7724         * tst-exec2.c: New file.
7725         * tst-exec3.c: New file.
7726
7727         * tst-fork1.c: Remove extra */.
7728
7729         * nptl 0.2 released.  The API for IA-32 is complete.