diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-08-21 02:46:26 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-08-21 02:46:26 +0000 |
commit | 62ed552b937bc0367df22207d316c14614e94421 (patch) | |
tree | 37e896a9a61df77491c91daebd19caa0c1e7dd24 | |
parent | 3f1c767d1e3454e190ab6f3afa101911dbf21f2f (diff) | |
download | glibc-62ed552b937bc0367df22207d316c14614e94421.zip glibc-62ed552b937bc0367df22207d316c14614e94421.tar.gz glibc-62ed552b937bc0367df22207d316c14614e94421.tar.bz2 |
Update.
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.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | posix/regex.c | 13 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h | 34 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h | 34 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/sysdep.S | 1 |
5 files changed, 63 insertions, 31 deletions
@@ -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 a5c35fe..facb833 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 d59b885..9f2d58e 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 6ce7c8a..7402199 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 cd7aa81..3f4b0dd 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 |