Fix compiletest with newer (local-rebuild) libtest
Fix ARM EHABI unwinding
This commit is contained in:
parent
f88be12b0c
commit
f1f40ebcbe
32
0001-Compiletest-bump-to-stage0-bootstrap-libtest.patch
Normal file
32
0001-Compiletest-bump-to-stage0-bootstrap-libtest.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From f6832adadb84364ce0c81fa02910b3706f441abc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Rousskov <mark.simulacrum@gmail.com>
|
||||||
|
Date: Wed, 6 Nov 2019 15:17:02 -0500
|
||||||
|
Subject: [PATCH] Compiletest bump to stage0 bootstrap libtest
|
||||||
|
|
||||||
|
---
|
||||||
|
src/tools/compiletest/src/main.rs | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs
|
||||||
|
index 34435819a2c4..b115539b4af3 100644
|
||||||
|
--- a/src/tools/compiletest/src/main.rs
|
||||||
|
+++ b/src/tools/compiletest/src/main.rs
|
||||||
|
@@ -568,6 +568,7 @@ pub fn test_opts(config: &Config) -> test::TestOpts {
|
||||||
|
skip: vec![],
|
||||||
|
list: false,
|
||||||
|
options: test::Options::new(),
|
||||||
|
+ time_options: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -703,6 +704,7 @@ pub fn make_test(config: &Config, testpaths: &TestPaths) -> Vec<test::TestDescAn
|
||||||
|
ignore,
|
||||||
|
should_panic,
|
||||||
|
allow_fail: false,
|
||||||
|
+ test_type: test::TestType::Unknown,
|
||||||
|
},
|
||||||
|
testfn: make_test_closure(config, early_props.ignore, testpaths, revision),
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
@ -0,0 +1,52 @@
|
|||||||
|
From b6fd4598c5367e78b5841fd99412484f0e86fc21 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Amanieu d'Antras <amanieu@gmail.com>
|
||||||
|
Date: Wed, 1 Jan 2020 17:11:45 +0100
|
||||||
|
Subject: [PATCH] Update the barrier cache during ARM EHABI unwinding
|
||||||
|
|
||||||
|
---
|
||||||
|
src/libpanic_unwind/gcc.rs | 8 +++++++-
|
||||||
|
src/libunwind/libunwind.rs | 2 ++
|
||||||
|
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/libpanic_unwind/gcc.rs b/src/libpanic_unwind/gcc.rs
|
||||||
|
index 4f572fe21b30..328d0d4ce7be 100644
|
||||||
|
--- a/src/libpanic_unwind/gcc.rs
|
||||||
|
+++ b/src/libpanic_unwind/gcc.rs
|
||||||
|
@@ -187,7 +187,13 @@ cfg_if::cfg_if! {
|
||||||
|
match eh_action {
|
||||||
|
EHAction::None |
|
||||||
|
EHAction::Cleanup(_) => return continue_unwind(exception_object, context),
|
||||||
|
- EHAction::Catch(_) => return uw::_URC_HANDLER_FOUND,
|
||||||
|
+ EHAction::Catch(_) => {
|
||||||
|
+ // EHABI requires the personality routine to update the
|
||||||
|
+ // SP value in the barrier cache of the exception object.
|
||||||
|
+ (*exception_object).private[5] =
|
||||||
|
+ uw::_Unwind_GetGR(context, uw::UNWIND_SP_REG);
|
||||||
|
+ return uw::_URC_HANDLER_FOUND;
|
||||||
|
+ }
|
||||||
|
EHAction::Terminate => return uw::_URC_FAILURE,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
|
||||||
|
index 0b39503c0d03..30658ce328d8 100644
|
||||||
|
--- a/src/libunwind/libunwind.rs
|
||||||
|
+++ b/src/libunwind/libunwind.rs
|
||||||
|
@@ -23,6 +23,7 @@ pub type _Unwind_Word = uintptr_t;
|
||||||
|
pub type _Unwind_Ptr = uintptr_t;
|
||||||
|
pub type _Unwind_Trace_Fn = extern "C" fn(ctx: *mut _Unwind_Context, arg: *mut c_void)
|
||||||
|
-> _Unwind_Reason_Code;
|
||||||
|
+
|
||||||
|
#[cfg(target_arch = "x86")]
|
||||||
|
pub const unwinder_private_data_size: usize = 5;
|
||||||
|
|
||||||
|
@@ -151,6 +152,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
|
||||||
|
use _Unwind_VRS_DataRepresentation::*;
|
||||||
|
|
||||||
|
pub const UNWIND_POINTER_REG: c_int = 12;
|
||||||
|
+ pub const UNWIND_SP_REG: c_int = 13;
|
||||||
|
pub const UNWIND_IP_REG: c_int = 15;
|
||||||
|
|
||||||
|
#[cfg_attr(all(feature = "llvm-libunwind",
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
--- rustc-beta-src/src/test/run-make-fulldeps/foreign-exceptions/Makefile.orig 2019-12-07 18:36:56.000000000 -0800
|
|
||||||
+++ rustc-beta-src/src/test/run-make-fulldeps/foreign-exceptions/Makefile 2019-12-12 15:49:24.655515206 -0800
|
|
||||||
@@ -1,3 +1,7 @@
|
|
||||||
+# ignore-arm
|
|
||||||
+# ignore-armeb
|
|
||||||
+# https://github.com/rust-lang/rust/issues/67242
|
|
||||||
+
|
|
||||||
-include ../tools.mk
|
|
||||||
|
|
||||||
all: foo
|
|
17
rust.spec
17
rust.spec
@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
Name: rust
|
Name: rust
|
||||||
Version: 1.40.0
|
Version: 1.40.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: The Rust Programming Language
|
Summary: The Rust Programming Language
|
||||||
License: (ASL 2.0 or MIT) and (BSD and MIT)
|
License: (ASL 2.0 or MIT) and (BSD and MIT)
|
||||||
# ^ written as: (rust itself) and (bundled libraries)
|
# ^ written as: (rust itself) and (bundled libraries)
|
||||||
@ -71,9 +71,13 @@ Patch1: rust-pr57840-llvm7-debuginfo-variants.patch
|
|||||||
# https://github.com/rust-lang/rust/pull/66317
|
# https://github.com/rust-lang/rust/pull/66317
|
||||||
Patch2: rust-pr66317-bindir-relative.patch
|
Patch2: rust-pr66317-bindir-relative.patch
|
||||||
|
|
||||||
# ARM loops when C++ tries to catch and rethrow a Rust exception
|
# Fix compiletest with newer (local-rebuild) libtest
|
||||||
# https://github.com/rust-lang/rust/issues/67242
|
# https://github.com/rust-lang/rust/pull/66156/commits/f6832adadb84364ce0c81fa02910b3706f441abc
|
||||||
Patch3: rust-issue-67242-ignore-arm-foreign-exceptions.patch
|
Patch3: 0001-Compiletest-bump-to-stage0-bootstrap-libtest.patch
|
||||||
|
|
||||||
|
# Fix ARM unwinding for foreign-exceptions
|
||||||
|
# https://github.com/rust-lang/rust/pull/67779
|
||||||
|
Patch4: 0001-Update-the-barrier-cache-during-ARM-EHABI-unwinding.patch
|
||||||
|
|
||||||
# Get the Rust triple for any arch.
|
# Get the Rust triple for any arch.
|
||||||
%{lua: function rust_triple(arch)
|
%{lua: function rust_triple(arch)
|
||||||
@ -407,6 +411,7 @@ test -f '%{local_rust_root}/bin/rustc'
|
|||||||
%patch1 -p1 -R
|
%patch1 -p1 -R
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
|
||||||
%if "%{python}" == "python3"
|
%if "%{python}" == "python3"
|
||||||
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
|
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
|
||||||
@ -713,6 +718,10 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py*
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 07 2020 Josh Stone <jistone@redhat.com> - 1.40.0-2
|
||||||
|
- Fix compiletest with newer (local-rebuild) libtest
|
||||||
|
- Fix ARM EHABI unwinding
|
||||||
|
|
||||||
* Thu Dec 19 2019 Josh Stone <jistone@redhat.com> - 1.40.0-1
|
* Thu Dec 19 2019 Josh Stone <jistone@redhat.com> - 1.40.0-1
|
||||||
- Update to 1.40.0.
|
- Update to 1.40.0.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user