rust/src/test/codegen/pie-relocation-model.rs
Krasimir Georgiev 07e41fb54c update test for LLVM change
LLVM commit c2a3888793
updates the PIC level version selection. This updates the rust tests to
work under both the old and new behaviors.

Detected by our experimental rust + llvm @ HEAD bot:
https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/12829#0182b368-a405-47a2-b3da-9c79cb907bfe/701-709
2022-08-19 15:52:43 +00:00

22 lines
648 B
Rust

// compile-flags: -C relocation-model=pie
// only-x86_64-unknown-linux-gnu
#![crate_type = "rlib"]
// With PIE we know local functions cannot be interpositioned, we can mark them
// as dso_local.
// CHECK: define dso_local i8 @call_foreign_fn()
#[no_mangle]
pub fn call_foreign_fn() -> u8 {
unsafe {
foreign_fn()
}
}
// External functions are still marked as non-dso_local, since we don't know if the symbol
// is defined in the binary or in the shared library.
// CHECK: declare zeroext i8 @foreign_fn()
extern "C" {fn foreign_fn() -> u8;}
// CHECK: !{i32 {{[78]}}, !"PIC Level", i32 2}
// CHECK: !{i32 7, !"PIE Level", i32 2}