mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-12 16:20:06 +00:00
[BZ #955]
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.
This commit is contained in:
parent
572215377f
commit
363dd97627
22
ChangeLog
22
ChangeLog
@ -1,3 +1,25 @@
|
||||
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]
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@ -200,16 +200,14 @@ enum
|
||||
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')) \
|
||||
{ \
|
||||
@ -217,12 +215,12 @@ enum
|
||||
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 \
|
||||
|
@ -31,7 +31,7 @@ __pthread_spin_lock (pthread_spinlock_t *lock)
|
||||
{
|
||||
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
|
||||
@ -46,7 +46,7 @@ weak_alias (__pthread_spin_lock, pthread_spin_lock)
|
||||
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)
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
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]
|
||||
|
@ -25,7 +25,7 @@ pthread_spin_lock (lock)
|
||||
{
|
||||
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
|
||||
|
@ -24,5 +24,5 @@ int
|
||||
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;
|
||||
}
|
||||
|
@ -52,12 +52,12 @@ typedef uintmax_t uatomic_max_t;
|
||||
(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)
|
||||
@ -66,12 +66,11 @@ typedef uintmax_t uatomic_max_t;
|
||||
(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) \
|
||||
@ -80,15 +79,9 @@ typedef uintmax_t uatomic_max_t;
|
||||
#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) \
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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
|
||||
@ -100,7 +100,7 @@ clock_gettime (clockid_t clock_id, struct timespec *tp)
|
||||
SYSDEP_GETTIME;
|
||||
#endif
|
||||
|
||||
#ifndef HANDLED_REALTIME
|
||||
#ifdef HANDLED_REALTIME
|
||||
case CLOCK_REALTIME:
|
||||
HANDLE_REALTIME;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user