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