// This test makes sure all generic instances get re-exported from Rust dylibs for use by // `-Zshare-generics`. There are two rlibs (`instance_provider_a` and `instance_provider_b`) // which both provide an instance of `Cell::set`. There is `instance_user_dylib` which is // supposed to re-export both these instances, and then there are `instance_user_a_rlib` and // `instance_user_b_rlib` which each rely on a specific instance to be available. // // In the end everything is linked together into `linked_leaf`. If `instance_user_dylib` does // not export both then we'll get an `undefined reference` error for one of the instances. // // This is regression test for https://github.com/rust-lang/rust/issues/67276. use run_make_support::rustc; fn main() { compile("rlib", "instance_provider_a.rs"); compile("rlib", "instance_provider_b.rs"); compile("dylib", "instance_user_dylib.rs"); compile("rlib", "instance_user_a_rlib.rs"); compile("rlib", "instance_user_b_rlib.rs"); compile("bin", "linked_leaf.rs"); } fn compile(crate_type: &str, input: &str) { rustc() .input(input) .crate_type(crate_type) .args(&["-Cprefer-dynamic", "-Zshare-generics=yes", "-Csymbol-mangling-version=v0"]) .codegen_units(1) .run(); }