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.
This commit is contained in:
Ulrich Drepper 2001-08-21 02:46:26 +00:00
parent 3f1c767d1e
commit 62ed552b93
5 changed files with 63 additions and 31 deletions

View File

@ -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>

View 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 */

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

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

View 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