Mon Jun 25 13:31:11 2018 UTC ()
Add missing patch to fix build on NetBSD


(ryoon)
diff -r1.27 -r1.28 pkgsrc/lang/rust/distinfo
diff -r0 -r1.3 pkgsrc/lang/rust/patches/patch-src_libstd_sys_unix_thread.rs

cvs diff -r1.27 -r1.28 pkgsrc/lang/rust/distinfo (expand / switch to unified diff)

--- pkgsrc/lang/rust/distinfo 2018/06/24 08:05:25 1.27
+++ pkgsrc/lang/rust/distinfo 2018/06/25 13:31:11 1.28
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.27 2018/06/24 08:05:25 ryoon Exp $ 1$NetBSD: distinfo,v 1.28 2018/06/25 13:31:11 ryoon Exp $
2 2
3SHA1 (rust-1.26.2-i686-apple-darwin.tar.gz) = 7a353c1875f4656e95a14ec4822c3c2a408d1d26 3SHA1 (rust-1.26.2-i686-apple-darwin.tar.gz) = 7a353c1875f4656e95a14ec4822c3c2a408d1d26
4RMD160 (rust-1.26.2-i686-apple-darwin.tar.gz) = 9377bd2f7373c5cf7b7e936e51d2749bea8f687f 4RMD160 (rust-1.26.2-i686-apple-darwin.tar.gz) = 9377bd2f7373c5cf7b7e936e51d2749bea8f687f
5SHA512 (rust-1.26.2-i686-apple-darwin.tar.gz) = 0f899df504acc7eae6868a13de848a5f377bbad6c971554b8ad09a8933452afc384a94755c6583cd62ecaefe4d43cfe73fa7bbd85f24c93a8307f5026fbbf3a0 5SHA512 (rust-1.26.2-i686-apple-darwin.tar.gz) = 0f899df504acc7eae6868a13de848a5f377bbad6c971554b8ad09a8933452afc384a94755c6583cd62ecaefe4d43cfe73fa7bbd85f24c93a8307f5026fbbf3a0
6Size (rust-1.26.2-i686-apple-darwin.tar.gz) = 174940090 bytes 6Size (rust-1.26.2-i686-apple-darwin.tar.gz) = 174940090 bytes
7SHA1 (rust-1.26.2-i686-unknown-freebsd.tar.gz) = e2ada8d872f4d759d7db630aa6a9722c06c0fdd6 7SHA1 (rust-1.26.2-i686-unknown-freebsd.tar.gz) = e2ada8d872f4d759d7db630aa6a9722c06c0fdd6
8RMD160 (rust-1.26.2-i686-unknown-freebsd.tar.gz) = 5d1d04b7359ef2aba4e255a0c716d3bd09fd24dd 8RMD160 (rust-1.26.2-i686-unknown-freebsd.tar.gz) = 5d1d04b7359ef2aba4e255a0c716d3bd09fd24dd
9SHA512 (rust-1.26.2-i686-unknown-freebsd.tar.gz) = aab2dc5fd375802c669bdd3b022023f2c77d17129f5a8f8446c82a902c0b92c1d14308d71a696f2f3fad3342ace45832c597c0d253df3e526a0df36d67ea84a4 9SHA512 (rust-1.26.2-i686-unknown-freebsd.tar.gz) = aab2dc5fd375802c669bdd3b022023f2c77d17129f5a8f8446c82a902c0b92c1d14308d71a696f2f3fad3342ace45832c597c0d253df3e526a0df36d67ea84a4
10Size (rust-1.26.2-i686-unknown-freebsd.tar.gz) = 149585114 bytes 10Size (rust-1.26.2-i686-unknown-freebsd.tar.gz) = 149585114 bytes
11SHA1 (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = f915dac0ce461cb111eca5ff0cc5449103433557 11SHA1 (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = f915dac0ce461cb111eca5ff0cc5449103433557
12RMD160 (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = 22c5504c9761fc08b97a0b307faf9cb072096e58 12RMD160 (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = 22c5504c9761fc08b97a0b307faf9cb072096e58
13SHA512 (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = 6ee03947b19c9d28b718a17d3a7331f0df3eb5ac2202eeeb2c6518af0d6bef14724c252ba13dc3d38fd3aa599c96ea6f63fcdb07efad0940cf492ad1af85a2aa 13SHA512 (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = 6ee03947b19c9d28b718a17d3a7331f0df3eb5ac2202eeeb2c6518af0d6bef14724c252ba13dc3d38fd3aa599c96ea6f63fcdb07efad0940cf492ad1af85a2aa
14Size (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = 220177009 bytes 14Size (rust-1.26.2-i686-unknown-linux-gnu.tar.gz) = 220177009 bytes
@@ -66,17 +66,18 @@ SHA512 (rust-std-1.26.2-x86_64-unknown-l @@ -66,17 +66,18 @@ SHA512 (rust-std-1.26.2-x86_64-unknown-l
66Size (rust-std-1.26.2-x86_64-unknown-linux-gnu.tar.gz) = 81550232 bytes 66Size (rust-std-1.26.2-x86_64-unknown-linux-gnu.tar.gz) = 81550232 bytes
67SHA1 (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 1621968fbc19ebe3d864717cfb7049c7e401db64 67SHA1 (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 1621968fbc19ebe3d864717cfb7049c7e401db64
68RMD160 (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 1d03242cc13771fe6ba9752d4a63352f50741b1c 68RMD160 (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 1d03242cc13771fe6ba9752d4a63352f50741b1c
69SHA512 (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 56a390eddecb10db7f52715e43261cba1374e0cf08bb36c9d26ca04eda5a4513cc9e9b2488c4ebc53cd3721f2f104df8bbb9a90b226eb8261263da7a89f76541 69SHA512 (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 56a390eddecb10db7f52715e43261cba1374e0cf08bb36c9d26ca04eda5a4513cc9e9b2488c4ebc53cd3721f2f104df8bbb9a90b226eb8261263da7a89f76541
70Size (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 67022448 bytes 70Size (rust-std-1.26.2-x86_64-unknown-netbsd.tar.gz) = 67022448 bytes
71SHA1 (rustc-1.27.0-src.tar.gz) = 54e4a19cd7eea451fea568644e4a3e264efcf36a 71SHA1 (rustc-1.27.0-src.tar.gz) = 54e4a19cd7eea451fea568644e4a3e264efcf36a
72RMD160 (rustc-1.27.0-src.tar.gz) = d890fa05261632ccd3434d91fbd80e02890eb121 72RMD160 (rustc-1.27.0-src.tar.gz) = d890fa05261632ccd3434d91fbd80e02890eb121
73SHA512 (rustc-1.27.0-src.tar.gz) = cd8fa2c748cbec7fab638cf5ea356fe55d64ec699c22dd493cd31d52f8d115a368942d2305c46e28dacff597de8748d327b1d2786502969f6dea93589295520d 73SHA512 (rustc-1.27.0-src.tar.gz) = cd8fa2c748cbec7fab638cf5ea356fe55d64ec699c22dd493cd31d52f8d115a368942d2305c46e28dacff597de8748d327b1d2786502969f6dea93589295520d
74Size (rustc-1.27.0-src.tar.gz) = 96871225 bytes 74Size (rustc-1.27.0-src.tar.gz) = 96871225 bytes
75SHA1 (patch-src_bootstrap_bin_rustc.rs) = d9787517f03162d3548e89a91ecf933fd67774d8 75SHA1 (patch-src_bootstrap_bin_rustc.rs) = d9787517f03162d3548e89a91ecf933fd67774d8
76SHA1 (patch-src_bootstrap_lib.rs) = d86e173b931099730a4f18d044d7977c89f87b91 76SHA1 (patch-src_bootstrap_lib.rs) = d86e173b931099730a4f18d044d7977c89f87b91
77SHA1 (patch-src_libbacktrace_configure) = b2c1e9b93a99408aad42ab9f1af27704cc81bdd8 77SHA1 (patch-src_libbacktrace_configure) = b2c1e9b93a99408aad42ab9f1af27704cc81bdd8
78SHA1 (patch-src_libstd_build.rs) = 32dad8a474300f9f37bce8b92acca762cf8cc4ab 78SHA1 (patch-src_libstd_build.rs) = 32dad8a474300f9f37bce8b92acca762cf8cc4ab
 79SHA1 (patch-src_libstd_sys_unix_thread.rs) = 2a0b7ea8e7e09623826f306f9f1d0611799173d4
79SHA1 (patch-src_llvm_CMakeLists.txt) = ffdf4337fdc84d8314c97c4e492e6b84244a99d1 80SHA1 (patch-src_llvm_CMakeLists.txt) = ffdf4337fdc84d8314c97c4e492e6b84244a99d1
80SHA1 (patch-src_llvm_cmake_modules_AddLLVM.cmake) = 282d97cce8d01cfefe565185d4999c2db9ccc13f 81SHA1 (patch-src_llvm_cmake_modules_AddLLVM.cmake) = 282d97cce8d01cfefe565185d4999c2db9ccc13f
81SHA1 (patch-src_llvm_include_llvm_Support_DataTypes.h.cmake) = 61cba4480d97e740d361708eb8e5c9b13bb2d36e 82SHA1 (patch-src_llvm_include_llvm_Support_DataTypes.h.cmake) = 61cba4480d97e740d361708eb8e5c9b13bb2d36e
82SHA1 (patch-src_vendor_libc_src_unix_solaris_mod.rs) = a944011789f08f55bed15d691b50977d80369395 83SHA1 (patch-src_vendor_libc_src_unix_solaris_mod.rs) = a944011789f08f55bed15d691b50977d80369395

File Added: pkgsrc/lang/rust/patches/Attic/patch-src_libstd_sys_unix_thread.rs
$NetBSD: patch-src_libstd_sys_unix_thread.rs,v 1.3 2018/06/25 13:31:11 ryoon Exp $

--- src/libstd/sys/unix/thread.rs.orig	2018-06-24 22:42:29.203295357 +0000
+++ src/libstd/sys/unix/thread.rs
@@ -326,13 +326,22 @@ pub mod guard {
             // Reallocate the last page of the stack.
             // This ensures SIGBUS will be raised on
             // stack overflow.
-            let result = mmap(stackaddr, PAGE_SIZE, PROT_NONE,
+            // Systems which enforce strict PAX MPROTECT do not allow
+            // to mprotect() a mapping with less restrictive permissions
+            // than the initial mmap() used, so we mmap() here with
+            // read/write permissions and only then mprotect() it to
+            // no permissions at all. See issue #50313.
+            let result = mmap(stackaddr, PAGE_SIZE, PROT_READ | PROT_WRITE,
                               MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0);
-
             if result != stackaddr || result == MAP_FAILED {
                 panic!("failed to allocate a guard page");
             }
 
+            let result = mprotect(stackaddr, PAGE_SIZE, PROT_NONE);
+            if result != 0 {
+                panic!("failed to protect the guard page");
+            }
+
             let guardaddr = stackaddr as usize;
             let offset = if cfg!(target_os = "freebsd") {
                 2