Message ID | alpine.DEB.2.20.1611072317460.23588@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
On Mon, Nov 07, 2016 at 11:18:32PM +0000, Joseph Myers wrote: > As discussed in the thread starting at > <https://sourceware.org/ml/libc-alpha/2015-06/msg00657.html>, there > are various problems with the sigcontext / mcontext / ucontext > structures on SH. The soft-float SH4 case in fact does not build at > present, with errors processing > sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym with gen-as-const.awk > ("error: 'mcontext_t {aka struct <anonymous>}' has no member named > 'fpregs'"). > > Linux 4.8 (commit bbe6c77857c38f4acbdc4fc70399515226d1859a) moved to > always using the same sigcontext structure on SH, with room for > floating-point registers whether or not present on the processor. > This patch makes the glibc header match. > > Tested (compilation only) for sh4-linux-gnu hard float, and in > conjunction with other fixes for soft float. > > 2016-11-07 Joseph Myers <joseph@codesourcery.com> > > * sysdeps/unix/sysv/linux/sh/sys/ucontext.h [__SH4__ || __SH4A__]: > Make code unconditional. > [!(__SH4__ || __SH4A__)]: Remove conditional code. > > diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h > index 2c5fa04..4ee0b28 100644 > --- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h > +++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h > @@ -76,7 +76,6 @@ enum > }; > #endif > > -#if (defined(__SH4__) || defined(__SH4A__)) > typedef int freg_t; > > /* Number of FPU registers. */ > @@ -102,20 +101,6 @@ typedef struct > unsigned int fpul; > unsigned int ownedfp; > } mcontext_t; > -#else > -/* Context to describe whole processor state. */ > -typedef struct > - { > - unsigned int oldmask; > - gregset_t gregs; > - unsigned int pc; > - unsigned int pr; > - unsigned int sr; > - unsigned int gbr; > - unsigned int mach; > - unsigned int macl; > - } mcontext_t; > -#endif /* __SH_FPU_ANY__ */ > > /* Userlevel context. */ > typedef struct ucontext I haven't tested the patch, but it looks like the change I expected/hoped to see glibc make when working on the kernel side. Thanks. Rich
Ping. This patch <https://sourceware.org/ml/libc-alpha/2016-11/msg00256.html> is pending review.
On 07 Nov 2016 23:18, Joseph Myers wrote: > As discussed in the thread starting at > <https://sourceware.org/ml/libc-alpha/2015-06/msg00657.html>, there > are various problems with the sigcontext / mcontext / ucontext > structures on SH. The soft-float SH4 case in fact does not build at > present, with errors processing > sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym with gen-as-const.awk > ("error: 'mcontext_t {aka struct <anonymous>}' has no member named > 'fpregs'"). > > Linux 4.8 (commit bbe6c77857c38f4acbdc4fc70399515226d1859a) moved to > always using the same sigcontext structure on SH, with room for > floating-point registers whether or not present on the processor. > This patch makes the glibc header match. > > Tested (compilation only) for sh4-linux-gnu hard float, and in > conjunction with other fixes for soft float. lgtm -mike
diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h index 2c5fa04..4ee0b28 100644 --- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h @@ -76,7 +76,6 @@ enum }; #endif -#if (defined(__SH4__) || defined(__SH4A__)) typedef int freg_t; /* Number of FPU registers. */ @@ -102,20 +101,6 @@ typedef struct unsigned int fpul; unsigned int ownedfp; } mcontext_t; -#else -/* Context to describe whole processor state. */ -typedef struct - { - unsigned int oldmask; - gregset_t gregs; - unsigned int pc; - unsigned int pr; - unsigned int sr; - unsigned int gbr; - unsigned int mach; - unsigned int macl; - } mcontext_t; -#endif /* __SH_FPU_ANY__ */ /* Userlevel context. */ typedef struct ucontext