* sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_xxx_8_int): ...
authorRichard Henderson <rth@redhat.com>
Tue, 13 Jan 2004 09:15:58 +0000 (09:15 +0000)
committerRichard Henderson <rth@redhat.com>
Tue, 13 Jan 2004 09:15:58 +0000 (09:15 +0000)
        * sysdeps/unix/alpha/sysdep.h: Select inline_syscall_r0_asm
        based on HAVE___THREAD instead of USE_TLS.

        * sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIMEX32): New.
        (__adjtimex_tv64): Use it.

        * sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Cast
        to void* rather than directly to the compatibility structure type.
        * sysdeps/unix/sysv/linux/alpha/shmctl.c (__new_shmctl): Likewise.

        * sysdeps/unix/sysv/linux/alpha/sigaction.c (struct kernel_sigaction):
        Forward declare.
* sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_xxx_8_int):
Cast old up to uint64_t before back down to inner width.
(__arch_compare_and_exchange_xxx_16_int): Likewise.
(__arch_compare_and_exchange_xxx_32_int): Likewise.
(__arch_compare_and_exchange_xxx_64_int): Likewise.
(__arch_compare_and_exchange_val_8_int): Cast result to
the type of the memory.
(__arch_compare_and_exchange_val_16_int): Likewise.
(__arch_compare_and_exchange_val_32_int): Likewise.
(__arch_compare_and_exchange_val_64_int): Likewise.
(atomic_compare_and_exchange_bool_acq): Use __atomic_bool_bysize.
(atomic_compare_and_exchange_bool_rel): Likewise.

* sysdeps/unix/alpha/sysdep.h: Select inline_syscall_r0_asm
based on HAVE___THREAD instead of USE_TLS.

* sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIMEX32): New.
(__adjtimex_tv64): Use it.

* sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Cast
to void* rather than directly to the compatibility structure type.
* sysdeps/unix/sysv/linux/alpha/shmctl.c (__new_shmctl): Likewise.

* sysdeps/unix/sysv/linux/alpha/sigaction.c (struct kernel_sigaction):
Forward declare.

2004-01-13  Richard Henderson  <rth@redhat.com>

    Paolo Bonzini  <bonzini@gnu.org>
Compare the node sets after all the other comparisons.
the old thread-m.h header too.

ChangeLog
sysdeps/alpha/bits/atomic.h
sysdeps/alpha/fpu/bits/mathdef.h
sysdeps/unix/alpha/sysdep.h
sysdeps/unix/sysv/linux/alpha/adjtime.c
sysdeps/unix/sysv/linux/alpha/semctl.c
sysdeps/unix/sysv/linux/alpha/shmctl.c
sysdeps/unix/sysv/linux/alpha/sigaction.c

index 71f1e12..a423abf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,33 @@
 2004-01-13  Richard Henderson  <rth@redhat.com>
 
+       * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_xxx_8_int):
+       Cast old up to uint64_t before back down to inner width.
+       (__arch_compare_and_exchange_xxx_16_int): Likewise.
+       (__arch_compare_and_exchange_xxx_32_int): Likewise.
+       (__arch_compare_and_exchange_xxx_64_int): Likewise.
+       (__arch_compare_and_exchange_val_8_int): Cast result to
+       the type of the memory.
+       (__arch_compare_and_exchange_val_16_int): Likewise.
+       (__arch_compare_and_exchange_val_32_int): Likewise.
+       (__arch_compare_and_exchange_val_64_int): Likewise.
+       (atomic_compare_and_exchange_bool_acq): Use __atomic_bool_bysize.
+       (atomic_compare_and_exchange_bool_rel): Likewise.
+
+       * sysdeps/unix/alpha/sysdep.h: Select inline_syscall_r0_asm
+       based on HAVE___THREAD instead of USE_TLS.
+
+       * sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIMEX32): New.
+       (__adjtimex_tv64): Use it.
+
+       * sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Cast
+       to void* rather than directly to the compatibility structure type.
+       * sysdeps/unix/sysv/linux/alpha/shmctl.c (__new_shmctl): Likewise.
+
+       * sysdeps/unix/sysv/linux/alpha/sigaction.c (struct kernel_sigaction):
+       Forward declare.
+
+2004-01-13  Richard Henderson  <rth@redhat.com>
+
        * Versions.def (libm): Add GLIBC_2.3.3.
        * sysdeps/alpha/fpu/Versions: Add __c1_c*f and c*f to GLIBC_2.3.3.
        * sysdeps/alpha/fpu/cabsf.c, sysdeps/alpha/fpu/cargf.c,
        with non-GCC compilers by hiding attributes.
 
 2003-12-16  Jakub Jelinek  <jakub@redhat.com>
