Skip to content

Commit cce53d3

Browse files
committed
link-arg will be prefixed "-Wl," if flavor.uses_cc and not verbatim
1 parent e24e5af commit cce53d3

File tree

2 files changed

+17
-2
lines changed
  • compiler/rustc_codegen_ssa/src/back
  • tests/run-make/pass-linker-flags

2 files changed

+17
-2
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

+14-1
Original file line numberDiff line numberDiff line change
@@ -2136,6 +2136,7 @@ fn linker_with_args<'a>(
21362136
add_local_native_libraries(
21372137
cmd,
21382138
sess,
2139+
flavor,
21392140
archive_builder_builder,
21402141
codegen_results,
21412142
tmpdir,
@@ -2146,6 +2147,7 @@ fn linker_with_args<'a>(
21462147
add_upstream_rust_crates(
21472148
cmd,
21482149
sess,
2150+
flavor,
21492151
archive_builder_builder,
21502152
codegen_results,
21512153
crate_type,
@@ -2157,6 +2159,7 @@ fn linker_with_args<'a>(
21572159
add_upstream_native_libraries(
21582160
cmd,
21592161
sess,
2162+
flavor,
21602163
archive_builder_builder,
21612164
codegen_results,
21622165
tmpdir,
@@ -2411,6 +2414,7 @@ fn collect_natvis_visualizers(
24112414
fn add_native_libs_from_crate(
24122415
cmd: &mut dyn Linker,
24132416
sess: &Session,
2417+
flavor: LinkerFlavor,
24142418
archive_builder_builder: &dyn ArchiveBuilderBuilder,
24152419
codegen_results: &CodegenResults,
24162420
tmpdir: &Path,
@@ -2522,7 +2526,10 @@ fn add_native_libs_from_crate(
25222526
NativeLibKind::WasmImportModule => {}
25232527
NativeLibKind::LinkArg => {
25242528
if link_static {
2525-
cmd.arg(name);
2529+
let need_wrap = flavor.uses_cc() && !verbatim;
2530+
let wrapped_arg =
2531+
if need_wrap { "-Wl,".to_owned() + name } else { name.to_string() };
2532+
cmd.arg(wrapped_arg);
25262533
}
25272534
}
25282535
}
@@ -2532,6 +2539,7 @@ fn add_native_libs_from_crate(
25322539
fn add_local_native_libraries(
25332540
cmd: &mut dyn Linker,
25342541
sess: &Session,
2542+
flavor: LinkerFlavor,
25352543
archive_builder_builder: &dyn ArchiveBuilderBuilder,
25362544
codegen_results: &CodegenResults,
25372545
tmpdir: &Path,
@@ -2557,6 +2565,7 @@ fn add_local_native_libraries(
25572565
add_native_libs_from_crate(
25582566
cmd,
25592567
sess,
2568+
flavor,
25602569
archive_builder_builder,
25612570
codegen_results,
25622571
tmpdir,
@@ -2572,6 +2581,7 @@ fn add_local_native_libraries(
25722581
fn add_upstream_rust_crates<'a>(
25732582
cmd: &mut dyn Linker,
25742583
sess: &'a Session,
2584+
flavor: LinkerFlavor,
25752585
archive_builder_builder: &dyn ArchiveBuilderBuilder,
25762586
codegen_results: &CodegenResults,
25772587
crate_type: CrateType,
@@ -2646,6 +2656,7 @@ fn add_upstream_rust_crates<'a>(
26462656
add_native_libs_from_crate(
26472657
cmd,
26482658
sess,
2659+
flavor,
26492660
archive_builder_builder,
26502661
codegen_results,
26512662
tmpdir,
@@ -2662,6 +2673,7 @@ fn add_upstream_rust_crates<'a>(
26622673
fn add_upstream_native_libraries(
26632674
cmd: &mut dyn Linker,
26642675
sess: &Session,
2676+
flavor: LinkerFlavor,
26652677
archive_builder_builder: &dyn ArchiveBuilderBuilder,
26662678
codegen_results: &CodegenResults,
26672679
tmpdir: &Path,
@@ -2686,6 +2698,7 @@ fn add_upstream_native_libraries(
26862698
add_native_libs_from_crate(
26872699
cmd,
26882700
sess,
2701+
flavor,
26892702
archive_builder_builder,
26902703
codegen_results,
26912704
tmpdir,
+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
include ../tools.mk
22

33
all:
4-
$(RUSTC) rs.rs -Z unstable-options -l static=l1 -l link-arg=a1 -l static=l2 -l link-arg=a2 -l dylib=d1 -l link-arg=a3 --print link-args | $(CGREP) -e 'l1.*a1.*l2.*a2.*d1.*a3'
4+
$(RUSTC) rs.rs -Z unstable-options -C linker-flavor=gnu-cc -l static=l1 -l link-arg=a1 -l static=l2 -l link-arg=a2 -l dylib=d1 -l link-arg=a3 --print link-args | $(CGREP) -e 'l1.*-Wl,a1.*l2.*-Wl,a2.*d1.*-Wl,a3'
5+
$(RUSTC) rs.rs -Z unstable-options -C linker-flavor=gnu-cc -l static=l1 -l link-arg:+verbatim=a1 -l static=l2 -l link-arg=a2 -l dylib=d1 -l link-arg=a3 --print link-args | $(CGREP) -e 'l1.*"a1".*l2.*-Wl,a2.*d1.*-Wl,a3'
6+
$(RUSTC) rs.rs -Z unstable-options -C linker-flavor=ld -l static=l1 -l link-arg=a1 -l static=l2 -l link-arg=a2 -l dylib=d1 -l link-arg=a3 --print link-args | $(CGREP) -e 'l1.*"a1".*l2.*"a2".*d1.*"a3"'

0 commit comments

Comments
 (0)