This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +29
-13
lines changed Expand file tree Collapse file tree 4 files changed +29
-13
lines changed Original file line number Diff line number Diff line change @@ -56,7 +56,6 @@ run-make/no-builtins-attribute/Makefile
5656run-make/panic-abort-eh_frame/Makefile
5757run-make/pdb-buildinfo-cl-cmd/Makefile
5858run-make/pgo-gen-lto/Makefile
59- run-make/pgo-gen-no-imp-symbols/Makefile
6059run-make/pgo-indirect-call-promotion/Makefile
6160run-make/pointer-auth-link-with-c/Makefile
6261run-make/print-calling-conventions/Makefile
Original file line number Diff line number Diff line change 44// This test checks that the impl_* symbols are preserved as they should.
55// See https://github.com/rust-lang/rust/issues/108030
66
7- //FIXME(Oneirical): try it on more than only-x86_64-unknown-linux-gnu
7+ //@ only-x86_64-unknown-linux-gnu
8+ // Reason: some of the inline assembly directives are architecture-specific.
89
910use run_make_support:: rustc;
1011
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+ }
You can’t perform that action at this time.
0 commit comments