Merge branch 'master' into beta

This commit is contained in:
Josh Stone 2017-08-22 09:30:16 -07:00
commit 9f8aa3b200
7 changed files with 158 additions and 43 deletions

8
.gitignore vendored
View File

@ -57,3 +57,11 @@
/rust-1.17.0-powerpc64-unknown-linux-gnu.tar.gz
/rust-1.17.0-s390x-unknown-linux-gnu.tar.gz
/rust-1.17.0-x86_64-unknown-linux-gnu.tar.gz
/rustc-1.19.0-src.tar.xz
/rust-1.18.0-aarch64-unknown-linux-gnu.tar.gz
/rust-1.18.0-armv7-unknown-linux-gnueabihf.tar.gz
/rust-1.18.0-i686-unknown-linux-gnu.tar.gz
/rust-1.18.0-powerpc64le-unknown-linux-gnu.tar.gz
/rust-1.18.0-powerpc64-unknown-linux-gnu.tar.gz
/rust-1.18.0-s390x-unknown-linux-gnu.tar.gz
/rust-1.18.0-x86_64-unknown-linux-gnu.tar.gz

View File

@ -1,26 +0,0 @@
diff --git a/configure b/configure
index 505767cede55..4074a1e2f765 100755
--- a/configure
+++ b/configure
@@ -753,8 +753,8 @@ case "$CFG_RELEASE_CHANNEL" in
*-pc-windows-gnu)
;;
*)
- CFG_ENABLE_DEBUGINFO_LINES=1
- CFG_ENABLE_DEBUGINFO_ONLY_STD=1
+ # CFG_ENABLE_DEBUGINFO_LINES=1
+ # CFG_ENABLE_DEBUGINFO_ONLY_STD=1
;;
esac
@@ -765,8 +765,8 @@ case "$CFG_RELEASE_CHANNEL" in
*-pc-windows-gnu)
;;
*)
- CFG_ENABLE_DEBUGINFO_LINES=1
- CFG_ENABLE_DEBUGINFO_ONLY_STD=1
+ # CFG_ENABLE_DEBUGINFO_LINES=1
+ # CFG_ENABLE_DEBUGINFO_ONLY_STD=1
;;
esac
;;

View File

@ -0,0 +1,80 @@
From 1d5e3cd80b66a3abd274107e75854476c603617d Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Wed, 5 Jul 2017 12:03:17 -0700
Subject: [PATCH] Skip the main thread's manual stack guard on Linux
Linux doesn't allocate the whole stack right away, and the kernel has
its own stack-guard mechanism to fault when growing too close to an
existing mapping. If we map our own guard, then the kernel starts
enforcing a rather large gap above that, rendering much of the possible
stack space useless.
Instead, we'll just note where we expect rlimit to start faulting, so
our handler can report "stack overflow", and trust that the kernel's own
stack guard will work.
Fixes #43052.
---
src/libstd/sys/unix/thread.rs | 44 ++++++++++++++++++++++++++++---------------
1 file changed, 29 insertions(+), 15 deletions(-)
diff --git a/src/libstd/sys/unix/thread.rs b/src/libstd/sys/unix/thread.rs
index 1642baa34d63..15747746611c 100644
--- a/src/libstd/sys/unix/thread.rs
+++ b/src/libstd/sys/unix/thread.rs
@@ -264,23 +264,37 @@ pub mod guard {
as *mut libc::c_void;
}
- // Rellocate the last page of the stack.
- // This ensures SIGBUS will be raised on
- // stack overflow.
- let result = mmap(stackaddr, psize, PROT_NONE,
- MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0);
-
- if result != stackaddr || result == MAP_FAILED {
- panic!("failed to allocate a guard page");
- }
-
- let offset = if cfg!(any(target_os = "linux", target_os = "freebsd")) {
- 2
+ if cfg!(target_os = "linux") {
+ // Linux doesn't allocate the whole stack right away, and
+ // the kernel has its own stack-guard mechanism to fault
+ // when growing too close to an existing mapping. If we map
+ // our own guard, then the kernel starts enforcing a rather
+ // large gap above that, rendering much of the possible
+ // stack space useless. See #43052.
+ //
+ // Instead, we'll just note where we expect rlimit to start
+ // faulting, so our handler can report "stack overflow", and
+ // trust that the kernel's own stack guard will work.
+ Some(stackaddr as usize)
} else {
- 1
- };
+ // Reallocate the last page of the stack.
+ // This ensures SIGBUS will be raised on
+ // stack overflow.
+ let result = mmap(stackaddr, psize, PROT_NONE,
+ MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0);
+
+ if result != stackaddr || result == MAP_FAILED {
+ panic!("failed to allocate a guard page");
+ }
- Some(stackaddr as usize + offset * psize)
+ let offset = if cfg!(target_os = "freebsd") {
+ 2
+ } else {
+ 1
+ };
+
+ Some(stackaddr as usize + offset * psize)
+ }
}
#[cfg(target_os = "solaris")]
--
2.13.3

