diff options
| author | bors <bors@rust-lang.org> | 2021-08-09 03:59:30 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-08-09 03:59:30 +0000 |
| commit | 7b52ad00cb492f65855014b2aab9f2abe9be3324 (patch) | |
| tree | 419c7b35a8898f80f4a3ae488f72fb9983f66970 /compiler/rustc_metadata/src | |
| parent | d3928b183db1023c023f8afb4f5dfbee34994051 (diff) | |
| parent | d935a14f4c766bf3014ad5ab0c55ad087c799adb (diff) | |
| download | rust-7b52ad00cb492f65855014b2aab9f2abe9be3324.tar.gz rust-7b52ad00cb492f65855014b2aab9f2abe9be3324.zip | |
Auto merge of #87619 - 12101111:fix-native_link_modifiers_bundle, r=petrochenkov
Fix feature gate checking of static-nobundle and native_link_modifiers Feature native_link_modifiers_bundle don't need feature static-nobundle to work. Also check the feature gates when using native_link_modifiers from command line options. Current nighly compiler don't check those feature gate. ``` > touch lib.rs > rustc +nightly lib.rs -L /usr/lib -l static:+bundle=dl --crate-type=rlib > rustc +nightly lib.rs -L /usr/lib -l dylib:+as-needed=dl --crate-type=dylib -Ctarget-feature=-crt-static > rustc +nightly lib.rs -L /usr/lib -l static:-bundle=dl --crate-type=rlib error[E0658]: kind="static-nobundle" is unstable | = note: see issue #37403 <https://github.com/rust-lang/rust/issues/37403> for more information = help: add `#![feature(static_nobundle)]` to the crate attributes to enable error: aborting due to previous error For more information about this error, try `rustc --explain E0658`. ``` First found this in https://github.com/rust-lang/rust/pull/85600#discussion_r676612655
Diffstat (limited to 'compiler/rustc_metadata/src')
| -rw-r--r-- | compiler/rustc_metadata/src/native_libs.rs | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/compiler/rustc_metadata/src/native_libs.rs b/compiler/rustc_metadata/src/native_libs.rs index 16b4d26b37b..804b86cd864 100644 --- a/compiler/rustc_metadata/src/native_libs.rs +++ b/compiler/rustc_metadata/src/native_libs.rs @@ -77,6 +77,15 @@ impl ItemLikeVisitor<'tcx> for Collector<'tcx> { modifier `-bundle` with library kind `static`", ) .emit(); + if !self.tcx.features().static_nobundle { + feature_err( + &self.tcx.sess.parse_sess, + sym::static_nobundle, + item.span(), + "kind=\"static-nobundle\" is unstable", + ) + .emit(); + } NativeLibKind::Static { bundle: Some(false), whole_archive: None } } "dylib" => NativeLibKind::Dylib { as_needed: None }, @@ -252,17 +261,6 @@ impl Collector<'tcx> { ) .emit(); } - if matches!(lib.kind, NativeLibKind::Static { bundle: Some(false), .. }) - && !self.tcx.features().static_nobundle - { - feature_err( - &self.tcx.sess.parse_sess, - sym::static_nobundle, - span.unwrap_or(rustc_span::DUMMY_SP), - "kind=\"static-nobundle\" is unstable", - ) - .emit(); - } // this just unwraps lib.name; we already established that it isn't empty above. if let (NativeLibKind::RawDylib, Some(lib_name)) = (lib.kind, lib.name) { let span = match span { |
