7 files changed +64
-33
lines changed Original file line number Diff line number Diff line change @@ -47,18 +47,15 @@ run-make/link-cfg/Makefile
47
47
run-make/link-framework/Makefile
48
48
run-make/long-linker-command-lines-cmd-exe/Makefile
49
49
run-make/long-linker-command-lines/Makefile
50
- run-make/lto-linkage-used-attr/Makefile
51
50
run-make/macos-deployment-target/Makefile
52
51
run-make/min-global-align/Makefile
53
52
run-make/native-link-modifier-bundle/Makefile
54
53
run-make/native-link-modifier-whole-archive/Makefile
55
54
run-make/no-alloc-shim/Makefile
56
55
run-make/no-builtins-attribute/Makefile
57
- run-make/no-duplicate-libs/Makefile
58
56
run-make/panic-abort-eh_frame/Makefile
59
57
run-make/pdb-buildinfo-cl-cmd/Makefile
60
58
run-make/pgo-gen-lto/Makefile
61
- run-make/pgo-gen-no-imp-symbols/Makefile
62
59
run-make/pgo-indirect-call-promotion/Makefile
63
60
run-make/pointer-auth-link-with-c/Makefile
64
61
run-make/print-calling-conventions/Makefile
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ // Link time optimizations (LTO) used to snip away some important symbols
2
+ // when setting optimization level to 3 or higher.
3
+ // This is an LLVM, not a rustc bug, fixed here: https://reviews.llvm.org/D145293
4
+ // This test checks that the impl_* symbols are preserved as they should.
5
+ // See https://github.com/rust-lang/rust/issues/108030
6
+
7
+ //@ only-x86_64-unknown-linux-gnu
8
+ // Reason: some of the inline assembly directives are architecture-specific.
9
+
10
+ use run_make_support:: rustc;
11
+
12
+ fn main ( ) {
13
+ rustc ( ) . arg ( "-Cdebuginfo=0" ) . opt_level ( "3" ) . input ( "lib.rs" ) . run ( ) ;
14
+ rustc ( ) . arg ( "-Clto=fat" ) . arg ( "-Cdebuginfo=0" ) . opt_level ( "3" ) . input ( "main.rs" ) . run ( ) ;
15
+ }
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ // The rust compiler used to try to detect duplicated libraries in
2
+ // the linking order and remove the duplicates... but certain edge cases,
3
+ // such as the one presented in `foo` and `bar` in this test, demand precise
4
+ // control over the link order, including duplicates. As the anti-duplication
5
+ // filter was removed, this test should now successfully see main be compiled
6
+ // and executed.
7
+ // See https://github.com/rust-lang/rust/pull/12688
8
+
9
+ //@ ignore-cross-compile
10
+ // Reason: the compiled binary is executed
11
+
12
+ //@ ignore-msvc
13
+ // Reason: native compilation results in an unresolved external symbol
14
+
15
+ use run_make_support:: { build_native_static_lib, run, rustc} ;
16
+
17
+ fn main ( ) {
18
+ build_native_static_lib ( "foo" ) ;
19
+ build_native_static_lib ( "bar" ) ;
20
+ rustc ( ) . input ( "main.rs" ) . run ( ) ;
21
+ run ( "main" ) ;
22
+ }
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ // LLVM's profiling instrumentation adds a few symbols that are used by the profiler runtime.
2
+ // Since these show up as globals in the LLVM IR, the compiler generates dllimport-related
3
+ // __imp_ stubs for them. This can lead to linker errors because the instrumentation
4
+ // symbols have weak linkage or are in a comdat section, but the __imp_ stubs aren't.
5
+ // Since profiler-related symbols were excluded from stub-generation in #59812, this has
6
+ // been fixed, and this test checks that the llvm profile symbol appear, but without the
7
+ // anomalous __imp_ stubs.
8
+ // See https://github.com/rust-lang/rust/pull/59812
9
+
10
+ use run_make_support:: { cwd, rfs, rustc} ;
11
+
12
+ fn main ( ) {
13
+ rustc ( )
14
+ . input ( "test.rs" )
15
+ . emit ( "llvm-ir" )
16
+ . opt ( )
17
+ . codegen_units ( 1 )
18
+ . profile_generate ( cwd ( ) )
19
+ . arg ( "-Zno-profiler-runtime" )
20
+ . run ( ) ;
21
+ let out = rfs:: read_to_string ( "test.ll" ) ;
22
+ // We expect symbols starting with "__llvm_profile_".
23
+ assert ! ( out. contains( "__llvm_profile_" ) ) ;
24
+ // We do NOT expect the "__imp_" version of these symbols.
25
+ assert ! ( !out. contains( "__imp___llvm_profile_" ) ) ; // 64 bit
26
+ assert ! ( !out. contains( "__imp____llvm_profile_" ) ) ; // 32 bit
27
+ }
0 commit comments