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