Add a test for #108030
Closes #108030. This issue has been resolved in LLVM 17.
This commit is contained in:
parent
55e5c9d705
commit
b99ace4179
9
tests/run-make/lto-linkage-used-attr/Makefile
Normal file
9
tests/run-make/lto-linkage-used-attr/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
include ../tools.mk
|
||||
|
||||
# Verify that the impl_* symbols are preserved. #108030
|
||||
# only-x86_64-unknown-linux-gnu
|
||||
# min-llvm-version: 17
|
||||
|
||||
all:
|
||||
$(RUSTC) -Cdebuginfo=0 -Copt-level=3 lib.rs
|
||||
$(RUSTC) -Clto=fat -Cdebuginfo=0 -Copt-level=3 main.rs
|
50
tests/run-make/lto-linkage-used-attr/lib.rs
Normal file
50
tests/run-make/lto-linkage-used-attr/lib.rs
Normal file
@ -0,0 +1,50 @@
|
||||
#![crate_type = "rlib"]
|
||||
#![crate_type = "cdylib"]
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! asm_func {
|
||||
($name:expr, $body:expr $(, $($args:tt)*)?) => {
|
||||
core::arch::global_asm!(
|
||||
concat!(
|
||||
".p2align 4\n",
|
||||
".hidden ", $name, "\n",
|
||||
".global ", $name, "\n",
|
||||
".type ", $name, ",@function\n",
|
||||
$name, ":\n",
|
||||
$body,
|
||||
".size ", $name, ",.-", $name,
|
||||
)
|
||||
$(, $($args)*)?
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! libcall_trampoline {
|
||||
($libcall:ident ; $libcall_impl:ident) => {
|
||||
asm_func!(
|
||||
stringify!($libcall),
|
||||
concat!(
|
||||
"
|
||||
.cfi_startproc simple
|
||||
.cfi_def_cfa_offset 0
|
||||
jmp {}
|
||||
.cfi_endproc
|
||||
",
|
||||
),
|
||||
sym $libcall_impl
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
pub mod trampolines {
|
||||
extern "C" {
|
||||
pub fn table_fill_funcref();
|
||||
pub fn table_fill_externref();
|
||||
}
|
||||
|
||||
unsafe extern "C" fn impl_table_fill_funcref() {}
|
||||
unsafe extern "C" fn impl_table_fill_externref() {}
|
||||
|
||||
libcall_trampoline!(table_fill_funcref ; impl_table_fill_funcref);
|
||||
libcall_trampoline!(table_fill_externref ; impl_table_fill_externref);
|
||||
}
|
10
tests/run-make/lto-linkage-used-attr/main.rs
Normal file
10
tests/run-make/lto-linkage-used-attr/main.rs
Normal file
@ -0,0 +1,10 @@
|
||||
extern crate lib;
|
||||
|
||||
use lib::trampolines::*;
|
||||
|
||||
fn main() {
|
||||
unsafe {
|
||||
table_fill_externref();
|
||||
table_fill_funcref();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user