+2005-05-19 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/unix/clock_gettime.c (clock_gettime): Fix typo around
+ CLOCK_REALTIME.
+
+ * sysdeps/ia64/bits/atomic.h (__arch_compare_and_exchange_bool_32_acq,
+ __arch_compare_and_exchange_bool_64_acq,
+ __arch_compare_and_exchange_val_32_acq,
+ __arch_compare_and_exchange_val_64_acq, atomic_exchange_and_add):
+ Use __sync builtin without _si or _di suffix.
+
+2005-05-19 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #955]
+ * iconvdata/ibm939.c (BODY): Avoid segfaults with input characters
+ <UFFFF> and above.
+
+2005-05-17 Andreas Schwab <schwab@suse.de>
+
+ * sysdeps/unix/sysv/linux/clock_getcpuclockid.c
+ (clock_getcpuclockid): Always return a defined value.
+
2005-05-17 Neal H. Walfield <neal@gnu.org>
* sysdeps/posix/getaddrinfo.c (gaih_local): Check [_HAVE_SA_LEN]
/* Conversion to and from IBM939.
- Copyright (C) 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 2000-2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Masahide Washizawa <washi@yamato.ibm.co.jp>, 2000.
if (__builtin_expect (ch >= 0xffff, 0)) \
{ \
UNICODE_TAG_HANDLER (ch, 4); \
- rp1 = NULL; \
- rp2 = NULL; \
+ goto ibm939_invalid_char; \
} \
- else \
- while (ch > rp1->end) \
- ++rp1; \
+ \
+ while (ch > rp1->end) \
+ ++rp1; \
\
/* Use the UCS4 table for single byte. */ \
- if (__builtin_expect (rp1 == NULL, 0) \
- || __builtin_expect (ch < rp1->start, 0) \
+ if (__builtin_expect (ch < rp1->start, 0) \
|| (cp = __ucs4_to_ibm939sb[ch + rp1->idx], \
__builtin_expect (cp[0], L'\1') == L'\0' && ch != '\0')) \
{ \
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
- || __builtin_expect (ch < rp2->start, 0) \
+ if (__builtin_expect (ch < rp2->start, 0) \
|| (cp = __ucs4_to_ibm939db[ch + rp2->idx], \
__builtin_expect (cp[0], L'\1')==L'\0' && ch != '\0')) \
{ \
/* This is an illegal character. */ \
+ ibm939_invalid_char: \
STANDARD_TO_LOOP_ERR_HANDLER (4); \
} \
else \
{
int *p = (int *) lock;
- while (__builtin_expect (__sync_val_compare_and_swap_si (p, 0, 1), 0))
+ while (__builtin_expect (__sync_val_compare_and_swap (p, 0, 1), 0))
{
/* Spin without using the atomic instruction. */
do
int
__pthread_spin_trylock (pthread_spinlock_t *lock)
{
- return __sync_val_compare_and_swap_si ((int *) lock, 0, 1) == 0 ? 0 : EBUSY;
+ return __sync_val_compare_and_swap ((int *) lock, 0, 1) == 0 ? 0 : EBUSY;
}
weak_alias (__pthread_spin_trylock, pthread_spin_trylock)
+2005-05-19 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use
+ __sync_val_compare_and_swap, not explicit _si variant.
+ * sysdeps/ia64/pthread_spin_trylock.c (pthread_spin_trylock): Likewise.
+
2005-05-03 Ulrich Drepper <drepper@redhat.com>
[BZ #915]
{
int *p = (int *) lock;
- while (__builtin_expect (__sync_val_compare_and_swap_si (p, 0, 1), 0))
+ while (__builtin_expect (__sync_val_compare_and_swap (p, 0, 1), 0))
{
/* Spin without using the atomic instruction. */
do
pthread_spin_trylock (lock)
pthread_spinlock_t *lock;
{
- return __sync_val_compare_and_swap_si ((int *) lock, 0, 1) == 0 ? 0 : EBUSY;
+ return __sync_val_compare_and_swap ((int *) lock, 0, 1) == 0 ? 0 : EBUSY;
}
(abort (), 0)
#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
- (!__sync_bool_compare_and_swap_si ((void *) (mem), (int) (long) (oldval), \
- (int) (long) (newval)))
+ (!__sync_bool_compare_and_swap ((mem), (int) (long) (oldval), \
+ (int) (long) (newval)))
#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
- (!__sync_bool_compare_and_swap_di ((void *) (mem), (long) (oldval), \
- (long) (newval)))
+ (!__sync_bool_compare_and_swap ((mem), (long) (oldval), \
+ (long) (newval)))
#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
(abort (), (__typeof (*mem)) 0)
(abort (), (__typeof (*mem)) 0)
#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
- __sync_val_compare_and_swap_si ((void *) (mem), (int) (long) (oldval), \
- (int) (long) (newval))
+ __sync_val_compare_and_swap ((mem), (int) (long) (oldval), \
+ (int) (long) (newval))
#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
- __sync_val_compare_and_swap_di ((void *) (mem), (long) (oldval), \
- (long) (newval))
+ __sync_val_compare_and_swap ((mem), (long) (oldval), (long) (newval))
/* Atomically store newval and return the old value. */
#define atomic_exchange_acq(mem, value) \
#define atomic_exchange_rel(mem, value) \
(__sync_synchronize (), __sync_lock_test_and_set (mem, value))
-
#define atomic_exchange_and_add(mem, value) \
({ __typeof (*mem) __result; \
- if (sizeof (*mem) == 4) \
- __result = __sync_fetch_and_add_si ((void *) (mem), (int) (value)); \
- else if (sizeof (*mem) == 8) \
- __result = __sync_fetch_and_add_di ((void *) (mem), (long) (value)); \
- else \
- abort (); \
+ __result = __sync_fetch_and_add ((mem), (int) (value)); \
__result; })
#define atomic_decrement_if_positive(mem) \
/* clock_gettime -- Get the current time from a POSIX clockid_t. Unix version.
- Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
+ Copyright (C) 1999-2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
SYSDEP_GETTIME;
#endif
-#ifndef HANDLED_REALTIME
+#ifdef HANDLED_REALTIME
case CLOCK_REALTIME:
HANDLE_REALTIME;
break;