Added patch for gcc-9

This commit is contained in:
Adrian Reber 2019-01-19 12:24:24 +01:00
parent 86762e340e
commit dad384b2d1
Failed to extract signature
2 changed files with 87 additions and 1 deletions

View File

@ -0,0 +1,81 @@
From 17271599cc8328c0d4418daaed1caebd123e425e Mon Sep 17 00:00:00 2001
From: Jeff Law <law@redhat.com>
Date: Wed, 9 Jan 2019 12:49:11 +0000
Subject: [PATCH] Fix gcc9 build failures
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@redhat.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Signed-off-by: Adrian Reber <areber@redhat.com>
Signed-off-by: Andrei Vagin <avagin@gmail.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 6b511ce0c5..6b9317b040 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 3e7bc01049..b90c0f6590 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 0ad45a539b..c29de3bd58 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 { \

View File

@ -12,7 +12,7 @@
Name: criu
Version: 3.11
Release: 1%{?dist}
Release: 2%{?dist}
Provides: crtools = %{version}-%{release}
Obsoletes: crtools <= 1.0-2
Summary: Tool for Checkpoint/Restore in User-space
@ -20,6 +20,7 @@ Group: System Environment/Base
License: GPLv2
URL: http://criu.org/
Source0: http://download.openvz.org/criu/criu-%{version}.tar.bz2
Patch0: https://github.com/checkpoint-restore/criu/commit/17271599cc8328c0d4418daaed1caebd123e425e.patch
%if 0%{?rhel} && 0%{?rhel} <= 7
BuildRequires: perl
@ -91,6 +92,7 @@ their content in human-readable form.
%prep
%setup -q
%patch0 -p1
%if 0%{?rhel} && 0%{?rhel} <= 7
%patch100 -p1
@ -164,6 +166,9 @@ rm -rf $RPM_BUILD_ROOT%{_libexecdir}/%{name}
%changelog
* Sat Jan 19 2019 Adrian Reber <adrian@lisas.de> - 3.11-2
- Added patch for gcc-9
* Tue Nov 06 2018 Adrian Reber <adrian@lisas.de> - 3.11-1
- Updated to 3.11
- Removed upstreamed patches