Rollup merge of #92933 - bjorn3:no_bin_lib_mixing, r=estebank
Deny mixing bin crate type with lib crate types
The produced library would get a main shim too which conflicts with the
main shim of the executable linking the library.
```
$ cat > main1.rs <<EOF
fn main() {}
pub fn bar() {}
EOF
$ cat > main2.rs <<EOF
extern crate main1;
fn main() {
main1::bar();
}
EOF
$ rustc --crate-type bin --crate-type lib main1.rs
$ rustc -L. main2.rs
error: linking with `cc` failed: exit status: 1
[...]
= note: /usr/bin/ld: /tmp/crate_bin_lib/libmain1.rlib(main1.main1.707747aa-cgu.0.rcgu.o): in function `main':
main1.707747aa-cgu.0:(.text.main+0x0): multiple definition of `main'; main2.main2.02a148fe-cgu.0.rcgu.o:main2.02a148fe-cgu.0:(.text.main+0x0): first defined here
collect2: error: ld returned 1 exit status
```
This commit is contained in:
commit
e3ded4fc4f
6 changed files with 12 additions and 21 deletions
|
|
@ -1,6 +0,0 @@
|
|||
-include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) foo.rs
|
||||
$(call RUN,foo)
|
||||
rm $(TMPDIR)/$(call DYLIB_GLOB,foo)
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#![crate_type = "dylib"]
|
||||
#![crate_type = "bin"]
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
-include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) foo-bar.rs
|
||||
$(RUSTC) foo-bar.rs --crate-type bin
|
||||
[ -f $(TMPDIR)/$(call BIN,foo-bar) ]
|
||||
$(RUSTC) foo-bar.rs --crate-type lib
|
||||
[ -f $(TMPDIR)/libfoo_bar.rlib ]
|
||||
|
|
|
|||
|
|
@ -1,4 +1 @@
|
|||
#![crate_type = "lib"]
|
||||
#![crate_type = "bin"]
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue