Add test to check for fmt::write bloat.
It checks that fmt::write by itself doesn't pull in any panicking or or display code.
This commit is contained in:
parent
ea24395617
commit
1da5780303
2 changed files with 57 additions and 0 deletions
25
src/test/run-make/fmt-write-bloat/Makefile
Normal file
25
src/test/run-make/fmt-write-bloat/Makefile
Normal file
|
@ -0,0 +1,25 @@
|
|||
-include ../../run-make-fulldeps/tools.mk
|
||||
|
||||
# ignore-windows
|
||||
|
||||
ifeq ($(shell $(RUSTC) -vV | grep 'host: $(TARGET)'),)
|
||||
|
||||
# Don't run this test when cross compiling.
|
||||
all:
|
||||
|
||||
else
|
||||
|
||||
NM = nm
|
||||
|
||||
PANIC_SYMS = panic_bounds_check pad_integral Display Debug
|
||||
|
||||
# Allow for debug_assert!() in debug builds of std.
|
||||
ifdef NO_DEBUG_ASSERTIONS
|
||||
PANIC_SYMS += panicking panic_fmt
|
||||
endif
|
||||
|
||||
all: main.rs
|
||||
$(RUSTC) $< -O
|
||||
$(NM) $(call RUN_BINFILE,main) | $(CGREP) -v $(PANIC_SYMS)
|
||||
|
||||
endif
|
32
src/test/run-make/fmt-write-bloat/main.rs
Normal file
32
src/test/run-make/fmt-write-bloat/main.rs
Normal file
|
@ -0,0 +1,32 @@
|
|||
#![feature(lang_items)]
|
||||
#![feature(start)]
|
||||
#![no_std]
|
||||
|
||||
use core::fmt;
|
||||
use core::fmt::Write;
|
||||
|
||||
#[link(name = "c")]
|
||||
extern "C" {}
|
||||
|
||||
struct Dummy;
|
||||
|
||||
impl fmt::Write for Dummy {
|
||||
#[inline(never)]
|
||||
fn write_str(&mut self, _: &str) -> fmt::Result {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[start]
|
||||
fn main(_: isize, _: *const *const u8) -> isize {
|
||||
let _ = writeln!(Dummy, "Hello World");
|
||||
0
|
||||
}
|
||||
|
||||
#[lang = "eh_personality"]
|
||||
fn eh_personality() {}
|
||||
|
||||
#[panic_handler]
|
||||
fn panic(_: &core::panic::PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
Loading…
Add table
Reference in a new issue