Hi,
Here a diff for lang/rust:
- regen amd64 bootstrap (I will do i386 a bit later, and it is BROKEN
for now)
- added MAP_STACK flag for use with sigaltstack() (only used for signal
handler used for stack overflow detection)
- change a bit the way stack overflow is detected
The testsuite on amd64 still pass.
--
Sebastien Marie
Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/rust/Makefile,v
retrieving revision 1.61
diff -u -p -r1.61 Makefile
--- Makefile 24 Feb 2018 18:04:08 -0000 1.61
+++ Makefile 12 Mar 2018 15:16:10 -0000
@@ -16,9 +16,10 @@ COMMENT-doc = html documentation for ru
V = 1.24.0
CARGO_V = 0.25.0
DISTNAME = rustc-${V}-src
+REVISION = 0
# rustc bootstrap version
-BV-amd64 = 1.24.0-20180213
+BV-amd64 = 1.24.0-20180308
BV-i386 = 1.24.0-20180213
BV = ${BV-${MACHINE_ARCH}}
Index: distinfo
===================================================================
RCS file: /cvs/ports/lang/rust/distinfo,v
retrieving revision 1.31
diff -u -p -r1.31 distinfo
--- distinfo 23 Feb 2018 16:38:16 -0000 1.31
+++ distinfo 12 Mar 2018 15:16:10 -0000
@@ -1,6 +1,6 @@
SHA256 (rust/rustc-1.24.0-src.tar.gz) =
u4J29gROh35Efyn1ZuS7+CD6Uf6i+RLVm3MjP/2VY58=
-SHA256 (rust/rustc-bootstrap-amd64-1.24.0-20180213.tar.gz) =
HF/ZvsS/EMaGM4GaiZa2/worbtYxwpwreU2p8Bhw3fE=
+SHA256 (rust/rustc-bootstrap-amd64-1.24.0-20180308.tar.gz) =
qC6MXaM7/DQVJ7Z0xDkY8EphBjdMgyiQPdFfQecy7J4=
SHA256 (rust/rustc-bootstrap-i386-1.24.0-20180213.tar.gz) =
nQRwYdT3n9jjmoUt8IdqrJXvhKwq6PMMCAe+49JeivQ=
SIZE (rust/rustc-1.24.0-src.tar.gz) = 67506894
-SIZE (rust/rustc-bootstrap-amd64-1.24.0-20180213.tar.gz) = 85135015
+SIZE (rust/rustc-bootstrap-amd64-1.24.0-20180308.tar.gz) = 85090848
SIZE (rust/rustc-bootstrap-i386-1.24.0-20180213.tar.gz) = 86217512
Index:
patches/patch-src_liblibc_src_unix_bsd_netbsdlike_openbsdlike_openbsd_mod_rs
===================================================================
RCS file:
patches/patch-src_liblibc_src_unix_bsd_netbsdlike_openbsdlike_openbsd_mod_rs
diff -N
patches/patch-src_liblibc_src_unix_bsd_netbsdlike_openbsdlike_openbsd_mod_rs
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++
patches/patch-src_liblibc_src_unix_bsd_netbsdlike_openbsdlike_openbsd_mod_rs
12 Mar 2018 15:16:10 -0000
@@ -0,0 +1,11 @@
+$OpenBSD$
+Add MAP_STACK flag.
+Index: src/liblibc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs
+--- src/liblibc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs.orig
++++ src/liblibc/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs
+@@ -1,3 +1,5 @@
++pub const MAP_STACK : ::c_int = 0x4000;
++
+ s! {
+ pub struct lconv {
+ pub decimal_point: *mut ::c_char,
Index: patches/patch-src_libstd_sys_unix_stack_overflow_rs
===================================================================
RCS file: patches/patch-src_libstd_sys_unix_stack_overflow_rs
diff -N patches/patch-src_libstd_sys_unix_stack_overflow_rs
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libstd_sys_unix_stack_overflow_rs 12 Mar 2018 15:16:10
-0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+Use MAP_STACK for stack allocation.
+Index: src/libstd/sys/unix/stack_overflow.rs
+--- src/libstd/sys/unix/stack_overflow.rs.orig
++++ src/libstd/sys/unix/stack_overflow.rs
+@@ -144,7 +144,7 @@ mod imp {
+ let stackp = mmap(ptr::null_mut(),
+ SIGSTKSZ,
+ PROT_READ | PROT_WRITE,
+- MAP_PRIVATE | MAP_ANON,
++ MAP_PRIVATE | MAP_ANON | libc::MAP_STACK,
+ -1,
+ 0);
+ if stackp == MAP_FAILED {
Index: patches/patch-src_libstd_sys_unix_thread_rs
===================================================================
RCS file: patches/patch-src_libstd_sys_unix_thread_rs
diff -N patches/patch-src_libstd_sys_unix_thread_rs
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libstd_sys_unix_thread_rs 12 Mar 2018 15:16:10 -0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+Don't change permission on stack for creating a stack_guard page: we already
have such thing.
+Index: src/libstd/sys/unix/thread.rs
+--- src/libstd/sys/unix/thread.rs.orig
++++ src/libstd/sys/unix/thread.rs
+@@ -269,7 +269,7 @@ pub mod guard {
+ as *mut libc::c_void;
+ }
+
+- if cfg!(target_os = "linux") {
++ if cfg!(target_os = "linux") || cfg!(target_os = "openbsd") {
+ // 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