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