View File

@ -0,0 +1,38 @@
From 253ff9c24f0e11323ae4f173cc620721fb322beb Mon Sep 17 00:00:00 2001
From: Ximin Luo <infinity0@pwned.gg>
Date: Mon, 17 Jul 2017 22:29:09 +0200
Subject: [PATCH] configure: allow distros to disable debuginfo-only-std
---
configure | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/configure b/configure
index af59d5b0bb88..084f5bfdedbc 100755
--- a/configure
+++ b/configure
@@ -558,8 +558,8 @@ case "$CFG_RELEASE_CHANNEL" in
*-pc-windows-gnu)
;;
*)
- CFG_ENABLE_DEBUGINFO_LINES=1
- CFG_ENABLE_DEBUGINFO_ONLY_STD=1
+ enable_if_not_disabled debuginfo-lines
+ enable_if_not_disabled debuginfo-only-std
;;
esac
@@ -570,8 +570,8 @@ case "$CFG_RELEASE_CHANNEL" in
*-pc-windows-gnu)
;;
*)
- CFG_ENABLE_DEBUGINFO_LINES=1
- CFG_ENABLE_DEBUGINFO_ONLY_STD=1
+ enable_if_not_disabled debuginfo-lines
+ enable_if_not_disabled debuginfo-only-std
;;
esac
;;
--
2.13.3

View File

@ -47,8 +47,8 @@
Name: rust
Version: 1.19.0
Release: 0.beta.4%{?dist}
Version: 1.20.0
Release: 0.beta.2%{?dist}
Summary: The Rust Programming Language
License: (ASL 2.0 or MIT) and (BSD and ISC and MIT)
# ^ written as: (rust itself) and (bundled libraries)
@ -60,10 +60,10 @@ ExclusiveArch: %{rust_arches}
%else
%global rustc_package rustc-%{channel}-src
%endif
Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.gz
Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
# Don't let configure clobber our debuginfo choice for stable releases.
Patch1: rust-1.16.0-configure-no-override.patch
Patch1: rust-1.19.0-43072-stack-guard.patch
Patch2: rust-1.19.0-43297-configure-debuginfo.patch
# Get the Rust triple for any arch.
%{lua: function rust_triple(arch)
@ -306,7 +306,8 @@ sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \
src/librustc_llvm/lib.rs
%endif
%patch1 -p1 -b .no-override
%patch1 -p1 -b .stack-guard
%patch2 -p1 -b .debuginfo
# The configure macro will modify some autoconf-related files, which upsets
# cargo when it tries to verify checksums in those files. If we just truncate
@ -334,6 +335,8 @@ find src/vendor -name .cargo-checksum.json \
%{!?with_llvm_static: --enable-llvm-link-shared } } \
--disable-jemalloc \
--disable-rpath \
--disable-debuginfo-lines \
--disable-debuginfo-only-std \
--enable-debuginfo \
--enable-vendor \
--release-channel=%{channel}
@ -457,8 +460,20 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py*
%changelog
* Fri Jul 14 2017 Josh Stone <jistone@redhat.com> - 1.19.0-0.beta.4
- beta test, now using llvm4
* Tue Aug 22 2017 Josh Stone <jistone@redhat.com> - 1.20.0-0.beta.2
- beta test
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon Jul 24 2017 Josh Stone <jistone@redhat.com> - 1.19.0-2
- Use find-debuginfo.sh --keep-section .rustc
* Thu Jul 20 2017 Josh Stone <jistone@redhat.com> - 1.19.0-1
- Update to 1.19.0.
* Thu Jun 08 2017 Josh Stone <jistone@redhat.com> - 1.18.0-1
- Update to 1.18.0.

View File

@ -1 +1 @@
SHA512 (rustc-1.18.0-src.tar.gz) = eff0460b647dfb3490e28d4dec4f9781d31a942f22de75d9bd1ba31591597226b6862ec5132e8b4fcdbcf6e6ffa085ca5dda7ff8260cd82388fc13e8d3b4a2eb
SHA512 (rustc-1.19.0-src.tar.xz) = 4dc0d0848d54ba7355aac7e13b3d0d3f42f05d6cd97ced9dc9e6493ba4686e1398803b567cecf24be0632b11ce1565e8d61b7603ce838b9c32dd0e663d03ba82

View File

