From: Laurent Vivier <laurent@vivier.eu>
To: qemu-devel@nongnu.org
Cc: Helge Deller <deller@gmx.de>, Laurent Vivier <laurent@vivier.eu>
Subject: [PULL 03/37] linux-user: Add missing signals in strace output
Date: Wed, 28 Sep 2022 22:27:03 +0200 [thread overview]
Message-ID: <20220928202737.793171-4-laurent@vivier.eu> (raw)
In-Reply-To: <20220928202737.793171-1-laurent@vivier.eu>
From: Helge Deller <deller@gmx.de>
Some of the guest signal numbers are currently not converted to
their representative names in the strace output, e.g. SIGVTALRM.
This patch introduces a smart way to generate and keep in sync the
host-to-guest and guest-to-host signal conversion tables for usage in
the qemu signal and strace code. This ensures that any signals
will now show up in both tables.
There is no functional change in this patch - with the exception that yet
missing signal names now show up in the strace code too.
Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20220918194555.83535-2-deller@gmx.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/signal-common.h | 46 ++++++++++++++++++++++++++++++++++++++
linux-user/signal.c | 37 +++---------------------------
linux-user/strace.c | 30 +++++++++----------------
3 files changed, 60 insertions(+), 53 deletions(-)
diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h
index 6a7e4a93fc13..3e2dc604c2fb 100644
--- a/linux-user/signal-common.h
+++ b/linux-user/signal-common.h
@@ -118,4 +118,50 @@ static inline void finish_sigsuspend_mask(int ret)
}
}
+#if defined(SIGSTKFLT) && defined(TARGET_SIGSTKFLT)
+#define MAKE_SIG_ENTRY_SIGSTKFLT MAKE_SIG_ENTRY(SIGSTKFLT)
+#else
+#define MAKE_SIG_ENTRY_SIGSTKFLT
+#endif
+
+#if defined(SIGIOT) && defined(TARGET_SIGIOT)
+#define MAKE_SIG_ENTRY_SIGIOT MAKE_SIG_ENTRY(SIGIOT)
+#else
+#define MAKE_SIG_ENTRY_SIGIOT
+#endif
+
+#define MAKE_SIGNAL_LIST \
+ MAKE_SIG_ENTRY(SIGHUP) \
+ MAKE_SIG_ENTRY(SIGINT) \
+ MAKE_SIG_ENTRY(SIGQUIT) \
+ MAKE_SIG_ENTRY(SIGILL) \
+ MAKE_SIG_ENTRY(SIGTRAP) \
+ MAKE_SIG_ENTRY(SIGABRT) \
+ MAKE_SIG_ENTRY(SIGBUS) \
+ MAKE_SIG_ENTRY(SIGFPE) \
+ MAKE_SIG_ENTRY(SIGKILL) \
+ MAKE_SIG_ENTRY(SIGUSR1) \
+ MAKE_SIG_ENTRY(SIGSEGV) \
+ MAKE_SIG_ENTRY(SIGUSR2) \
+ MAKE_SIG_ENTRY(SIGPIPE) \
+ MAKE_SIG_ENTRY(SIGALRM) \
+ MAKE_SIG_ENTRY(SIGTERM) \
+ MAKE_SIG_ENTRY(SIGCHLD) \
+ MAKE_SIG_ENTRY(SIGCONT) \
+ MAKE_SIG_ENTRY(SIGSTOP) \
+ MAKE_SIG_ENTRY(SIGTSTP) \
+ MAKE_SIG_ENTRY(SIGTTIN) \
+ MAKE_SIG_ENTRY(SIGTTOU) \
+ MAKE_SIG_ENTRY(SIGURG) \
+ MAKE_SIG_ENTRY(SIGXCPU) \
+ MAKE_SIG_ENTRY(SIGXFSZ) \
+ MAKE_SIG_ENTRY(SIGVTALRM) \
+ MAKE_SIG_ENTRY(SIGPROF) \
+ MAKE_SIG_ENTRY(SIGWINCH) \
+ MAKE_SIG_ENTRY(SIGIO) \
+ MAKE_SIG_ENTRY(SIGPWR) \
+ MAKE_SIG_ENTRY(SIGSYS) \
+ MAKE_SIG_ENTRY_SIGSTKFLT \
+ MAKE_SIG_ENTRY_SIGIOT
+
#endif
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 8d29bfaa6b5c..61c6fa3fcf12 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -53,40 +53,9 @@ abi_ulong default_rt_sigreturn;
QEMU_BUILD_BUG_ON(__SIGRTMAX + 1 != _NSIG);
#endif
static uint8_t host_to_target_signal_table[_NSIG] = {
- [SIGHUP] = TARGET_SIGHUP,
- [SIGINT] = TARGET_SIGINT,
- [SIGQUIT] = TARGET_SIGQUIT,
- [SIGILL] = TARGET_SIGILL,
- [SIGTRAP] = TARGET_SIGTRAP,
- [SIGABRT] = TARGET_SIGABRT,
-/* [SIGIOT] = TARGET_SIGIOT,*/
- [SIGBUS] = TARGET_SIGBUS,
- [SIGFPE] = TARGET_SIGFPE,
- [SIGKILL] = TARGET_SIGKILL,
- [SIGUSR1] = TARGET_SIGUSR1,
- [SIGSEGV] = TARGET_SIGSEGV,
- [SIGUSR2] = TARGET_SIGUSR2,
- [SIGPIPE] = TARGET_SIGPIPE,
- [SIGALRM] = TARGET_SIGALRM,
- [SIGTERM] = TARGET_SIGTERM,
-#ifdef SIGSTKFLT
- [SIGSTKFLT] = TARGET_SIGSTKFLT,
-#endif
- [SIGCHLD] = TARGET_SIGCHLD,
- [SIGCONT] = TARGET_SIGCONT,
- [SIGSTOP] = TARGET_SIGSTOP,
- [SIGTSTP] = TARGET_SIGTSTP,
- [SIGTTIN] = TARGET_SIGTTIN,
- [SIGTTOU] = TARGET_SIGTTOU,
- [SIGURG] = TARGET_SIGURG,
- [SIGXCPU] = TARGET_SIGXCPU,
- [SIGXFSZ] = TARGET_SIGXFSZ,
- [SIGVTALRM] = TARGET_SIGVTALRM,
- [SIGPROF] = TARGET_SIGPROF,
- [SIGWINCH] = TARGET_SIGWINCH,
- [SIGIO] = TARGET_SIGIO,
- [SIGPWR] = TARGET_SIGPWR,
- [SIGSYS] = TARGET_SIGSYS,
+#define MAKE_SIG_ENTRY(sig) [sig] = TARGET_##sig,
+ MAKE_SIGNAL_LIST
+#undef MAKE_SIG_ENTRY
/* next signals stay the same */
};
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 7d882526da03..a4eeef7ae1ca 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -17,6 +17,7 @@
#include "qemu.h"
#include "user-internals.h"
#include "strace.h"
+#include "signal-common.h"
struct syscallname {
int nr;
@@ -141,30 +142,21 @@ if( cmd == val ) { \
qemu_log("%d", cmd);
}
+static const char * const target_signal_name[] = {
+#define MAKE_SIG_ENTRY(sig) [TARGET_##sig] = #sig,
+ MAKE_SIGNAL_LIST
+#undef MAKE_SIG_ENTRY
+};
+
static void
print_signal(abi_ulong arg, int last)
{
const char *signal_name = NULL;
- switch(arg) {
- case TARGET_SIGHUP: signal_name = "SIGHUP"; break;
- case TARGET_SIGINT: signal_name = "SIGINT"; break;
- case TARGET_SIGQUIT: signal_name = "SIGQUIT"; break;
- case TARGET_SIGILL: signal_name = "SIGILL"; break;
- case TARGET_SIGABRT: signal_name = "SIGABRT"; break;
- case TARGET_SIGFPE: signal_name = "SIGFPE"; break;
- case TARGET_SIGKILL: signal_name = "SIGKILL"; break;
- case TARGET_SIGSEGV: signal_name = "SIGSEGV"; break;
- case TARGET_SIGPIPE: signal_name = "SIGPIPE"; break;
- case TARGET_SIGALRM: signal_name = "SIGALRM"; break;
- case TARGET_SIGTERM: signal_name = "SIGTERM"; break;
- case TARGET_SIGUSR1: signal_name = "SIGUSR1"; break;
- case TARGET_SIGUSR2: signal_name = "SIGUSR2"; break;
- case TARGET_SIGCHLD: signal_name = "SIGCHLD"; break;
- case TARGET_SIGCONT: signal_name = "SIGCONT"; break;
- case TARGET_SIGSTOP: signal_name = "SIGSTOP"; break;
- case TARGET_SIGTTIN: signal_name = "SIGTTIN"; break;
- case TARGET_SIGTTOU: signal_name = "SIGTTOU"; break;
+
+ if (arg < ARRAY_SIZE(target_signal_name)) {
+ signal_name = target_signal_name[arg];
}
+
if (signal_name == NULL) {
print_raw_param("%ld", arg, last);
return;
--
2.37.3
next prev parent reply other threads:[~2022-09-28 20:29 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-28 20:27 [PULL 00/37] Linux user for 7.2 patches Laurent Vivier
2022-09-28 20:27 ` [PULL 01/37] linux-user: use 'max' instead of 'qemu32' / 'qemu64' by default Laurent Vivier
2022-09-28 20:27 ` [PULL 02/37] linux-user: fix readlinkat handling with magic exe symlink Laurent Vivier
2022-09-28 20:27 ` Laurent Vivier [this message]
2022-09-28 20:27 ` [PULL 04/37] linux-user: Add missing clock_gettime64() syscall strace Laurent Vivier
2022-09-28 20:27 ` [PULL 05/37] linux-user: Add pidfd_open(), pidfd_send_signal() and pidfd_getfd() syscalls Laurent Vivier
2022-09-28 20:27 ` [PULL 06/37] linux-user: Log failing executable in EXCP_DUMP() Laurent Vivier
2022-09-28 20:27 ` [PULL 07/37] linux-user/hppa: Use EXCP_DUMP() to show enhanced debug info Laurent Vivier
2022-09-28 20:27 ` [PULL 08/37] linux-user/hppa: Dump IIR on register dump Laurent Vivier
2022-09-28 20:27 ` [PULL 09/37] linux-user: Fix strace of chmod() if mode == 0 Laurent Vivier
2022-09-28 20:27 ` [PULL 10/37] linux-user/hppa: Set TASK_UNMAPPED_BASE to 0xfa000000 for hppa arch Laurent Vivier
2022-09-28 20:27 ` [PULL 11/37] linux-user: Add strace for clock_nanosleep() Laurent Vivier
2022-09-28 20:27 ` [PULL 12/37] linux-user: Show timespec on strace for futex() Laurent Vivier
2022-09-28 20:27 ` [PULL 13/37] linux-user: Provide MADV_* definitions Laurent Vivier
2022-09-28 20:27 ` [PULL 14/37] linux-user: Fix madvise(MADV_DONTNEED) on alpha Laurent Vivier
2022-09-28 20:27 ` [PULL 15/37] linux-user: Implement stracing madvise() Laurent Vivier
2022-09-28 20:27 ` [PULL 16/37] linux-user: Passthrough MADV_DONTNEED for certain file mappings Laurent Vivier
2022-09-28 20:27 ` [PULL 17/37] tests/tcg/linux-test: Add linux-madvise test Laurent Vivier
2022-09-28 20:27 ` [PULL 18/37] linux-user: Fix TARGET_PROT_SEM for XTENSA Laurent Vivier
2022-09-28 20:27 ` [PULL 19/37] linux-user: Add proper strace format strings for getdents()/getdents64() Laurent Vivier
2022-09-28 20:27 ` [PULL 20/37] linux-user/hppa: Add signal trampoline for hppa target Laurent Vivier
2022-09-28 20:27 ` [PULL 21/37] linux-user/hppa: Drop stack guard page on " Laurent Vivier
2022-09-28 20:27 ` [PULL 22/37] linux-user/hppa: Increase guest stack size to 80MB for " Laurent Vivier
2022-09-28 20:27 ` [PULL 23/37] linux-user/hppa: Allow PROT_GROWSUP and PROT_GROWSDOWN in mprotect() Laurent Vivier
2022-09-28 20:27 ` [PULL 24/37] linux-user/hppa: Fix setup_sigcontext() Laurent Vivier
2022-09-28 20:27 ` [PULL 25/37] linux-user: fix bug about missing signum convert of sigqueue Laurent Vivier
2022-09-28 20:27 ` [PULL 26/37] linux-user: Don't assume 0 is not a valid host timer_t value Laurent Vivier
2022-09-28 20:27 ` [PULL 27/37] linux-user/s390x: Save/restore fpc when handling a signal Laurent Vivier
2022-09-28 20:27 ` [PULL 28/37] linux-user: Introduce stubs for ELF AT_BASE_PLATFORM Laurent Vivier
2022-09-28 20:27 ` [PULL 29/37] linux-user: Set ELF_BASE_PLATFORM for MIPS Laurent Vivier
2022-09-28 20:27 ` [PULL 30/37] linux-user: Combine do_futex and do_futex_time64 Laurent Vivier
2022-09-28 20:27 ` [PULL 31/37] linux-user: Sink call to do_safe_futex Laurent Vivier
2022-09-28 20:27 ` [PULL 32/37] linux-user: Implement FUTEX_WAKE_BITSET Laurent Vivier
2022-09-28 20:27 ` [PULL 33/37] linux-user: Convert signal number for FUTEX_FD Laurent Vivier
2022-09-28 20:27 ` [PULL 34/37] linux-user: Implement PI futexes Laurent Vivier
2022-09-28 20:27 ` [PULL 35/37] linux-user: Update print_futex_op Laurent Vivier
2022-09-28 20:27 ` [PULL 36/37] linux-user: Lock log around strace Laurent Vivier
2022-09-28 20:27 ` [PULL 37/37] linux-user: Add parameters of getrandom() syscall for strace Laurent Vivier
2022-09-29 14:48 ` [PULL 00/37] Linux user for 7.2 patches Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220928202737.793171-4-laurent@vivier.eu \
--to=laurent@vivier.eu \
--cc=deller@gmx.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).