From 122f9c83f2ef1cd90152ea8116fe6e80c8e85994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Fri, 6 Jul 2018 12:51:25 -0300 Subject: [PATCH 1/3] linux-user: Do not report "Unsupported syscall" by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This can still be reported using the "-d unimp" command line option. Fixes: https://bugs.launchpad.net/qemu/+bug/1777226 Reported-by: John Paul Adrian Glaubitz Suggested-by: Peter Maydell Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell Message-Id: <20180706155127.7483-2-f4bug@amsat.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5822e03e28..e4b1b7d7da 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -12757,7 +12757,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, default: unimplemented: - gemu_log("qemu: Unsupported syscall: %d\n", num); + qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num); #if defined(TARGET_NR_setxattr) || defined(TARGET_NR_get_thread_area) || defined(TARGET_NR_getdomainname) || defined(TARGET_NR_set_robust_list) unimplemented_nowarn: #endif From 8f0ea816435c0f6b7bcf8bd0f46f705ccca0316a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Fri, 6 Jul 2018 12:51:26 -0300 Subject: [PATCH 2/3] linux-user: Do not report "syscall not implemented" by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This can still be reported using the "-d unimp" command line option. Code change produced with: git ls-files linux-user | \ xargs sed -i -E 's/fprintf\(stderr,\s?(".*not implemented\\n")\);/qemu_log_mask(LOG_UNIMP, \1);/g' Signed-off-by: Philippe Mathieu-Daudé Message-Id: <20180706155127.7483-3-f4bug@amsat.org> Signed-off-by: Laurent Vivier --- linux-user/cris/signal.c | 4 ++-- linux-user/microblaze/signal.c | 4 ++-- linux-user/nios2/signal.c | 2 +- linux-user/sparc/signal.c | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/linux-user/cris/signal.c b/linux-user/cris/signal.c index 0b405247cf..1e02194377 100644 --- a/linux-user/cris/signal.c +++ b/linux-user/cris/signal.c @@ -146,7 +146,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, target_sigset_t *set, CPUCRISState *env) { - fprintf(stderr, "CRIS setup_rt_frame: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "setup_rt_frame: not implemented\n"); } long do_sigreturn(CPUCRISState *env) @@ -183,6 +183,6 @@ badframe: long do_rt_sigreturn(CPUCRISState *env) { trace_user_do_rt_sigreturn(env, 0); - fprintf(stderr, "CRIS do_rt_sigreturn: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "do_rt_sigreturn: not implemented\n"); return -TARGET_ENOSYS; } diff --git a/linux-user/microblaze/signal.c b/linux-user/microblaze/signal.c index 712ee522b2..80950c2181 100644 --- a/linux-user/microblaze/signal.c +++ b/linux-user/microblaze/signal.c @@ -200,7 +200,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, target_sigset_t *set, CPUMBState *env) { - fprintf(stderr, "Microblaze setup_rt_frame: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "setup_rt_frame: not implemented\n"); } long do_sigreturn(CPUMBState *env) @@ -240,6 +240,6 @@ badframe: long do_rt_sigreturn(CPUMBState *env) { trace_user_do_rt_sigreturn(env, 0); - fprintf(stderr, "Microblaze do_rt_sigreturn: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "do_rt_sigreturn: not implemented\n"); return -TARGET_ENOSYS; } diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 4985dc2212..7d535065ed 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -203,7 +203,7 @@ give_sigsegv: long do_sigreturn(CPUNios2State *env) { trace_user_do_sigreturn(env, 0); - fprintf(stderr, "do_sigreturn: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "do_sigreturn: not implemented\n"); return -TARGET_ENOSYS; } diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 55e9d6f9b2..b4c60aa446 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -278,7 +278,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, target_sigset_t *set, CPUSPARCState *env) { - fprintf(stderr, "setup_rt_frame: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "setup_rt_frame: not implemented\n"); } long do_sigreturn(CPUSPARCState *env) @@ -357,7 +357,7 @@ segv_and_exit: long do_rt_sigreturn(CPUSPARCState *env) { trace_user_do_rt_sigreturn(env, 0); - fprintf(stderr, "do_rt_sigreturn: not implemented\n"); + qemu_log_mask(LOG_UNIMP, "do_rt_sigreturn: not implemented\n"); return -TARGET_ENOSYS; } From 84ca4fa99d7b6c83ce31e1e41300d55cb4e97dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Fri, 6 Jul 2018 12:51:27 -0300 Subject: [PATCH 3/3] linux-user: Report error message on stderr, rather than stdout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Code change produced with: git ls-files linux-user | \ xargs sed -i -E 's/(\s+)printf\s*\(("Unhandled.*)\);/\1fprintf(stderr, \2);/g' Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell Message-Id: <20180706155127.7483-4-f4bug@amsat.org> Signed-off-by: Laurent Vivier --- linux-user/alpha/cpu_loop.c | 2 +- linux-user/cris/cpu_loop.c | 2 +- linux-user/microblaze/cpu_loop.c | 6 +++--- linux-user/sh4/cpu_loop.c | 2 +- linux-user/sparc/cpu_loop.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/linux-user/alpha/cpu_loop.c b/linux-user/alpha/cpu_loop.c index b87fcaea87..c1a98c8cbf 100644 --- a/linux-user/alpha/cpu_loop.c +++ b/linux-user/alpha/cpu_loop.c @@ -196,7 +196,7 @@ void cpu_loop(CPUAlphaState *env) arch_interrupt = false; break; default: - printf ("Unhandled trap: 0x%x\n", trapnr); + fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr); cpu_dump_state(cs, stderr, fprintf, 0); exit(EXIT_FAILURE); } diff --git a/linux-user/cris/cpu_loop.c b/linux-user/cris/cpu_loop.c index 1c5eca9f83..37bdcfa8cc 100644 --- a/linux-user/cris/cpu_loop.c +++ b/linux-user/cris/cpu_loop.c @@ -81,7 +81,7 @@ void cpu_loop(CPUCRISState *env) cpu_exec_step_atomic(cs); break; default: - printf ("Unhandled trap: 0x%x\n", trapnr); + fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr); cpu_dump_state(cs, stderr, fprintf, 0); exit(EXIT_FAILURE); } diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_loop.c index 5af12d5b21..2af93eb39a 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -105,8 +105,8 @@ void cpu_loop(CPUMBState *env) queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; default: - printf("Unhandled hw-exception: 0x%" PRIx64 "\n", - env->sregs[SR_ESR] & ESR_EC_MASK); + fprintf(stderr, "Unhandled hw-exception: 0x%" PRIx64 "\n", + env->sregs[SR_ESR] & ESR_EC_MASK); cpu_dump_state(cs, stderr, fprintf, 0); exit(EXIT_FAILURE); break; @@ -130,7 +130,7 @@ void cpu_loop(CPUMBState *env) cpu_exec_step_atomic(cs); break; default: - printf ("Unhandled trap: 0x%x\n", trapnr); + fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr); cpu_dump_state(cs, stderr, fprintf, 0); exit(EXIT_FAILURE); } diff --git a/linux-user/sh4/cpu_loop.c b/linux-user/sh4/cpu_loop.c index 418833ea25..fdd348170b 100644 --- a/linux-user/sh4/cpu_loop.c +++ b/linux-user/sh4/cpu_loop.c @@ -84,7 +84,7 @@ void cpu_loop(CPUSH4State *env) arch_interrupt = false; break; default: - printf ("Unhandled trap: 0x%x\n", trapnr); + fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr); cpu_dump_state(cs, stderr, fprintf, 0); exit(EXIT_FAILURE); } diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 7c4796ca23..91f714afc6 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -285,7 +285,7 @@ void cpu_loop (CPUSPARCState *env) cpu_exec_step_atomic(cs); break; default: - printf ("Unhandled trap: 0x%x\n", trapnr); + fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr); cpu_dump_state(cs, stderr, fprintf, 0); exit(EXIT_FAILURE); }