Message ID | 1341495164-16915-1-git-send-email-rjones@redhat.com |
---|---|
State | New |
Headers | show |
On 5 July 2012 14:32, Richard W.M. Jones <rjones@redhat.com> wrote: > From: "Richard W.M. Jones" <rjones@redhat.com> > > glibc 2.16 will remove the undocumented definition of 'struct siginfo' > from <bits/siginfo.h>. Progress marches on, trampling all in its wake. > This change is already present in glibc 2.15.90, so qemu compilation > of certain targets (eg. cris-user) breaks. > > This struct was always typedef'd to be the same as 'siginfo_t' which > is what POSIX documents, so use that instead. > > Signed-off-by: Richard W.M. Jones <rjones@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -- PMM
On Thu, Jul 05, 2012 at 03:16:12PM +0100, Peter Maydell wrote: > On 5 July 2012 14:32, Richard W.M. Jones <rjones@redhat.com> wrote: > > From: "Richard W.M. Jones" <rjones@redhat.com> > > > > glibc 2.16 will remove the undocumented definition of 'struct siginfo' > > from <bits/siginfo.h>. > > Progress marches on, trampling all in its wake. Hey, don't shoot the messenger :-) > > This change is already present in glibc 2.15.90, so qemu compilation > > of certain targets (eg. cris-user) breaks. > > > > This struct was always typedef'd to be the same as 'siginfo_t' which > > is what POSIX documents, so use that instead. > > > > Signed-off-by: Richard W.M. Jones <rjones@redhat.com> > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Thanks, Rich.
On Thu, Jul 05, 2012 at 02:32:44PM +0100, Richard W.M. Jones wrote: > From: "Richard W.M. Jones" <rjones@redhat.com> > > glibc 2.16 will remove the undocumented definition of 'struct siginfo' > from <bits/siginfo.h>. > > This change is already present in glibc 2.15.90, so qemu compilation > of certain targets (eg. cris-user) breaks. > > This struct was always typedef'd to be the same as 'siginfo_t' which > is what POSIX documents, so use that instead. > > Signed-off-by: Richard W.M. Jones <rjones@redhat.com> > --- > linux-user/signal.c | 8 ++++---- > user-exec.c | 2 +- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index 43346dc..108dff9 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -2849,7 +2849,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka, > * Arguments to signal handler: > * > * a0 = signal number > - * a1 = pointer to struct siginfo > + * a1 = pointer to siginfo_t > * a2 = pointer to struct ucontext > * > * $25 and PC point to the signal handler, $29 points to the > @@ -3255,7 +3255,7 @@ struct target_signal_frame { > }; > > struct rt_signal_frame { > - struct siginfo info; > + siginfo_t info; > struct ucontext uc; > uint32_t tramp[2]; > }; > @@ -3474,9 +3474,9 @@ struct target_signal_frame { > }; > > struct rt_signal_frame { > - struct siginfo *pinfo; > + siginfo_t *pinfo; > void *puc; > - struct siginfo info; > + siginfo_t info; > struct ucontext uc; > uint8_t retcode[8]; /* Trampoline code. */ > }; > diff --git a/user-exec.c b/user-exec.c > index b2a4261..1a9c276 100644 > --- a/user-exec.c > +++ b/user-exec.c > @@ -588,7 +588,7 @@ int cpu_signal_handler(int host_signum, void *pinfo, > int cpu_signal_handler(int host_signum, void *pinfo, > void *puc) > { > - struct siginfo *info = pinfo; > + siginfo_t *info = pinfo; > struct ucontext *uc = puc; > unsigned long pc = uc->uc_mcontext.sc_iaoq[0]; > uint32_t insn = *(uint32_t *)pc; > -- > 1.7.10.4 > Any news on this? Pretty obvious fix if you're using the new glibc ... Rich.
On 9 July 2012 17:50, Richard W.M. Jones <rjones@redhat.com> wrote: > On Thu, Jul 05, 2012 at 02:32:44PM +0100, Richard W.M. Jones wrote: >> From: "Richard W.M. Jones" <rjones@redhat.com> >> >> glibc 2.16 will remove the undocumented definition of 'struct siginfo' >> from <bits/siginfo.h>. >> >> This change is already present in glibc 2.15.90, so qemu compilation >> of certain targets (eg. cris-user) breaks. >> >> This struct was always typedef'd to be the same as 'siginfo_t' which >> is what POSIX documents, so use that instead. > Any news on this? Pretty obvious fix if you're using the new glibc ... 4 days would be pretty fast for getting a patch committed, and I think aliguori is either asleep or on holiday this past week or so :-) -- PMM
diff --git a/linux-user/signal.c b/linux-user/signal.c index 43346dc..108dff9 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -2849,7 +2849,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka, * Arguments to signal handler: * * a0 = signal number - * a1 = pointer to struct siginfo + * a1 = pointer to siginfo_t * a2 = pointer to struct ucontext * * $25 and PC point to the signal handler, $29 points to the @@ -3255,7 +3255,7 @@ struct target_signal_frame { }; struct rt_signal_frame { - struct siginfo info; + siginfo_t info; struct ucontext uc; uint32_t tramp[2]; }; @@ -3474,9 +3474,9 @@ struct target_signal_frame { }; struct rt_signal_frame { - struct siginfo *pinfo; + siginfo_t *pinfo; void *puc; - struct siginfo info; + siginfo_t info; struct ucontext uc; uint8_t retcode[8]; /* Trampoline code. */ }; diff --git a/user-exec.c b/user-exec.c index b2a4261..1a9c276 100644 --- a/user-exec.c +++ b/user-exec.c @@ -588,7 +588,7 @@ int cpu_signal_handler(int host_signum, void *pinfo, int cpu_signal_handler(int host_signum, void *pinfo, void *puc) { - struct siginfo *info = pinfo; + siginfo_t *info = pinfo; struct ucontext *uc = puc; unsigned long pc = uc->uc_mcontext.sc_iaoq[0]; uint32_t insn = *(uint32_t *)pc;