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