From aaebeaf023b2eb8eaecbae619afef3b1c40f186a Mon Sep 17 00:00:00 2001 From: Hongyu Liu Date: Tue, 11 Mar 2025 11:52:29 +0100 Subject: [PATCH] changes the io_buf --- src/iss/arch/riscv_hart_common.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/iss/arch/riscv_hart_common.h b/src/iss/arch/riscv_hart_common.h index 079e320..40c46f1 100644 --- a/src/iss/arch/riscv_hart_common.h +++ b/src/iss/arch/riscv_hart_common.h @@ -314,11 +314,16 @@ inline void write_reg_uint32(uint64_t offs, uint32_t& reg, const uint8_t* const } struct riscv_hart_common { riscv_hart_common(){}; - ~riscv_hart_common(){}; + ~riscv_hart_common() { + if(io_buf.str().length()) { + CPPLOG(INFO) << "tohost send '" << io_buf.str() << "'"; + } + }; std::unordered_map symbol_table; uint64_t entry_address{0}; uint64_t tohost = std::numeric_limits::max(); uint64_t fromhost = std::numeric_limits::max(); + std::stringstream io_buf; bool read_elf_file(std::string name, uint8_t expected_elf_class, std::function cb) { @@ -378,7 +383,6 @@ struct riscv_hart_common { return false; }; iss::status execute_sys_write(arch_if* aif, const std::array& loaded_payload, unsigned mem_type) { - std::stringstream io_buf; uint64_t fd = loaded_payload[1]; uint64_t buf_ptr = loaded_payload[2]; uint64_t len = loaded_payload[3]; @@ -389,15 +393,13 @@ struct riscv_hart_common { } // we disregard the fd and just log to stdout for(size_t i = 0; i < len; i++) { - if(buf[i] == '\n') { + if(buf[i] == '\n' || buf[i] == '\0') { CPPLOG(INFO) << "tohost send '" << io_buf.str() << "'"; io_buf.str(""); } else io_buf << buf[i]; } - if(io_buf.str().length()) { - CPPLOG(INFO) << "tohost send '" << io_buf.str() << "'"; - } + // Not sure what the correct return value should be uint8_t ret_val = 1; if(fromhost != std::numeric_limits::max())