+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>
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 */
/* 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. */
/* 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. */
/* 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