[CRIU] [PATCH] Fix gcc9 build failures
Adrian Reber
adrian at lisas.de
Thu Jan 10 20:10:12 MSK 2019
On Thu, Jan 10, 2019 at 09:02:19AM -0800, Andrei Vagin wrote:
> On Wed, Jan 09, 2019 at 12:49:11PM +0000, Adrian Reber wrote:
> > From: Adrian Reber <areber at redhat.com>
>
> Should it be "From: Jeff Law <law at redhat.com>"?
Probably. If you want you can change it. I was not sure how interested
Jeff was in the submission process of the patch, so I just sent it out
with my usual command. If you can fix it up, please do.
> > I received this patch from Jeff Law as a fix for build failures with the
> > upcoming GCC 9. The following is Jeff Law's description of the patch:
> >
> > Attached you'll find the fix for criu. You'll see it's just a matter
> > of dropping the sp/esp clobber from the relevant asm statements. THe
> > details:
> >
> > criu has a macro which defines an asm which appears to want to set a new
> > stack pointer, then directly issue a sigreturn call to the kernel. Some
> > variants clobber sp (aarch64, arm, x86), others do not (ppc, s390)
> >
> > While the asm does indeed set a new stack pointer, we never return from
> > a sigreturn syscall -- at least not in the normal way. We actually
> > return back to the point where the process was interrupted by the
> > signal. So describing the affect of the asm on the stack pointer is
> > pedantically correct, it actually has no real effect and can just be
> > dropped to avoid the hard error from gcc-9.
> >
> > Suggested-by: Jeff Law <law at redhat.com>
> > Reviewed-by: Dmitry Safonov <0x7f454c46 at gmail.com>
> > Signed-off-by: Adrian Reber <areber at redhat.com>
> > ---
> > compel/arch/aarch64/src/lib/include/uapi/asm/sigframe.h | 2 +-
> > compel/arch/arm/src/lib/include/uapi/asm/sigframe.h | 2 +-
> > compel/arch/x86/src/lib/include/uapi/asm/sigframe.h | 4 ++--
> > 3 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/compel/arch/aarch64/src/lib/include/uapi/asm/sigframe.h b/compel/arch/aarch64/src/lib/include/uapi/asm/sigframe.h
> > index 6b511ce..6b9317b 100644
> > --- a/compel/arch/aarch64/src/lib/include/uapi/asm/sigframe.h
> > +++ b/compel/arch/aarch64/src/lib/include/uapi/asm/sigframe.h
> > @@ -39,7 +39,7 @@ struct rt_sigframe {
> > "svc #0 \n" \
> > : \
> > : "r"(new_sp) \
> > - : "sp", "x8", "memory")
> > + : "x8", "memory")
> >
> > /* cr_sigcontext is copied from arch/arm64/include/uapi/asm/sigcontext.h */
> > struct cr_sigcontext {
> > diff --git a/compel/arch/arm/src/lib/include/uapi/asm/sigframe.h b/compel/arch/arm/src/lib/include/uapi/asm/sigframe.h
> > index 3e7bc01..b90c0f6 100644
> > --- a/compel/arch/arm/src/lib/include/uapi/asm/sigframe.h
> > +++ b/compel/arch/arm/src/lib/include/uapi/asm/sigframe.h
> > @@ -73,7 +73,7 @@ struct rt_sigframe {
> > "svc #0 \n" \
> > : \
> > : "r"(new_sp) \
> > - : "sp","memory")
> > + : "memory")
> >
> > #define RT_SIGFRAME_UC(rt_sigframe) (&rt_sigframe->sig.uc)
> > #define RT_SIGFRAME_REGIP(rt_sigframe) (rt_sigframe)->sig.uc.uc_mcontext.arm_ip
> > diff --git a/compel/arch/x86/src/lib/include/uapi/asm/sigframe.h b/compel/arch/x86/src/lib/include/uapi/asm/sigframe.h
> > index 0ad45a5..c29de3b 100644
> > --- a/compel/arch/x86/src/lib/include/uapi/asm/sigframe.h
> > +++ b/compel/arch/x86/src/lib/include/uapi/asm/sigframe.h
> > @@ -162,7 +162,7 @@ struct rt_sigframe {
> > "syscall \n" \
> > : \
> > : "r"(new_sp) \
> > - : "rax","rsp","memory")
> > + : "rax","memory")
> > #define ARCH_RT_SIGRETURN_COMPAT(new_sp) \
> > asm volatile( \
> > "pushq $"__stringify(USER32_CS)" \n" \
> > @@ -176,7 +176,7 @@ struct rt_sigframe {
> > ".code64 \n" \
> > : \
> > : "rdi"(new_sp) \
> > - : "eax","esp", "r8", "r9", "r10", "r11", "memory")
> > + : "eax", "r8", "r9", "r10", "r11", "memory")
> >
> > #define ARCH_RT_SIGRETURN(new_sp, rt_sigframe) \
> > do { \
> > --
> > 1.8.3.1
> >
More information about the CRIU
mailing list