Use -m option instead of looking for a cross-compiling version of dlltool

This commit is contained in:
Daniel Paoliello 2023-02-22 09:58:47 -08:00
parent 439292bc79
commit a90f342b03
9 changed files with 87 additions and 14 deletions

View file

@ -0,0 +1,22 @@
# Tests that raw-dylib cross compilation works correctly
# only-gnu
# needs-i686-dlltool
# needs-x86_64-dlltool
# i686 dlltool.exe can't product x64 binaries.
# ignore-i686-pc-windows-gnu
include ../../run-make-fulldeps/tools.mk
all:
# Build as x86 and make sure that we have x86 objects only.
$(RUSTC) --crate-type lib --crate-name i686_raw_dylib_test --target i686-pc-windows-gnu lib.rs
"$(LLVM_BIN_DIR)"/llvm-objdump -a $(TMPDIR)/libi686_raw_dylib_test.rlib > $(TMPDIR)/i686.objdump.txt
$(CGREP) "file format coff-i386" < $(TMPDIR)/i686.objdump.txt
$(CGREP) -v "file format coff-x86-64" < $(TMPDIR)/i686.objdump.txt
# Build as x64 and make sure that we have x64 objects only.
$(RUSTC) --crate-type lib --crate-name x64_raw_dylib_test --target x86_64-pc-windows-gnu lib.rs
"$(LLVM_BIN_DIR)"/llvm-objdump -a $(TMPDIR)/libx64_raw_dylib_test.rlib > $(TMPDIR)/x64.objdump.txt
$(CGREP) "file format coff-x86-64" < $(TMPDIR)/x64.objdump.txt
$(CGREP) -v "file format coff-i386" < $(TMPDIR)/x64.objdump.txt

View file

@ -0,0 +1,20 @@
#![feature(raw_dylib)]
#![feature(no_core, lang_items)]
#![no_std]
#![no_core]
#![crate_type = "lib"]
// This is needed because of #![no_core]:
#[lang = "sized"]
trait Sized {}
#[link(name = "extern_1", kind = "raw-dylib")]
extern {
fn extern_fn();
}
pub fn extern_fn_caller() {
unsafe {
extern_fn();
}
}