Rollup merge of #97328 - petrochenkov:nativice, r=michaelwoerister

rustc: Fix ICE in native library error reporting

Fixes https://github.com/rust-lang/rust/issues/97299
This commit is contained in:
Dylan DPC 2022-05-25 17:37:20 +02:00 committed by GitHub
commit 006707834f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 4 deletions

View file

@ -418,10 +418,11 @@ impl<'tcx> Collector<'tcx> {
// involved or not, library reordering and kind overriding without
// explicit `:rename` in particular.
if lib.has_modifiers() || passed_lib.has_modifiers() {
self.tcx.sess.span_err(
self.tcx.def_span(lib.foreign_module.unwrap()),
"overriding linking modifiers from command line is not supported"
);
let msg = "overriding linking modifiers from command line is not supported";
match lib.foreign_module {
Some(def_id) => self.tcx.sess.span_err(self.tcx.def_span(def_id), msg),
None => self.tcx.sess.err(msg),
};
}
if passed_lib.kind != NativeLibKind::Unspecified {
lib.kind = passed_lib.kind;

View file

@ -0,0 +1,7 @@
// Regression test for issue #97299, one command line library with modifiers
// overrides another command line library with modifiers.
// compile-flags:-lstatic:+whole-archive=foo -lstatic:+whole-archive=foo
// error-pattern: overriding linking modifiers from command line is not supported
fn main() {}

View file

@ -0,0 +1,4 @@
error: overriding linking modifiers from command line is not supported
error: aborting due to previous error