From b64aa0b9b3122baa23900d411666d0b1e3c5544d Mon Sep 17 00:00:00 2001 From: Alexander Richardson Date: Tue, 30 Jul 2024 01:39:05 -0700 Subject: [PATCH] arch: Dump semihosting write buffer in debug output (#1389) This makes it easier to debug unexpected semihosting outputs (in my case a wrong buffer argument was being passed). Change-Id: I342610a92fb8efe121d030f7b9ea3307efc4fec3 --- src/arch/generic/semihosting.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/arch/generic/semihosting.cc b/src/arch/generic/semihosting.cc index a68148e40c..543fc88cae 100644 --- a/src/arch/generic/semihosting.cc +++ b/src/arch/generic/semihosting.cc @@ -250,6 +250,7 @@ BaseSemihosting::callWrite0(ThreadContext *tc, InPlaceArg arg) PortProxy &proxy = portProxy(tc); std::string str; proxy.readString(str, arg.addr); + DDUMP(Semihosting, str.data(), str.size()); std::cout.write(str.c_str(), str.size()); std::cout.flush(); @@ -263,8 +264,10 @@ BaseSemihosting::callWrite( if (handle > files.size() || !files[handle]) return RetErrno(size, EBADF); + DPRINTF(Semihosting, "Semihosting SYS_WRITE(%x, %d)\n", addr, size); std::vector buffer(size); portProxy(tc).readBlob(addr, buffer.data(), buffer.size()); + DDUMP(Semihosting, buffer.data(), buffer.size()); int64_t ret = files[handle]->write(buffer.data(), buffer.size()); if (ret < 0) {