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:
Mara Bos 2020-10-20 20:20:31 +02:00
parent ea24395617
commit 1da5780303
2 changed files with 57 additions and 0 deletions

View 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

View 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 {}
}