aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--posix/regex.c13
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h34
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h34
-rw-r--r--sysdeps/unix/sysv/linux/sh/sysdep.S1
5 files changed, 63 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 76433d674e..7cd89cb909 100644
--- 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>
diff --git a/posix/regex.c b/posix/regex.c
index a5c35fecd2..facb833f58 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -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 */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h
index d59b885f15..9f2d58e2a8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h
@@ -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. */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h
index 6ce7c8a1ee..7402199d1f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h
@@ -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. */
diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.S b/sysdeps/unix/sysv/linux/sh/sysdep.S
index cd7aa81792..3f4b0dd0a2 100644
--- a/sysdeps/unix/sysv/linux/sh/sysdep.S
+++ b/sysdeps/unix/sysv/linux/sh/sysdep.S
@@ -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