-            Paolo Bonzini  <bonzini@gnu.org>
+           Paolo Bonzini  <bonzini@gnu.org>
 
        * posix/regexec.c (group_nodes_into_DFAstates): Never produce
        dests_ch items that are empty.
 2003-12-14  Paolo Bonzini  <bonzini@gnu.org>
 
        * posix/regex_internal.c (re_acquire_state_context):
-        Compare the node sets after all the other comparisons.
+       Compare the node sets after all the other comparisons.
 
 2003-12-13  Paolo Bonzini  <bonzini@gnu.org>
 
 2003-10-02  Jeroen Dekkers  <jeroen@dekkers.cx>
 
        * sysdeps/mach/hurd/malloc-machine.h: Copy the tsd code from
-        the old thread-m.h header too.
+       the old thread-m.h header too.
 
 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
 
index 073e650..36a740c 100644 (file)
@@ -78,7 +78,7 @@ typedef uintmax_t uatomic_max_t;
          [__cmp] "=&r" (__cmp),                                        \
          [__addr64] "=&r" (__addr64)                                   \
        : [__addr8] "r" (mem),                                          \
-         [__old] "Ir" ((uint64_t)(uint8_t)(old)),                      \
+         [__old] "Ir" ((uint64_t)(uint8_t)(uint64_t)(old)),            \
          [__new] "r" (new)                                             \
        : "memory");                                                    \
 })
@@ -106,7 +106,7 @@ typedef uintmax_t uatomic_max_t;
          [__cmp] "=&r" (__cmp),                                        \
          [__addr64] "=&r" (__addr64)                                   \
        : [__addr16] "r" (mem),                                         \
-         [__old] "Ir" ((uint64_t)(uint16_t)(old)),                     \
+         [__old] "Ir" ((uint64_t)(uint16_t)(uint64_t)(old)),           \
          [__new] "r" (new)                                             \
        : "memory");                                                    \
 })
@@ -126,7 +126,7 @@ typedef uintmax_t uatomic_max_t;
        : [__prev] "=&r" (__prev),                                      \
          [__cmp] "=&r" (__cmp)                                         \
        : [__mem] "m" (*(mem)),                                         \
-         [__old] "Ir" ((uint64_t)(atomic32_t)(old)),                   \
+         [__old] "Ir" ((uint64_t)(atomic32_t)(uint64_t)(old)),         \
          [__new] "Ir" (new)                                            \
        : "memory");                                                    \
 })
@@ -146,7 +146,7 @@ typedef uintmax_t uatomic_max_t;
        : [__prev] "=&r" (__prev),                                      \
          [__cmp] "=&r" (__cmp)                                         \
        : [__mem] "m" (*(mem)),                                         \
-         [__old] "Ir" (old),                                           \
+         [__old] "Ir" ((uint64_t)(old)),                               \
          [__new] "Ir" (new)                                            \
        : "memory");                                                    \
 })
@@ -179,28 +179,28 @@ typedef uintmax_t uatomic_max_t;
 #define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2);     \
-   __prev; })
+   (typeof (*mem))__prev; })
 
 #define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2);    \
-   __prev; })
+   (typeof (*mem))__prev; })
 
 #define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2);    \
-   __prev; })
+   (typeof (*mem))__prev; })
 
 #define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2);    \
-   __prev; })
+   (typeof (*mem))__prev; })
 
 /* Compare and exchange with "acquire" semantics, ie barrier after.  */
 
 #define atomic_compare_and_exchange_bool_acq(mem, new, old)    \
