Add test
This commit is contained in:
parent
66982a383b
commit
8ea28a4132
21
tests/run-make-fulldeps/no-alloc-shim/Makefile
Normal file
21
tests/run-make-fulldeps/no-alloc-shim/Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
include ../tools.mk
|
||||
|
||||
TARGET_LIBDIR = $$($(RUSTC) --print target-libdir)
|
||||
|
||||
all:
|
||||
$(RUSTC) foo.rs --crate-type bin --emit obj -Cpanic=abort
|
||||
ifdef IS_MSVC
|
||||
$(CC) $(CFLAGS) $(TMPDIR)/foo.o $(TARGET_LIBDIR)/liballoc-*.rlib $(TARGET_LIBDIR)/libcore-*.rlib $(TARGET_LIBDIR)/libcompiler_builtins-*.rlib $(call OUT_EXE,foo)
|
||||
$(call OUT_EXE,foo)
|
||||
else
|
||||
$(CC) $(CFLAGS) $(TMPDIR)/foo.o $(TARGET_LIBDIR)/liballoc-*.rlib $(TARGET_LIBDIR)/libcore-*.rlib $(TARGET_LIBDIR)/libcompiler_builtins-*.rlib -o $(call RUN_BINFILE,foo)
|
||||
$(call RUN_BINFILE,foo)
|
||||
endif
|
||||
|
||||
# Check that linking without __rust_no_alloc_shim_is_unstable defined fails
|
||||
$(RUSTC) foo.rs --crate-type bin --emit obj -Cpanic=abort --cfg check_feature_gate
|
||||
ifdef IS_MSVC
|
||||
$(CC) $(CFLAGS) $(TMPDIR)/foo.o $(TARGET_LIBDIR)/liballoc-*.rlib $(TARGET_LIBDIR)/libcore-*.rlib $(TARGET_LIBDIR)/libcompiler_builtins-*.rlib $(call OUT_EXE,foo) || exit 0 && exit 1
|
||||
else
|
||||
$(CC) $(CFLAGS) $(TMPDIR)/foo.o $(TARGET_LIBDIR)/liballoc-*.rlib $(TARGET_LIBDIR)/libcore-*.rlib $(TARGET_LIBDIR)/libcompiler_builtins-*.rlib -o $(call RUN_BINFILE,foo) || exit 0 && exit 1
|
||||
endif
|
44
tests/run-make-fulldeps/no-alloc-shim/foo.rs
Normal file
44
tests/run-make-fulldeps/no-alloc-shim/foo.rs
Normal file
@ -0,0 +1,44 @@
|
||||
#![feature(default_alloc_error_handler)]
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
|
||||
extern crate alloc;
|
||||
|
||||
use alloc::alloc::{GlobalAlloc, Layout};
|
||||
|
||||
#[panic_handler]
|
||||
fn panic_handler(_: &core::panic::PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn rust_eh_personality() {
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[global_allocator]
|
||||
static ALLOC: Alloc = Alloc;
|
||||
|
||||
struct Alloc;
|
||||
|
||||
unsafe impl GlobalAlloc for Alloc {
|
||||
unsafe fn alloc(&self, _: Layout) -> *mut u8 {
|
||||
core::ptr::null_mut()
|
||||
}
|
||||
unsafe fn dealloc(&self, _: *mut u8, _: Layout) {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(check_feature_gate))]
|
||||
#[no_mangle]
|
||||
static __rust_no_alloc_shim_is_unstable: u8 = 0;
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn main(_argc: usize, _argv: *const *const i8) -> i32 {
|
||||
unsafe {
|
||||
assert_eq!(alloc::alloc::alloc(Layout::new::<()>()), core::ptr::null_mut());
|
||||
}
|
||||
|
||||
0
|
||||
}
|
Loading…
Reference in New Issue
Block a user