Skip to content

Commit

Permalink
Add test to check for fmt::write bloat.
Browse files Browse the repository at this point in the history
It checks that fmt::write by itself doesn't pull in any panicking or
or display code.
  • Loading branch information
m-ou-se committed Nov 29, 2020
1 parent ea24395 commit 1da5780
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/test/run-make/fmt-write-bloat/Makefile
Original file line number Diff line number Diff line change
@@ -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 changes: 32 additions & 0 deletions src/test/run-make/fmt-write-bloat/main.rs
Original file line number Diff line number Diff line change
@@ -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 {}
}

0 comments on commit 1da5780

Please sign in to comment.