summaryrefslogtreecommitdiff
path: root/user/rust
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2018-11-10 22:34:26 +0000
committerSamuel Holland <samuel@sholland.org>2018-11-13 02:03:14 +0000
commit18b490b7953735328501c6f7e54522a91220caf3 (patch)
treef075f78e11183fb78348b69d07affde16b828d81 /user/rust
parent939576404a1853bf009789059c34288420bfd6ec (diff)
downloadpackages-18b490b7953735328501c6f7e54522a91220caf3.tar.gz
packages-18b490b7953735328501c6f7e54522a91220caf3.tar.bz2
packages-18b490b7953735328501c6f7e54522a91220caf3.tar.xz
packages-18b490b7953735328501c6f7e54522a91220caf3.zip
user/rust: Bump to 1.30.1
Diffstat (limited to 'user/rust')
-rw-r--r--user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch (renamed from user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch)12
-rw-r--r--user/rust/0002-Fix-LLVM-build.patch (renamed from user/rust/0003-Fix-LLVM-build.patch)8
-rw-r--r--user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch (renamed from user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch)12
-rw-r--r--user/rust/0004-Require-static-native-libraries-when-linking-static-.patch (renamed from user/rust/0001-Require-static-native-libraries-when-linking-static-.patch)18
-rw-r--r--user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch60
-rw-r--r--user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch8
-rw-r--r--user/rust/0007-Add-powerpc-unknown-linux-musl-target.patch (renamed from user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch)36
-rw-r--r--user/rust/0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch (renamed from user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch)30
-rw-r--r--user/rust/0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch (renamed from user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch)27
-rw-r--r--user/rust/0010-Add-powerpc64-unknown-linux-musl-target.patch67
-rw-r--r--user/rust/0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch (renamed from user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch)31
-rw-r--r--user/rust/0012-rustc_data_structures-use-libc-types-constants-in-fl.patch209
-rw-r--r--user/rust/0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch (renamed from user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch)10
-rw-r--r--user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch (renamed from user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch)34
-rw-r--r--user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch27
-rw-r--r--user/rust/0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch (renamed from user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch)8
-rw-r--r--user/rust/0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch (renamed from user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch)10
-rw-r--r--user/rust/0017-x.py-Use-python3-instead-of-python.patch (renamed from user/rust/0022-x.py-Use-python3-instead-of-python.patch)4
-rw-r--r--user/rust/0018-test-target-feature-gate-Only-run-on-relevant-target.patch (renamed from user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch)14
-rw-r--r--user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch118
-rw-r--r--user/rust/0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch (renamed from user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch)4
-rw-r--r--user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch29
-rw-r--r--user/rust/0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch (renamed from user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch)4
-rw-r--r--user/rust/0021-Ignore-broken-and-non-applicable-tests.patch (renamed from user/rust/0025-Ignore-broken-and-non-applicable-tests.patch)10
-rw-r--r--user/rust/0022-Link-stage-2-tools-dynamically-to-libstd.patch (renamed from user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch)8
-rw-r--r--user/rust/0023-Move-debugger-scripts-to-usr-share-rust.patch (renamed from user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch)26
-rw-r--r--user/rust/0024-Add-foxkit-target-specs.patch (renamed from user/rust/0028-Add-foxkit-target-specs.patch)22
-rw-r--r--user/rust/0031-liblibc-0163a7ce20b5.patch1343
-rw-r--r--user/rust/0031-liblibc-1b130d4c349d.patch126
-rw-r--r--user/rust/0035-rand-5b9e5c39d857.patch25
-rw-r--r--user/rust/0036-rand-checksums.patch9
-rw-r--r--user/rust/0040-rls-atomics.patch14
-rw-r--r--user/rust/APKBUILD116
33 files changed, 659 insertions, 1820 deletions
diff --git a/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch b/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
index 6b9bcb876..0d26e476a 100644
--- a/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+++ b/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
@@ -1,18 +1,18 @@
-From 8523832491df1889d9c226bef0cc76ed7b1a8d33 Mon Sep 17 00:00:00 2001
+From 79975694944ee2a36abb9b0a9a54169a062aaa71 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Wed, 10 Jan 2018 13:36:41 -0600
-Subject: [PATCH 02/29] Don't pass CFLAGS to the C++ compiler
+Subject: [PATCH 01/24] Don't pass CFLAGS to the C++ compiler
---
src/bootstrap/builder.rs | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
-index dc0b0aaf0b..257d369750 100644
+index b842bc43f5..1dd128fd95 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
-@@ -966,7 +966,7 @@ impl<'a> Builder<'a> {
- let cflags = self.cflags(target).join(" ");
+@@ -1045,7 +1045,7 @@ impl<'a> Builder<'a> {
+ let cflags = self.cflags(target, GitRepo::Rustc).join(" ");
cargo
.env(format!("CFLAGS_{}", target), cflags.clone())
- .env("CFLAGS", cflags.clone());
@@ -20,7 +20,7 @@ index dc0b0aaf0b..257d369750 100644
if let Some(ar) = self.ar(target) {
let ranlib = format!("{} s", ar.display());
-@@ -981,9 +981,7 @@ impl<'a> Builder<'a> {
+@@ -1060,9 +1060,7 @@ impl<'a> Builder<'a> {
let cxx = ccacheify(&cxx);
cargo
.env(format!("CXX_{}", target), &cxx)
diff --git a/user/rust/0003-Fix-LLVM-build.patch b/user/rust/0002-Fix-LLVM-build.patch
index 72108f0ae..4780ff9a9 100644
--- a/user/rust/0003-Fix-LLVM-build.patch
+++ b/user/rust/0002-Fix-LLVM-build.patch
@@ -1,17 +1,17 @@
-From f8878714f01309b99cae990f390431929a37c2c8 Mon Sep 17 00:00:00 2001
+From 67a4fbe55220b79ea80f3e0588fe77c729a70d3d Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Fri, 8 Sep 2017 00:04:29 -0500
-Subject: [PATCH 03/29] Fix LLVM build
+Subject: [PATCH 02/24] Fix LLVM build
---
src/bootstrap/lib.rs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
-index 1efff19dfb..e6ac847afe 100644
+index 6b88516bac..055a87efaa 100644
--- a/src/bootstrap/lib.rs
+++ b/src/bootstrap/lib.rs
-@@ -742,7 +742,8 @@ impl Build {
+@@ -772,7 +772,8 @@ impl Build {
// cc-rs because the build scripts will determine that for themselves.
let mut base = self.cc[&target].args().iter()
.map(|s| s.to_string_lossy().into_owned())
diff --git a/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
index a3caa20f5..95a3bb53d 100644
--- a/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+++ b/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
@@ -1,7 +1,7 @@
-From 3028ae603ea6f08fd6bc1c64a7fe28628a1232e9 Mon Sep 17 00:00:00 2001
+From d927c3bdf6e312f5c92ec33d5dfe4b77b3dfa8e0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sat, 2 Dec 2017 17:25:44 -0600
-Subject: [PATCH 08/29] Allow rustdoc to work when cross-compiling on musl
+Subject: [PATCH 03/24] Allow rustdoc to work when cross-compiling on musl
musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
---
@@ -9,7 +9,7 @@ musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/bootstrap/bin/rustdoc.rs b/src/bootstrap/bin/rustdoc.rs
-index a54e58665c..fc0cf940e2 100644
+index bb5a21e3e4..1b6b78b90a 100644
--- a/src/bootstrap/bin/rustdoc.rs
+++ b/src/bootstrap/bin/rustdoc.rs
@@ -34,9 +34,6 @@ fn main() {
@@ -19,10 +19,10 @@ index a54e58665c..fc0cf940e2 100644
- let mut dylib_path = bootstrap::util::dylib_path();
- dylib_path.insert(0, PathBuf::from(libdir.clone()));
-
+ //FIXME(misdreavus): once stdsimd uses cfg(rustdoc) instead of cfg(dox), remove the `--cfg dox`
+ //arguments here
let mut cmd = Command::new(rustdoc);
- cmd.args(&args)
- .arg("--cfg")
-@@ -46,7 +43,7 @@ fn main() {
+@@ -48,7 +45,7 @@ fn main() {
.arg("--sysroot")
.arg(sysroot)
.env(bootstrap::util::dylib_path_var(),
diff --git a/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch b/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch
index a9638ee75..e6f5304ec 100644
--- a/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch
+++ b/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch
@@ -1,18 +1,24 @@
-From 9cee7b92ea492f9a879c88ae0ca2c1f791bdec97 Mon Sep 17 00:00:00 2001
+From 8912b0e6b881fda271f3805622442e4d5ac1e286 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Fri, 8 Sep 2017 00:05:18 -0500
-Subject: [PATCH 01/29] Require static native libraries when linking static
+Subject: [PATCH 04/24] Require static native libraries when linking static
executables
+gcc/ld will create a dynamically-linked executable without warning, even
+when passed `-static`, when asked to link to a `.so`. Avoid this
+confusing and unintended behavior by always using the static version of
+libraries when trying to link static executables.
+
+Fixes #54243
---
src/librustc_codegen_llvm/back/link.rs | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/librustc_codegen_llvm/back/link.rs b/src/librustc_codegen_llvm/back/link.rs
-index 845a66c6e4..f61318affc 100644
+index 8248385c12..9fc1991412 100644
--- a/src/librustc_codegen_llvm/back/link.rs
+++ b/src/librustc_codegen_llvm/back/link.rs
-@@ -1551,8 +1551,8 @@ fn add_upstream_rust_crates(cmd: &mut dyn Linker,
+@@ -1592,8 +1592,8 @@ fn add_upstream_rust_crates(cmd: &mut dyn Linker,
}
}
@@ -23,14 +29,14 @@ index 845a66c6e4..f61318affc 100644
// dependencies. We've got two cases then:
//
// 1. The upstream crate is an rlib. In this case we *must* link in the
-@@ -1596,7 +1596,14 @@ fn add_upstream_native_libraries(cmd: &mut dyn Linker,
+@@ -1637,7 +1637,14 @@ fn add_upstream_native_libraries(cmd: &mut dyn Linker,
continue
}
match lib.kind {
- NativeLibraryKind::NativeUnknown => cmd.link_dylib(&name.as_str()),
+ NativeLibraryKind::NativeUnknown => {
+ // When creating executables, match library linkage to that of the executable.
-+ if crate_type == config::CrateTypeExecutable && sess.crt_static() {
++ if crate_type == config::CrateType::Executable && sess.crt_static() {
+ cmd.link_staticlib(&name.as_str())
+ } else {
+ cmd.link_dylib(&name.as_str())
diff --git a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
index eda99398c..2c8d75872 100644
--- a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+++ b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
@@ -1,7 +1,7 @@
-From 1b47e0a7cfc3fd6572d939aa894e3a23522ed4c0 Mon Sep 17 00:00:00 2001
+From ff1c6e9d50da8247f044b10d281f336c2c859f7c Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Fri, 8 Sep 2017 22:11:14 -0500
-Subject: [PATCH 05/29] Remove -nostdlib and musl_root from musl targets
+Subject: [PATCH 05/24] Remove -nostdlib and musl_root from musl targets
---
config.toml.example | 6 ---
@@ -19,10 +19,10 @@ Subject: [PATCH 05/29] Remove -nostdlib and musl_root from musl targets
12 files changed, 4 insertions(+), 188 deletions(-)
diff --git a/config.toml.example b/config.toml.example
-index 9907341633..6f8b52e235 100644
+index 3159c19528..a86db62c7b 100644
--- a/config.toml.example
+++ b/config.toml.example
-@@ -409,12 +409,6 @@
+@@ -431,12 +431,6 @@
# only use static libraries. If unset, the target's default linkage is used.
#crt-static = false
@@ -36,7 +36,7 @@ index 9907341633..6f8b52e235 100644
# probably don't want to use this.
#qemu-rootfs = "..."
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
-index 7192cae895..71435f9306 100644
+index b89976eca2..0838130039 100644
--- a/src/bootstrap/bin/rustc.rs
+++ b/src/bootstrap/bin/rustc.rs
@@ -30,7 +30,6 @@
@@ -64,7 +64,7 @@ index 7192cae895..71435f9306 100644
if let Ok(target_linker) = env::var("RUSTC_TARGET_LINKER") {
cmd.arg(format!("-Clinker={}", target_linker));
diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
-index 698903f128..629cedf019 100644
+index d5da0cabec..47cc31bded 100644
--- a/src/bootstrap/cc_detect.rs
+++ b/src/bootstrap/cc_detect.rs
@@ -95,7 +95,7 @@ pub fn find(build: &mut Build) {
@@ -123,10 +123,10 @@ index 698903f128..629cedf019 100644
}
}
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index 04e8e133b0..7767956cd8 100644
+index 608f2c982c..fea4c7ff72 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
-@@ -87,13 +87,6 @@ impl Step for Std {
+@@ -86,13 +86,6 @@ impl Step for Std {
});
builder.info(&format!("Uplifting stage1 std ({} -> {})", from.host, target));
@@ -140,7 +140,7 @@ index 04e8e133b0..7767956cd8 100644
builder.ensure(StdLink {
compiler: from,
target_compiler: compiler,
-@@ -102,11 +95,6 @@ impl Step for Std {
+@@ -101,11 +94,6 @@ impl Step for Std {
return;
}
@@ -149,10 +149,10 @@ index 04e8e133b0..7767956cd8 100644
- copy_musl_third_party_objects(builder, target, &libdir);
- }
-
- let out_dir = builder.cargo_out(compiler, Mode::Std, target);
- builder.clear_if_dirty(&out_dir, &builder.rustc(compiler));
let mut cargo = builder.cargo(compiler, Mode::Std, target, "build");
-@@ -128,20 +116,6 @@ impl Step for Std {
+ std_cargo(builder, &compiler, target, &mut cargo);
+
+@@ -126,20 +114,6 @@ impl Step for Std {
}
}
@@ -173,7 +173,7 @@ index 04e8e133b0..7767956cd8 100644
/// Configure cargo to compile the standard library, adding appropriate env vars
/// and such.
pub fn std_cargo(builder: &Builder,
-@@ -196,11 +170,6 @@ pub fn std_cargo(builder: &Builder,
+@@ -193,11 +167,6 @@ pub fn std_cargo(builder: &Builder,
cargo.env("JEMALLOC_OVERRIDE", jemalloc);
}
}
@@ -186,10 +186,10 @@ index 04e8e133b0..7767956cd8 100644
}
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
-index 0a8a5c87d0..9fdf8690c5 100644
+index cc6d76c76f..db53d09922 100644
--- a/src/bootstrap/config.rs
+++ b/src/bootstrap/config.rs
-@@ -131,8 +131,6 @@ pub struct Config {
+@@ -135,8 +135,6 @@ pub struct Config {
pub save_toolstates: Option<PathBuf>,
pub print_step_timings: bool,
@@ -198,7 +198,7 @@ index 0a8a5c87d0..9fdf8690c5 100644
pub prefix: Option<PathBuf>,
pub sysconfdir: Option<PathBuf>,
pub datadir: Option<PathBuf>,
-@@ -165,7 +163,6 @@ pub struct Target {
+@@ -170,7 +168,6 @@ pub struct Target {
pub linker: Option<PathBuf>,
pub ndk: Option<PathBuf>,
pub crt_static: Option<bool>,
@@ -206,7 +206,7 @@ index 0a8a5c87d0..9fdf8690c5 100644
pub qemu_rootfs: Option<PathBuf>,
pub no_std: bool,
}
-@@ -294,7 +291,6 @@ struct Rust {
+@@ -301,7 +298,6 @@ struct Rust {
backtrace: Option<bool>,
default_linker: Option<String>,
channel: Option<String>,
@@ -214,7 +214,7 @@ index 0a8a5c87d0..9fdf8690c5 100644
rpath: Option<bool>,
optimize_tests: Option<bool>,
debuginfo_tests: Option<bool>,
-@@ -328,7 +324,6 @@ struct TomlTarget {
+@@ -338,7 +334,6 @@ struct TomlTarget {
linker: Option<String>,
android_ndk: Option<String>,
crt_static: Option<bool>,
@@ -222,7 +222,7 @@ index 0a8a5c87d0..9fdf8690c5 100644
qemu_rootfs: Option<String>,
}
-@@ -541,7 +536,6 @@ impl Config {
+@@ -554,7 +549,6 @@ impl Config {
set(&mut config.llvm_tools_enabled, rust.llvm_tools);
config.rustc_parallel_queries = rust.experimental_parallel_queries.unwrap_or(false);
config.rustc_default_linker = rust.default_linker.clone();
@@ -230,8 +230,8 @@ index 0a8a5c87d0..9fdf8690c5 100644
config.save_toolstates = rust.save_toolstates.clone().map(PathBuf::from);
set(&mut config.deny_warnings, rust.deny_warnings.or(flags.warnings));
set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
-@@ -580,7 +574,6 @@ impl Config {
- target.ar = cfg.ar.clone().map(PathBuf::from);
+@@ -595,7 +589,6 @@ impl Config {
+ target.ranlib = cfg.ranlib.clone().map(PathBuf::from);
target.linker = cfg.linker.clone().map(PathBuf::from);
target.crt_static = cfg.crt_static.clone();
- target.musl_root = cfg.musl_root.clone().map(PathBuf::from);
@@ -239,10 +239,10 @@ index 0a8a5c87d0..9fdf8690c5 100644
config.target_config.insert(INTERNER.intern_string(triple.clone()), target);
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
-index 9fdba044f4..513935e4c8 100755
+index cf7f78eeba..70bc0f5a41 100755
--- a/src/bootstrap/configure.py
+++ b/src/bootstrap/configure.py
-@@ -108,28 +108,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
+@@ -109,28 +109,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
"aarch64-linux-android NDK standalone path")
v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
"x86_64-linux-android NDK standalone path")
@@ -272,10 +272,10 @@ index 9fdba044f4..513935e4c8 100755
"rootfs in qemu testing, you probably don't want to use this")
v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs",
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
-index e6ac847afe..dd785124d2 100644
+index 055a87efaa..5eb339ee00 100644
--- a/src/bootstrap/lib.rs
+++ b/src/bootstrap/lib.rs
-@@ -803,14 +803,6 @@ impl Build {
+@@ -848,14 +848,6 @@ impl Build {
}
}
@@ -291,7 +291,7 @@ index e6ac847afe..dd785124d2 100644
fn no_std(&self, target: Interned<String>) -> Option<bool> {
self.config.target_config.get(&target)
diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
-index c7f514da93..617a3c2399 100644
+index c2610de23b..24e05e4250 100644
--- a/src/bootstrap/sanity.rs
+++ b/src/bootstrap/sanity.rs
@@ -21,7 +21,7 @@
@@ -313,7 +313,7 @@ index c7f514da93..617a3c2399 100644
- // fall back to the system toolchain in /usr before giving up
- if build.musl_root(*target).is_none() && build.config.build == *target {
- let target = build.config.target_config.entry(target.clone())
-- .or_insert(Default::default());
+- .or_default();
- target.musl_root = Some("/usr".into());
- }
- match build.musl_root(*target) {
@@ -352,11 +352,11 @@ index ba2d32a929..412c37fdd1 100644
--disable-docs
diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile
-index 6302f55009..e04fdaa226 100644
+index e2484b7224..1855b7f3e5 100644
--- a/src/ci/docker/dist-various-1/Dockerfile
+++ b/src/ci/docker/dist-various-1/Dockerfile
-@@ -109,13 +109,6 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
- CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc
+@@ -116,13 +116,6 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
+ CC_armebv7r_none_eabi=arm-none-eabi-gcc
ENV RUST_CONFIGURE_ARGS \
- --musl-root-armv5te=/musl-armv5te \
diff --git a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
index 5a2b6c422..611a169c9 100644
--- a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+++ b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
@@ -1,17 +1,17 @@
-From e3b90583112fd59255406f245db1856e0c21dab3 Mon Sep 17 00:00:00 2001
+From 1d9278c4f249cf66677a2f934d4e704f82c6fe9d Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sat, 9 Sep 2017 00:14:16 -0500
-Subject: [PATCH 06/29] Prefer libgcc_eh over libunwind for musl
+Subject: [PATCH 06/24] Prefer libgcc_eh over libunwind for musl
---
src/libunwind/lib.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
-index 2b3c19c067..8233beada0 100644
+index 3b94dc238d..6234ed848c 100644
--- a/src/libunwind/lib.rs
+++ b/src/libunwind/lib.rs
-@@ -35,6 +35,6 @@ cfg_if! {
+@@ -37,6 +37,6 @@ cfg_if! {
}
#[cfg(target_env = "musl")]
diff --git a/user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch b/user/rust/0007-Add-powerpc-unknown-linux-musl-target.patch
index 1bafb8dd5..71efb1715 100644
--- a/user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch
+++ b/user/rust/0007-Add-powerpc-unknown-linux-musl-target.patch
@@ -1,33 +1,19 @@
-From 763b30d1e146fc04f7de2a8b1d6b17dcd94e3e0f Mon Sep 17 00:00:00 2001
+From c83f072f61eb7034f415eab21b094c6936bed2a4 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 10 Sep 2018 01:35:35 +0000
-Subject: [PATCH 16/29] Add powerpc-unknown-linux-musl target
+Subject: [PATCH 07/24] Add powerpc-unknown-linux-musl target
---
- src/bootstrap/native.rs | 1 +
src/librustc_target/spec/mod.rs | 1 +
.../spec/powerpc_unknown_linux_musl.rs | 34 +++++++++++++++++++
- src/tools/build-manifest/src/main.rs | 1 +
- 4 files changed, 37 insertions(+)
+ 2 files changed, 35 insertions(+)
create mode 100644 src/librustc_target/spec/powerpc_unknown_linux_musl.rs
-diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
-index 18c3dba233..7c32b8b546 100644
---- a/src/bootstrap/native.rs
-+++ b/src/bootstrap/native.rs
-@@ -634,6 +634,7 @@ impl Step for Openssl {
- "mipsel-unknown-linux-musl" => "linux-mips32",
- "powerpc-unknown-linux-gnu" => "linux-ppc",
- "powerpc-unknown-linux-gnuspe" => "linux-ppc",
-+ "powerpc-unknown-linux-musl" => "linux-ppc",
- "powerpc-unknown-netbsd" => "BSD-generic32",
- "powerpc64-unknown-linux-gnu" => "linux-ppc64",
- "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
-index c5d21cdc46..f09e5a7465 100644
+index 3c68b5a7ab..2e396b99e0 100644
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
-@@ -272,6 +272,7 @@ supported_targets! {
+@@ -297,6 +297,7 @@ supported_targets! {
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
@@ -75,18 +61,6 @@ index 0000000000..48340da514
+ options: base,
+ })
+}
-diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
-index 83b2895e1d..7659d24f47 100644
---- a/src/tools/build-manifest/src/main.rs
-+++ b/src/tools/build-manifest/src/main.rs
-@@ -86,6 +86,7 @@ static TARGETS: &'static [&'static str] = &[
- "mipsel-unknown-linux-musl",
- "powerpc-unknown-linux-gnu",
- "powerpc-unknown-linux-gnuspe",
-+ "powerpc-unknown-linux-musl",
- "powerpc64-unknown-linux-gnu",
- "powerpc64le-unknown-linux-gnu",
- "powerpc64le-unknown-linux-musl",
--
2.18.0
diff --git a/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch b/user/rust/0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
index d1a6daa16..e21cae762 100644
--- a/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
+++ b/user/rust/0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
@@ -1,7 +1,7 @@
-From c99f30986f8486cc24dda5630b685dd932d510d4 Mon Sep 17 00:00:00 2001
+From 5dbfa6690a13f6959e81082e45c5bf8218239069 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:34:15 +0000
-Subject: [PATCH 18/29] Fix powerpc64 ELFv2 big-endian struct-passing ABI
+Subject: [PATCH 08/24] Fix powerpc64 ELFv2 big-endian struct-passing ABI
The requirements here are not "ELFv1" requirements, but big-endian
requirements, as the extension or non-extension of the argument is
@@ -10,15 +10,15 @@ Parameter passing in the ELFv2 ABI needs these same transformations.
Since this code makes no difference on little-endian machines, simplify
it to use the same code path everywhere.
---
- src/librustc_target/abi/call/powerpc64.rs | 36 ++++++++++-------------
+ src/librustc_target/abi/call/powerpc64.rs | 29 ++++++++++-------------
src/librustc_target/abi/mod.rs | 2 +-
- 2 files changed, 17 insertions(+), 21 deletions(-)
+ 2 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
-index 4851b25fe7..9e616c034e 100644
+index 0c5ec77a39..934d2b1138 100644
--- a/src/librustc_target/abi/call/powerpc64.rs
+++ b/src/librustc_target/abi/call/powerpc64.rs
-@@ -76,7 +76,9 @@ fn classify_ret_ty<'a, Ty, C>(cx: C, ret: &mut ArgType<'a, Ty>, abi: ABI)
+@@ -75,7 +75,9 @@ fn classify_ret_ty<'a, Ty, C>(cx: C, ret: &mut ArgType<'a, Ty>, abi: ABI)
let size = ret.layout.size;
let bits = size.bits();
if bits <= 128 {
@@ -29,7 +29,7 @@ index 4851b25fe7..9e616c034e 100644
Reg::i8()
} else if bits <= 16 {
Reg::i16()
-@@ -111,22 +113,15 @@ fn classify_arg_ty<'a, Ty, C>(cx: C, arg: &mut ArgType<'a, Ty>, abi: ABI)
+@@ -110,22 +112,15 @@ fn classify_arg_ty<'a, Ty, C>(cx: C, arg: &mut ArgType<'a, Ty>, abi: ABI)
}
let size = arg.layout.size;
@@ -61,22 +61,8 @@ index 4851b25fe7..9e616c034e 100644
};
arg.cast_to(Uniform {
-@@ -139,9 +134,10 @@ pub fn compute_abi_info<'a, Ty, C>(cx: C, fty: &mut FnType<'a, Ty>)
- where Ty: TyLayoutMethods<'a, C> + Copy,
- C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec
- {
-- let abi = match cx.target_spec().target_env {
-- "musl" => ELFv2,
-- _ => match cx.data_layout().endian {
-+ let abi = if cx.target_spec().target_env == "musl" {
-+ ELFv2
-+ } else {
-+ match cx.data_layout().endian {
- Endian::Big => ELFv1,
- Endian::Little => ELFv2
- }
diff --git a/src/librustc_target/abi/mod.rs b/src/librustc_target/abi/mod.rs
-index dac4738e2b..35b1ceb967 100644
+index 5c4cd849f8..bdbc592b6b 100644
--- a/src/librustc_target/abi/mod.rs
+++ b/src/librustc_target/abi/mod.rs
@@ -214,7 +214,7 @@ impl<'a> HasDataLayout for &'a TargetDataLayout {
diff --git a/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch b/user/rust/0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
index dd11dd568..667e9b404 100644
--- a/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
+++ b/user/rust/0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
@@ -1,17 +1,17 @@
-From e1214a04a9f8a30b67665ef353e3934e15e24a16 Mon Sep 17 00:00:00 2001
+From 4fc3ffc1ec745c25b2727a076380e237beb2515c Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Wed, 8 Aug 2018 22:06:18 -0500
-Subject: [PATCH 17/29] Use the ELFv2 ABI on powerpc64 musl
+Subject: [PATCH 09/24] Use the ELFv2 ABI on powerpc64 musl
---
- src/librustc_target/abi/call/powerpc64.rs | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
+ src/librustc_target/abi/call/powerpc64.rs | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
-index 0c5ec77a39..4851b25fe7 100644
+index 934d2b1138..18d14495e2 100644
--- a/src/librustc_target/abi/call/powerpc64.rs
+++ b/src/librustc_target/abi/call/powerpc64.rs
-@@ -14,6 +14,7 @@
+@@ -14,11 +14,12 @@
use abi::call::{FnType, ArgType, Reg, RegKind, Uniform};
use abi::{Align, Endian, HasDataLayout, LayoutOf, TyLayout, TyLayoutMethods};
@@ -19,7 +19,13 @@ index 0c5ec77a39..4851b25fe7 100644
#[derive(Debug, Clone, Copy, PartialEq)]
enum ABI {
-@@ -136,11 +137,14 @@ fn classify_arg_ty<'a, Ty, C>(cx: C, arg: &mut ArgType<'a, Ty>, abi: ABI)
+ ELFv1, // original ABI used for powerpc64 (big-endian)
+- ELFv2, // newer ABI used for powerpc64le
++ ELFv2, // newer ABI used for powerpc64le and musl (both endians)
+ }
+ use self::ABI::*;
+
+@@ -131,11 +132,15 @@ fn classify_arg_ty<'a, Ty, C>(cx: C, arg: &mut ArgType<'a, Ty>, abi: ABI)
pub fn compute_abi_info<'a, Ty, C>(cx: C, fty: &mut FnType<'a, Ty>)
where Ty: TyLayoutMethods<'a, C> + Copy,
@@ -29,9 +35,10 @@ index 0c5ec77a39..4851b25fe7 100644
- let abi = match cx.data_layout().endian {
- Endian::Big => ELFv1,
- Endian::Little => ELFv2,
-+ let abi = match cx.target_spec().target_env {
-+ "musl" => ELFv2,
-+ _ => match cx.data_layout().endian {
++ let abi = if cx.target_spec().target_env == "musl" {
++ ELFv2
++ } else {
++ match cx.data_layout().endian {
+ Endian::Big => ELFv1,
+ Endian::Little => ELFv2
+ }
diff --git a/user/rust/0010-Add-powerpc64-unknown-linux-musl-target.patch b/user/rust/0010-Add-powerpc64-unknown-linux-musl-target.patch
new file mode 100644
index 000000000..b09e24fe1
--- /dev/null
+++ b/user/rust/0010-Add-powerpc64-unknown-linux-musl-target.patch
@@ -0,0 +1,67 @@
+From ed45371c6dc89c3f9d4546ce1a544903eb90cb96 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Tue, 7 Aug 2018 21:59:15 -0500
+Subject: [PATCH 10/24] Add powerpc64-unknown-linux-musl target
+
+---
+ src/librustc_target/spec/mod.rs | 1 +
+ .../spec/powerpc64_unknown_linux_musl.rs | 35 +++++++++++++++++++
+ 2 files changed, 36 insertions(+)
+ create mode 100644 src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
+
+diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
+index 2e396b99e0..9ee761fd51 100644
+--- a/src/librustc_target/spec/mod.rs
++++ b/src/librustc_target/spec/mod.rs
+@@ -299,6 +299,7 @@ supported_targets! {
+ ("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
+ ("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
+ ("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
++ ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
+ ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
+ ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
+ ("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
+diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
+new file mode 100644
+index 0000000000..24ff9e0ecd
+--- /dev/null
++++ b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
+@@ -0,0 +1,35 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::{LinkerFlavor, Target, TargetResult};
++
++pub fn target() -> TargetResult {
++ let mut base = super::linux_musl_base::opts();
++ base.cpu = "ppc64".to_string();
++ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
++ base.max_atomic_width = Some(64);
++
++ // see #36994
++ base.exe_allocation_crate = None;
++
++ Ok(Target {
++ llvm_target: "powerpc64-unknown-linux-musl".to_string(),
++ target_endian: "big".to_string(),
++ target_pointer_width: "64".to_string(),
++ target_c_int_width: "32".to_string(),
++ data_layout: "E-m:e-i64:64-n32:64".to_string(),
++ arch: "powerpc64".to_string(),
++ target_os: "linux".to_string(),
++ target_env: "musl".to_string(),
++ target_vendor: "unknown".to_string(),
++ linker_flavor: LinkerFlavor::Gcc,
++ options: base,
++ })
++}
+--
+2.18.0
+
diff --git a/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch b/user/rust/0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch
index 6ae697151..a010698ec 100644
--- a/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
+++ b/user/rust/0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch
@@ -1,17 +1,17 @@
-From 7595533dfe8121a2dcaec6de1653c3fb40349985 Mon Sep 17 00:00:00 2001
+From 4affbaecfc9706253ce31e0008ad42dcd7f35a29 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 11 Sep 2017 11:21:56 -0500
-Subject: [PATCH 09/29] Add missing OpenSSL configurations for musl targets
+Subject: [PATCH 11/24] Add missing OpenSSL configurations for musl targets
---
- src/bootstrap/native.rs | 6 ++++++
- 1 file changed, 6 insertions(+)
+ src/bootstrap/native.rs | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
-index 9aeb4e0eda..18c3dba233 100644
+index 424264647f..a0329910be 100644
--- a/src/bootstrap/native.rs
+++ b/src/bootstrap/native.rs
-@@ -610,9 +610,13 @@ impl Step for Openssl {
+@@ -643,9 +643,13 @@ impl Step for Openssl {
"arm-linux-androideabi" => "android",
"arm-unknown-linux-gnueabi" => "linux-armv4",
"arm-unknown-linux-gnueabihf" => "linux-armv4",
@@ -25,7 +25,7 @@ index 9aeb4e0eda..18c3dba233 100644
"armv7-unknown-netbsd-eabihf" => "BSD-generic32",
"i586-unknown-linux-gnu" => "linux-elf",
"i586-unknown-linux-musl" => "linux-elf",
-@@ -623,9 +627,11 @@ impl Step for Openssl {
+@@ -656,13 +660,17 @@ impl Step for Openssl {
"i686-unknown-linux-musl" => "linux-elf",
"i686-unknown-netbsd" => "BSD-x86-elf",
"mips-unknown-linux-gnu" => "linux-mips32",
@@ -36,7 +36,24 @@ index 9aeb4e0eda..18c3dba233 100644
+ "mipsel-unknown-linux-musl" => "linux-mips32",
"powerpc-unknown-linux-gnu" => "linux-ppc",
"powerpc-unknown-linux-gnuspe" => "linux-ppc",
++ "powerpc-unknown-linux-musl" => "linux-ppc",
"powerpc-unknown-netbsd" => "BSD-generic32",
+ "powerpc64-unknown-linux-gnu" => "linux-ppc64",
++ "powerpc64-unknown-linux-musl" => "linux-ppc64",
+ "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
+ "powerpc64le-unknown-linux-musl" => "linux-ppc64le",
+ "s390x-unknown-linux-gnu" => "linux64-s390x",
+@@ -690,6 +698,10 @@ impl Step for Openssl {
+ configure.arg("-mandroid");
+ configure.arg("-fomit-frame-pointer");
+ }
++ // OpenSSL ships incompatible ELFv1 ABI assembly code
++ if target == "powerpc64-unknown-linux-musl" {
++ configure.arg("no-asm");
++ }
+ if target == "sparc64-unknown-netbsd" {
+ // Need -m64 to get assembly generated correctly for sparc64.
+ configure.arg("-m64");
--
2.18.0
diff --git a/user/rust/0012-rustc_data_structures-use-libc-types-constants-in-fl.patch b/user/rust/0012-rustc_data_structures-use-libc-types-constants-in-fl.patch
new file mode 100644
index 000000000..429c986da
--- /dev/null
+++ b/user/rust/0012-rustc_data_structures-use-libc-types-constants-in-fl.patch
@@ -0,0 +1,209 @@
+From e587a3f45f91053d1f7b20089f984b227af741f7 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Tue, 9 Oct 2018 04:15:48 +0000
+Subject: [PATCH 12/24] rustc_data_structures: use libc types/constants in
+ flock
+
+---
+ src/librustc_data_structures/flock.rs | 155 ++------------------------
+ 1 file changed, 10 insertions(+), 145 deletions(-)
+
+diff --git a/src/librustc_data_structures/flock.rs b/src/librustc_data_structures/flock.rs
+index 38ce331051..d5c38b9a39 100644
+--- a/src/librustc_data_structures/flock.rs
++++ b/src/librustc_data_structures/flock.rs
+@@ -26,143 +26,6 @@ cfg_if! {
+ use std::os::unix::prelude::*;
+ use libc;
+
+- #[cfg(any(target_os = "linux", target_os = "android"))]
+- mod os {
+- use libc;
+-
+- #[repr(C)]
+- pub struct flock {
+- pub l_type: libc::c_short,
+- pub l_whence: libc::c_short,
+- pub l_start: libc::off_t,
+- pub l_len: libc::off_t,
+- pub l_pid: libc::pid_t,
+-
+- // not actually here, but brings in line with freebsd
+- pub l_sysid: libc::c_int,
+- }
+-
+- pub const F_RDLCK: libc::c_short = 0;
+- pub const F_WRLCK: libc::c_short = 1;
+- pub const F_UNLCK: libc::c_short = 2;
+- pub const F_SETLK: libc::c_int = 6;
+- pub const F_SETLKW: libc::c_int = 7;
+- }
+-
+- #[cfg(target_os = "freebsd")]
+- mod os {
+- use libc;
+-
+- #[repr(C)]
+- pub struct flock {
+- pub l_start: libc::off_t,
+- pub l_len: libc::off_t,
+- pub l_pid: libc::pid_t,
+- pub l_type: libc::c_short,
+- pub l_whence: libc::c_short,
+- pub l_sysid: libc::c_int,
+- }
+-
+- pub const F_RDLCK: libc::c_short = 1;
+- pub const F_UNLCK: libc::c_short = 2;
+- pub const F_WRLCK: libc::c_short = 3;
+- pub const F_SETLK: libc::c_int = 12;
+- pub const F_SETLKW: libc::c_int = 13;
+- }
+-
+- #[cfg(any(target_os = "dragonfly",
+- target_os = "bitrig",
+- target_os = "netbsd",
+- target_os = "openbsd"))]
+- mod os {
+- use libc;
+-
+- #[repr(C)]
+- pub struct flock {
+- pub l_start: libc::off_t,
+- pub l_len: libc::off_t,
+- pub l_pid: libc::pid_t,
+- pub l_type: libc::c_short,
+- pub l_whence: libc::c_short,
+-
+- // not actually here, but brings in line with freebsd
+- pub l_sysid: libc::c_int,
+- }
+-
+- pub const F_RDLCK: libc::c_short = 1;
+- pub const F_UNLCK: libc::c_short = 2;
+- pub const F_WRLCK: libc::c_short = 3;
+- pub const F_SETLK: libc::c_int = 8;
+- pub const F_SETLKW: libc::c_int = 9;
+- }
+-
+- #[cfg(target_os = "haiku")]
+- mod os {
+- use libc;
+-
+- #[repr(C)]
+- pub struct flock {
+- pub l_type: libc::c_short,
+- pub l_whence: libc::c_short,
+- pub l_start: libc::off_t,
+- pub l_len: libc::off_t,
+- pub l_pid: libc::pid_t,
+-
+- // not actually here, but brings in line with freebsd
+- pub l_sysid: libc::c_int,
+- }
+-
+- pub const F_RDLCK: libc::c_short = 0x0040;
+- pub const F_UNLCK: libc::c_short = 0x0200;
+- pub const F_WRLCK: libc::c_short = 0x0400;
+- pub const F_SETLK: libc::c_int = 0x0080;
+- pub const F_SETLKW: libc::c_int = 0x0100;
+- }
+-
+- #[cfg(any(target_os = "macos", target_os = "ios"))]
+- mod os {
+- use libc;
+-
+- #[repr(C)]
+- pub struct flock {
+- pub l_start: libc::off_t,
+- pub l_len: libc::off_t,
+- pub l_pid: libc::pid_t,
+- pub l_type: libc::c_short,
+- pub l_whence: libc::c_short,
+-
+- // not actually here, but brings in line with freebsd
+- pub l_sysid: libc::c_int,
+- }
+-
+- pub const F_RDLCK: libc::c_short = 1;
+- pub const F_UNLCK: libc::c_short = 2;
+- pub const F_WRLCK: libc::c_short = 3;
+- pub const F_SETLK: libc::c_int = 8;
+- pub const F_SETLKW: libc::c_int = 9;
+- }
+-
+- #[cfg(target_os = "solaris")]
+- mod os {
+- use libc;
+-
+- #[repr(C)]
+- pub struct flock {
+- pub l_type: libc::c_short,
+- pub l_whence: libc::c_short,
+- pub l_start: libc::off_t,
+- pub l_len: libc::off_t,
+- pub l_sysid: libc::c_int,
+- pub l_pid: libc::pid_t,
+- }
+-
+- pub const F_RDLCK: libc::c_short = 1;
+- pub const F_WRLCK: libc::c_short = 2;
+- pub const F_UNLCK: libc::c_short = 3;
+- pub const F_SETLK: libc::c_int = 6;
+- pub const F_SETLKW: libc::c_int = 7;
+- }
+-
+ #[derive(Debug)]
+ pub struct Lock {
+ fd: libc::c_int,
+@@ -192,20 +55,21 @@ cfg_if! {
+ }
+
+ let lock_type = if exclusive {
+- os::F_WRLCK
++ libc::F_WRLCK
+ } else {
+- os::F_RDLCK
++ libc::F_RDLCK
+ };
+
+- let flock = os::flock {
++ let flock = libc::flock {
+ l_start: 0,
+ l_len: 0,
+ l_pid: 0,
+ l_whence: libc::SEEK_SET as libc::c_short,
+- l_type: lock_type,
++ l_type: lock_type as libc::c_short,
++ #[cfg(any(target_os = "freebsd", target_os = "solaris"))]
+ l_sysid: 0,
+ };
+- let cmd = if wait { os::F_SETLKW } else { os::F_SETLK };
++ let cmd = if wait { libc::F_SETLKW } else { libc::F_SETLK };
+ let ret = unsafe {
+ libc::fcntl(fd, cmd, &flock)
+ };
+@@ -221,16 +85,17 @@ cfg_if! {
+
+ impl Drop for Lock {
+ fn drop(&mut self) {
+- let flock = os::flock {
++ let flock = libc::flock {
+ l_start: 0,
+ l_len: 0,
+ l_pid: 0,
+ l_whence: libc::SEEK_SET as libc::c_short,
+- l_type: os::F_UNLCK,
++ l_type: libc::F_UNLCK as libc::c_short,
++ #[cfg(any(target_os = "freebsd", target_os = "solaris"))]
+ l_sysid: 0,
+ };
+ unsafe {
+- libc::fcntl(self.fd, os::F_SETLK, &flock);
++ libc::fcntl(self.fd, libc::F_SETLK, &flock);
+ libc::close(self.fd);
+ }
+ }
+--
+2.18.0
+
diff --git a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch b/user/rust/0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
index 745c5a45f..92bace266 100644
--- a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+++ b/user/rust/0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
@@ -1,17 +1,17 @@
-From d77940e640855aed389af02a95db7958375785e1 Mon Sep 17 00:00:00 2001
+From 294a9feda6b101466e9ca1646bc3c802afcbe36a Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:40:04 +0000
-Subject: [PATCH 07/29] runtest: Fix proc-macro tests on musl hosts
+Subject: [PATCH 13/24] runtest: Fix proc-macro tests on musl hosts
---
src/tools/compiletest/src/runtest.rs | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
-index ce7828144c..ec48fd2d85 100644
+index 2d49c83edb..f19aaf54f0 100644
--- a/src/tools/compiletest/src/runtest.rs
+++ b/src/tools/compiletest/src/runtest.rs
-@@ -1509,7 +1509,6 @@ impl<'test> TestCx<'test> {
+@@ -1507,7 +1507,6 @@ impl<'test> TestCx<'test> {
None
} else if self.config.target.contains("cloudabi")
|| self.config.target.contains("emscripten")
@@ -19,7 +19,7 @@ index ce7828144c..ec48fd2d85 100644
|| self.config.target.contains("wasm32")
{
// We primarily compile all auxiliary libraries as dynamic libraries
-@@ -1517,10 +1516,8 @@ impl<'test> TestCx<'test> {
+@@ -1515,10 +1514,8 @@ impl<'test> TestCx<'test> {
// for the test suite (otherwise including libstd statically in all
// executables takes up quite a bit of space).
//
diff --git a/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch b/user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch
index 720db7d10..632f0c456 100644
--- a/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch
+++ b/user/rust/0014-Fix-double_check-tests-on-big-endian-targets.patch
@@ -1,22 +1,22 @@
-From 55549ca3d760200dc6037fecc7e5b8816558c5b1 Mon Sep 17 00:00:00 2001
+From 2a347ba6131fa5b1eedb3236fe25a6ca25842e19 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
-Date: Sun, 16 Sep 2018 16:37:58 +0000
-Subject: [PATCH 21/29] Fix double_check tests on big-endian targets
+Date: Sun, 16 Sep 2018 18:27:56 +0000
+Subject: [PATCH 14/24] Fix double_check tests on big-endian targets
Since the enums get optimized down to 1 byte long, the bits
set in the usize member don't align with the enums on big-endian
machines. Avoid this issue by shrinking the integer member to the
same size as the enums.
---
- src/test/ui/const-eval/double_check.rs | 8 ++++----
- src/test/ui/const-eval/double_check2.rs | 8 ++++----
- src/test/ui/const-eval/double_check2.stderr | 4 ++--
+ src/test/ui/consts/const-eval/double_check.rs | 8 ++++----
+ src/test/ui/consts/const-eval/double_check2.rs | 8 ++++----
+ src/test/ui/consts/const-eval/double_check2.stderr | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
-diff --git a/src/test/ui/const-eval/double_check.rs b/src/test/ui/const-eval/double_check.rs
+diff --git a/src/test/ui/consts/const-eval/double_check.rs b/src/test/ui/consts/const-eval/double_check.rs
index 81f6e7ddd2..76f9276c05 100644
---- a/src/test/ui/const-eval/double_check.rs
-+++ b/src/test/ui/const-eval/double_check.rs
+--- a/src/test/ui/consts/const-eval/double_check.rs
++++ b/src/test/ui/consts/const-eval/double_check.rs
@@ -21,12 +21,12 @@ enum Bar {
union Union {
foo: &'static Foo,
@@ -34,10 +34,10 @@ index 81f6e7ddd2..76f9276c05 100644
)};
fn main() {}
-diff --git a/src/test/ui/const-eval/double_check2.rs b/src/test/ui/const-eval/double_check2.rs
+diff --git a/src/test/ui/consts/const-eval/double_check2.rs b/src/test/ui/consts/const-eval/double_check2.rs
index b661ee9247..701632362c 100644
---- a/src/test/ui/const-eval/double_check2.rs
-+++ b/src/test/ui/const-eval/double_check2.rs
+--- a/src/test/ui/consts/const-eval/double_check2.rs
++++ b/src/test/ui/consts/const-eval/double_check2.rs
@@ -19,12 +19,12 @@ enum Bar {
union Union {
foo: &'static Foo,
@@ -55,10 +55,10 @@ index b661ee9247..701632362c 100644
)};
fn main() {}
-diff --git a/src/test/ui/const-eval/double_check2.stderr b/src/test/ui/const-eval/double_check2.stderr
-index 2a0a674e23..d0f44a627b 100644
---- a/src/test/ui/const-eval/double_check2.stderr
-+++ b/src/test/ui/const-eval/double_check2.stderr
+diff --git a/src/test/ui/consts/const-eval/double_check2.stderr b/src/test/ui/consts/const-eval/double_check2.stderr
+index 2102587734..78a112304e 100644
+--- a/src/test/ui/consts/const-eval/double_check2.stderr
++++ b/src/test/ui/consts/const-eval/double_check2.stderr
@@ -2,8 +2,8 @@ error[E0080]: this static likely exhibits undefined behavior
--> $DIR/double_check2.rs:25:1
|
@@ -68,7 +68,7 @@ index 2a0a674e23..d0f44a627b 100644
+LL | | Union { u8: &BAR }.foo,
+LL | | Union { u8: &BAR }.bar,
LL | | )};
- | |___^ type validation failed: encountered 5 at (*.1).TAG, but expected something in the range 42..=99
+ | |___^ type validation failed: encountered invalid enum discriminant 5 at .1.<deref>
|
--
2.18.0
diff --git a/user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch b/user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
deleted file mode 100644
index de9661d3a..000000000
--- a/user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 9c13dec5a526a4a66dc45453ab1808ab9a1bb10b Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Tue, 9 Oct 2018 04:15:48 +0000
-Subject: [PATCH 15/29] flock: Fix F_SETLK/F_SETLKW on 32-bit O_LARGEFILE
-
----
- src/librustc_data_structures/flock.rs | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/librustc_data_structures/flock.rs b/src/librustc_data_structures/flock.rs
-index ff1ebb11b7..d85017ec50 100644
---- a/src/librustc_data_structures/flock.rs
-+++ b/src/librustc_data_structures/flock.rs
-@@ -46,8 +46,8 @@ mod imp {
- pub const F_RDLCK: libc::c_short = 0;
- pub const F_WRLCK: libc::c_short = 1;
- pub const F_UNLCK: libc::c_short = 2;
-- pub const F_SETLK: libc::c_int = 6;
-- pub const F_SETLKW: libc::c_int = 7;
-+ pub const F_SETLK: libc::c_int = libc::F_SETLK;
-+ pub const F_SETLKW: libc::c_int = libc::F_SETLKW;
- }
-
- #[cfg(target_os = "freebsd")]
---
-2.18.0
-
diff --git a/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch b/user/rust/0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
index 58db71538..dcd5a3fdf 100644
--- a/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
+++ b/user/rust/0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
@@ -1,7 +1,7 @@
-From 097f992e9ef62963f5e938e9a21171253a72b36a Mon Sep 17 00:00:00 2001
+From 44e00e6842dd230f1da838de231446f1c1c3e48d Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:37:09 +0000
-Subject: [PATCH 11/29] test/invalid_const_promotion: Accept SIGTRAP as a valid
+Subject: [PATCH 15/24] test/invalid_const_promotion: Accept SIGTRAP as a valid
death signal
---
@@ -9,10 +9,10 @@ Subject: [PATCH 11/29] test/invalid_const_promotion: Accept SIGTRAP as a valid
1 file changed, 1 insertion(+)
diff --git a/src/test/run-pass/invalid_const_promotion.rs b/src/test/run-pass/invalid_const_promotion.rs
-index 53cb4c4b00..dc4c0a51dd 100644
+index a18d82fb7a..2b159db9fd 100644
--- a/src/test/run-pass/invalid_const_promotion.rs
+++ b/src/test/run-pass/invalid_const_promotion.rs
-@@ -33,6 +33,7 @@ fn check_status(status: std::process::ExitStatus)
+@@ -35,6 +35,7 @@ fn check_status(status: std::process::ExitStatus)
use std::os::unix::process::ExitStatusExt;
assert!(status.signal() == Some(libc::SIGILL)
diff --git a/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch b/user/rust/0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch
index 15f431e5a..8dd7cf47e 100644
--- a/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
+++ b/user/rust/0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch
@@ -1,9 +1,13 @@
-From 289d2f3ceb6226c385f3784d310465f375dc0c00 Mon Sep 17 00:00:00 2001
+From 48b225e5e66e6bfd912d8e66cfed4d7f95591d07 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:35:41 +0000
-Subject: [PATCH 10/29] test/linkage-visibility: dlsym only sees exported
- symbols
+Subject: [PATCH 16/24] test/linkage-visibility: Ensure symbols are visible to
+ dlsym
+DynamicLibrary uses libc's dlsym() function internally to find symbols.
+Some implementations of dlsym(), like musl's, only look at dynamically-
+exported symbols, as found in shared libraries. To also export symbols
+from the main executable, pass --export-dynamic to the linker.
---
src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/user/rust/0022-x.py-Use-python3-instead-of-python.patch b/user/rust/0017-x.py-Use-python3-instead-of-python.patch
index e23de6cef..0705a3b91 100644
--- a/user/rust/0022-x.py-Use-python3-instead-of-python.patch
+++ b/user/rust/0017-x.py-Use-python3-instead-of-python.patch
@@ -1,7 +1,7 @@
-From 2a14cfeafd57037b4063e411f8e90f09bbe29fa4 Mon Sep 17 00:00:00 2001
+From ca7e83bc78d65d9ae279a159dcd3e37258e252f4 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 10 Sep 2018 01:36:00 +0000
-Subject: [PATCH 22/29] x.py: Use python3 instead of python
+Subject: [PATCH 17/24] x.py: Use python3 instead of python
---
x.py | 2 +-
diff --git a/user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch b/user/rust/0018-test-target-feature-gate-Only-run-on-relevant-target.patch
index 0bfa28fe9..5b77644b5 100644
--- a/user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch
+++ b/user/rust/0018-test-target-feature-gate-Only-run-on-relevant-target.patch
@@ -1,7 +1,7 @@
-From beb589601f0ca9dd762aaa9f52a440bbef68e943 Mon Sep 17 00:00:00 2001
+From 73be7ecaabfa667da8a94d55069e61954c5525fe Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:39:46 +0000
-Subject: [PATCH 23/29] test/target-feature-gate: Only run on relevant targets
+Subject: [PATCH 18/24] test/target-feature-gate: Only run on relevant targets
---
src/test/ui/target-feature-gate.rs | 2 ++
@@ -9,7 +9,7 @@ Subject: [PATCH 23/29] test/target-feature-gate: Only run on relevant targets
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/test/ui/target-feature-gate.rs b/src/test/ui/target-feature-gate.rs
-index 69208f1513..59c5708b0c 100644
+index 8a045884ca..5e90417fc3 100644
--- a/src/test/ui/target-feature-gate.rs
+++ b/src/test/ui/target-feature-gate.rs
@@ -10,6 +10,8 @@
@@ -20,15 +20,15 @@ index 69208f1513..59c5708b0c 100644
+// ignore-powerpc64
// ignore-wasm
// ignore-emscripten
- // gate-test-sse4a_target_feature
+ // ignore-mips
diff --git a/src/test/ui/target-feature-gate.stderr b/src/test/ui/target-feature-gate.stderr
-index a6f794a1a1..24141d0064 100644
+index f18bebc0c2..5458953601 100644
--- a/src/test/ui/target-feature-gate.stderr
+++ b/src/test/ui/target-feature-gate.stderr
@@ -1,5 +1,5 @@
error[E0658]: the target feature `avx512bw` is currently unstable (see issue #44839)
-- --> $DIR/target-feature-gate.rs:26:18
-+ --> $DIR/target-feature-gate.rs:28:18
+- --> $DIR/target-feature-gate.rs:29:18
++ --> $DIR/target-feature-gate.rs:31:18
|
LL | #[target_feature(enable = "avx512bw")]
| ^^^^^^^^^^^^^^^^^^^
diff --git a/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch b/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch
deleted file mode 100644
index de0f2bc82..000000000
--- a/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 914179b27fdabbbd42da8206f46621a006e54180 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Tue, 7 Aug 2018 21:59:15 -0500
-Subject: [PATCH 19/29] Add powerpc64-unknown-linux-musl target
-
----
- src/bootstrap/native.rs | 5 +++
- src/librustc_target/abi/call/powerpc64.rs | 2 +-
- src/librustc_target/spec/mod.rs | 1 +
- .../spec/powerpc64_unknown_linux_musl.rs | 35 +++++++++++++++++++
- src/tools/build-manifest/src/main.rs | 1 +
- 5 files changed, 43 insertions(+), 1 deletion(-)
- create mode 100644 src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
-
-diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
-index 7c32b8b546..186ef75189 100644
---- a/src/bootstrap/native.rs
-+++ b/src/bootstrap/native.rs
-@@ -637,6 +637,7 @@ impl Step for Openssl {
- "powerpc-unknown-linux-musl" => "linux-ppc",
- "powerpc-unknown-netbsd" => "BSD-generic32",
- "powerpc64-unknown-linux-gnu" => "linux-ppc64",
-+ "powerpc64-unknown-linux-musl" => "linux-ppc64",
- "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
- "powerpc64le-unknown-linux-musl" => "linux-ppc64le",
- "s390x-unknown-linux-gnu" => "linux64-s390x",
-@@ -664,6 +665,10 @@ impl Step for Openssl {
- configure.arg("-mandroid");
- configure.arg("-fomit-frame-pointer");
- }
-+ // OpenSSL ships incompatible ELFv1 ABI assembly code
-+ if target == "powerpc64-unknown-linux-musl" {
-+ configure.arg("no-asm");
-+ }
- if target == "sparc64-unknown-netbsd" {
- // Need -m64 to get assembly generated correctly for sparc64.
- configure.arg("-m64");
-diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
-index 9e616c034e..18d14495e2 100644
---- a/src/librustc_target/abi/call/powerpc64.rs
-+++ b/src/librustc_target/abi/call/powerpc64.rs
-@@ -19,7 +19,7 @@ use spec::HasTargetSpec;
- #[derive(Debug, Clone, Copy, PartialEq)]
- enum ABI {
- ELFv1, // original ABI used for powerpc64 (big-endian)
-- ELFv2, // newer ABI used for powerpc64le
-+ ELFv2, // newer ABI used for powerpc64le and musl (both endians)
- }
- use self::ABI::*;
-
-diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
-index f09e5a7465..94aa07abb6 100644
---- a/src/librustc_target/spec/mod.rs
-+++ b/src/librustc_target/spec/mod.rs
-@@ -274,6 +274,7 @@ supported_targets! {
- ("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
- ("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
- ("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
-+ ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
- ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
- ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
- ("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
-diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
-new file mode 100644
-index 0000000000..24ff9e0ecd
---- /dev/null
-+++ b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
-@@ -0,0 +1,35 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::{LinkerFlavor, Target, TargetResult};
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::linux_musl_base::opts();
-+ base.cpu = "ppc64".to_string();
-+ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
-+ base.max_atomic_width = Some(64);
-+
-+ // see #36994
-+ base.exe_allocation_crate = None;
-+
-+ Ok(Target {
-+ llvm_target: "powerpc64-unknown-linux-musl".to_string(),
-+ target_endian: "big".to_string(),
-+ target_pointer_width: "64".to_string(),
-+ target_c_int_width: "32".to_string(),
-+ data_layout: "E-m:e-i64:64-n32:64".to_string(),
-+ arch: "powerpc64".to_string(),
-+ target_os: "linux".to_string(),
-+ target_env: "musl".to_string(),
-+ target_vendor: "unknown".to_string(),
-+ linker_flavor: LinkerFlavor::Gcc,
-+ options: base,
-+ })
-+}
-diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
-index 7659d24f47..e20f9fe216 100644
---- a/src/tools/build-manifest/src/main.rs
-+++ b/src/tools/build-manifest/src/main.rs
-@@ -88,6 +88,7 @@ static TARGETS: &'static [&'static str] = &[
- "powerpc-unknown-linux-gnuspe",
- "powerpc-unknown-linux-musl",
- "powerpc64-unknown-linux-gnu",
-+ "powerpc64-unknown-linux-musl",
- "powerpc64le-unknown-linux-gnu",
- "powerpc64le-unknown-linux-musl",
- "s390x-unknown-linux-gnu",
---
-2.18.0
-
diff --git a/user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch b/user/rust/0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch
index c033bb558..c01ad1164 100644
--- a/user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+++ b/user/rust/0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch
@@ -1,7 +1,7 @@
-From 0fbfd4524768afad009e8e94c8824adfd7bd3b00 Mon Sep 17 00:00:00 2001
+From 7ffbe4996aafefccae231260a3a282fc48c6a84d Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sat, 6 Oct 2018 04:01:48 +0000
-Subject: [PATCH 24/29] test/use-extern-for-plugins: Don't assume multilib
+Subject: [PATCH 19/24] test/use-extern-for-plugins: Don't assume multilib
---
src/test/run-make-fulldeps/use-extern-for-plugins/Makefile | 7 +------
diff --git a/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch b/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch
deleted file mode 100644
index 151b3f419..000000000
--- a/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 72c7e78b400c1ad96d84b254b51dcc9f2baea3e1 Mon Sep 17 00:00:00 2001
-From: Josh Stone <jistone@redhat.com>
-Date: Mon, 30 Jul 2018 13:08:56 -0700
-Subject: [PATCH 20/29] run-pass/const-endianness: negate before to_le()
-
-`const LE_I128` needs parentheses to negate the value *before* calling
-`to_le()`, otherwise it doesn't match the operations performed in the
-black-boxed part of the test. This only makes a tangible difference on
-big-endian targets.
----
- src/test/run-pass/const-endianess.rs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/test/run-pass/const-endianess.rs b/src/test/run-pass/const-endianess.rs
-index fa34b49210..95c738d3ec 100644
---- a/src/test/run-pass/const-endianess.rs
-+++ b/src/test/run-pass/const-endianess.rs
-@@ -25,7 +25,7 @@ fn main() {
- #[cfg(not(target_arch = "asmjs"))]
- {
- const BE_U128: u128 = 999999u128.to_be();
-- const LE_I128: i128 = -999999i128.to_le();
-+ const LE_I128: i128 = (-999999i128).to_le();
- assert_eq!(BE_U128, b(999999u128).to_be());
- assert_eq!(LE_I128, b(-999999i128).to_le());
- }
---
-2.18.0
-
diff --git a/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/user/rust/0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
index a28fc39b0..13c1d4795 100644
--- a/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+++ b/user/rust/0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
@@ -1,7 +1,7 @@
-From 898e72085351cae381669960fcc4d20b8afeeb78 Mon Sep 17 00:00:00 2001
+From 551fd6c9c61c77eb98bed53c67f412033f9328af Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 01:32:20 +0000
-Subject: [PATCH 04/29] test/sysroot-crates-are-unstable: Fix test when rpath
+Subject: [PATCH 20/24] test/sysroot-crates-are-unstable: Fix test when rpath
is disabled
Without this environment var, the test can't run rustc to find
diff --git a/user/rust/0025-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0021-Ignore-broken-and-non-applicable-tests.patch
index 12c3e46dd..b44c89637 100644
--- a/user/rust/0025-Ignore-broken-and-non-applicable-tests.patch
+++ b/user/rust/0021-Ignore-broken-and-non-applicable-tests.patch
@@ -1,7 +1,7 @@
-From 72a9bf3841f3c07db121f6d41ccd448d73aa1c01 Mon Sep 17 00:00:00 2001
+From d25ab4c89e6ce3afdb84db0c9028c7f5facbbf3c Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:38:48 +0000
-Subject: [PATCH 25/29] Ignore broken and non-applicable tests
+Subject: [PATCH 21/24] Ignore broken and non-applicable tests
long-linker-command-lines: takes >10 minutes to run (but still passes)
sparc-struct-abi: no sparc target
@@ -13,12 +13,12 @@ sysroot-crates-are-unstable: can't run rustc without rpath
3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs
-index d3b7a5cd59..5e0f94cdf9 100644
+index 56c4364d59..9aebf8f002 100644
--- a/src/test/codegen/sparc-struct-abi.rs
+++ b/src/test/codegen/sparc-struct-abi.rs
-@@ -12,6 +12,7 @@
- // See issue #52638.
+@@ -13,6 +13,7 @@
+ // only-sparc64
// compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib
+// ignore-test
#![feature(no_core, lang_items)]
diff --git a/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0022-Link-stage-2-tools-dynamically-to-libstd.patch
index ffd3e8342..d50e15933 100644
--- a/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch
+++ b/user/rust/0022-Link-stage-2-tools-dynamically-to-libstd.patch
@@ -1,17 +1,17 @@
-From 29df88cb3f1bdaac8e6a0049f8f1c1e335954509 Mon Sep 17 00:00:00 2001
+From da4ae76c0e8986711f235ceb676cd61db9bf3c7a Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 24 Sep 2018 23:42:23 +0000
-Subject: [PATCH 26/29] Link stage 2 tools dynamically to libstd
+Subject: [PATCH 22/24] Link stage 2 tools dynamically to libstd
---
src/bootstrap/tool.rs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
-index 5e68b797b3..6a4c53f9a1 100644
+index e5299761a1..2e364d3cd1 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
-@@ -261,7 +261,9 @@ pub fn prepare_tool_cargo(
+@@ -215,7 +215,9 @@ pub fn prepare_tool_cargo(
// We don't want to build tools dynamically as they'll be running across
// stages and such and it's just easier if they're not dynamically linked.
diff --git a/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0023-Move-debugger-scripts-to-usr-share-rust.patch
index 81c649eaf..417b4f33d 100644
--- a/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch
+++ b/user/rust/0023-Move-debugger-scripts-to-usr-share-rust.patch
@@ -1,7 +1,7 @@
-From d8c25e109fbf44a3dc18ae0ea8da50cc6ee6b312 Mon Sep 17 00:00:00 2001
+From c2de5d142209be7fca8024ba82911ee180d861d0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 02:09:10 +0000
-Subject: [PATCH 27/29] Move debugger scripts to /usr/share/rust
+Subject: [PATCH 23/24] Move debugger scripts to /usr/share/rust
---
src/bootstrap/dist.rs | 2 +-
@@ -10,10 +10,10 @@ Subject: [PATCH 27/29] Move debugger scripts to /usr/share/rust
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
-index c6b39a52ae..ca21e87c9d 100644
+index 2d94704fda..809d16fa0e 100644
--- a/src/bootstrap/dist.rs
+++ b/src/bootstrap/dist.rs
-@@ -575,7 +575,7 @@ impl Step for DebuggerScripts {
+@@ -584,7 +584,7 @@ impl Step for DebuggerScripts {
fn run(self, builder: &Builder) {
let host = self.host;
let sysroot = self.sysroot;
@@ -23,7 +23,7 @@ index c6b39a52ae..ca21e87c9d 100644
let cp_debugger_script = |file: &str| {
builder.install(&builder.src.join("src/etc/").join(file), &dst, 0o644);
diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb
-index 6835d6aa90..dbdee6af31 100755
+index 743952a5be..71694ddb87 100755
--- a/src/etc/rust-gdb
+++ b/src/etc/rust-gdb
@@ -14,7 +14,7 @@ set -e
@@ -36,17 +36,17 @@ index 6835d6aa90..dbdee6af31 100755
# Run GDB with the additional arguments that load the pretty printers
# Set the environment variable `RUST_GDB` to overwrite the call to a
diff --git a/src/etc/rust-lldb b/src/etc/rust-lldb
-index f70ab65bce..621546bd3f 100755
+index 6ed8210349..f115587ce1 100755
--- a/src/etc/rust-lldb
+++ b/src/etc/rust-lldb
-@@ -33,7 +33,7 @@ trap "rm -f $TMPFILE; exit" INT TERM EXIT
- RUSTC_SYSROOT=`rustc --print sysroot`
+@@ -35,7 +35,7 @@ display the contents of local variables!"
+ fi
- # Write the LLDB script to the tempfile
--echo "command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_rust_formatters.py\"" >> $TMPFILE
-+echo "command script import \"$RUSTC_SYSROOT/share/rust/lldb_rust_formatters.py\"" >> $TMPFILE
- echo "type summary add --no-value --python-function lldb_rust_formatters.print_val -x \".*\" --category Rust" >> $TMPFILE
- echo "type category enable Rust" >> $TMPFILE
+ # Prepare commands that will be loaded before any file on the command line has been loaded
+-script_import="command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_rust_formatters.py\""
++script_import="command script import \"$RUSTC_SYSROOT/share/rust/lldb_rust_formatters.py\""
+ category_definition="type summary add --no-value --python-function lldb_rust_formatters.print_val -x \".*\" --category Rust"
+ category_enable="type category enable Rust"
--
2.18.0
diff --git a/user/rust/0028-Add-foxkit-target-specs.patch b/user/rust/0024-Add-foxkit-target-specs.patch
index 5f13c2e3b..2df25f447 100644
--- a/user/rust/0028-Add-foxkit-target-specs.patch
+++ b/user/rust/0024-Add-foxkit-target-specs.patch
@@ -1,7 +1,7 @@
-From 2a651859050ef1826fd1dd15e2bb272a67c03438 Mon Sep 17 00:00:00 2001
+From 0a6fb2cbb5ca1a9a07bcd426e0ec81975fe16682 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 02:29:06 +0000
-Subject: [PATCH 28/29] Add foxkit target specs
+Subject: [PATCH 24/24] Add foxkit target specs
---
src/bootstrap/native.rs | 10 ++++++--
@@ -21,10 +21,10 @@ Subject: [PATCH 28/29] Add foxkit target specs
create mode 100644 src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
-index 186ef75189..9122eeb785 100644
+index a0329910be..f1ee4ed882 100644
--- a/src/bootstrap/native.rs
+++ b/src/bootstrap/native.rs
-@@ -652,6 +652,12 @@ impl Step for Openssl {
+@@ -685,6 +685,12 @@ impl Step for Openssl {
"x86_64-unknown-linux-gnux32" => "linux-x32",
"x86_64-unknown-linux-musl" => "linux-x86_64",
"x86_64-unknown-netbsd" => "BSD-x86_64",
@@ -37,7 +37,7 @@ index 186ef75189..9122eeb785 100644
_ => panic!("don't know how to configure OpenSSL for {}", target),
};
configure.arg(os);
-@@ -666,7 +672,7 @@ impl Step for Openssl {
+@@ -699,7 +705,7 @@ impl Step for Openssl {
configure.arg("-fomit-frame-pointer");
}
// OpenSSL ships incompatible ELFv1 ABI assembly code
@@ -46,7 +46,7 @@ index 186ef75189..9122eeb785 100644
configure.arg("no-asm");
}
if target == "sparc64-unknown-netbsd" {
-@@ -681,7 +687,7 @@ impl Step for Openssl {
+@@ -714,7 +720,7 @@ impl Step for Openssl {
// Make PIE binaries
// Non-PIE linker support was removed in Lollipop
// https://source.android.com/security/enhancements/enhancements50
@@ -139,13 +139,13 @@ index 0000000000..e0284d96e6
+ Ok(base)
+}
diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
-index 94aa07abb6..1187afbb60 100644
+index 9ee761fd51..0ee10e3d33 100644
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
-@@ -375,6 +375,13 @@ supported_targets! {
- ("armv7-unknown-cloudabi-eabihf", armv7_unknown_cloudabi_eabihf),
- ("i686-unknown-cloudabi", i686_unknown_cloudabi),
- ("x86_64-unknown-cloudabi", x86_64_unknown_cloudabi),
+@@ -414,6 +414,13 @@ supported_targets! {
+ ("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
+
+ ("aarch64-unknown-none", aarch64_unknown_none),
+
+ ("aarch64-foxkit-linux-musl", aarch64_foxkit_linux_musl),
+ ("armv7-foxkit-linux-musleabihf", armv7_foxkit_linux_musleabihf),
diff --git a/user/rust/0031-liblibc-0163a7ce20b5.patch b/user/rust/0031-liblibc-0163a7ce20b5.patch
deleted file mode 100644
index 6c2268a53..000000000
--- a/user/rust/0031-liblibc-0163a7ce20b5.patch
+++ /dev/null
@@ -1,1343 +0,0 @@
-From 0163a7ce20b5f4c8d8f725811e48e1f268b0253e Mon Sep 17 00:00:00 2001
-From: Marek Benc <dusxmt@gmx.com>
-Date: Thu, 5 Jul 2018 15:51:38 +0200
-Subject: [PATCH] Add linux musl powerpc (32-bit) support
-
----
- src/unix/notbsd/linux/musl/b32/arm.rs | 85 +++
- src/unix/notbsd/linux/musl/b32/mips.rs | 85 +++
- src/unix/notbsd/linux/musl/b32/mod.rs | 88 +--
- src/unix/notbsd/linux/musl/b32/powerpc.rs | 866 ++++++++++++++++++++++
- src/unix/notbsd/linux/musl/b32/x86.rs | 85 +++
- src/unix/notbsd/linux/musl/mod.rs | 3 +-
- 6 files changed, 1127 insertions(+), 85 deletions(-)
- create mode 100644 src/unix/notbsd/linux/musl/b32/powerpc.rs
-
-diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs
-index 22bf16c1fda..20fa33a3f77 100644
---- a/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs
-+++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs
-@@ -52,6 +52,18 @@ s! {
- pub ss_size: ::size_t
- }
-
-+ pub struct ipc_perm {
-+ pub __ipc_perm_key: ::key_t,
-+ pub uid: ::uid_t,
-+ pub gid: ::gid_t,
-+ pub cuid: ::uid_t,
-+ pub cgid: ::gid_t,
-+ pub mode: ::mode_t,
-+ pub __seq: ::c_int,
-+ __unused1: ::c_long,
-+ __unused2: ::c_long
-+ }
-+
- pub struct shmid_ds {
- pub shm_perm: ::ipc_perm,
- pub shm_segsz: ::size_t,
-@@ -151,6 +163,9 @@ s! {
- }
- }
-
-+pub const SIGSTKSZ: ::size_t = 8192;
-+pub const MINSIGSTKSZ: ::size_t = 2048;
-+
- pub const O_DIRECT: ::c_int = 0x10000;
- pub const O_DIRECTORY: ::c_int = 0x4000;
- pub const O_NOFOLLOW: ::c_int = 0x8000;
-@@ -165,6 +180,76 @@ pub const RLIMIT_NOFILE: ::c_int = 7;
- pub const RLIMIT_AS: ::c_int = 9;
- pub const RLIMIT_NPROC: ::c_int = 6;
- pub const RLIMIT_MEMLOCK: ::c_int = 8;
-+pub const RLIMIT_NLIMITS: ::c_int = 16;
-+
-+pub const MCL_CURRENT: ::c_int = 0x0001;
-+pub const MCL_FUTURE: ::c_int = 0x0002;
-+pub const CBAUD: ::tcflag_t = 0o0010017;
-+pub const TAB1: ::c_int = 0x00000800;
-+pub const TAB2: ::c_int = 0x00001000;
-+pub const TAB3: ::c_int = 0x00001800;
-+pub const CR1: ::c_int = 0x00000200;
-+pub const CR2: ::c_int = 0x00000400;
-+pub const CR3: ::c_int = 0x00000600;
-+pub const FF1: ::c_int = 0x00008000;
-+pub const BS1: ::c_int = 0x00002000;
-+pub const VT1: ::c_int = 0x00004000;
-+pub const VWERASE: usize = 14;
-+pub const VREPRINT: usize = 12;
-+pub const VSUSP: usize = 10;
-+pub const VSTART: usize = 8;
-+pub const VSTOP: usize = 9;
-+pub const VDISCARD: usize = 13;
-+pub const VTIME: usize = 5;
-+pub const IXON: ::tcflag_t = 0x00000400;
-+pub const IXOFF: ::tcflag_t = 0x00001000;
-+pub const ONLCR: ::tcflag_t = 0x4;
-+pub const CSIZE: ::tcflag_t = 0x00000030;
-+pub const CS6: ::tcflag_t = 0x00000010;
-+pub const CS7: ::tcflag_t = 0x00000020;
-+pub const CS8: ::tcflag_t = 0x00000030;
-+pub const CSTOPB: ::tcflag_t = 0x00000040;
-+pub const CREAD: ::tcflag_t = 0x00000080;
-+pub const PARENB: ::tcflag_t = 0x00000100;
-+pub const PARODD: ::tcflag_t = 0x00000200;
-+pub const HUPCL: ::tcflag_t = 0x00000400;
-+pub const CLOCAL: ::tcflag_t = 0x00000800;
-+pub const ECHOKE: ::tcflag_t = 0x00000800;
-+pub const ECHOE: ::tcflag_t = 0x00000010;
-+pub const ECHOK: ::tcflag_t = 0x00000020;
-+pub const ECHONL: ::tcflag_t = 0x00000040;
-+pub const ECHOPRT: ::tcflag_t = 0x00000400;
-+pub const ECHOCTL: ::tcflag_t = 0x00000200;
-+pub const ISIG: ::tcflag_t = 0x00000001;
-+pub const ICANON: ::tcflag_t = 0x00000002;
-+pub const PENDIN: ::tcflag_t = 0x00004000;
-+pub const NOFLSH: ::tcflag_t = 0x00000080;
-+pub const CIBAUD: ::tcflag_t = 0o02003600000;
-+pub const CBAUDEX: ::tcflag_t = 0o010000;
-+pub const VSWTC: usize = 7;
-+pub const OLCUC: ::tcflag_t = 0o000002;
-+pub const NLDLY: ::tcflag_t = 0o000400;
-+pub const CRDLY: ::tcflag_t = 0o003000;
-+pub const TABDLY: ::tcflag_t = 0o014000;
-+pub const BSDLY: ::tcflag_t = 0o020000;
-+pub const FFDLY: ::tcflag_t = 0o100000;
-+pub const VTDLY: ::tcflag_t = 0o040000;
-+pub const XTABS: ::tcflag_t = 0o014000;
-+pub const B57600: ::speed_t = 0o010001;
-+pub const B115200: ::speed_t = 0o010002;
-+pub const B230400: ::speed_t = 0o010003;
-+pub const B460800: ::speed_t = 0o010004;
-+pub const B500000: ::speed_t = 0o010005;
-+pub const B576000: ::speed_t = 0o010006;
-+pub const B921600: ::speed_t = 0o010007;
-+pub const B1000000: ::speed_t = 0o010010;
-+pub const B1152000: ::speed_t = 0o010011;
-+pub const B1500000: ::speed_t = 0o010012;
-+pub const B2000000: ::speed_t = 0o010013;
-+pub const B2500000: ::speed_t = 0o010014;
-+pub const B3000000: ::speed_t = 0o010015;
-+pub const B3500000: ::speed_t = 0o010016;
-+pub const B4000000: ::speed_t = 0o010017;
-
- pub const O_APPEND: ::c_int = 1024;
- pub const O_CREAT: ::c_int = 64;
-diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs
-index 89231a0c751..bfde73c563d 100644
---- a/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs
-+++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs
-@@ -54,6 +54,18 @@ s! {
- pub ss_flags: ::c_int,
- }
-
-+ pub struct ipc_perm {
-+ pub __ipc_perm_key: ::key_t,
-+ pub uid: ::uid_t,
-+ pub gid: ::gid_t,
-+ pub cuid: ::uid_t,
-+ pub cgid: ::gid_t,
-+ pub mode: ::mode_t,
-+ pub __seq: ::c_int,
-+ __unused1: ::c_long,
-+ __unused2: ::c_long
-+ }
-+
- pub struct shmid_ds {
- pub shm_perm: ::ipc_perm,
- pub shm_segsz: ::size_t,
-@@ -162,6 +174,9 @@ s! {
- }
- }
-
-+pub const SIGSTKSZ: ::size_t = 8192;
-+pub const MINSIGSTKSZ: ::size_t = 2048;
-+
- pub const O_DIRECT: ::c_int = 0o100000;
- pub const O_DIRECTORY: ::c_int = 0o200000;
- pub const O_NOFOLLOW: ::c_int = 0o400000;
-@@ -176,6 +191,76 @@ pub const RLIMIT_NOFILE: ::c_int = 5;
- pub const RLIMIT_AS: ::c_int = 6;
- pub const RLIMIT_NPROC: ::c_int = 8;
- pub const RLIMIT_MEMLOCK: ::c_int = 9;
-+pub const RLIMIT_NLIMITS: ::c_int = 16;
-+
-+pub const MCL_CURRENT: ::c_int = 0x0001;
-+pub const MCL_FUTURE: ::c_int = 0x0002;
-+pub const CBAUD: ::tcflag_t = 0o0010017;
-+pub const TAB1: ::c_int = 0x00000800;
-+pub const TAB2: ::c_int = 0x00001000;
-+pub const TAB3: ::c_int = 0x00001800;
-+pub const CR1: ::c_int = 0x00000200;
-+pub const CR2: ::c_int = 0x00000400;
-+pub const CR3: ::c_int = 0x00000600;
-+pub const FF1: ::c_int = 0x00008000;
-+pub const BS1: ::c_int = 0x00002000;
-+pub const VT1: ::c_int = 0x00004000;
-+pub const VWERASE: usize = 14;
-+pub const VREPRINT: usize = 12;
-+pub const VSUSP: usize = 10;
-+pub const VSTART: usize = 8;
-+pub const VSTOP: usize = 9;
-+pub const VDISCARD: usize = 13;
-+pub const VTIME: usize = 5;
-+pub const IXON: ::tcflag_t = 0x00000400;
-+pub const IXOFF: ::tcflag_t = 0x00001000;
-+pub const ONLCR: ::tcflag_t = 0x4;
-+pub const CSIZE: ::tcflag_t = 0x00000030;
-+pub const CS6: ::tcflag_t = 0x00000010;
-+pub const CS7: ::tcflag_t = 0x00000020;
-+pub const CS8: ::tcflag_t = 0x00000030;
-+pub const CSTOPB: ::tcflag_t = 0x00000040;
-+pub const CREAD: ::tcflag_t = 0x00000080;
-+pub const PARENB: ::tcflag_t = 0x00000100;
-+pub const PARODD: ::tcflag_t = 0x00000200;
-+pub const HUPCL: ::tcflag_t = 0x00000400;
-+pub const CLOCAL: ::tcflag_t = 0x00000800;
-+pub const ECHOKE: ::tcflag_t = 0x00000800;
-+pub const ECHOE: ::tcflag_t = 0x00000010;
-+pub const ECHOK: ::tcflag_t = 0x00000020;
-+pub const ECHONL: ::tcflag_t = 0x00000040;
-+pub const ECHOPRT: ::tcflag_t = 0x00000400;
-+pub const ECHOCTL: ::tcflag_t = 0x00000200;
-+pub const ISIG: ::tcflag_t = 0x00000001;
-+pub const ICANON: ::tcflag_t = 0x00000002;
-+pub const PENDIN: ::tcflag_t = 0x00004000;
-+pub const NOFLSH: ::tcflag_t = 0x00000080;
-+pub const CIBAUD: ::tcflag_t = 0o02003600000;
-+pub const CBAUDEX: ::tcflag_t = 0o010000;
-+pub const VSWTC: usize = 7;
-+pub const OLCUC: ::tcflag_t = 0o000002;
-+pub const NLDLY: ::tcflag_t = 0o000400;
-+pub const CRDLY: ::tcflag_t = 0o003000;
-+pub const TABDLY: ::tcflag_t = 0o014000;
-+pub const BSDLY: ::tcflag_t = 0o020000;
-+pub const FFDLY: ::tcflag_t = 0o100000;
-+pub const VTDLY: ::tcflag_t = 0o040000;
-+pub const XTABS: ::tcflag_t = 0o014000;
-+pub const B57600: ::speed_t = 0o010001;
-+pub const B115200: ::speed_t = 0o010002;
-+pub const B230400: ::speed_t = 0o010003;
-+pub const B460800: ::speed_t = 0o010004;
-+pub const B500000: ::speed_t = 0o010005;
-+pub const B576000: ::speed_t = 0o010006;
-+pub const B921600: ::speed_t = 0o010007;
-+pub const B1000000: ::speed_t = 0o010010;
-+pub const B1152000: ::speed_t = 0o010011;
-+pub const B1500000: ::speed_t = 0o010012;
-+pub const B2000000: ::speed_t = 0o010013;
-+pub const B2500000: ::speed_t = 0o010014;
-+pub const B3000000: ::speed_t = 0o010015;
-+pub const B3500000: ::speed_t = 0o010016;
-+pub const B4000000: ::speed_t = 0o010017;
-
- pub const O_APPEND: ::c_int = 0o010;
- pub const O_CREAT: ::c_int = 0o400;
-diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs
-index b4a0f761636..4128a8e4da6 100644
---- a/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs
-+++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs
-@@ -32,96 +32,13 @@ s! {
- pub struct sem_t {
- __val: [::c_int; 4],
- }
--
-- pub struct ipc_perm {
-- pub __ipc_perm_key: ::key_t,
-- pub uid: ::uid_t,
-- pub gid: ::gid_t,
-- pub cuid: ::uid_t,
-- pub cgid: ::gid_t,
-- pub mode: ::mode_t,
-- pub __seq: ::c_int,
-- __unused1: ::c_long,
-- __unused2: ::c_long
-- }
- }
-
--pub const SIGSTKSZ: ::size_t = 8192;
--pub const MINSIGSTKSZ: ::size_t = 2048;
--
- pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32;
- pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24;
-
--pub const RLIMIT_NLIMITS: ::c_int = 16;
- pub const TIOCINQ: ::c_int = ::FIONREAD;
--pub const MCL_CURRENT: ::c_int = 0x0001;
--pub const MCL_FUTURE: ::c_int = 0x0002;
--pub const CBAUD: ::tcflag_t = 0o0010017;
--pub const TAB1: ::c_int = 0x00000800;
--pub const TAB2: ::c_int = 0x00001000;
--pub const TAB3: ::c_int = 0x00001800;
--pub const CR1: ::c_int = 0x00000200;
--pub const CR2: ::c_int = 0x00000400;
--pub const CR3: ::c_int = 0x00000600;
--pub const FF1: ::c_int = 0x00008000;
--pub const BS1: ::c_int = 0x00002000;
--pub const VT1: ::c_int = 0x00004000;
--pub const VWERASE: usize = 14;
--pub const VREPRINT: usize = 12;
--pub const VSUSP: usize = 10;
--pub const VSTART: usize = 8;
--pub const VSTOP: usize = 9;
--pub const VDISCARD: usize = 13;
--pub const VTIME: usize = 5;
--pub const IXON: ::tcflag_t = 0x00000400;
--pub const IXOFF: ::tcflag_t = 0x00001000;
--pub const ONLCR: ::tcflag_t = 0x4;
--pub const CSIZE: ::tcflag_t = 0x00000030;
--pub const CS6: ::tcflag_t = 0x00000010;
--pub const CS7: ::tcflag_t = 0x00000020;
--pub const CS8: ::tcflag_t = 0x00000030;
--pub const CSTOPB: ::tcflag_t = 0x00000040;
--pub const CREAD: ::tcflag_t = 0x00000080;
--pub const PARENB: ::tcflag_t = 0x00000100;
--pub const PARODD: ::tcflag_t = 0x00000200;
--pub const HUPCL: ::tcflag_t = 0x00000400;
--pub const CLOCAL: ::tcflag_t = 0x00000800;
--pub const ECHOKE: ::tcflag_t = 0x00000800;
--pub const ECHOE: ::tcflag_t = 0x00000010;
--pub const ECHOK: ::tcflag_t = 0x00000020;
--pub const ECHONL: ::tcflag_t = 0x00000040;
--pub const ECHOPRT: ::tcflag_t = 0x00000400;
--pub const ECHOCTL: ::tcflag_t = 0x00000200;
--pub const ISIG: ::tcflag_t = 0x00000001;
--pub const ICANON: ::tcflag_t = 0x00000002;
--pub const PENDIN: ::tcflag_t = 0x00004000;
--pub const NOFLSH: ::tcflag_t = 0x00000080;
--pub const CIBAUD: ::tcflag_t = 0o02003600000;
--pub const CBAUDEX: ::tcflag_t = 0o010000;
--pub const VSWTC: usize = 7;
--pub const OLCUC: ::tcflag_t = 0o000002;
--pub const NLDLY: ::tcflag_t = 0o000400;
--pub const CRDLY: ::tcflag_t = 0o003000;
--pub const TABDLY: ::tcflag_t = 0o014000;
--pub const BSDLY: ::tcflag_t = 0o020000;
--pub const FFDLY: ::tcflag_t = 0o100000;
--pub const VTDLY: ::tcflag_t = 0o040000;
--pub const XTABS: ::tcflag_t = 0o014000;
--pub const B57600: ::speed_t = 0o010001;
--pub const B115200: ::speed_t = 0o010002;
--pub const B230400: ::speed_t = 0o010003;
--pub const B460800: ::speed_t = 0o010004;
--pub const B500000: ::speed_t = 0o010005;
--pub const B576000: ::speed_t = 0o010006;
--pub const B921600: ::speed_t = 0o010007;
--pub const B1000000: ::speed_t = 0o010010;
--pub const B1152000: ::speed_t = 0o010011;
--pub const B1500000: ::speed_t = 0o010012;
--pub const B2000000: ::speed_t = 0o010013;
--pub const B2500000: ::speed_t = 0o010014;
--pub const B3000000: ::speed_t = 0o010015;
--pub const B3500000: ::speed_t = 0o010016;
--pub const B4000000: ::speed_t = 0o010017;
-+
- extern {
- pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
- }
-@@ -136,6 +53,9 @@ cfg_if! {
- } else if #[cfg(any(target_arch = "arm"))] {
- mod arm;
- pub use self::arm::*;
-+ } else if #[cfg(any(target_arch = "powerpc"))] {
-+ mod powerpc;
-+ pub use self::powerpc::*;
- } else {
- // Unknown target_arch
- }
-diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/powerpc.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/powerpc.rs
-new file mode 100644
-index 00000000000..50b6b57ef11
---- /dev/null
-+++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/powerpc.rs
-@@ -0,0 +1,866 @@
-+pub type c_char = u8;
-+pub type wchar_t = i32;
-+
-+s! {
-+ pub struct stat {
-+ pub st_dev: ::dev_t,
-+ pub st_ino: ::ino_t,
-+ pub st_mode: ::mode_t,
-+ pub st_nlink: ::nlink_t,
-+ pub st_uid: ::uid_t,
-+ pub st_gid: ::gid_t,
-+ pub st_rdev: ::dev_t,
-+ __st_rdev_padding: ::c_short,
-+ pub st_size: ::off_t,
-+ pub st_blksize: ::blksize_t,
-+ pub st_blocks: ::blkcnt_t,
-+ pub st_atime: ::time_t,
-+ pub st_atime_nsec: ::c_long,
-+ pub st_mtime: ::time_t,
-+ pub st_mtime_nsec: ::c_long,
-+ pub st_ctime: ::time_t,
-+ pub st_ctime_nsec: ::c_long,
-+ __unused: [::c_long; 2],
-+ }
-+
-+ pub struct stat64 {
-+ pub st_dev: ::dev_t,
-+ pub st_ino: ::ino_t,
-+ pub st_mode: ::mode_t,
-+ pub st_nlink: ::nlink_t,
-+ pub st_uid: ::uid_t,
-+ pub st_gid: ::gid_t,
-+ pub st_rdev: ::dev_t,
-+ __st_rdev_padding: ::c_short,
-+ pub st_size: ::off_t,
-+ pub st_blksize: ::blksize_t,
-+ pub st_blocks: ::blkcnt_t,
-+ pub st_atime: ::time_t,
-+ pub st_atime_nsec: ::c_long,
-+ pub st_mtime: ::time_t,
-+ pub st_mtime_nsec: ::c_long,
-+ pub st_ctime: ::time_t,
-+ pub st_ctime_nsec: ::c_long,
-+ __unused: [::c_long; 2],
-+ }
-+
-+ pub struct stack_t {
-+ pub ss_sp: *mut ::c_void,
-+ pub ss_flags: ::c_int,
-+ pub ss_size: ::size_t
-+ }
-+
-+ pub struct ipc_perm {
-+ pub __ipc_perm_key: ::key_t,
-+ pub uid: ::uid_t,
-+ pub gid: ::gid_t,
-+ pub cuid: ::uid_t,
-+ pub cgid: ::gid_t,
-+ pub mode: ::mode_t,
-+ pub __seq: ::c_int,
-+ __pad1: ::c_int,
-+ __pad2: ::c_longlong,
-+ __pad3: ::c_longlong
-+ }
-+
-+ pub struct shmid_ds {
-+ pub shm_perm: ::ipc_perm,
-+ __unused1: ::c_int,
-+ pub shm_atime: ::time_t,
-+ __unused2: ::c_int,
-+ pub shm_dtime: ::time_t,
-+ __unused3: ::c_int,
-+ pub shm_ctime: ::time_t,
-+ __unused4: ::c_int,
-+ pub shm_segsz: ::size_t,
-+ pub shm_cpid: ::pid_t,
-+ pub shm_lpid: ::pid_t,
-+ pub shm_nattch: ::c_ulong,
-+ __pad1: ::c_ulong,
-+ __pad2: ::c_ulong,
-+ }
-+
-+ pub struct msqid_ds {
-+ pub msg_perm: ::ipc_perm,
-+ __unused1: ::c_int,
-+ pub msg_stime: ::time_t,
-+ __unused2: ::c_int,
-+ pub msg_rtime: ::time_t,
-+ __unused3: ::c_int,
-+ pub msg_ctime: ::time_t,
-+ __msg_cbytes: ::c_ulong,
-+ pub msg_qnum: ::msgqnum_t,
-+ pub msg_qbytes: ::msglen_t,
-+ pub msg_lspid: ::pid_t,
-+ pub msg_lrpid: ::pid_t,
-+ __pad1: ::c_ulong,
-+ __pad2: ::c_ulong,
-+ }
-+
-+ pub struct statfs {
-+ pub f_type: ::c_ulong,
-+ pub f_bsize: ::c_ulong,
-+ pub f_blocks: ::fsblkcnt_t,
-+ pub f_bfree: ::fsblkcnt_t,
-+ pub f_bavail: ::fsblkcnt_t,
-+ pub f_files: ::fsfilcnt_t,
-+ pub f_ffree: ::fsfilcnt_t,
-+ pub f_fsid: ::fsid_t,
-+ pub f_namelen: ::c_ulong,
-+ pub f_frsize: ::c_ulong,
-+ pub f_flags: ::c_ulong,
-+ pub f_spare: [::c_ulong; 4],
-+ }
-+
-+ pub struct siginfo_t {
-+ pub si_signo: ::c_int,
-+ pub si_errno: ::c_int,
-+ pub si_code: ::c_int,
-+ pub _pad: [::c_int; 29],
-+ _align: [usize; 0],
-+ }
-+
-+ pub struct statfs64 {
-+ pub f_type: ::c_ulong,
-+ pub f_bsize: ::c_ulong,
-+ pub f_blocks: ::fsblkcnt_t,
-+ pub f_bfree: ::fsblkcnt_t,
-+ pub f_bavail: ::fsblkcnt_t,
-+ pub f_files: ::fsfilcnt_t,
-+ pub f_ffree: ::fsfilcnt_t,
-+ pub f_fsid: ::fsid_t,
-+ pub f_namelen: ::c_ulong,
-+ pub f_frsize: ::c_ulong,
-+ pub f_flags: ::c_ulong,
-+ pub f_spare: [::c_ulong; 4],
-+ }
-+
-+ pub struct statvfs64 {
-+ pub f_bsize: ::c_ulong,
-+ pub f_frsize: ::c_ulong,
-+ pub f_blocks: u64,
-+ pub f_bfree: u64,
-+ pub f_bavail: u64,
-+ pub f_files: u64,
-+ pub f_ffree: u64,
-+ pub f_favail: u64,
-+ #[cfg(target_endian = "little")]
-+ pub f_fsid: ::c_ulong,
-+ __f_unused: ::c_int,
-+ #[cfg(target_endian = "big")]
-+ pub f_fsid: ::c_ulong,
-+ pub f_flag: ::c_ulong,
-+ pub f_namemax: ::c_ulong,
-+ __f_spare: [::c_int; 6],
-+ }
-+
-+ pub struct termios2 {
-+ pub c_iflag: ::tcflag_t,
-+ pub c_oflag: ::tcflag_t,
-+ pub c_cflag: ::tcflag_t,
-+ pub c_lflag: ::tcflag_t,
-+ pub c_cc: [::cc_t; 19],
-+ pub c_line: ::cc_t,
-+ pub c_ispeed: ::speed_t,
-+ pub c_ospeed: ::speed_t,
-+ }
-+}
-+
-+pub const SIGSTKSZ: ::size_t = 10240;
-+pub const MINSIGSTKSZ: ::size_t = 4096;
-+
-+pub const O_DIRECT: ::c_int = 0x20000;
-+pub const O_DIRECTORY: ::c_int = 0x4000;
-+pub const O_NOFOLLOW: ::c_int = 0x8000;
-+pub const O_ASYNC: ::c_int = 0x2000;
-+pub const O_LARGEFILE: ::c_int = 0x10000;
-+
-+pub const FIOCLEX: ::c_int = 0x20006601;
-+pub const FIONBIO: ::c_int = 0x8004667E;
-+
-+pub const RLIMIT_RSS: ::c_int = 5;
-+pub const RLIMIT_NOFILE: ::c_int = 7;
-+pub const RLIMIT_AS: ::c_int = 9;
-+pub const RLIMIT_NPROC: ::c_int = 6;
-+pub const RLIMIT_MEMLOCK: ::c_int = 8;
-+pub const RLIMIT_NLIMITS: ::c_int = 15;
-+
-+pub const MCL_CURRENT: ::c_int = 0x2000;
-+pub const MCL_FUTURE: ::c_int = 0x4000;
-+pub const CBAUD: ::tcflag_t = 0o0000377;
-+pub const TAB1: ::c_int = 0x00000400;
-+pub const TAB2: ::c_int = 0x00000800;
-+pub const TAB3: ::c_int = 0x00000C00;
-+pub const CR1: ::c_int = 0x00001000;
-+pub const CR2: ::c_int = 0x00002000;
-+pub const CR3: ::c_int = 0x00003000;
-+pub const FF1: ::c_int = 0x00004000;
-+pub const BS1: ::c_int = 0x00008000;
-+pub const VT1: ::c_int = 0x00010000;
-+pub const VWERASE: usize = 10;
-+pub const VREPRINT: usize = 11;
-+pub const VSUSP: usize = 12;
-+pub const VSTART: usize = 13;
-+pub const VSTOP: usize = 14;
-+pub const VDISCARD: usize = 16;
-+pub const VTIME: usize = 7;
-+pub const IXON: ::tcflag_t = 0x00000200;
-+pub const IXOFF: ::tcflag_t = 0x00000400;
-+pub const ONLCR: ::tcflag_t = 0x00000002;
-+pub const CSIZE: ::tcflag_t = 0x00000300;
-+pub const CS6: ::tcflag_t = 0x00000100;
-+pub const CS7: ::tcflag_t = 0x00000200;
-+pub const CS8: ::tcflag_t = 0x00000300;
-+pub const CSTOPB: ::tcflag_t = 0x00000400;
-+pub const CREAD: ::tcflag_t = 0x00000800;
-+pub const PARENB: ::tcflag_t = 0x00001000;
-+pub const PARODD: ::tcflag_t = 0x00002000;
-+pub const HUPCL: ::tcflag_t = 0x00004000;
-+pub const CLOCAL: ::tcflag_t = 0x00008000;
-+pub const ECHOKE: ::tcflag_t = 0x00000001;
-+pub const ECHOE: ::tcflag_t = 0x00000002;
-+pub const ECHOK: ::tcflag_t = 0x00000004;
-+pub const ECHONL: ::tcflag_t = 0x00000010;
-+pub const ECHOPRT: ::tcflag_t = 0x00000020;
-+pub const ECHOCTL: ::tcflag_t = 0x00000040;
-+pub const ISIG: ::tcflag_t = 0x00000080;
-+pub const ICANON: ::tcflag_t = 0x00000100;
-+pub const PENDIN: ::tcflag_t = 0x20000000;
-+pub const NOFLSH: ::tcflag_t = 0x80000000;
-+pub const CIBAUD: ::tcflag_t = 0o00077600000;
-+pub const CBAUDEX: ::tcflag_t = 0o000020;
-+pub const VSWTC: usize = 9;
-+pub const OLCUC: ::tcflag_t = 0o000004;
-+pub const NLDLY: ::tcflag_t = 0o001400;
-+pub const CRDLY: ::tcflag_t = 0o030000;
-+pub const TABDLY: ::tcflag_t = 0o006000;
-+pub const BSDLY: ::tcflag_t = 0o100000;
-+pub const FFDLY: ::tcflag_t = 0o040000;
-+pub const VTDLY: ::tcflag_t = 0o200000;
-+pub const XTABS: ::tcflag_t = 0o006000;
-+pub const B57600: ::speed_t = 0o000020;
-+pub const B115200: ::speed_t = 0o000021;
-+pub const B230400: ::speed_t = 0o000022;
-+pub const B460800: ::speed_t = 0o000023;
-+pub const B500000: ::speed_t = 0o000024;
-+pub const B576000: ::speed_t = 0o000025;
-+pub const B921600: ::speed_t = 0o000026;
-+pub const B1000000: ::speed_t = 0o000027;
-+pub const B1152000: ::speed_t = 0o000030;
-+pub const B1500000: ::speed_t = 0o000031;
-+pub const B2000000: ::speed_t = 0o000032;
-+pub const B2500000: ::speed_t = 0o000033;
-+pub const B3000000: ::speed_t = 0o000034;
-+pub const B3500000: ::speed_t = 0o000035;
-+pub const B4000000: ::speed_t = 0o000036;
-+
-+pub const O_APPEND: ::c_int = 1024;
-+pub const O_CREAT: ::c_int = 64;
-+pub const O_EXCL: ::c_int = 128;
-+pub const O_NOCTTY: ::c_int = 256;
-+pub const O_NONBLOCK: ::c_int = 2048;
-+pub const O_SYNC: ::c_int = 1052672;
-+pub const O_RSYNC: ::c_int = 1052672;
-+pub const O_DSYNC: ::c_int = 4096;
-+
-+pub const SOCK_NONBLOCK: ::c_int = 2048;
-+
-+pub const MAP_ANON: ::c_int = 0x0020;
-+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
-+pub const MAP_DENYWRITE: ::c_int = 0x0800;
-+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
-+pub const MAP_LOCKED: ::c_int = 0x00080;
-+pub const MAP_NORESERVE: ::c_int = 0x00040;
-+pub const MAP_POPULATE: ::c_int = 0x08000;
-+pub const MAP_NONBLOCK: ::c_int = 0x010000;
-+pub const MAP_STACK: ::c_int = 0x020000;
-+
-+pub const SOCK_STREAM: ::c_int = 1;
-+pub const SOCK_DGRAM: ::c_int = 2;
-+pub const SOCK_SEQPACKET: ::c_int = 5;
-+
-+pub const SOL_SOCKET: ::c_int = 1;
-+
-+pub const EDEADLK: ::c_int = 35;
-+pub const ENAMETOOLONG: ::c_int = 36;
-+pub const ENOLCK: ::c_int = 37;
-+pub const ENOSYS: ::c_int = 38;
-+pub const ENOTEMPTY: ::c_int = 39;
-+pub const ELOOP: ::c_int = 40;
-+pub const ENOMSG: ::c_int = 42;
-+pub const EIDRM: ::c_int = 43;
-+pub const ECHRNG: ::c_int = 44;
-+pub const EL2NSYNC: ::c_int = 45;
-+pub const EL3HLT: ::c_int = 46;
-+pub const EL3RST: ::c_int = 47;
-+pub const ELNRNG: ::c_int = 48;
-+pub const EUNATCH: ::c_int = 49;
-+pub const ENOCSI: ::c_int = 50;
-+pub const EL2HLT: ::c_int = 51;
-+pub const EBADE: ::c_int = 52;
-+pub const EBADR: ::c_int = 53;
-+pub const EXFULL: ::c_int = 54;
-+pub const ENOANO: ::c_int = 55;
-+pub const EBADRQC: ::c_int = 56;
-+pub const EBADSLT: ::c_int = 57;
-+pub const EDEADLOCK: ::c_int = 58;
-+pub const EMULTIHOP: ::c_int = 72;
-+pub const EBADMSG: ::c_int = 74;
-+pub const EOVERFLOW: ::c_int = 75;
-+pub const ENOTUNIQ: ::c_int = 76;
-+pub const EBADFD: ::c_int = 77;
-+pub const EREMCHG: ::c_int = 78;
-+pub const ELIBACC: ::c_int = 79;
-+pub const ELIBBAD: ::c_int = 80;
-+pub const ELIBSCN: ::c_int = 81;
-+pub const ELIBMAX: ::c_int = 82;
-+pub const ELIBEXEC: ::c_int = 83;
-+pub const EILSEQ: ::c_int = 84;
-+pub const ERESTART: ::c_int = 85;
-+pub const ESTRPIPE: ::c_int = 86;
-+pub const EUSERS: ::c_int = 87;
-+pub const ENOTSOCK: ::c_int = 88;
-+pub const EDESTADDRREQ: ::c_int = 89;
-+pub const EMSGSIZE: ::c_int = 90;
-+pub const EPROTOTYPE: ::c_int = 91;
-+pub const ENOPROTOOPT: ::c_int = 92;
-+pub const EPROTONOSUPPORT: ::c_int = 93;
-+pub const ESOCKTNOSUPPORT: ::c_int = 94;
-+pub const EOPNOTSUPP: ::c_int = 95;
-+pub const ENOTSUP: ::c_int = EOPNOTSUPP;
-+pub const EPFNOSUPPORT: ::c_int = 96;
-+pub const EAFNOSUPPORT: ::c_int = 97;
-+pub const EADDRINUSE: ::c_int = 98;
-+pub const EADDRNOTAVAIL: ::c_int = 99;
-+pub const ENETDOWN: ::c_int = 100;
-+pub const ENETUNREACH: ::c_int = 101;
-+pub const ENETRESET: ::c_int = 102;
-+pub const ECONNABORTED: ::c_int = 103;
-+pub const ECONNRESET: ::c_int = 104;
-+pub const ENOBUFS: ::c_int = 105;
-+pub const EISCONN: ::c_int = 106;
-+pub const ENOTCONN: ::c_int = 107;
-+pub const ESHUTDOWN: ::c_int = 108;
-+pub const ETOOMANYREFS: ::c_int = 109;
-+pub const ETIMEDOUT: ::c_int = 110;
-+pub const ECONNREFUSED: ::c_int = 111;
-+pub const EHOSTDOWN: ::c_int = 112;
-+pub const EHOSTUNREACH: ::c_int = 113;
-+pub const EALREADY: ::c_int = 114;
-+pub const EINPROGRESS: ::c_int = 115;
-+pub const ESTALE: ::c_int = 116;
-+pub const EUCLEAN: ::c_int = 117;
-+pub const ENOTNAM: ::c_int = 118;
-+pub const ENAVAIL: ::c_int = 119;
-+pub const EISNAM: ::c_int = 120;
-+pub const EREMOTEIO: ::c_int = 121;
-+pub const EDQUOT: ::c_int = 122;
-+pub const ENOMEDIUM: ::c_int = 123;
-+pub const EMEDIUMTYPE: ::c_int = 124;
-+pub const ECANCELED: ::c_int = 125;
-+pub const ENOKEY: ::c_int = 126;
-+pub const EKEYEXPIRED: ::c_int = 127;
-+pub const EKEYREVOKED: ::c_int = 128;
-+pub const EKEYREJECTED: ::c_int = 129;
-+pub const EOWNERDEAD: ::c_int = 130;
-+pub const ENOTRECOVERABLE: ::c_int = 131;
-+pub const ERFKILL: ::c_int = 132;
-+pub const EHWPOISON: ::c_int = 133;
-+
-+pub const SO_REUSEADDR: ::c_int = 2;
-+pub const SO_TYPE: ::c_int = 3;
-+pub const SO_ERROR: ::c_int = 4;
-+pub const SO_DONTROUTE: ::c_int = 5;
-+pub const SO_BROADCAST: ::c_int = 6;
-+pub const SO_SNDBUF: ::c_int = 7;
-+pub const SO_RCVBUF: ::c_int = 8;
-+pub const SO_KEEPALIVE: ::c_int = 9;
-+pub const SO_OOBINLINE: ::c_int = 10;
-+pub const SO_NO_CHECK: ::c_int = 11;
-+pub const SO_PRIORITY: ::c_int = 12;
-+pub const SO_LINGER: ::c_int = 13;
-+pub const SO_BSDCOMPAT: ::c_int = 14;
-+pub const SO_REUSEPORT: ::c_int = 15;
-+pub const SO_RCVLOWAT: ::c_int = 16;
-+pub const SO_SNDLOWAT: ::c_int = 17;
-+pub const SO_RCVTIMEO: ::c_int = 18;
-+pub const SO_SNDTIMEO: ::c_int = 19;
-+pub const SO_PASSCRED: ::c_int = 20;
-+pub const SO_PEERCRED: ::c_int = 21;
-+pub const SO_ACCEPTCONN: ::c_int = 30;
-+pub const SO_SNDBUFFORCE: ::c_int = 32;
-+pub const SO_RCVBUFFORCE: ::c_int = 33;
-+pub const SO_PROTOCOL: ::c_int = 38;
-+pub const SO_DOMAIN: ::c_int = 39;
-+
-+pub const SA_ONSTACK: ::c_int = 0x08000000;
-+pub const SA_SIGINFO: ::c_int = 0x00000004;
-+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
-+
-+pub const SIGCHLD: ::c_int = 17;
-+pub const SIGBUS: ::c_int = 7;
-+pub const SIGTTIN: ::c_int = 21;
-+pub const SIGTTOU: ::c_int = 22;
-+pub const SIGXCPU: ::c_int = 24;
-+pub const SIGXFSZ: ::c_int = 25;
-+pub const SIGVTALRM: ::c_int = 26;
-+pub const SIGPROF: ::c_int = 27;
-+pub const SIGWINCH: ::c_int = 28;
-+pub const SIGUSR1: ::c_int = 10;
-+pub const SIGUSR2: ::c_int = 12;
-+pub const SIGCONT: ::c_int = 18;
-+pub const SIGSTOP: ::c_int = 19;
-+pub const SIGTSTP: ::c_int = 20;
-+pub const SIGURG: ::c_int = 23;
-+pub const SIGIO: ::c_int = 29;
-+pub const SIGSYS: ::c_int = 31;
-+pub const SIGSTKFLT: ::c_int = 16;
-+pub const SIGPOLL: ::c_int = 29;
-+pub const SIGPWR: ::c_int = 30;
-+pub const SIG_SETMASK: ::c_int = 2;
-+pub const SIG_BLOCK: ::c_int = 0x000000;
-+pub const SIG_UNBLOCK: ::c_int = 0x01;
-+
-+pub const EXTPROC: ::tcflag_t = 0x10000000;
-+
-+pub const MAP_HUGETLB: ::c_int = 0x040000;
-+
-+pub const F_GETLK: ::c_int = 12;
-+pub const F_GETOWN: ::c_int = 9;
-+pub const F_SETLK: ::c_int = 13;
-+pub const F_SETLKW: ::c_int = 14;
-+pub const F_SETOWN: ::c_int = 8;
-+
-+pub const VEOF: usize = 4;
-+pub const VEOL: usize = 6;
-+pub const VEOL2: usize = 8;
-+pub const VMIN: usize = 5;
-+pub const IEXTEN: ::tcflag_t = 0x00000400;
-+pub const TOSTOP: ::tcflag_t = 0x00400000;
-+pub const FLUSHO: ::tcflag_t = 0x00800000;
-+
-+pub const TCGETS: ::c_int = 0x402C7413;
-+pub const TCSETS: ::c_int = 0x802C7414;
-+pub const TCSETSW: ::c_int = 0x802C7415;
-+pub const TCSETSF: ::c_int = 0x802C7416;
-+pub const TCGETA: ::c_int = 0x40147417;
-+pub const TCSETA: ::c_int = 0x80147418;
-+pub const TCSETAW: ::c_int = 0x80147419;
-+pub const TCSETAF: ::c_int = 0x8014741C;
-+pub const TCSBRK: ::c_int = 0x2000741D;
-+pub const TCXONC: ::c_int = 0x2000741E;
-+pub const TCFLSH: ::c_int = 0x2000741F;
-+pub const TIOCGSOFTCAR: ::c_int = 0x5419;
-+pub const TIOCSSOFTCAR: ::c_int = 0x541A;
-+pub const TIOCLINUX: ::c_int = 0x541C;
-+pub const TIOCGSERIAL: ::c_int = 0x541E;
-+pub const TIOCEXCL: ::c_int = 0x540C;
-+pub const TIOCNXCL: ::c_int = 0x540D;
-+pub const TIOCSCTTY: ::c_int = 0x540E;
-+pub const TIOCGPGRP: ::c_int = 0x40047477;
-+pub const TIOCSPGRP: ::c_int = 0x80047476;
-+pub const TIOCOUTQ: ::c_int = 0x40047473;
-+pub const TIOCSTI: ::c_int = 0x5412;
-+pub const TIOCGWINSZ: ::c_int = 0x40087468;
-+pub const TIOCSWINSZ: ::c_int = 0x80087467;
-+pub const TIOCMGET: ::c_int = 0x5415;
-+pub const TIOCMBIS: ::c_int = 0x5416;
-+pub const TIOCMBIC: ::c_int = 0x5417;
-+pub const TIOCMSET: ::c_int = 0x5418;
-+pub const FIONREAD: ::c_int = 0x4004667F;
-+pub const TIOCCONS: ::c_int = 0x541D;
-+
-+pub const POLLWRNORM: ::c_short = 0x100;
-+pub const POLLWRBAND: ::c_short = 0x200;
-+
-+pub const TIOCM_LE: ::c_int = 0x001;
-+pub const TIOCM_DTR: ::c_int = 0x002;
-+pub const TIOCM_RTS: ::c_int = 0x004;
-+pub const TIOCM_ST: ::c_int = 0x008;
-+pub const TIOCM_SR: ::c_int = 0x010;
-+pub const TIOCM_CTS: ::c_int = 0x020;
-+pub const TIOCM_CAR: ::c_int = 0x040;
-+pub const TIOCM_RNG: ::c_int = 0x080;
-+pub const TIOCM_DSR: ::c_int = 0x100;
-+pub const TIOCM_CD: ::c_int = TIOCM_CAR;
-+pub const TIOCM_RI: ::c_int = TIOCM_RNG;
-+
-+// Syscall table
-+pub const SYS_restart_syscall: ::c_long = 0;
-+pub const SYS_exit: ::c_long = 1;
-+pub const SYS_fork: ::c_long = 2;
-+pub const SYS_read: ::c_long = 3;
-+pub const SYS_write: ::c_long = 4;
-+pub const SYS_open: ::c_long = 5;
-+pub const SYS_close: ::c_long = 6;
-+pub const SYS_waitpid: ::c_long = 7;
-+pub const SYS_creat: ::c_long = 8;
-+pub const SYS_link: ::c_long = 9;
-+pub const SYS_unlink: ::c_long = 10;
-+pub const SYS_execve: ::c_long = 11;
-+pub const SYS_chdir: ::c_long = 12;
-+pub const SYS_time: ::c_long = 13;
-+pub const SYS_mknod: ::c_long = 14;
-+pub const SYS_chmod: ::c_long = 15;
-+pub const SYS_lchown: ::c_long = 16;
-+pub const SYS_break: ::c_long = 17;
-+pub const SYS_oldstat: ::c_long = 18;
-+pub const SYS_lseek: ::c_long = 19;
-+pub const SYS_getpid: ::c_long = 20;
-+pub const SYS_mount: ::c_long = 21;
-+pub const SYS_umount: ::c_long = 22;
-+pub const SYS_setuid: ::c_long = 23;
-+pub const SYS_getuid: ::c_long = 24;
-+pub const SYS_stime: ::c_long = 25;
-+pub const SYS_ptrace: ::c_long = 26;
-+pub const SYS_alarm: ::c_long = 27;
-+pub const SYS_oldfstat: ::c_long = 28;
-+pub const SYS_pause: ::c_long = 29;
-+pub const SYS_utime: ::c_long = 30;
-+pub const SYS_stty: ::c_long = 31;
-+pub const SYS_gtty: ::c_long = 32;
-+pub const SYS_access: ::c_long = 33;
-+pub const SYS_nice: ::c_long = 34;
-+pub const SYS_ftime: ::c_long = 35;
-+pub const SYS_sync: ::c_long = 36;
-+pub const SYS_kill: ::c_long = 37;
-+pub const SYS_rename: ::c_long = 38;
-+pub const SYS_mkdir: ::c_long = 39;
-+pub const SYS_rmdir: ::c_long = 40;
-+pub const SYS_dup: ::c_long = 41;
-+pub const SYS_pipe: ::c_long = 42;
-+pub const SYS_times: ::c_long = 43;
-+pub const SYS_prof: ::c_long = 44;
-+pub const SYS_brk: ::c_long = 45;
-+pub const SYS_setgid: ::c_long = 46;
-+pub const SYS_getgid: ::c_long = 47;
-+pub const SYS_signal: ::c_long = 48;
-+pub const SYS_geteuid: ::c_long = 49;
-+pub const SYS_getegid: ::c_long = 50;
-+pub const SYS_acct: ::c_long = 51;
-+pub const SYS_umount2: ::c_long = 52;
-+pub const SYS_lock: ::c_long = 53;
-+pub const SYS_ioctl: ::c_long = 54;
-+pub const SYS_fcntl: ::c_long = 55;
-+pub const SYS_mpx: ::c_long = 56;
-+pub const SYS_setpgid: ::c_long = 57;
-+pub const SYS_ulimit: ::c_long = 58;
-+pub const SYS_oldolduname: ::c_long = 59;
-+pub const SYS_umask: ::c_long = 60;
-+pub const SYS_chroot: ::c_long = 61;
-+pub const SYS_ustat: ::c_long = 62;
-+pub const SYS_dup2: ::c_long = 63;
-+pub const SYS_getppid: ::c_long = 64;
-+pub const SYS_getpgrp: ::c_long = 65;
-+pub const SYS_setsid: ::c_long = 66;
-+pub const SYS_sigaction: ::c_long = 67;
-+pub const SYS_sgetmask: ::c_long = 68;
-+pub const SYS_ssetmask: ::c_long = 69;
-+pub const SYS_setreuid: ::c_long = 70;
-+pub const SYS_setregid: ::c_long = 71;
-+pub const SYS_sigsuspend: ::c_long = 72;
-+pub const SYS_sigpending: ::c_long = 73;
-+pub const SYS_sethostname: ::c_long = 74;
-+pub const SYS_setrlimit: ::c_long = 75;
-+pub const SYS_getrlimit: ::c_long = 76;
-+pub const SYS_getrusage: ::c_long = 77;
-+pub const SYS_gettimeofday: ::c_long = 78;
-+pub const SYS_settimeofday: ::c_long = 79;
-+pub const SYS_getgroups: ::c_long = 80;
-+pub const SYS_setgroups: ::c_long = 81;
-+pub const SYS_select: ::c_long = 82;
-+pub const SYS_symlink: ::c_long = 83;
-+pub const SYS_oldlstat: ::c_long = 84;
-+pub const SYS_readlink: ::c_long = 85;
-+pub const SYS_uselib: ::c_long = 86;
-+pub const SYS_swapon: ::c_long = 87;
-+pub const SYS_reboot: ::c_long = 88;
-+pub const SYS_readdir: ::c_long = 89;
-+pub const SYS_mmap: ::c_long = 90;
-+pub const SYS_munmap: ::c_long = 91;
-+pub const SYS_truncate: ::c_long = 92;
-+pub const SYS_ftruncate: ::c_long = 93;
-+pub const SYS_fchmod: ::c_long = 94;
-+pub const SYS_fchown: ::c_long = 95;
-+pub const SYS_getpriority: ::c_long = 96;
-+pub const SYS_setpriority: ::c_long = 97;
-+pub const SYS_profil: ::c_long = 98;
-+pub const SYS_statfs: ::c_long = 99;
-+pub const SYS_fstatfs: ::c_long = 100;
-+pub const SYS_ioperm: ::c_long = 101;
-+pub const SYS_socketcall: ::c_long = 102;
-+pub const SYS_syslog: ::c_long = 103;
-+pub const SYS_setitimer: ::c_long = 104;
-+pub const SYS_getitimer: ::c_long = 105;
-+pub const SYS_stat: ::c_long = 106;
-+pub const SYS_lstat: ::c_long = 107;
-+pub const SYS_fstat: ::c_long = 108;
-+pub const SYS_olduname: ::c_long = 109;
-+pub const SYS_iopl: ::c_long = 110;
-+pub const SYS_vhangup: ::c_long = 111;
-+pub const SYS_idle: ::c_long = 112;
-+pub const SYS_vm86: ::c_long = 113;
-+pub const SYS_wait4: ::c_long = 114;
-+pub const SYS_swapoff: ::c_long = 115;
-+pub const SYS_sysinfo: ::c_long = 116;
-+pub const SYS_ipc: ::c_long = 117;
-+pub const SYS_fsync: ::c_long = 118;
-+pub const SYS_sigreturn: ::c_long = 119;
-+pub const SYS_clone: ::c_long = 120;
-+pub const SYS_setdomainname: ::c_long = 121;
-+pub const SYS_uname: ::c_long = 122;
-+pub const SYS_modify_ldt: ::c_long = 123;
-+pub const SYS_adjtimex: ::c_long = 124;
-+pub const SYS_mprotect: ::c_long = 125;
-+pub const SYS_sigprocmask: ::c_long = 126;
-+pub const SYS_create_module: ::c_long = 127;
-+pub const SYS_init_module: ::c_long = 128;
-+pub const SYS_delete_module: ::c_long = 129;
-+pub const SYS_get_kernel_syms: ::c_long = 130;
-+pub const SYS_quotactl: ::c_long = 131;
-+pub const SYS_getpgid: ::c_long = 132;
-+pub const SYS_fchdir: ::c_long = 133;
-+pub const SYS_bdflush: ::c_long = 134;
-+pub const SYS_sysfs: ::c_long = 135;
-+pub const SYS_personality: ::c_long = 136;
-+pub const SYS_afs_syscall: ::c_long = 137;
-+pub const SYS_setfsuid: ::c_long = 138;
-+pub const SYS_setfsgid: ::c_long = 139;
-+pub const SYS__llseek: ::c_long = 140;
-+pub const SYS_getdents: ::c_long = 141;
-+pub const SYS__newselect: ::c_long = 142;
-+pub const SYS_flock: ::c_long = 143;
-+pub const SYS_msync: ::c_long = 144;
-+pub const SYS_readv: ::c_long = 145;
-+pub const SYS_writev: ::c_long = 146;
-+pub const SYS_getsid: ::c_long = 147;
-+pub const SYS_fdatasync: ::c_long = 148;
-+pub const SYS__sysctl: ::c_long = 149;
-+pub const SYS_mlock: ::c_long = 150;
-+pub const SYS_munlock: ::c_long = 151;
-+pub const SYS_mlockall: ::c_long = 152;
-+pub const SYS_munlockall: ::c_long = 153;
-+pub const SYS_sched_setparam: ::c_long = 154;
-+pub const SYS_sched_getparam: ::c_long = 155;
-+pub const SYS_sched_setscheduler: ::c_long = 156;
-+pub const SYS_sched_getscheduler: ::c_long = 157;
-+pub const SYS_sched_yield: ::c_long = 158;
-+pub const SYS_sched_get_priority_max: ::c_long = 159;
-+pub const SYS_sched_get_priority_min: ::c_long = 160;
-+pub const SYS_sched_rr_get_interval: ::c_long = 161;
-+pub const SYS_nanosleep: ::c_long = 162;
-+pub const SYS_mremap: ::c_long = 163;
-+pub const SYS_setresuid: ::c_long = 164;
-+pub const SYS_getresuid: ::c_long = 165;
-+pub const SYS_query_module: ::c_long = 166;
-+pub const SYS_poll: ::c_long = 167;
-+pub const SYS_nfsservctl: ::c_long = 168;
-+pub const SYS_setresgid: ::c_long = 169;
-+pub const SYS_getresgid: ::c_long = 170;
-+pub const SYS_prctl: ::c_long = 171;
-+pub const SYS_rt_sigreturn: ::c_long = 172;
-+pub const SYS_rt_sigaction: ::c_long = 173;
-+pub const SYS_rt_sigprocmask: ::c_long = 174;
-+pub const SYS_rt_sigpending: ::c_long = 175;
-+pub const SYS_rt_sigtimedwait: ::c_long = 176;
-+pub const SYS_rt_sigqueueinfo: ::c_long = 177;
-+pub const SYS_rt_sigsuspend: ::c_long = 178;
-+pub const SYS_pread64: ::c_long = 179;
-+pub const SYS_pwrite64: ::c_long = 180;
-+pub const SYS_chown: ::c_long = 181;
-+pub const SYS_getcwd: ::c_long = 182;
-+pub const SYS_capget: ::c_long = 183;
-+pub const SYS_capset: ::c_long = 184;
-+pub const SYS_sigaltstack: ::c_long = 185;
-+pub const SYS_sendfile: ::c_long = 186;
-+pub const SYS_getpmsg: ::c_long = 187;
-+pub const SYS_putpmsg: ::c_long = 188;
-+pub const SYS_vfork: ::c_long = 189;
-+pub const SYS_ugetrlimit: ::c_long = 190;
-+pub const SYS_readahead: ::c_long = 191;
-+pub const SYS_mmap2: ::c_long = 192;
-+pub const SYS_truncate64: ::c_long = 193;
-+pub const SYS_ftruncate64: ::c_long = 194;
-+pub const SYS_stat64: ::c_long = 195;
-+pub const SYS_lstat64: ::c_long = 196;
-+pub const SYS_fstat64: ::c_long = 197;
-+pub const SYS_pciconfig_read: ::c_long = 198;
-+pub const SYS_pciconfig_write: ::c_long = 199;
-+pub const SYS_pciconfig_iobase: ::c_long = 200;
-+pub const SYS_multiplexer: ::c_long = 201;
-+pub const SYS_getdents64: ::c_long = 202;
-+pub const SYS_pivot_root: ::c_long = 203;
-+pub const SYS_fcntl64: ::c_long = 204;
-+pub const SYS_madvise: ::c_long = 205;
-+pub const SYS_mincore: ::c_long = 206;
-+pub const SYS_gettid: ::c_long = 207;
-+pub const SYS_tkill: ::c_long = 208;
-+pub const SYS_setxattr: ::c_long = 209;
-+pub const SYS_lsetxattr: ::c_long = 210;
-+pub const SYS_fsetxattr: ::c_long = 211;
-+pub const SYS_getxattr: ::c_long = 212;
-+pub const SYS_lgetxattr: ::c_long = 213;
-+pub const SYS_fgetxattr: ::c_long = 214;
-+pub const SYS_listxattr: ::c_long = 215;
-+pub const SYS_llistxattr: ::c_long = 216;
-+pub const SYS_flistxattr: ::c_long = 217;
-+pub const SYS_removexattr: ::c_long = 218;
-+pub const SYS_lremovexattr: ::c_long = 219;
-+pub const SYS_fremovexattr: ::c_long = 220;
-+pub const SYS_futex: ::c_long = 221;
-+pub const SYS_sched_setaffinity: ::c_long = 222;
-+pub const SYS_sched_getaffinity: ::c_long = 223;
-+pub const SYS_tuxcall: ::c_long = 225;
-+pub const SYS_sendfile64: ::c_long = 226;
-+pub const SYS_io_setup: ::c_long = 227;
-+pub const SYS_io_destroy: ::c_long = 228;
-+pub const SYS_io_getevents: ::c_long = 229;
-+pub const SYS_io_submit: ::c_long = 230;
-+pub const SYS_io_cancel: ::c_long = 231;
-+pub const SYS_set_tid_address: ::c_long = 232;
-+pub const SYS_fadvise64: ::c_long = 233;
-+pub const SYS_exit_group: ::c_long = 234;
-+pub const SYS_lookup_dcookie: ::c_long = 235;
-+pub const SYS_epoll_create: ::c_long = 236;
-+pub const SYS_epoll_ctl: ::c_long = 237;
-+pub const SYS_epoll_wait: ::c_long = 238;
-+pub const SYS_remap_file_pages: ::c_long = 239;
-+pub const SYS_timer_create: ::c_long = 240;
-+pub const SYS_timer_settime: ::c_long = 241;
-+pub const SYS_timer_gettime: ::c_long = 242;
-+pub const SYS_timer_getoverrun: ::c_long = 243;
-+pub const SYS_timer_delete: ::c_long = 244;
-+pub const SYS_clock_settime: ::c_long = 245;
-+pub const SYS_clock_gettime: ::c_long = 246;
-+pub const SYS_clock_getres: ::c_long = 247;
-+pub const SYS_clock_nanosleep: ::c_long = 248;
-+pub const SYS_swapcontext: ::c_long = 249;
-+pub const SYS_tgkill: ::c_long = 250;
-+pub const SYS_utimes: ::c_long = 251;
-+pub const SYS_statfs64: ::c_long = 252;
-+pub const SYS_fstatfs64: ::c_long = 253;
-+pub const SYS_fadvise64_64: ::c_long = 254;
-+pub const SYS_rtas: ::c_long = 255;
-+pub const SYS_sys_debug_setcontext: ::c_long = 256;
-+pub const SYS_migrate_pages: ::c_long = 258;
-+pub const SYS_mbind: ::c_long = 259;
-+pub const SYS_get_mempolicy: ::c_long = 260;
-+pub const SYS_set_mempolicy: ::c_long = 261;
-+pub const SYS_mq_open: ::c_long = 262;
-+pub const SYS_mq_unlink: ::c_long = 263;
-+pub const SYS_mq_timedsend: ::c_long = 264;
-+pub const SYS_mq_timedreceive: ::c_long = 265;
-+pub const SYS_mq_notify: ::c_long = 266;
-+pub const SYS_mq_getsetattr: ::c_long = 267;
-+pub const SYS_kexec_load: ::c_long = 268;
-+pub const SYS_add_key: ::c_long = 269;
-+pub const SYS_request_key: ::c_long = 270;
-+pub const SYS_keyctl: ::c_long = 271;
-+pub const SYS_waitid: ::c_long = 272;
-+pub const SYS_ioprio_set: ::c_long = 273;
-+pub const SYS_ioprio_get: ::c_long = 274;
-+pub const SYS_inotify_init: ::c_long = 275;
-+pub const SYS_inotify_add_watch: ::c_long = 276;
-+pub const SYS_inotify_rm_watch: ::c_long = 277;
-+pub const SYS_spu_run: ::c_long = 278;
-+pub const SYS_spu_create: ::c_long = 279;
-+pub const SYS_pselect6: ::c_long = 280;
-+pub const SYS_ppoll: ::c_long = 281;
-+pub const SYS_unshare: ::c_long = 282;
-+pub const SYS_splice: ::c_long = 283;
-+pub const SYS_tee: ::c_long = 284;
-+pub const SYS_vmsplice: ::c_long = 285;
-+pub const SYS_openat: ::c_long = 286;
-+pub const SYS_mkdirat: ::c_long = 287;
-+pub const SYS_mknodat: ::c_long = 288;
-+pub const SYS_fchownat: ::c_long = 289;
-+pub const SYS_futimesat: ::c_long = 290;
-+pub const SYS_fstatat64: ::c_long = 291;
-+pub const SYS_unlinkat: ::c_long = 292;
-+pub const SYS_renameat: ::c_long = 293;
-+pub const SYS_linkat: ::c_long = 294;
-+pub const SYS_symlinkat: ::c_long = 295;
-+pub const SYS_readlinkat: ::c_long = 296;
-+pub const SYS_fchmodat: ::c_long = 297;
-+pub const SYS_faccessat: ::c_long = 298;
-+pub const SYS_get_robust_list: ::c_long = 299;
-+pub const SYS_set_robust_list: ::c_long = 300;
-+pub const SYS_move_pages: ::c_long = 301;
-+pub const SYS_getcpu: ::c_long = 302;
-+pub const SYS_epoll_pwait: ::c_long = 303;
-+pub const SYS_utimensat: ::c_long = 304;
-+pub const SYS_signalfd: ::c_long = 305;
-+pub const SYS_timerfd_create: ::c_long = 306;
-+pub const SYS_eventfd: ::c_long = 307;
-+pub const SYS_sync_file_range2: ::c_long = 308;
-+pub const SYS_fallocate: ::c_long = 309;
-+pub const SYS_subpage_prot: ::c_long = 310;
-+pub const SYS_timerfd_settime: ::c_long = 311;
-+pub const SYS_timerfd_gettime: ::c_long = 312;
-+pub const SYS_signalfd4: ::c_long = 313;
-+pub const SYS_eventfd2: ::c_long = 314;
-+pub const SYS_epoll_create1: ::c_long = 315;
-+pub const SYS_dup3: ::c_long = 316;
-+pub const SYS_pipe2: ::c_long = 317;
-+pub const SYS_inotify_init1: ::c_long = 318;
-+pub const SYS_perf_event_open: ::c_long = 319;
-+pub const SYS_preadv: ::c_long = 320;
-+pub const SYS_pwritev: ::c_long = 321;
-+pub const SYS_rt_tgsigqueueinfo: ::c_long = 322;
-+pub const SYS_fanotify_init: ::c_long = 323;
-+pub const SYS_fanotify_mark: ::c_long = 324;
-+pub const SYS_prlimit64: ::c_long = 325;
-+pub const SYS_socket: ::c_long = 326;
-+pub const SYS_bind: ::c_long = 327;
-+pub const SYS_connect: ::c_long = 328;
-+pub const SYS_listen: ::c_long = 329;
-+pub const SYS_accept: ::c_long = 330;
-+pub const SYS_getsockname: ::c_long = 331;
-+pub const SYS_getpeername: ::c_long = 332;
-+pub const SYS_socketpair: ::c_long = 333;
-+pub const SYS_send: ::c_long = 334;
-+pub const SYS_sendto: ::c_long = 335;
-+pub const SYS_recv: ::c_long = 336;
-+pub const SYS_recvfrom: ::c_long = 337;
-+pub const SYS_shutdown: ::c_long = 338;
-+pub const SYS_setsockopt: ::c_long = 339;
-+pub const SYS_getsockopt: ::c_long = 340;
-+pub const SYS_sendmsg: ::c_long = 341;
-+pub const SYS_recvmsg: ::c_long = 342;
-+pub const SYS_recvmmsg: ::c_long = 343;
-+pub const SYS_accept4: ::c_long = 344;
-+pub const SYS_name_to_handle_at: ::c_long = 345;
-+pub const SYS_open_by_handle_at: ::c_long = 346;
-+pub const SYS_clock_adjtime: ::c_long = 347;
-+pub const SYS_syncfs: ::c_long = 348;
-+pub const SYS_sendmmsg: ::c_long = 349;
-+pub const SYS_setns: ::c_long = 350;
-+pub const SYS_process_vm_readv: ::c_long = 351;
-+pub const SYS_process_vm_writev: ::c_long = 352;
-+pub const SYS_finit_module: ::c_long = 353;
-+pub const SYS_kcmp: ::c_long = 354;
-+pub const SYS_sched_setattr: ::c_long = 355;
-+pub const SYS_sched_getattr: ::c_long = 356;
-+pub const SYS_renameat2: ::c_long = 357;
-+pub const SYS_seccomp: ::c_long = 358;
-+pub const SYS_getrandom: ::c_long = 359;
-+pub const SYS_memfd_create: ::c_long = 360;
-+pub const SYS_bpf: ::c_long = 361;
-+pub const SYS_execveat: ::c_long = 362;
-+pub const SYS_switch_endian: ::c_long = 363;
-+pub const SYS_userfaultfd: ::c_long = 364;
-+pub const SYS_membarrier: ::c_long = 365;
-+pub const SYS_mlock2: ::c_long = 378;
-+pub const SYS_copy_file_range: ::c_long = 379;
-+pub const SYS_preadv2: ::c_long = 380;
-+pub const SYS_pwritev2: ::c_long = 381;
-+pub const SYS_kexec_file_load: ::c_long = 382;
-+pub const SYS_statx: ::c_long = 383;
-+pub const SYS_pkey_alloc: ::c_long = 384;
-+pub const SYS_pkey_free: ::c_long = 385;
-+pub const SYS_pkey_mprotect: ::c_long = 386;
-+
-+#[doc(hidden)]
-+pub const AF_MAX: ::c_int = 43;
-+#[doc(hidden)]
-+pub const PF_MAX: ::c_int = AF_MAX;
-diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs
-index fa570248c72..9f704c7fac9 100644
---- a/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs
-+++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs
-@@ -52,6 +52,18 @@ s! {
- pub ss_size: ::size_t
- }
-
-+ pub struct ipc_perm {
-+ pub __ipc_perm_key: ::key_t,
-+ pub uid: ::uid_t,
-+ pub gid: ::gid_t,
-+ pub cuid: ::uid_t,
-+ pub cgid: ::gid_t,
-+ pub mode: ::mode_t,
-+ pub __seq: ::c_int,
-+ __unused1: ::c_long,
-+ __unused2: ::c_long
-+ }
-+
- pub struct shmid_ds {
- pub shm_perm: ::ipc_perm,
- pub shm_segsz: ::size_t,
-@@ -164,6 +176,9 @@ s! {
- }
- }
-
-+pub const SIGSTKSZ: ::size_t = 8192;
-+pub const MINSIGSTKSZ: ::size_t = 2048;
-+
- pub const O_DIRECT: ::c_int = 0x4000;
- pub const O_DIRECTORY: ::c_int = 0x10000;
- pub const O_NOFOLLOW: ::c_int = 0x20000;
-@@ -178,6 +193,76 @@ pub const RLIMIT_NOFILE: ::c_int = 7;
- pub const RLIMIT_AS: ::c_int = 9;
- pub const RLIMIT_NPROC: ::c_int = 6;
- pub const RLIMIT_MEMLOCK: ::c_int = 8;
-+pub const RLIMIT_NLIMITS: ::c_int = 16;
-+
-+pub const MCL_CURRENT: ::c_int = 0x0001;
-+pub const MCL_FUTURE: ::c_int = 0x0002;
-+pub const CBAUD: ::tcflag_t = 0o0010017;
-+pub const TAB1: ::c_int = 0x00000800;
-+pub const TAB2: ::c_int = 0x00001000;
-+pub const TAB3: ::c_int = 0x00001800;
-+pub const CR1: ::c_int = 0x00000200;
-+pub const CR2: ::c_int = 0x00000400;
-+pub const CR3: ::c_int = 0x00000600;
-+pub const FF1: ::c_int = 0x00008000;
-+pub const BS1: ::c_int = 0x00002000;
-+pub const VT1: ::c_int = 0x00004000;
-+pub const VWERASE: usize = 14;
-+pub const VREPRINT: usize = 12;
-+pub const VSUSP: usize = 10;
-+pub const VSTART: usize = 8;
-+pub const VSTOP: usize = 9;
-+pub const VDISCARD: usize = 13;
-+pub const VTIME: usize = 5;
-+pub const IXON: ::tcflag_t = 0x00000400;
-+pub const IXOFF: ::tcflag_t = 0x00001000;
-+pub const ONLCR: ::tcflag_t = 0x4;
-+pub const CSIZE: ::tcflag_t = 0x00000030;
-+pub const CS6: ::tcflag_t = 0x00000010;
-+pub const CS7: ::tcflag_t = 0x00000020;
-+pub const CS8: ::tcflag_t = 0x00000030;
-+pub const CSTOPB: ::tcflag_t = 0x00000040;
-+pub const CREAD: ::tcflag_t = 0x00000080;
-+pub const PARENB: ::tcflag_t = 0x00000100;
-+pub const PARODD: ::tcflag_t = 0x00000200;
-+pub const HUPCL: ::tcflag_t = 0x00000400;
-+pub const CLOCAL: ::tcflag_t = 0x00000800;
-+pub const ECHOKE: ::tcflag_t = 0x00000800;
-+pub const ECHOE: ::tcflag_t = 0x00000010;
-+pub const ECHOK: ::tcflag_t = 0x00000020;
-+pub const ECHONL: ::tcflag_t = 0x00000040;
-+pub const ECHOPRT: ::tcflag_t = 0x00000400;
-+pub const ECHOCTL: ::tcflag_t = 0x00000200;
-+pub const ISIG: ::tcflag_t = 0x00000001;
-+pub const ICANON: ::tcflag_t = 0x00000002;
-+pub const PENDIN: ::tcflag_t = 0x00004000;
-+pub const NOFLSH: ::tcflag_t = 0x00000080;
-+pub const CIBAUD: ::tcflag_t = 0o02003600000;
-+pub const CBAUDEX: ::tcflag_t = 0o010000;
-+pub const VSWTC: usize = 7;
-+pub const OLCUC: ::tcflag_t = 0o000002;
-+pub const NLDLY: ::tcflag_t = 0o000400;
-+pub const CRDLY: ::tcflag_t = 0o003000;
-+pub const TABDLY: ::tcflag_t = 0o014000;
-+pub const BSDLY: ::tcflag_t = 0o020000;
-+pub const FFDLY: ::tcflag_t = 0o100000;
-+pub const VTDLY: ::tcflag_t = 0o040000;
-+pub const XTABS: ::tcflag_t = 0o014000;
-+pub const B57600: ::speed_t = 0o010001;
-+pub const B115200: ::speed_t = 0o010002;
-+pub const B230400: ::speed_t = 0o010003;
-+pub const B460800: ::speed_t = 0o010004;
-+pub const B500000: ::speed_t = 0o010005;
-+pub const B576000: ::speed_t = 0o010006;
-+pub const B921600: ::speed_t = 0o010007;
-+pub const B1000000: ::speed_t = 0o010010;
-+pub const B1152000: ::speed_t = 0o010011;
-+pub const B1500000: ::speed_t = 0o010012;
-+pub const B2000000: ::speed_t = 0o010013;
-+pub const B2500000: ::speed_t = 0o010014;
-+pub const B3000000: ::speed_t = 0o010015;
-+pub const B3500000: ::speed_t = 0o010016;
-+pub const B4000000: ::speed_t = 0o010017;
-
- pub const O_APPEND: ::c_int = 1024;
- pub const O_CREAT: ::c_int = 64;
-diff --git a/src/liblibc/src/unix/notbsd/linux/musl/mod.rs b/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
-index 0d92a4b9d14..10d61ebebef 100644
---- a/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
-+++ b/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
-@@ -260,7 +260,8 @@ cfg_if! {
- pub use self::b64::*;
- } else if #[cfg(any(target_arch = "x86",
- target_arch = "mips",
-- target_arch = "arm"))] {
-+ target_arch = "arm",
-+ target_arch = "powerpc"))] {
- mod b32;
- pub use self::b32::*;
- } else { }
diff --git a/user/rust/0031-liblibc-1b130d4c349d.patch b/user/rust/0031-liblibc-1b130d4c349d.patch
new file mode 100644
index 000000000..29087689b
--- /dev/null
+++ b/user/rust/0031-liblibc-1b130d4c349d.patch
@@ -0,0 +1,126 @@
+From 1b130d4c349d35da9aeb07ce020cbf96755e8a6b Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Thu, 1 Nov 2018 03:37:18 +0000
+Subject: [PATCH] Add F_RDLCK/F_WRLCK/F_UNLCK to several platforms
+
+These are used by the flock wrapper in rustc_data_structures. The
+constants were already present in x86_64-linux-gnu and BSD (since
+4928bd986907).
+---
+ src/unix/haiku/mod.rs | 4 ++++
+ src/unix/notbsd/android/mod.rs | 4 ++++
+ src/unix/notbsd/linux/musl/mod.rs | 4 ++++
+ src/unix/notbsd/linux/other/b32/mod.rs | 4 ++++
+ src/unix/notbsd/linux/other/b64/aarch64.rs | 4 ++++
+ src/unix/notbsd/linux/other/b64/powerpc64.rs | 4 ++++
+ src/unix/notbsd/linux/other/b64/sparc64.rs | 4 ++++
+ 7 files changed, 28 insertions(+)
+
+diff --git a/src/liblibc/src/unix/haiku/mod.rs b/src/liblibc/src/unix/haiku/mod.rs
+index 2ef36f8f3..307a5a40d 100644
+--- a/src/liblibc/src/unix/haiku/mod.rs
++++ b/src/liblibc/src/unix/haiku/mod.rs
+@@ -351,6 +351,10 @@ pub const F_SETLK: ::c_int = 0x0080;
+ pub const F_SETLKW: ::c_int = 0x0100;
+ pub const F_DUPFD_CLOEXEC: ::c_int = 0x0200;
+
++pub const F_RDLCK: ::c_int = 0x0040;
++pub const F_UNLCK: ::c_int = 0x0200;
++pub const F_WRLCK: ::c_int = 0x0400;
++
+ pub const AT_FDCWD: ::c_int = -1;
+ pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x01;
+ pub const AT_SYMLINK_FOLLOW: ::c_int = 0x02;
+diff --git a/src/liblibc/src/unix/notbsd/android/mod.rs b/src/liblibc/src/unix/notbsd/android/mod.rs
+index 3e10acd50..5b750b2b1 100644
+--- a/src/liblibc/src/unix/notbsd/android/mod.rs
++++ b/src/liblibc/src/unix/notbsd/android/mod.rs
+@@ -744,6 +744,10 @@ pub const F_SETOWN: ::c_int = 8;
+ pub const F_SETLK: ::c_int = 6;
+ pub const F_SETLKW: ::c_int = 7;
+
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++
+ pub const TCGETS: ::c_int = 0x5401;
+ pub const TCSETS: ::c_int = 0x5402;
+ pub const TCSETSW: ::c_int = 0x5403;
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/mod.rs b/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
+index 10d61ebeb..9c669d9b4 100644
+--- a/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
++++ b/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
+@@ -121,6 +121,10 @@ pub const ECOMM: ::c_int = 70;
+ pub const EPROTO: ::c_int = 71;
+ pub const EDOTDOT: ::c_int = 73;
+
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++
+ pub const SA_NODEFER: ::c_int = 0x40000000;
+ pub const SA_RESETHAND: ::c_int = 0x80000000;
+ pub const SA_RESTART: ::c_int = 0x10000000;
+diff --git a/src/liblibc/src/unix/notbsd/linux/other/b32/mod.rs b/src/liblibc/src/unix/notbsd/linux/other/b32/mod.rs
+index 5b0142ab8..d078f7537 100644
+--- a/src/liblibc/src/unix/notbsd/linux/other/b32/mod.rs
++++ b/src/liblibc/src/unix/notbsd/linux/other/b32/mod.rs
+@@ -251,6 +251,10 @@ pub const F_SETOWN: ::c_int = 8;
+ pub const F_SETLK: ::c_int = 6;
+ pub const F_SETLKW: ::c_int = 7;
+
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++
+ pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+ pub const TIOCEXCL: ::c_ulong = 0x540C;
+diff --git a/src/liblibc/src/unix/notbsd/linux/other/b64/aarch64.rs b/src/liblibc/src/unix/notbsd/linux/other/b64/aarch64.rs
+index 2ba27a72b..171d904ca 100644
+--- a/src/liblibc/src/unix/notbsd/linux/other/b64/aarch64.rs
++++ b/src/liblibc/src/unix/notbsd/linux/other/b64/aarch64.rs
+@@ -340,6 +340,10 @@ pub const F_SETOWN: ::c_int = 8;
+ pub const F_SETLK: ::c_int = 6;
+ pub const F_SETLKW: ::c_int = 7;
+
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++
+ pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+ pub const TIOCEXCL: ::c_ulong = 0x540C;
+diff --git a/src/liblibc/src/unix/notbsd/linux/other/b64/powerpc64.rs b/src/liblibc/src/unix/notbsd/linux/other/b64/powerpc64.rs
+index 9dd91f0fd..1813413b0 100644
+--- a/src/liblibc/src/unix/notbsd/linux/other/b64/powerpc64.rs
++++ b/src/liblibc/src/unix/notbsd/linux/other/b64/powerpc64.rs
+@@ -327,6 +327,10 @@ pub const F_SETOWN: ::c_int = 8;
+ pub const F_SETLK: ::c_int = 6;
+ pub const F_SETLKW: ::c_int = 7;
+
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++
+ pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+ pub const TIOCEXCL: ::c_ulong = 0x540C;
+diff --git a/src/liblibc/src/unix/notbsd/linux/other/b64/sparc64.rs b/src/liblibc/src/unix/notbsd/linux/other/b64/sparc64.rs
+index 34438a735..a3251ec7b 100644
+--- a/src/liblibc/src/unix/notbsd/linux/other/b64/sparc64.rs
++++ b/src/liblibc/src/unix/notbsd/linux/other/b64/sparc64.rs
+@@ -305,6 +305,10 @@ pub const F_SETOWN: ::c_int = 6;
+ pub const F_SETLK: ::c_int = 8;
+ pub const F_SETLKW: ::c_int = 9;
+
++pub const F_RDLCK: ::c_int = 1;
++pub const F_WRLCK: ::c_int = 2;
++pub const F_UNLCK: ::c_int = 3;
++
+ pub const SFD_NONBLOCK: ::c_int = 0x4000;
+
+ pub const TIOCEXCL: ::c_ulong = 0x2000740d;
+--
+2.18.0
+
diff --git a/user/rust/0035-rand-5b9e5c39d857.patch b/user/rust/0035-rand-5b9e5c39d857.patch
deleted file mode 100644
index 6f9d072f8..000000000
--- a/user/rust/0035-rand-5b9e5c39d857.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5b9e5c39d857312fb308493ac8d0b89f73607941 Mon Sep 17 00:00:00 2001
-From: Lion Yang <lion@aosc.io>
-Date: Wed, 15 Aug 2018 16:10:37 +0800
-Subject: [PATCH] os.rs: fix wrong syscall number for PowerPC
-
-__NR_getrandom is 359 on PowerPC, added from torvalds/linux@7d59deb50aa v3.17-rc5.
-The bug was introduced from 05f23d275 3 years ago, affecting from 0.1.1 to before 0.5.0-pre.0.
-It has already been fixed on the 0.5 branch at 00713a61c so this is a backport.
----
- src/os.rs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/vendor/rand-0.4.2/src/os.rs b/src/vendor/rand-0.4.2/src/os.rs
-index 633594ec7d..10022fbcd6 100644
---- a/src/vendor/rand-0.4.2/src/os.rs
-+++ b/src/vendor/rand-0.4.2/src/os.rs
-@@ -102,7 +102,7 @@ mod imp {
- #[cfg(target_arch = "aarch64")]
- const NR_GETRANDOM: libc::c_long = 278;
- #[cfg(target_arch = "powerpc")]
-- const NR_GETRANDOM: libc::c_long = 384;
-+ const NR_GETRANDOM: libc::c_long = 359;
-
- unsafe {
- syscall(NR_GETRANDOM, buf.as_mut_ptr(), buf.len(), 0)
diff --git a/user/rust/0036-rand-checksums.patch b/user/rust/0036-rand-checksums.patch
deleted file mode 100644
index a998157ce..000000000
--- a/user/rust/0036-rand-checksums.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff --git a/src/vendor/rand-0.4.2/.cargo-checksum.json.orig b/src/vendor/rand-0.4.2/.cargo-checksum.json
-index 67115b1a..77781e37 100644
---- a/src/vendor/rand-0.4.2/.cargo-checksum.json.orig
-+++ b/src/vendor/rand-0.4.2/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"12868a81c3590d8f2c08d53ca51e6b4b9be39d854f81bd4a57f82466cbe8d79a","CHANGELOG.md":"03974fa236c7ac7a29931ef548d05ba1d8e00b1202961310f6d837aca9bc377a","Cargo.toml":"09b6978ce09c8df87e5fe605d1ff5ea920747da588523df8f2f5d1ca3292db80","Cargo.toml.orig":"02e9cb4d497d9ffbcb3cc0a227a9c7497e905a7d889a175b048aa03f8600cb16","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"f15d6584b8f417cc743ebcad6b69776874a6ac30807d0ce0ed28f3779be1f151","appveyor.yml":"8796156caf7041ef2a43f7a313df21ea639de3f2563b6181bba1096b1c489f1b","benches/bench.rs":"35c4ab609f2a5f5aab6c52c257415258dc0780621b492b5a82bb12d048cab6db","benches/distributions/exponential.rs":"99cb59c013a0b6bb390d34c5649b341fc3b88ea7df0caf2470bdda8798f9fe3d","benches/distributions/gamma.rs":"3533f311e4b55d743c5b01a7eb6529c94fd97726ef6702a6372f914f5f33666b","benches/distributions/mod.rs":"0028f1cb96f61152ed5b49a4fe91227d809ef6d19035592c36032a538af7f95e","benches/distributions/normal.rs":"4e10c18cb583ccb96301ea953c8e0aa9ee3b6662060271d1b8d19ca23364dc6b","benches/generators.rs":"aaa2f1dbfb399df8323d8a5796b92add6210cd5f0f1d916895ffdd81d60f812b","benches/misc.rs":"bd2f7c5a16f0fcb59022d5aeef66ed3c94e89ebf6c06667851dd23d0b1595504","src/distributions/exponential.rs":"103c8412c8a581b71835f1c00e40f6370e7702adf9d499243933a793d132d4e7","src/distributions/gamma.rs":"7a3f85c8daad4e56e334586ddb9fc9d83df3b0699738ed681a6c41e4ed455be9","src/distributions/mod.rs":"7943c4f83721bac816f831cca3b1574b6136932f7b4927aa6101130080ba62c5","src/distributions/normal.rs":"1562b43f80e4d5f83a8deb5af18de5a18dfeeeeda11fefc577da26672b14c949","src/distributions/range.rs":"a72a538d3ec4ed23f8d632aa55fd4793c464f24a5872d04ce8095ddd5db92115","src/distributions/ziggurat_tables.rs":"4eacf94fc352c91c455a6623de6a721e53842e1690f13a5662b6a79c7fbb73de","src/jitter.rs":"befd4b84bf753c107370b5b9498ad49611c220bdae2e4be9ee4398e9fa497042","src/lib.rs":"c86b28064c2c5abd02694e8bf97c84513b21fefe04e4305f9a78d5e864ef3e3f","src/os.rs":"38c2f26c2784c61ae9a17a7a9c59fcf449dada826a66f66b7f46b0992ef001de","src/prng/chacha.rs":"558007276f9c22933d39e5b8e853f4dd9533e823ed66df8dc1f23ad6925b1d51","src/prng/isaac.rs":"a8a2ee8b38d312663308e3bdf03376e342fd91330655f39144e5bba7392b2a8e","src/prng/isaac64.rs":"f28f7596ccab910db265b42671116abb9d2039fa8a421cbc75312bd0e7715d3a","src/prng/mod.rs":"c1a73450f49e819a20942a5b591f84a08ebb5ac33aa0f65b18ac1dc9a19a3084","src/prng/xorshift.rs":"606c308747293652c868b46dc3cad847d0c3717629c04ba75681c887c7634114","src/rand_impls.rs":"e1f27077fc13d5855bb66235f8ccfb216e116337eb38424d9c30c090e112215c","src/read.rs":"bd0eb508a6b659dc578d546fc2f231484aed80c73cfe8c475e0d65c8d699a769","src/reseeding.rs":"a97b86387b87ea1adc5262ddea480fe735c9c2a86762abaace29119022ac9f6e","src/seq.rs":"76dd58af0f580aed2721c393a5c036322186dc7cb3b4abed33436620c7c49288","utils/ziggurat_tables.py":"a9fc0a2fdae9b5c798c238788f94b720c156e13fd96f2356c409aa533191eb94"},"package":"eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"}
-\ No newline at end of file
-+{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"12868a81c3590d8f2c08d53ca51e6b4b9be39d854f81bd4a57f82466cbe8d79a","CHANGELOG.md":"03974fa236c7ac7a29931ef548d05ba1d8e00b1202961310f6d837aca9bc377a","Cargo.toml":"09b6978ce09c8df87e5fe605d1ff5ea920747da588523df8f2f5d1ca3292db80","Cargo.toml.orig":"02e9cb4d497d9ffbcb3cc0a227a9c7497e905a7d889a175b048aa03f8600cb16","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"f15d6584b8f417cc743ebcad6b69776874a6ac30807d0ce0ed28f3779be1f151","appveyor.yml":"8796156caf7041ef2a43f7a313df21ea639de3f2563b6181bba1096b1c489f1b","benches/bench.rs":"35c4ab609f2a5f5aab6c52c257415258dc0780621b492b5a82bb12d048cab6db","benches/distributions/exponential.rs":"99cb59c013a0b6bb390d34c5649b341fc3b88ea7df0caf2470bdda8798f9fe3d","benches/distributions/gamma.rs":"3533f311e4b55d743c5b01a7eb6529c94fd97726ef6702a6372f914f5f33666b","benches/distributions/mod.rs":"0028f1cb96f61152ed5b49a4fe91227d809ef6d19035592c36032a538af7f95e","benches/distributions/normal.rs":"4e10c18cb583ccb96301ea953c8e0aa9ee3b6662060271d1b8d19ca23364dc6b","benches/generators.rs":"aaa2f1dbfb399df8323d8a5796b92add6210cd5f0f1d916895ffdd81d60f812b","benches/misc.rs":"bd2f7c5a16f0fcb59022d5aeef66ed3c94e89ebf6c06667851dd23d0b1595504","src/distributions/exponential.rs":"103c8412c8a581b71835f1c00e40f6370e7702adf9d499243933a793d132d4e7","src/distributions/gamma.rs":"7a3f85c8daad4e56e334586ddb9fc9d83df3b0699738ed681a6c41e4ed455be9","src/distributions/mod.rs":"7943c4f83721bac816f831cca3b1574b6136932f7b4927aa6101130080ba62c5","src/distributions/normal.rs":"1562b43f80e4d5f83a8deb5af18de5a18dfeeeeda11fefc577da26672b14c949","src/distributions/range.rs":"a72a538d3ec4ed23f8d632aa55fd4793c464f24a5872d04ce8095ddd5db92115","src/distributions/ziggurat_tables.rs":"4eacf94fc352c91c455a6623de6a721e53842e1690f13a5662b6a79c7fbb73de","src/jitter.rs":"befd4b84bf753c107370b5b9498ad49611c220bdae2e4be9ee4398e9fa497042","src/lib.rs":"c86b28064c2c5abd02694e8bf97c84513b21fefe04e4305f9a78d5e864ef3e3f","src/os.rs":"4860f165f68b7c978b0488c75d264cd9aaf54e7e4484036736ee5c4f5b6bd78d","src/prng/chacha.rs":"558007276f9c22933d39e5b8e853f4dd9533e823ed66df8dc1f23ad6925b1d51","src/prng/isaac.rs":"a8a2ee8b38d312663308e3bdf03376e342fd91330655f39144e5bba7392b2a8e","src/prng/isaac64.rs":"f28f7596ccab910db265b42671116abb9d2039fa8a421cbc75312bd0e7715d3a","src/prng/mod.rs":"c1a73450f49e819a20942a5b591f84a08ebb5ac33aa0f65b18ac1dc9a19a3084","src/prng/xorshift.rs":"606c308747293652c868b46dc3cad847d0c3717629c04ba75681c887c7634114","src/rand_impls.rs":"e1f27077fc13d5855bb66235f8ccfb216e116337eb38424d9c30c090e112215c","src/read.rs":"bd0eb508a6b659dc578d546fc2f231484aed80c73cfe8c475e0d65c8d699a769","src/reseeding.rs":"a97b86387b87ea1adc5262ddea480fe735c9c2a86762abaace29119022ac9f6e","src/seq.rs":"76dd58af0f580aed2721c393a5c036322186dc7cb3b4abed33436620c7c49288","utils/ziggurat_tables.py":"a9fc0a2fdae9b5c798c238788f94b720c156e13fd96f2356c409aa533191eb94"},"package":"eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"}
-\ No newline at end of file
diff --git a/user/rust/0040-rls-atomics.patch b/user/rust/0040-rls-atomics.patch
index 61811ef4d..4dd813faa 100644
--- a/user/rust/0040-rls-atomics.patch
+++ b/user/rust/0040-rls-atomics.patch
@@ -1,17 +1,17 @@
diff --git a/src/tools/rls/src/cmd.rs b/src/tools/rls/src/cmd.rs
-index 545a129..8285f99 100644
+index 64035aa..d9129d8 100644
--- a/src/tools/rls/src/cmd.rs
+++ b/src/tools/rls/src/cmd.rs
-@@ -16,7 +16,7 @@ use crate::actions::requests;
- use rls_analysis::{AnalysisHost, Target};
- use crate::config::Config;
+@@ -17,7 +17,7 @@ use crate::config::Config;
use crate::server::{self, LsService, Notification, Request, RequestId};
+ use rls_analysis::{AnalysisHost, Target};
+ use rls_vfs::Vfs;
-use std::sync::atomic::{AtomicU64, Ordering};
+use std::sync::atomic::{AtomicU32, Ordering};
- use rls_vfs::Vfs;
use languageserver_types::{
-@@ -415,8 +415,8 @@ fn url(file_name: &str) -> Url {
+ ClientCapabilities, CodeActionContext, CodeActionParams, CompletionItem,
+@@ -424,8 +424,8 @@ fn url(file_name: &str) -> Url {
}
fn next_id() -> RequestId {
@@ -23,7 +23,7 @@ index 545a129..8285f99 100644
// Custom reader and output for the RLS server.
diff --git a/src/tools/rls/src/server/io.rs b/src/tools/rls/src/server/io.rs
-index 5d5060e..55ab545 100644
+index 7b93d4a..f3c5361 100644
--- a/src/tools/rls/src/server/io.rs
+++ b/src/tools/rls/src/server/io.rs
@@ -17,7 +17,7 @@ use crate::lsp_data::{LSPNotification, LSPRequest};
diff --git a/user/rust/APKBUILD b/user/rust/APKBUILD
index 8dbad62db..f8a51a87f 100644
--- a/user/rust/APKBUILD
+++ b/user/rust/APKBUILD
@@ -3,9 +3,9 @@
# Contributor: Jeizsm <jeizsm@gmail.com>
# Maintainer: Samuel Holland <samuel@sholland.org>
pkgname=rust
-pkgver=1.29.2
+pkgver=1.30.1
_bootcargover=0.30.0
-_bootver=1.29.1
+_bootver=1.29.2
_llvmver=6
pkgrel=0
pkgdesc="The Rust Programming Language"
@@ -44,35 +44,32 @@ source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz
https://distfiles.adelielinux.org/source/rust/cargo-$_bootcargover-$CBUILD.tar.xz
https://distfiles.adelielinux.org/source/rust/rust-std-$_bootver-$CBUILD.tar.xz
https://distfiles.adelielinux.org/source/rust/rustc-$_bootver-$CBUILD.tar.xz
- 0001-Require-static-native-libraries-when-linking-static-.patch
- 0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
- 0003-Fix-LLVM-build.patch
- 0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+ 0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+ 0002-Fix-LLVM-build.patch
+ 0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+ 0004-Require-static-native-libraries-when-linking-static-.patch
0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
- 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
- 0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
- 0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
- 0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
- 0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
- 0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
- 0016-Add-powerpc-unknown-linux-musl-target.patch
- 0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
- 0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
- 0019-Add-powerpc64-unknown-linux-musl-target.patch
- 0020-run-pass-const-endianness-negate-before-to_le.patch
- 0021-Fix-double_check-tests-on-big-endian-targets.patch
- 0022-x.py-Use-python3-instead-of-python.patch
- 0023-test-target-feature-gate-Only-run-on-relevant-target.patch
- 0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
- 0025-Ignore-broken-and-non-applicable-tests.patch
- 0026-Link-stage-2-tools-dynamically-to-libstd.patch
- 0027-Move-debugger-scripts-to-usr-share-rust.patch
- 0028-Add-foxkit-target-specs.patch
+ 0007-Add-powerpc-unknown-linux-musl-target.patch
+ 0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
+ 0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
+ 0010-Add-powerpc64-unknown-linux-musl-target.patch
+ 0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch
+ 0012-rustc_data_structures-use-libc-types-constants-in-fl.patch
+ 0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+ 0014-Fix-double_check-tests-on-big-endian-targets.patch
+ 0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
+ 0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch
+ 0017-x.py-Use-python3-instead-of-python.patch
+ 0018-test-target-feature-gate-Only-run-on-relevant-target.patch
+ 0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+ 0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+ 0021-Ignore-broken-and-non-applicable-tests.patch
+ 0022-Link-stage-2-tools-dynamically-to-libstd.patch
+ 0023-Move-debugger-scripts-to-usr-share-rust.patch
+ 0024-Add-foxkit-target-specs.patch
0030-liblibc-linkage.patch
- 0031-liblibc-0163a7ce20b5.patch
- 0035-rand-5b9e5c39d857.patch
- 0036-rand-checksums.patch
+ 0031-liblibc-1b130d4c349d.patch
0040-rls-atomics.patch
"
builddir="$srcdir/rustc-$pkgver-src"
@@ -305,37 +302,34 @@ _mv() {
mkdir -p "$dest"
mv "$@"
}
-sha512sums="d8fa9501764348ace8f60f2069bcd016925abe56c8bbc2b87fb52ff796e4bc7284c1fccbb1671416437bb82fde7d9240eeae875d6099914e27e75cfe050e2d38 rustc-1.29.2-src.tar.xz
-bd1fd3694947fc192419dab1e1e314fb5a9d7266715b5765dd1766507a234b6ad93bd097f531d560adc8b9f71534f53c440e6986e63b322319fcd0c24325d979 cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz
-d6ce24de73131702b623e8a146435526457b6d766fe6192df7471f1942119a6396b85121ce2250da3c3ec21b44aaff316e5c0387796654129d074d29d60a25b2 rust-std-1.29.1-powerpc64-foxkit-linux-musl.tar.xz
-b649fc30dee7510f656c53f3a5737a66d59726e24be7085134504f0202a899e549274df417c814487e5fbd8bbb69470411c9ed770dbc37af15a99a63f913a508 rustc-1.29.1-powerpc64-foxkit-linux-musl.tar.xz
-a242a6cdc95ecfa402e1457bc9e3b98305b8a5bcb5f54904807382cc98720e2a8fd16cee311edba84eb64129c591a58ed1f70798269832ccf19f1af79efe8b70 0001-Require-static-native-libraries-when-linking-static-.patch
-2b2dc29d31351e21e10808a0223b8b43d3804f0fbef6a97d6016958bb982850d0a63b73f1133ca4e70ad5c5901a3357c279e40a5c60379eb8ac070a9fb78a203 0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
-6f291642e2ce0cbe57e5354d4eff2745b651b3308771fd122edcb75ff7b809a34ee98c5ab2b64699b60e6be1007a383b29e0f991a9539f85a4c6c19e239c7654 0003-Fix-LLVM-build.patch
-4f1a716e22126d65f4b32be6210293a32e54c3b4c8655097962e2d0d44c1b976cb923fc99dbf8d6487541518e9c8ed73d3d2efb6da3b881513d8243808de7adf 0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
-7ff0c4cfc040f47b9dcf28d64bbcdf45d674bbd3a05e7d3646474044e0713d80d878d8cc39dd5029cd6f7c2c6d53c08ea445eacf147ccf14de1d729bf6a83734 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
-f1b9d68d4685db660b6c09cfa5ce0f818a3146e458973b942ac7991cfdd849976da7bc4e7245b9aa0ace498b51c9dbe9def3f2ffc277f52d2883f8b8fd0c47ef 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
-14cd3ff8d3e1d41014008ec8da958b72383c5fab6066d4dd21f4c02043fbea9ef159a1a76b718ec54c135fe971c7269d88b9703692706d23ed409022b0e57221 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
-e7de9eec874e08d3aaaa1389ed827ccb201659f792d4b64bf430a1b972b1d1f793fb14131d60df92d84af35da01eee4d59f6b8f631acfef95284688cde45fe04 0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
-8c2cbe4c0a99c38e4c7f05b30d396acfbe0511c06b433a468c35477cda73e77a4a0d61f809465d29e92bf3960dc25d5d860d28c79be42ac25f336aea40a24881 0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
-38085c8f79a3fda0f31cc733044c50fdfb1bff82da4f4cb40f280bf0924c53cfb1fab31a8345e40ae2960f1c1b495570d8219c9c9958db4da184f7120e07a4ad 0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
-93faeccf86b7920d48aba11e3345459e828a47a2b709ac65bc1ed71ef928ae18539040390f394c58fadbe0f44459248018c3cf0b0ac64aedd0f27a5ae866d69e 0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
-c2208400ee5a9f0f7b7897effe536f5937e05c0c4214f5974194ef8c41fc3013ca5224594add1b9fb83f50c9372bd659b7a34442fc3462d43fe8fe6dbdceb1ad 0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
-157b6e658ad39d01a7bcee16de5a7b4cb0c8a95a55ace9ca24ac499dee343db7de5d7455443f868cd02f612ef9f6787001ee8e53d8b046304d451507e25ca7ce 0016-Add-powerpc-unknown-linux-musl-target.patch
-2f353c5e29e00f9e8f28b6c9010b204138a6913565674afd40ab79f2b434ed8af8296d2fe92459c103eb6262579466c44be2280e5ec46e129855fcb06f314e32 0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
-c63ce49e7041991e78921d4b6f36e037fbcf478eb30a8590fbb0349bc55ead4639ebf95f8d90d7d572244dbf14f74471c192cc2c7dd020fb8f274e885f130c29 0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
-96d6473a9a1aed1df0911da4583ff8377ecf9cea920aaeafdbf4f4db652027e2937e1108eb21aafc044c0b45a6cd1f152393c5fa527cdabd4ce4e70f69fe15c6 0019-Add-powerpc64-unknown-linux-musl-target.patch
-133f2b57e351dd6a75ac3abe3d980c3e1e40af4cdfe7fc4a05ed3e45029ae69ab979db7edb2b890742c107120f436404fc720e20df52fd9d5ff14d22a7d82aa4 0020-run-pass-const-endianness-negate-before-to_le.patch
-652420d7bdc9be4e6136577e375e9b43f7c4086b3f0c1b4739c7eb6303c7826df84f40da7811618f296edcf712357e4b046e477b748605d066ab6d8015c6a619 0021-Fix-double_check-tests-on-big-endian-targets.patch
-7eb0c8eb095ca0201b26444b275005a89921731e87fb7a82d3d46215f14acc8b987134288955fc90f9d419ebe0cb26e09589906aa954bcbe229e25b737c64c7d 0022-x.py-Use-python3-instead-of-python.patch
-231d37dcd04787300a38122f1482b616970e070a4a87349aeaf5ec9f7d15563feeaa88be9cfc0863640b22596f5c2e2acfe7f9b22e43e6f1ee90f3b4730e746b 0023-test-target-feature-gate-Only-run-on-relevant-target.patch
-b6c34f9982d6f5b59acc716391a63f922accf69bdcf2631ab57ce3279a62e1874bceb7d0707fdd5290a17ec88e948d803c567476f904f96b7e5d7a240a4ee53c 0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
-cf8d642afcfd27fbc8c982a27d7d09f6097f1d0bfb67251d3a51323bd86743f584ebbd1cb4a8e872bd7711610929aa4bd514a107956fb89dd14f6dc50e9bdd26 0025-Ignore-broken-and-non-applicable-tests.patch
-9b9f4625d0a56417fa72d58982e55449b8fb5ed103799327a9017976ddd8ec431e81f592d3f843927068bd0e68e8e5a589650f18fb37bd275100f17bb65a1560 0026-Link-stage-2-tools-dynamically-to-libstd.patch
-35fc80eb99d818f8d4c67a5dc72c1acc56a26b529b5a24cad7aa0d5ea4e872384c4eb07084caa3436140cdf377ed0bbcb920e40473a65f2ff90e3ddc1e20e390 0027-Move-debugger-scripts-to-usr-share-rust.patch
-b53bc78603b9953a7aecf947b32e209e56dc20f5a8d2d64b5a10c4c3a98c66500119851e49775f35e2ff9697ed7815894c39837f04dc59616f37c8d4be8448fe 0028-Add-foxkit-target-specs.patch
+sha512sums="e466db81b9a82239670c48b876dc7390fcdda28c6390308691ddf2e0c12a39b57bd5ddb18322d1b4cd58165f69a666c7d83bee6573049da3b94e401657459bf5 rustc-1.30.1-src.tar.xz
+0f7c92e69f15cb014a1a6c263df2d0675842db9a3789467aa0d8811130adb1ffb3e0a344cfb59c069f5aa0f99b1f2422536ec96064b71374a3077b3a2a02d0fa cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz
+95f447bd698177732f4105ddcf4e60d5695a4345f6eb49d5d49ff2402de6d28199ca1aba1a630088beee40b8063477bed4dd47532c53cbb72de3ee5687a9c689 rust-std-1.29.2-powerpc64-foxkit-linux-musl.tar.xz
+a140b9f524205a756192fed740492bbc01205ce77196dd44244752a99d8e6ede03cb9b8ef0d986e23ea882ebf24e773d6e426054c5840989379d81427ad37f07 rustc-1.29.2-powerpc64-foxkit-linux-musl.tar.xz
+4ffea7a1e90eed9a69630ea2724450ffc5012593050c0109fff45dc70aec6d5b215f52777d4ecb72a6a78e2ba7ac0bea9117b68adc0e729ae482749462f0a83a 0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+e87a7ac69a007cc21cbdd6a8ec36003989803be55f1f96a5866ff07b113286ecc6fb9cec6614b1b5e63ca07b84d6c167b1e3d2bd1e104dab02d24597a176b31d 0002-Fix-LLVM-build.patch
+03c3edd924a8751407c41a9ab67b5d2848e56c5b3da3556d1f83b72d33e982c97dabbec36a8ab4f8ec22143efeb2c77fabc922c9b0f11fee02c6f04868d2d90b 0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+2a8b1f4d5f3ff49d74b2308cf8e4e6e04d0af0f9a7d29b3ae25c94c24ded7ce59f16b5277ec946f1a5fa61dcac857a897b63883d8f5ed753ba36f109498aee80 0004-Require-static-native-libraries-when-linking-static-.patch
+1c41ff8163119c49116a7c6a1e4934fcfac36ad6240672ebded65e04dd478d86cb2627f47ae0b7871435bf8b30844fa10caaec03d2d3d27313b777b7be22bc4e 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+58c14405cd27d3f825689d8df06f04cebf8b149132ede3317915059dbca2eb9599eb224105f4120a75df52bdc0e77a6412bf3a34f803752787c7bd3a25622046 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+8cfb9ce9bdbf5ff75e85780af202caa431408d362a8e1f3119975275e00dfa8dc5724146625dc04ad9c31bb061d141857f693e4fb7611330e42277faa9a0f83e 0007-Add-powerpc-unknown-linux-musl-target.patch
+b9f9cb032805614c7d30d426a8e1ce0d83658175bc1d173946673b614a3577abf89ae029a91ec8d55e77114fc45a48db4f750fd95294259f19ef1e60431ad8d7 0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
+c5b1315ac9c622d32e9721cb807971fada8187a097be9923f09556da4828aa780b51509a7d95b3f2debd91a1a4ea1ecd40c641f23b426a2586a2a48a78671280 0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
+ed231ff4bfa3e4fd7dfb185f0af347ef6fe40d4c788ee38f064a8b6ebcb0767565a94cd4759664864b5c70508bd5e60008dde94b35d67a800baae118a351419c 0010-Add-powerpc64-unknown-linux-musl-target.patch
+5a32ed9c224765a44635ff88f9d1d071868b27417d1a60c1f9db40d1557d8152f8858c760cda638952aa2c13ffd412aac516833460975339de5d0b79345a4d2c 0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch
+27f71d6849abb00a788326e28b01f92e238101b2cb9270275b6bd6042c38138fc92faf2ed9df1e3658ebb74686058ef748fdf9c6f211f38fa786355830552dba 0012-rustc_data_structures-use-libc-types-constants-in-fl.patch
+d3b595f6d4561594efa170ce737f9b330d540a617272baaf8f7a22494fc15bfbdb3b0bfc381a50995ac79d99fbf11a7f786ffa71f8d88701ba1b247a2bb5fd3a 0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+b8d62857b0260fe2566757686c9346245df2977aa8b09713e66f3d6626a5493fa23cbb80576627d4ce3b164ec6aabd2a3281c109a68bd5494a42a0fc1e786fe8 0014-Fix-double_check-tests-on-big-endian-targets.patch
+cd9c0ab80c111b7a30d1d7887e746ff095083a31570723bd316e1f2772303484cf18f418368205585d86e6f142b2e102d34131990fcc5af0010e2b10237911ad 0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
+cd7894b166d230713e2bd55ffa8edcc91626170439e956ce87e0fead4ae80fcf20770a611f6ac0b0b5f12008f8d3d31bb36d708d7b970fb800d39b9056cd0f65 0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch
+fbed66fd91f86ab24315170003bdb15d083de41b284fc20ada5d26c71a11b60ee9d2040b1ce5688801d02a2c4f0b183bd02444f7f7265ed0070ac083e293b7b4 0017-x.py-Use-python3-instead-of-python.patch
+9a466ada691a3b05801bdfd6af3416817cc9bb9cc3018ec5bda47f7cbe2475f13b1928be5a34f919d34a1e304595c06a98ca337d259c17a2813a01ca38264734 0018-test-target-feature-gate-Only-run-on-relevant-target.patch
+841c6f67f01a3e0714ae46b3ab14de6bb072bf9fbdc10e9b58eb0b0102786cad5667356fafa51e03eadcf12c0f5efe85106ef1b325906a3a4cb6a009cacc6f34 0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+e3f7b9d7b605156d14afc7e6012f0b19053eb4cf23d2f708860fb5de7390bb245910a03d844ba0dce933dddff8bac015361435cdfb8ce695687994344a2542c2 0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+34ba04178ddd3f8d632ff45a274b4a4352fdc867829aee9635bd26224c49728e7c46e683f814fce09b11d6e30e3739bc7098cb4bb48fa97785570cf19c763dd2 0021-Ignore-broken-and-non-applicable-tests.patch
+3e298b3040e5a5ae2ac794d375302d7277d59758101831ca3646c40f3eea42454a3a8793a2a41879dfdf623f63603815b0923209b0068170d63c9d28580c1228 0022-Link-stage-2-tools-dynamically-to-libstd.patch
+86be931b629a5212be2821c918d95753686afa5ac9923f234186bd460545d094c38d63c680aa32dd1f90ae2a477f06bbe4343fbfa6a3d02ad43e6bdd3d3f4f9f 0023-Move-debugger-scripts-to-usr-share-rust.patch
+5ce1947cdd51d5221c03fefe1d2bef8700b560a889e09ec7a3e7d906146111049864c9ed5688005e215a18f1102a01f3987db606d4a9a05ec83f1619d1d901e9 0024-Add-foxkit-target-specs.patch
f94abe390798b968bccfba1c908ab5895220ed0d167314b790a9c28b10cac81fb2e3b08760b4e8551ad5a5d02cd052d3d0d647ad8f8634e97f4d3b0470a21c42 0030-liblibc-linkage.patch
-9b761388e3e7d4ac7ced81bf2572439724f4ce3190b49429b92249f4b858cc9bbb79d72e25365825cbd25cb9b3352c627dcc88cc643e5abeb917cf14755cab0b 0031-liblibc-0163a7ce20b5.patch
-94ee746f50ba3d88e409cd6b840a0995fa40d38e6a3c4a7e9fa32430242c492f35f6fb95ee22e0da6dba84f39dc83f0196a0921c5ec2bc602ea220b017c78be2 0035-rand-5b9e5c39d857.patch
-5e409a7e45afd2104e1bbbcedb0cc2a04b2c3838d820bb3dc6e879a3d4619f0cce562d2bf2b0c55b780375bf26f0d4d4d6b0acdac199e1c39b2d94543d35e017 0036-rand-checksums.patch
-9182408b7a87fc2f01dc12a36440e43a721f7693da00310806f6306e711c04b34d43b6ab348ae523656937f61389adb6a5a2b8ff46dec5424ad20c29652d4edf 0040-rls-atomics.patch"
+ba7b8c3504b7d24d6686d2dea2819d2def75c268848128a7beb63108f9a4e5610352ef5bdda7a9956193f0786c3bdd9ea39eedd6fe733e6243b08af36810ed24 0031-liblibc-1b130d4c349d.patch
+41ab9d6f361ee2fba267c9836c1a382dc86101d1bfb59cd942be8e8fc526ad65d845c9395cba7f760808d345d107f32e75af9057d67c450b8fbdd8a73636fb2e 0040-rls-atomics.patch"