summaryrefslogtreecommitdiff
path: root/user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2024-07-24 21:23:49 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2024-08-22 13:01:46 -0500
commite3f11175a217206e30c652ff1fb696715edb6708 (patch)
tree6bd39e7d3e19ccef3ddcf7351e1f69cd5b77391a /user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch
parente44842c7c4a2047159efaa31e3bc6f9614ee3938 (diff)
downloadpackages-e3f11175a217206e30c652ff1fb696715edb6708.tar.gz
packages-e3f11175a217206e30c652ff1fb696715edb6708.tar.bz2
packages-e3f11175a217206e30c652ff1fb696715edb6708.tar.xz
packages-e3f11175a217206e30c652ff1fb696715edb6708.zip
user/rust: rename to bootstrap/rust-1.60
Diffstat (limited to 'user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch')
-rw-r--r--user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch70
1 files changed, 0 insertions, 70 deletions
diff --git a/user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch b/user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch
deleted file mode 100644
index 0682ec78d..000000000
--- a/user/rust/0004-Use-static-native-libraries-when-linking-static-exec.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 53c4a9c8ab26e10d1790b5a85fa26058f4252e2d Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 8 Sep 2017 00:05:18 -0500
-Subject: [PATCH 04/14] Use static native libraries when linking static
- executables
-
-On ELF targets like Linux, 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.
----
- compiler/rustc_codegen_ssa/src/back/link.rs | 20 ++++++++++++++++----
- 1 file changed, 16 insertions(+), 4 deletions(-)
-
-diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
-index 58e0667d678..93d8a6e8680 100644
---- a/compiler/rustc_codegen_ssa/src/back/link.rs
-+++ b/compiler/rustc_codegen_ssa/src/back/link.rs
-@@ -1833,7 +1833,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>(
- // external build system already has the native dependencies defined, and it
- // will provide them to the linker itself.
- if sess.opts.debugging_opts.link_native_libraries {
-- add_upstream_native_libraries(cmd, sess, codegen_results);
-+ add_upstream_native_libraries(cmd, sess, codegen_results, crate_type);
- }
-
- // Library linking above uses some global state for things like `-Bstatic`/`-Bdynamic` to make
-@@ -2359,8 +2359,7 @@ fn add_dynamic_crate(cmd: &mut dyn Linker, sess: &Session, cratepath: &Path) {
- }
- }
-
--/// Link in all of our upstream crates' native dependencies. Remember that all of these upstream
--/// native dependencies are all non-static dependencies. We've got two cases then:
-+/// Link in all of our upstream crates' native dependencies. We have two cases:
- ///
- /// 1. The upstream crate is an rlib. In this case we *must* link in the native dependency because
- /// the rlib is just an archive.
-@@ -2378,6 +2377,7 @@ fn add_upstream_native_libraries(
- cmd: &mut dyn Linker,
- sess: &Session,
- codegen_results: &CodegenResults,
-+ crate_type: CrateType,
- ) {
- let mut last = (NativeLibKind::Unspecified, None);
- for &cnum in &codegen_results.crate_info.used_crates {
-@@ -2398,7 +2398,19 @@ fn add_upstream_native_libraries(
- NativeLibKind::Dylib { as_needed } => {
- cmd.link_dylib(name, verbatim, as_needed.unwrap_or(true))
- }
-- NativeLibKind::Unspecified => cmd.link_dylib(name, verbatim, true),
-+ NativeLibKind::Unspecified => {
-+ // On some targets, like Linux, linking a static executable inhibits using
-+ // dylibs at all. Force native libraries to be static, even if for example
-+ // an upstream rlib was originally linked against a native shared library.
-+ if crate_type == config::CrateType::Executable
-+ && sess.crt_static(Some(crate_type))
-+ && !sess.target.options.crt_static_allows_dylibs
-+ {
-+ cmd.link_staticlib(name, verbatim)
-+ } else {
-+ cmd.link_dylib(name, verbatim, true)
-+ }
-+ },
- NativeLibKind::Framework { as_needed } => {
- cmd.link_framework(name, as_needed.unwrap_or(true))
- }
---
-2.35.1
-