@ -1,8 +1,8 @@
SHA512 (rustc-1.18.0-src.tar.gz) = eff0460b647dfb3490e28d4dec4f9781d31a942f22de75d9bd1ba31591597226b6862ec5132e8b4fcdbcf6e6ffa085ca5dda7ff8260cd82388fc13e8d3b4a2eb
SHA512 (rust-1.17.0-aarch64-unknown-linux-gnu.tar.gz) = 58a44c7c5ddcec2560b48103aedb6718aa944e2058683af69638b6d00d7a76de0ed32c8a0819bf7a4585d01b349b260abdd1b9d4a378e3beaa7fef7872e5deb6
SHA512 (rust-1.17.0-armv7-unknown-linux-gnueabihf.tar.gz) = e4970d090ab067e73507ea7cbcbf39de84ca2f3e506fffe0d76cabf2fb22e88229fe9d6fec5f025da6f7975ec1e8ffb82c6e5a58d50c1c51718494a19dfdf770
SHA512 (rust-1.17.0-i686-unknown-linux-gnu.tar.gz) = 32212fdb237cc638fe4ac4aec6b23fe9fec25c9b7329090b89dc6feac2fe7f48999b2bee8155bb345dfe94ef5fda9ea4ca670cb323ad5936046a54c495f52af9
SHA512 (rust-1.17.0-powerpc64le-unknown-linux-gnu.tar.gz) = 1963b596dd8c5fe3fe836319074246107a982ee6c17d973a681e1bd96870440295b73bed60929fdf445136990d15bf90d96843115db4287ffced07dafa6364d1
SHA512 (rust-1.17.0-powerpc64-unknown-linux-gnu.tar.gz) = faffdf9e61e525cec9dfe47bee780a95d58c0778eafab2d9f56021f3910e5b6fee358de6af7ef0185c298921b2c010ebf2faa1c271cb4818c7e03f3424aac0ab
SHA512 (rust-1.17.0-s390x-unknown-linux-gnu.tar.gz) = c92cba2b24422e9ce09b1ac1fae2da0ce4d884dddc1b6606c76d8f2e94dc6e46391632dfd005669fe37a7d0c447fddf155e8976a0b3bd4b0c96dd60877ca644e
SHA512 (rust-1.17.0-x86_64-unknown-linux-gnu.tar.gz) = e12afcbc5a4642c908305c843f014d3802705f18d4e98e1a42dcca574dbe22af01ec8479f8c3fee5ddf12c530212118ff6eef5c4a2762ad4da6c2b071f163513
SHA512 (rustc-1.19.0-src.tar.xz) = 4dc0d0848d54ba7355aac7e13b3d0d3f42f05d6cd97ced9dc9e6493ba4686e1398803b567cecf24be0632b11ce1565e8d61b7603ce838b9c32dd0e663d03ba82
SHA512 (rust-1.18.0-aarch64-unknown-linux-gnu.tar.gz) = a1445b84e6215d3b72ed3c33ecfb0467e9abc0eb000eb2059aacf24bed1d8f1de0d2355654d3558b405289db45512c164b45e8b5c19b1420b3eb6f6f17d83872
SHA512 (rust-1.18.0-armv7-unknown-linux-gnueabihf.tar.gz) = 7f9783bf396d110da7dce69f5d27501357a6c398296aada1029cc251ac0d97b648a934e8a71c2c4cb2e9fe660e98130624d3bd45543a3fcf4e821f5ee6fda172
SHA512 (rust-1.18.0-i686-unknown-linux-gnu.tar.gz) = 8deb0dc9aae392ff50e1e93a0039340db60dbd8838fbeb5bca87961506c21b85961bed37f89d73993e44f8e50c493ef90f7e5b815e459b3650826b97357cad59
SHA512 (rust-1.18.0-powerpc64le-unknown-linux-gnu.tar.gz) = 814f07ba103a6358cff0f0a5d55d7b73ce8c1cfda2dbb426f9ace0e043a66eb76797917ebedcd50d60a7ede5e941bb3c77dbf99f5ba92e59238a09c41582edc5
SHA512 (rust-1.18.0-powerpc64-unknown-linux-gnu.tar.gz) = 5f6107c70f71e8afec90e5a94d40e27927239e70811a373ef3e0d39191295625e15881ff738bd62ace1b04489c9a33d51f1b4eec2cc923f8d1959dae38de98d8
SHA512 (rust-1.18.0-s390x-unknown-linux-gnu.tar.gz) = 291c2aa3107b727176b90f0ff927e72b69c0830261c13805734b6e41cf4979a0000adbfddd69ccfef960b1eb9382694c6084e31adb8c2979df9973f112f3ee12
SHA512 (rust-1.18.0-x86_64-unknown-linux-gnu.tar.gz) = 3d5cb71c03f95145539d9f209733ef555520eb826411737c4f168bbcb8ff631a9035e7dc81c42ecf107c5115d1d69ea6620ed95331cefad6de1b9d49f87ce305