diff options
author | Samuel Holland <samuel@sholland.org> | 2018-09-19 02:31:46 +0000 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2018-09-25 00:08:16 +0000 |
commit | cd980d29292f8f5d6bb8bef5773ce91b95bfb90a (patch) | |
tree | 7eeb0fd1825894538eea675625a9f3009f3fca9d /user/rust | |
parent | 63266fdc6f2014cc6dfd0f983e13de7c378bc708 (diff) | |
download | packages-cd980d29292f8f5d6bb8bef5773ce91b95bfb90a.tar.gz packages-cd980d29292f8f5d6bb8bef5773ce91b95bfb90a.tar.bz2 packages-cd980d29292f8f5d6bb8bef5773ce91b95bfb90a.tar.xz packages-cd980d29292f8f5d6bb8bef5773ce91b95bfb90a.zip |
user/rust: new package
Diffstat (limited to 'user/rust')
32 files changed, 3023 insertions, 0 deletions
diff --git a/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch b/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch new file mode 100644 index 000000000..2bcf4b318 --- /dev/null +++ b/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch @@ -0,0 +1,44 @@ +From 531eaa63083c5351cea24867ba7144817d456d77 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/28] Require static native libraries when linking static + executables + +--- + 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 +--- 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, + } + } + +-// Link in all of our upstream crates' native dependencies. Remember that +-// all of these upstream native dependencies are all non-static ++// Link in all of our upstream crates' native dependencies. Remember that when ++// linking libraries, these upstream native dependencies are all non-static + // 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, + 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() { ++ cmd.link_staticlib(&name.as_str()) ++ } else { ++ cmd.link_dylib(&name.as_str()) ++ } ++ }, + NativeLibraryKind::NativeFramework => cmd.link_framework(&name.as_str()), + NativeLibraryKind::NativeStaticNobundle => { + // Link "static-nobundle" native libs only if the crate they originate from +-- +2.18.0 + diff --git a/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch b/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch new file mode 100644 index 000000000..a3efabf93 --- /dev/null +++ b/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch @@ -0,0 +1,36 @@ +From b77da61648c4787be551de6f654148c3686c7a3e 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/28] 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 +--- a/src/bootstrap/builder.rs ++++ b/src/bootstrap/builder.rs +@@ -966,7 +966,7 @@ impl<'a> Builder<'a> { + let cflags = self.cflags(target).join(" "); + cargo + .env(format!("CFLAGS_{}", target), cflags.clone()) +- .env("CFLAGS", cflags.clone()); ++ .env("CFLAGS", cflags); + + if let Some(ar) = self.ar(target) { + let ranlib = format!("{} s", ar.display()); +@@ -981,9 +981,7 @@ impl<'a> Builder<'a> { + let cxx = ccacheify(&cxx); + cargo + .env(format!("CXX_{}", target), &cxx) +- .env("CXX", &cxx) +- .env(format!("CXXFLAGS_{}", target), cflags.clone()) +- .env("CXXFLAGS", cflags); ++ .env("CXX", &cxx); + } + } + +-- +2.18.0 + diff --git a/user/rust/0003-Fix-LLVM-build.patch b/user/rust/0003-Fix-LLVM-build.patch new file mode 100644 index 000000000..d2ca8526b --- /dev/null +++ b/user/rust/0003-Fix-LLVM-build.patch @@ -0,0 +1,26 @@ +From 272bbaa5abe4f165a1f45ea1e9b33604af3ca77b 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/28] 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 +--- a/src/bootstrap/lib.rs ++++ b/src/bootstrap/lib.rs +@@ -742,7 +742,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()) +- .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")) ++ .filter(|s| !s.starts_with("-O") && !s.starts_with("/O") ++ && !s.starts_with("-static")) + .collect::<Vec<_>>(); + + // If we're compiling on macOS then we add a few unconditional flags +-- +2.18.0 + diff --git a/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch new file mode 100644 index 000000000..a5105fd82 --- /dev/null +++ b/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch @@ -0,0 +1,25 @@ +From 46fce11b84d5ae71fe55593c6141307a60ee349f 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/28] test/sysroot-crates-are-unstable: Fix test when rpath + is disabled + +Without this environment var, the test can't run rustc to find +the sysroot path. +--- + .../run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile +index a35174b3c2..9e77070685 100644 +--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile ++++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile +@@ -1,2 +1,4 @@ ++-include ../tools.mk ++ + all: +- python2.7 test.py ++ env '$(HOST_RPATH_ENV)' python2.7 test.py +-- +2.18.0 + 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 new file mode 100644 index 000000000..4fb2f6e23 --- /dev/null +++ b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch @@ -0,0 +1,444 @@ +From 98c0bb0e0213db77313c73167acf65c4658046dd 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/28] Remove -nostdlib and musl_root from musl targets + +--- + config.toml.example | 6 --- + src/bootstrap/bin/rustc.rs | 10 ----- + src/bootstrap/cc_detect.rs | 27 ++---------- + src/bootstrap/compile.rs | 31 -------------- + src/bootstrap/config.rs | 7 ---- + src/bootstrap/configure.py | 22 ---------- + src/bootstrap/lib.rs | 8 ---- + src/bootstrap/sanity.rs | 30 +------------- + .../dist-i586-gnu-i586-i686-musl/Dockerfile | 2 - + src/ci/docker/dist-various-1/Dockerfile | 7 ---- + src/ci/docker/dist-x86_64-musl/Dockerfile | 1 - + src/librustc_target/spec/linux_musl_base.rs | 41 ------------------- + 12 files changed, 4 insertions(+), 188 deletions(-) + +diff --git a/config.toml.example b/config.toml.example +index 9907341633..6f8b52e235 100644 +--- a/config.toml.example ++++ b/config.toml.example +@@ -409,12 +409,6 @@ + # only use static libraries. If unset, the target's default linkage is used. + #crt-static = false + +-# The root location of the MUSL installation directory. The library directory +-# will also need to contain libunwind.a for an unwinding implementation. Note +-# that this option only makes sense for MUSL targets that produce statically +-# linked binaries +-#musl-root = "..." +- + # Used in testing for configuring where the QEMU images are located, you + # 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 +--- a/src/bootstrap/bin/rustc.rs ++++ b/src/bootstrap/bin/rustc.rs +@@ -30,7 +30,6 @@ + extern crate bootstrap; + + use std::env; +-use std::ffi::OsString; + use std::io; + use std::path::PathBuf; + use std::process::Command; +@@ -126,15 +125,6 @@ fn main() { + cmd.arg("-Cprefer-dynamic"); + } + +- // Help the libc crate compile by assisting it in finding the MUSL +- // native libraries. +- if let Some(s) = env::var_os("MUSL_ROOT") { +- let mut root = OsString::from("native="); +- root.push(&s); +- root.push("/lib"); +- cmd.arg("-L").arg(&root); +- } +- + // Override linker if necessary. + 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 +--- a/src/bootstrap/cc_detect.rs ++++ b/src/bootstrap/cc_detect.rs +@@ -95,7 +95,7 @@ pub fn find(build: &mut Build) { + if let Some(cc) = config.and_then(|c| c.cc.as_ref()) { + cfg.compiler(cc); + } else { +- set_compiler(&mut cfg, Language::C, target, config, build); ++ set_compiler(&mut cfg, Language::C, target, config); + } + + let compiler = cfg.get_compiler(); +@@ -124,7 +124,7 @@ pub fn find(build: &mut Build) { + if let Some(cxx) = config.and_then(|c| c.cxx.as_ref()) { + cfg.compiler(cxx); + } else { +- set_compiler(&mut cfg, Language::CPlusPlus, host, config, build); ++ set_compiler(&mut cfg, Language::CPlusPlus, host, config); + } + let compiler = cfg.get_compiler(); + build.verbose(&format!("CXX_{} = {:?}", host, compiler.path())); +@@ -135,8 +135,7 @@ pub fn find(build: &mut Build) { + fn set_compiler(cfg: &mut cc::Build, + compiler: Language, + target: Interned<String>, +- config: Option<&Target>, +- build: &Build) { ++ config: Option<&Target>) { + match &*target { + // When compiling for android we may have the NDK configured in the + // config.toml in which case we look there. Otherwise the default +@@ -173,26 +172,6 @@ fn set_compiler(cfg: &mut cc::Build, + } + } + +- "mips-unknown-linux-musl" => { +- if cfg.get_compiler().path().to_str() == Some("gcc") { +- cfg.compiler("mips-linux-musl-gcc"); +- } +- } +- "mipsel-unknown-linux-musl" => { +- if cfg.get_compiler().path().to_str() == Some("gcc") { +- cfg.compiler("mipsel-linux-musl-gcc"); +- } +- } +- +- t if t.contains("musl") => { +- if let Some(root) = build.musl_root(target) { +- let guess = root.join("bin/musl-gcc"); +- if guess.exists() { +- cfg.compiler(guess); +- } +- } +- } +- + _ => {} + } + } +diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs +index 04e8e133b0..7767956cd8 100644 +--- a/src/bootstrap/compile.rs ++++ b/src/bootstrap/compile.rs +@@ -87,13 +87,6 @@ impl Step for Std { + }); + builder.info(&format!("Uplifting stage1 std ({} -> {})", from.host, target)); + +- // Even if we're not building std this stage, the new sysroot must +- // still contain the musl startup objects. +- if target.contains("musl") { +- let libdir = builder.sysroot_libdir(compiler, target); +- copy_musl_third_party_objects(builder, target, &libdir); +- } +- + builder.ensure(StdLink { + compiler: from, + target_compiler: compiler, +@@ -102,11 +95,6 @@ impl Step for Std { + return; + } + +- if target.contains("musl") { +- let libdir = builder.sysroot_libdir(compiler, target); +- 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 { + } + } + +-/// Copies the crt(1,i,n).o startup objects +-/// +-/// Since musl supports fully static linking, we can cross link for it even +-/// with a glibc-targeting toolchain, given we have the appropriate startup +-/// files. As those shipped with glibc won't work, copy the ones provided by +-/// musl so we have them on linux-gnu hosts. +-fn copy_musl_third_party_objects(builder: &Builder, +- target: Interned<String>, +- into: &Path) { +- for &obj in &["crt1.o", "crti.o", "crtn.o"] { +- builder.copy(&builder.musl_root(target).unwrap().join("lib").join(obj), &into.join(obj)); +- } +-} +- + /// 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, + cargo.env("JEMALLOC_OVERRIDE", jemalloc); + } + } +- if target.contains("musl") { +- if let Some(p) = builder.musl_root(target) { +- cargo.env("MUSL_ROOT", p); +- } +- } + } + } + +diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs +index 0a8a5c87d0..9fdf8690c5 100644 +--- a/src/bootstrap/config.rs ++++ b/src/bootstrap/config.rs +@@ -131,8 +131,6 @@ pub struct Config { + pub save_toolstates: Option<PathBuf>, + pub print_step_timings: bool, + +- // Fallback musl-root for all targets +- pub musl_root: Option<PathBuf>, + pub prefix: Option<PathBuf>, + pub sysconfdir: Option<PathBuf>, + pub datadir: Option<PathBuf>, +@@ -165,7 +163,6 @@ pub struct Target { + pub linker: Option<PathBuf>, + pub ndk: Option<PathBuf>, + pub crt_static: Option<bool>, +- pub musl_root: Option<PathBuf>, + pub qemu_rootfs: Option<PathBuf>, + pub no_std: bool, + } +@@ -294,7 +291,6 @@ struct Rust { + backtrace: Option<bool>, + default_linker: Option<String>, + channel: Option<String>, +- musl_root: Option<String>, + rpath: Option<bool>, + optimize_tests: Option<bool>, + debuginfo_tests: Option<bool>, +@@ -328,7 +324,6 @@ struct TomlTarget { + linker: Option<String>, + android_ndk: Option<String>, + crt_static: Option<bool>, +- musl_root: Option<String>, + qemu_rootfs: Option<String>, + } + +@@ -541,7 +536,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(); +- config.musl_root = rust.musl_root.clone().map(PathBuf::from); + 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); + 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); + target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from); + + 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 +--- 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", + "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") +-v("musl-root", "target.x86_64-unknown-linux-musl.musl-root", +- "MUSL root installation directory (deprecated)") +-v("musl-root-x86_64", "target.x86_64-unknown-linux-musl.musl-root", +- "x86_64-unknown-linux-musl install directory") +-v("musl-root-i586", "target.i586-unknown-linux-musl.musl-root", +- "i586-unknown-linux-musl install directory") +-v("musl-root-i686", "target.i686-unknown-linux-musl.musl-root", +- "i686-unknown-linux-musl install directory") +-v("musl-root-arm", "target.arm-unknown-linux-musleabi.musl-root", +- "arm-unknown-linux-musleabi install directory") +-v("musl-root-armhf", "target.arm-unknown-linux-musleabihf.musl-root", +- "arm-unknown-linux-musleabihf install directory") +-v("musl-root-armv5te", "target.armv5te-unknown-linux-musleabi.musl-root", +- "armv5te-unknown-linux-musleabi install directory") +-v("musl-root-armv7", "target.armv7-unknown-linux-musleabihf.musl-root", +- "armv7-unknown-linux-musleabihf install directory") +-v("musl-root-aarch64", "target.aarch64-unknown-linux-musl.musl-root", +- "aarch64-unknown-linux-musl install directory") +-v("musl-root-mips", "target.mips-unknown-linux-musl.musl-root", +- "mips-unknown-linux-musl install directory") +-v("musl-root-mipsel", "target.mipsel-unknown-linux-musl.musl-root", +- "mipsel-unknown-linux-musl install directory") + v("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs", + "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 +--- a/src/bootstrap/lib.rs ++++ b/src/bootstrap/lib.rs +@@ -803,14 +803,6 @@ impl Build { + } + } + +- /// Returns the "musl root" for this `target`, if defined +- fn musl_root(&self, target: Interned<String>) -> Option<&Path> { +- self.config.target_config.get(&target) +- .and_then(|t| t.musl_root.as_ref()) +- .or(self.config.musl_root.as_ref()) +- .map(|p| &**p) +- } +- + /// Returns true if this is a no-std `target`, if defined + 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 +--- a/src/bootstrap/sanity.rs ++++ b/src/bootstrap/sanity.rs +@@ -21,7 +21,7 @@ + use std::collections::HashMap; + use std::env; + use std::ffi::{OsString, OsStr}; +-use std::fs::{self, File}; ++use std::fs::File; + use std::io::Read; + use std::path::PathBuf; + use std::process::Command; +@@ -186,34 +186,6 @@ pub fn check(build: &mut Build) { + } + } + +- // Make sure musl-root is valid +- if target.contains("musl") { +- // If this is a native target (host is also musl) and no musl-root is given, +- // 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()); +- target.musl_root = Some("/usr".into()); +- } +- match build.musl_root(*target) { +- Some(root) => { +- if fs::metadata(root.join("lib/libc.a")).is_err() { +- panic!("couldn't find libc.a in musl dir: {}", +- root.join("lib").display()); +- } +- if fs::metadata(root.join("lib/libunwind.a")).is_err() { +- panic!("couldn't find libunwind.a in musl dir: {}", +- root.join("lib").display()); +- } +- } +- None => { +- panic!("when targeting MUSL either the rust.musl-root \ +- option or the target.$TARGET.musl-root option must \ +- be specified in config.toml") +- } +- } +- } +- + if target.contains("msvc") { + // There are three builds of cmake on windows: MSVC, MinGW, and + // Cygwin. The Cygwin build does not have generators for Visual +diff --git a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile +index ba2d32a929..412c37fdd1 100644 +--- a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile ++++ b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile +@@ -30,8 +30,6 @@ COPY scripts/sccache.sh /scripts/ + RUN sh /scripts/sccache.sh + + ENV RUST_CONFIGURE_ARGS \ +- --musl-root-i586=/musl-i586 \ +- --musl-root-i686=/musl-i686 \ + --enable-extended \ + --disable-docs + +diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile +index 6302f55009..e04fdaa226 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 + + ENV RUST_CONFIGURE_ARGS \ +- --musl-root-armv5te=/musl-armv5te \ +- --musl-root-arm=/musl-arm \ +- --musl-root-armhf=/musl-armhf \ +- --musl-root-armv7=/musl-armv7 \ +- --musl-root-aarch64=/musl-aarch64 \ +- --musl-root-mips=/musl-mips \ +- --musl-root-mipsel=/musl-mipsel \ + --enable-emscripten \ + --disable-docs + +diff --git a/src/ci/docker/dist-x86_64-musl/Dockerfile b/src/ci/docker/dist-x86_64-musl/Dockerfile +index 06f8a2fbba..f5dd379528 100644 +--- a/src/ci/docker/dist-x86_64-musl/Dockerfile ++++ b/src/ci/docker/dist-x86_64-musl/Dockerfile +@@ -30,7 +30,6 @@ COPY scripts/sccache.sh /scripts/ + RUN sh /scripts/sccache.sh + + ENV RUST_CONFIGURE_ARGS \ +- --musl-root-x86_64=/musl-x86_64 \ + --enable-extended \ + --disable-docs + +diff --git a/src/librustc_target/spec/linux_musl_base.rs b/src/librustc_target/spec/linux_musl_base.rs +index 7a3f3c2a51..32fe2f880a 100644 +--- a/src/librustc_target/spec/linux_musl_base.rs ++++ b/src/librustc_target/spec/linux_musl_base.rs +@@ -13,53 +13,12 @@ use spec::{LinkerFlavor, TargetOptions}; + pub fn opts() -> TargetOptions { + let mut base = super::linux_base::opts(); + +- // Make sure that the linker/gcc really don't pull in anything, including +- // default objects, libs, etc. +- base.pre_link_args_crt.insert(LinkerFlavor::Gcc, Vec::new()); +- base.pre_link_args_crt.get_mut(&LinkerFlavor::Gcc).unwrap().push("-nostdlib".to_string()); +- + // At least when this was tested, the linker would not add the + // `GNU_EH_FRAME` program header to executables generated, which is required + // when unwinding to locate the unwinding information. I'm not sure why this + // argument is *not* necessary for normal builds, but it can't hurt! + base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,--eh-frame-hdr".to_string()); + +- // There's a whole bunch of circular dependencies when dealing with MUSL +- // unfortunately. To put this in perspective libc is statically linked to +- // liblibc and libunwind is statically linked to libstd: +- // +- // * libcore depends on `fmod` which is in libc (transitively in liblibc). +- // liblibc, however, depends on libcore. +- // * compiler-rt has personality symbols that depend on libunwind, but +- // libunwind is in libstd which depends on compiler-rt. +- // +- // Recall that linkers discard libraries and object files as much as +- // possible, and with all the static linking and archives flying around with +- // MUSL the linker is super aggressively stripping out objects. For example +- // the first case has fmod stripped from liblibc (it's in its own object +- // file) so it's not there when libcore needs it. In the second example all +- // the unused symbols from libunwind are stripped (each is in its own object +- // file in libstd) before we end up linking compiler-rt which depends on +- // those symbols. +- // +- // To deal with these circular dependencies we just force the compiler to +- // link everything as a group, not stripping anything out until everything +- // is processed. The linker will still perform a pass to strip out object +- // files but it won't do so until all objects/archives have been processed. +- base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,-(".to_string()); +- base.post_link_args.insert(LinkerFlavor::Gcc, vec!["-Wl,-)".to_string()]); +- +- // When generating a statically linked executable there's generally some +- // small setup needed which is listed in these files. These are provided by +- // a musl toolchain and are linked by default by the `musl-gcc` script. Note +- // that `gcc` also does this by default, it just uses some different files. +- // +- // Each target directory for musl has these object files included in it so +- // they'll be included from there. +- base.pre_link_objects_exe_crt.push("crt1.o".to_string()); +- base.pre_link_objects_exe_crt.push("crti.o".to_string()); +- base.post_link_objects_crt.push("crtn.o".to_string()); +- + // These targets statically link libc by default + base.crt_static_default = true; + // These targets allow the user to choose between static and dynamic linking. +-- +2.18.0 + 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 new file mode 100644 index 000000000..2e0aa35d8 --- /dev/null +++ b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch @@ -0,0 +1,24 @@ +From 6b2b48be476938c0f74b4e521e5ce3ecbeb19641 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/28] 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 +--- a/src/libunwind/lib.rs ++++ b/src/libunwind/lib.rs +@@ -35,6 +35,6 @@ cfg_if! { + } + + #[cfg(target_env = "musl")] +-#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))] ++#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))] + #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))] + extern {} +-- +2.18.0 + diff --git a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch b/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch new file mode 100644 index 000000000..102e2e3a9 --- /dev/null +++ b/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch @@ -0,0 +1,37 @@ +From 30a10fccca71d84e696bf907621c30f66eb708e6 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/28] 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 +--- a/src/tools/compiletest/src/runtest.rs ++++ b/src/tools/compiletest/src/runtest.rs +@@ -1509,7 +1509,6 @@ impl<'test> TestCx<'test> { + None + } else if self.config.target.contains("cloudabi") + || self.config.target.contains("emscripten") +- || (self.config.target.contains("musl") && !aux_props.force_host) + || self.config.target.contains("wasm32") + { + // We primarily compile all auxiliary libraries as dynamic libraries +@@ -1517,10 +1516,8 @@ impl<'test> TestCx<'test> { + // for the test suite (otherwise including libstd statically in all + // executables takes up quite a bit of space). + // +- // For targets like MUSL or Emscripten, however, there is no support for +- // dynamic libraries so we just go back to building a normal library. Note, +- // however, that for MUSL if the library is built with `force_host` then +- // it's ok to be a dylib as the host should always support dylibs. ++ // For targets like Emscripten, however, there is no support for ++ // dynamic libraries so we just go back to building a normal library. + Some("lib") + } else { + Some("dylib") +-- +2.18.0 + diff --git a/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch new file mode 100644 index 000000000..7dbd51a92 --- /dev/null +++ b/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch @@ -0,0 +1,36 @@ +From 8b418c37f13710085f9a0c0c70904ad07e799c3f 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/28] Allow rustdoc to work when cross-compiling on musl + +musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH. +--- + src/bootstrap/bin/rustdoc.rs | 5 +---- + 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 +--- a/src/bootstrap/bin/rustdoc.rs ++++ b/src/bootstrap/bin/rustdoc.rs +@@ -34,9 +34,6 @@ fn main() { + Err(_) => 0, + }; + +- let mut dylib_path = bootstrap::util::dylib_path(); +- dylib_path.insert(0, PathBuf::from(libdir.clone())); +- + let mut cmd = Command::new(rustdoc); + cmd.args(&args) + .arg("--cfg") +@@ -46,7 +43,7 @@ fn main() { + .arg("--sysroot") + .arg(sysroot) + .env(bootstrap::util::dylib_path_var(), +- env::join_paths(&dylib_path).unwrap()); ++ PathBuf::from(libdir.clone())); + + // Force all crates compiled by this compiler to (a) be unstable and (b) + // allow the `rustc_private` feature to link to other unstable crates +-- +2.18.0 + diff --git a/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch b/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch new file mode 100644 index 000000000..1bd596f33 --- /dev/null +++ b/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch @@ -0,0 +1,42 @@ +From 29fdec385825390eca134825acda5c2cbb09bceb 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/28] Add missing OpenSSL configurations for musl targets + +--- + src/bootstrap/native.rs | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs +index 9aeb4e0eda..18c3dba233 100644 +--- a/src/bootstrap/native.rs ++++ b/src/bootstrap/native.rs +@@ -610,9 +610,13 @@ impl Step for Openssl { + "arm-linux-androideabi" => "android", + "arm-unknown-linux-gnueabi" => "linux-armv4", + "arm-unknown-linux-gnueabihf" => "linux-armv4", ++ "arm-unknown-linux-musleabi" => "linux-armv4", ++ "arm-unknown-linux-musleabihf" => "linux-armv4", ++ "armv5te-unknown-linux-musleabi" => "linux-armv4", + "armv6-unknown-netbsd-eabihf" => "BSD-generic32", + "armv7-linux-androideabi" => "android-armv7", + "armv7-unknown-linux-gnueabihf" => "linux-armv4", ++ "armv7-unknown-linux-musleabihf" => "linux-armv4", + "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 { + "i686-unknown-linux-musl" => "linux-elf", + "i686-unknown-netbsd" => "BSD-x86-elf", + "mips-unknown-linux-gnu" => "linux-mips32", ++ "mips-unknown-linux-musl" => "linux-mips32", + "mips64-unknown-linux-gnuabi64" => "linux64-mips64", + "mips64el-unknown-linux-gnuabi64" => "linux64-mips64", + "mipsel-unknown-linux-gnu" => "linux-mips32", ++ "mipsel-unknown-linux-musl" => "linux-mips32", + "powerpc-unknown-linux-gnu" => "linux-ppc", + "powerpc-unknown-linux-gnuspe" => "linux-ppc", + "powerpc-unknown-netbsd" => "BSD-generic32", +-- +2.18.0 + diff --git a/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch b/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch new file mode 100644 index 000000000..1d6b5ae0d --- /dev/null +++ b/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch @@ -0,0 +1,26 @@ +From 5cbbac1243e4cda725f82337245881fe71beeec0 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/28] test/linkage-visibility: dlsym only sees exported + symbols + +--- + src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs b/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs +index 7a15a4cb3a..853d97670d 100644 +--- a/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs ++++ b/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs +@@ -8,6 +8,8 @@ + // option. This file may not be copied, modified, or distributed + // except according to those terms. + ++// compile-flags: -C link-arg=-Wl,--export-dynamic ++ + #![feature(rustc_private)] + + // We're testing linkage visibility; the compiler warns us, but we want to +-- +2.18.0 + diff --git a/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch b/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch new file mode 100644 index 000000000..b2bd46ab7 --- /dev/null +++ b/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch @@ -0,0 +1,25 @@ +From c4ed34adcd7649f886354115132fb18489ed91dc 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/28] test/invalid_const_promotion: Accept SIGTRAP as a valid + death signal + +--- + src/test/run-pass/invalid_const_promotion.rs | 1 + + 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 +--- 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) + use std::os::unix::process::ExitStatusExt; + + assert!(status.signal() == Some(libc::SIGILL) ++ || status.signal() == Some(libc::SIGTRAP) + || status.signal() == Some(libc::SIGABRT)); + } + +-- +2.18.0 + diff --git a/user/rust/0012-Add-powerpc-unknown-linux-musl-target.patch b/user/rust/0012-Add-powerpc-unknown-linux-musl-target.patch new file mode 100644 index 000000000..acf5285c0 --- /dev/null +++ b/user/rust/0012-Add-powerpc-unknown-linux-musl-target.patch @@ -0,0 +1,92 @@ +From 3e06726c26cd4ca93e7434cb33f7749e4d7311da Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 10 Sep 2018 01:35:35 +0000 +Subject: [PATCH 12/28] 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(+) + 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 +--- a/src/librustc_target/spec/mod.rs ++++ b/src/librustc_target/spec/mod.rs +@@ -272,6 +272,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), ++ ("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl), + ("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu), + ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu), + ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl), +diff --git a/src/librustc_target/spec/powerpc_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc_unknown_linux_musl.rs +new file mode 100644 +index 0000000000..48340da514 +--- /dev/null ++++ b/src/librustc_target/spec/powerpc_unknown_linux_musl.rs +@@ -0,0 +1,34 @@ ++// 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.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m32".to_string()); ++ base.max_atomic_width = Some(32); ++ ++ // see #36994 ++ base.exe_allocation_crate = None; ++ ++ Ok(Target { ++ llvm_target: "powerpc-unknown-linux-musl".to_string(), ++ target_endian: "big".to_string(), ++ target_pointer_width: "32".to_string(), ++ target_c_int_width: "32".to_string(), ++ data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(), ++ arch: "powerpc".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 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/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch b/user/rust/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch new file mode 100644 index 000000000..72743d01d --- /dev/null +++ b/user/rust/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch @@ -0,0 +1,29 @@ +From 91000b21e3a9938a66b7a9d12281b807004eefcc Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Wed, 8 Aug 2018 22:06:09 -0500 +Subject: [PATCH 15/28] Use ELFv2 ABI on powerpc64 musl (LLVM half) + +--- + src/rustllvm/PassWrapper.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp +index 85fbc4bf37..15c3ab18d9 100644 +--- a/src/rustllvm/PassWrapper.cpp ++++ b/src/rustllvm/PassWrapper.cpp +@@ -399,6 +399,12 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine( + Options.ThreadModel = ThreadModel::Single; + } + ++ // See https://reviews.llvm.org/D52013 ++ if (Trip.getArch() == llvm::Triple::ArchType::ppc64 && ++ Trip.getEnvironment() == llvm::Triple::EnvironmentType::Musl) { ++ Options.MCOptions.ABIName = "elfv2"; ++ } ++ + #if LLVM_VERSION_GE(6, 0) + Optional<CodeModel::Model> CM; + #else +-- +2.18.0 + diff --git a/user/rust/0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch b/user/rust/0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch new file mode 100644 index 000000000..5841dfaf5 --- /dev/null +++ b/user/rust/0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch @@ -0,0 +1,43 @@ +From 616f6627b1489fbf87f867cc9b7a2c870c64f06f Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Wed, 8 Aug 2018 22:06:18 -0500 +Subject: [PATCH 16/28] Use ELFv2 ABI on powerpc64 musl (Rust half) + +--- + src/librustc_target/abi/call/powerpc64.rs | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs +index 0c5ec77a39..4851b25fe7 100644 +--- a/src/librustc_target/abi/call/powerpc64.rs ++++ b/src/librustc_target/abi/call/powerpc64.rs +@@ -14,6 +14,7 @@ + + use abi::call::{FnType, ArgType, Reg, RegKind, Uniform}; + use abi::{Align, Endian, HasDataLayout, LayoutOf, TyLayout, TyLayoutMethods}; ++use spec::HasTargetSpec; + + #[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) + + 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 ++ C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec + { +- 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 { ++ Endian::Big => ELFv1, ++ Endian::Little => ELFv2 ++ } + }; + + if !fty.ret.is_ignore() { +-- +2.18.0 + diff --git a/user/rust/0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch b/user/rust/0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch new file mode 100644 index 000000000..35bf35f6c --- /dev/null +++ b/user/rust/0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch @@ -0,0 +1,93 @@ +From 87d7cb5226728f549af3a7f469a6107c3acbc41d Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sun, 16 Sep 2018 16:34:15 +0000 +Subject: [PATCH 17/28] 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 +necessary to put the argument in the correct half of the register. +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/mod.rs | 2 +- + 2 files changed, 17 insertions(+), 21 deletions(-) + +diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs +index 4851b25fe7..9e616c034e 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) + let size = ret.layout.size; + let bits = size.bits(); + if bits <= 128 { +- let unit = if bits <= 8 { ++ let unit = if cx.data_layout().endian == Endian::Big { ++ Reg { kind: RegKind::Integer, size } ++ } else if bits <= 8 { + 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) + } + + let size = arg.layout.size; +- let (unit, total) = match abi { +- ELFv1 => { +- // In ELFv1, aggregates smaller than a doubleword should appear in +- // the least-significant bits of the parameter doubleword. The rest +- // should be padded at their tail to fill out multiple doublewords. +- if size.bits() <= 64 { +- (Reg { kind: RegKind::Integer, size }, size) +- } else { +- let align = Align::from_bits(64, 64).unwrap(); +- (Reg::i64(), size.abi_align(align)) +- } +- }, +- ELFv2 => { +- // In ELFv2, we can just cast directly. +- (Reg::i64(), size) +- }, ++ let (unit, total) = if size.bits() <= 64 { ++ // Aggregates smaller than a doubleword should appear in ++ // the least-significant bits of the parameter doubleword. ++ (Reg { kind: RegKind::Integer, size }, size) ++ } else { ++ // Aggregates larger than a doubleword should be padded ++ // at the tail to fill out a whole number of doublewords. ++ let align = Align::from_bits(64, 64).unwrap(); ++ (Reg::i64(), size.abi_align(align)) + }; + + 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 +--- a/src/librustc_target/abi/mod.rs ++++ b/src/librustc_target/abi/mod.rs +@@ -214,7 +214,7 @@ impl<'a> HasDataLayout for &'a TargetDataLayout { + } + + /// Endianness of the target, which must match cfg(target-endian). +-#[derive(Copy, Clone)] ++#[derive(Copy, Clone, PartialEq)] + pub enum Endian { + Little, + Big +-- +2.18.0 + diff --git a/user/rust/0018-Add-powerpc64-unknown-linux-musl-target.patch b/user/rust/0018-Add-powerpc64-unknown-linux-musl-target.patch new file mode 100644 index 000000000..a21c07b12 --- /dev/null +++ b/user/rust/0018-Add-powerpc64-unknown-linux-musl-target.patch @@ -0,0 +1,118 @@ +From 529fb4b3cdc73a3a6b098f13f7d07255f0ebb63e Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Tue, 7 Aug 2018 21:59:15 -0500 +Subject: [PATCH 18/28] 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/0019-run-pass-const-endianness-negate-before-to_le.patch b/user/rust/0019-run-pass-const-endianness-negate-before-to_le.patch new file mode 100644 index 000000000..a024abc21 --- /dev/null +++ b/user/rust/0019-run-pass-const-endianness-negate-before-to_le.patch @@ -0,0 +1,29 @@ +From c38c7916aca7d0d0aa1d860ae16ec8743515c94c Mon Sep 17 00:00:00 2001 +From: Josh Stone <jistone@redhat.com> +Date: Mon, 30 Jul 2018 13:08:56 -0700 +Subject: [PATCH 19/28] 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/0020-Fix-double_check-tests-on-big-endian-targets.patch b/user/rust/0020-Fix-double_check-tests-on-big-endian-targets.patch new file mode 100644 index 000000000..ca8f7d1ad --- /dev/null +++ b/user/rust/0020-Fix-double_check-tests-on-big-endian-targets.patch @@ -0,0 +1,75 @@ +From 94543ed21325120c86cde3267306272b519be3f7 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sun, 16 Sep 2018 16:37:58 +0000 +Subject: [PATCH 20/28] 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 ++-- + 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 +index 81f6e7ddd2..76f9276c05 100644 +--- a/src/test/ui/const-eval/double_check.rs ++++ b/src/test/ui/const-eval/double_check.rs +@@ -21,12 +21,12 @@ enum Bar { + union Union { + foo: &'static Foo, + bar: &'static Bar, +- usize: &'static usize, ++ u8: &'static u8, + } +-static BAR: usize = 42; ++static BAR: u8 = 42; + static FOO: (&Foo, &Bar) = unsafe {( +- Union { usize: &BAR }.foo, +- Union { usize: &BAR }.bar, ++ Union { u8: &BAR }.foo, ++ Union { u8: &BAR }.bar, + )}; + + fn main() {} +diff --git a/src/test/ui/const-eval/double_check2.rs b/src/test/ui/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 +@@ -19,12 +19,12 @@ enum Bar { + union Union { + foo: &'static Foo, + bar: &'static Bar, +- usize: &'static usize, ++ u8: &'static u8, + } +-static BAR: usize = 5; ++static BAR: u8 = 5; + static FOO: (&Foo, &Bar) = unsafe {( //~ undefined behavior +- Union { usize: &BAR }.foo, +- Union { usize: &BAR }.bar, ++ Union { u8: &BAR }.foo, ++ Union { u8: &BAR }.bar, + )}; + + 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 +@@ -2,8 +2,8 @@ error[E0080]: this static likely exhibits undefined behavior + --> $DIR/double_check2.rs:25:1 + | + LL | / static FOO: (&Foo, &Bar) = unsafe {( //~ undefined behavior +-LL | | Union { usize: &BAR }.foo, +-LL | | Union { usize: &BAR }.bar, ++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 + | +-- +2.18.0 + diff --git a/user/rust/0021-x.py-Use-python3-instead-of-python.patch b/user/rust/0021-x.py-Use-python3-instead-of-python.patch new file mode 100644 index 000000000..70a1dcb9a --- /dev/null +++ b/user/rust/0021-x.py-Use-python3-instead-of-python.patch @@ -0,0 +1,22 @@ +From e6007a9a892ccece7c940782a1ac9c13275eb26a Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 10 Sep 2018 01:36:00 +0000 +Subject: [PATCH 21/28] x.py: Use python3 instead of python + +--- + x.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/x.py b/x.py +index e277ab98be..a75176a3f9 100755 +--- a/x.py ++++ b/x.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # Copyright 2016 The Rust Project Developers. See the COPYRIGHT + # file at the top-level directory of this distribution and at + # http://rust-lang.org/COPYRIGHT. +-- +2.18.0 + diff --git a/user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch b/user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch new file mode 100644 index 000000000..d7852a977 --- /dev/null +++ b/user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch @@ -0,0 +1,109 @@ +From b50f6be09bdefa827bbb2248f48faaae87204a1d Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sun, 16 Sep 2018 16:34:56 +0000 +Subject: [PATCH 22/28] test/debuginfo: Update for GDB output format changes + +--- + .../generic-enum-with-different-disr-sizes.rs | 16 ++++++++-------- + src/test/debuginfo/generic-struct-style-enum.rs | 6 +++--- + src/test/debuginfo/generic-tuple-style-enum.rs | 6 +++--- + 3 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs b/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs +index 1fc05b3752..7e3818bc0e 100644 +--- a/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs ++++ b/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs +@@ -19,36 +19,36 @@ + + // gdb-command:print eight_bytes1 + // gdbg-check:$1 = {{RUST$ENUM$DISR = Variant1, __0 = 100}, {RUST$ENUM$DISR = Variant1, __0 = 100}} +-// gdbr-check:$1 = generic_enum_with_different_disr_sizes::Enum::Variant1(100) ++// gdbr-check:$1 = generic_enum_with_different_disr_sizes::Enum<f64>::Variant1(100) + + // gdb-command:print four_bytes1 + // gdbg-check:$2 = {{RUST$ENUM$DISR = Variant1, __0 = 101}, {RUST$ENUM$DISR = Variant1, __0 = 101}} +-// gdbr-check:$2 = generic_enum_with_different_disr_sizes::Enum::Variant1(101) ++// gdbr-check:$2 = generic_enum_with_different_disr_sizes::Enum<i32>::Variant1(101) + + // gdb-command:print two_bytes1 + // gdbg-check:$3 = {{RUST$ENUM$DISR = Variant1, __0 = 102}, {RUST$ENUM$DISR = Variant1, __0 = 102}} +-// gdbr-check:$3 = generic_enum_with_different_disr_sizes::Enum::Variant1(102) ++// gdbr-check:$3 = generic_enum_with_different_disr_sizes::Enum<i16>::Variant1(102) + + // gdb-command:print one_byte1 + // gdbg-check:$4 = {{RUST$ENUM$DISR = Variant1, __0 = 65 'A'}, {RUST$ENUM$DISR = Variant1, __0 = 65 'A'}} +-// gdbr-check:$4 = generic_enum_with_different_disr_sizes::Enum::Variant1(65) ++// gdbr-check:$4 = generic_enum_with_different_disr_sizes::Enum<u8>::Variant1(65) + + + // gdb-command:print eight_bytes2 + // gdbg-check:$5 = {{RUST$ENUM$DISR = Variant2, __0 = 100}, {RUST$ENUM$DISR = Variant2, __0 = 100}} +-// gdbr-check:$5 = generic_enum_with_different_disr_sizes::Enum::Variant2(100) ++// gdbr-check:$5 = generic_enum_with_different_disr_sizes::Enum<f64>::Variant2(100) + + // gdb-command:print four_bytes2 + // gdbg-check:$6 = {{RUST$ENUM$DISR = Variant2, __0 = 101}, {RUST$ENUM$DISR = Variant2, __0 = 101}} +-// gdbr-check:$6 = generic_enum_with_different_disr_sizes::Enum::Variant2(101) ++// gdbr-check:$6 = generic_enum_with_different_disr_sizes::Enum<i32>::Variant2(101) + + // gdb-command:print two_bytes2 + // gdbg-check:$7 = {{RUST$ENUM$DISR = Variant2, __0 = 102}, {RUST$ENUM$DISR = Variant2, __0 = 102}} +-// gdbr-check:$7 = generic_enum_with_different_disr_sizes::Enum::Variant2(102) ++// gdbr-check:$7 = generic_enum_with_different_disr_sizes::Enum<i16>::Variant2(102) + + // gdb-command:print one_byte2 + // gdbg-check:$8 = {{RUST$ENUM$DISR = Variant2, __0 = 65 'A'}, {RUST$ENUM$DISR = Variant2, __0 = 65 'A'}} +-// gdbr-check:$8 = generic_enum_with_different_disr_sizes::Enum::Variant2(65) ++// gdbr-check:$8 = generic_enum_with_different_disr_sizes::Enum<u8>::Variant2(65) + + // gdb-command:continue + +diff --git a/src/test/debuginfo/generic-struct-style-enum.rs b/src/test/debuginfo/generic-struct-style-enum.rs +index 4a1d14ccf6..fa6b0105dc 100644 +--- a/src/test/debuginfo/generic-struct-style-enum.rs ++++ b/src/test/debuginfo/generic-struct-style-enum.rs +@@ -19,15 +19,15 @@ + + // gdb-command:print case1 + // gdbg-check:$1 = {{RUST$ENUM$DISR = Case1, a = 0, b = 31868, c = 31868, d = 31868, e = 31868}, {RUST$ENUM$DISR = Case1, [...]}, {RUST$ENUM$DISR = Case1, [...]}} +-// gdbr-check:$1 = generic_struct_style_enum::Regular::Case1{a: 0, b: 31868, c: 31868, d: 31868, e: 31868} ++// gdbr-check:$1 = generic_struct_style_enum::Regular<u16, u32, i64>::Case1{a: 0, b: 31868, c: 31868, d: 31868, e: 31868} + + // gdb-command:print case2 + // gdbg-check:$2 = {{RUST$ENUM$DISR = Case2, [...]}, {RUST$ENUM$DISR = Case2, a = 0, b = 286331153, c = 286331153}, {RUST$ENUM$DISR = Case2, [...]}} +-// gdbr-check:$2 = generic_struct_style_enum::Regular::Case2{a: 0, b: 286331153, c: 286331153} ++// gdbr-check:$2 = generic_struct_style_enum::Regular<i16, u32, i64>::Case2{a: 0, b: 286331153, c: 286331153} + + // gdb-command:print case3 + // gdbg-check:$3 = {{RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, a = 0, b = 6438275382588823897}} +-// gdbr-check:$3 = generic_struct_style_enum::Regular::Case3{a: 0, b: 6438275382588823897} ++// gdbr-check:$3 = generic_struct_style_enum::Regular<u16, i32, u64>::Case3{a: 0, b: 6438275382588823897} + + // gdb-command:print univariant + // gdbg-check:$4 = {{a = -1}} +diff --git a/src/test/debuginfo/generic-tuple-style-enum.rs b/src/test/debuginfo/generic-tuple-style-enum.rs +index 012bd6140c..b0f85d6f8b 100644 +--- a/src/test/debuginfo/generic-tuple-style-enum.rs ++++ b/src/test/debuginfo/generic-tuple-style-enum.rs +@@ -21,15 +21,15 @@ + + // gdb-command:print case1 + // gdbg-check:$1 = {{RUST$ENUM$DISR = Case1, __0 = 0, __1 = 31868, __2 = 31868, __3 = 31868, __4 = 31868}, {RUST$ENUM$DISR = Case1, [...]}, {RUST$ENUM$DISR = Case1, [...]}} +-// gdbr-check:$1 = generic_tuple_style_enum::Regular::Case1(0, 31868, 31868, 31868, 31868) ++// gdbr-check:$1 = generic_tuple_style_enum::Regular<u16, u32, u64>::Case1(0, 31868, 31868, 31868, 31868) + + // gdb-command:print case2 + // gdbg-check:$2 = {{RUST$ENUM$DISR = Case2, [...]}, {RUST$ENUM$DISR = Case2, __0 = 0, __1 = 286331153, __2 = 286331153}, {RUST$ENUM$DISR = Case2, [...]}} +-// gdbr-check:$2 = generic_tuple_style_enum::Regular::Case2(0, 286331153, 286331153) ++// gdbr-check:$2 = generic_tuple_style_enum::Regular<i16, i32, i64>::Case2(0, 286331153, 286331153) + + // gdb-command:print case3 + // gdbg-check:$3 = {{RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, __0 = 0, __1 = 6438275382588823897}} +-// gdbr-check:$3 = generic_tuple_style_enum::Regular::Case3(0, 6438275382588823897) ++// gdbr-check:$3 = generic_tuple_style_enum::Regular<i16, i32, i64>::Case3(0, 6438275382588823897) + + // gdb-command:print univariant + // gdbg-check:$4 = {{__0 = -1}} +-- +2.18.0 + diff --git a/user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch b/user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch new file mode 100644 index 000000000..bcb0e8e77 --- /dev/null +++ b/user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch @@ -0,0 +1,26 @@ +From 103ce33fe27dfcb0dad1354f269838f641fe66f6 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/28] test/target-feature-gate: Ignore on not-applicable + targets + +--- + src/test/ui/target-feature-gate.rs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/test/ui/target-feature-gate.rs b/src/test/ui/target-feature-gate.rs +index 69208f1513..59c5708b0c 100644 +--- a/src/test/ui/target-feature-gate.rs ++++ b/src/test/ui/target-feature-gate.rs +@@ -10,6 +10,8 @@ + + // ignore-arm + // ignore-aarch64 ++// ignore-powerpc ++// ignore-powerpc64 + // ignore-wasm + // ignore-emscripten + // gate-test-sse4a_target_feature +-- +2.18.0 + diff --git a/user/rust/0024-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0024-Ignore-broken-and-non-applicable-tests.patch new file mode 100644 index 000000000..75434c9fb --- /dev/null +++ b/user/rust/0024-Ignore-broken-and-non-applicable-tests.patch @@ -0,0 +1,63 @@ +From 4ed9e0630eafd839c9b22e8ed56ecacccc913bdf Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sun, 16 Sep 2018 16:38:48 +0000 +Subject: [PATCH 24/28] Ignore broken and non-applicable tests + +long-linker-command-lines: takes more than 10 minutes to run +nil-enum: GDB output changed in a questionable way +sparc-struct-abi: no sparc target +sysroot-crates-are-unstable: can't run rustc without rpath +--- + src/test/codegen/sparc-struct-abi.rs | 1 + + src/test/debuginfo/nil-enum.rs | 2 +- + src/test/run-make-fulldeps/long-linker-command-lines/Makefile | 1 - + src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 +- + 4 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs +index d3b7a5cd59..5e0f94cdf9 100644 +--- a/src/test/codegen/sparc-struct-abi.rs ++++ b/src/test/codegen/sparc-struct-abi.rs +@@ -12,6 +12,7 @@ + // See issue #52638. + + // compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib ++// ignore-test + #![feature(no_core, lang_items)] + #![no_core] + +diff --git a/src/test/debuginfo/nil-enum.rs b/src/test/debuginfo/nil-enum.rs +index 94377421c0..bce2b98447 100644 +--- a/src/test/debuginfo/nil-enum.rs ++++ b/src/test/debuginfo/nil-enum.rs +@@ -10,7 +10,7 @@ + + // LLDB can't handle zero-sized values + // ignore-lldb +- ++// ignore-test + + // compile-flags:-g + // gdb-command:run +diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile +index 5876fbc94b..e9f5c33b77 100644 +--- a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile ++++ b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile +@@ -2,4 +2,3 @@ + + all: + $(RUSTC) foo.rs -g -O +- RUSTC="$(RUSTC_ORIGINAL)" $(call RUN,foo) +diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile +index 9e77070685..7784230b46 100644 +--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile ++++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile +@@ -1,4 +1,4 @@ + -include ../tools.mk + + all: +- env '$(HOST_RPATH_ENV)' python2.7 test.py ++ true +-- +2.18.0 + diff --git a/user/rust/0025-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0025-Move-debugger-scripts-to-usr-share-rust.patch new file mode 100644 index 000000000..f1b163f2d --- /dev/null +++ b/user/rust/0025-Move-debugger-scripts-to-usr-share-rust.patch @@ -0,0 +1,53 @@ +From e2660b4762083f14a355d283b6383f7cab0d38fd Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 17 Sep 2018 02:09:10 +0000 +Subject: [PATCH 25/28] Move debugger scripts to /usr/share/rust + +--- + src/bootstrap/dist.rs | 2 +- + src/etc/rust-gdb | 2 +- + src/etc/rust-lldb | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs +index c6b39a52ae..ca21e87c9d 100644 +--- a/src/bootstrap/dist.rs ++++ b/src/bootstrap/dist.rs +@@ -575,7 +575,7 @@ impl Step for DebuggerScripts { + fn run(self, builder: &Builder) { + let host = self.host; + let sysroot = self.sysroot; +- let dst = sysroot.join("lib/rustlib/etc"); ++ let dst = sysroot.join("share/rust"); + t!(fs::create_dir_all(&dst)); + 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 +--- a/src/etc/rust-gdb ++++ b/src/etc/rust-gdb +@@ -14,7 +14,7 @@ set -e + + # Find out where the pretty printer Python module is + RUSTC_SYSROOT=`rustc --print=sysroot` +-GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc" ++GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust" + + # 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 +--- 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` + + # 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 + +-- +2.18.0 + diff --git a/user/rust/0026-Add-foxkit-target-specs.patch b/user/rust/0026-Add-foxkit-target-specs.patch new file mode 100644 index 000000000..883748a0e --- /dev/null +++ b/user/rust/0026-Add-foxkit-target-specs.patch @@ -0,0 +1,204 @@ +From 84f391140786018536c2eecd925c72814e5df38f Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 17 Sep 2018 02:29:06 +0000 +Subject: [PATCH 26/28] Add foxkit target specs + +--- + .../spec/aarch64_foxkit_linux_musl.rs | 21 +++++++++++++++++++ + .../spec/armv7_foxkit_linux_musleabihf.rs | 21 +++++++++++++++++++ + .../spec/i586_foxkit_linux_musl.rs | 21 +++++++++++++++++++ + src/librustc_target/spec/mod.rs | 7 +++++++ + .../spec/powerpc64_foxkit_linux_musl.rs | 21 +++++++++++++++++++ + .../spec/powerpc_foxkit_linux_musl.rs | 21 +++++++++++++++++++ + .../spec/x86_64_foxkit_linux_musl.rs | 21 +++++++++++++++++++ + 7 files changed, 133 insertions(+) + create mode 100644 src/librustc_target/spec/aarch64_foxkit_linux_musl.rs + create mode 100644 src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs + create mode 100644 src/librustc_target/spec/i586_foxkit_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc_foxkit_linux_musl.rs + create mode 100644 src/librustc_target/spec/x86_64_foxkit_linux_musl.rs + +diff --git a/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs +new file mode 100644 +index 0000000000..18ad2c2f31 +--- /dev/null ++++ b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs +@@ -0,0 +1,21 @@ ++// 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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::aarch64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "aarch64-foxkit-linux-musl".to_string(); ++ base.target_vendor = "foxkit".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs +new file mode 100644 +index 0000000000..facfd5d363 +--- /dev/null ++++ b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs +@@ -0,0 +1,21 @@ ++// 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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::armv7_unknown_linux_musleabihf::target()?; ++ ++ base.llvm_target = "armv7-foxkit-linux-musleabihf".to_string(); ++ base.target_vendor = "foxkit".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/i586_foxkit_linux_musl.rs b/src/librustc_target/spec/i586_foxkit_linux_musl.rs +new file mode 100644 +index 0000000000..cd6280e586 +--- /dev/null ++++ b/src/librustc_target/spec/i586_foxkit_linux_musl.rs +@@ -0,0 +1,21 @@ ++// 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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::i586_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "i586-foxkit-linux-musl".to_string(); ++ base.target_vendor = "foxkit".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs +index 94aa07abb6..1187afbb60 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), ++ ++ ("aarch64-foxkit-linux-musl", aarch64_foxkit_linux_musl), ++ ("armv7-foxkit-linux-musleabihf", armv7_foxkit_linux_musleabihf), ++ ("i586-foxkit-linux-musl", i586_foxkit_linux_musl), ++ ("powerpc-foxkit-linux-musl", powerpc_foxkit_linux_musl), ++ ("powerpc64-foxkit-linux-musl", powerpc64_foxkit_linux_musl), ++ ("x86_64-foxkit-linux-musl", x86_64_foxkit_linux_musl), + } + + /// Everything `rustc` knows about how to compile for a specific target. +diff --git a/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs +new file mode 100644 +index 0000000000..b7202ee0fc +--- /dev/null ++++ b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs +@@ -0,0 +1,21 @@ ++// 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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64-foxkit-linux-musl".to_string(); ++ base.target_vendor = "foxkit".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs +new file mode 100644 +index 0000000000..4daa96d3ce +--- /dev/null ++++ b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs +@@ -0,0 +1,21 @@ ++// 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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc-foxkit-linux-musl".to_string(); ++ base.target_vendor = "foxkit".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs +new file mode 100644 +index 0000000000..801dd8d6f4 +--- /dev/null ++++ b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs +@@ -0,0 +1,21 @@ ++// 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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::x86_64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "x86_64-foxkit-linux-musl".to_string(); ++ base.target_vendor = "foxkit".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +-- +2.18.0 + diff --git a/user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch b/user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch new file mode 100644 index 000000000..69e8584ba --- /dev/null +++ b/user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch @@ -0,0 +1,38 @@ +From 7eba02678b9a00bc6d38281795422663bca3fcc1 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Tue, 18 Sep 2018 00:02:46 +0000 +Subject: [PATCH 27/28] Add foxkit target specs for OpenSSL + +--- + src/bootstrap/native.rs | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs +index 186ef75189..406c76b95c 100644 +--- a/src/bootstrap/native.rs ++++ b/src/bootstrap/native.rs +@@ -652,6 +652,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", ++ "aarch64-foxkit-linux-musl" => "linux-aarch64", ++ "armv7-foxkit-linux-musleabihf" => "linux-armv4", ++ "i586-foxkit-linux-musl" => "linux-elf", ++ "powerpc-foxkit-linux-musl" => "linux-ppc", ++ "powerpc64-foxkit-linux-musl" => "linux-ppc64", ++ "x86_64-foxkit-linux-musl" => "linux-x86_64", + _ => panic!("don't know how to configure OpenSSL for {}", target), + }; + configure.arg(os); +@@ -666,7 +672,7 @@ impl Step for Openssl { + configure.arg("-fomit-frame-pointer"); + } + // OpenSSL ships incompatible ELFv1 ABI assembly code +- if target == "powerpc64-unknown-linux-musl" { ++ if target == "powerpc64-unknown-linux-musl" || target == "powerpc64-foxkit-linux-musl" { + configure.arg("no-asm"); + } + if target == "sparc64-unknown-netbsd" { +-- +2.18.0 + diff --git a/user/rust/0028-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0028-Link-stage-2-tools-dynamically-to-libstd.patch new file mode 100644 index 000000000..5a6f8506c --- /dev/null +++ b/user/rust/0028-Link-stage-2-tools-dynamically-to-libstd.patch @@ -0,0 +1,27 @@ +From 418b6417dbaf06f5afe7a076bc8d58c308a4a48c Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 24 Sep 2018 23:42:23 +0000 +Subject: [PATCH 28/28] 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 +--- a/src/bootstrap/tool.rs ++++ b/src/bootstrap/tool.rs +@@ -261,7 +261,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. +- cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1"); ++ if compiler.stage < 2 { ++ cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1"); ++ } + + if source_type == SourceType::Submodule { + cargo.env("RUSTC_EXTERNAL_TOOL", "1"); +-- +2.18.0 + diff --git a/user/rust/0030-liblibc-linkage.patch b/user/rust/0030-liblibc-linkage.patch new file mode 100644 index 000000000..4daa0e48f --- /dev/null +++ b/user/rust/0030-liblibc-linkage.patch @@ -0,0 +1,17 @@ +diff --git a/src/liblibc/src/unix/mod.rs b/src/liblibc/src/unix/mod.rs +index 9c68178a..1ae270e9 100644 +--- a/src/liblibc/src/unix/mod.rs ++++ b/src/liblibc/src/unix/mod.rs +@@ -287,11 +287,7 @@ cfg_if! { + // cargo build, don't pull in anything extra as the libstd dep + // already pulls in all libs. + } else if #[cfg(target_env = "musl")] { +- #[cfg_attr(feature = "stdbuild", +- link(name = "c", kind = "static", +- cfg(target_feature = "crt-static")))] +- #[cfg_attr(feature = "stdbuild", +- link(name = "c", cfg(not(target_feature = "crt-static"))))] ++ #[link(name = "c")] + extern {} + } else if #[cfg(target_os = "emscripten")] { + #[link(name = "c")] diff --git a/user/rust/0031-liblibc-dcff154781e4.patch b/user/rust/0031-liblibc-dcff154781e4.patch new file mode 100644 index 000000000..6840e203f --- /dev/null +++ b/user/rust/0031-liblibc-dcff154781e4.patch @@ -0,0 +1,642 @@ +From dcff154781e4b3c6ef3a6a4024c73631f52f48cb Mon Sep 17 00:00:00 2001 +From: Mike Sullivan <mksully22@gmail.com> +Date: Mon, 18 Jun 2018 15:16:25 +0000 +Subject: [PATCH] libc: changes to ppc64le musl branch to support building of + rust on Alpine amend to add style changes amend to add style changes + +--- + src/unix/notbsd/linux/musl/b32/mod.rs | 74 ++++++++++ + src/unix/notbsd/linux/musl/b64/mod.rs | 62 -------- + src/unix/notbsd/linux/musl/b64/powerpc64.rs | 155 ++++++++++++++++++-- + src/unix/notbsd/linux/musl/b64/x86_64.rs | 136 +++++++++++++++++ + src/unix/notbsd/linux/musl/mod.rs | 74 ---------- + 5 files changed, 353 insertions(+), 148 deletions(-) + +diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs +index f6e19d981dd..b4a0f761636 100644 +--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs ++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs +@@ -52,6 +52,80 @@ 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; ++} ++ + cfg_if! { + if #[cfg(any(target_arch = "x86"))] { + mod x86; +diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs +index 70baf8277a9..5c2e815fd60 100644 +--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs ++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs +@@ -136,9 +136,6 @@ pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40; + + pub const O_ASYNC: ::c_int = 0x2000; + +-pub const FIOCLEX: ::c_int = 0x5451; +-pub const FIONBIO: ::c_int = 0x5421; +- + pub const RLIMIT_RSS: ::c_int = 5; + pub const RLIMIT_NOFILE: ::c_int = 7; + pub const RLIMIT_AS: ::c_int = 9; +@@ -172,7 +169,6 @@ 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; +@@ -194,7 +190,6 @@ 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 = EDEADLK; + pub const EMULTIHOP: ::c_int = 72; + pub const EBADMSG: ::c_int = 74; + pub const EOVERFLOW: ::c_int = 75; +@@ -272,12 +267,6 @@ 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_PASSCRED: ::c_int = 16; +-pub const SO_PEERCRED: ::c_int = 17; +-pub const SO_RCVLOWAT: ::c_int = 18; +-pub const SO_SNDLOWAT: ::c_int = 19; +-pub const SO_RCVTIMEO: ::c_int = 20; +-pub const SO_SNDTIMEO: ::c_int = 21; + pub const SO_ACCEPTCONN: ::c_int = 30; + pub const SO_SNDBUFFORCE: ::c_int = 32; + pub const SO_RCVBUFFORCE: ::c_int = 33; +@@ -312,8 +301,6 @@ 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 = 0x00010000; +- + pub const MAP_HUGETLB: ::c_int = 0x040000; + + pub const F_GETLK: ::c_int = 5; +@@ -323,59 +310,10 @@ pub const F_SETLKW: ::c_int = 7; + pub const F_SETOWN: ::c_int = 8; + + pub const VEOF: usize = 4; +-pub const VEOL: usize = 11; +-pub const VEOL2: usize = 16; +-pub const VMIN: usize = 6; +-pub const IEXTEN: ::tcflag_t = 0x00008000; +-pub const TOSTOP: ::tcflag_t = 0x00000100; +-pub const FLUSHO: ::tcflag_t = 0x00001000; +- +-pub const TCGETS: ::c_int = 0x5401; +-pub const TCSETS: ::c_int = 0x5402; +-pub const TCSETSW: ::c_int = 0x5403; +-pub const TCSETSF: ::c_int = 0x5404; +-pub const TCGETA: ::c_int = 0x5405; +-pub const TCSETA: ::c_int = 0x5406; +-pub const TCSETAW: ::c_int = 0x5407; +-pub const TCSETAF: ::c_int = 0x5408; +-pub const TCSBRK: ::c_int = 0x5409; +-pub const TCXONC: ::c_int = 0x540A; +-pub const TCFLSH: ::c_int = 0x540B; +-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 = 0x540F; +-pub const TIOCSPGRP: ::c_int = 0x5410; +-pub const TIOCOUTQ: ::c_int = 0x5411; +-pub const TIOCSTI: ::c_int = 0x5412; +-pub const TIOCGWINSZ: ::c_int = 0x5413; +-pub const TIOCSWINSZ: ::c_int = 0x5414; +-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 = 0x541B; +-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; +- + cfg_if! { + if #[cfg(target_arch = "aarch64")] { + mod aarch64; +diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs +index 621f9f4ce79..2ac39bf0cd5 100644 +--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs ++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs +@@ -60,22 +60,17 @@ s! { + } + } + +-pub const SYS_pivot_root: ::c_long = 203; +-pub const SYS_gettid: ::c_long = 207; +-pub const SYS_perf_event_open: ::c_long = 319; +-pub const SYS_memfd_create: ::c_long = 360; +- + pub const MAP_32BIT: ::c_int = 0x0040; +-pub const O_DIRECT: ::c_int = 0x4000; +-pub const O_DIRECTORY: ::c_int = 0x10000; +-pub const O_LARGEFILE: ::c_int = 0; +-pub const O_NOFOLLOW: ::c_int = 0x20000; ++pub const O_DIRECT: ::c_int = 0x20000; ++pub const O_DIRECTORY: ::c_int = 0x4000; ++pub const O_LARGEFILE: ::c_int = 0x10000; ++pub const O_NOFOLLOW: ::c_int = 0x8000; + +-pub const SIGSTKSZ: ::size_t = 8192; +-pub const MINSIGSTKSZ: ::size_t = 2048; ++pub const SIGSTKSZ: ::size_t = 10240; ++pub const MINSIGSTKSZ: ::size_t = 4096; + + #[doc(hidden)] +-pub const AF_MAX: ::c_int = 42; ++pub const AF_MAX: ::c_int = 43; + #[doc(hidden)] + pub const PF_MAX: ::c_int = AF_MAX; + +@@ -439,3 +434,139 @@ 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 FIOCLEX: ::c_ulong = 0x20006601; ++pub const FIONBIO: ::c_ulong = 0x8004667e; ++pub const EDEADLK: ::c_int = 58; ++pub const EDEADLOCK: ::c_int = EDEADLK; ++pub const SO_PASSCRED: ::c_int = 20; ++pub const SO_PEERCRED: ::c_int = 21; ++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 EXTPROC: ::tcflag_t = 0x10000000; ++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_ulong = 0x403c7413; ++pub const TCSETS: ::c_ulong = 0x803c7414; ++pub const TCSETSW: ::c_ulong = 0x803c7415; ++pub const TCSETSF: ::c_ulong = 0x803c7416; ++pub const TCGETA: ::c_ulong = 0x40147417; ++pub const TCSETA: ::c_ulong = 0x80147418; ++pub const TCSETAW: ::c_ulong = 0x80147419; ++pub const TCSETAF: ::c_ulong = 0x8014741c; ++pub const TCSBRK: ::c_ulong = 0x2000741d; ++pub const TCXONC: ::c_ulong = 0x2000741e; ++pub const TCFLSH: ::c_ulong = 0x2000741f; ++pub const TIOCGSOFTCAR: ::c_ulong = 0x5419; ++pub const TIOCSSOFTCAR: ::c_ulong = 0x541A; ++pub const TIOCLINUX: ::c_ulong = 0x541C; ++pub const TIOCGSERIAL: ::c_ulong = 0x541E; ++pub const TIOCEXCL: ::c_ulong = 0x540C; ++pub const TIOCNXCL: ::c_ulong = 0x540D; ++pub const TIOCSCTTY: ::c_ulong = 0x540E; ++pub const TIOCGPGRP: ::c_ulong = 0x40047477; ++pub const TIOCSPGRP: ::c_ulong = 0x80047476; ++pub const TIOCOUTQ: ::c_ulong = 0x40047473; ++pub const TIOCGWINSZ: ::c_ulong = 0x40087468; ++pub const TIOCSWINSZ: ::c_ulong = 0x80087467; ++pub const TIOCMGET: ::c_ulong = 0x5415; ++pub const TIOCMBIS: ::c_ulong = 0x5416; ++pub const TIOCMBIC: ::c_ulong = 0x5417; ++pub const TIOCMSET: ::c_ulong = 0x5418; ++pub const FIONREAD: ::c_ulong = 0x4004667f; ++pub const TIOCCONS: ::c_ulong = 0x541D; ++pub const TIOCM_LE: ::c_ulong = 0x001; ++pub const TIOCM_DTR: ::c_ulong = 0x002; ++pub const TIOCM_RTS: ::c_ulong = 0x004; ++pub const TIOCM_ST: ::c_ulong = 0x008; ++pub const TIOCM_SR: ::c_ulong = 0x010; ++pub const TIOCM_CTS: ::c_ulong = 0x020; ++pub const TIOCM_CAR: ::c_ulong = 0x040; ++pub const TIOCM_RNG: ::c_ulong = 0x080; ++pub const TIOCM_DSR: ::c_ulong = 0x100; ++pub const TIOCM_CD: ::c_ulong = TIOCM_CAR; ++pub const TIOCM_RI: ::c_ulong = TIOCM_RNG; ++ ++pub const RLIMIT_NLIMITS: ::c_int = 15; ++pub const TIOCINQ: ::c_ulong = ::FIONREAD; ++pub const MCL_CURRENT: ::c_int = 0x2000; ++pub const MCL_FUTURE: ::c_int = 0x4000; ++pub const CBAUD: ::tcflag_t = 0xff; ++pub const TAB1: ::c_int = 0x400; ++pub const TAB2: ::c_int = 0x800; ++pub const TAB3: ::c_int = 0xc00; ++pub const CR1: ::c_int = 0x1000; ++pub const CR2: ::c_int = 0x2000; ++pub const CR3: ::c_int = 0x3000; ++pub const FF1: ::c_int = 0x4000; ++pub const BS1: ::c_int = 0x8000; ++pub const VT1: ::c_int = 0x10000; ++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 = 0x2; ++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 = 0o77600000; ++pub const CBAUDEX: ::tcflag_t = 0o0000020; ++pub const VSWTC: usize = 9; ++pub const OLCUC: ::tcflag_t = 0o000004; ++pub const NLDLY: ::tcflag_t = 0o0001400; ++pub const CRDLY: ::tcflag_t = 0o0030000; ++pub const TABDLY: ::tcflag_t = 0o0006000; ++pub const BSDLY: ::tcflag_t = 0o0100000; ++pub const FFDLY: ::tcflag_t = 0o0040000; ++pub const VTDLY: ::tcflag_t = 0o0200000; ++pub const XTABS: ::tcflag_t = 0o00006000; ++ ++pub const B57600: ::speed_t = 0o00020; ++pub const B115200: ::speed_t = 0o00021; ++pub const B230400: ::speed_t = 0o00022; ++pub const B460800: ::speed_t = 0o00023; ++pub const B500000: ::speed_t = 0o00024; ++pub const B576000: ::speed_t = 0o00025; ++pub const B921600: ::speed_t = 0o00026; ++pub const B1000000: ::speed_t = 0o00027; ++pub const B1152000: ::speed_t = 0o00030; ++pub const B1500000: ::speed_t = 0o00031; ++pub const B2000000: ::speed_t = 0o00032; ++pub const B2500000: ::speed_t = 0o00033; ++pub const B3000000: ::speed_t = 0o00034; ++pub const B3500000: ::speed_t = 0o00035; ++pub const B4000000: ::speed_t = 0o00036; ++ ++extern { ++ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; ++} +diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs +index 78d38e49e8f..0e0fcec4d2e 100644 +--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs ++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs +@@ -449,3 +449,139 @@ pub const MINSIGSTKSZ: ::size_t = 2048; + pub const AF_MAX: ::c_int = 42; + #[doc(hidden)] + pub const PF_MAX: ::c_int = AF_MAX; ++ ++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; ++ ++pub const FIOCLEX: ::c_int = 0x5451; ++pub const FIONBIO: ::c_int = 0x5421; ++pub const EDEADLK: ::c_int = 35; ++pub const EDEADLOCK: ::c_int = EDEADLK; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; ++pub const SO_RCVLOWAT: ::c_int = 18; ++pub const SO_SNDLOWAT: ::c_int = 19; ++pub const SO_RCVTIMEO: ::c_int = 20; ++pub const SO_SNDTIMEO: ::c_int = 21; ++pub const EXTPROC: ::tcflag_t = 0x00010000; ++pub const VEOL: usize = 11; ++pub const VEOL2: usize = 16; ++pub const VMIN: usize = 6; ++pub const IEXTEN: ::tcflag_t = 0x00008000; ++pub const TOSTOP: ::tcflag_t = 0x00000100; ++pub const FLUSHO: ::tcflag_t = 0x00001000; ++pub const TCGETS: ::c_int = 0x5401; ++pub const TCSETS: ::c_int = 0x5402; ++pub const TCSETSW: ::c_int = 0x5403; ++pub const TCSETSF: ::c_int = 0x5404; ++pub const TCGETA: ::c_int = 0x5405; ++pub const TCSETA: ::c_int = 0x5406; ++pub const TCSETAW: ::c_int = 0x5407; ++pub const TCSETAF: ::c_int = 0x5408; ++pub const TCSBRK: ::c_int = 0x5409; ++pub const TCXONC: ::c_int = 0x540A; ++pub const TCFLSH: ::c_int = 0x540B; ++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 = 0x540F; ++pub const TIOCSPGRP: ::c_int = 0x5410; ++pub const TIOCOUTQ: ::c_int = 0x5411; ++pub const TIOCSTI: ::c_int = 0x5412; ++pub const TIOCGWINSZ: ::c_int = 0x5413; ++pub const TIOCSWINSZ: ::c_int = 0x5414; ++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 = 0x541B; ++pub const TIOCCONS: ::c_int = 0x541D; ++ ++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; ++ ++extern { ++ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; ++} ++ +diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs +index 9a63d1f7330..0d92a4b9d14 100644 +--- a/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs ++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs +@@ -147,7 +147,6 @@ pub const POSIX_MADV_DONTNEED: ::c_int = 4; + + pub const RLIM_INFINITY: ::rlim_t = !0; + pub const RLIMIT_RTTIME: ::c_int = 15; +-pub const RLIMIT_NLIMITS: ::c_int = 16; + + pub const MAP_ANONYMOUS: ::c_int = MAP_ANON; + +@@ -213,8 +212,6 @@ pub const TCSANOW: ::c_int = 0; + pub const TCSADRAIN: ::c_int = 1; + pub const TCSAFLUSH: ::c_int = 2; + +-pub const TIOCINQ: ::c_int = ::FIONREAD; +- + pub const RTLD_GLOBAL: ::c_int = 0x100; + pub const RTLD_NOLOAD: ::c_int = 0x4; + +@@ -223,61 +220,6 @@ pub const RTLD_NOLOAD: ::c_int = 0x4; + pub const CLOCK_SGI_CYCLE: ::clockid_t = 10; + pub const CLOCK_TAI: ::clockid_t = 11; + +-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 B0: ::speed_t = 0o000000; + pub const B50: ::speed_t = 0o000001; + pub const B75: ::speed_t = 0o000002; +@@ -296,21 +238,6 @@ pub const B19200: ::speed_t = 0o000016; + pub const B38400: ::speed_t = 0o000017; + pub const EXTA: ::speed_t = B19200; + pub const EXTB: ::speed_t = B38400; +-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 SO_BINDTODEVICE: ::c_int = 25; + pub const SO_TIMESTAMP: ::c_int = 29; +@@ -320,7 +247,6 @@ pub const SO_PEEK_OFF: ::c_int = 42; + pub const SO_BUSY_POLL: ::c_int = 46; + + extern { +- pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; + pub fn ptrace(request: ::c_int, ...) -> ::c_long; + pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int; + pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int; diff --git a/user/rust/0032-liblibc-90c01fa6b0f4.patch b/user/rust/0032-liblibc-90c01fa6b0f4.patch new file mode 100644 index 000000000..5e73c780e --- /dev/null +++ b/user/rust/0032-liblibc-90c01fa6b0f4.patch @@ -0,0 +1,162 @@ +From 90c01fa6b0f45c63dc19aa75cd39b38d2de5e98b Mon Sep 17 00:00:00 2001 +From: est31 <MTest31@outlook.com> +Date: Sun, 1 Jul 2018 09:25:11 +0200 +Subject: [PATCH] Re-add aarch64 stuff removed by previous commit + +Previous commit + +dcff154781e4b3c6ef3a6a4024c73631f52f48cb +"libc: changes to ppc64le musl branch to support building of rust on Alpine" + +has removed stuff from mod.rs and added it to some submodules, but +missed the aarch64 submodule. + +This copies the stuff that that commit added to the x86_64.rs submodule +and puts it into aarch64.rs. +--- + src/unix/notbsd/linux/musl/b64/aarch64.rs | 135 ++++++++++++++++++++++ + 1 file changed, 135 insertions(+) + +diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs +index da0827a7750..98c53dc4f2b 100644 +--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs ++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs +@@ -339,3 +339,138 @@ pub const SYS_pwritev2: ::c_long = 287; + pub const SYS_pkey_mprotect: ::c_long = 288; + pub const SYS_pkey_alloc: ::c_long = 289; + pub const SYS_pkey_free: ::c_long = 290; ++ ++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; ++ ++pub const FIOCLEX: ::c_int = 0x5451; ++pub const FIONBIO: ::c_int = 0x5421; ++pub const EDEADLK: ::c_int = 35; ++pub const EDEADLOCK: ::c_int = EDEADLK; ++pub const SO_PASSCRED: ::c_int = 16; ++pub const SO_PEERCRED: ::c_int = 17; ++pub const SO_RCVLOWAT: ::c_int = 18; ++pub const SO_SNDLOWAT: ::c_int = 19; ++pub const SO_RCVTIMEO: ::c_int = 20; ++pub const SO_SNDTIMEO: ::c_int = 21; ++pub const EXTPROC: ::tcflag_t = 0x00010000; ++pub const VEOL: usize = 11; ++pub const VEOL2: usize = 16; ++pub const VMIN: usize = 6; ++pub const IEXTEN: ::tcflag_t = 0x00008000; ++pub const TOSTOP: ::tcflag_t = 0x00000100; ++pub const FLUSHO: ::tcflag_t = 0x00001000; ++pub const TCGETS: ::c_int = 0x5401; ++pub const TCSETS: ::c_int = 0x5402; ++pub const TCSETSW: ::c_int = 0x5403; ++pub const TCSETSF: ::c_int = 0x5404; ++pub const TCGETA: ::c_int = 0x5405; ++pub const TCSETA: ::c_int = 0x5406; ++pub const TCSETAW: ::c_int = 0x5407; ++pub const TCSETAF: ::c_int = 0x5408; ++pub const TCSBRK: ::c_int = 0x5409; ++pub const TCXONC: ::c_int = 0x540A; ++pub const TCFLSH: ::c_int = 0x540B; ++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 = 0x540F; ++pub const TIOCSPGRP: ::c_int = 0x5410; ++pub const TIOCOUTQ: ::c_int = 0x5411; ++pub const TIOCSTI: ::c_int = 0x5412; ++pub const TIOCGWINSZ: ::c_int = 0x5413; ++pub const TIOCSWINSZ: ::c_int = 0x5414; ++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 = 0x541B; ++pub const TIOCCONS: ::c_int = 0x541D; ++ ++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; ++ ++extern { ++ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; ++} diff --git a/user/rust/0033-liblibc-checksums.patch b/user/rust/0033-liblibc-checksums.patch new file mode 100644 index 000000000..3a1f5f423 --- /dev/null +++ b/user/rust/0033-liblibc-checksums.patch @@ -0,0 +1,9 @@ +diff --git a/src/vendor/libc/.cargo-checksum.json b/src/vendor/libc/.cargo-checksum.json +index 5b315f61..c28c8c5c 100644 +--- a/src/vendor/libc/.cargo-checksum.json ++++ b/src/vendor/libc/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"9750910d5fdc61263fb3eae7f5f78e2920923f250150f8500c0c22a830790acd","Cargo.toml":"4629bf1256274045a39aedc78a7f6b48b5bf7fdf177cd69c4eb65909586ab0cf","Cargo.toml.orig":"423b6276994f73cf7fc57dafad118ff8b0e207eb55ebe57a0ee1a149bf36f544","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"fdf0f0c197e2999fce42457fb089f192a42d2fb1f743c9c8fcda1a44cb40e1fa","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"3e1cbf0fa728571b9be9769e5a6281c964fa5b26d586265117ccee017ca4022c","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"7cb6e0f8fb91c97f142a9c827687bbbc1a5e7643a3081160025d0365593a596c","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"4ac86fe9e159d454616396a9f3f07ce0f5d99cc4b49898b8d2486e6bdbfed9e9","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"2312491343665d2ab36fd669f14766facbf3c7e9820ffb8f0d623830b676f8f0","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"e145784741473150473b1bef7cc3c2cf0c6339d4fc480113ac41b4247a9b38ec","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"3175066fd7f82390f6226d881e1a1dda9767ea2705656870e0d7774e2731800e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"25f8fd0a88d5673bb872dbb7aef8d44ebbf6c863e10352cd79de557ce3e2e252","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"56ee2333b856db94cc1f1f4350885ad2a4ed0e1b4e8792615aa0b257e2941192","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"e434d3def305ea28108b59841396ef8949333db9223aa11886ee05cd1c0ce8b0","src/macros.rs":"2e7048e266efdef4298254b7186a27736182c94adb0648aed0c8d735f66a5139","src/redox/mod.rs":"029a9af78211d86fe3108100c33f58d6e73ab09c826b641a9732325dc700d8e8","src/redox/net.rs":"0946ab864a2eeb20a365dc541c060f7a238c75356bb57de39956a486607f7ce1","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"4fe7bf5de252dcd712dee0a7a8acfaa7c737c862eaa3ff669255d3f2076c5fa6","src/unix/bsd/apple/mod.rs":"3a423665ca29d73a4a29503f5f58277b7d19cb8df175c5f11666983880ef276f","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1950bf56a7ecbfc8994e4b54dc94e752d91dccd8f0e2d1e4c2d3ad2fa8cb5e23","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"e762bacf0b96295ae241717210323c7442d199d9863159ee73462954fc855e1d","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"d6096edda549bb2af16d083ee86561f5eb6bfa728d3cfac1938f0f84592bde5d","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"a685c1d23cb17758c3249b9c4ab45a50474e79270891235176b5f796f365380c","src/unix/bsd/netbsdlike/netbsd/mod.rs":"46a28912a4741e500f392131cc71273621de0234c4c28e29d8bf51c015ca7840","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"cec53623e2269aea4437554a405452e7d3b09648b7cf6872d257d36ba979e2ec","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"44035aad2907dffb6b18687ac7ddc76b5268af92b4e4f4c87759a00cae4de900","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"ddd834c5c4e5ec7771d0f0071517c2d00095d5595f87a52245380ac762f7f011","src/unix/mod.rs":"47d253eef3bc46dacb0df2951b2136e41c4e758ffd34473b144f6108a90749f9","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"7422845a44de13a2faf15d105670525ed090c6e200c9723178ed735810bbd689","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"c83157cf4a74c653b877c4d42b565d4a7d31e46e32015f19fc91447df2489a58","src/unix/notbsd/emscripten.rs":"5beb9bc98b6b317e85f2935db2aad9ef9cb2ab2e881917064fa7adf944568dae","src/unix/notbsd/linux/mips/mips32.rs":"df3268b082962844c94733c58782ecd9386ffe1f5ed8e05a703a6fa1e80b8f7f","src/unix/notbsd/linux/mips/mips64.rs":"88ad72fa125b9a2c0bd98ef03a7f5ceff78a39b0628d0d0f997ac9b6b82fe16b","src/unix/notbsd/linux/mips/mod.rs":"32c3e7cf430575544bbe4a670cbbf2b4dbe1f28b4895feb6f43fa33d6da25e1d","src/unix/notbsd/linux/mod.rs":"d37bd8bd956b7ab3484b2ad3ee7c1848574bbd37027c76ac06f4d7ca2906cf01","src/unix/notbsd/linux/musl/b32/arm.rs":"d2998b13648696304bb34f0793715d821178baf8e88a45b532764a20b5294232","src/unix/notbsd/linux/musl/b32/mips.rs":"340be794362a4532d709ef23542b10762f710f7bfd0c4fafa5166a3fb9a15b4f","src/unix/notbsd/linux/musl/b32/mod.rs":"3cc7979546258a47df6b0fcd7ad64571826623671857633a7acafe87e05e56a1","src/unix/notbsd/linux/musl/b32/x86.rs":"df114102dcf35bc32f891d4a9e09ce02fbe4c096a196c6b98b10ff87b29dbe4d","src/unix/notbsd/linux/musl/b64/aarch64.rs":"12c590fde2a1450c08934234c4f5bcd94ee7b58ca21f8e93bc930148c15fb0b0","src/unix/notbsd/linux/musl/b64/mod.rs":"b1991ef46a00d2db7ce3e36f6596685c1d508786c4dd4e62cbbf65ac3c256cc0","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"790dca3cc6c0a4166992d2c1665e1b1e320fbad5c0b1ba3c454321a6b2d7a103","src/unix/notbsd/linux/musl/b64/x86_64.rs":"bf8fc10a09bf700084db0381c484ddec3add79aa1726954cb14d21802ff7d199","src/unix/notbsd/linux/musl/mod.rs":"a9323bffa1a8ed40a67a3b2cbb1dec6ebb0d565d8308e43e8623101ac739cd60","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"7d77f1dd8327b1249769496351cf287d0fff3852f87bde2f58afc67e6dc54a4f","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"ed6ea00e3281ad2f4bab82821f20a2ff5b48401a65618bd6a544bc24ea4e3e39","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"9b5e2321c0114c2740dcb86d9f1f3584c07ded921a157164ae8bb0712d397818","src/unix/notbsd/linux/other/b64/powerpc64.rs":"ca25b5f94a9147a984fcb70cf48a261b30df14e2e8194ac174363b6280e82a29","src/unix/notbsd/linux/other/b64/sparc64.rs":"a84580fe226654e33f8ddd0f1f7f2069c29334fc826a74f81f7892b87cfb9083","src/unix/notbsd/linux/other/b64/x32.rs":"ae7698b217106a6c00465f9d10df24d45ad9b7dfc280b24168f53f42198b7b92","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"7065a7e83834f38ee2f4e03f28824eb94111c13f10e7a8b76ee7025686a84e7f","src/unix/notbsd/linux/s390x.rs":"259c5533ba7f0b10bb23d01dc0e53301afd236a7bb4339dcef9472c579503729","src/unix/notbsd/mod.rs":"eff4c19451d4d4579d5c483a941a7b259b7b73c3ab13c31fc54a7961e8292b9a","src/unix/solaris/mod.rs":"9c6af198a2f80da827054784faf70bc404673d9568fb45664b4f73c46245fdbd","src/unix/uclibc/mips/mips32.rs":"4dcb19abae37f02f08660bdad500c3230436322b581eba37287c73a742d6fcdc","src/unix/uclibc/mips/mips64.rs":"e67eec1636a998b047d89a4cda1c99cb6bc3071db017762675179a68201c4438","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"3605127517734b5f5f20be1d37e52184a77ecc6fb6099b88aa744e0aca1b802a","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"69ec3ca821a483cc076e84a794bbecb3e5536af1c1d5b807eaf1db9af11f771d","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"} +\ No newline at end of file ++{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"9750910d5fdc61263fb3eae7f5f78e2920923f250150f8500c0c22a830790acd","Cargo.toml":"4629bf1256274045a39aedc78a7f6b48b5bf7fdf177cd69c4eb65909586ab0cf","Cargo.toml.orig":"423b6276994f73cf7fc57dafad118ff8b0e207eb55ebe57a0ee1a149bf36f544","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"fdf0f0c197e2999fce42457fb089f192a42d2fb1f743c9c8fcda1a44cb40e1fa","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"3e1cbf0fa728571b9be9769e5a6281c964fa5b26d586265117ccee017ca4022c","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"7cb6e0f8fb91c97f142a9c827687bbbc1a5e7643a3081160025d0365593a596c","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"4ac86fe9e159d454616396a9f3f07ce0f5d99cc4b49898b8d2486e6bdbfed9e9","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"2312491343665d2ab36fd669f14766facbf3c7e9820ffb8f0d623830b676f8f0","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"e145784741473150473b1bef7cc3c2cf0c6339d4fc480113ac41b4247a9b38ec","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"3175066fd7f82390f6226d881e1a1dda9767ea2705656870e0d7774e2731800e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"25f8fd0a88d5673bb872dbb7aef8d44ebbf6c863e10352cd79de557ce3e2e252","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"56ee2333b856db94cc1f1f4350885ad2a4ed0e1b4e8792615aa0b257e2941192","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"e434d3def305ea28108b59841396ef8949333db9223aa11886ee05cd1c0ce8b0","src/macros.rs":"2e7048e266efdef4298254b7186a27736182c94adb0648aed0c8d735f66a5139","src/redox/mod.rs":"029a9af78211d86fe3108100c33f58d6e73ab09c826b641a9732325dc700d8e8","src/redox/net.rs":"0946ab864a2eeb20a365dc541c060f7a238c75356bb57de39956a486607f7ce1","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"4fe7bf5de252dcd712dee0a7a8acfaa7c737c862eaa3ff669255d3f2076c5fa6","src/unix/bsd/apple/mod.rs":"3a423665ca29d73a4a29503f5f58277b7d19cb8df175c5f11666983880ef276f","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1950bf56a7ecbfc8994e4b54dc94e752d91dccd8f0e2d1e4c2d3ad2fa8cb5e23","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"e762bacf0b96295ae241717210323c7442d199d9863159ee73462954fc855e1d","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"d6096edda549bb2af16d083ee86561f5eb6bfa728d3cfac1938f0f84592bde5d","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"a685c1d23cb17758c3249b9c4ab45a50474e79270891235176b5f796f365380c","src/unix/bsd/netbsdlike/netbsd/mod.rs":"46a28912a4741e500f392131cc71273621de0234c4c28e29d8bf51c015ca7840","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"cec53623e2269aea4437554a405452e7d3b09648b7cf6872d257d36ba979e2ec","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"44035aad2907dffb6b18687ac7ddc76b5268af92b4e4f4c87759a00cae4de900","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"ddd834c5c4e5ec7771d0f0071517c2d00095d5595f87a52245380ac762f7f011","src/unix/mod.rs":"47d253eef3bc46dacb0df2951b2136e41c4e758ffd34473b144f6108a90749f9","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"7422845a44de13a2faf15d105670525ed090c6e200c9723178ed735810bbd689","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"c83157cf4a74c653b877c4d42b565d4a7d31e46e32015f19fc91447df2489a58","src/unix/notbsd/emscripten.rs":"5beb9bc98b6b317e85f2935db2aad9ef9cb2ab2e881917064fa7adf944568dae","src/unix/notbsd/linux/mips/mips32.rs":"df3268b082962844c94733c58782ecd9386ffe1f5ed8e05a703a6fa1e80b8f7f","src/unix/notbsd/linux/mips/mips64.rs":"88ad72fa125b9a2c0bd98ef03a7f5ceff78a39b0628d0d0f997ac9b6b82fe16b","src/unix/notbsd/linux/mips/mod.rs":"32c3e7cf430575544bbe4a670cbbf2b4dbe1f28b4895feb6f43fa33d6da25e1d","src/unix/notbsd/linux/mod.rs":"d37bd8bd956b7ab3484b2ad3ee7c1848574bbd37027c76ac06f4d7ca2906cf01","src/unix/notbsd/linux/musl/b32/arm.rs":"d2998b13648696304bb34f0793715d821178baf8e88a45b532764a20b5294232","src/unix/notbsd/linux/musl/b32/mips.rs":"340be794362a4532d709ef23542b10762f710f7bfd0c4fafa5166a3fb9a15b4f","src/unix/notbsd/linux/musl/b32/mod.rs":"026476800c0f02be1221b9623632ceb8c4f3c423c5a9024cbe41f5647844cbf8","src/unix/notbsd/linux/musl/b32/x86.rs":"df114102dcf35bc32f891d4a9e09ce02fbe4c096a196c6b98b10ff87b29dbe4d","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4d79d86d11fbb8cb7a74084e410a1140e3c89dfc1842cdfb213f3a0ca93046df","src/unix/notbsd/linux/musl/b64/mod.rs":"caac00326693b372d6805e4dda239475e7fef36368881f372c006264844fda0d","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"24514e41be4b5f5e0ffbe8a25a99dae8989489b607db59e8bfa345f8e65c9963","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"f89154d5225ad8c93d1890d0bbf2855af2ec0e93c2c1b9cbf02f35561c2b7c16","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"7d77f1dd8327b1249769496351cf287d0fff3852f87bde2f58afc67e6dc54a4f","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"ed6ea00e3281ad2f4bab82821f20a2ff5b48401a65618bd6a544bc24ea4e3e39","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"9b5e2321c0114c2740dcb86d9f1f3584c07ded921a157164ae8bb0712d397818","src/unix/notbsd/linux/other/b64/powerpc64.rs":"ca25b5f94a9147a984fcb70cf48a261b30df14e2e8194ac174363b6280e82a29","src/unix/notbsd/linux/other/b64/sparc64.rs":"a84580fe226654e33f8ddd0f1f7f2069c29334fc826a74f81f7892b87cfb9083","src/unix/notbsd/linux/other/b64/x32.rs":"ae7698b217106a6c00465f9d10df24d45ad9b7dfc280b24168f53f42198b7b92","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"7065a7e83834f38ee2f4e03f28824eb94111c13f10e7a8b76ee7025686a84e7f","src/unix/notbsd/linux/s390x.rs":"259c5533ba7f0b10bb23d01dc0e53301afd236a7bb4339dcef9472c579503729","src/unix/notbsd/mod.rs":"eff4c19451d4d4579d5c483a941a7b259b7b73c3ab13c31fc54a7961e8292b9a","src/unix/solaris/mod.rs":"9c6af198a2f80da827054784faf70bc404673d9568fb45664b4f73c46245fdbd","src/unix/uclibc/mips/mips32.rs":"4dcb19abae37f02f08660bdad500c3230436322b581eba37287c73a742d6fcdc","src/unix/uclibc/mips/mips64.rs":"e67eec1636a998b047d89a4cda1c99cb6bc3071db017762675179a68201c4438","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"3605127517734b5f5f20be1d37e52184a77ecc6fb6099b88aa744e0aca1b802a","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"69ec3ca821a483cc076e84a794bbecb3e5536af1c1d5b807eaf1db9af11f771d","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"} +\ No newline at end of file diff --git a/user/rust/0034-rls-atomics.patch b/user/rust/0034-rls-atomics.patch new file mode 100644 index 000000000..61811ef4d --- /dev/null +++ b/user/rust/0034-rls-atomics.patch @@ -0,0 +1,63 @@ +diff --git a/src/tools/rls/src/cmd.rs b/src/tools/rls/src/cmd.rs +index 545a129..8285f99 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; + use crate::server::{self, LsService, Notification, Request, RequestId}; +-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 { + } + + fn next_id() -> RequestId { +- static ID: AtomicU64 = AtomicU64::new(1); +- RequestId::Num(ID.fetch_add(1, Ordering::SeqCst)) ++ static ID: AtomicU32 = AtomicU32::new(1); ++ RequestId::Num(ID.fetch_add(1, Ordering::SeqCst).into()) + } + + // 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 +--- 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}; + + use std::fmt; + use std::io::{self, BufRead, Write}; +-use std::sync::atomic::{AtomicU64, Ordering}; ++use std::sync::atomic::{AtomicU32, Ordering}; + use std::sync::Arc; + + use jsonrpc_core::{self as jsonrpc, response, version, Id}; +@@ -190,14 +190,14 @@ pub trait Output: Sync + Send + Clone + 'static { + /// An output that sends notifications and responses on `stdout`. + #[derive(Clone)] + pub(super) struct StdioOutput { +- next_id: Arc<AtomicU64>, ++ next_id: Arc<AtomicU32>, + } + + impl StdioOutput { + /// Construct a new `stdout` output. + crate fn new() -> StdioOutput { + StdioOutput { +- next_id: Arc::new(AtomicU64::new(1)), ++ next_id: Arc::new(AtomicU32::new(1).into()), + } + } + } +@@ -215,7 +215,7 @@ impl Output for StdioOutput { + } + + fn provide_id(&self) -> RequestId { +- RequestId::Num(self.next_id.fetch_add(1, Ordering::SeqCst)) ++ RequestId::Num(self.next_id.fetch_add(1, Ordering::SeqCst).into()) + } + } + diff --git a/user/rust/APKBUILD b/user/rust/APKBUILD new file mode 100644 index 000000000..a239a96d1 --- /dev/null +++ b/user/rust/APKBUILD @@ -0,0 +1,344 @@ +# Contributor: Jakub Jirutka <jakub@jirutka.cz> +# Contributor: Shiz <hi@shiz.me> +# Contributor: Jeizsm <jeizsm@gmail.com> +# Maintainer: Samuel Holland <samuel@sholland.org> +pkgname=rust +pkgver=1.29.0 +_bootcargover=0.30.0 +_bootver=1.29.0 +_llvmver=6 +pkgrel=0 +pkgdesc="The Rust Programming Language" +url="https://www.rust-lang.org" +arch="all" +license="(Apache-2.0 OR MIT) AND (NCSA OR MIT) AND BSD-2-Clause AND BSD-3-Clause" +depends="$pkgname-stdlib=$pkgver-r$pkgrel gcc musl-dev" +makedepends=" + curl-dev + libgit2-dev + libssh2-dev + llvm$_llvmver-dev + llvm$_llvmver-test-utils + openssl-dev + python3 + zlib-dev + " +subpackages=" + $pkgname-dbg + $pkgname-stdlib + $pkgname-analysis + $pkgname-doc + $pkgname-gdb::noarch + $pkgname-lldb::noarch + $pkgname-src::noarch + cargo + cargo-clippy:_cargo_clippy + cargo-fmt:_cargo_fmt + cargo-doc:_cargo_doc:noarch + cargo-bash-completion:_cargo_bashcomp:noarch + cargo-zsh-completion:_cargo_zshcomp:noarch + rls + rustfmt + " +source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz + https://mirrormaster.adelielinux.org/source/rust/cargo-$_bootcargover-$CBUILD.tar.xz + https://mirrormaster.adelielinux.org/source/rust/rust-std-$_bootver-$CBUILD.tar.xz + https://mirrormaster.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 + 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 + 0012-Add-powerpc-unknown-linux-musl-target.patch + 0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch + 0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch + 0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch + 0018-Add-powerpc64-unknown-linux-musl-target.patch + 0019-run-pass-const-endianness-negate-before-to_le.patch + 0020-Fix-double_check-tests-on-big-endian-targets.patch + 0021-x.py-Use-python3-instead-of-python.patch + 0022-test-debuginfo-Update-for-GDB-output-format-changes.patch + 0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch + 0024-Ignore-broken-and-non-applicable-tests.patch + 0025-Move-debugger-scripts-to-usr-share-rust.patch + 0026-Add-foxkit-target-specs.patch + 0027-Add-foxkit-target-specs-for-OpenSSL.patch + 0028-Link-stage-2-tools-dynamically-to-libstd.patch + 0030-liblibc-linkage.patch + 0031-liblibc-dcff154781e4.patch + 0032-liblibc-90c01fa6b0f4.patch + 0033-liblibc-checksums.patch + 0034-rls-atomics.patch + " +builddir="$srcdir/rustc-$pkgver-src" +_rlibdir="/usr/lib/rustlib/$CTARGET/lib" + +prepare() { + cd "$builddir" + + default_prepare + + $srcdir/cargo-$_bootcargover-$CBUILD/install.sh \ + --destdir=$srcdir/prebuilt \ + --prefix=/ \ + --disable-ldconfig + $srcdir/rust-std-$_bootver-$CBUILD/install.sh \ + --destdir=$srcdir/prebuilt \ + --prefix=/ \ + --disable-ldconfig + $srcdir/rustc-$_bootver-$CBUILD/install.sh \ + --destdir=$srcdir/prebuilt \ + --prefix=/ \ + --disable-ldconfig +} + +build() { + cd "$builddir" + + cat > config.toml <<- EOF + [build] + build = "$CBUILD" + host = [ "$CHOST" ] + target = [ "$CTARGET" ] + cargo = "$srcdir/prebuilt/bin/cargo" + rustc = "$srcdir/prebuilt/bin/rustc" + submodules = false + python = "python3" + locked-deps = true + vendor = true + extended = true + tools = [ "analysis", "cargo", "clippy", "rls", "rustfmt", "src" ] + [install] + prefix = "/usr" + [rust] + codegen-units = 1 + debuginfo = true + debuginfo-lines = true + debuginfo-only-std = false + debuginfo-tools = true + use-jemalloc = false + backtrace = true + channel = "stable" + rpath = false + [target.$CTARGET] + cc = "$CTARGET-gcc" + cxx = "$CTARGET-g++" + linker = "$CTARGET-gcc" + llvm-config = "/usr/lib/llvm$_llvmver/bin/llvm-config" + crt-static = false + EOF + + LIBGIT2_SYS_USE_PKG_CONFIG=1 \ + LLVM_LINK_SHARED=1 \ + RUST_BACKTRACE=1 \ + ./x.py build -j ${JOBS:-2} +} + +check() { + cd "$builddir" + + ./x.py test -j ${JOBS:-2} --no-doc --no-fail-fast \ + src/test/codegen \ + src/test/codegen-units \ + src/test/compile-fail \ + src/test/compile-fail-fulldeps \ + src/test/debuginfo \ + src/test/incremental \ + src/test/incremental-fulldeps \ + src/test/mir-opt \ + src/test/parse-fail \ + src/test/pretty \ + src/test/run-fail \ + src/test/run-fail/pretty \ + src/test/run-fail-fulldeps \ + src/test/run-fail-fulldeps/pretty \ + src/test/run-make \ + src/test/run-make-fulldeps \ + src/test/run-pass \ + src/test/run-pass/pretty \ + src/test/run-pass-fulldeps \ + src/test/run-pass-fulldeps/pretty \ + src/test/ui \ + src/test/ui-fulldeps +} + +package() { + cd "$builddir" + + DESTDIR="$pkgdir" ./x.py install + + rm "$pkgdir"/usr/lib/*.so \ + "$pkgdir"/usr/lib/rustlib/components \ + "$pkgdir"/usr/lib/rustlib/install.log \ + "$pkgdir"/usr/lib/rustlib/manifest-* \ + "$pkgdir"/usr/lib/rustlib/rust-installer-version \ + "$pkgdir"/usr/lib/rustlib/uninstall.sh \ + "$pkgdir"/usr/share/doc/rust/*.old +} + +stdlib() { + pkgdesc="Standard library for Rust" + depends="musl-utils" + + _mv "$pkgdir"$_rlibdir/*.so "$subpkgdir"$_rlibdir + + mkdir -p "$subpkgdir"/etc/ld.so.conf.d + echo "$_rlibdir" > "$subpkgdir"/etc/ld.so.conf.d/$pkgname.conf +} + +analysis() { + pkgdesc="Compiler analysis data for the Rust standard library" + depends="$pkgname=$pkgver-r$pkgrel $pkgname-stdlib=$pkgver-r$pkgrel" + + _mv "$pkgdir"${_rlibdir%/*}/analysis "$subpkgdir"${_rlibdir%/*} +} + +gdb() { + pkgdesc="GDB pretty printers for Rust" + license="Apache-2.0 OR MIT" + depends="$pkgname gdb" + install_if="$pkgname=$pkgver-r$pkgrel gdb" + + _mv "$pkgdir"/usr/bin/rust-gdb "$subpkgdir"/usr/bin + _mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust || true +} + +lldb() { + pkgdesc="LLDB pretty printers for Rust" + license="Apache-2.0 OR MIT" + depends="$pkgname lldb py3-lldb" + install_if="$pkgname=$pkgver-r$pkgrel lldb" + + _mv "$pkgdir"/usr/bin/rust-lldb "$subpkgdir"/usr/bin + _mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust || true +} + +src() { + pkgdesc="$pkgdesc (source code)" + depends="" + + _mv "$pkgdir"/usr/lib/rustlib/src/rust "$subpkgdir"/usr/src + rmdir -p "$pkgdir"/usr/lib/rustlib/src 2>/dev/null || true + + mkdir -p "$subpkgdir"/usr/lib/rustlib/src + ln -s ../../../src/rust "$subpkgdir"/usr/lib/rustlib/src/rust +} + +cargo() { + pkgdesc="The Rust package manager" + depends="$pkgname-stdlib=$pkgver-r$pkgrel $pkgname" + + _mv "$pkgdir"/usr/bin/cargo "$subpkgdir"/usr/bin +} + +_cargo_clippy() { + pkgdesc="A collection of Rust lints (cargo plugin)" + depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo" + + _mv "$pkgdir"/usr/bin/cargo-clippy \ + "$pkgdir"/usr/bin/clippy-driver \ + "$subpkgdir"/usr/bin +} + +_cargo_fmt() { + pkgdesc="Format Rust code (cargo plugin)" + depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo rustfmt" + install_if="cargo=$pkgver-r$pkgrel rustfmt=$pkgver-r$pkgrel" + + _mv "$pkgdir"/usr/bin/cargo-fmt "$subpkgdir"/usr/bin +} + +_cargo_bashcomp() { + pkgdesc="Bash completion for cargo" + license="Apache-2.0 OR MIT" + depends="" + install_if="cargo=$pkgver-r$pkgrel bash-completion" + + _mv "$pkgdir"/etc/bash_completion.d/cargo \ + "$subpkgdir"/usr/share/bash-completion/completions + rmdir -p "$pkgdir"/etc/bash_completion.d 2>/dev/null || true +} + +_cargo_zshcomp() { + pkgdesc="ZSH completion for cargo" + license="Apache-2.0 OR MIT" + depends="" + install_if="cargo=$pkgver-r$pkgrel zsh" + + _mv "$pkgdir"/usr/share/zsh/site-functions/_cargo \ + "$subpkgdir"/usr/share/zsh/site-functions/_cargo + rmdir -p "$pkgdir"/usr/share/zsh/site-functions 2>/dev/null || true +} + +_cargo_doc() { + pkgdesc="The Rust package manager (documentation)" + license="Apache-2.0 OR MIT" + depends="" + install_if="cargo=$pkgver-r$pkgrel docs" + + # XXX: This is hackish! + _mv "$pkgdir"/../$pkgname-doc/usr/share/man/man1/cargo* \ + "$subpkgdir"/usr/share/man/man1 +} + +rls() { + pkgdesc="The Rust language server" + license="Apache-2.0 OR MIT" + depends="$pkgname-stdlib=$pkgver-r$pkgrel" + + _mv "$pkgdir"/usr/bin/rls "$subpkgdir"/usr/bin +} + +rustfmt() { + pkgdesc="Format Rust code" + depends="$pkgname-stdlib=$pkgver-r$pkgrel" + + _mv "$pkgdir"/usr/bin/rustfmt "$subpkgdir"/usr/bin +} + +_mv() { + local dest; for dest; do true; done # get last argument + mkdir -p "$dest" + mv "$@" +} +sha512sums="87f416c76db2967c0ce2b39ee2d2c2fcad875bbe13cfa507f5483e170827c131f3af4400c11785ed836143b2732aaf32bc0291fcd93bbfb96b266a198c926a5b rustc-1.29.0-src.tar.xz +1e67f3b28ca5d6e8ed06df36145abcfeecedb8c8b5370023e7de4a19b850b690efefdd583b42fc484c1167a5c301f6779745c12efb065475acf956d9934cb02b cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz +92f250086aa8cc1528359fbf9e9413bc86857acb6e9f0bb3a045a3a1770dd3a4eda5b499c1cd1946bb9f0937d402b73bf46c7e1de8d419efdd0ffbc278239a81 rust-std-1.29.0-powerpc64-foxkit-linux-musl.tar.xz +1fedd316a05f16947e8288f194cf55b9d9e29667096a50b4f2ecd9c2031e00fbf9a8c14c01968bb047e3f3aac18a036606092749de467b152169eb218360ecbe rustc-1.29.0-powerpc64-foxkit-linux-musl.tar.xz +23540d67f2774f007ffea65e3475b0003193a28503f302dbbf7fa741c0e53dd14d110a3eb88374c2fc1a29b7c8add4c41300fe1c187b2d2ead8e35740cabaaa8 0001-Require-static-native-libraries-when-linking-static-.patch +3e10a597f35470b31da178dad3af956d395f4245470f7c2821a78f1e7411acd8758c13c686a342eb362850a736b2887293203847e38c89f40a61498282d29c69 0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch +d6b293f13dccbe5bdbcc13c2b18e610c271ab49acc0eb5658489388b371431a522f454308af20d2fdb8c68ce99203cfa8455b7c36cc47c8d1f5722b739c3b3fc 0003-Fix-LLVM-build.patch +38f5380a3e7c8454de62ed75e807ad034f1ef3521a88706d3a24d4de09140147ff298c8e36de14d21f0b458d8c1bf82dd8e3924c7dcef0a16d8cd07ff49f06ea 0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch +660283864cbd7a98246c3a6d5634b99032c90fcd98eab6f2477786ab49078505f59f2a88f2b87729850e0b07bef18dd5b93c458e947ae876aac3dca3742dff73 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch +75a7d5f67e315ef69f6c5114b80523858b528c6ef80ec10fba7d1f1afce97e6053670a8a7473c6948931d2f013e77646b7b30635f12f5b5f6dd12a29f6f4925e 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch +7256275df428ea13028731e91dccbba90f7e9f2a611ce9265447831cc60a9284b8d78573da50143b2e7fe4f3f6dc360eddf0be94a01de4b8745d7930144b2365 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch +45c7342c9b901f3d96e293e189773b22e0c7f240e79ffd661e4010f798a6d622304ad16fab22ebb81e92e473c98f93f39505e79dbfb341ec7e29efbcd366594b 0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch +d48b2653265de8e331afe8fb8ec48b3170845d95eb54ea1fad77cc8ac617cab193b3e797c2753794addcb3f3edb5de99ebdd6de1ad31613a08485b4ad9a8878f 0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch +abbefe8cbdb1b0cefe9cecfe5b5fad88b868d838617bf1fc1e0da782844ca9f28fb5edd8052115e9667ff21eca90e768caea1ce6c8bf23981162e1da93a70c59 0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch +e9c4c6d9029029abc806da48ba85fb3ce5ca2aa0dd748012f8cd89620b3a5646b06a3295b1d001c3e651ffebf7a23d16d074c7a146cc585b9347f16b2c147743 0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch +cf5cb5827a836f2fc155ba5f9caf24d2811e143fa178d64c2cd2c6cd0ba8c121dacd657be7a631f1d2532f3bd6f244c371361afddf65f057acf15f0de1d4b8bd 0012-Add-powerpc-unknown-linux-musl-target.patch +9e47df4cd5f9590e526be1617efa6c96b80cc9220f819a0b86a6b48a229786b860fff4c2dc5451f7098aa5f250e35285d65cfa0012c15110eab612d585a1f6d7 0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch +36f07adaef870b90590a7513b1bde0f37793bbd6b773b41bf0cf2b791add51c0c8e22a55b5f8266a04e82f8c60f8a89eb0597cdb23b6f595e787a6a57cd869c0 0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch +63fb44a61ee59e916bbaf78dc95cdb73a77671671db10280e8a8fde08324604f1b2560a648f25b088558c3fd198f855a8056dcb14997c0747f05957c51643aba 0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch +bd16a8c9d79c495677d1d59a5a806a46d807447ef9be85b20fb2d8150775f24a233d00dea4c5a3b505054b299982fe00d64d1a9a9da26c320e804a8f3840e48b 0018-Add-powerpc64-unknown-linux-musl-target.patch +41f272bc925d2800fde0f663d300572ab27d4de275b4802de7adb89c2d6582b1aec3cd456ae2c0d115f1104f9de97489da86df101eefbaead374c5d5b20c95d8 0019-run-pass-const-endianness-negate-before-to_le.patch +e146e9205f22f10fcdd6b8b77ee76a7b2cab0f38368a793cdd15a2dd5b1432c7e9d0ea9ae5cda55ff91edfbea20941fe49836707bb238c84b74ec0330490b4c8 0020-Fix-double_check-tests-on-big-endian-targets.patch +ed4f07e005a9ee7b117c48961c0285cb5a8f1bf5c1480343d617630af56837fb177cf8e5f564b0795ed063ede485d8478a44c7c257511aaa05d4abf4c316d898 0021-x.py-Use-python3-instead-of-python.patch +12e6f6dbeefaeee6190a8ed25336836bec23d92778a2b01921f1191e4ac9fb8259b7b99d6bebe52b9e390eb3b4dca40c61e9498cdc222d5019843ef31b82146e 0022-test-debuginfo-Update-for-GDB-output-format-changes.patch +d9b2234fdc3e2fac9462f0be8ce8988d50573d1149c496ef7b439596303a34e540824a5a6ab23cb15be1a6c1d15d857662d6dae740abd77084375b276b84f4dd 0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch +7cff0eb0f947e009326cbd96dae0d74d1f5fb9fbd1cd62544aa5b52c44fdc8f40094856d44dc5b4d55fd2c35308f37fa64656d614ae16d42d71e59a7a8cdb531 0024-Ignore-broken-and-non-applicable-tests.patch +de5c3b3ca532328957b550cf02cbdc851bacd7740bbdd4512e03d2eb4d916034d2bd026710f2f734d7a31ca67eda3f34e2577a0cd39a4901d0808a1815095064 0025-Move-debugger-scripts-to-usr-share-rust.patch +6a1c997e5e280b9575857d5dca5cff22ea17fc878389bb0d852139bb113fe64082dfd1298958a78e10d4a8faf58358bc8c221516e248c929c399d327559ef030 0026-Add-foxkit-target-specs.patch +6b1723c2e4672e394374419fcc136a851078b4a4c538c7c1d86847e6915c5fb3ddc1f81971ded1a73a3090766d103c3cc79c60b8e39999947be625e0e17e1249 0027-Add-foxkit-target-specs-for-OpenSSL.patch +74618287fe0bdcbedb23b2343e88885496d346c68a6b76109f613c5a13f7e09623ece11cb9c784f1ae6779005c9ec4def0351810718afd80285d1912c0040c9a 0028-Link-stage-2-tools-dynamically-to-libstd.patch +f94abe390798b968bccfba1c908ab5895220ed0d167314b790a9c28b10cac81fb2e3b08760b4e8551ad5a5d02cd052d3d0d647ad8f8634e97f4d3b0470a21c42 0030-liblibc-linkage.patch +48a2ea6beb5f333d646fcc7aa15405d24f52f48e82b8f9cd09737dbfef16df0679246b30a28871595d13414b44c316122e0c969e1ae555b7ab18b692057c0d67 0031-liblibc-dcff154781e4.patch +fcfdd6b2702b8b23d8fd339ceb23b75a6e9814a388f00d226c8101be46a0f29835c77b75ab665e36972fde14364d762816ea2dcf3c1d90dd1e574fb8f6c33c80 0032-liblibc-90c01fa6b0f4.patch +1e1e1f485abd8e3e283aa69b3b5c6f11901d0cc14527834a6490ed70c043512aa207ff4f9ef4bbdef884697120fab59d23ec1faf3b02b3d3d77a060789275cd4 0033-liblibc-checksums.patch +9182408b7a87fc2f01dc12a36440e43a721f7693da00310806f6306e711c04b34d43b6ab348ae523656937f61389adb6a5a2b8ff46dec5424ad20c29652d4edf 0034-rls-atomics.patch" |