Message ID | 20220607204557.658541-53-richard.henderson@linaro.org |
---|---|
State | Accepted |
Commit | 2d010c2719da360d44a5c44d279d49eca21c5de8 |
Headers | show |
Series | semihosting cleanup | expand |
On 13:45 Tue 07 Jun , Richard Henderson wrote: > This function has been replaced by *_write. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Luc Michel <lmichel@kalray.eu> > --- > include/semihosting/console.h | 13 ---------- > linux-user/semihost.c | 17 ------------ > semihosting/console.c | 49 ----------------------------------- > 3 files changed, 79 deletions(-) > > diff --git a/include/semihosting/console.h b/include/semihosting/console.h > index d6c1cc58ab..20c31d89d4 100644 > --- a/include/semihosting/console.h > +++ b/include/semihosting/console.h > @@ -11,19 +11,6 @@ > > #include "cpu.h" > > -/** > - * qemu_semihosting_console_outs: > - * @env: CPUArchState > - * @s: host address of null terminated guest string > - * > - * Send a null terminated guest string to the debug console. This may > - * be the remote gdb session if a softmmu guest is currently being > - * debugged. > - * > - * Returns: number of bytes written. > - */ > -int qemu_semihosting_console_outs(CPUArchState *env, target_ulong s); > - > /** > * qemu_semihosting_console_read: > * @cs: CPUState > diff --git a/linux-user/semihost.c b/linux-user/semihost.c > index f8bc8889f3..cee62a365c 100644 > --- a/linux-user/semihost.c > +++ b/linux-user/semihost.c > @@ -16,23 +16,6 @@ > #include "user-internals.h" > #include <termios.h> > > -int qemu_semihosting_console_outs(CPUArchState *env, target_ulong addr) > -{ > - int len = target_strlen(addr); > - void *s; > - if (len < 0){ > - qemu_log_mask(LOG_GUEST_ERROR, > - "%s: passed inaccessible address " TARGET_FMT_lx, > - __func__, addr); > - return 0; > - } > - s = lock_user(VERIFY_READ, addr, (long)(len + 1), 1); > - g_assert(s); /* target_strlen has already verified this will work */ > - len = write(STDERR_FILENO, s, len); > - unlock_user(s, addr, 0); > - return len; > -} > - > /* > * For linux-user we can safely block. However as we want to return as > * soon as a character is read we need to tweak the termio to disable > diff --git a/semihosting/console.c b/semihosting/console.c > index f6fab5933a..c84ab97ab6 100644 > --- a/semihosting/console.c > +++ b/semihosting/console.c > @@ -47,55 +47,6 @@ int qemu_semihosting_log_out(const char *s, int len) > } > } > > -/* > - * A re-implementation of lock_user_string that we can use locally > - * instead of relying on softmmu-semi. Hopefully we can deprecate that > - * in time. Copy string until we find a 0 or address error. > - */ > -static GString *copy_user_string(CPUArchState *env, target_ulong addr) > -{ > - CPUState *cpu = env_cpu(env); > - GString *s = g_string_sized_new(128); > - uint8_t c; > - > - do { > - if (cpu_memory_rw_debug(cpu, addr++, &c, 1, 0) == 0) { > - if (c) { > - s = g_string_append_c(s, c); > - } > - } else { > - qemu_log_mask(LOG_GUEST_ERROR, > - "%s: passed inaccessible address " TARGET_FMT_lx, > - __func__, addr); > - break; > - } > - } while (c!=0); > - > - return s; > -} > - > -static void semihosting_cb(CPUState *cs, uint64_t ret, int err) > -{ > - if (err) { > - qemu_log("%s: gdb console output failed (%d)", __func__, err); > - } > -} > - > -int qemu_semihosting_console_outs(CPUArchState *env, target_ulong addr) > -{ > - GString *s = copy_user_string(env, addr); > - int out = s->len; > - > - if (use_gdb_syscalls()) { > - gdb_do_syscall(semihosting_cb, "write,2,%x,%x", addr, s->len); > - } else { > - out = qemu_semihosting_log_out(s->str, s->len); > - } > - > - g_string_free(s, true); > - return out; > -} > - > #define FIFO_SIZE 1024 > > static int console_can_read(void *opaque) > -- > 2.34.1 > > > > > To declare a filtering error, please use the following link : https://www.security-mail.net/reporter.php?mid=29a4.629fd909.2884b.0&r=lmichel%40kalrayinc.com&s=qemu-devel-bounces%2Blmichel%3Dkalrayinc.com%40nongnu.org&o=%5BPATCH+v4+52%2F53%5D+semihosting%3A+Remove+qemu_semihosting_console_outs&verdict=C&c=8ee0b8982c8025f3b6af275d795772fa0673b149 > --
Richard Henderson <richard.henderson@linaro.org> writes: > This function has been replaced by *_write. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/include/semihosting/console.h b/include/semihosting/console.h index d6c1cc58ab..20c31d89d4 100644 --- a/include/semihosting/console.h +++ b/include/semihosting/console.h @@ -11,19 +11,6 @@ #include "cpu.h" -/** - * qemu_semihosting_console_outs: - * @env: CPUArchState - * @s: host address of null terminated guest string - * - * Send a null terminated guest string to the debug console. This may - * be the remote gdb session if a softmmu guest is currently being - * debugged. - * - * Returns: number of bytes written. - */ -int qemu_semihosting_console_outs(CPUArchState *env, target_ulong s); - /** * qemu_semihosting_console_read: * @cs: CPUState diff --git a/linux-user/semihost.c b/linux-user/semihost.c index f8bc8889f3..cee62a365c 100644 --- a/linux-user/semihost.c +++ b/linux-user/semihost.c @@ -16,23 +16,6 @@ #include "user-internals.h" #include <termios.h> -int qemu_semihosting_console_outs(CPUArchState *env, target_ulong addr) -{ - int len = target_strlen(addr); - void *s; - if (len < 0){ - qemu_log_mask(LOG_GUEST_ERROR, - "%s: passed inaccessible address " TARGET_FMT_lx, - __func__, addr); - return 0; - } - s = lock_user(VERIFY_READ, addr, (long)(len + 1), 1); - g_assert(s); /* target_strlen has already verified this will work */ - len = write(STDERR_FILENO, s, len); - unlock_user(s, addr, 0); - return len; -} - /* * For linux-user we can safely block. However as we want to return as * soon as a character is read we need to tweak the termio to disable diff --git a/semihosting/console.c b/semihosting/console.c index f6fab5933a..c84ab97ab6 100644 --- a/semihosting/console.c +++ b/semihosting/console.c @@ -47,55 +47,6 @@ int qemu_semihosting_log_out(const char *s, int len) } } -/* - * A re-implementation of lock_user_string that we can use locally - * instead of relying on softmmu-semi. Hopefully we can deprecate that - * in time. Copy string until we find a 0 or address error. - */ -static GString *copy_user_string(CPUArchState *env, target_ulong addr) -{ - CPUState *cpu = env_cpu(env); - GString *s = g_string_sized_new(128); - uint8_t c; - - do { - if (cpu_memory_rw_debug(cpu, addr++, &c, 1, 0) == 0) { - if (c) { - s = g_string_append_c(s, c); - } - } else { - qemu_log_mask(LOG_GUEST_ERROR, - "%s: passed inaccessible address " TARGET_FMT_lx, - __func__, addr); - break; - } - } while (c!=0); - - return s; -} - -static void semihosting_cb(CPUState *cs, uint64_t ret, int err) -{ - if (err) { - qemu_log("%s: gdb console output failed (%d)", __func__, err); - } -} - -int qemu_semihosting_console_outs(CPUArchState *env, target_ulong addr) -{ - GString *s = copy_user_string(env, addr); - int out = s->len; - - if (use_gdb_syscalls()) { - gdb_do_syscall(semihosting_cb, "write,2,%x,%x", addr, s->len); - } else { - out = qemu_semihosting_log_out(s->str, s->len); - } - - g_string_free(s, true); - return out; -} - #define FIFO_SIZE 1024 static int console_can_read(void *opaque)
This function has been replaced by *_write. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- include/semihosting/console.h | 13 ---------- linux-user/semihost.c | 17 ------------ semihosting/console.c | 49 ----------------------------------- 3 files changed, 79 deletions(-)