Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
belovdv committed Sep 19, 2022
1 parent 6515270 commit f55797c
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 36 deletions.
18 changes: 12 additions & 6 deletions compiler/rustc_codegen_ssa/src/back/linker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,10 @@ impl<'a> Linker for GccLinker<'a> {
}
}
self.hint_dynamic();
self.cmd.arg(format!("-l{}{}", if verbatim { ":" } else { "" }, lib));
self.cmd.arg(format!(
"-l{}{lib}",
if verbatim && self.sess.target.linker_is_gnu { ":" } else { "" },
));
if !as_needed {
if self.sess.target.is_like_osx {
// See above FIXME comment
Expand All @@ -450,7 +453,10 @@ impl<'a> Linker for GccLinker<'a> {
}
fn link_staticlib(&mut self, lib: &str, verbatim: bool) {
self.hint_static();
self.cmd.arg(format!("-l{}{}", if verbatim { ":" } else { "" }, lib));
self.cmd.arg(format!(
"-l{}{lib}",
if verbatim && self.sess.target.linker_is_gnu { ":" } else { "" },
));
}
fn link_rlib(&mut self, lib: &Path) {
self.hint_static();
Expand Down Expand Up @@ -504,10 +510,10 @@ impl<'a> Linker for GccLinker<'a> {
self.hint_static();
let target = &self.sess.target;
if !target.is_like_osx {
self.linker_arg("--whole-archive").cmd.arg(format!(
"-l{}{}",
if verbatim { ":" } else { "" },
lib
self.linker_arg("--whole-archive");
self.cmd.arg(format!(
"-l{}{lib}",
if verbatim && self.sess.target.linker_is_gnu { ":" } else { "" },
));
self.linker_arg("--no-whole-archive");
} else {
Expand Down
15 changes: 15 additions & 0 deletions src/test/run-make/native-link-modifier-verbatim-linker/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ignore-cross-compile
# ignore-macos

include ../../run-make-fulldeps/tools.mk

all:
# Verbatim allows specify precise name.
$(RUSTC) local_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/local_some_strange_name.ext
$(RUSTC) main.rs -Zunstable-options -l static:+verbatim=local_some_strange_name.ext

# With verbatim any other name cannot be used (local).
$(RUSTC) local_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/liblocal_native_dep.a
$(RUSTC) local_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/local_native_dep.a
$(RUSTC) local_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/local_native_dep.lib
$(RUSTC) main.rs -Zunstable-options -l static:+verbatim=local_native_dep 2>&1 | $(CGREP) "local_native_dep"
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
extern crate rust_dep;

extern "C" {
fn local_native_f() -> i32;
}
Expand All @@ -8,5 +6,4 @@ pub fn main() {
unsafe {
assert!(local_native_f() == 0);
};
rust_dep::rust_dep()
}
12 changes: 12 additions & 0 deletions src/test/run-make/native-link-modifier-verbatim-rustc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
include ../../run-make-fulldeps/tools.mk

all:
# Verbatim allows specify precise name.
$(RUSTC) upstream_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/upstream_some_strange_name.ext
$(RUSTC) rust_dep.rs -Zunstable-options -l static:+verbatim=upstream_some_strange_name.ext --crate-type rlib

# With verbatim any other name cannot be used (upstream).
$(RUSTC) upstream_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/libupstream_native_dep.a
$(RUSTC) upstream_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/upstream_native_dep.a
$(RUSTC) upstream_native_dep.rs --crate-type=staticlib -o $(TMPDIR)/upstream_native_dep.lib
$(RUSTC) rust_dep.rs -Zunstable-options -l static:+verbatim=upstream_native_dep --crate-type rlib 2>&1 | $(CGREP) "upstream_native_dep"
27 changes: 0 additions & 27 deletions src/test/run-make/native-link-modifier-verbatim/Makefile

This file was deleted.

0 comments on commit f55797c

Please sign in to comment.