diff options
Diffstat (limited to 'tests/run-make/std-core-cycle')
-rw-r--r-- | tests/run-make/std-core-cycle/Makefile | 17 | ||||
-rw-r--r-- | tests/run-make/std-core-cycle/bar.rs | 16 | ||||
-rw-r--r-- | tests/run-make/std-core-cycle/foo.rs | 11 |
3 files changed, 44 insertions, 0 deletions
diff --git a/tests/run-make/std-core-cycle/Makefile b/tests/run-make/std-core-cycle/Makefile new file mode 100644 index 000000000..5ed6be905 --- /dev/null +++ b/tests/run-make/std-core-cycle/Makefile @@ -0,0 +1,17 @@ +# ignore-cross-compile +include ../tools.mk + +ifeq ($(UNAME),Darwin) +FLAGS := +else +ifdef IS_WINDOWS +FLAGS := +else +FLAGS := -C link-args=-Wl,--no-undefined +endif +endif + +all: + $(RUSTC) bar.rs + $(RUSTC) foo.rs $(FLAGS) + $(RUSTC) foo.rs $(FLAGS) -C panic=abort diff --git a/tests/run-make/std-core-cycle/bar.rs b/tests/run-make/std-core-cycle/bar.rs new file mode 100644 index 000000000..9f5e7c29b --- /dev/null +++ b/tests/run-make/std-core-cycle/bar.rs @@ -0,0 +1,16 @@ +#![feature(allocator_api)] +#![crate_type = "rlib"] + +use std::alloc::*; + +pub struct A; + +unsafe impl GlobalAlloc for A { + unsafe fn alloc(&self, _: Layout) -> *mut u8 { + loop {} + } + + unsafe fn dealloc(&self, _ptr: *mut u8, _: Layout) { + loop {} + } +} diff --git a/tests/run-make/std-core-cycle/foo.rs b/tests/run-make/std-core-cycle/foo.rs new file mode 100644 index 000000000..6aa6e1ac3 --- /dev/null +++ b/tests/run-make/std-core-cycle/foo.rs @@ -0,0 +1,11 @@ +#![crate_type = "cdylib"] + +extern crate bar; + +#[global_allocator] +static A: bar::A = bar::A; + +#[no_mangle] +pub extern "C" fn a(a: u32, b: u32) -> u32 { + a / b +} |