Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 21 Aug 2001 02:46:26 +0000 (02:46 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 21 Aug 2001 02:46:26 +0000 (02:46 +0000)
2001-08-20  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Revert the
change of the gregset_t type.
* sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Likewise.

2001-08-20  kaz Kojima  <kkojima@rr.iij4u.or.jp>

* sysdeps/unix/sysv/linux/sh/sysdep.S: Align errno.

* posix/regex.c (truncate_wchar): Use wcrtomb not wctomb.

ChangeLog
posix/regex.c
sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h
sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h
sysdeps/unix/sysv/linux/sh/sysdep.S

index 76433d6..7cd89cb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
+2001-08-20  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Revert the
+       change of the gregset_t type.
+       * sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Likewise.
+
+2001-08-20  kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+       * sysdeps/unix/sysv/linux/sh/sysdep.S: Align errno.
+
 2001-08-20  Ulrich Drepper  <drepper@redhat.com>
 
+       * posix/regex.c (truncate_wchar): Use wcrtomb not wctomb.
+
        * string/strnlen.c: Fix the implementation.  We cannot use memchr.
 
 2001-08-18  Mark Kettenis  <kettenis@gnu.org>
index a5c35fe..facb833 100644 (file)
@@ -4627,9 +4627,16 @@ static unsigned char
 truncate_wchar (c)
      CHAR_T c;
 {
-  unsigned char buf[MB_LEN_MAX];
-  int retval = wctomb(buf, c);
-  return retval > 0 ? buf[0] : (unsigned char)c;
+  unsigned char buf[MB_CUR_MAX];
+  mbstate_t state;
+  int retval;
+  memset (&state, '\0', sizeof (state));
+# ifdef _LIBC
+  retval = __wcrtomb (buf, c, &state);
+# else
+  retval = wcrtomb (buf, c, &state);
+# endif
+  return retval > 0 ? buf[0] : (unsigned char) c;
 }
 #endif /* WCHAR */
 
index d59b885..9f2d58e 100644 (file)
@@ -39,29 +39,35 @@ typedef struct
 /* Type for a general-purpose register.  */
 typedef unsigned long greg_t;
 
-#define NGREG 16
-
-typedef greg_t gregset_t[NGREG];
+/* And the whole bunch of them.  We should have used `struct s390_regs',
+   but to avoid name space pollution and since the tradition says that
+   the register set is an array, we make gregset_t a simple array
+   that has the same size as s390_regs.  This is needed for the
+   elf_prstatus structure.  */
+#define NGREG 36
+/* Must match kernels psw_t alignment.  */
+typedef greg_t gregset_t[NGREG] __attribute__ ((aligned(8)));
 
 typedef union
-{
-  double  d;
-  float   f;
-} fpreg_t;
+  {
+    double  d;
+    float   f;
+  } fpreg_t;
 
 /* Register set for the floating-point registers.  */
-typedef struct {
-  unsigned int fpc;
-  fpreg_t fprs[16];
-} fpregset_t;
+typedef struct
+  {
+    unsigned int fpc;
+    fpreg_t fprs[16];
+  } fpregset_t;
 
 /* Context to describe whole processor state.  */
 typedef struct
   {
-    __psw_t      psw;
-    gregset_t    gregs;
+    __psw_t psw;
+    unsigned long gregs[16];
     unsigned int aregs[16];
-    fpregset_t   fpregs;
+    fpregset_t fpregs;
   } mcontext_t;
 
 /* Userlevel context.  */
index 6ce7c8a..7402199 100644 (file)
@@ -39,29 +39,35 @@ typedef struct
 /* Type for a general-purpose register.  */
 typedef unsigned long greg_t;
 
-#define NGREG 16
-
-typedef greg_t gregset_t[NGREG];
+/* And the whole bunch of them.  We should have used `struct s390_regs',
+   but to avoid name space pollution and since the tradition says that
+   the register set is an array, we make gregset_t a simple array
+   that has the same size as s390_regs.  This is needed for the
+   elf_prstatus structure.  */
+#define NGREG 27
+/* Must match kernels psw_t alignment.  */
+typedef greg_t gregset_t[NGREG] __attribute__ ((aligned(8)));
 
 typedef union
-{
-  double  d;
-  float   f;
-} fpreg_t;
+  {
+    double  d;
+    float   f;
+  } fpreg_t;
 
 /* Register set for the floating-point registers.  */
-typedef struct {
-  unsigned int fpc;
-  fpreg_t fprs[16];
-} fpregset_t;
+typedef struct
+  {
+    unsigned int fpc;
+    fpreg_t fprs[16];
+  } fpregset_t;
 
 /* Context to describe whole processor state.  */
 typedef struct
   {
-    __psw_t      psw;
-    gregset_t    gregs;
+    __psw_t psw;
+    unsigned long gregs[16];
     unsigned int aregs[16];
-    fpregset_t   fpregs;
+    fpregset_t fpregs;
   } mcontext_t;
 
 /* Userlevel context.  */
index cd7aa81..3f4b0dd 100644 (file)
@@ -21,6 +21,7 @@
 /* We define errno here, to be consistent with Linux/i386.  */
 
        .section .bss
+       .align 2
        .globl C_SYMBOL_NAME(errno)
        .type C_SYMBOL_NAME(errno), @object
        .size C_SYMBOL_NAME(errno), 4