From 93c53657c2289e979672ee6c4612af7e9eac109c Mon Sep 17 00:00:00 2001 From: iximeow Date: Sat, 13 Mar 2021 14:19:55 -0800 Subject: split ffi crate to support distinct 16, 32, and 64-bit builds initial work to optionally discard any instruction printing support when using `-Z build-std` to fully remove .eh_frame, a stripped long_mode_no_fmt .so is 61kb! --- ffi/src/write_sink.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 ffi/src/write_sink.rs (limited to 'ffi/src/write_sink.rs') diff --git a/ffi/src/write_sink.rs b/ffi/src/write_sink.rs new file mode 100644 index 0000000..b188498 --- /dev/null +++ b/ffi/src/write_sink.rs @@ -0,0 +1,20 @@ +pub struct InstructionSink<'buf> { + pub buf: &'buf mut [u8], + pub offs: usize, +} + +impl<'a> core::fmt::Write for InstructionSink<'a> { + fn write_str(&mut self, s: &str) -> core::fmt::Result { + for b in s.bytes() { + if self.offs < self.buf.len() { + self.buf[self.offs] = b; + self.offs += 1; + } else { + break; + } + } + + Ok(()) + } +} + -- cgit v1.1