diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
commit | 698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch) | |
tree | 173a775858bd501c378080a10dca74132f05bc50 /src/test/run-make/issue-36710 | |
parent | Initial commit. (diff) | |
download | rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip |
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/run-make/issue-36710')
-rw-r--r-- | src/test/run-make/issue-36710/Makefile | 20 | ||||
-rw-r--r-- | src/test/run-make/issue-36710/foo.cpp | 15 | ||||
-rw-r--r-- | src/test/run-make/issue-36710/foo.rs | 10 |
3 files changed, 45 insertions, 0 deletions
diff --git a/src/test/run-make/issue-36710/Makefile b/src/test/run-make/issue-36710/Makefile new file mode 100644 index 000000000..b5270ad2b --- /dev/null +++ b/src/test/run-make/issue-36710/Makefile @@ -0,0 +1,20 @@ +# ignore-riscv64 $(call RUN,foo) expects to run the target executable natively +# so it won't work with remote-test-server +# ignore-arm Another build using remote-test-server +# ignore-none no-std is not supported +# ignore-wasm32 FIXME: don't attempt to compile C++ to WASM +# ignore-wasm64 FIXME: don't attempt to compile C++ to WASM +# ignore-nvptx64-nvidia-cuda FIXME: can't find crate for `std` +# ignore-musl FIXME: this makefile needs teaching how to use a musl toolchain +# (see dist-i586-gnu-i586-i686-musl Dockerfile) + +include ../../run-make-fulldeps/tools.mk + +all: foo + $(call RUN,foo) + +foo: foo.rs $(call NATIVE_STATICLIB,foo) + $(RUSTC) $< -lfoo $(EXTRARSCXXFLAGS) --target $(TARGET) + +$(TMPDIR)/libfoo.o: foo.cpp + $(call COMPILE_OBJ_CXX,$@,$<) diff --git a/src/test/run-make/issue-36710/foo.cpp b/src/test/run-make/issue-36710/foo.cpp new file mode 100644 index 000000000..8f878c2c2 --- /dev/null +++ b/src/test/run-make/issue-36710/foo.cpp @@ -0,0 +1,15 @@ +#include <stdint.h> + +struct A { + A() { v = 1234; } + ~A() { v = 1; } + uint32_t v; +}; + +A a; + +extern "C" { + uint32_t get() { + return a.v; + } +} diff --git a/src/test/run-make/issue-36710/foo.rs b/src/test/run-make/issue-36710/foo.rs new file mode 100644 index 000000000..f30a35e27 --- /dev/null +++ b/src/test/run-make/issue-36710/foo.rs @@ -0,0 +1,10 @@ +// Tests that linking to C++ code with global destructors works. + +extern "C" { + fn get() -> u32; +} + +fn main() { + let i = unsafe { get() }; + assert_eq!(i, 1234); +} |