-  __atomic_val_bysize (__arch_compare_and_exchange_bool, int,  \
-                      mem, new, old, "", __MB)
+  __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \
+                       mem, new, old, "", __MB)
 
 #define atomic_compare_and_exchange_val_acq(mem, new, old)     \
   __atomic_val_bysize (__arch_compare_and_exchange_val, int,   \
@@ -209,8 +209,8 @@ typedef uintmax_t uatomic_max_t;
 /* Compare and exchange with "release" semantics, ie barrier before.  */
 
 #define atomic_compare_and_exchange_bool_rel(mem, new, old)    \
-  __atomic_val_bysize (__arch_compare_and_exchange_bool, int,  \
-                      mem, new, old, __MB, "")
+  __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \
+                       mem, new, old, __MB, "")
 
 #define atomic_compare_and_exchange_val_rel(mem, new, old)     \
   __atomic_val_bysize (__arch_compare_and_exchange_val, int,   \
index 515b93a..7979822 100644 (file)
@@ -61,10 +61,34 @@ typedef double double_t;
 # define FP_ILOGB0     (-2147483647)
 # define FP_ILOGBNAN   (2147483647)
 
-#endif /* ISO C99 */
+#endif /* ISO C99 && MATH_H */
 
 #ifndef __NO_LONG_DOUBLE_MATH
 /* Signal that we do not really have a `long double'.  The disables the
    declaration of all the `long double' function variants.  */
 # define __NO_LONG_DOUBLE_MATH 1
 #endif
+
+#if defined _COMPLEX_H && !defined _COMPLEX_H_MATHDEF
+# define _COMPLEX_H_MATHDEF 1
+# if defined(__GNUC__) && !__GNUC_PREREQ(3,4)
+
+/* Due to an ABI change, we need to remap the complex float symbols.  */
+#  define _Mdouble_            float
+#  define __MATHCALL(function, args) \
+    __MATHDECL (_Complex float, function, args)
+#  define __MATHDECL(type, function, args) \
+    __MATHDECL_1(type, function##f, args, __c1_##function##f); \
+    __MATHDECL_1(type, __##function##f, args, __c1_##function##f)
+#  define __MATHDECL_1(type, function, args, alias) \
+    extern type function args __asm__(#alias) __THROW
+
+#  include <bits/cmathcalls.h>
+
+#  undef _Mdouble_
+#  undef __MATHCALL
+#  undef __MATHDECL
+#  undef __MATHDECL_1
+
+# endif /* GNUC before 3.4 */
+#endif /* COMPLEX_H */
index f12edef..26cf918 100644 (file)
@@ -205,7 +205,7 @@ __LABEL(name)                                               \
    output.  We don't do this unconditionally to allow compilation with
    older compilers.  */
 
-#ifdef USE_TLS
+#ifdef HAVE___THREAD
 #define inline_syscall_r0_asm
 #define inline_syscall_r0_out_constraint       "=v"
 #else
index 69f63d4..e036896 100644 (file)
@@ -60,6 +60,7 @@ struct timex32 {
 #define TIMEX          timex32
 #define ADJTIME                __adjtime_tv32
 #define ADJTIMEX(x)    INLINE_SYSCALL (old_adjtimex, 1, x)
+#define ADJTIMEX32(x)  INLINE_SYSCALL (old_adjtimex, 1, x)
 #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
 #define LINKAGE
 #else
@@ -180,7 +181,7 @@ __adjtimex_tv64 (struct timex *tx)
       tx32.errcnt = tx->errcnt;
       tx32.stbcnt = tx->stbcnt;
 
-      ret = __adjtimex_tv32 (&tx32);
+      ret = ADJTIMEX32 (&tx32);
       if (ret == 0)
        {
          tx->modes = tx32.modes;
index 224baf3..6925c3f 100644 (file)
@@ -97,7 +97,7 @@ __new_semctl (int semid, int semnum, int cmd, ...)
 
     __set_errno(save_errno);
     buf = arg.buf;
-    arg.buf = (struct semid_ds *)&old;
+    arg.buf = (void *)&old;
     if (cmd == IPC_SET)
       {
        old.sem_perm.uid = buf->sem_perm.uid;
index 7dec3a7..4a9d944 100644 (file)
@@ -116,7 +116,7 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
       }
     else if (result != -1 && cmd == IPC_INFO)
       {
-       struct __old_shminfo *oldi = (struct __old_shminfo *)&old;
+       struct __old_shminfo *oldi = (void *)&old;
        struct shminfo *i = (struct shminfo *)buf;
 
        memset(i, 0, sizeof(*i));
index 952ee40..21a2063 100644 (file)
@@ -30,6 +30,7 @@
          ? __syscall_rt_sigaction(args)         \
          : INLINE_SYSCALL1(name, nr, args))
 
+struct kernel_sigaction;
 extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
                                   struct kernel_sigaction *__unbounded, size_t);