From nobody Mon Feb 9 18:44:29 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1663530768; cv=none; d=zohomail.com; s=zohoarc; b=KkWelM28Rhbmcfp0X47mnxtfxXlzHsNf5sraQBAnWfe+siPG6J9nTHL1TMKSPjM6juQS1qAPhoxv5Les0bq0yXXIXuDZN3zlTlMDfqsMHGjrPHrTNJl0UckXltxxE0KsTkKl0IXM+lfuQJ3P0M/iDl+5g8Q7L2GyfsT6yLcyrBY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1663530768; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Eo16MlU0PkU2tA71IsviwErckpP87VPUcnvqoC2/hSs=; b=gQtQ+0l1DbbRB9nOAgvTaH9L18hhCogchOJTSSMQcFmzSoRqqNpydelAjEKzB+cZKTnuWM8fCmSWn/O8HxvPqZKECLwnBIhRvbf0lAX1xycQL3swhB+wJi9dqWk1EWnVHqMmR4h+QFWsLGTQ7wrqLZgEeQn7vUGq3Ra+3uhB7FU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1663530768875100.06284933674056; Sun, 18 Sep 2022 12:52:48 -0700 (PDT) Received: from localhost ([::1]:46858 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oa0LP-0007WF-Ph for importer@patchew.org; Sun, 18 Sep 2022 15:52:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oa0Ew-00071e-GS for qemu-devel@nongnu.org; Sun, 18 Sep 2022 15:46:13 -0400 Received: from mout.gmx.net ([212.227.17.20]:43085) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oa0Ep-0007ae-Pz for qemu-devel@nongnu.org; Sun, 18 Sep 2022 15:46:06 -0400 Received: from p100.fritz.box ([92.116.165.224]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MXp9Y-1ooBYm1eG4-00YBlD; Sun, 18 Sep 2022 21:45:56 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1663530356; bh=7aS2o35HsYTsCq2IrHBGKkUUxkKyHtWnOczIq8CEF3Q=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=JMWURL7C6r4abJwRqTQ6NAccByMDJRColaSDfo/Hv/0DHBWLH7dxT6pbxih3pG3BO z6pNYHKKNgNUFzIxYfbQXOwxMkWPtxCVclM1o2/1kI/WGalt/XBb6bRaJfumyKw4hS mz+wGV5igx3aC7YrO+iv8gex8gyvWXpeyAedePMg= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c From: Helge Deller To: Stefan Hajnoczi , Richard Henderson , Laurent Vivier , qemu-devel@nongnu.org Cc: deller@gmx.de Subject: [PATCH v3 01/12] linux-user: Add missing signals in strace output Date: Sun, 18 Sep 2022 21:45:44 +0200 Message-Id: <20220918194555.83535-2-deller@gmx.de> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220918194555.83535-1-deller@gmx.de> References: <20220918194555.83535-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:x4Huu1IRDdNVg8o4c6WOah24K7wejtwJKUQm7Bb6JHoTpTBaB3A TuRw6Oq8PrUorAFIVwfK0scNDxWE3QYoVRU92/JDijDyPfD8MArZXMaynEbNYH7jtMubX/X Gw4ZH6XZK6Pzu8dp6pVMVBrLMFf7iDmGyA7AZFLzuntUFaxFRj9yOPwFJ+Jg646a1TywiHI kijgDbLpgf6o6Xb8F8UKQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:koTVdP/YXBA=:ms9MDCaekm6i0YKmeK9vL7 9WUXHdPFQOZqIqJVk6ypA1ID0x9hy3nKpdO8xpkg30RDM5b84FYkQXzYcgfwN7qTcL9+3oKrj EY/mfYFO5IurzH8xsCndq8BoMbFGrrii8r8oqQnCC0safUElUbuyIx9kiIsgoa7LU5eGaRv0Q 7yTHHY41XfWbo5m+Em1Xr0p7wN2VbVifNJpmUsSFuPHM4WIkNFnbe87yxBIIMQvdA0aPGZEvx l1L6v6Kus04IEKsgZTTyx0YiSDOC3VKZD+BnZm/SI9tSwlbj9OS01HjOowWPsj0Ilq1wLFsFy NOIinGnP15hBbPNpuHtCGaK4GZpxhVX1wF3v7eAcuBPz3MMU7gnvxOWAn7TGVe+N6o+uilMWF 5eSwybUeo39vSOcG6JSj7Q4JjSXtkUKqId1MDgS4SuIiAiXj103UmNFfEmAbMG8VVO9+/MRS8 +aW7vYvIZXUFIRczQyBf8zJ0MnPZ8vGYFG/vZiJhXcvCsLW6T4Nw/a82dYU1+oznzVXmUXoBn THLJpuFWrxBCHXnnTG/xvjNtsHKJUxrFCunDZeRjVKvGlO6dSd2hXcZdSiMzm5L6hy8Nx3Rvu 9JI0CczdePAyDhh9bH1EjR0LDWgY81OoPLImdIaebEkhh9zCwUOeuEgDT78oqI5GPjv4312FQ gUAnIET+ID+GyTCGMOkDKSdREQtMyfj3y4op9JjJj88wbPHo6YRJNZ/DPrePuXYqEGpL84+g6 u9PLeC2a2on3qXc8NbnViYb2Q+/XCZ3cBlVefy5aJ1oRbLYhRcSicDUzQRfP6qCZ8eeV3DvO/ 75NKQMs7pFswCGA16/XAwxzn49UtOSPrKeEOgnrqS1yxlCtTIckYs33rJ6vPVpMfclTwaCmNn axkyc8JxAdgG5sHi4oHPFfeT7LnmnZmz4rbUAHOcBCv7/QF1RsMzUzZclyE3EdC+z4PM3z5Ne v/Thf2LBC7r+dlmxNkgxWXeahWNPNLLQEaGxrnudnLxSsS64Vji4/DEqAzADRVA6fPSdn7Zxo 2m8DXCnZlM8z33aL1javfEqnVUsDEsoZXnCeVYd9dvOdhNIkCFSiyO7T9mX89al0YQTQGXNQb d0EDpZ5QUFHF6DE7GotXoPmk2Q24ZFqaIbhtM8pcmRms00g0J3NkBkLVcYVhXMHB7AMcLU+Nu B3Gip6PLPYUE4/11gih4O0+pyd Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.20; envelope-from=deller@gmx.de; helo=mout.gmx.net X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1663530770471100001 Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Laurent Vivier --- 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 6a7e4a93fc..3e2dc604c2 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 8d29bfaa6b..61c6fa3fcf 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 !=3D _NSIG); #endif static uint8_t host_to_target_signal_table[_NSIG] =3D { - [SIGHUP] =3D TARGET_SIGHUP, - [SIGINT] =3D TARGET_SIGINT, - [SIGQUIT] =3D TARGET_SIGQUIT, - [SIGILL] =3D TARGET_SIGILL, - [SIGTRAP] =3D TARGET_SIGTRAP, - [SIGABRT] =3D TARGET_SIGABRT, -/* [SIGIOT] =3D TARGET_SIGIOT,*/ - [SIGBUS] =3D TARGET_SIGBUS, - [SIGFPE] =3D TARGET_SIGFPE, - [SIGKILL] =3D TARGET_SIGKILL, - [SIGUSR1] =3D TARGET_SIGUSR1, - [SIGSEGV] =3D TARGET_SIGSEGV, - [SIGUSR2] =3D TARGET_SIGUSR2, - [SIGPIPE] =3D TARGET_SIGPIPE, - [SIGALRM] =3D TARGET_SIGALRM, - [SIGTERM] =3D TARGET_SIGTERM, -#ifdef SIGSTKFLT - [SIGSTKFLT] =3D TARGET_SIGSTKFLT, -#endif - [SIGCHLD] =3D TARGET_SIGCHLD, - [SIGCONT] =3D TARGET_SIGCONT, - [SIGSTOP] =3D TARGET_SIGSTOP, - [SIGTSTP] =3D TARGET_SIGTSTP, - [SIGTTIN] =3D TARGET_SIGTTIN, - [SIGTTOU] =3D TARGET_SIGTTOU, - [SIGURG] =3D TARGET_SIGURG, - [SIGXCPU] =3D TARGET_SIGXCPU, - [SIGXFSZ] =3D TARGET_SIGXFSZ, - [SIGVTALRM] =3D TARGET_SIGVTALRM, - [SIGPROF] =3D TARGET_SIGPROF, - [SIGWINCH] =3D TARGET_SIGWINCH, - [SIGIO] =3D TARGET_SIGIO, - [SIGPWR] =3D TARGET_SIGPWR, - [SIGSYS] =3D TARGET_SIGSYS, +#define MAKE_SIG_ENTRY(sig) [sig] =3D 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 7d882526da..a4eeef7ae1 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 =3D=3D val ) { \ qemu_log("%d", cmd); } +static const char * const target_signal_name[] =3D { +#define MAKE_SIG_ENTRY(sig) [TARGET_##sig] =3D #sig, + MAKE_SIGNAL_LIST +#undef MAKE_SIG_ENTRY +}; + static void print_signal(abi_ulong arg, int last) { const char *signal_name =3D NULL; - switch(arg) { - case TARGET_SIGHUP: signal_name =3D "SIGHUP"; break; - case TARGET_SIGINT: signal_name =3D "SIGINT"; break; - case TARGET_SIGQUIT: signal_name =3D "SIGQUIT"; break; - case TARGET_SIGILL: signal_name =3D "SIGILL"; break; - case TARGET_SIGABRT: signal_name =3D "SIGABRT"; break; - case TARGET_SIGFPE: signal_name =3D "SIGFPE"; break; - case TARGET_SIGKILL: signal_name =3D "SIGKILL"; break; - case TARGET_SIGSEGV: signal_name =3D "SIGSEGV"; break; - case TARGET_SIGPIPE: signal_name =3D "SIGPIPE"; break; - case TARGET_SIGALRM: signal_name =3D "SIGALRM"; break; - case TARGET_SIGTERM: signal_name =3D "SIGTERM"; break; - case TARGET_SIGUSR1: signal_name =3D "SIGUSR1"; break; - case TARGET_SIGUSR2: signal_name =3D "SIGUSR2"; break; - case TARGET_SIGCHLD: signal_name =3D "SIGCHLD"; break; - case TARGET_SIGCONT: signal_name =3D "SIGCONT"; break; - case TARGET_SIGSTOP: signal_name =3D "SIGSTOP"; break; - case TARGET_SIGTTIN: signal_name =3D "SIGTTIN"; break; - case TARGET_SIGTTOU: signal_name =3D "SIGTTOU"; break; + + if (arg < ARRAY_SIZE(target_signal_name)) { + signal_name =3D target_signal_name[arg]; } + if (signal_name =3D=3D NULL) { print_raw_param("%ld", arg, last); return; -- 2.37.3