From nobody Wed Apr 24 14:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590114945; cv=none; d=zohomail.com; s=zohoarc; b=QbaxmEkCAXTe/wpwegXWwXpSDYwfZP31IEMfJ5imlel/96CEwTJVb0uh2DXut7CY9BhmSScv0y8254q/9F1IsXuVlnt8+xB7lz9m1xiMy/abI8wZHKbZJg8MNJ0HSyX8V19EnBZa11ar+raqvz/EWPDL2dqYl1brMJn8vrcBuH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590114945; h=Content-Type: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=gkyAigBcxeB9sTmXF9GJufgbDs99qzgoeJAd1MWy3/8=; b=fKZ7eX7QAmn80ve9A6LW2Rg82TvuAN6rKs0I6MUG43tvyn4dXV+lfPbNgTz9vLwKZUVg7kGP9YgaQk/QlW7Qwhw7IIYe9dNvaN+H0jKD5kYHXnmdBdhuzbqa0qi6zau8i2w8F5uaJ4FkI6tPjSPY8tEZlG6z/bRwH5VKGKOVP2Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590114945149144.41346332475553; Thu, 21 May 2020 19:35:45 -0700 (PDT) Received: from localhost ([::1]:46510 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxXD-000423-SJ for importer@patchew.org; Thu, 21 May 2020 22:35:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48158) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWI-00023Z-AA for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:46 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:35254) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWH-00055l-7N for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:45 -0400 Received: by mail-pl1-x631.google.com with SMTP id q16so3822656plr.2 for ; Thu, 21 May 2020 19:34:44 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gkyAigBcxeB9sTmXF9GJufgbDs99qzgoeJAd1MWy3/8=; b=eYjy3/1MBhnXWugPc+CFxZeLIxiTC0jYd4kIUwzJV8T2KLpJ8jQYffGbx5qJFaY3j7 deRPgUhyPV4SE94sam6cWYBP5R2zj1LaKDSZJbJHQaKLsYczXCd2KbMk/7Zqiay2bWvV +da/AAj7xBe14iChYVnA7PoUzV5gu+daGIAmlZDyr+Zd613Wl5w8v1nq/loMNA5MG15P jF+EHWquY78+ZrfrTHq8Ps/oKuNUcoF8rMOPC9TjS+LGi40fnG9E1sWb6n/ORjmUXZ98 ANzbmk4z64vlH8Ztxw71oVjbC+0iN7hOE0FvO4je8HdOdIa676Yxho0+9cgrn2/FKmMM L59g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gkyAigBcxeB9sTmXF9GJufgbDs99qzgoeJAd1MWy3/8=; b=NDPG1c44YcoTW6+U7vtrRj0GQAkHD0dBeVHor8IaT43CZKpY0IYip/eNWb+8A2Pax7 B/oYzAP80HpLXJLKdblkBOmZgwnKzYdOhu+7ySh8F/WqWygoY3MgdAZJMZeLDO5m3guo YU5lfiwFDjI3bSAlDJDEVQ03GONMVGXEixu7Csc3lUnC8W0GLRfJnhIl0IYPNybeCV5K 40b5z008XLJryrgEWtqiWnlR6ARQN8pLxm958FOkBAbukjvlMYFlW45W+QWaxjfs/nAL HZ81H6BkLZOrY1ZT3C1BenWbANuUBr1lAWj8UfIsvzghrCqNVQzP+6ag+DFeLosc68gB fiLQ== X-Gm-Message-State: AOAM5329gzG03tsbggdU42Bxf5hLFnFBr1zbdcI+XGz+oVAVWr5HEm92 1uJnA5wYSBn/T4rwHgr23r92FQEBIAo= X-Google-Smtp-Source: ABdhPJzzf1M25wPmaMu5y7kfJz7/kw91o9IVkvYuihZwHuF8/Itj1H3jz+DD0uO2mTwA+3qMd3Lxjw== X-Received: by 2002:a17:90b:3745:: with SMTP id ne5mr1822404pjb.68.1590114883474; Thu, 21 May 2020 19:34:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 01/25] Use bool for tracing variables Date: Thu, 21 May 2020 19:34:16 -0700 Message-Id: <20200522023440.26261-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- risu.h | 3 ++- reginfo.c | 2 +- risu.c | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/risu.h b/risu.h index 8d2d646..e2b4508 100644 --- a/risu.h +++ b/risu.h @@ -17,6 +17,7 @@ #include #include #include +#include =20 /* Extra option processing for architectures */ extern const struct option * const arch_long_opts; @@ -96,7 +97,7 @@ int recv_and_compare_register_info(read_fn read_fn, * Should return 0 if it was a good match (ie end of test) * and 1 for a mismatch. */ -int report_match_status(int trace); +int report_match_status(bool trace); =20 /* Interface provided by CPU-specific code: */ =20 diff --git a/reginfo.c b/reginfo.c index dd42ae2..1b2a821 100644 --- a/reginfo.c +++ b/reginfo.c @@ -141,7 +141,7 @@ int recv_and_compare_register_info(read_fn read_fn, * Should return 0 if it was a good match (ie end of test) * and 1 for a mismatch. */ -int report_match_status(int trace) +int report_match_status(bool trace) { int resp =3D 0; fprintf(stderr, "match status...\n"); diff --git a/risu.c b/risu.c index 01525d2..79b1092 100644 --- a/risu.c +++ b/risu.c @@ -31,7 +31,7 @@ void *memblock; =20 int apprentice_fd, master_fd; -int trace; +bool trace; size_t signal_count; =20 #ifdef HAVE_ZLIB @@ -228,7 +228,7 @@ int master(void) signal_count); return 0; } else { - return report_match_status(0); + return report_match_status(false); } } set_sigill_handler(&master_sigill); @@ -250,7 +250,7 @@ int apprentice(void) #endif close(apprentice_fd); fprintf(stderr, "finished early after %zd checkpoints\n", signal_c= ount); - return report_match_status(1); + return report_match_status(true); } set_sigill_handler(&apprentice_sigill); fprintf(stderr, "starting apprentice image at 0x%"PRIxPTR"\n", @@ -344,7 +344,7 @@ int main(int argc, char **argv) break; case 't': trace_fn =3D optarg; - trace =3D 1; + trace =3D true; break; case 'h': hostname =3D optarg; --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115027; cv=none; d=zohomail.com; s=zohoarc; b=KIfoHHyNmQ570s3BlseBdnHQcxdCVoqyw52TwmsJ5MwfBSaUWXoR0lAupBOefhBL43VGhTEWbX6akQeHJ4cvcxxXZjl8whxV3xHtnPSzc1qqoDOfVU2Q5jcoT35z+LFwVz9jGNvPKrvJxKPITq/rBqmzlXcr/GZX9yakcXasgsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115027; h=Content-Type: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=JQCGgvllP6/zU7ZDrHyu78GSFItc7dHunrM7u5X5NHY=; b=RfAtaE8pdzy+w5UsY4qbR3PMcIjJGep3DCkDUFWK73+RzdhnkzCsibNVyXlTAejoVP1m/uWqQzB0J1xJ4F3TAgayTGdnyJJ99gPHDuOw+Jx4P2YCOmlCySQDMSPnwteZSb+xn/uc8i9+PZ57zHTB+dJAOj8OdM9/pN+OfZPKWJE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115027078988.14887982065; Thu, 21 May 2020 19:37:07 -0700 (PDT) Received: from localhost ([::1]:55024 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxYX-00087X-Qv for importer@patchew.org; Thu, 21 May 2020 22:37:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48166) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWJ-00023l-7I for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:47 -0400 Received: from mail-pj1-x1043.google.com ([2607:f8b0:4864:20::1043]:40288) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWI-00055p-Ai for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:46 -0400 Received: by mail-pj1-x1043.google.com with SMTP id ci23so4339821pjb.5 for ; Thu, 21 May 2020 19:34:45 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JQCGgvllP6/zU7ZDrHyu78GSFItc7dHunrM7u5X5NHY=; b=yswuQWAAOUpgZQ0p7M/vW8p9+vw1X2m4G5mfZdbfIurqVXZVw/ExYxvIWUwzmJN9X+ 34MJ6pLbTHePAfwHF8k1AuxfhY3D40HMcmVQfvCtotGimQPVqSUt80ueC61UHhXCyjPI h7uSddUVRDaYL2fWEthR6jWKNJTuLJ+HmnXJRw2+2l2+zGIued+XsjzpY9aBXRyM27KQ eRNOg+Z00DlV7x6IWIxJ1uF/k5dB1t3QAG0SBnkN0J1wUQO05Iah5Y/F0iucqmnHFsEc XZSs+nyvQFqPI9I+zeP8AIsNEIa8OdqmfrDMUmY7PzZOXCv7zsUi+vIlDVkqRT5OeLR+ PqhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JQCGgvllP6/zU7ZDrHyu78GSFItc7dHunrM7u5X5NHY=; b=SgaVYDm9LO7Ztg7P5ye7V3DGeiLCm0eCDfz0xcGdVrj3xuhsj6U8B+EtWTnW+2Zbp9 QArJWrz/pVIXPFVHDVOV8JyHkckiG08QvVAV0arq4gDP4K7HgaCaH/y25KF5kNn5U9b+ RSEYB4ICgI1S1w05eRjpneMDrwj85RNR1fIKN+943yelUsGxNlw/aDkCz3Mc8yg/rdkp KbIve9MYF+rKM4hZiGv+dRQ0QOmT8JCQ0RDbv3IkSyORwEb5lflUXvCzebugAGuVepmu 7wzSJ4nwUXj5/tYuLtwVxJ4R+GTEfJr2miqM6ZwKBtxrgTVSdCozi5/V98l1tPm4+6np VV6w== X-Gm-Message-State: AOAM531Xbhcv9Q9+WJP1jzuGz1Ie4UQMkCZgPEupZ9ka7Hdr6Owpxbv7 tzn3NWh2tudHbmCfox0BXywgNjEq/JE= X-Google-Smtp-Source: ABdhPJwWKVMo7qPX8GJbRE7skc8D8TBvSSKSdUpqPAjmFcvn0U6tnlqhcCUcShusAytfo0bb++0/ew== X-Received: by 2002:a17:902:4b:: with SMTP id 69mr11442611pla.99.1590114884611; Thu, 21 May 2020 19:34:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 02/25] Unify master_fd and apprentice_fd to comm_fd Date: Thu, 21 May 2020 19:34:17 -0700 Message-Id: <20200522023440.26261-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1043; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1043.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Any one invocation cannot be both master and apprentice. Let's use only one variable for the file descriptor. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- risu.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/risu.c b/risu.c index 79b1092..059348f 100644 --- a/risu.c +++ b/risu.c @@ -30,7 +30,7 @@ =20 void *memblock; =20 -int apprentice_fd, master_fd; +static int comm_fd; bool trace; size_t signal_count; =20 @@ -50,7 +50,7 @@ sigjmp_buf jmpbuf; =20 int read_sock(void *ptr, size_t bytes) { - return recv_data_pkt(master_fd, ptr, bytes); + return recv_data_pkt(comm_fd, ptr, bytes); } =20 int write_trace(void *ptr, size_t bytes) @@ -58,9 +58,9 @@ int write_trace(void *ptr, size_t bytes) size_t res; =20 #ifdef HAVE_ZLIB - if (master_fd =3D=3D STDOUT_FILENO) { + if (comm_fd =3D=3D STDOUT_FILENO) { #endif - res =3D write(master_fd, ptr, bytes); + res =3D write(comm_fd, ptr, bytes); #ifdef HAVE_ZLIB } else { res =3D gzwrite(gz_trace_file, ptr, bytes); @@ -71,14 +71,14 @@ int write_trace(void *ptr, size_t bytes) =20 void respond_sock(int r) { - send_response_byte(master_fd, r); + send_response_byte(comm_fd, r); } =20 /* Apprentice function */ =20 int write_sock(void *ptr, size_t bytes) { - return send_data_pkt(apprentice_fd, ptr, bytes); + return send_data_pkt(comm_fd, ptr, bytes); } =20 int read_trace(void *ptr, size_t bytes) @@ -86,9 +86,9 @@ int read_trace(void *ptr, size_t bytes) size_t res; =20 #ifdef HAVE_ZLIB - if (apprentice_fd =3D=3D STDIN_FILENO) { + if (comm_fd =3D=3D STDIN_FILENO) { #endif - res =3D read(apprentice_fd, ptr, bytes); + res =3D read(comm_fd, ptr, bytes); #ifdef HAVE_ZLIB } else { res =3D gzread(gz_trace_file, ptr, bytes); @@ -218,11 +218,11 @@ int master(void) { if (sigsetjmp(jmpbuf, 1)) { #ifdef HAVE_ZLIB - if (trace && master_fd !=3D STDOUT_FILENO) { + if (trace && comm_fd !=3D STDOUT_FILENO) { gzclose(gz_trace_file); } #endif - close(master_fd); + close(comm_fd); if (trace) { fprintf(stderr, "trace complete after %zd checkpoints\n", signal_count); @@ -244,11 +244,11 @@ int apprentice(void) { if (sigsetjmp(jmpbuf, 1)) { #ifdef HAVE_ZLIB - if (trace && apprentice_fd !=3D STDIN_FILENO) { + if (trace && comm_fd !=3D STDIN_FILENO) { gzclose(gz_trace_file); } #endif - close(apprentice_fd); + close(comm_fd); fprintf(stderr, "finished early after %zd checkpoints\n", signal_c= ount); return report_match_status(true); } @@ -375,31 +375,31 @@ int main(int argc, char **argv) if (ismaster) { if (trace) { if (strcmp(trace_fn, "-") =3D=3D 0) { - master_fd =3D STDOUT_FILENO; + comm_fd =3D STDOUT_FILENO; } else { - master_fd =3D open(trace_fn, O_WRONLY | O_CREAT, S_IRWXU); + comm_fd =3D open(trace_fn, O_WRONLY | O_CREAT, S_IRWXU); #ifdef HAVE_ZLIB - gz_trace_file =3D gzdopen(master_fd, "wb9"); + gz_trace_file =3D gzdopen(comm_fd, "wb9"); #endif } } else { fprintf(stderr, "master port %d\n", port); - master_fd =3D master_connect(port); + comm_fd =3D master_connect(port); } return master(); } else { if (trace) { if (strcmp(trace_fn, "-") =3D=3D 0) { - apprentice_fd =3D STDIN_FILENO; + comm_fd =3D STDIN_FILENO; } else { - apprentice_fd =3D open(trace_fn, O_RDONLY); + comm_fd =3D open(trace_fn, O_RDONLY); #ifdef HAVE_ZLIB - gz_trace_file =3D gzdopen(apprentice_fd, "rb"); + gz_trace_file =3D gzdopen(comm_fd, "rb"); #endif } } else { fprintf(stderr, "apprentice host %s port %d\n", hostname, port= ); - apprentice_fd =3D apprentice_connect(hostname, port); + comm_fd =3D apprentice_connect(hostname, port); } return apprentice(); } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115027; cv=none; d=zohomail.com; s=zohoarc; b=cOijQDQr8CpFWaztb8tZkhzNdVXCKe2Mfn/fF66xZWKGJxX+sydCGbuH7TmQaqsjbM40LXsD34ZQ4keEF2TSRNb8i38mRzVmmeoyrvVUBccrFgmHVxYBoutczsWGVIBaEUIJobJokmfoixOeRxnRLiLXsITaewUOQBN0jRKDt8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115027; h=Content-Type: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=qsogh1iVORSWncpn9Q6d07KHmeqCKiBimOSa205EF/o=; b=jeNl3DIVYWK2zQAYiqRGhv1nWkm51DfENiU/wca4YirADEmi0en+naxms5Tv5a2iQtxWNzUmJtss4M44SxS14CZPl29es8urO6dn//jJ6uwfdkVl9pFKGlij/nF9cWhkn99hnL6v3AJVqkDu4aj0hsVwoNkb5N7t5wl75v0vQ34= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115027807137.48634244358732; Thu, 21 May 2020 19:37:07 -0700 (PDT) Received: from localhost ([::1]:55142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxYY-0008AK-Gj for importer@patchew.org; Thu, 21 May 2020 22:37:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48172) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWK-00025F-Bi for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:48 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:41737) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWJ-00055z-I9 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:48 -0400 Received: by mail-pg1-x52d.google.com with SMTP id r10so4276232pgv.8 for ; Thu, 21 May 2020 19:34:47 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qsogh1iVORSWncpn9Q6d07KHmeqCKiBimOSa205EF/o=; b=Yo7rGMXbypolOulo6jZnvutW+SAmxwEFHKRUQz1ULYq1OfBzpJkl6iw6WxsFlO/iCq K8aC7Tu+Ok6g2WlFkDZDGRgYNGJI1dV3rj+UMA1zjeRImM76sOwsO0ukAZv7LJ9FhJlU KS7ok2OdGGZldx6hs4H+YRjMWFu3e6uDbvINnnurPXyA/UtGfqVqLnvTZFMpHHwVd3w3 wqRmBIucoVLbYFm3hJ33WYcHsYdnPwefcyBEUKum5a1pHLRtQiN0r7QhjHyJyj2PM3kH TEFD4Xf7cAR0qIifdU0KoQEBoisgtrfwKiltpTqxRYylvyG9nzA0RlAl0nq+z1efS8XE l+Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qsogh1iVORSWncpn9Q6d07KHmeqCKiBimOSa205EF/o=; b=rKHn1qXnF/Np9sHhifGPll4UaOSOD7CXV6FkFWWmx/SUClZKcYeNq+T275/RTszK/i RtR08ynwnyUQgoMxtCnUuC3FzyzUmOtO/jUYIIut6u2eYdXZd4n0PUxPYj1J/6MPw4l+ 9VFxbWcpxXyv1RVejqK950CUO1z3csIfdjGpcCFKIxiVxOfsQr1Edea0auaGMVSat+q2 CzGp8p6yncpSZs3ludiomjvyfdzUIlbBe9tlErOvAJM0wzuYtl4WjUGU8NgQWH+qyee8 czZM75LmsmWkVE6hqHqUWRut0arjCG3tyjl6h8VS5LAihBN4bDcAMCuHTqaLZw0mAyQb KxkA== X-Gm-Message-State: AOAM5337QFTaNHK7BxVXVAQ2da4HktB6r+YEcqZFBSdyJMiv60MiHExk DuqTuVillDh2Ffkz6h7JxfoXPXJlx5Y= X-Google-Smtp-Source: ABdhPJyF7xwPQByPXj1qMHkswo4g4MIzsvSUy7uCKGY8Rfo+4xlh2IOEn701EZmnXDdsA6HlWIczig== X-Received: by 2002:a63:d70b:: with SMTP id d11mr11840970pgg.372.1590114885833; Thu, 21 May 2020 19:34:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 03/25] Hoist trace file and socket opening Date: Thu, 21 May 2020 19:34:18 -0700 Message-Id: <20200522023440.26261-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We will want to share this code with --dump. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- v3: Hoist socket connecting as well as trace file opening. --- risu.c | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/risu.c b/risu.c index 059348f..2f6a677 100644 --- a/risu.c +++ b/risu.c @@ -363,6 +363,29 @@ int main(int argc, char **argv) } } =20 + if (trace) { + if (strcmp(trace_fn, "-") =3D=3D 0) { + comm_fd =3D ismaster ? STDOUT_FILENO : STDIN_FILENO; + } else { + if (ismaster) { + comm_fd =3D open(trace_fn, O_WRONLY | O_CREAT, S_IRWXU); + } else { + comm_fd =3D open(trace_fn, O_RDONLY); + } +#ifdef HAVE_ZLIB + gz_trace_file =3D gzdopen(comm_fd, ismaster ? "wb9" : "rb"); +#endif + } + } else { + if (ismaster) { + fprintf(stderr, "master port %d\n", port); + comm_fd =3D master_connect(port); + } else { + fprintf(stderr, "apprentice host %s port %d\n", hostname, port= ); + comm_fd =3D apprentice_connect(hostname, port); + } + } + imgfile =3D argv[optind]; if (!imgfile) { fprintf(stderr, "Error: must specify image file name\n\n"); @@ -373,34 +396,8 @@ int main(int argc, char **argv) load_image(imgfile); =20 if (ismaster) { - if (trace) { - if (strcmp(trace_fn, "-") =3D=3D 0) { - comm_fd =3D STDOUT_FILENO; - } else { - comm_fd =3D open(trace_fn, O_WRONLY | O_CREAT, S_IRWXU); -#ifdef HAVE_ZLIB - gz_trace_file =3D gzdopen(comm_fd, "wb9"); -#endif - } - } else { - fprintf(stderr, "master port %d\n", port); - comm_fd =3D master_connect(port); - } return master(); } else { - if (trace) { - if (strcmp(trace_fn, "-") =3D=3D 0) { - comm_fd =3D STDIN_FILENO; - } else { - comm_fd =3D open(trace_fn, O_RDONLY); -#ifdef HAVE_ZLIB - gz_trace_file =3D gzdopen(comm_fd, "rb"); -#endif - } - } else { - fprintf(stderr, "apprentice host %s port %d\n", hostname, port= ); - comm_fd =3D apprentice_connect(hostname, port); - } return apprentice(); } } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590114972; cv=none; d=zohomail.com; s=zohoarc; b=gGz7wveZFW/LGyEh8bKlnU0ndVF/gThWxYKe3asSN+i3MswoQOTSdBxfQ7/9jAR9slo6FiIH86af5iJqMBXJe22EXwzJYlbIFFon4qkkpnbV7YszHzSZ/s121N0NGqfnuP9sDEapBMlZUCfkBMOgcc09xNia7l1zkyySk4kqw3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590114972; h=Content-Type: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=W1694WY6F055oZOFF3E5eWwK1wEHGNgMdmDWrbbBY/M=; b=eRognRjxj27MFYo0vg6xI4P5ez7g9hy83tcH8vhFEPHicIANGuaLb6/ZJZ5BiNI44aEKkAc9P34Wr4Xs9Y0DwrHLNpGDBRETnbxXJX9CSMurbnIkLMcFQXo8ox2NVXfgBT9jFgevhhNHufm+prfj/YgEcEO16BIs8NR4wSqj3d8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590114972346217.40758141923675; Thu, 21 May 2020 19:36:12 -0700 (PDT) Received: from localhost ([::1]:49576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxXf-0005bT-3c for importer@patchew.org; Thu, 21 May 2020 22:36:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48178) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWL-00027p-DJ for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:49 -0400 Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]:36957) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWK-000568-Ke for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:49 -0400 Received: by mail-pj1-x1042.google.com with SMTP id q9so4346379pjm.2 for ; Thu, 21 May 2020 19:34:48 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=W1694WY6F055oZOFF3E5eWwK1wEHGNgMdmDWrbbBY/M=; b=GvVBlGh6GZizFuyYHFIE3scoCKsIg/+Pinta/2iI0hpCwVAF9BlsEPmj5d8y+HwmXh p+43R11cG018wFQpJQ2nqBTpazUwJ6xdWAFSInINFG5e7iQkS5T7ZVDoqKEVK5RPXh0e X56Z5V2jXhd4Cz/WRhM1SVBY9leX/FvuX3r8GSf15MJ7QyDGmFtPCK4KpwW93MupSv5V 5B/gxKYA2PvfJGcLVRbjvLiqdlup5ShM6FRS9yB2kSJr74G5VlCdRpxWmhAmJMyXwSwX lA2SH2VRv/V3RFD6LUxRlBOXCPSL3taoUWqEzTLcaoxQb0FUvywYhxLEmSXQKCsE0GWP F2Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=W1694WY6F055oZOFF3E5eWwK1wEHGNgMdmDWrbbBY/M=; b=p6Xxer9PH51JQfpQ49xw1BR6rVUK1kpS9h3bpp5d6eXNGwHE9nenGsiicGQN5hBfLP fWYFTcs7O0CjOAVNs5b1ii3m5E8yo7bhqpm19AyM1t7jCRUtVUFywJX0YlMNgjiRwAOo FfcGKKxU9GYQRni7WLKBIAugJ2kP4wEt7hU1XPqRDoa3e3Fts7pgO23PPkHmCsNQuS96 F6EKnKv9yyEXw3KL8K9FCqStBuMx222b4UoeamKTvG0COjf2Y1m9yKsZs+z3BiZsnbw+ tRYfEtCBKtRbmlhuLFST1Kl64SPZQhNXuwoF7faaSIUxS6RBirSZR4WBx78kLZmSNSaY k4fg== X-Gm-Message-State: AOAM531dIXZnAJCmnlHGq446a6qMJgL7iToMBNPvhafmIcCFkRK5MJW8 J8BD2sGWmttgleIhSf23HtrDt1HLjSU= X-Google-Smtp-Source: ABdhPJwavG/+Ws7FPFuXFk92Xfc2YO87azuBXMj9tAv2+CRLckoKOZPksPC2CCwKe+/SFfwXFUjhjQ== X-Received: by 2002:a17:902:6bcb:: with SMTP id m11mr12262424plt.264.1590114886994; Thu, 21 May 2020 19:34:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 04/25] Adjust tracefile open for write Date: Thu, 21 May 2020 19:34:19 -0700 Message-Id: <20200522023440.26261-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1042; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1042.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Truncate the new output file. Rely on umask to remove group+other file permissions, if desired. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- risu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/risu.c b/risu.c index 2f6a677..819b786 100644 --- a/risu.c +++ b/risu.c @@ -368,7 +368,7 @@ int main(int argc, char **argv) comm_fd =3D ismaster ? STDOUT_FILENO : STDIN_FILENO; } else { if (ismaster) { - comm_fd =3D open(trace_fn, O_WRONLY | O_CREAT, S_IRWXU); + comm_fd =3D open(trace_fn, O_WRONLY | O_CREAT | O_TRUNC, 0= 666); } else { comm_fd =3D open(trace_fn, O_RDONLY); } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115072; cv=none; d=zohomail.com; s=zohoarc; b=IN4+NudJN0zcb056AxZYN/ThfFOQnbAGXxGy93/x1ePaXCSaOJ4El88x73VJIG8hajF5WpW51Qd1sjqU3w+QM2rStIbez60nQ9mjqJN9Y8bqBdWrHEHsEhOJOSQ+z7FZ3HXPD5/ndA8adWwFDmmkxDZP4W6VPFBNxu+W8/AT0Uc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115072; h=Content-Type: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=GXIVgvEnDLOXwbTNGEBPAbiNIboC/MDu6a6Hd36/44g=; b=FsWIb95AE9pxn4zxCeYd2BgTb8CEIPJuxtayALj2N/ZJc2TUr0Cq/jAbeyJxUgVVXY3as8K16q+rG5UvMMSyHUnsbQJx6OCIHFVcz7ClYbEh18nZeXqw6nRjxclNVv9GJKJ65qKKtmM3xHVSP67/ut/NA4H+XTpH5nMV1HS/moo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115072493966.7765894940915; Thu, 21 May 2020 19:37:52 -0700 (PDT) Received: from localhost ([::1]:58024 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxZH-0001dr-1z for importer@patchew.org; Thu, 21 May 2020 22:37:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48184) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWN-0002Cf-8F for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:51 -0400 Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]:44731) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWM-00056I-48 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:50 -0400 Received: by mail-pl1-x641.google.com with SMTP id w19so3802058ply.11 for ; Thu, 21 May 2020 19:34:49 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GXIVgvEnDLOXwbTNGEBPAbiNIboC/MDu6a6Hd36/44g=; b=V8tLQwiEW2fdgwc9KX0ulOVxEB703BehXNuNF5+zJawretRjIBIDv6UEnsaK09E0lH 6tSpvdJzl1VqIv9W3owno1kKB7iOxaUCneb2qFrTSW1CH7/LNgPf2KrMGS6dqSgqGCk0 /l8b5VHaxy+nrojrwL4tCjjkBFp1ynWap0tb+xjTzmLlbKClwB+gi3C0MNThPwFqE58S IfTfZL5BHWSlCWb65vzUk+jq2RuP8M24Dy1LOL4LrtE9DYAJEXtKsVKixTiIEWUIH59j 2h2z+sQuH+mGBgCjs/5iM9MpmHn7OMREoRH5FA8qtBlkClkZsme24uNipWEELj4uqklt E32w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GXIVgvEnDLOXwbTNGEBPAbiNIboC/MDu6a6Hd36/44g=; b=qgkp3+/mRTeKCxWtEcvScaiK6WjnbhiIX1niyVAqahV5ecVUSCqMM+79Yvna7Xrn2C NQ4fMu7Z867pkKAJZx9rxriaHYwU74JUN4Ls8yYs6voqWg3e0Ui/aUW24rsL5U8S8qyz 6Pb8WTEztyZ2vwG5oi0ApRXJtLioTDYuJAKEfC50ucE9mwcMFnGzUF1a38KxiWtPDyik YpZWbNT3mNPq8lZWeNxep+sW5vRubqzHAyciw30T4L4qU1EIArorSBKqKTdmEE52zFPf qVnJjETAckSZwQeWprT9DDxF9lvo7h99PfFMe5boshvTYzBe8ysPWX9nleWwiAWWaCDs bz6g== X-Gm-Message-State: AOAM532YDPwvtkYCRISpjZTaRVivgyASqwLDgaHUkgF4PPL32mJFn6Mh ufRotq4XDCbGwuMbCeR7rBnleAJbEC4= X-Google-Smtp-Source: ABdhPJwtOBqyoLUTchqvmDlpca4uC4hrLtMR/LuUkmGdWPg9Cr00T/1NHgJZ77JgrezXV4UeTH7vZw== X-Received: by 2002:a17:902:23:: with SMTP id 32mr12514073pla.40.1590114888259; Thu, 21 May 2020 19:34:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 05/25] Use EXIT_FAILURE, EXIT_SUCCESS Date: Thu, 21 May 2020 19:34:20 -0700 Message-Id: <20200522023440.26261-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::641; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x641.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Some of the time we exit via the return value from main. This can make it easier to tell what it is we're returning. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- comms.c | 26 +++++++++++++------------- risu.c | 22 +++++++++++----------- risu_reginfo_aarch64.c | 4 ++-- risu_reginfo_i386.c | 2 +- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/comms.c b/comms.c index 6946fd9..861e845 100644 --- a/comms.c +++ b/comms.c @@ -31,7 +31,7 @@ int apprentice_connect(const char *hostname, int port) sock =3D socket(PF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("socket"); - exit(1); + exit(EXIT_FAILURE); } struct hostent *hostinfo; sa.sin_family =3D AF_INET; @@ -39,12 +39,12 @@ int apprentice_connect(const char *hostname, int port) hostinfo =3D gethostbyname(hostname); if (!hostinfo) { fprintf(stderr, "Unknown host %s\n", hostname); - exit(1); + exit(EXIT_FAILURE); } sa.sin_addr =3D *(struct in_addr *) hostinfo->h_addr; if (connect(sock, (struct sockaddr *) &sa, sizeof(sa)) < 0) { perror("connect"); - exit(1); + exit(EXIT_FAILURE); } return sock; } @@ -56,13 +56,13 @@ int master_connect(int port) sock =3D socket(PF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("socket"); - exit(1); + exit(EXIT_FAILURE); } int sora =3D 1; if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &sora, sizeof(sora)) != =3D 0) { perror("setsockopt(SO_REUSEADDR)"); - exit(1); + exit(EXIT_FAILURE); } =20 sa.sin_family =3D AF_INET; @@ -70,11 +70,11 @@ int master_connect(int port) sa.sin_addr.s_addr =3D htonl(INADDR_ANY); if (bind(sock, (struct sockaddr *) &sa, sizeof(sa)) < 0) { perror("bind"); - exit(1); + exit(EXIT_FAILURE); } if (listen(sock, 1) < 0) { perror("listen"); - exit(1); + exit(EXIT_FAILURE); } /* Just block until we get a connection */ fprintf(stderr, "master: waiting for connection on port %d...\n", @@ -84,7 +84,7 @@ int master_connect(int port) int nsock =3D accept(sock, (struct sockaddr *) &csa, &csasz); if (nsock < 0) { perror("accept"); - exit(1); + exit(EXIT_FAILURE); } /* We're done with the server socket now */ close(sock); @@ -104,7 +104,7 @@ static void recv_bytes(int sock, void *pkt, int pktlen) continue; } perror("read failed"); - exit(1); + exit(EXIT_FAILURE); } pktlen -=3D i; p +=3D i; @@ -127,7 +127,7 @@ static void recv_and_discard_bytes(int sock, int pktlen) continue; } perror("read failed"); - exit(1); + exit(EXIT_FAILURE); } pktlen -=3D i; } @@ -186,12 +186,12 @@ int send_data_pkt(int sock, void *pkt, int pktlen) =20 if (safe_writev(sock, iov, 2) =3D=3D -1) { perror("writev failed"); - exit(1); + exit(EXIT_FAILURE); } =20 if (read(sock, &resp, 1) !=3D 1) { perror("read failed"); - exit(1); + exit(EXIT_FAILURE); } return resp; } @@ -217,6 +217,6 @@ void send_response_byte(int sock, int resp) unsigned char r =3D resp; if (write(sock, &r, 1) !=3D 1) { perror("write failed"); - exit(1); + exit(EXIT_FAILURE); } } diff --git a/risu.c b/risu.c index 819b786..26dc116 100644 --- a/risu.c +++ b/risu.c @@ -153,13 +153,13 @@ void apprentice_sigill(int sig, siginfo_t *si, void *= uc) return; case 1: /* end of test */ - exit(0); + exit(EXIT_SUCCESS); default: /* mismatch */ if (trace) { siglongjmp(jmpbuf, 1); } - exit(1); + exit(EXIT_FAILURE); } } =20 @@ -173,7 +173,7 @@ static void set_sigill_handler(void (*fn) (int, siginfo= _t *, void *)) sigemptyset(&sa.sa_mask); if (sigaction(SIGILL, &sa, 0) !=3D 0) { perror("sigaction"); - exit(1); + exit(EXIT_FAILURE); } } =20 @@ -190,11 +190,11 @@ void load_image(const char *imgfile) int fd =3D open(imgfile, O_RDONLY); if (fd < 0) { fprintf(stderr, "failed to open image file %s\n", imgfile); - exit(1); + exit(EXIT_FAILURE); } if (fstat(fd, &st) !=3D 0) { perror("fstat"); - exit(1); + exit(EXIT_FAILURE); } size_t len =3D st.st_size; void *addr; @@ -207,7 +207,7 @@ void load_image(const char *imgfile) 0); if (!addr) { perror("mmap"); - exit(1); + exit(EXIT_FAILURE); } close(fd); image_start =3D addr; @@ -226,7 +226,7 @@ int master(void) if (trace) { fprintf(stderr, "trace complete after %zd checkpoints\n", signal_count); - return 0; + return EXIT_SUCCESS; } else { return report_match_status(false); } @@ -237,7 +237,7 @@ int master(void) fprintf(stderr, "starting image\n"); image_start(); fprintf(stderr, "image returned unexpectedly\n"); - exit(1); + return EXIT_FAILURE; } =20 int apprentice(void) @@ -258,7 +258,7 @@ int apprentice(void) fprintf(stderr, "starting image\n"); image_start(); fprintf(stderr, "image returned unexpectedly\n"); - exit(1); + return EXIT_FAILURE; } =20 int ismaster; @@ -355,7 +355,7 @@ int main(int argc, char **argv) break; case '?': usage(); - exit(1); + return EXIT_FAILURE; default: assert(c >=3D FIRST_ARCH_OPT); process_arch_opt(c, optarg); @@ -390,7 +390,7 @@ int main(int argc, char **argv) if (!imgfile) { fprintf(stderr, "Error: must specify image file name\n\n"); usage(); - exit(1); + return EXIT_FAILURE; } =20 load_image(imgfile); diff --git a/risu_reginfo_aarch64.c b/risu_reginfo_aarch64.c index 00d1c8b..028c690 100644 --- a/risu_reginfo_aarch64.c +++ b/risu_reginfo_aarch64.c @@ -51,7 +51,7 @@ void process_arch_opt(int opt, const char *arg) =20 if (test_sve <=3D 0 || test_sve > SVE_VQ_MAX) { fprintf(stderr, "Invalid value for VQ (1-%d)\n", SVE_VQ_MAX); - exit(1); + exit(EXIT_FAILURE); } want =3D sve_vl_from_vq(test_sve); got =3D prctl(PR_SVE_SET_VL, want); @@ -62,7 +62,7 @@ void process_arch_opt(int opt, const char *arg) fprintf(stderr, "Unsupported value for VQ (%d !=3D %d)\n", test_sve, (int)sve_vq_from_vl(got)); } - exit(1); + exit(EXIT_FAILURE); } #else abort(); diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c index 194e0ad..60fc239 100644 --- a/risu_reginfo_i386.c +++ b/risu_reginfo_i386.c @@ -69,7 +69,7 @@ void process_arch_opt(int opt, const char *arg) fprintf(stderr, "Unable to parse '%s' in '%s' into an xfeatures intege= r mask\n", endptr, arg); - exit(1); + exit(EXIT_FAILURE); } } } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115141; cv=none; d=zohomail.com; s=zohoarc; b=DztQTNNNZBWj/ILVHfwBRqJaKgnr+7pTadKILapaMP3/x7p7nMsyQu5/JBvqUSAjzbM531jJsjcshHfcT1pDTDmIX/pQ/zN6w0zdnBEi8qXLwUQvatWl670FWRIQ7VTAXErFnDy6z63P/CPvV5RhfjlZ25agG8awH0Xo31gWeHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115141; h=Content-Type: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=CpTMXKHcoiytZRid5gwjf0q94Tx9HJK5chSS8lZYa0c=; b=ZhnrYe4YVzrx8f4Pd0ciZzT0M5v6Uicg2isNCY2Xi1XVB9H1Wl8AqOX902XiJF80gZURN0gQJhokrKkkDMMioUaN5QNWHgtlFh5aStR1OIyd9rIkAPK8D2XFE/xvNWE36YzSu2jfVVk/twXf1BigxFxSVN91Yp95r9uPP8gLvSE= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115141588626.2382052020288; Thu, 21 May 2020 19:39:01 -0700 (PDT) Received: from localhost ([::1]:35136 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxaO-0003mJ-Bs for importer@patchew.org; Thu, 21 May 2020 22:39:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48190) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWO-0002F3-4N for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:52 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:45078) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWN-00056N-A6 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:51 -0400 Received: by mail-pl1-x644.google.com with SMTP id u22so3800078plq.12 for ; Thu, 21 May 2020 19:34:50 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CpTMXKHcoiytZRid5gwjf0q94Tx9HJK5chSS8lZYa0c=; b=GeKIMm9LF31aLach7PhMa4JuTyVQ84YVnwA6UrIdpVF4hJCo3uo8D2tmNJG/AG6YNq 2QxTq8MfklRNjSYR8+Z4KwqbHTcBDi4dQOBJ9LLfs4m7kwai/Kpn4FaQtx0xJZkj73L7 hVFJKdkPE5d5nxtYIWauEHlhKhlU9UCN4efgC97wrWI0W5iZTdlLJK1q0pb6aMYjsAxU wqW3fBGpuJFohfytqvhxS4wjqDhNN+Ytb2DwzwrhHVrvQ46y2RYHSW0LGumBsyySz/t+ Q9MsLO+Q1VLj90bUlYqGoqFFP8N1IFotq7etyfQod3OAavYuB9Kf66AncMwfRRlD/9kn 9Uyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CpTMXKHcoiytZRid5gwjf0q94Tx9HJK5chSS8lZYa0c=; b=UdOUX4K50eusC1sLJsy5MM7SlGbYJV7xYS/pjfzvBq7wFIhU0SqoMg7ghLxqeulb3w cs/MF/wO+snqsJCjN3gAhevTu+/ZW1/ElS/sDNk7xz457p593sqtfxtdiuPdwEkVU32A 3VZ6X8oy7lkqZdxqWZVoeAl6F4rBokNn0cSqAf24M0TFzeSIXbRfQXNIZ9Il87/hXnyL /gnw3RePT4TIWAq2z3TwMpHk6pps4xBD+s5jWusGwtMUt4hXWFhvv21Qxqo71dDXU9qK 5FNa7TGOtOPJxGuduWK2YxSz3UdBqAp3/mofuOCG87evOYSzJD0MP0tPFbp8A2o8T61T z5Gg== X-Gm-Message-State: AOAM5311f6m0a1pzW5BkBH3aVrjw/aPo1VBwl36R0edRL30Db8zWAmqc 7EN48WzbJerul/jK1O5hO1GbEaN7RD4= X-Google-Smtp-Source: ABdhPJwsbKoL+88FMbr6lfFWByB3LmPWOZYOdCjkk5sbpWMkc6VjV1b8oDRrN1nsYNnx0nGm/160Sg== X-Received: by 2002:a17:90a:fc8b:: with SMTP id ci11mr1786607pjb.40.1590114889697; Thu, 21 May 2020 19:34:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 06/25] Make some risu.c symbols static Date: Thu, 21 May 2020 19:34:21 -0700 Message-Id: <20200522023440.26261-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::644; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x644.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) These are unused in other translation units. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/risu.c b/risu.c index 26dc116..ab17c71 100644 --- a/risu.c +++ b/risu.c @@ -31,18 +31,18 @@ void *memblock; =20 static int comm_fd; -bool trace; -size_t signal_count; +static bool trace; +static size_t signal_count; =20 #ifdef HAVE_ZLIB #include -gzFile gz_trace_file; +static gzFile gz_trace_file; #define TRACE_TYPE "compressed" #else #define TRACE_TYPE "uncompressed" #endif =20 -sigjmp_buf jmpbuf; +static sigjmp_buf jmpbuf; =20 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) =20 @@ -113,7 +113,7 @@ void respond_trace(int r) } } =20 -void master_sigill(int sig, siginfo_t *si, void *uc) +static void master_sigill(int sig, siginfo_t *si, void *uc) { int r; signal_count++; @@ -135,7 +135,7 @@ void master_sigill(int sig, siginfo_t *si, void *uc) } } =20 -void apprentice_sigill(int sig, siginfo_t *si, void *uc) +static void apprentice_sigill(int sig, siginfo_t *si, void *uc) { int r; signal_count++; @@ -180,9 +180,9 @@ static void set_sigill_handler(void (*fn) (int, siginfo= _t *, void *)) typedef void entrypoint_fn(void); =20 uintptr_t image_start_address; -entrypoint_fn *image_start; +static entrypoint_fn *image_start; =20 -void load_image(const char *imgfile) +static void load_image(const char *imgfile) { /* Load image file into memory as executable */ struct stat st; @@ -214,7 +214,7 @@ void load_image(const char *imgfile) image_start_address =3D (uintptr_t) addr; } =20 -int master(void) +static int master(void) { if (sigsetjmp(jmpbuf, 1)) { #ifdef HAVE_ZLIB @@ -240,7 +240,7 @@ int master(void) return EXIT_FAILURE; } =20 -int apprentice(void) +static int apprentice(void) { if (sigsetjmp(jmpbuf, 1)) { #ifdef HAVE_ZLIB @@ -261,9 +261,9 @@ int apprentice(void) return EXIT_FAILURE; } =20 -int ismaster; +static int ismaster; =20 -void usage(void) +static void usage(void) { fprintf(stderr, "Usage: risu [--master] [--host ] [--port ] " --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115141; cv=none; d=zohomail.com; s=zohoarc; b=AbhJAPzTIDn9y2ps5C9ASU2Zn9Q+wO2vYEVwz3pHN2FWOpgPC/aCjyKJiw9fRxG1lQW/9w+q1hQ5OAHVbfuU37sRzy9YkGR/Wmgo1HkLhv8+wXfeGPsH/UdAl58KXjLdyBi3e/n+kClsluP4+LVFnvNh2kWBwZJ1z//gIhDgkyo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115141; h=Content-Type: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=pUDhKq2QDEDanz0bWwiGRznNEu5AkBEdSOmZLuPk6MM=; b=ErYJBqBQEXuB2XqyCTtiKauDd7VDkRIdXKGWpyF+xNAeOQ/SlVHZ+Tyfs0uHObao/je4rM7DUJeMjYrHt2wq4V2F+VVPH9ikaPf1uP/eVNXzG8N+E+XzTKLW6LyshY92WEgmutD5zTtUE6LGGHrt1DZBvYK6EyGLiH/lRoRBnNU= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159011514113474.93281824675967; Thu, 21 May 2020 19:39:01 -0700 (PDT) Received: from localhost ([::1]:35086 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxaN-0003l6-PR for importer@patchew.org; Thu, 21 May 2020 22:38:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWP-0002J8-Ot for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:53 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:42280) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWO-00056U-LC for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:53 -0400 Received: by mail-pl1-x634.google.com with SMTP id x11so2823481plv.9 for ; Thu, 21 May 2020 19:34:52 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pUDhKq2QDEDanz0bWwiGRznNEu5AkBEdSOmZLuPk6MM=; b=kAhNLlZzg2GBWJw+ycBl3L6CRTnj/U9QsqOlpiX/UYaf5Ujo/5+D6ILOgKr+5SMmY5 xG96qiAGbapeuTLSl5gA66pwQ7fPVqeqE+Jx5a8jLgme/nyy7dZc8niVvptL6oOKdGcS N/Vaj75ePGXGmlLG/usRefmMcbMnKRyqvsJsFLQSyy+rWaIju3Qiki677TvLDt+kzb3B 6Lfji/PYU57qxaBTUfWkDXEYsGsue0EKXJaIul60QhT+NUdecdbA4ERKOl8XIjETf5pA yFvu40r/NGeEY4u2qKjz+QsHVudMpemUF0QHUGJDqiBT7A4E3Rbp6MpHSPqjr23zRYFR lRbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pUDhKq2QDEDanz0bWwiGRznNEu5AkBEdSOmZLuPk6MM=; b=RwvBXF8b6AownatS+4SIKVm3Ynh/Z+h02XYRCciD0zGhHxLCyXh+BkaBDHF+LfBd1e o8zJcS584xaIhmcexBzoTvkbqFhom6enafwgm3fYCv1/DeKQm7IW7x6ZLybqSbzUu7zy iHuwiZObLDOjDcjSDNkb8XAJFQTXNJcw4a2Ba86Ke/7lcfE6TyEnCoZ9EAZnB8ZFJ4bL scvjBEP/wVBh5Ubf8uGVShOaIs3QIeJtMieWzBljhMof6mVHAgF3/MxzuOhzi3TOAbpu 7bYmePoNSFparnfdy0Xdll/pCGK3i2l9MFKLmJiJuGjuZx7MRyjCF96XF90bqsO0A222 JXFQ== X-Gm-Message-State: AOAM532JkYsUmVn5QbkqwsvGL5lalFVikr5t4K/DowV5/UUh8U8mwiEX TOsTMbQehwmec/qdFWD1v62pUEqXORs= X-Google-Smtp-Source: ABdhPJzDArsxuKrqTarxRaieZmLVVUiEIrz5Wplp6LNMz8m02DhwWNK1Kp7wqSlIX8jzWUr5OnfCLQ== X-Received: by 2002:a17:902:a513:: with SMTP id s19mr9034196plq.168.1590114890804; Thu, 21 May 2020 19:34:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 07/25] Add enum RisuOp Date: Thu, 21 May 2020 19:34:22 -0700 Message-Id: <20200522023440.26261-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Formalize the set of defines, plus -1, into an enum. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.h | 23 +++++++++++++++-------- reginfo.c | 32 +++++++++++++++++++------------- risu_aarch64.c | 6 +++--- risu_arm.c | 6 +++--- risu_i386.c | 4 ++-- risu_m68k.c | 4 ++-- risu_ppc64.c | 4 ++-- 7 files changed, 46 insertions(+), 33 deletions(-) diff --git a/risu.h b/risu.h index e2b4508..a7aa929 100644 --- a/risu.h +++ b/risu.h @@ -45,11 +45,17 @@ extern uintptr_t image_start_address; extern void *memblock; =20 /* Ops code under test can request from risu: */ -#define OP_COMPARE 0 -#define OP_TESTEND 1 -#define OP_SETMEMBLOCK 2 -#define OP_GETMEMBLOCK 3 -#define OP_COMPAREMEM 4 +typedef enum { + /* Any other sigill besides the destignated undefined insn. */ + OP_SIGILL =3D -1, + + /* These are generated by the designated undefined insn. */ + OP_COMPARE =3D 0, + OP_TESTEND =3D 1, + OP_SETMEMBLOCK =3D 2, + OP_GETMEMBLOCK =3D 3, + OP_COMPAREMEM =3D 4, +} RisuOp; =20 /* The memory block should be this long */ #define MEMBLOCKLEN 8192 @@ -114,10 +120,11 @@ void set_ucontext_paramreg(void *vuc, uint64_t value); /* Return the value of the parameter register from a reginfo. */ uint64_t get_reginfo_paramreg(struct reginfo *ri); =20 -/* Return the risu operation number we have been asked to do, - * or -1 if this was a SIGILL for a non-risuop insn. +/* + * Return the risu operation number we have been asked to do, + * or OP_SIGILL if this was a SIGILL for a non-risuop insn. */ -int get_risuop(struct reginfo *ri); +RisuOp get_risuop(struct reginfo *ri); =20 /* Return the PC from a reginfo */ uintptr_t get_pc(struct reginfo *ri); diff --git a/reginfo.c b/reginfo.c index 1b2a821..2d67c93 100644 --- a/reginfo.c +++ b/reginfo.c @@ -11,7 +11,7 @@ =20 #include #include - +#include #include "risu.h" =20 struct reginfo master_ri, apprentice_ri; @@ -25,7 +25,7 @@ int send_register_info(write_fn write_fn, void *uc) { struct reginfo ri; trace_header_t header; - int op; + RisuOp op; =20 reginfo_init(&ri, uc); op =3D get_risuop(&ri); @@ -38,11 +38,18 @@ int send_register_info(write_fn write_fn, void *uc) } =20 switch (op) { + case OP_COMPARE: case OP_TESTEND: - write_fn(&ri, reginfo_size()); - /* if we are tracing write_fn will return 0 unlike a remote - end, hence we force return of 1 here */ - return 1; + case OP_SIGILL: + /* + * Do a simple register compare on (a) explicit request + * (b) end of test (c) a non-risuop UNDEF + */ + if (write_fn(&ri, reginfo_size()) !=3D 0) { + return -1; + } + /* For OP_TEST_END, force return 1 to exit. */ + return op =3D=3D OP_TESTEND; case OP_SETMEMBLOCK: memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&ri); break; @@ -53,12 +60,8 @@ int send_register_info(write_fn write_fn, void *uc) case OP_COMPAREMEM: return write_fn(memblock, MEMBLOCKLEN); break; - case OP_COMPARE: default: - /* Do a simple register compare on (a) explicit request - * (b) end of test (c) a non-risuop UNDEF - */ - return write_fn(&ri, reginfo_size()); + abort(); } return 0; } @@ -74,8 +77,9 @@ int send_register_info(write_fn write_fn, void *uc) int recv_and_compare_register_info(read_fn read_fn, respond_fn resp_fn, void *uc) { - int resp =3D 0, op; + int resp =3D 0; trace_header_t header; + RisuOp op; =20 reginfo_init(&master_ri, uc); op =3D get_risuop(&master_ri); @@ -97,7 +101,7 @@ int recv_and_compare_register_info(read_fn read_fn, switch (op) { case OP_COMPARE: case OP_TESTEND: - default: + case OP_SIGILL: /* Do a simple register compare on (a) explicit request * (b) end of test (c) a non-risuop UNDEF */ @@ -130,6 +134,8 @@ int recv_and_compare_register_info(read_fn read_fn, } resp_fn(resp); break; + default: + abort(); } =20 return resp; diff --git a/risu_aarch64.c b/risu_aarch64.c index 492d141..f8a8412 100644 --- a/risu_aarch64.c +++ b/risu_aarch64.c @@ -29,16 +29,16 @@ uint64_t get_reginfo_paramreg(struct reginfo *ri) return ri->regs[0]; } =20 -int get_risuop(struct reginfo *ri) +RisuOp get_risuop(struct reginfo *ri) { /* Return the risuop we have been asked to do - * (or -1 if this was a SIGILL for a non-risuop insn) + * (or OP_SIGILL if this was a SIGILL for a non-risuop insn) */ uint32_t insn =3D ri->faulting_insn; uint32_t op =3D insn & 0xf; uint32_t key =3D insn & ~0xf; uint32_t risukey =3D 0x00005af0; - return (key !=3D risukey) ? -1 : op; + return (key !=3D risukey) ? OP_SIGILL : op; } =20 uintptr_t get_pc(struct reginfo *ri) diff --git a/risu_arm.c b/risu_arm.c index 5fcb2a5..a20bf73 100644 --- a/risu_arm.c +++ b/risu_arm.c @@ -56,17 +56,17 @@ uint64_t get_reginfo_paramreg(struct reginfo *ri) return ri->gpreg[0]; } =20 -int get_risuop(struct reginfo *ri) +RisuOp get_risuop(struct reginfo *ri) { /* Return the risuop we have been asked to do - * (or -1 if this was a SIGILL for a non-risuop insn) + * (or OP_SIGILL if this was a SIGILL for a non-risuop insn) */ uint32_t insn =3D ri->faulting_insn; int isz =3D ri->faulting_insn_size; uint32_t op =3D insn & 0xf; uint32_t key =3D insn & ~0xf; uint32_t risukey =3D (isz =3D=3D 2) ? 0xdee0 : 0xe7fe5af0; - return (key !=3D risukey) ? -1 : op; + return (key !=3D risukey) ? OP_SIGILL : op; } =20 uintptr_t get_pc(struct reginfo *ri) diff --git a/risu_i386.c b/risu_i386.c index 9962b8f..127e816 100644 --- a/risu_i386.c +++ b/risu_i386.c @@ -38,12 +38,12 @@ uint64_t get_reginfo_paramreg(struct reginfo *ri) return ri->gregs[REG_E(AX)]; } =20 -int get_risuop(struct reginfo *ri) +RisuOp get_risuop(struct reginfo *ri) { if ((ri->faulting_insn & 0xf8ffff) =3D=3D 0xc0b90f) { /* UD1 %xxx,%eax= */ return (ri->faulting_insn >> 16) & 7; } - return -1; + return OP_SIGILL; } =20 uintptr_t get_pc(struct reginfo *ri) diff --git a/risu_m68k.c b/risu_m68k.c index 1056eef..acdd57a 100644 --- a/risu_m68k.c +++ b/risu_m68k.c @@ -25,13 +25,13 @@ uint64_t get_reginfo_paramreg(struct reginfo *ri) return ri->gregs[R_A0]; } =20 -int get_risuop(struct reginfo *ri) +RisuOp get_risuop(struct reginfo *ri) { uint32_t insn =3D ri->faulting_insn; uint32_t op =3D insn & 0xf; uint32_t key =3D insn & ~0xf; uint32_t risukey =3D 0x4afc7000; - return (key !=3D risukey) ? -1 : op; + return (key !=3D risukey) ? OP_SIGILL : op; } =20 uintptr_t get_pc(struct reginfo *ri) diff --git a/risu_ppc64.c b/risu_ppc64.c index a3028f7..9df8d58 100644 --- a/risu_ppc64.c +++ b/risu_ppc64.c @@ -32,13 +32,13 @@ uint64_t get_reginfo_paramreg(struct reginfo *ri) return ri->gregs[0]; } =20 -int get_risuop(struct reginfo *ri) +RisuOp get_risuop(struct reginfo *ri) { uint32_t insn =3D ri->faulting_insn; uint32_t op =3D insn & 0xf; uint32_t key =3D insn & ~0xf; uint32_t risukey =3D 0x00005af0; - return (key !=3D risukey) ? -1 : op; + return (key !=3D risukey) ? OP_SIGILL : op; } =20 uintptr_t get_pc(struct reginfo *ri) --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115216; cv=none; d=zohomail.com; s=zohoarc; b=FQqAidF0UVBtjbDZ/gndFNfEFxSB73Sfvi7aiFJ2QQ7Z4GVCue60tP5l3D3FeOVMRCdQllIgozpQGwQxfjg2vad0iWcZptP0/Ki49FteZmRLVk3SgpAF7k6prm8F9basKo17UJZB959kLyP1SEz84Eg7WeCI5wIFJeMVvmMrp/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115216; h=Content-Type: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=3G4PJj+ygy8yy6dNKzxkyDjb06D6oXBdXQgauyjKNKc=; b=NMZwpX9jrrZ5OUkHIjE0CMft9/nERSbAR8p9o69b+MPLRo7zXR7NfaNajq5p6CEUNhyO3TLDZxDo1D+GiQoPNafjZxbyjAHDmvbnalJZaMrGxWl3+lWWAUw/5K0yeSNm+/XBgrh3oowbVpMSchUzIA1Xp4dUR7xQHzx9Vat8wq0= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115216944905.4064933356757; Thu, 21 May 2020 19:40:16 -0700 (PDT) Received: from localhost ([::1]:41528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxbb-0006J5-Or for importer@patchew.org; Thu, 21 May 2020 22:40:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48202) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWQ-0002ML-Vz for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:55 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:45078) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWP-00056d-U2 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:54 -0400 Received: by mail-pl1-x643.google.com with SMTP id u22so3800107plq.12 for ; Thu, 21 May 2020 19:34:53 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3G4PJj+ygy8yy6dNKzxkyDjb06D6oXBdXQgauyjKNKc=; b=VYzFDTzEPy0A2kxWMWYkLaRVXsZ//5tFKncxAGUD2ZuPjx+xpuwaOLVyCAtQXz4x6R GU5gN9YV3x7Ps2RlJHECsvuN6s0hzf6vVXOwRm0XV3Vy6tmfCD3TJ4sYc6b0auV3SXmB ltNs1MVKO6EasxaMRKzr+V6LTB0WX2hjEbgj+ceE81l2QHJ5gaqogLB72a6mIzXKZLg5 rb+KG98p+9mZaU9mYK2iyQpyl3wIEZEi1O6Ef4CU6CS6df2Ht59HT2WWzrwsY4zhIq/T NLQ3+0z67jT76lybRHgvsYegfVVyIjeLzLYTpeoF1Hg/p9qdPjKuSMVSqEVufgVuAS2R +bWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3G4PJj+ygy8yy6dNKzxkyDjb06D6oXBdXQgauyjKNKc=; b=O8ZM50MJvry9y/uG6xWrUBL0uIBM4y9Og6/lC29SI6OgTAI8duhCjhnAmyjlEh7orw J+OCgWisl6hLET2KbdoleF0KiBOvjVxnUDYu+ISE7osof75zg8NwvxheZR0xefDlgM5G xtRxiPU5n6Zuq1Suit2Iq9ZIS3Wxns04IHWyoN2cAQkLh/u8liuz7LILI+8ONZbxlJpb VvfqfrFeWakC7seCI5dyuffzCnRbwXK3/Q7lvbnMublxB2EO0DXrRgAlYVqFnUvILhtE H7N8wB2d4fnL+UrtEeF+bEWS5cDMFHhE26FROhoRxr0DiFdsILEWomJZCecAXzRKnJRo hK3Q== X-Gm-Message-State: AOAM530lY357J8keqYCkTxkzCJKbJJUxWeiBuHRgEoCOyMWMzfBAkFz0 Y6heWq2z43Jzp9MhgjewXvpGt6talPU= X-Google-Smtp-Source: ABdhPJxFBBdYzijXj7TZFnL3HNltBPk4vblwyk7sEyKUZH8yKKdmEDbwLp7jV7ubIKSxP1pE0vhUzg== X-Received: by 2002:a17:90a:7087:: with SMTP id g7mr1902831pjk.70.1590114892095; Thu, 21 May 2020 19:34:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 08/25] Add enum RisuResult Date: Thu, 21 May 2020 19:34:23 -0700 Message-Id: <20200522023440.26261-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::643; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x643.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Formalize the random set of numbers into an enum. Doing this makes it easy to see that one of the responses in recv_and_compare_register_info was inconsistent. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.h | 25 +++++++++++++++++-------- reginfo.c | 32 ++++++++++++++++---------------- risu.c | 18 +++++++++--------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/risu.h b/risu.h index a7aa929..e6d07eb 100644 --- a/risu.h +++ b/risu.h @@ -57,6 +57,14 @@ typedef enum { OP_COMPAREMEM =3D 4, } RisuOp; =20 +/* Result of operation */ +typedef enum { + RES_OK =3D 0, + RES_END, + RES_MISMATCH, + RES_BAD_IO, +} RisuResult; + /* The memory block should be this long */ #define MEMBLOCKLEN 8192 =20 @@ -82,20 +90,21 @@ typedef struct { */ typedef int (*write_fn) (void *ptr, size_t bytes); typedef int (*read_fn) (void *ptr, size_t bytes); -typedef void (*respond_fn) (int response); +typedef void (*respond_fn) (RisuResult response); =20 -/* Send the register information from the struct ucontext down the socket. - * Return the response code from the master. +/* + * Send the register information from the struct ucontext down the socket. * NB: called from a signal handler. */ -int send_register_info(write_fn write_fn, void *uc); +RisuResult send_register_info(write_fn write_fn, void *uc); =20 -/* Read register info from the socket and compare it with that from the - * ucontext. Return 0 for match, 1 for end-of-test, 2 for mismatch. +/* + * Read register info from the socket and compare it with that from the + * ucontext. * NB: called from a signal handler. */ -int recv_and_compare_register_info(read_fn read_fn, - respond_fn respond, void *uc); +RisuResult recv_and_compare_register_info(read_fn read_fn, + respond_fn respond, void *uc); =20 /* Print a useful report on the status of the last comparison * done in recv_and_compare_register_info(). This is called on diff --git a/reginfo.c b/reginfo.c index 2d67c93..b909a1f 100644 --- a/reginfo.c +++ b/reginfo.c @@ -21,7 +21,7 @@ uint8_t apprentice_memblock[MEMBLOCKLEN]; static int mem_used; static int packet_mismatch; =20 -int send_register_info(write_fn write_fn, void *uc) +RisuResult send_register_info(write_fn write_fn, void *uc) { struct reginfo ri; trace_header_t header; @@ -34,7 +34,7 @@ int send_register_info(write_fn write_fn, void *uc) header.pc =3D get_pc(&ri); header.risu_op =3D op; if (write_fn(&header, sizeof(header)) !=3D 0) { - return -1; + return RES_BAD_IO; } =20 switch (op) { @@ -46,10 +46,10 @@ int send_register_info(write_fn write_fn, void *uc) * (b) end of test (c) a non-risuop UNDEF */ if (write_fn(&ri, reginfo_size()) !=3D 0) { - return -1; + return RES_BAD_IO; } /* For OP_TEST_END, force return 1 to exit. */ - return op =3D=3D OP_TESTEND; + return op =3D=3D OP_TESTEND ? RES_END : RES_OK; case OP_SETMEMBLOCK: memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&ri); break; @@ -63,7 +63,7 @@ int send_register_info(write_fn write_fn, void *uc) default: abort(); } - return 0; + return RES_OK; } =20 /* Read register info from the socket and compare it with that from the @@ -74,10 +74,10 @@ int send_register_info(write_fn write_fn, void *uc) * that says whether it is register or memory data, so if the two * sides get out of sync then we will fail obscurely. */ -int recv_and_compare_register_info(read_fn read_fn, - respond_fn resp_fn, void *uc) +RisuResult recv_and_compare_register_info(read_fn read_fn, + respond_fn resp_fn, void *uc) { - int resp =3D 0; + RisuResult resp =3D RES_OK; trace_header_t header; RisuOp op; =20 @@ -85,18 +85,18 @@ int recv_and_compare_register_info(read_fn read_fn, op =3D get_risuop(&master_ri); =20 if (read_fn(&header, sizeof(header)) !=3D 0) { - return -1; + return RES_BAD_IO; } =20 if (header.risu_op !=3D op) { /* We are out of sync */ - resp =3D 2; + resp =3D RES_BAD_IO; resp_fn(resp); return resp; } =20 /* send OK for the header */ - resp_fn(0); + resp_fn(RES_OK); =20 switch (op) { case OP_COMPARE: @@ -107,12 +107,12 @@ int recv_and_compare_register_info(read_fn read_fn, */ if (read_fn(&apprentice_ri, reginfo_size())) { packet_mismatch =3D 1; - resp =3D 2; + resp =3D RES_BAD_IO; } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { /* register mismatch */ - resp =3D 2; + resp =3D RES_MISMATCH; } else if (op =3D=3D OP_TESTEND) { - resp =3D 1; + resp =3D RES_END; } resp_fn(resp); break; @@ -127,10 +127,10 @@ int recv_and_compare_register_info(read_fn read_fn, mem_used =3D 1; if (read_fn(apprentice_memblock, MEMBLOCKLEN)) { packet_mismatch =3D 1; - resp =3D 2; + resp =3D RES_BAD_IO; } else if (memcmp(memblock, apprentice_memblock, MEMBLOCKLEN) !=3D= 0) { /* memory mismatch */ - resp =3D 2; + resp =3D RES_MISMATCH; } resp_fn(resp); break; diff --git a/risu.c b/risu.c index ab17c71..7b14f72 100644 --- a/risu.c +++ b/risu.c @@ -69,7 +69,7 @@ int write_trace(void *ptr, size_t bytes) return (res =3D=3D bytes) ? 0 : 1; } =20 -void respond_sock(int r) +void respond_sock(RisuResult r) { send_response_byte(comm_fd, r); } @@ -98,11 +98,11 @@ int read_trace(void *ptr, size_t bytes) return (res =3D=3D bytes) ? 0 : 1; } =20 -void respond_trace(int r) +void respond_trace(RisuResult r) { switch (r) { - case 0: /* test ok */ - case 1: /* end of test */ + case RES_OK: + case RES_END: break; default: /* mismatch - if tracing we need to report, otherwise barf */ @@ -115,7 +115,7 @@ void respond_trace(int r) =20 static void master_sigill(int sig, siginfo_t *si, void *uc) { - int r; + RisuResult r; signal_count++; =20 if (trace) { @@ -125,7 +125,7 @@ static void master_sigill(int sig, siginfo_t *si, void = *uc) } =20 switch (r) { - case 0: + case RES_OK: /* match OK */ advance_pc(uc); return; @@ -137,7 +137,7 @@ static void master_sigill(int sig, siginfo_t *si, void = *uc) =20 static void apprentice_sigill(int sig, siginfo_t *si, void *uc) { - int r; + RisuResult r; signal_count++; =20 if (trace) { @@ -147,11 +147,11 @@ static void apprentice_sigill(int sig, siginfo_t *si,= void *uc) } =20 switch (r) { - case 0: + case RES_OK: /* match OK */ advance_pc(uc); return; - case 1: + case RES_END: /* end of test */ exit(EXIT_SUCCESS); default: --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115303; cv=none; d=zohomail.com; s=zohoarc; b=jW2YTUR9TSPIvf1MrzRKNR4i5zRwvCbpXJ+iTdcvBPvMoDnkgV29USB40rxleQY9oT2Ek1OG96m4TLyM8ezYzrIR2O8/5f9NOoBBZIl8kabj4NhYixBUmXs3PkvpsxklQ97Xv0iMpAApZqcXpABAkXZOmNTi4Rv6a6JT9cXul1U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115303; h=Content-Type: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=hXiDJogXpOZ8s/dlpDZsG+PYSCUe+WH+1ZPNXE4fyIc=; b=kX8S0L4EUczk8k7jIqK3JRyH+uVxy3hX9ArWe/v0Xgg+/MpLTHTeNEhHrUsqEztjHBIv1KH5LwxNUCHGfPgSJiiemolqjQ+1t80d7uarza+REBvvB/D+wXk9USsmkiRQFH2/k2G0LYRl2zjy9jwwdetxiRXvdlV+oMrSTur86Ys= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115303536372.8744598160598; Thu, 21 May 2020 19:41:43 -0700 (PDT) Received: from localhost ([::1]:47948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxd0-0001C1-A7 for importer@patchew.org; Thu, 21 May 2020 22:41:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWS-0002Pp-Gb for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:56 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]:41330) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWR-00056m-6y for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:56 -0400 Received: by mail-pl1-x636.google.com with SMTP id a13so3818050pls.8 for ; Thu, 21 May 2020 19:34:54 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hXiDJogXpOZ8s/dlpDZsG+PYSCUe+WH+1ZPNXE4fyIc=; b=y8oq2nftNUkDv7Z2gNTLbZATHAmWJH/x/kF1QBHHzAzZBMEUmX1crqzdmdBk3Qcr/K 5K4TA5o/UnBMxhowtYzwILfpvLB/Mz2RtepAvwNW9tw4NnaoU87rE10GI5pWfWfgPOYl xg01RVrJ4hrNZX1EZy9aJAY47yh/hEAOGF+SPZrFuXZYP9ueQNcMpj8QvUhzmWMagZFg iTboUdcVpRdEye8u7XvbTEp9dUmD9Hbu1KPLzfaDThCMFuqeTyhWCB0ADkra1gBFPgdY 2I9UITnAf7/w2y0WqEvlIOKhpY5DinzbwBsRfBnpoSB1NzFd807iJBaArymPxtBGgITV F0sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hXiDJogXpOZ8s/dlpDZsG+PYSCUe+WH+1ZPNXE4fyIc=; b=C/KnhE0XqQkmsXRUjpJ/Pi8R47+TEvb08pzeoHjHjpz9/sYssGKWbDHZz8Emc/D8a0 VeuI5DpxV9NkQXG/AvQkTnJaHBYq22rf6pjTHw1GET+WDU7sznhQLqWKvEmE5M6lJ+fE 7t5Akt9hBde4wK2a6QXU8RUv/GXSuC5MjC7waO7wxpiNfYVGPQxOG7Nywj+TS+3FraAi LT3ogihlho968PrInY0TJ1NIzBrdB+RSun+CxCpY/XXLjP2F6vN+z2MbOA8ZmyqD6ndX D7CgVHgMgIZgHRHgT1lDEOk4RCzepF7iUoq2EjduPHInfzp3RKL48iDBhuJuaKDGP5PZ OikQ== X-Gm-Message-State: AOAM5312/7g0nREDKvidFMXxHbd/xrnXs/sRTJqMTThA5E5W2U/fAf8B BZbeMiiu7pBsT2sOGGLUJJT3441Evfc= X-Google-Smtp-Source: ABdhPJwhB0kmesTA1qj6vV/wvb4hszrS/bxHTVUFvRKehEJuZPlbqEl4Qp3RO4lLJRX8tl2V86EWLQ== X-Received: by 2002:a17:90b:344d:: with SMTP id lj13mr1869879pjb.160.1590114893353; Thu, 21 May 2020 19:34:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 09/25] Unify i/o functions and use RisuResult Date: Thu, 21 May 2020 19:34:24 -0700 Message-Id: <20200522023440.26261-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Push the trace check down from the function calling the reginfo function down into the i/o function. This means we don't have to pass a function pointer. Return a RisuResult from the i/o functions. This fixes a minor bug in send_register_info (even before the conversion to RisuResult), which returned the write_fn result directly. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.h | 32 +++++++++------------- comms.c | 8 +++--- reginfo.c | 60 ++++++++++++++++++++-------------------- risu.c | 82 ++++++++++++++++++++++--------------------------------- 4 files changed, 81 insertions(+), 101 deletions(-) diff --git a/risu.h b/risu.h index e6d07eb..c83b803 100644 --- a/risu.h +++ b/risu.h @@ -34,13 +34,6 @@ void process_arch_opt(int opt, const char *arg); =20 #include REGINFO_HEADER(ARCH) =20 -/* Socket related routines */ -int master_connect(int port); -int apprentice_connect(const char *hostname, int port); -int send_data_pkt(int sock, void *pkt, int pktlen); -int recv_data_pkt(int sock, void *pkt, int pktlen); -void send_response_byte(int sock, int resp); - extern uintptr_t image_start_address; extern void *memblock; =20 @@ -80,31 +73,32 @@ typedef struct { uint32_t risu_op; } trace_header_t; =20 +/* Socket related routines */ +int master_connect(int port); +int apprentice_connect(const char *hostname, int port); +RisuResult send_data_pkt(int sock, void *pkt, int pktlen); +RisuResult recv_data_pkt(int sock, void *pkt, int pktlen); +void send_response_byte(int sock, int resp); + /* Functions operating on reginfo */ =20 -/* Function prototypes for read/write helper functions. - * - * We pass the helper function to send_register_info and - * recv_and_compare_register_info which can either be backed by the - * traditional network socket or a trace file. - */ -typedef int (*write_fn) (void *ptr, size_t bytes); -typedef int (*read_fn) (void *ptr, size_t bytes); -typedef void (*respond_fn) (RisuResult response); +/* Function prototypes for read/write helper functions. */ +RisuResult write_buffer(void *ptr, size_t bytes); +RisuResult read_buffer(void *ptr, size_t bytes); +void respond(RisuResult response); =20 /* * Send the register information from the struct ucontext down the socket. * NB: called from a signal handler. */ -RisuResult send_register_info(write_fn write_fn, void *uc); +RisuResult send_register_info(void *uc); =20 /* * Read register info from the socket and compare it with that from the * ucontext. * NB: called from a signal handler. */ -RisuResult recv_and_compare_register_info(read_fn read_fn, - respond_fn respond, void *uc); +RisuResult recv_and_compare_register_info(void *uc); =20 /* Print a useful report on the status of the last comparison * done in recv_and_compare_register_info(). This is called on diff --git a/comms.c b/comms.c index 861e845..21968da 100644 --- a/comms.c +++ b/comms.c @@ -168,7 +168,7 @@ ssize_t safe_writev(int fd, struct iovec *iov_in, int i= ovcnt) * Note that both ends must agree on the length of the * block of data. */ -int send_data_pkt(int sock, void *pkt, int pktlen) +RisuResult send_data_pkt(int sock, void *pkt, int pktlen) { unsigned char resp; /* First we send the packet length as a network-order 32 bit value. @@ -196,7 +196,7 @@ int send_data_pkt(int sock, void *pkt, int pktlen) return resp; } =20 -int recv_data_pkt(int sock, void *pkt, int pktlen) +RisuResult recv_data_pkt(int sock, void *pkt, int pktlen) { uint32_t net_pktlen; recv_bytes(sock, &net_pktlen, sizeof(net_pktlen)); @@ -206,10 +206,10 @@ int recv_data_pkt(int sock, void *pkt, int pktlen) * a response back. */ recv_and_discard_bytes(sock, net_pktlen); - return 1; + return RES_BAD_IO; } recv_bytes(sock, pkt, pktlen); - return 0; + return RES_OK; } =20 void send_response_byte(int sock, int resp) diff --git a/reginfo.c b/reginfo.c index b909a1f..fee025e 100644 --- a/reginfo.c +++ b/reginfo.c @@ -21,10 +21,11 @@ uint8_t apprentice_memblock[MEMBLOCKLEN]; static int mem_used; static int packet_mismatch; =20 -RisuResult send_register_info(write_fn write_fn, void *uc) +RisuResult send_register_info(void *uc) { struct reginfo ri; trace_header_t header; + RisuResult res; RisuOp op; =20 reginfo_init(&ri, uc); @@ -33,8 +34,9 @@ RisuResult send_register_info(write_fn write_fn, void *uc) /* Write a header with PC/op to keep in sync */ header.pc =3D get_pc(&ri); header.risu_op =3D op; - if (write_fn(&header, sizeof(header)) !=3D 0) { - return RES_BAD_IO; + res =3D write_buffer(&header, sizeof(header)); + if (res !=3D RES_OK) { + return res; } =20 switch (op) { @@ -45,11 +47,12 @@ RisuResult send_register_info(write_fn write_fn, void *= uc) * Do a simple register compare on (a) explicit request * (b) end of test (c) a non-risuop UNDEF */ - if (write_fn(&ri, reginfo_size()) !=3D 0) { - return RES_BAD_IO; + res =3D write_buffer(&ri, reginfo_size()); + /* For OP_TEST_END, force exit. */ + if (res =3D=3D RES_OK && op =3D=3D OP_TESTEND) { + res =3D RES_END; } - /* For OP_TEST_END, force return 1 to exit. */ - return op =3D=3D OP_TESTEND ? RES_END : RES_OK; + break; case OP_SETMEMBLOCK: memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&ri); break; @@ -58,12 +61,11 @@ RisuResult send_register_info(write_fn write_fn, void *= uc) get_reginfo_paramreg(&ri) + (uintptr_t)membl= ock); break; case OP_COMPAREMEM: - return write_fn(memblock, MEMBLOCKLEN); - break; + return write_buffer(memblock, MEMBLOCKLEN); default: abort(); } - return RES_OK; + return res; } =20 /* Read register info from the socket and compare it with that from the @@ -74,29 +76,29 @@ RisuResult send_register_info(write_fn write_fn, void *= uc) * that says whether it is register or memory data, so if the two * sides get out of sync then we will fail obscurely. */ -RisuResult recv_and_compare_register_info(read_fn read_fn, - respond_fn resp_fn, void *uc) +RisuResult recv_and_compare_register_info(void *uc) { - RisuResult resp =3D RES_OK; + RisuResult res; trace_header_t header; RisuOp op; =20 reginfo_init(&master_ri, uc); op =3D get_risuop(&master_ri); =20 - if (read_fn(&header, sizeof(header)) !=3D 0) { - return RES_BAD_IO; + res =3D read_buffer(&header, sizeof(header)); + if (res !=3D RES_OK) { + return res; } =20 if (header.risu_op !=3D op) { /* We are out of sync */ - resp =3D RES_BAD_IO; - resp_fn(resp); - return resp; + res =3D RES_BAD_IO; + respond(res); + return res; } =20 /* send OK for the header */ - resp_fn(RES_OK); + respond(RES_OK); =20 switch (op) { case OP_COMPARE: @@ -105,16 +107,16 @@ RisuResult recv_and_compare_register_info(read_fn rea= d_fn, /* Do a simple register compare on (a) explicit request * (b) end of test (c) a non-risuop UNDEF */ - if (read_fn(&apprentice_ri, reginfo_size())) { + res =3D read_buffer(&apprentice_ri, reginfo_size()); + if (res !=3D RES_OK) { packet_mismatch =3D 1; - resp =3D RES_BAD_IO; } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { /* register mismatch */ - resp =3D RES_MISMATCH; + res =3D RES_MISMATCH; } else if (op =3D=3D OP_TESTEND) { - resp =3D RES_END; + res =3D RES_END; } - resp_fn(resp); + respond(res); break; case OP_SETMEMBLOCK: memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&master_ri); @@ -125,20 +127,20 @@ RisuResult recv_and_compare_register_info(read_fn rea= d_fn, break; case OP_COMPAREMEM: mem_used =3D 1; - if (read_fn(apprentice_memblock, MEMBLOCKLEN)) { + res =3D read_buffer(apprentice_memblock, MEMBLOCKLEN); + if (res !=3D RES_OK) { packet_mismatch =3D 1; - resp =3D RES_BAD_IO; } else if (memcmp(memblock, apprentice_memblock, MEMBLOCKLEN) !=3D= 0) { /* memory mismatch */ - resp =3D RES_MISMATCH; + res =3D RES_MISMATCH; } - resp_fn(resp); + respond(res); break; default: abort(); } =20 - return resp; + return res; } =20 /* Print a useful report on the status of the last comparison diff --git a/risu.c b/risu.c index 7b14f72..1917311 100644 --- a/risu.c +++ b/risu.c @@ -46,44 +46,15 @@ static sigjmp_buf jmpbuf; =20 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) =20 -/* Master functions */ +/* I/O functions */ =20 -int read_sock(void *ptr, size_t bytes) -{ - return recv_data_pkt(comm_fd, ptr, bytes); -} - -int write_trace(void *ptr, size_t bytes) +RisuResult read_buffer(void *ptr, size_t bytes) { size_t res; =20 -#ifdef HAVE_ZLIB - if (comm_fd =3D=3D STDOUT_FILENO) { -#endif - res =3D write(comm_fd, ptr, bytes); -#ifdef HAVE_ZLIB - } else { - res =3D gzwrite(gz_trace_file, ptr, bytes); + if (!trace) { + return recv_data_pkt(comm_fd, ptr, bytes); } -#endif - return (res =3D=3D bytes) ? 0 : 1; -} - -void respond_sock(RisuResult r) -{ - send_response_byte(comm_fd, r); -} - -/* Apprentice function */ - -int write_sock(void *ptr, size_t bytes) -{ - return send_data_pkt(comm_fd, ptr, bytes); -} - -int read_trace(void *ptr, size_t bytes) -{ - size_t res; =20 #ifdef HAVE_ZLIB if (comm_fd =3D=3D STDIN_FILENO) { @@ -95,21 +66,34 @@ int read_trace(void *ptr, size_t bytes) } #endif =20 - return (res =3D=3D bytes) ? 0 : 1; + return res =3D=3D bytes ? RES_OK : RES_BAD_IO; } =20 -void respond_trace(RisuResult r) +RisuResult write_buffer(void *ptr, size_t bytes) { - switch (r) { - case RES_OK: - case RES_END: - break; - default: - /* mismatch - if tracing we need to report, otherwise barf */ - if (!trace) { - abort(); - } - break; + size_t res; + + if (!trace) { + return send_data_pkt(comm_fd, ptr, bytes); + } + +#ifdef HAVE_ZLIB + if (comm_fd =3D=3D STDOUT_FILENO) { +#endif + res =3D write(comm_fd, ptr, bytes); +#ifdef HAVE_ZLIB + } else { + res =3D gzwrite(gz_trace_file, ptr, bytes); + } +#endif + + return res =3D=3D bytes ? RES_OK : RES_BAD_IO; +} + +void respond(RisuResult r) +{ + if (!trace) { + send_response_byte(comm_fd, r); } } =20 @@ -119,9 +103,9 @@ static void master_sigill(int sig, siginfo_t *si, void = *uc) signal_count++; =20 if (trace) { - r =3D send_register_info(write_trace, uc); + r =3D send_register_info(uc); } else { - r =3D recv_and_compare_register_info(read_sock, respond_sock, uc); + r =3D recv_and_compare_register_info(uc); } =20 switch (r) { @@ -141,9 +125,9 @@ static void apprentice_sigill(int sig, siginfo_t *si, v= oid *uc) signal_count++; =20 if (trace) { - r =3D recv_and_compare_register_info(read_trace, respond_trace, uc= ); + r =3D recv_and_compare_register_info(uc); } else { - r =3D send_register_info(write_sock, uc); + r =3D send_register_info(uc); } =20 switch (r) { --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115215; cv=none; d=zohomail.com; s=zohoarc; b=JWkm9C/v8qPZGywbixKBjOfgkml/GQRwEIFrMajIpcuiD9VXEB7jep9xX2wgfQ0kI2mwdeqRNIIIiXWsSbK5D/mEQgKon7Oxq7cVXXA5onZ75R3xVv1FVZDmzewflg5OPBuqdS67lSM/9tTtYxH0MZeuaimuLsYwxjc9r/GMiyw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115215; h=Content-Type: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=08GYkLDINQo3JCs7twtHmTIyHJC0TnW/vsw/vZ50A4I=; b=JnWidy0dk2xznWdVO8aSiPD/QYxCadQYvi0CPgTkl8oNpQ/ITGtqzcmMcpI02gCxFp6slipz9ChbN3EphNCnDHZMMjoTuiAnbkmkARvCWTEBH8TkiDOBZLRhI98nPY3iRBQhbBoaWaq7XVhfaIFwlknez8PEcZt7PQV534mtkQo= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115215609387.8456413743211; Thu, 21 May 2020 19:40:15 -0700 (PDT) Received: from localhost ([::1]:41480 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxba-0006I5-8m for importer@patchew.org; Thu, 21 May 2020 22:40:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWT-0002RP-EL for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:57 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:45725) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWS-00056x-GX for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:57 -0400 Received: by mail-pg1-x543.google.com with SMTP id f21so1284011pgg.12 for ; Thu, 21 May 2020 19:34:56 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=08GYkLDINQo3JCs7twtHmTIyHJC0TnW/vsw/vZ50A4I=; b=WuQZV024ez9Hv4PfFJq+w6udDFdwJhqjrR+DfehK0/yV/87MVeYs8eQRxqZpxnhoGE rtFuyCG4Oo+6yxMOyCxXXUVmq93EfR+QoRxNGu4ArljYAkvJd0SQMap8IaMsqjRrm3AE mrbcWFA52Mu6hLRQCp0Gp7qTVp7QfgphD8X+jePZ+AQ+QZJ+lc3kgb9SoMKK4Uhhnm1h RJFgD3wPysfehwxkP1EZERi3immiYYQFClAFEGga44NElH8/6qkb4Z3kJrOEnomP4QzJ 6f7pGI57m/slKYSvyc5fh8D39+jcVCgsBV2k45pTuAlJgIBXlFd/NT8+k2Q0vmqYlSAp LJNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=08GYkLDINQo3JCs7twtHmTIyHJC0TnW/vsw/vZ50A4I=; b=IeMeWjljLmYjWwein7QaJByHlixJpW+LelwYIfz52OmokqL8Tq5dFv+YIu3jgjW5iw 61wQYx8nXhxFmPfXyJr6BJ/BDo0z+MEpvXUbqyNCv3ZxWUV+RgrS1YmIWcVEWlEzgHzm 3H4yuc9YeTa9Oowx1ieRs2JCwoFi0X/LPwQoIWGEYU1wzJAwWzQUUhX9wYqH4GEf2o2y 9i82RuiPHP8C0Fb7zQi4g8d2tPKd+tymxtJqg3xjKeU8l2Lp+AxWTUEDUSYPUnpUZVi9 2G1ScyXLi+X4ibJ5LSQ3FnyeMDAGTZ1eU+RqdaVHZVzUhRY3noUXjTiTR2C70pLVUoOC RC4A== X-Gm-Message-State: AOAM531mO07SN97HDFIC3OkrujyKyVMcdohpPvQVqDlyrgLPh0SnE+YJ MEbnVJubBYREMOjM4pbZOBKh3HGRaQw= X-Google-Smtp-Source: ABdhPJxDzT2gh1OaCZiDl69141AgiPDVboEWhttSyGqkcrb98O+tGVus7l2fQPJK2DKaUTtc3ByH4w== X-Received: by 2002:a62:3383:: with SMTP id z125mr1684956pfz.271.1590114894796; Thu, 21 May 2020 19:34:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 10/25] Pass non-OK result back through siglongjmp Date: Thu, 21 May 2020 19:34:25 -0700 Message-Id: <20200522023440.26261-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::543; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x543.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Rather than doing some work in the signal handler and some work outside, move all of the non-resume work outside. This works because we arranged for RES_OK to be 0, which is the normal return from sigsetjmp. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.c | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/risu.c b/risu.c index 1917311..f238117 100644 --- a/risu.c +++ b/risu.c @@ -107,15 +107,10 @@ static void master_sigill(int sig, siginfo_t *si, voi= d *uc) } else { r =3D recv_and_compare_register_info(uc); } - - switch (r) { - case RES_OK: - /* match OK */ + if (r =3D=3D RES_OK) { advance_pc(uc); - return; - default: - /* mismatch, or end of test */ - siglongjmp(jmpbuf, 1); + } else { + siglongjmp(jmpbuf, r); } } =20 @@ -129,21 +124,10 @@ static void apprentice_sigill(int sig, siginfo_t *si,= void *uc) } else { r =3D send_register_info(uc); } - - switch (r) { - case RES_OK: - /* match OK */ + if (r =3D=3D RES_OK) { advance_pc(uc); - return; - case RES_END: - /* end of test */ - exit(EXIT_SUCCESS); - default: - /* mismatch */ - if (trace) { - siglongjmp(jmpbuf, 1); - } - exit(EXIT_FAILURE); + } else { + siglongjmp(jmpbuf, r); } } =20 @@ -200,7 +184,9 @@ static void load_image(const char *imgfile) =20 static int master(void) { - if (sigsetjmp(jmpbuf, 1)) { + RisuResult res =3D sigsetjmp(jmpbuf, 1); + + if (res !=3D RES_OK) { #ifdef HAVE_ZLIB if (trace && comm_fd !=3D STDOUT_FILENO) { gzclose(gz_trace_file); @@ -226,15 +212,27 @@ static int master(void) =20 static int apprentice(void) { - if (sigsetjmp(jmpbuf, 1)) { + RisuResult res =3D sigsetjmp(jmpbuf, 1); + + if (res !=3D RES_OK) { #ifdef HAVE_ZLIB if (trace && comm_fd !=3D STDIN_FILENO) { gzclose(gz_trace_file); } #endif close(comm_fd); - fprintf(stderr, "finished early after %zd checkpoints\n", signal_c= ount); - return report_match_status(true); + + switch (res) { + case RES_END: + return EXIT_SUCCESS; + default: + if (!trace) { + return EXIT_FAILURE; + } + fprintf(stderr, "finished early after %zd checkpoints\n", + signal_count); + return report_match_status(true); + } } set_sigill_handler(&apprentice_sigill); fprintf(stderr, "starting apprentice image at 0x%"PRIxPTR"\n", --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115302; cv=none; d=zohomail.com; s=zohoarc; b=E97wk0MHqTbgZocTyWgRAAZma+sAKhJNbFuiCdIaQFtSDzJDizgODec5wssFS0uNsH6I5tRR6ErdFuVEgfyWAizVHseWIosTy5d9LOXwsPW/KXTk1bkSn7ARV9/FoooQD0sOJa6aVNbEiOruUc5wiqSS2q9rKk7Gm70h/Qucvtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115302; h=Content-Type: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=mjhuvlUCpOP50NjRcK3iFgBHX3wIurn+3a+Fa5MAOOk=; b=n1gZ+D7n0banauw1jcQJlhq3ZTg/qeBGEwkp1Io9RCvi5CVRzib9VpHErqvNUM/mtuxaiGpSp6UNOrf8PTb+HYyoqHu5njgzAUX5HLyenhA/YMdyg3RcduUBCpaUoVhGBkcs5QWH1zXlqDuklU4RtIRvwVz+2VDq9tMu+cCHP0g= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115302490693.2622309146338; Thu, 21 May 2020 19:41:42 -0700 (PDT) Received: from localhost ([::1]:47836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxcz-00019P-5f for importer@patchew.org; Thu, 21 May 2020 22:41:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48224) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWV-0002VI-0h for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:59 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:37881) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWT-000574-RG for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:58 -0400 Received: by mail-pg1-x541.google.com with SMTP id d10so4292409pgn.4 for ; Thu, 21 May 2020 19:34:57 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mjhuvlUCpOP50NjRcK3iFgBHX3wIurn+3a+Fa5MAOOk=; b=Kjg0V1faLSnT5254nz637RsvJ73jyNX4cA0CjlrSQFZqAgYF4dv5WVl/Ak+fV7Z9DN PEFMynQjcqS8Pn8jgw9BxRweI0b8szlERetMze1/WxlPXc90Jvym79uO0h6gi8WU7PuR tkVRZCHxFPTPoIZOLwX5YTPsqLA9EyXT00LohDOZf63dPZTj3F6wYe/VgGZGtrWV9Qxr fjOOcQA8VjZ+xxxg54blahtEuopQYVe4iSv2Eb48FCsbax98kmNj4GM1zWpBXKyYSPI7 JW0Fr/n47EorY1YM6KcUo9mjWEyYyVRkkafaVuMLE14ObXMkG4+Wcjtx0/1BLEk8ozQz v36A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mjhuvlUCpOP50NjRcK3iFgBHX3wIurn+3a+Fa5MAOOk=; b=kE21hhyNZZYzbM4gZJ+rk687Zz2np6huNvcmEs5ukcKkuqHwMRDBXtF7EPtxzxMZr2 it+kbWFm875htyiGKlheZd+uYNhe8CwN2mwIMTUO+RK4/lKHeOj897ShwYjPEdPfeEnz P0QVBnNPwya9IAjn0foYSLp+YXvtcR3+nb4l/vAuNVaoi/7i89BzYXhi28CROB7W+ikh zjZdE8WvIM6GvTHLesBjrgqCbCBoYX0qztlXz9oczjJfHzGFR+ck1nL79IFn+nHG06ut u1I1NKpwGc8YLmGBMExy+1b6jyBumqcaDwZLRaLkQsVJimcGJr8M/l1LEh0lxtYQHToC PnhA== X-Gm-Message-State: AOAM531MyszpnhTobbmfe2c/em7Jx8nlCTPeMX1BbQxmFp3S5ubqImCI 4nDtye1ic6rfjUA/Osduun4Bag7Ry+A= X-Google-Smtp-Source: ABdhPJySN4B+mLqUYkXuClPUy70v207Ij6siWSOIXx2EYb3E/QUb2Y2hzz7FYz5QccpiZUagMnC0iw== X-Received: by 2002:a63:3814:: with SMTP id f20mr11520301pga.266.1590114896004; Thu, 21 May 2020 19:34:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 11/25] Always write for --master Date: Thu, 21 May 2020 19:34:26 -0700 Message-Id: <20200522023440.26261-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::541; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x541.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) For trace, master of course must write to the file we create. For sockets, we can report mismatches from either end. At present, we are reporting mismatches from master. Reverse that so that we report mismatches from the apprentice, just as we do for trace. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.h | 2 +- reginfo.c | 38 ++++++++-------------- risu.c | 96 ++++++++++++++++++++++++++----------------------------- 3 files changed, 61 insertions(+), 75 deletions(-) diff --git a/risu.h b/risu.h index c83b803..f383b64 100644 --- a/risu.h +++ b/risu.h @@ -106,7 +106,7 @@ RisuResult recv_and_compare_register_info(void *uc); * Should return 0 if it was a good match (ie end of test) * and 1 for a mismatch. */ -int report_match_status(bool trace); +int report_match_status(void); =20 /* Interface provided by CPU-specific code: */ =20 diff --git a/reginfo.c b/reginfo.c index fee025e..c37c5df 100644 --- a/reginfo.c +++ b/reginfo.c @@ -14,9 +14,8 @@ #include #include "risu.h" =20 -struct reginfo master_ri, apprentice_ri; - -uint8_t apprentice_memblock[MEMBLOCKLEN]; +static struct reginfo master_ri, apprentice_ri; +static uint8_t master_memblock[MEMBLOCKLEN]; =20 static int mem_used; static int packet_mismatch; @@ -82,8 +81,8 @@ RisuResult recv_and_compare_register_info(void *uc) trace_header_t header; RisuOp op; =20 - reginfo_init(&master_ri, uc); - op =3D get_risuop(&master_ri); + reginfo_init(&apprentice_ri, uc); + op =3D get_risuop(&apprentice_ri); =20 res =3D read_buffer(&header, sizeof(header)); if (res !=3D RES_OK) { @@ -107,7 +106,7 @@ RisuResult recv_and_compare_register_info(void *uc) /* Do a simple register compare on (a) explicit request * (b) end of test (c) a non-risuop UNDEF */ - res =3D read_buffer(&apprentice_ri, reginfo_size()); + res =3D read_buffer(&master_ri, reginfo_size()); if (res !=3D RES_OK) { packet_mismatch =3D 1; } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { @@ -119,18 +118,18 @@ RisuResult recv_and_compare_register_info(void *uc) respond(res); break; case OP_SETMEMBLOCK: - memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&master_ri); + memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&apprentice_r= i); break; case OP_GETMEMBLOCK: - set_ucontext_paramreg(uc, get_reginfo_paramreg(&master_ri) + + set_ucontext_paramreg(uc, get_reginfo_paramreg(&apprentice_ri) + (uintptr_t)memblock); break; case OP_COMPAREMEM: mem_used =3D 1; - res =3D read_buffer(apprentice_memblock, MEMBLOCKLEN); + res =3D read_buffer(master_memblock, MEMBLOCKLEN); if (res !=3D RES_OK) { packet_mismatch =3D 1; - } else if (memcmp(memblock, apprentice_memblock, MEMBLOCKLEN) !=3D= 0) { + } else if (memcmp(memblock, master_memblock, MEMBLOCKLEN) !=3D 0) { /* memory mismatch */ res =3D RES_MISMATCH; } @@ -149,18 +148,13 @@ RisuResult recv_and_compare_register_info(void *uc) * Should return 0 if it was a good match (ie end of test) * and 1 for a mismatch. */ -int report_match_status(bool trace) +int report_match_status(void) { int resp =3D 0; fprintf(stderr, "match status...\n"); if (packet_mismatch) { fprintf(stderr, "packet mismatch (probably disagreement " "about UNDEF on load/store)\n"); - /* We don't have valid reginfo from the apprentice side - * so stop now rather than printing anything about it. - */ - fprintf(stderr, "%s reginfo:\n", trace ? "this" : "master"); - reginfo_dump(&master_ri, stderr); return 1; } if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { @@ -168,7 +162,7 @@ int report_match_status(bool trace) resp =3D 1; } if (mem_used - && memcmp(memblock, &apprentice_memblock, MEMBLOCKLEN) !=3D 0) { + && memcmp(memblock, &master_memblock, MEMBLOCKLEN) !=3D 0) { fprintf(stderr, "mismatch on memory!\n"); resp =3D 1; } @@ -177,15 +171,11 @@ int report_match_status(bool trace) return 0; } =20 - fprintf(stderr, "%s reginfo:\n", trace ? "this" : "master"); + fprintf(stderr, "master reginfo:\n"); reginfo_dump(&master_ri, stderr); - fprintf(stderr, "%s reginfo:\n", trace ? "trace" : "apprentice"); + fprintf(stderr, "apprentice reginfo:\n"); reginfo_dump(&apprentice_ri, stderr); =20 - if (trace) { - reginfo_dump_mismatch(&apprentice_ri, &master_ri, stderr); - } else { - reginfo_dump_mismatch(&master_ri, &apprentice_ri, stderr); - } + reginfo_dump_mismatch(&master_ri, &apprentice_ri, stderr); return resp; } diff --git a/risu.c b/risu.c index f238117..199f697 100644 --- a/risu.c +++ b/risu.c @@ -102,11 +102,7 @@ static void master_sigill(int sig, siginfo_t *si, void= *uc) RisuResult r; signal_count++; =20 - if (trace) { - r =3D send_register_info(uc); - } else { - r =3D recv_and_compare_register_info(uc); - } + r =3D send_register_info(uc); if (r =3D=3D RES_OK) { advance_pc(uc); } else { @@ -119,11 +115,7 @@ static void apprentice_sigill(int sig, siginfo_t *si, = void *uc) RisuResult r; signal_count++; =20 - if (trace) { - r =3D recv_and_compare_register_info(uc); - } else { - r =3D send_register_info(uc); - } + r =3D recv_and_compare_register_info(uc); if (r =3D=3D RES_OK) { advance_pc(uc); } else { @@ -186,61 +178,65 @@ static int master(void) { RisuResult res =3D sigsetjmp(jmpbuf, 1); =20 - if (res !=3D RES_OK) { + switch (res) { + case RES_OK: + set_sigill_handler(&master_sigill); + fprintf(stderr, "starting master image at 0x%"PRIxPTR"\n", + image_start_address); + fprintf(stderr, "starting image\n"); + image_start(); + fprintf(stderr, "image returned unexpectedly\n"); + return EXIT_FAILURE; + + case RES_END: #ifdef HAVE_ZLIB if (trace && comm_fd !=3D STDOUT_FILENO) { gzclose(gz_trace_file); } #endif close(comm_fd); - if (trace) { - fprintf(stderr, "trace complete after %zd checkpoints\n", - signal_count); - return EXIT_SUCCESS; - } else { - return report_match_status(false); - } + return EXIT_SUCCESS; + + case RES_BAD_IO: + fprintf(stderr, "i/o error after %zd checkpoints\n", signal_count); + return EXIT_FAILURE; + + default: + fprintf(stderr, "unexpected result %d\n", res); + return EXIT_FAILURE; } - set_sigill_handler(&master_sigill); - fprintf(stderr, "starting master image at 0x%"PRIxPTR"\n", - image_start_address); - fprintf(stderr, "starting image\n"); - image_start(); - fprintf(stderr, "image returned unexpectedly\n"); - return EXIT_FAILURE; } =20 static int apprentice(void) { RisuResult res =3D sigsetjmp(jmpbuf, 1); =20 - if (res !=3D RES_OK) { -#ifdef HAVE_ZLIB - if (trace && comm_fd !=3D STDIN_FILENO) { - gzclose(gz_trace_file); - } -#endif - close(comm_fd); + switch (res) { + case RES_OK: + set_sigill_handler(&apprentice_sigill); + fprintf(stderr, "starting apprentice image at 0x%"PRIxPTR"\n", + image_start_address); + fprintf(stderr, "starting image\n"); + image_start(); + fprintf(stderr, "image returned unexpectedly\n"); + return EXIT_FAILURE; =20 - switch (res) { - case RES_END: - return EXIT_SUCCESS; - default: - if (!trace) { - return EXIT_FAILURE; - } - fprintf(stderr, "finished early after %zd checkpoints\n", - signal_count); - return report_match_status(true); - } + case RES_END: + return EXIT_SUCCESS; + + case RES_MISMATCH: + fprintf(stderr, "mismatch after %zd checkpoints\n", signal_count); + report_match_status(); + return EXIT_FAILURE; + + case RES_BAD_IO: + fprintf(stderr, "i/o error after %zd checkpoints\n", signal_count); + return EXIT_FAILURE; + + default: + fprintf(stderr, "unexpected result %d\n", res); + return EXIT_FAILURE; } - set_sigill_handler(&apprentice_sigill); - fprintf(stderr, "starting apprentice image at 0x%"PRIxPTR"\n", - image_start_address); - fprintf(stderr, "starting image\n"); - image_start(); - fprintf(stderr, "image returned unexpectedly\n"); - return EXIT_FAILURE; } =20 static int ismaster; --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115374; cv=none; d=zohomail.com; s=zohoarc; b=Ijv5Iv5b91ajV8x0WwWIeaO9GsAri96bM5KSJ7JDXrkklBNwAx3WBjHmm7mBz8v3hML5bPs1mOnHAOv3k/DjNZUG5FF3fiwv2GliWDUvqnm27o3WTdrpQPNIQqiha/6PUBxoIjevr7jRCwXnaP7jd7BP2CJcJgm+k/sN2JX05fg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115374; h=Content-Type: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=rJUczCRf7dBt8YUhUpO1kHr1QrkMw5NPc8UGt9HIenA=; b=U2ced5hmtlAnm5TOFNqfG6pZaF3RI3i7QxvKJixOmWbZGW5IuxT9xjHcUSEImxCxPDjlph40iiouozxU9g9yv+Q9EbhZ734XBFQyiMVXLd5wm1fVmLeJHs90CZbKzVyqF7RCeNQrN4wQaZnZW8cQlc7X6yDYYBkdTCuhJ2CKwcs= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115374503203.59188666708803; Thu, 21 May 2020 19:42:54 -0700 (PDT) Received: from localhost ([::1]:54220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxe9-0003fV-6b for importer@patchew.org; Thu, 21 May 2020 22:42:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWV-0002Wu-Oj for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:59 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:38309) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWU-00057B-Rm for qemu-devel@nongnu.org; Thu, 21 May 2020 22:34:59 -0400 Received: by mail-pg1-x542.google.com with SMTP id u5so4284365pgn.5 for ; Thu, 21 May 2020 19:34:58 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rJUczCRf7dBt8YUhUpO1kHr1QrkMw5NPc8UGt9HIenA=; b=JlwNv7+8T85n3ZlQvSqBuJS4qU6VYzQ/2w7aqL5AkZIqVR27L5i58mKqvi0CCNE18Q DcEaAkxdJDcu+yiekfXr8zCahz22KXdSo6GsG1hWRlTjVlk2+B05tQfFYtfadPdW359f WHmBIbt2ZQhYjYR3D0HNgpICN/Pt7MDsn+TPv6j51CIcmKc5D3hZ9Dpl9IRhJ0aCsRMQ TgZ2q/wOfmsXcCcB3cD50w4xme1jdOdkNNZfKp3Yqd4EV+BFo2yS9wggcXneTcD3+1xB 0O3mA1YujsBXm83+DiQIz7wgDkNCo5n7DlMw1n6jtVZ+tpuM7EYWIlByh+g+KDsCPDQ8 xEjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rJUczCRf7dBt8YUhUpO1kHr1QrkMw5NPc8UGt9HIenA=; b=OmuhLYF3EPbqXvepDL5U+fGo+PvLTz2rwHhqNGmzVpLMottTNRjHJNfNM/u02EK6x9 s3RN65F86Mg87PUaB5SaE6IUMFu/mat785ggOdv+1rW0UK2fwXL1MCcziGESYte+vwdL l4BsqFw49fEoAMM0lCrNrq+rvtDSmoFt+pNKNeO90DhZYKGLIbWXNBun97Dfqzt392qd pNOY/pSVvXGKsLMHuvtxivAGUri3/NfJfha7fVKMXGQqxndsci6UWw6CZQb2Sia1KQ09 oS8kNazLNMNTjolgrYWa+FK8zE1Bj10C1WjwCujLU528Y53Ms4aHBONjCoHATxKdtCAe QQrQ== X-Gm-Message-State: AOAM532SztddE1ZmUC9/rc+1JeOQDohPIcmzRt1atZfKx15UE0DysG5r 9LrHwODFigwN0P7Wl/zmCfgXzo4mKBM= X-Google-Smtp-Source: ABdhPJxtg2bp9JfKuE11Bo8Cv8jM5elhlGpcRSY5c/huq6iaTjo2+HriHFMbZ9JcFUixvuQHbhew7g== X-Received: by 2002:a63:f709:: with SMTP id x9mr11658477pgh.330.1590114897162; Thu, 21 May 2020 19:34:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 12/25] Simplify syncing with master Date: Thu, 21 May 2020 19:34:27 -0700 Message-Id: <20200522023440.26261-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::542; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x542.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Do not pass status like RES_BAD_IO from apprentice to master. This means that when master reports i/o error that we know it came from master; the apprentice will report its own i/o error. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- reginfo.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/reginfo.c b/reginfo.c index c37c5df..31bc699 100644 --- a/reginfo.c +++ b/reginfo.c @@ -90,10 +90,9 @@ RisuResult recv_and_compare_register_info(void *uc) } =20 if (header.risu_op !=3D op) { - /* We are out of sync */ - res =3D RES_BAD_IO; - respond(res); - return res; + /* We are out of sync. Tell master to exit. */ + respond(RES_END); + return RES_BAD_IO; } =20 /* send OK for the header */ @@ -115,7 +114,7 @@ RisuResult recv_and_compare_register_info(void *uc) } else if (op =3D=3D OP_TESTEND) { res =3D RES_END; } - respond(res); + respond(res =3D=3D RES_OK ? RES_OK : RES_END); break; case OP_SETMEMBLOCK: memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&apprentice_r= i); @@ -133,7 +132,7 @@ RisuResult recv_and_compare_register_info(void *uc) /* memory mismatch */ res =3D RES_MISMATCH; } - respond(res); + respond(res =3D=3D RES_OK ? RES_OK : RES_END); break; default: abort(); --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115376; cv=none; d=zohomail.com; s=zohoarc; b=BLk1nXfXlNlQPB8NAOYrtqqZLjq3A43Key725I4rj6m32mVQK2Xc0Fn/JaItfwAg6NZLY4+jKY/1cmitu9k5OUQ0CZ+QdeCTB7PMTDJW04J3l58HeDxEZyMrR1nuz1IEMetThDm39nqyw/lJVhBjvgLqEQ3bQLP5I7qfMkpc/8I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115376; h=Content-Type: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=47X0nDkNnDfoYJURE/fAwmOiKXa0tA0+uH16JNzJ4Lc=; b=iTJ8Hs/9jLooUAFREW2P1nW2b+qgV8ZfK4NxUnhOE41hrv38xzPH0Ew74iCEXIs+zLR63YQfW5EpsQysoGq9CreFFc3Nsm+Tqm7SjOJ6g/Tffzco03X6NJosSEeoDFXa41saZ5T4rRPY5hrn1hhNPqmFsO7i0Lnj+GfpdswZmho= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115376045252.2076525095905; Thu, 21 May 2020 19:42:56 -0700 (PDT) Received: from localhost ([::1]:54464 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxeA-0003lD-Qd for importer@patchew.org; Thu, 21 May 2020 22:42:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48236) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWX-0002Zs-29 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:01 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:35548) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWW-00057I-22 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:00 -0400 Received: by mail-pf1-x442.google.com with SMTP id n18so4481515pfa.2 for ; Thu, 21 May 2020 19:34:59 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=47X0nDkNnDfoYJURE/fAwmOiKXa0tA0+uH16JNzJ4Lc=; b=mWA2ChL7cbSgsA8g2nvgitxTW1oZxOYAEYKR5OH/gT3gDT9P6+HySeBugg1Jlk1XSX 3JmkJBJFbWTbnI954Dtuwe4kib7HQH+QvZLFlCxqS+BRVMIvmftrv7t9yTn+uejcX5T6 kPjCxmWDDks49igwOipyI44uu9eEZY1SX9OY2pEREQyVR+5/dWFawqCS2UAy35ofmN1v so00RI4y7wyEbONjKQsC+IkOtin4wiroO/bKOR5dkGDmfMt90YTeBWbsUfY8AXMDzElQ UyJvaFIuz7CJOkjCfxTGFx32BvDPnyRdqpl9WjH6YWYoF3Ntt2D9wmLlkUoc6AMz/lJU lt3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=47X0nDkNnDfoYJURE/fAwmOiKXa0tA0+uH16JNzJ4Lc=; b=a3UF3HcZzyeH7Sbrtis/T80WMJMmIh44LsgeQoh529Ar6G7dhT/39cQytuad+3qwNm y0mtP9auOqc8lbErTEF+4yDtpO70qQZboCbr1BrBjpr+yE32trC1uWRY51uCk5m1efKT JXAxWkJZO+eRCUdWSUAz4KaUhHbOf4oknrNFI9UeVEeNYf9UdmmGGOrhGN5LG6+xWhpH CsvXbyVN7+EEIRQycayDIOwYmLdoFEuOx3pAh1IN71mJRQe19sRpCjY1SOUXRu0LuAFv N4XGwBIBDWKy1hYrGDQSRjDa1T9K2lktT4870AisxFsn6FV3qRAhhlCqKZMLneTHerQx UJfw== X-Gm-Message-State: AOAM532xobtVXrZMj5+acySeY09BJBPHzK9oykSKwJ+SdmvghQnvNtXc C0bKsgIOvsWaG9OPIFWMq6Kx9pytfcY= X-Google-Smtp-Source: ABdhPJy55Oc883tPMWE8Pyp08urluM7Ghzp6IjTuIqEcpku2coynGTh9UtQGXdq3qcUatUCr+H45QQ== X-Received: by 2002:a63:3ec3:: with SMTP id l186mr11489052pga.228.1590114898319; Thu, 21 May 2020 19:34:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 13/25] Split RES_MISMATCH for registers and memory Date: Thu, 21 May 2020 19:34:28 -0700 Message-Id: <20200522023440.26261-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::442; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x442.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) By remembering the specific comparison that failed, we do not have to try again when it comes time to report. This makes the mem_used flag redundant. Also, packet_mismatch is now redundant with RES_BAD_IO. This means that the only thing that report_match_status does is to report on register status, so rename to report_mismatch_reg. Also, we know there is a failure, so don't return a status from the report. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- risu.h | 13 ++++++------- reginfo.c | 45 ++++++++------------------------------------- risu.c | 10 +++++++--- 3 files changed, 21 insertions(+), 47 deletions(-) diff --git a/risu.h b/risu.h index f383b64..77d6128 100644 --- a/risu.h +++ b/risu.h @@ -54,7 +54,8 @@ typedef enum { typedef enum { RES_OK =3D 0, RES_END, - RES_MISMATCH, + RES_MISMATCH_REG, + RES_MISMATCH_MEM, RES_BAD_IO, } RisuResult; =20 @@ -100,13 +101,11 @@ RisuResult send_register_info(void *uc); */ RisuResult recv_and_compare_register_info(void *uc); =20 -/* Print a useful report on the status of the last comparison - * done in recv_and_compare_register_info(). This is called on - * exit, so need not restrict itself to signal-safe functions. - * Should return 0 if it was a good match (ie end of test) - * and 1 for a mismatch. +/* + * Print a useful report on the status of the last reg comparison + * done in recv_and_compare_register_info(). */ -int report_match_status(void); +void report_mismatch_reg(void); =20 /* Interface provided by CPU-specific code: */ =20 diff --git a/reginfo.c b/reginfo.c index 31bc699..a007f16 100644 --- a/reginfo.c +++ b/reginfo.c @@ -17,9 +17,6 @@ static struct reginfo master_ri, apprentice_ri; static uint8_t master_memblock[MEMBLOCKLEN]; =20 -static int mem_used; -static int packet_mismatch; - RisuResult send_register_info(void *uc) { struct reginfo ri; @@ -107,10 +104,10 @@ RisuResult recv_and_compare_register_info(void *uc) */ res =3D read_buffer(&master_ri, reginfo_size()); if (res !=3D RES_OK) { - packet_mismatch =3D 1; + /* fail */ } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { /* register mismatch */ - res =3D RES_MISMATCH; + res =3D RES_MISMATCH_REG; } else if (op =3D=3D OP_TESTEND) { res =3D RES_END; } @@ -124,13 +121,12 @@ RisuResult recv_and_compare_register_info(void *uc) (uintptr_t)memblock); break; case OP_COMPAREMEM: - mem_used =3D 1; res =3D read_buffer(master_memblock, MEMBLOCKLEN); if (res !=3D RES_OK) { - packet_mismatch =3D 1; + /* fail */ } else if (memcmp(memblock, master_memblock, MEMBLOCKLEN) !=3D 0) { /* memory mismatch */ - res =3D RES_MISMATCH; + res =3D RES_MISMATCH_MEM; } respond(res =3D=3D RES_OK ? RES_OK : RES_END); break; @@ -141,40 +137,15 @@ RisuResult recv_and_compare_register_info(void *uc) return res; } =20 -/* Print a useful report on the status of the last comparison - * done in recv_and_compare_register_info(). This is called on - * exit, so need not restrict itself to signal-safe functions. - * Should return 0 if it was a good match (ie end of test) - * and 1 for a mismatch. +/* + * Print a useful report on the status of the last reg comparison + * done in recv_and_compare_register_info(). */ -int report_match_status(void) +void report_mismatch_reg(void) { - int resp =3D 0; - fprintf(stderr, "match status...\n"); - if (packet_mismatch) { - fprintf(stderr, "packet mismatch (probably disagreement " - "about UNDEF on load/store)\n"); - return 1; - } - if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { - fprintf(stderr, "mismatch on regs!\n"); - resp =3D 1; - } - if (mem_used - && memcmp(memblock, &master_memblock, MEMBLOCKLEN) !=3D 0) { - fprintf(stderr, "mismatch on memory!\n"); - resp =3D 1; - } - if (!resp) { - fprintf(stderr, "match!\n"); - return 0; - } - fprintf(stderr, "master reginfo:\n"); reginfo_dump(&master_ri, stderr); fprintf(stderr, "apprentice reginfo:\n"); reginfo_dump(&apprentice_ri, stderr); - reginfo_dump_mismatch(&master_ri, &apprentice_ri, stderr); - return resp; } diff --git a/risu.c b/risu.c index 199f697..d6c2deb 100644 --- a/risu.c +++ b/risu.c @@ -224,9 +224,13 @@ static int apprentice(void) case RES_END: return EXIT_SUCCESS; =20 - case RES_MISMATCH: - fprintf(stderr, "mismatch after %zd checkpoints\n", signal_count); - report_match_status(); + case RES_MISMATCH_REG: + fprintf(stderr, "mismatch reg after %zd checkpoints\n", signal_cou= nt); + report_mismatch_reg(); + return EXIT_FAILURE; + + case RES_MISMATCH_MEM: + fprintf(stderr, "mismatch mem after %zd checkpoints\n", signal_cou= nt); return EXIT_FAILURE; =20 case RES_BAD_IO: --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590114963; cv=none; d=zohomail.com; s=zohoarc; b=QOAajR6so8mh6s1hqr/NOuzyzodFwMEghfSNt7XJjE88RTCi3LXg8nHX9SFXXkFfN5jZXSuO/qbaVE4GEe7pMYkFgEtRzKJJvnyr3hZtZ0rK7tzLdLW+Z2VIbhP+8OC8YrHKWbXltTrE83nASFrMSlpzY3+a/zTdOw1xn8ATCQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590114963; 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=TXAASNAhxxCZnrmhR/019xFA1WSxX4Hf5mCh0xMRPmU=; b=RtSDQgBxynRmdz3dm4W5MpIttKbK1XpVWK8raOOI751kXni2gjdc7DSN5TW/2l24m6T3A3TDGpFUka04H2zXeoOS6HTQ1xgADr/jegV6INIJl6blR3+tvbXpymqcBcxWWyhZQ5SnkymOp1hPzScuvY/CsoTT0PkpDYwDtIcaKiU= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590114963926111.4379214854149; Thu, 21 May 2020 19:36:03 -0700 (PDT) Received: from localhost ([::1]:48598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxXW-00055v-KQ for importer@patchew.org; Thu, 21 May 2020 22:36:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48248) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWZ-0002el-Sl for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:03 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:40785) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWX-00057X-Dg for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:02 -0400 Received: by mail-pg1-x541.google.com with SMTP id j21so4275588pgb.7 for ; Thu, 21 May 2020 19:35:00 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:34:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TXAASNAhxxCZnrmhR/019xFA1WSxX4Hf5mCh0xMRPmU=; b=AUtufOGfzGkjlfkqqxb794wZpat78KRsybJft61LmYhClncza5WibhmGMSUo0t5KF2 0fk1SW80/fxljjgayPa757/OA0kpTohm2lcfsuZrVEI3EtCGHkuLU41Z06jX1ITQDEfj Ir05GmGj7sdNcFzLu006gwS9tVN/Oa7fHj4sfiM1yVQW9CO0zSt8jxgMC0Is8sxfmjPw iVYt+Hjo/rwmUwf5IRXTjEsrYrUfiEQnxgjP2V+Ip7quBTke6gVPsuC4RNNVRcX1bTz3 w/cEQnHAaWd+D0UYvoPET5wzT/XvNiJ48HdEvGeqTqDQl9DEDnTB/DKLjYzidLa3qF0/ leRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TXAASNAhxxCZnrmhR/019xFA1WSxX4Hf5mCh0xMRPmU=; b=keaUoLu6tJ7zK+eUKekKqvyzHVzBrXBIPCYoZCskn3C5+qtWYo1j/ergASjjDeolY+ fpw2NnMLLrj82H3It9+Nx4BXbIWZbTjE7ZQ1Xdqjl0pJdrKpbIGGB7xv4GHZzhGheKq1 muiwbxaQU61eni/TU57aS+lg0nRwu0Pb+qoLdznHD80NCaEPhRvGnnl/QeQngHmzzEjU MaqlgJ/7iwXFuhCxtS9dC94MUz0IyAbRTra31jjpgRB/m284GOKq6fQwF6FmAqQ0kr60 i+9+YctJ78k3Je7aBChq5lhxWRRThHQ+LZq71P3HRJ7DIKoRKL4AS9RLdMrtNYxwmt37 7SRw== X-Gm-Message-State: AOAM533JxcRkMCqnlXRHIxV2OtCnxWcC4lhkVvU72pEwf4ArraOjCZIV lzYkW5/22LVtowwdVvh0BtIYFvYLnxk= X-Google-Smtp-Source: ABdhPJx/GZb6UhzimSRuhBSJ/LmssiaSAnmOwWkIX0h68wNDr4ch3a7+9bmvFWvWeFm689eMYhWUgA== X-Received: by 2002:a63:6e8a:: with SMTP id j132mr10248319pgc.301.1590114899535; Thu, 21 May 2020 19:34:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 14/25] Merge reginfo.c into risu.c Date: Thu, 21 May 2020 19:34:29 -0700 Message-Id: <20200522023440.26261-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::541; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x541.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" The distinction between the two is artificial. Following patches will rearrange the functions involved to make it easier for dumping of the trace file. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- Makefile | 2 +- risu.h | 28 +--------- reginfo.c | 151 ------------------------------------------------------ risu.c | 129 ++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 126 insertions(+), 184 deletions(-) delete mode 100644 reginfo.c diff --git a/Makefile b/Makefile index 6ab014a..ad7f879 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ CFLAGS ?=3D -g ALL_CFLAGS =3D -Wall -D_GNU_SOURCE -DARCH=3D$(ARCH) -U$(ARCH) $(BUILD_INC)= $(CFLAGS) $(EXTRA_CFLAGS) =20 PROG=3Drisu -SRCS=3Drisu.c comms.c reginfo.c risu_$(ARCH).c risu_reginfo_$(ARCH).c +SRCS=3Drisu.c comms.c risu_$(ARCH).c risu_reginfo_$(ARCH).c HDRS=3Drisu.h risu_reginfo_$(ARCH).h BINS=3Dtest_$(ARCH).bin =20 diff --git a/risu.h b/risu.h index 77d6128..dd9fda5 100644 --- a/risu.h +++ b/risu.h @@ -35,7 +35,6 @@ void process_arch_opt(int opt, const char *arg); #include REGINFO_HEADER(ARCH) =20 extern uintptr_t image_start_address; -extern void *memblock; =20 /* Ops code under test can request from risu: */ typedef enum { @@ -83,34 +82,9 @@ void send_response_byte(int sock, int resp); =20 /* Functions operating on reginfo */ =20 -/* Function prototypes for read/write helper functions. */ -RisuResult write_buffer(void *ptr, size_t bytes); -RisuResult read_buffer(void *ptr, size_t bytes); -void respond(RisuResult response); - -/* - * Send the register information from the struct ucontext down the socket. - * NB: called from a signal handler. - */ -RisuResult send_register_info(void *uc); - -/* - * Read register info from the socket and compare it with that from the - * ucontext. - * NB: called from a signal handler. - */ -RisuResult recv_and_compare_register_info(void *uc); - -/* - * Print a useful report on the status of the last reg comparison - * done in recv_and_compare_register_info(). - */ -void report_mismatch_reg(void); - /* Interface provided by CPU-specific code: */ =20 -/* Move the PC past this faulting insn by adjusting ucontext - */ +/* Move the PC past this faulting insn by adjusting ucontext. */ void advance_pc(void *uc); =20 /* Set the parameter register in a ucontext_t to the specified value. diff --git a/reginfo.c b/reginfo.c deleted file mode 100644 index a007f16..0000000 --- a/reginfo.c +++ /dev/null @@ -1,151 +0,0 @@ -/*************************************************************************= ***** - * Copyright (c) 2017 Linaro Limited - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Peter Maydell (Linaro) - initial implementation - *************************************************************************= ****/ - -#include -#include -#include -#include "risu.h" - -static struct reginfo master_ri, apprentice_ri; -static uint8_t master_memblock[MEMBLOCKLEN]; - -RisuResult send_register_info(void *uc) -{ - struct reginfo ri; - trace_header_t header; - RisuResult res; - RisuOp op; - - reginfo_init(&ri, uc); - op =3D get_risuop(&ri); - - /* Write a header with PC/op to keep in sync */ - header.pc =3D get_pc(&ri); - header.risu_op =3D op; - res =3D write_buffer(&header, sizeof(header)); - if (res !=3D RES_OK) { - return res; - } - - switch (op) { - case OP_COMPARE: - case OP_TESTEND: - case OP_SIGILL: - /* - * Do a simple register compare on (a) explicit request - * (b) end of test (c) a non-risuop UNDEF - */ - res =3D write_buffer(&ri, reginfo_size()); - /* For OP_TEST_END, force exit. */ - if (res =3D=3D RES_OK && op =3D=3D OP_TESTEND) { - res =3D RES_END; - } - break; - case OP_SETMEMBLOCK: - memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&ri); - break; - case OP_GETMEMBLOCK: - set_ucontext_paramreg(uc, - get_reginfo_paramreg(&ri) + (uintptr_t)membl= ock); - break; - case OP_COMPAREMEM: - return write_buffer(memblock, MEMBLOCKLEN); - default: - abort(); - } - return res; -} - -/* Read register info from the socket and compare it with that from the - * ucontext. Return 0 for match, 1 for end-of-test, 2 for mismatch. - * NB: called from a signal handler. - * - * We don't have any kind of identifying info in the incoming data - * that says whether it is register or memory data, so if the two - * sides get out of sync then we will fail obscurely. - */ -RisuResult recv_and_compare_register_info(void *uc) -{ - RisuResult res; - trace_header_t header; - RisuOp op; - - reginfo_init(&apprentice_ri, uc); - op =3D get_risuop(&apprentice_ri); - - res =3D read_buffer(&header, sizeof(header)); - if (res !=3D RES_OK) { - return res; - } - - if (header.risu_op !=3D op) { - /* We are out of sync. Tell master to exit. */ - respond(RES_END); - return RES_BAD_IO; - } - - /* send OK for the header */ - respond(RES_OK); - - switch (op) { - case OP_COMPARE: - case OP_TESTEND: - case OP_SIGILL: - /* Do a simple register compare on (a) explicit request - * (b) end of test (c) a non-risuop UNDEF - */ - res =3D read_buffer(&master_ri, reginfo_size()); - if (res !=3D RES_OK) { - /* fail */ - } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { - /* register mismatch */ - res =3D RES_MISMATCH_REG; - } else if (op =3D=3D OP_TESTEND) { - res =3D RES_END; - } - respond(res =3D=3D RES_OK ? RES_OK : RES_END); - break; - case OP_SETMEMBLOCK: - memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&apprentice_r= i); - break; - case OP_GETMEMBLOCK: - set_ucontext_paramreg(uc, get_reginfo_paramreg(&apprentice_ri) + - (uintptr_t)memblock); - break; - case OP_COMPAREMEM: - res =3D read_buffer(master_memblock, MEMBLOCKLEN); - if (res !=3D RES_OK) { - /* fail */ - } else if (memcmp(memblock, master_memblock, MEMBLOCKLEN) !=3D 0) { - /* memory mismatch */ - res =3D RES_MISMATCH_MEM; - } - respond(res =3D=3D RES_OK ? RES_OK : RES_END); - break; - default: - abort(); - } - - return res; -} - -/* - * Print a useful report on the status of the last reg comparison - * done in recv_and_compare_register_info(). - */ -void report_mismatch_reg(void) -{ - fprintf(stderr, "master reginfo:\n"); - reginfo_dump(&master_ri, stderr); - fprintf(stderr, "apprentice reginfo:\n"); - reginfo_dump(&apprentice_ri, stderr); - reginfo_dump_mismatch(&master_ri, &apprentice_ri, stderr); -} diff --git a/risu.c b/risu.c index d6c2deb..a0e20d5 100644 --- a/risu.c +++ b/risu.c @@ -28,7 +28,10 @@ #include "config.h" #include "risu.h" =20 -void *memblock; +static void *memblock; +static struct reginfo master_ri, apprentice_ri; +static uint8_t master_memblock[MEMBLOCKLEN]; + =20 static int comm_fd; static bool trace; @@ -48,7 +51,7 @@ static sigjmp_buf jmpbuf; =20 /* I/O functions */ =20 -RisuResult read_buffer(void *ptr, size_t bytes) +static RisuResult read_buffer(void *ptr, size_t bytes) { size_t res; =20 @@ -69,7 +72,7 @@ RisuResult read_buffer(void *ptr, size_t bytes) return res =3D=3D bytes ? RES_OK : RES_BAD_IO; } =20 -RisuResult write_buffer(void *ptr, size_t bytes) +static RisuResult write_buffer(void *ptr, size_t bytes) { size_t res; =20 @@ -90,13 +93,60 @@ RisuResult write_buffer(void *ptr, size_t bytes) return res =3D=3D bytes ? RES_OK : RES_BAD_IO; } =20 -void respond(RisuResult r) +static void respond(RisuResult r) { if (!trace) { send_response_byte(comm_fd, r); } } =20 +static RisuResult send_register_info(void *uc) +{ + struct reginfo ri; + trace_header_t header; + RisuResult res; + RisuOp op; + + reginfo_init(&ri, uc); + op =3D get_risuop(&ri); + + /* Write a header with PC/op to keep in sync */ + header.pc =3D get_pc(&ri); + header.risu_op =3D op; + res =3D write_buffer(&header, sizeof(header)); + if (res !=3D RES_OK) { + return res; + } + + switch (op) { + case OP_COMPARE: + case OP_TESTEND: + case OP_SIGILL: + /* + * Do a simple register compare on (a) explicit request + * (b) end of test (c) a non-risuop UNDEF + */ + res =3D write_buffer(&ri, reginfo_size()); + /* For OP_TEST_END, force exit. */ + if (res =3D=3D RES_OK && op =3D=3D OP_TESTEND) { + res =3D RES_END; + } + break; + case OP_SETMEMBLOCK: + memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&ri); + break; + case OP_GETMEMBLOCK: + set_ucontext_paramreg(uc, + get_reginfo_paramreg(&ri) + (uintptr_t)membl= ock); + break; + case OP_COMPAREMEM: + return write_buffer(memblock, MEMBLOCKLEN); + default: + abort(); + } + return res; +} + static void master_sigill(int sig, siginfo_t *si, void *uc) { RisuResult r; @@ -110,6 +160,71 @@ static void master_sigill(int sig, siginfo_t *si, void= *uc) } } =20 +static RisuResult recv_and_compare_register_info(void *uc) +{ + RisuResult res; + trace_header_t header; + RisuOp op; + + reginfo_init(&apprentice_ri, uc); + op =3D get_risuop(&apprentice_ri); + + res =3D read_buffer(&header, sizeof(header)); + if (res !=3D RES_OK) { + return res; + } + + if (header.risu_op !=3D op) { + /* We are out of sync. Tell master to exit. */ + respond(RES_END); + return RES_BAD_IO; + } + + /* send OK for the header */ + respond(RES_OK); + + switch (op) { + case OP_COMPARE: + case OP_TESTEND: + case OP_SIGILL: + /* Do a simple register compare on (a) explicit request + * (b) end of test (c) a non-risuop UNDEF + */ + res =3D read_buffer(&master_ri, reginfo_size()); + if (res !=3D RES_OK) { + /* fail */ + } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { + /* register mismatch */ + res =3D RES_MISMATCH_REG; + } else if (op =3D=3D OP_TESTEND) { + res =3D RES_END; + } + respond(res =3D=3D RES_OK ? RES_OK : RES_END); + break; + case OP_SETMEMBLOCK: + memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&apprentice_r= i); + break; + case OP_GETMEMBLOCK: + set_ucontext_paramreg(uc, get_reginfo_paramreg(&apprentice_ri) + + (uintptr_t)memblock); + break; + case OP_COMPAREMEM: + res =3D read_buffer(master_memblock, MEMBLOCKLEN); + if (res !=3D RES_OK) { + /* fail */ + } else if (memcmp(memblock, master_memblock, MEMBLOCKLEN) !=3D 0) { + /* memory mismatch */ + res =3D RES_MISMATCH_MEM; + } + respond(res =3D=3D RES_OK ? RES_OK : RES_END); + break; + default: + abort(); + } + + return res; +} + static void apprentice_sigill(int sig, siginfo_t *si, void *uc) { RisuResult r; @@ -226,7 +341,11 @@ static int apprentice(void) =20 case RES_MISMATCH_REG: fprintf(stderr, "mismatch reg after %zd checkpoints\n", signal_cou= nt); - report_mismatch_reg(); + fprintf(stderr, "master reginfo:\n"); + reginfo_dump(&master_ri, stderr); + fprintf(stderr, "apprentice reginfo:\n"); + reginfo_dump(&apprentice_ri, stderr); + reginfo_dump_mismatch(&master_ri, &apprentice_ri, stderr); return EXIT_FAILURE; =20 case RES_MISMATCH_MEM: --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115454; cv=none; d=zohomail.com; s=zohoarc; b=R92z9mTywwU2dV9fLDk62UaH7IO5fvgPObe6c0jl9MNArJiLiWpqejauIBc4CuJuKw/wx2fP7Gv4pEUaHpbJHVQNqLqugQzQgmj22HSRA6VudzZpw5zMaUHfCRscN+AzDoMB1sCJo+SELsIYK6HMppElBQuOarGzUiGFwVTsXbg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115454; 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=B4k4BKg+4kQ/VDRH4oFHB0FxFiaeSR3tTozfgNRDGtM=; b=W03cyzOVH1SUBgJsDI2kGNWuAQrmNwSlGkCN/4cYGG6jFAz02O9J0wowg0zrnwKD27tVE75FqKOajZpKCqBeYU9qIjDxuFf4P6mILPD+LdzkMfv785pzoPh9xSID/BrtlabQUm3CpQO8t8Bk+G1VoHHxdZ+Fow6ByTs5k3qTVwg= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115454546562.2896417418848; Thu, 21 May 2020 19:44:14 -0700 (PDT) Received: from localhost ([::1]:59996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxfR-0006km-Ce for importer@patchew.org; Thu, 21 May 2020 22:44:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48246) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWZ-0002eL-FW for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:03 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:41099) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWY-00057e-GD for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:03 -0400 Received: by mail-pg1-x543.google.com with SMTP id r10so4276458pgv.8 for ; Thu, 21 May 2020 19:35:02 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.34.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=B4k4BKg+4kQ/VDRH4oFHB0FxFiaeSR3tTozfgNRDGtM=; b=hnU+TE2v4VAx0UyvUVtYx6ZQZiJtFXRSjvf/pQnGPK9BCEfmzw639GBMShVNsq5oQv OutNvyMPe3qwsC5X6ci08u5IBsfwq4Qab3ejcVBN28tK5wgMyV2CoZPexNwjt2rArITV E0dpBowl0bW7SQSw7jWnpngHWK1oXX7GomPGoNpA5hjrtMOMFxDOD81+ob1DwtfzLwVE JYMJJ0+RxleW+dx2FBLtFOy9HHQI1S1mITz9mHvb97I2PNixv9zNcJvARsetrV72qcHw gs++JIyYT2wheE6xIqXZPDsfxufzfNzrFsoP5qMqY/tR/BxBOTQRR31nGKQGjwNElOci wl1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=B4k4BKg+4kQ/VDRH4oFHB0FxFiaeSR3tTozfgNRDGtM=; b=Cl+mHTEF3fH38z7r3uovayvJO4WSvJVHBniYo9ylXCYfL+bSpPlXC/cL8O2lS6cCfr CLtHunWR8+FYEnxN6A3SWBuB4GYiYMgSlywz0O46hgff8EuKz7rtOLs7+lsqD0TIi1oj RklhDwI11zhtR/ykjqoL+CmgkNC7GA8Z25rRJec+1W5WC0qGIRDXPXlDg2wzKueVLFY3 uRJOHyBgPg+Wk81ZOT9ECGTxYkMbEHH8GqOdN7dNcoddD2vpcbA6BxdFEAlcYD++nUON fiXgRNc1TbsJcsmJGg5z0m0MN45GxPMKCwQKSj0ITgVxcIKamakLEP69WCcyxHW3LG/F ghAQ== X-Gm-Message-State: AOAM530U3J1DtQv80ap6qgDyZyE9jtpR9VzLXS9LurzXAG6bV0VZzf2e agY3t2nnBJjG1GLf1RKVlRGdd+mo5lQ= X-Google-Smtp-Source: ABdhPJwaBpWaB5ypcqtOh756e5bt6NZFz89tn7l3RxtQe9aKjb1tvstE9QmFqQgpvdTtyzREwcsg7g== X-Received: by 2002:a63:ab0b:: with SMTP id p11mr1527746pgf.278.1590114900853; Thu, 21 May 2020 19:35:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 15/25] Rearrange reginfo and memblock buffers Date: Thu, 21 May 2020 19:34:30 -0700 Message-Id: <20200522023440.26261-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::543; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x543.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" For send_register_info from master_sigill, do not keep a reginfo buffer on the stack. At the moment, this struct is quite large for aarch64. Put the two reginfo buffers into an array, for the benefit of future dumping. For recv_and_compare_register_info, index this array with constants, so it's a simple rename. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.c | 58 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/risu.c b/risu.c index a0e20d5..b91ad38 100644 --- a/risu.c +++ b/risu.c @@ -28,10 +28,16 @@ #include "config.h" #include "risu.h" =20 -static void *memblock; -static struct reginfo master_ri, apprentice_ri; -static uint8_t master_memblock[MEMBLOCKLEN]; +enum { + MASTER =3D 0, APPRENTICE =3D 1 +}; =20 +static struct reginfo ri[2]; +static uint8_t other_memblock[MEMBLOCKLEN]; +static trace_header_t header; + +/* Memblock pointer into the execution image. */ +static void *memblock; =20 static int comm_fd; static bool trace; @@ -102,16 +108,15 @@ static void respond(RisuResult r) =20 static RisuResult send_register_info(void *uc) { - struct reginfo ri; - trace_header_t header; + uint64_t paramreg; RisuResult res; RisuOp op; =20 - reginfo_init(&ri, uc); - op =3D get_risuop(&ri); + reginfo_init(&ri[MASTER], uc); + op =3D get_risuop(&ri[MASTER]); =20 /* Write a header with PC/op to keep in sync */ - header.pc =3D get_pc(&ri); + header.pc =3D get_pc(&ri[MASTER]); header.risu_op =3D op; res =3D write_buffer(&header, sizeof(header)); if (res !=3D RES_OK) { @@ -126,18 +131,19 @@ static RisuResult send_register_info(void *uc) * Do a simple register compare on (a) explicit request * (b) end of test (c) a non-risuop UNDEF */ - res =3D write_buffer(&ri, reginfo_size()); + res =3D write_buffer(&ri[MASTER], reginfo_size()); /* For OP_TEST_END, force exit. */ if (res =3D=3D RES_OK && op =3D=3D OP_TESTEND) { res =3D RES_END; } break; case OP_SETMEMBLOCK: - memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&ri); + paramreg =3D get_reginfo_paramreg(&ri[MASTER]); + memblock =3D (void *)(uintptr_t)paramreg; break; case OP_GETMEMBLOCK: - set_ucontext_paramreg(uc, - get_reginfo_paramreg(&ri) + (uintptr_t)membl= ock); + paramreg =3D get_reginfo_paramreg(&ri[MASTER]); + set_ucontext_paramreg(uc, paramreg + (uintptr_t)memblock); break; case OP_COMPAREMEM: return write_buffer(memblock, MEMBLOCKLEN); @@ -162,12 +168,12 @@ static void master_sigill(int sig, siginfo_t *si, voi= d *uc) =20 static RisuResult recv_and_compare_register_info(void *uc) { + uint64_t paramreg; RisuResult res; - trace_header_t header; RisuOp op; =20 - reginfo_init(&apprentice_ri, uc); - op =3D get_risuop(&apprentice_ri); + reginfo_init(&ri[APPRENTICE], uc); + op =3D get_risuop(&ri[APPRENTICE]); =20 res =3D read_buffer(&header, sizeof(header)); if (res !=3D RES_OK) { @@ -190,10 +196,10 @@ static RisuResult recv_and_compare_register_info(void= *uc) /* Do a simple register compare on (a) explicit request * (b) end of test (c) a non-risuop UNDEF */ - res =3D read_buffer(&master_ri, reginfo_size()); + res =3D read_buffer(&ri[MASTER], reginfo_size()); if (res !=3D RES_OK) { /* fail */ - } else if (!reginfo_is_eq(&master_ri, &apprentice_ri)) { + } else if (!reginfo_is_eq(&ri[MASTER], &ri[APPRENTICE])) { /* register mismatch */ res =3D RES_MISMATCH_REG; } else if (op =3D=3D OP_TESTEND) { @@ -202,17 +208,18 @@ static RisuResult recv_and_compare_register_info(void= *uc) respond(res =3D=3D RES_OK ? RES_OK : RES_END); break; case OP_SETMEMBLOCK: - memblock =3D (void *)(uintptr_t)get_reginfo_paramreg(&apprentice_r= i); + paramreg =3D get_reginfo_paramreg(&ri[APPRENTICE]); + memblock =3D (void *)(uintptr_t)paramreg; break; case OP_GETMEMBLOCK: - set_ucontext_paramreg(uc, get_reginfo_paramreg(&apprentice_ri) + - (uintptr_t)memblock); + paramreg =3D get_reginfo_paramreg(&ri[APPRENTICE]); + set_ucontext_paramreg(uc, paramreg + (uintptr_t)memblock); break; case OP_COMPAREMEM: - res =3D read_buffer(master_memblock, MEMBLOCKLEN); + res =3D read_buffer(other_memblock, MEMBLOCKLEN); if (res !=3D RES_OK) { /* fail */ - } else if (memcmp(memblock, master_memblock, MEMBLOCKLEN) !=3D 0) { + } else if (memcmp(memblock, other_memblock, MEMBLOCKLEN) !=3D 0) { /* memory mismatch */ res =3D RES_MISMATCH_MEM; } @@ -221,7 +228,6 @@ static RisuResult recv_and_compare_register_info(void *= uc) default: abort(); } - return res; } =20 @@ -342,10 +348,10 @@ static int apprentice(void) case RES_MISMATCH_REG: fprintf(stderr, "mismatch reg after %zd checkpoints\n", signal_cou= nt); fprintf(stderr, "master reginfo:\n"); - reginfo_dump(&master_ri, stderr); + reginfo_dump(&ri[MASTER], stderr); fprintf(stderr, "apprentice reginfo:\n"); - reginfo_dump(&apprentice_ri, stderr); - reginfo_dump_mismatch(&master_ri, &apprentice_ri, stderr); + reginfo_dump(&ri[APPRENTICE], stderr); + reginfo_dump_mismatch(&ri[MASTER], &ri[APPRENTICE], stderr); return EXIT_FAILURE; =20 case RES_MISMATCH_MEM: --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115065; cv=none; d=zohomail.com; s=zohoarc; b=TkeIHjz1kngEsYZs+9/hfW7xjGGhuBujinrQqr1LTNqJbUM1KofgA2Aq2spEXzQ5FE6NLJfKyqinSQVW3u8V9pQSykOyUjdfPHEd3zUDqDOfze/2vJpraNDAmTyLMrRXwSTiOTr+IWznwp7SeodxfkMxFYe2V5Ah7egOWy0HXA4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115065; 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=QZjvdmBYYHmi+JAXhLPT2G2PqWOdLYnmeKZkQvZb7ek=; b=CkHQbhkzk5I/XveckCyASbNLag4BEqOX/9N3scDye37lI8QYuctcuH8nyCzG/0QWFSr2Jsm9XA3JErza51EwFgwPiH+8dBm4yiKL88J5jf82IYqOAQYqWBDCUsxBazBIogj1lpFwF1QbRBMM+T1OPnMDp6bUAzqwFmVaDQx9Z58= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15901150650431018.9702620625596; Thu, 21 May 2020 19:37:45 -0700 (PDT) Received: from localhost ([::1]:57174 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxZ9-0001DW-G6 for importer@patchew.org; Thu, 21 May 2020 22:37:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48254) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWb-0002j3-2v for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:05 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:35740) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWa-00057t-3a for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:04 -0400 Received: by mail-pl1-x644.google.com with SMTP id q16so3822938plr.2 for ; Thu, 21 May 2020 19:35:03 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QZjvdmBYYHmi+JAXhLPT2G2PqWOdLYnmeKZkQvZb7ek=; b=FDxptqFJysnUoaUeN8EOXWdN82ANKTymZV4rhaBjDEs/EPCoMSjOAsKYEi08MoYxct spNydnPRl7fyu00l2oaXoV0oqqOFUMm85/Kong5rpMFE7YHKabRjdRypzAe8zV/eJUxy U+r20sb/JMyiOaFpgNkDX5vGnsKx/zkawXm++GfMlT/GnV5uYX6SaFPVnxNnyz2DeWxk h2miMfzALhCnozsGDDjw3+7poOvBONA2R73uhF2VUZTlq+37Sg+upAYO60RD9Mnh3Jjq OuDFxex89P9+vJSaKjW/UOdAYCdbVTi3wVFmI4us4VsT9XAYP6iA3Y0dZIucMN4QYJrY eTag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QZjvdmBYYHmi+JAXhLPT2G2PqWOdLYnmeKZkQvZb7ek=; b=WSVauLiTJkwV+t2tbKtKixg9SmoXdbXOulIyg3/vEt8yYiWgSyV6/oByfhHvrDs31g bDZSRcLgfjzwwtnCkC7phDJBuzZHhkq8gTHDjxo4YDDoMqxVX7pFcYV0jX9dKgZXYS1J /nvEkQoYUwzC72DeQG6uBEsT7dXLbi+ZXaW7bBUIHWuXlNWzV8ZNhmNSuU8kjbn/LDMe 9zMU0vVeeOFs9e9P1hFr8VMxg9u7esFfA2i8VFq6Mm3kVMrsGyiGH95rcqNV5CMdFQty yYHKYyPeWXO+eCpSLRTvcKCDyA23I4zgvbYUvl9yKg+BEtdx7lgABepFou94pwFKVKDO kk/Q== X-Gm-Message-State: AOAM5335q/0HurI4u3NFH74NJUU4EzTI2boUAkDWNA4F2BP1AZniRmQt tTS3TN1H6pyl6blIpV1I4pArXGT6fdc= X-Google-Smtp-Source: ABdhPJyjA1gt4zWnTa13cMdu1SaIGYiWw1lMKT3M8KX47B0eci2ZttLAwbfM7GCWHkbxroP/JTN1LQ== X-Received: by 2002:a17:902:b206:: with SMTP id t6mr12690295plr.248.1590114902429; Thu, 21 May 2020 19:35:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 16/25] Split out recv_register_info Date: Thu, 21 May 2020 19:34:31 -0700 Message-Id: <20200522023440.26261-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::644; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x644.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" We will want to share this code when dumping. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.c | 50 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/risu.c b/risu.c index b91ad38..80bc3b1 100644 --- a/risu.c +++ b/risu.c @@ -166,6 +166,34 @@ static void master_sigill(int sig, siginfo_t *si, void= *uc) } } =20 +static RisuResult recv_register_info(struct reginfo *ri) +{ + RisuResult res; + + res =3D read_buffer(&header, sizeof(header)); + if (res !=3D RES_OK) { + return res; + } + + /* send OK for the header */ + respond(RES_OK); + + switch (header.risu_op) { + case OP_COMPARE: + case OP_TESTEND: + case OP_SIGILL: + return read_buffer(ri, reginfo_size()); + case OP_COMPAREMEM: + return read_buffer(other_memblock, MEMBLOCKLEN); + case OP_SETMEMBLOCK: + case OP_GETMEMBLOCK: + return RES_OK; + default: + /* TODO: Create a better error message. */ + return RES_BAD_IO; + } +} + static RisuResult recv_and_compare_register_info(void *uc) { uint64_t paramreg; @@ -173,33 +201,26 @@ static RisuResult recv_and_compare_register_info(void= *uc) RisuOp op; =20 reginfo_init(&ri[APPRENTICE], uc); - op =3D get_risuop(&ri[APPRENTICE]); =20 - res =3D read_buffer(&header, sizeof(header)); + res =3D recv_register_info(&ri[MASTER]); if (res !=3D RES_OK) { + /* I/O error. Tell master to exit. */ + respond(RES_END); return res; } =20 + op =3D get_risuop(&ri[APPRENTICE]); if (header.risu_op !=3D op) { /* We are out of sync. Tell master to exit. */ respond(RES_END); return RES_BAD_IO; } =20 - /* send OK for the header */ - respond(RES_OK); - switch (op) { case OP_COMPARE: case OP_TESTEND: case OP_SIGILL: - /* Do a simple register compare on (a) explicit request - * (b) end of test (c) a non-risuop UNDEF - */ - res =3D read_buffer(&ri[MASTER], reginfo_size()); - if (res !=3D RES_OK) { - /* fail */ - } else if (!reginfo_is_eq(&ri[MASTER], &ri[APPRENTICE])) { + if (!reginfo_is_eq(&ri[MASTER], &ri[APPRENTICE])) { /* register mismatch */ res =3D RES_MISMATCH_REG; } else if (op =3D=3D OP_TESTEND) { @@ -216,10 +237,7 @@ static RisuResult recv_and_compare_register_info(void = *uc) set_ucontext_paramreg(uc, paramreg + (uintptr_t)memblock); break; case OP_COMPAREMEM: - res =3D read_buffer(other_memblock, MEMBLOCKLEN); - if (res !=3D RES_OK) { - /* fail */ - } else if (memcmp(memblock, other_memblock, MEMBLOCKLEN) !=3D 0) { + if (memcmp(memblock, other_memblock, MEMBLOCKLEN) !=3D 0) { /* memory mismatch */ res =3D RES_MISMATCH_MEM; } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115481; cv=none; d=zohomail.com; s=zohoarc; b=E4uHyY3a8Bozt2dEMsqmgGyIo4PAx409VddaJ51KhoO+BHGTI4/4QZOT7+u+U3gnEe/Us+ppvSFY16DU+E9h703UKBEHB2WEfxdsRi+Rg0tbOYHHDPJ+rXgVtmC0npRK4x77WO3hkdEsFgLe31u9S3/a9MunuJ2JhvdP43jfLMI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115481; 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=Q/LihqsBffCSl3YlGCBIwjGGFgT5Kwzo71qJstw4oL4=; b=Zrdl123MTklpZbOOwcJ8vmtKWLUY7DdRitEQ6mPsO1Su2twmyr19PU9zuMUbD/MRbn0imTK39m53qWZA16Uja7OTnz5X8SkSfXcR/x9HTuaPWM+ssCyk1Rn4HKgnd/HAZIucjKZlPB43RgcfxTbaR/JlrsYfY7LyxctGHrGyonI= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115481760959.9483603802631; Thu, 21 May 2020 19:44:41 -0700 (PDT) Received: from localhost ([::1]:33658 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxfs-0008LB-H2 for importer@patchew.org; Thu, 21 May 2020 22:44:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48266) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWc-0002p5-Ne for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:06 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:40293) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWb-000587-Cq for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:06 -0400 Received: by mail-pf1-x442.google.com with SMTP id x2so4471664pfx.7 for ; Thu, 21 May 2020 19:35:04 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q/LihqsBffCSl3YlGCBIwjGGFgT5Kwzo71qJstw4oL4=; b=qjRPDEFul5/Adm96hM0EHUYCOuBjT9SZ691NHvNBVSKhOsvqdR5Uoxoikm/8H3FsFp crqDo8OL+xzK7o3gqMvKl8aQd/F8aG4N1X6ukgrvagK3nTcwsKf4vEh4SSC804cKK6J/ h5TC6KsR8Rzr6vSnaFd1bTr88jCYiA9xU5ySMHLKS8lofG0dInuse1SHwdezzengmRpM +Bxr3SMO+hSeiA28wQBiLDTUb3GTnVwU5rjF8XwMEQ8O3PLIctRtdgaZMExxepw8+4pG stFTb9fHAGQ70/u0EedrcO/XgyHv5Th20EH9mpHLd1S8sGSbzOITq8L1B7J0gtCRpJmb cYSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Q/LihqsBffCSl3YlGCBIwjGGFgT5Kwzo71qJstw4oL4=; b=YwkyWdUegwgyAms1rtAK1v98YAAx9jXODf1v+QXKZxkR8wg7NBlIoTcnetVLpyK4u1 /jhtcf2SqWaq7GJvvivxjfTbQ5jIaEi6zBmhxVcmrTiyCjZGRKVvnqrlKgc1vZrcR7gF RIMDdDvsp6cNJvrQFunmp2+KdYs1yYcJXOqttZrygmGoXeJvJWiwyqKk6dhWOPUewzwg 5PaDpIOtLkEhSX+hEtLJ+ziZLYkexPP2Wh0ydsJrgzi5rn2Jb5dpgTH5N2YjKp5FG+gw mfTvMGzZPSjDnEkyptnSImPRQivhLDsUu2tzNmRGtAUacARbbBSAOXA6N+vZ9dxbJpZT LX1g== X-Gm-Message-State: AOAM530O/GsbmOyqXzgBBk6jMd8l0LyHjjZIVM9nEE6JdiyuAxcSKN15 HYX8IdTH5Ow16LXavqA4/oZA3Y4vWUo= X-Google-Smtp-Source: ABdhPJxJQ56WBJi08qNr2sCwbLalMz7I31qiKJwvRYne9qRDqvBQmqRGPwvLP+b8fv8csmGbv8zPNA== X-Received: by 2002:a63:8f03:: with SMTP id n3mr11461146pgd.352.1590114903508; Thu, 21 May 2020 19:35:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 17/25] Add magic and size to the trace header Date: Thu, 21 May 2020 19:34:32 -0700 Message-Id: <20200522023440.26261-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::442; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x442.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Sanity check that we're not getting out of sync with the trace stream. This will be especially bad with the change in size of the sve save data. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.h | 10 +++- risu.c | 162 ++++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 136 insertions(+), 36 deletions(-) diff --git a/risu.h b/risu.h index dd9fda5..bfcf0af 100644 --- a/risu.h +++ b/risu.h @@ -55,7 +55,11 @@ typedef enum { RES_END, RES_MISMATCH_REG, RES_MISMATCH_MEM, + RES_MISMATCH_OP, RES_BAD_IO, + RES_BAD_MAGIC, + RES_BAD_SIZE, + RES_BAD_OP, } RisuResult; =20 /* The memory block should be this long */ @@ -69,10 +73,14 @@ typedef enum { struct reginfo; =20 typedef struct { - uintptr_t pc; + uint32_t magic; + uint32_t size; uint32_t risu_op; + uintptr_t pc; } trace_header_t; =20 +#define RISU_MAGIC (('R' << 24) | ('I' << 16) | ('S' << 8) | 'U') + /* Socket related routines */ int master_connect(int port); int apprentice_connect(const char *hostname, int port); diff --git a/risu.c b/risu.c index 80bc3b1..a248db1 100644 --- a/risu.c +++ b/risu.c @@ -111,32 +111,54 @@ static RisuResult send_register_info(void *uc) uint64_t paramreg; RisuResult res; RisuOp op; + void *extra; =20 reginfo_init(&ri[MASTER], uc); op =3D get_risuop(&ri[MASTER]); =20 /* Write a header with PC/op to keep in sync */ + header.magic =3D RISU_MAGIC; header.pc =3D get_pc(&ri[MASTER]); header.risu_op =3D op; + + switch (op) { + case OP_TESTEND: + case OP_COMPARE: + case OP_SIGILL: + header.size =3D reginfo_size(); + extra =3D &ri[MASTER]; + break; + case OP_COMPAREMEM: + header.size =3D MEMBLOCKLEN; + extra =3D memblock; + break; + case OP_SETMEMBLOCK: + case OP_GETMEMBLOCK: + header.size =3D 0; + extra =3D NULL; + break; + default: + abort(); + } + res =3D write_buffer(&header, sizeof(header)); if (res !=3D RES_OK) { return res; } + if (extra) { + res =3D write_buffer(extra, header.size); + if (res !=3D RES_OK) { + return res; + } + } =20 switch (op) { case OP_COMPARE: - case OP_TESTEND: case OP_SIGILL: - /* - * Do a simple register compare on (a) explicit request - * (b) end of test (c) a non-risuop UNDEF - */ - res =3D write_buffer(&ri[MASTER], reginfo_size()); - /* For OP_TEST_END, force exit. */ - if (res =3D=3D RES_OK && op =3D=3D OP_TESTEND) { - res =3D RES_END; - } + case OP_COMPAREMEM: break; + case OP_TESTEND: + return RES_END; case OP_SETMEMBLOCK: paramreg =3D get_reginfo_paramreg(&ri[MASTER]); memblock =3D (void *)(uintptr_t)paramreg; @@ -145,12 +167,10 @@ static RisuResult send_register_info(void *uc) paramreg =3D get_reginfo_paramreg(&ri[MASTER]); set_ucontext_paramreg(uc, paramreg + (uintptr_t)memblock); break; - case OP_COMPAREMEM: - return write_buffer(memblock, MEMBLOCKLEN); default: abort(); } - return res; + return RES_OK; } =20 static void master_sigill(int sig, siginfo_t *si, void *uc) @@ -175,22 +195,35 @@ static RisuResult recv_register_info(struct reginfo *= ri) return res; } =20 - /* send OK for the header */ - respond(RES_OK); + if (header.magic !=3D RISU_MAGIC) { + /* If the magic number is wrong, we can't trust the rest. */ + return RES_BAD_MAGIC; + } =20 switch (header.risu_op) { case OP_COMPARE: case OP_TESTEND: case OP_SIGILL: - return read_buffer(ri, reginfo_size()); + /* If we can't store the data, report invalid size. */ + if (header.size > sizeof(*ri)) { + return RES_BAD_SIZE; + } + respond(RES_OK); + return read_buffer(ri, header.size); + case OP_COMPAREMEM: + if (header.size !=3D MEMBLOCKLEN) { + return RES_BAD_SIZE; + } + respond(RES_OK); return read_buffer(other_memblock, MEMBLOCKLEN); + case OP_SETMEMBLOCK: case OP_GETMEMBLOCK: - return RES_OK; + return header.size =3D=3D 0 ? RES_OK : RES_BAD_SIZE; + default: - /* TODO: Create a better error message. */ - return RES_BAD_IO; + return RES_BAD_OP; } } =20 @@ -204,48 +237,71 @@ static RisuResult recv_and_compare_register_info(void= *uc) =20 res =3D recv_register_info(&ri[MASTER]); if (res !=3D RES_OK) { - /* I/O error. Tell master to exit. */ - respond(RES_END); - return res; + goto done; } =20 op =3D get_risuop(&ri[APPRENTICE]); - if (header.risu_op !=3D op) { - /* We are out of sync. Tell master to exit. */ - respond(RES_END); - return RES_BAD_IO; - } =20 switch (op) { case OP_COMPARE: case OP_TESTEND: case OP_SIGILL: - if (!reginfo_is_eq(&ri[MASTER], &ri[APPRENTICE])) { + /* + * If we have nothing to compare against, report an op mismatch. + * Otherwise allow the compare to continue, and assume that + * something in the reginfo will be different. + */ + if (header.risu_op !=3D OP_COMPARE && + header.risu_op !=3D OP_TESTEND && + header.risu_op !=3D OP_SIGILL) { + res =3D RES_MISMATCH_OP; + } else if (!reginfo_is_eq(&ri[MASTER], &ri[APPRENTICE])) { /* register mismatch */ res =3D RES_MISMATCH_REG; + } else if (op !=3D header.risu_op) { + /* The reginfo matched. We should have matched op. */ + res =3D RES_MISMATCH_OP; } else if (op =3D=3D OP_TESTEND) { res =3D RES_END; } - respond(res =3D=3D RES_OK ? RES_OK : RES_END); break; + case OP_SETMEMBLOCK: + if (op !=3D header.risu_op) { + res =3D RES_MISMATCH_OP; + break; + } paramreg =3D get_reginfo_paramreg(&ri[APPRENTICE]); memblock =3D (void *)(uintptr_t)paramreg; break; + case OP_GETMEMBLOCK: + if (op !=3D header.risu_op) { + res =3D RES_MISMATCH_OP; + break; + } paramreg =3D get_reginfo_paramreg(&ri[APPRENTICE]); set_ucontext_paramreg(uc, paramreg + (uintptr_t)memblock); break; + case OP_COMPAREMEM: + if (op !=3D header.risu_op) { + res =3D RES_MISMATCH_OP; + break; + } if (memcmp(memblock, other_memblock, MEMBLOCKLEN) !=3D 0) { /* memory mismatch */ res =3D RES_MISMATCH_MEM; } - respond(res =3D=3D RES_OK ? RES_OK : RES_END); break; + default: abort(); } + + done: + /* On error, tell master to exit. */ + respond(res =3D=3D RES_OK ? RES_OK : RES_END); return res; } =20 @@ -346,6 +402,25 @@ static int master(void) } } =20 +static const char *op_name(RisuOp op) +{ + switch (op) { + case OP_SIGILL: + return "SIGILL"; + case OP_COMPARE: + return "COMPARE"; + case OP_TESTEND: + return "TESTEND"; + case OP_SETMEMBLOCK: + return "SETMEMBLOCK"; + case OP_GETMEMBLOCK: + return "GETMEMBLOCK"; + case OP_COMPAREMEM: + return "COMPAREMEM"; + } + abort(); +} + static int apprentice(void) { RisuResult res =3D sigsetjmp(jmpbuf, 1); @@ -364,7 +439,7 @@ static int apprentice(void) return EXIT_SUCCESS; =20 case RES_MISMATCH_REG: - fprintf(stderr, "mismatch reg after %zd checkpoints\n", signal_cou= nt); + fprintf(stderr, "Mismatch reg after %zd checkpoints\n", signal_cou= nt); fprintf(stderr, "master reginfo:\n"); reginfo_dump(&ri[MASTER], stderr); fprintf(stderr, "apprentice reginfo:\n"); @@ -373,15 +448,32 @@ static int apprentice(void) return EXIT_FAILURE; =20 case RES_MISMATCH_MEM: - fprintf(stderr, "mismatch mem after %zd checkpoints\n", signal_cou= nt); + fprintf(stderr, "Mismatch mem after %zd checkpoints\n", signal_cou= nt); + return EXIT_FAILURE; + + case RES_MISMATCH_OP: + /* Out of sync, but both opcodes are known valid. */ + fprintf(stderr, "Mismatch header after %zd checkpoints\n" + "mismatch detail (master : apprentice):\n" + " opcode: %s vs %s\n", + signal_count, op_name(header.risu_op), + op_name(get_risuop(&ri[APPRENTICE]))); return EXIT_FAILURE; =20 case RES_BAD_IO: - fprintf(stderr, "i/o error after %zd checkpoints\n", signal_count); + fprintf(stderr, "I/O error\n"); + return EXIT_FAILURE; + case RES_BAD_MAGIC: + fprintf(stderr, "Unexpected magic number: %#08x\n", header.magic); + return EXIT_FAILURE; + case RES_BAD_SIZE: + fprintf(stderr, "Unexpected payload size: %u\n", header.size); + return EXIT_FAILURE; + case RES_BAD_OP: + fprintf(stderr, "Unexpected opcode: %d\n", header.risu_op); return EXIT_FAILURE; - default: - fprintf(stderr, "unexpected result %d\n", res); + fprintf(stderr, "Unexpected result %d\n", res); return EXIT_FAILURE; } } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115543; cv=none; d=zohomail.com; s=zohoarc; b=iPedF3kxlsRl050iWNEfzN+jpB8AxxjsOVHRp9OBmxWdrdf9Sgyk0tOal7vkAFuJtyRO0+7jSQF6ZJeKDQIevqBHwC5FsJpzhK2g1QKge17XA3zUFHZeXULmp1FUlOqhrBdM3W1sGCHDGCU/dX2s8rf3KMIqbqqfjgcHfYG72Mo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115543; 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=luiwJqNtbF93pa4B4WEBIHdTcK0G0uHbjDw2xJ7Jaew=; b=G3WnlUdkBMSCGsBtSzwzgYqJ7rs0wVQp9fypT2FnBIIEUKzYyPAbYz5x3gx9RVxdDImbyAJT6XiKaN6EmcBf3Eiq1/POOtIvcST3X/f8qByXdQd7nvWGlb/NRN/JIw3IImGn80AyFkDL3t9m8pOSkS+n3WSlqyJFbv8iQU+OlQo= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115543586768.8468331749189; Thu, 21 May 2020 19:45:43 -0700 (PDT) Received: from localhost ([::1]:37944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxgs-0002QF-Da for importer@patchew.org; Thu, 21 May 2020 22:45:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48272) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWd-0002t4-Qn for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:07 -0400 Received: from mail-pj1-x1044.google.com ([2607:f8b0:4864:20::1044]:36961) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWc-00058I-Mn for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:07 -0400 Received: by mail-pj1-x1044.google.com with SMTP id q9so4346658pjm.2 for ; Thu, 21 May 2020 19:35:06 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=luiwJqNtbF93pa4B4WEBIHdTcK0G0uHbjDw2xJ7Jaew=; b=aY/6jD3EsjlwEoRTgPmICL0MkRiVyaBx8KayP38X/AVAvNkC69XW+F7RuVcnTTMmw3 nMB7SnSE309lKgASpqSA+X4+4PL9FnA6scLJh9W5qsve8DRmPnQsetyiQU/lSrgBik5y Pe4/oLrV8QbyprXhcut6piyNDC6fudenaVMw2LrRoJuUnE+799HvfSWR6kjYpe29qHtM gIBCim8u4NYBZ5tHyQsSfbUI+rTLO3uK2JJ7pyHGMD/VeVSgbGDLQ2M8B+hRAGTGgLUF P6HhpBZJYuBjC7PEFuZ3jiFjJQOjiMeEKQ8OBcXOA9Q64puvt5KU8QH9HDrxpt6Bkxpa 8obg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=luiwJqNtbF93pa4B4WEBIHdTcK0G0uHbjDw2xJ7Jaew=; b=JA8lpo4ZvIT/YLVTdchEZ5CL6l/ONK1y/tvfRXxXtdwwyoK5IzMkKn7kmPmcoOCAor uDF2XWfm52hgKwxD4o4XmoPKBMZH5BhoZM8BOB1OIUNCAgaat5TzKkv+wHgV7sYoA7JT XbTpGe8HECS5yG7ArV4TQwpUfU721jzAR9B4zH2yqwCEduEE4jNwAKPvsRtUwcJDtUnq D6SrvxFcpURD50qZswRKmJtyLr8NDDxfqUcXILofTBpLCYKDv+MxjTP4UdWcZznNFld8 LiMAw8lezW5Yl5iblcWp6lFaiOStrW7T0R2D0L4DCzNBrpuQJw0pa+WcYRQtFbuJy3YV yjfQ== X-Gm-Message-State: AOAM5313b2moQtkn6dfPvPIUuf0rbovpo4AEoUiwkuVSUctKX0jZGi9e L+LXiM0DGZgkE3O0GhxvgCb7mTRt5/0= X-Google-Smtp-Source: ABdhPJyZv0dxD6edB7fe8ZimVdoisW6ljJ92K4udZxTP3s1Cwcr6sJbv9JWINWSgG+2K4JcG/IKPJA== X-Received: by 2002:a17:902:7045:: with SMTP id h5mr12695977plt.108.1590114904835; Thu, 21 May 2020 19:35:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 18/25] Compute reginfo_size based on the reginfo Date: Thu, 21 May 2020 19:34:33 -0700 Message-Id: <20200522023440.26261-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1044; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1044.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" This will allow dumping of SVE frames without having to know the SVE vector length beforehand. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.h | 2 +- risu.c | 9 +++++++-- risu_reginfo_aarch64.c | 4 ++-- risu_reginfo_arm.c | 4 ++-- risu_reginfo_i386.c | 4 ++-- risu_reginfo_m68k.c | 4 ++-- risu_reginfo_ppc64.c | 4 ++-- 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/risu.h b/risu.h index bfcf0af..3cad3d5 100644 --- a/risu.h +++ b/risu.h @@ -126,6 +126,6 @@ int reginfo_dump(struct reginfo *ri, FILE * f); int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f); =20 /* return size of reginfo */ -const int reginfo_size(void); +int reginfo_size(struct reginfo *ri); =20 #endif /* RISU_H */ diff --git a/risu.c b/risu.c index a248db1..a70b778 100644 --- a/risu.c +++ b/risu.c @@ -125,7 +125,7 @@ static RisuResult send_register_info(void *uc) case OP_TESTEND: case OP_COMPARE: case OP_SIGILL: - header.size =3D reginfo_size(); + header.size =3D reginfo_size(&ri[MASTER]); extra =3D &ri[MASTER]; break; case OP_COMPAREMEM: @@ -209,7 +209,12 @@ static RisuResult recv_register_info(struct reginfo *r= i) return RES_BAD_SIZE; } respond(RES_OK); - return read_buffer(ri, header.size); + res =3D read_buffer(ri, header.size); + if (res =3D=3D RES_OK && header.size !=3D reginfo_size(ri)) { + /* The payload size is not self-consistent with the data. */ + return RES_BAD_SIZE; + } + return res; =20 case OP_COMPAREMEM: if (header.size !=3D MEMBLOCKLEN) { diff --git a/risu_reginfo_aarch64.c b/risu_reginfo_aarch64.c index 028c690..7044648 100644 --- a/risu_reginfo_aarch64.c +++ b/risu_reginfo_aarch64.c @@ -69,7 +69,7 @@ void process_arch_opt(int opt, const char *arg) #endif } =20 -const int reginfo_size(void) +int reginfo_size(struct reginfo *ri) { int size =3D offsetof(struct reginfo, simd.end); #ifdef SVE_MAGIC @@ -194,7 +194,7 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) /* reginfo_is_eq: compare the reginfo structs, returns nonzero if equal */ int reginfo_is_eq(struct reginfo *r1, struct reginfo *r2) { - return memcmp(r1, r2, reginfo_size()) =3D=3D 0; + return memcmp(r1, r2, reginfo_size(r1)) =3D=3D 0; } =20 #ifdef SVE_MAGIC diff --git a/risu_reginfo_arm.c b/risu_reginfo_arm.c index 3662f12..47c52e8 100644 --- a/risu_reginfo_arm.c +++ b/risu_reginfo_arm.c @@ -36,9 +36,9 @@ void process_arch_opt(int opt, const char *arg) abort(); } =20 -const int reginfo_size(void) +int reginfo_size(struct reginfo *ri) { - return sizeof(struct reginfo); + return sizeof(*ri); } =20 static void reginfo_init_vfp(struct reginfo *ri, ucontext_t *uc) diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c index 60fc239..50505ab 100644 --- a/risu_reginfo_i386.c +++ b/risu_reginfo_i386.c @@ -74,9 +74,9 @@ void process_arch_opt(int opt, const char *arg) } } =20 -const int reginfo_size(void) +int reginfo_size(struct reginfo *ri) { - return sizeof(struct reginfo); + return sizeof(*ri); } =20 static void *xsave_feature_buf(struct _xstate *xs, int feature) diff --git a/risu_reginfo_m68k.c b/risu_reginfo_m68k.c index 32b28c8..4eb30cd 100644 --- a/risu_reginfo_m68k.c +++ b/risu_reginfo_m68k.c @@ -23,9 +23,9 @@ void process_arch_opt(int opt, const char *arg) abort(); } =20 -const int reginfo_size(void) +int reginfo_size(struct reginfo *ri) { - return sizeof(struct reginfo); + return sizeof(*ri); } =20 /* reginfo_init: initialize with a ucontext */ diff --git a/risu_reginfo_ppc64.c b/risu_reginfo_ppc64.c index 071c951..39e8f1c 100644 --- a/risu_reginfo_ppc64.c +++ b/risu_reginfo_ppc64.c @@ -32,9 +32,9 @@ void process_arch_opt(int opt, const char *arg) abort(); } =20 -const int reginfo_size(void) +int reginfo_size(struct reginfo *ri) { - return sizeof(struct reginfo); + return sizeof(*ri); } =20 /* reginfo_init: initialize with a ucontext */ --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115161; cv=none; d=zohomail.com; s=zohoarc; b=NFMVKpRUIYW+5qwn4xLUo5ypL9YK2FSQEdieh6Yx1fi5LzdbeEYJMMKGnEQ4tl7n7ozvWWfKr/9WLaHgxBUE2VZhdXzdvVZpFNZCZSScoslSnKpQ6/WFZQgUrCfXDMubYkMZ4pFQk5QzDtyjIEMKRUIhnYwJ/SpxOtU/b/bMYcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115161; 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=hhzEI0zY7uuhea/eDo3m8LR1KeJI+fOWQZOyopQnOJc=; b=m6U7ANUr1E3dB8BmNMKKQVWDkokXZQBUrk7BgqFAhNMML+4hZ2lKkZeWU+vhdmGO7QPiYop+MpUSBKZjrq9p3mG1k9luFyS0dlms1+10DSgUizLZsYWxnCkkfq1KVnFjSro0wjfC4l5T/xJsXYwV0su7lmDvS11+7rNscQluHVU= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159011516113096.66731687612673; Thu, 21 May 2020 19:39:21 -0700 (PDT) Received: from localhost ([::1]:36674 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxah-0004NM-Q0 for importer@patchew.org; Thu, 21 May 2020 22:39:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48280) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWf-0002zI-H3 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:09 -0400 Received: from mail-pj1-x1041.google.com ([2607:f8b0:4864:20::1041]:35002) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWd-00058T-W8 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:09 -0400 Received: by mail-pj1-x1041.google.com with SMTP id 5so4348059pjd.0 for ; Thu, 21 May 2020 19:35:07 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hhzEI0zY7uuhea/eDo3m8LR1KeJI+fOWQZOyopQnOJc=; b=ugYrlGz6ltuiNsbxkqPk9u7b4CZHviOZ4LKmlv//2Vh6NjQcHiyuCLGAlBH5DNp6Fi NF7QciY/bd21G/0PkCIeNnFKldeBJ62KxghAkKOMUjgQLHqPDM4I+PFFli7ap2+M+lHh 1Jsvhv476z9mK8rqQ+frFuTusUi/6abGlEepqWHvZY1ew6fg26sCnfM2M/CMz0Lqi3ia zASSjCqb/gZzggqGfYaH5LGWoPo/EzirIqg62PpAnG9b3eJUDK0cC2Te3mS+jkCaNm8x 8C5MoQmo2tgRDDfwQo2cRMiI1tDW3SNhlKuOfRTokojPZqLiWasdVnEUnBQrNzoCNGcq 2BAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hhzEI0zY7uuhea/eDo3m8LR1KeJI+fOWQZOyopQnOJc=; b=Vs0xJcbxELfNol3dtmaYeHn9Va7p5YQp/szhw4+7AUl0i0on0MNaNDXDdgsqnnSJgI 5FtW4ZsQXt5iq2riodxNaFxRtISTh3ofinEAnes7Ek1B2FHD5rV0g5qdPFQHM1BnHVM9 oTdKj8fYdUuIdaUMeOQZx5FWxMnNipq/I8ufduSUNRnQGuxJxv0lYOZd9u4NuebxWCM4 NOtux3sK3WQbAchhNrgBCKjsSa/0Tu+Ehs2HmI9r+Bq8B7q76tEQA8UlA9gQGp1QO1HS +sQfxP8IOmcaO6tJ1yMrJ/mBgJTKW21VKiUUcA8XBg/dv1cqXutpV3p+fbaJQ/5FJZ5D /WCw== X-Gm-Message-State: AOAM530psQ3TUWQ04GIVVIZoJD9KWeo3+sQ0WJP+XP2y+txArdobkvHr TwshWXnOCV/aQVPfI1K+SxW+uiZ8kG4= X-Google-Smtp-Source: ABdhPJzxvN5EpQAD9WlJuDgUhxQH0Mk6eRTTQlxWIj0p/0BiWvEp+tbadZxIQWn6fCImWe4LlFkYTw== X-Received: by 2002:a17:902:dc86:: with SMTP id n6mr12400066pld.17.1590114906123; Thu, 21 May 2020 19:35:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 19/25] aarch64: Reorg sve reginfo to save space Date: Thu, 21 May 2020 19:34:34 -0700 Message-Id: <20200522023440.26261-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1041; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1041.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Mirror the signal frame by storing all of the registers as a lump. Use the signal macros to pull out the values. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu_reginfo_aarch64.h | 16 +---- risu_reginfo_aarch64.c | 135 +++++++++++++++++++++-------------------- 2 files changed, 73 insertions(+), 78 deletions(-) diff --git a/risu_reginfo_aarch64.h b/risu_reginfo_aarch64.h index c33b86f..01076b4 100644 --- a/risu_reginfo_aarch64.h +++ b/risu_reginfo_aarch64.h @@ -17,20 +17,8 @@ =20 struct simd_reginfo { __uint128_t vregs[32]; - char end[0]; }; =20 -#ifdef SVE_MAGIC -struct sve_reginfo { - /* SVE */ - uint16_t vl; /* current VL */ - __uint128_t zregs[SVE_NUM_ZREGS][SVE_VQ_MAX]; - uint16_t pregs[SVE_NUM_PREGS][SVE_VQ_MAX]; - uint16_t ffr[SVE_VQ_MAX]; - char end[0]; -}; -#endif - /* The kernel headers set this based on future arch extensions. The current arch maximum is 16. Save space below. */ #undef SVE_VQ_MAX @@ -47,11 +35,13 @@ struct reginfo { /* FP/SIMD */ uint32_t fpsr; uint32_t fpcr; + uint32_t sve_vl; =20 union { struct simd_reginfo simd; #ifdef SVE_MAGIC - struct sve_reginfo sve; + char sve[SVE_SIG_CONTEXT_SIZE(16) - SVE_SIG_REGS_OFFSET] + __attribute__((aligned(16))); #endif }; }; diff --git a/risu_reginfo_aarch64.c b/risu_reginfo_aarch64.c index 7044648..a1020ac 100644 --- a/risu_reginfo_aarch64.c +++ b/risu_reginfo_aarch64.c @@ -71,15 +71,30 @@ void process_arch_opt(int opt, const char *arg) =20 int reginfo_size(struct reginfo *ri) { - int size =3D offsetof(struct reginfo, simd.end); #ifdef SVE_MAGIC - if (test_sve) { - size =3D offsetof(struct reginfo, sve.end); + if (ri->sve_vl) { + int vq =3D sve_vq_from_vl(ri->sve_vl); + return (offsetof(struct reginfo, sve) + + SVE_SIG_CONTEXT_SIZE(vq) - SVE_SIG_REGS_OFFSET); } #endif - return size; + return offsetof(struct reginfo, simd) + sizeof(ri->simd); } =20 +#ifdef SVE_MAGIC +static uint64_t *reginfo_zreg(struct reginfo *ri, int vq, int i) +{ + return (uint64_t *)(ri->sve + SVE_SIG_ZREG_OFFSET(vq, i) - + SVE_SIG_REGS_OFFSET); +} + +static uint16_t *reginfo_preg(struct reginfo *ri, int vq, int i) +{ + return (uint16_t *)(ri->sve + SVE_SIG_PREG_OFFSET(vq, i) - + SVE_SIG_REGS_OFFSET); +} +#endif + /* reginfo_init: initialize with a ucontext */ void reginfo_init(struct reginfo *ri, ucontext_t *uc) { @@ -152,8 +167,6 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) return; } =20 - ri->sve.vl =3D sve->vl; - if (sve->head.size < SVE_SIG_CONTEXT_SIZE(vq)) { if (sve->head.size =3D=3D sizeof(*sve)) { /* SVE state is empty -- not an error. */ @@ -164,24 +177,9 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) return; } =20 - /* Copy ZREG's one at a time */ - for (i =3D 0; i < SVE_NUM_ZREGS; i++) { - memcpy(&ri->sve.zregs[i], - (void *)sve + SVE_SIG_ZREG_OFFSET(vq, i), - SVE_SIG_ZREG_SIZE(vq)); - } - - /* Copy PREG's one at a time */ - for (i =3D 0; i < SVE_NUM_PREGS; i++) { - memcpy(&ri->sve.pregs[i], - (void *)sve + SVE_SIG_PREG_OFFSET(vq, i), - SVE_SIG_PREG_SIZE(vq)); - } - - /* Finally the FFR */ - memcpy(&ri->sve.ffr, (void *)sve + SVE_SIG_FFR_OFFSET(vq), - SVE_SIG_FFR_SIZE(vq)); - + ri->sve_vl =3D sve->vl; + memcpy(ri->sve, (char *)sve + SVE_SIG_REGS_OFFSET, + SVE_SIG_CONTEXT_SIZE(vq) - SVE_SIG_REGS_OFFSET); return; } #endif /* SVE_MAGIC */ @@ -225,18 +223,20 @@ static void sve_dump_preg_diff(FILE *f, int vq, const= uint16_t *p1, fprintf(f, "\n"); } =20 -static void sve_dump_zreg_diff(FILE *f, int vq, const __uint128_t *z1, - const __uint128_t *z2) +static void sve_dump_zreg_diff(FILE *f, int vq, const uint64_t *za, + const uint64_t *zb) { const char *pad =3D ""; int q; =20 for (q =3D 0; q < vq; ++q) { - if (z1[q] !=3D z2[q]) { + uint64_t za0 =3D za[2 * q], za1 =3D za[2 * q + 1]; + uint64_t zb0 =3D zb[2 * q], zb1 =3D zb[2 * q + 1]; + + if (za0 !=3D zb0 || za1 !=3D zb1) { fprintf(f, "%sq%-2d: %016" PRIx64 "%016" PRIx64 - " vs %016" PRIx64 "%016" PRIx64"\n", pad, q, - (uint64_t)(z1[q] >> 64), (uint64_t)z1[q], - (uint64_t)(z2[q] >> 64), (uint64_t)z2[q]); + " vs %016" PRIx64 "%016" PRIx64"\n", + pad, q, za1, za0, zb1, zb0); pad =3D " "; } } @@ -263,28 +263,30 @@ int reginfo_dump(struct reginfo *ri, FILE * f) if (test_sve) { int q, vq =3D test_sve; =20 - fprintf(f, " vl : %d\n", ri->sve.vl); + fprintf(f, " vl : %d\n", ri->sve_vl); =20 - for (i =3D 0; i < 32; i++) { - fprintf(f, " Z%-2d q%-2d: %016" PRIx64 "%016" PRIx64 "\n", i,= 0, - (uint64_t)(ri->sve.zregs[i][0] >> 64), - (uint64_t)ri->sve.zregs[i][0]); + for (i =3D 0; i < SVE_NUM_ZREGS; i++) { + uint64_t *z =3D reginfo_zreg(ri, vq, i); + + fprintf(f, " Z%-2d q%-2d: %016" PRIx64 "%016" PRIx64 "\n", + i, 0, z[1], z[0]); for (q =3D 1; q < vq; ++q) { - fprintf(f, " q%-2d: %016" PRIx64 "%016" PRIx64 "\n", = q, - (uint64_t)(ri->sve.zregs[i][q] >> 64), - (uint64_t)ri->sve.zregs[i][q]); + fprintf(f, " q%-2d: %016" PRIx64 "%016" PRIx64 "\n", + q, z[q * 2 + 1], z[q * 2]); } } =20 - for (i =3D 0; i < 16; i++) { - fprintf(f, " P%-2d : ", i); - sve_dump_preg(f, vq, &ri->sve.pregs[i][0]); + for (i =3D 0; i < SVE_NUM_PREGS + 1; i++) { + uint16_t *p =3D reginfo_preg(ri, vq, i); + + if (i =3D=3D SVE_NUM_PREGS) { + fprintf(f, " FFR : "); + } else { + fprintf(f, " P%-2d : ", i); + } + sve_dump_preg(f, vq, p); fprintf(f, "\n"); } - fprintf(f, " FFR : "); - sve_dump_preg(f, vq, &ri->sve.ffr[0]); - fprintf(f, "\n"); - return !ferror(f); } #endif @@ -338,31 +340,34 @@ int reginfo_dump_mismatch(struct reginfo *m, struct r= eginfo *a, FILE * f) =20 #ifdef SVE_MAGIC if (test_sve) { - int vq =3D sve_vq_from_vl(m->sve.vl); + int vq =3D sve_vq_from_vl(m->sve_vl); =20 - if (m->sve.vl !=3D a->sve.vl) { - fprintf(f, " vl : %d vs %d\n", m->sve.vl, a->sve.vl); + if (m->sve_vl !=3D a->sve_vl) { + fprintf(f, " vl : %d vs %d\n", m->sve_vl, a->sve_vl); } =20 for (i =3D 0; i < SVE_NUM_ZREGS; i++) { - if (!sve_zreg_is_eq(vq, &m->sve.zregs[i], &a->sve.zregs[i])) { - fprintf(f, " Z%-2d ", i); - sve_dump_zreg_diff(f, vq, &m->sve.zregs[i][0], - &a->sve.zregs[i][0]); - } - } - for (i =3D 0; i < SVE_NUM_PREGS; i++) { - if (!sve_preg_is_eq(vq, &m->sve.pregs[i], &a->sve.pregs[i])) { - fprintf(f, " P%-2d : ", i); - sve_dump_preg_diff(f, vq, &m->sve.pregs[i][0], - &a->sve.pregs[i][0]); - } - } - if (!sve_preg_is_eq(vq, &m->sve.ffr, &a->sve.ffr)) { - fprintf(f, " FFR : "); - sve_dump_preg_diff(f, vq, &m->sve.pregs[i][0], &a->sve.pregs[i= ][0]); - } + uint64_t *zm =3D reginfo_zreg(m, vq, i); + uint64_t *za =3D reginfo_zreg(a, vq, i); =20 + if (!sve_zreg_is_eq(vq, zm, za)) { + fprintf(f, " Z%-2d ", i); + sve_dump_zreg_diff(f, vq, zm, za); + } + } + for (i =3D 0; i < SVE_NUM_PREGS + 1; i++) { + uint16_t *pm =3D reginfo_preg(m, vq, i); + uint16_t *pa =3D reginfo_preg(a, vq, i); + + if (!sve_preg_is_eq(vq, pm, pa)) { + if (i =3D=3D SVE_NUM_PREGS) { + fprintf(f, " FFR : "); + } else { + fprintf(f, " P%-2d : ", i); + } + sve_dump_preg_diff(f, vq, pm, pa); + } + } return !ferror(f); } #endif --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115516; cv=none; d=zohomail.com; s=zohoarc; b=cOsnFCid+p78+temEYa3Oawfh0KjAb9aSzDiBY3YCGOiOZWe+Mo7oR9BAPb0apwpv/Wfh00Lgr8xppL3X6RfGGClfjjoVuuEc8hSCLR/wE3UKKzlMWaNCyPsEW5K4oSHMLOEEHU0TGOaj5v+PQ0wukTZ71dQyczH6gFZ+CsFpV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115516; 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=yWhTT6Tler29jJNVR4Zy3JBAxKgKpOlXGq4NgNVQoXk=; b=iNlDpIuyP4AIMwaxpCoU3erGkC3gojfYWqR8G2EBtXDlHNqSpahTUySv7d3GQBGic2zlXfgywt15vgZ9P/aaHow3KgoDvTEh1KBUNTKziJIzEyOm7I9V1n6kK+gaLkdcIMhdsQX/98ejwt07zKBjs9u37meS0pR2zk7ELpWxVvw= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115516710669.1909424845394; Thu, 21 May 2020 19:45:16 -0700 (PDT) Received: from localhost ([::1]:36098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxgR-0001Gu-Cp for importer@patchew.org; Thu, 21 May 2020 22:45:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48292) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWg-00033N-KL for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:10 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:53751) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWf-00058i-CG for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:10 -0400 Received: by mail-pj1-x102c.google.com with SMTP id ci21so4301989pjb.3 for ; Thu, 21 May 2020 19:35:08 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yWhTT6Tler29jJNVR4Zy3JBAxKgKpOlXGq4NgNVQoXk=; b=jbQNc8jmS6QsogwRXB6jiRqzwhYNSaoVNMotTMIk4pxg0AowvCR/GNpofFlPtGCkGh LEoC/59q5a2k8KPNdmnH4sQGCAz1ZqxutLuhGO2BWecKWos7Nhiw2yOIdu9UxkXEbK8F RqC1QtFoRzaQJf1KHI/WM7ixkP0zKXp12OYBEjdFyPYTjRjEQcYd3Dlo8X4jeMLyAi9s 3NNBA/vP3QO/FitdSI/VkIAp8Njgn0DHkd2F64Adl1FViF93J7T+pcfnK63ZNWTNhC7y lSgQxJYYvDLjxLTVYuQa2XHOlwKvKTFCWb6NULs6tORLJj9faa5dkrJ9kbv58kXAQV5K F1bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yWhTT6Tler29jJNVR4Zy3JBAxKgKpOlXGq4NgNVQoXk=; b=pEf+HjaqmGjfnMzjCZkXGhh/QnJT9c9WXKru+C0cHP+vWn2uMT3Q5oQD0IhZeye1tG fLRq23QtM6Acf4do9YSUx6PsNHTEM3rv1acwf0ypHoue2stfN4E4+yEBuldsMpvp2N7R beDvq+IZzQrNYB9XRLUYU5XZZ4CyePS60U9FaKogh7plu6lAB4gUcxW5kbsLZAk2dTwp CPrhsaiS7czuMtuJ9gMALJ/n0ZTCybsLoOg1kO1ikSLcpBZZkrAgpJfYtrj8Nisi41GR ydOmHSCdDB3R5of+gOxbabNvdjEf7Rjf2fnP1A5Z7VN2KsDdxs+67emdLCP7gu5lZLwy I/mg== X-Gm-Message-State: AOAM531ffd0fvJjElrJECf6w73nxV1hrusZ3uHz0g0VX5b8r7AqHTKOi TX3Fp/ae50jYJEkVnrtCtN1fm9Kij90= X-Google-Smtp-Source: ABdhPJwfnORRMmewVmf4ibPtq53wyRK/Fpyz52RhkpPsgmwdwchuk0CyYyJ4jXZlgWd7B17cmU9D2Q== X-Received: by 2002:a17:90a:17ed:: with SMTP id q100mr1677697pja.80.1590114907295; Thu, 21 May 2020 19:35:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 20/25] aarch64: Use arch_init to configure sve Date: Thu, 21 May 2020 19:34:35 -0700 Message-Id: <20200522023440.26261-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Adjust some of the aarch64 code to look at the reginfo struct instead of looking at test_sve, so that we do not need to pass the --test-sve option in order to dump sve trace files. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.h | 1 + risu.c | 3 +++ risu_reginfo_aarch64.c | 55 +++++++++++++++++++++++++++--------------- risu_reginfo_arm.c | 4 +++ risu_reginfo_i386.c | 4 +++ risu_reginfo_m68k.c | 4 +++ risu_reginfo_ppc64.c | 4 +++ 7 files changed, 55 insertions(+), 20 deletions(-) diff --git a/risu.h b/risu.h index 3cad3d5..bdb70c1 100644 --- a/risu.h +++ b/risu.h @@ -23,6 +23,7 @@ extern const struct option * const arch_long_opts; extern const char * const arch_extra_help; void process_arch_opt(int opt, const char *arg); +void arch_init(void); #define FIRST_ARCH_OPT 0x100 =20 /* GCC computed include to pull in the correct risu_reginfo_*.h for diff --git a/risu.c b/risu.c index a70b778..1c096a8 100644 --- a/risu.c +++ b/risu.c @@ -617,6 +617,9 @@ int main(int argc, char **argv) =20 load_image(imgfile); =20 + /* E.g. select requested SVE vector length. */ + arch_init(); + if (ismaster) { return master(); } else { diff --git a/risu_reginfo_aarch64.c b/risu_reginfo_aarch64.c index a1020ac..fb8e11a 100644 --- a/risu_reginfo_aarch64.c +++ b/risu_reginfo_aarch64.c @@ -44,8 +44,6 @@ const char * const arch_extra_help void process_arch_opt(int opt, const char *arg) { #ifdef SVE_MAGIC - long want, got; - assert(opt =3D=3D FIRST_ARCH_OPT); test_sve =3D strtol(arg, 0, 10); =20 @@ -53,22 +51,37 @@ void process_arch_opt(int opt, const char *arg) fprintf(stderr, "Invalid value for VQ (1-%d)\n", SVE_VQ_MAX); exit(EXIT_FAILURE); } - want =3D sve_vl_from_vq(test_sve); - got =3D prctl(PR_SVE_SET_VL, want); - if (want !=3D got) { - if (got < 0) { - perror("prctl PR_SVE_SET_VL"); - } else { - fprintf(stderr, "Unsupported value for VQ (%d !=3D %d)\n", - test_sve, (int)sve_vq_from_vl(got)); - } - exit(EXIT_FAILURE); - } #else abort(); #endif } =20 +void arch_init(void) +{ +#ifdef SVE_MAGIC + long want, got1, got2; + + if (test_sve =3D=3D 0) { + return; + } + + want =3D sve_vl_from_vq(test_sve); + asm(".arch_extension sve\n\trdvl %0, #1" : "=3Dr"(got1)); + if (want !=3D got1) { + got2 =3D prctl(PR_SVE_SET_VL, want); + if (want !=3D got2) { + if (got2 < 0) { + perror("prctl PR_SVE_SET_VL"); + got2 =3D got1; + } + fprintf(stderr, "Unsupported value for VQ (%d !=3D %d)\n", + test_sve, (int)sve_vq_from_vl(got1)); + exit(EXIT_FAILURE); + } + } +#endif +} + int reginfo_size(struct reginfo *ri) { #ifdef SVE_MAGIC @@ -170,6 +183,7 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) if (sve->head.size < SVE_SIG_CONTEXT_SIZE(vq)) { if (sve->head.size =3D=3D sizeof(*sve)) { /* SVE state is empty -- not an error. */ + goto do_simd; } else { fprintf(stderr, "risu_reginfo_aarch64: " "failed to get complete SVE state\n"); @@ -182,6 +196,7 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) SVE_SIG_CONTEXT_SIZE(vq) - SVE_SIG_REGS_OFFSET); return; } + do_simd: #endif /* SVE_MAGIC */ =20 for (i =3D 0; i < 32; i++) { @@ -260,8 +275,9 @@ int reginfo_dump(struct reginfo *ri, FILE * f) fprintf(f, " fpcr : %08x\n", ri->fpcr); =20 #ifdef SVE_MAGIC - if (test_sve) { - int q, vq =3D test_sve; + if (ri->sve_vl) { + int vq =3D sve_vq_from_vl(ri->sve_vl); + int q; =20 fprintf(f, " vl : %d\n", ri->sve_vl); =20 @@ -339,13 +355,12 @@ int reginfo_dump_mismatch(struct reginfo *m, struct r= eginfo *a, FILE * f) } =20 #ifdef SVE_MAGIC - if (test_sve) { + if (m->sve_vl !=3D a->sve_vl) { + fprintf(f, " vl : %d vs %d\n", m->sve_vl, a->sve_vl); + } + if (m->sve_vl) { int vq =3D sve_vq_from_vl(m->sve_vl); =20 - if (m->sve_vl !=3D a->sve_vl) { - fprintf(f, " vl : %d vs %d\n", m->sve_vl, a->sve_vl); - } - for (i =3D 0; i < SVE_NUM_ZREGS; i++) { uint64_t *zm =3D reginfo_zreg(m, vq, i); uint64_t *za =3D reginfo_zreg(a, vq, i); diff --git a/risu_reginfo_arm.c b/risu_reginfo_arm.c index 47c52e8..202120b 100644 --- a/risu_reginfo_arm.c +++ b/risu_reginfo_arm.c @@ -36,6 +36,10 @@ void process_arch_opt(int opt, const char *arg) abort(); } =20 +void arch_init(void) +{ +} + int reginfo_size(struct reginfo *ri) { return sizeof(*ri); diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c index 50505ab..e9730be 100644 --- a/risu_reginfo_i386.c +++ b/risu_reginfo_i386.c @@ -74,6 +74,10 @@ void process_arch_opt(int opt, const char *arg) } } =20 +void arch_init(void) +{ +} + int reginfo_size(struct reginfo *ri) { return sizeof(*ri); diff --git a/risu_reginfo_m68k.c b/risu_reginfo_m68k.c index 4eb30cd..4c25e77 100644 --- a/risu_reginfo_m68k.c +++ b/risu_reginfo_m68k.c @@ -23,6 +23,10 @@ void process_arch_opt(int opt, const char *arg) abort(); } =20 +void arch_init(void) +{ +} + int reginfo_size(struct reginfo *ri) { return sizeof(*ri); diff --git a/risu_reginfo_ppc64.c b/risu_reginfo_ppc64.c index 39e8f1c..c80e387 100644 --- a/risu_reginfo_ppc64.c +++ b/risu_reginfo_ppc64.c @@ -32,6 +32,10 @@ void process_arch_opt(int opt, const char *arg) abort(); } =20 +void arch_init(void) +{ +} + int reginfo_size(struct reginfo *ri) { return sizeof(*ri); --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115627; cv=none; d=zohomail.com; s=zohoarc; b=PxswxDZwfe2x3kLz0S61t5lWHxLFEmGwcEKoYAdCVF+vxtOKGfQYGvsExG86a6T17zQm+kqLih2EbKiLWBeqyJioW6CdPVrSt3+OKXU6qb33C9Zlepbt8clT0vnlNTYbktBC12rUxAqMIocQehmfRVKuX/DsMiGpWZ68DglQsds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115627; 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=Y21KcsvLFJXq/u9VH9lik1swR2hgaP1jOrA8QoTE+F4=; b=Pam5L51FnTifAUp6VfYzd4t/IgMkDzXPgXpmTKniq4Qvtekkl06IozUxWC3W1T353CJ9jAw8CfUgrXcLufneHMRTKuOiFxkQ0Dc3WLyBXYsAQhWBRrZzVItbK7DsGUgfQNnyTVKFbQxNr6XhEcS5qF24NGd0Oe4HLAOJlsN9jEg= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115627082716.7658582926381; Thu, 21 May 2020 19:47:07 -0700 (PDT) Received: from localhost ([::1]:42204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxiC-0004xN-V3 for importer@patchew.org; Thu, 21 May 2020 22:47:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48296) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWh-00036W-IH for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:11 -0400 Received: from mail-pj1-x1041.google.com ([2607:f8b0:4864:20::1041]:55378) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWg-00058u-FP for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:11 -0400 Received: by mail-pj1-x1041.google.com with SMTP id k7so4289771pjs.5 for ; Thu, 21 May 2020 19:35:09 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y21KcsvLFJXq/u9VH9lik1swR2hgaP1jOrA8QoTE+F4=; b=ECNuVEcZAbPQPZxEjgGYqmY1EOgyTcS2pmNAfs8ZJcMHP/ftK0gbYbPgPPCps1PfE1 eLCzVaAcxyzXmswqa0IQNKeXMKdbERkhegKD6Uqmm8Hl1/fr8F4UfHqVIJp+lSS9xrLL DLKVYDamgUw2k2Tb1pvRsN9i/ikTMT9OXfxnYFn4wyeVaUq+dhFEOMTqgBqA0p69szpg 4hFl1488GrsZkojtEUBgv7lBQe1HZtUMMT1BfUndkL+qZwo02RjpwaSBf4OCeVyOY2o0 PImxTHMXHkVVBXgIKbG1v91iYbGrSHOq3HlI3kNAcMa5SPM9NOax3coU7J/vK4XAhtCg 2zCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y21KcsvLFJXq/u9VH9lik1swR2hgaP1jOrA8QoTE+F4=; b=KV5WvMw6uMHxCAR/m59s9zrFGgONBK3y53jzdcw4Fae7i0B3c0x9zczTHgh0V1VMFk t2XseKAYbYFjmIs4ajuIHGOjefrsEc3LNSw0o/0+G0ZOqV9qCFLywOuElBZ6cslZXWhf oYsIrcsK++d9ZlOsH/egrBUIuUlxJ8+1PJi41MACpCjWtVR3vFJ8IUtQ2YOE/pG5JMdC Ct6agPSUqz9HPo3BNKCR2jUeBcf7Qqi4GHHMmCmaUwfihvaZzzZ9E7HwLKxoU6teLeWa nma7acZV3mdGluzhe5GIQIwK8ODyVDD4xqOXJofpjN5avoEt7cd5BBoKREBF1OZsEwdY 4QWg== X-Gm-Message-State: AOAM531h+Eg9YMDoUTFP37ELdd9Xk49rVEbrd+kiHfIK4MBYuACELIn8 BikHV1780PvYtiZK5JbFcOcoGm7f5I0= X-Google-Smtp-Source: ABdhPJxAQwznYPV6MAoBfMRQFrDmKEV+jXgKMF9phpFxo3XZSwyMOTNR648GTwsCOWFaw51OGzFghg== X-Received: by 2002:a17:902:328:: with SMTP id 37mr13148955pld.35.1590114908766; Thu, 21 May 2020 19:35:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 21/25] ppc64: Use uint64_t to represent double Date: Thu, 21 May 2020 19:34:36 -0700 Message-Id: <20200522023440.26261-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1041; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1041.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" We want to do exact bitwise comparisons of the data, not be held hostage to IEEE comparisons and NaNs. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu_reginfo_ppc64.h | 3 ++- risu_reginfo_ppc64.c | 29 +++++++++-------------------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/risu_reginfo_ppc64.h b/risu_reginfo_ppc64.h index 7f2c962..4b1d8bd 100644 --- a/risu_reginfo_ppc64.h +++ b/risu_reginfo_ppc64.h @@ -20,7 +20,8 @@ struct reginfo { uint64_t nip; uint64_t prev_addr; gregset_t gregs; - fpregset_t fpregs; + uint64_t fpregs[32]; + uint64_t fpscr; vrregset_t vrregs; }; =20 diff --git a/risu_reginfo_ppc64.c b/risu_reginfo_ppc64.c index c80e387..9899b36 100644 --- a/risu_reginfo_ppc64.c +++ b/risu_reginfo_ppc64.c @@ -45,6 +45,7 @@ int reginfo_size(struct reginfo *ri) void reginfo_init(struct reginfo *ri, ucontext_t *uc) { int i; + memset(ri, 0, sizeof(*ri)); =20 ri->faulting_insn =3D *((uint32_t *) uc->uc_mcontext.regs->nip); @@ -54,16 +55,11 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) ri->gregs[i] =3D uc->uc_mcontext.gp_regs[i]; } =20 - for (i =3D 0; i < NFPREG; i++) { - ri->fpregs[i] =3D uc->uc_mcontext.fp_regs[i]; - } + memcpy(ri->fpregs, uc->uc_mcontext.fp_regs, 32 * sizeof(double)); + ri->fpscr =3D uc->uc_mcontext.fp_regs[32]; =20 - for (i =3D 0; i < 32; i++) { - ri->vrregs.vrregs[i][0] =3D uc->uc_mcontext.v_regs->vrregs[i][0]; - ri->vrregs.vrregs[i][1] =3D uc->uc_mcontext.v_regs->vrregs[i][1]; - ri->vrregs.vrregs[i][2] =3D uc->uc_mcontext.v_regs->vrregs[i][2]; - ri->vrregs.vrregs[i][3] =3D uc->uc_mcontext.v_regs->vrregs[i][3]; - } + memcpy(ri->vrregs.vrregs, uc->uc_mcontext.v_regs->vrregs, + sizeof(ri->vrregs.vrregs[0]) * 32); ri->vrregs.vscr =3D uc->uc_mcontext.v_regs->vscr; ri->vrregs.vrsave =3D uc->uc_mcontext.v_regs->vrsave; } @@ -91,10 +87,6 @@ int reginfo_is_eq(struct reginfo *m, struct reginfo *a) } =20 for (i =3D 0; i < 32; i++) { - if (isnan(m->fpregs[i]) && isnan(a->fpregs[i])) { - continue; - } - if (m->fpregs[i] !=3D a->fpregs[i]) { return 0; } @@ -141,10 +133,10 @@ int reginfo_dump(struct reginfo *ri, FILE * f) fprintf(f, "\tdscr : %16lx\n\n", ri->gregs[44]); =20 for (i =3D 0; i < 16; i++) { - fprintf(f, "\tf%2d: %.4f\tf%2d: %.4f\n", i, ri->fpregs[i], + fprintf(f, "\tf%2d: %016lx\tf%2d: %016lx\n", i, ri->fpregs[i], i + 16, ri->fpregs[i + 16]); } - fprintf(f, "\tfpscr: %f\n\n", ri->fpregs[32]); + fprintf(f, "\tfpscr: %016lx\n\n", ri->fpscr); =20 for (i =3D 0; i < 32; i++) { fprintf(f, "vr%02d: %8x, %8x, %8x, %8x\n", i, @@ -181,13 +173,10 @@ int reginfo_dump_mismatch(struct reginfo *m, struct r= eginfo *a, FILE *f) } =20 for (i =3D 0; i < 32; i++) { - if (isnan(m->fpregs[i]) && isnan(a->fpregs[i])) { - continue; - } - if (m->fpregs[i] !=3D a->fpregs[i]) { fprintf(f, "Mismatch: Register f%d\n", i); - fprintf(f, "m: [%f] !=3D a: [%f]\n", m->fpregs[i], a->fpregs[i= ]); + fprintf(f, "m: [%016lx] !=3D a: [%016lx]\n", + m->fpregs[i], a->fpregs[i]); } } =20 --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115240; cv=none; d=zohomail.com; s=zohoarc; b=bvuwX4UzURm+yzcvw5K3CzE7Pbxlnr7y2uqV+V8gUCJrJo0h7BhmnO0Z4gnEqYkoSQci05PCmhoHUC75zuMoDxJe4xKYznxtpvTfCc75nRPoOZ2vnqbU/wxfUaXP8PlJa9PJawX3AW9y6mkVlOj/paqUkUVICXGvAU2bO7in5mg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115240; 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=8z6nXPR7A7x3OYVICMe1JtjXlF4OZnzlzqVhe7En9iU=; b=gA1Ue59PJSegujV3sybLq4DuliLvbXhNd9Yn/h2zf4I77ATXcY34FI3RFXde+zYL8TsGoePnHpwoX/28MXIgSVBO3LxukbhL7+jnNgcTT2rwX5jsi6DpXullrcZZE1UKZk/50QlIxOVWz0l5djFgkJzXdgLx1LLVSsRTtITp5c0= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115240089983.2260001711517; Thu, 21 May 2020 19:40:40 -0700 (PDT) Received: from localhost ([::1]:43088 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxby-0006vF-OD for importer@patchew.org; Thu, 21 May 2020 22:40:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48308) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWj-0003DT-M8 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:13 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:43202) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWi-000596-5R for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:13 -0400 Received: by mail-pl1-x642.google.com with SMTP id k22so3809188pls.10 for ; Thu, 21 May 2020 19:35:11 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8z6nXPR7A7x3OYVICMe1JtjXlF4OZnzlzqVhe7En9iU=; b=Kf45REacJKvbRslyMaI32TXHGeHT3x3QSle1TsHlTUfNL1UhF9ECVA0X8Yf/CR00tC TZFITRRCE5XiDELUD1wK465OUGCl5vJaeXa3erJFXADPwdhEXIRqj4fgHYmvpCUTY6lQ uNw/lC2KcvjFf2v8k7OsD+cu2hcFyv3VOQmsSFQToZPgpcLQCRVhg+ZkPFG2hoTQVbbE V30kK7D/Cg7DQxBMMJjkRFtbOdFErepHdfniO7JuysVrdwWiYz9stK8ngF5aAC0kdZgO wPhMzbq1dt7DtJw/YsoAz8Kgrj9hlL0eZC264mvrYMHXJcZxC2ZX+1JP3OlWL2+Ad4Jd lrqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8z6nXPR7A7x3OYVICMe1JtjXlF4OZnzlzqVhe7En9iU=; b=n5AMX3TtouZVQCTzVSaDAuqbk0GYjmZrcpKCemlRuqbP0p3a35AF/RUEr+utNymjYk tSMt9loxgvRIwXlzxvrwY+i/sB2sDNChMrLG505Fnn9ikKQ8XewHITyboxb7W0AQwQp/ 0XR/5fFuP+jiuJjerVzKw41ZZbWPin7L6HbhCMoxwb5fP6ZRTQwiufTnd0yvlodbeCxR dIFQYs7juwQYGchGJiD1UYRoRV5/Z5APfr28BMnZtVj4pT+0A4UaexTbEUZBEg73rbLx Ly2TN9RRHBrNSxjKjCWeLL5czfdfByXPgW6C9yg7ueJAYdC/PpU6wdrNE+tDYOcNU0ex gtqQ== X-Gm-Message-State: AOAM531z55WaE6/3/mEAbqN225VAQzRuo6w4leMc87B7HUBOnCJxpSZg kKzJnYNHg6I5U4GwhX1GkD/UO72GVRw= X-Google-Smtp-Source: ABdhPJyJSSfUBT3jNI89cvSh2MPmdvSXca3SETUZieY7LSHUaBVYHGMPNsDcVM2jEMGAbqgnYLgX0w== X-Received: by 2002:a17:902:82c9:: with SMTP id u9mr12390775plz.179.1590114909988; Thu, 21 May 2020 19:35:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 22/25] Standardize reginfo_dump_mismatch printing Date: Thu, 21 May 2020 19:34:37 -0700 Message-Id: <20200522023440.26261-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::642; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x642.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Hoist the "master vs apprentice" label to apprentice(), since we will want different labels for dumping. Remove all of the "mismatch" text from reginfo_dump_mismatch -- just print "vs". Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.h | 4 ++-- risu.c | 1 + risu_reginfo_aarch64.c | 12 +++++------- risu_reginfo_arm.c | 18 ++++++++--------- risu_reginfo_i386.c | 6 +----- risu_reginfo_m68k.c | 23 +++++++--------------- risu_reginfo_ppc64.c | 44 ++++++++++++++++++------------------------ 7 files changed, 44 insertions(+), 64 deletions(-) diff --git a/risu.h b/risu.h index bdb70c1..99f0d8e 100644 --- a/risu.h +++ b/risu.h @@ -123,8 +123,8 @@ int reginfo_is_eq(struct reginfo *r1, struct reginfo *r= 2); /* print reginfo state to a stream, returns 1 on success, 0 on failure */ int reginfo_dump(struct reginfo *ri, FILE * f); =20 -/* reginfo_dump_mismatch: print mismatch details to a stream, ret nonzero= =3Dok */ -int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f); +/* reginfo_dump_mismatch: print mismatch details to a stream */ +void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f); =20 /* return size of reginfo */ int reginfo_size(struct reginfo *ri); diff --git a/risu.c b/risu.c index 1c096a8..f613fa9 100644 --- a/risu.c +++ b/risu.c @@ -449,6 +449,7 @@ static int apprentice(void) reginfo_dump(&ri[MASTER], stderr); fprintf(stderr, "apprentice reginfo:\n"); reginfo_dump(&ri[APPRENTICE], stderr); + fprintf(stderr, "mismatch detail (master : apprentice):\n"); reginfo_dump_mismatch(&ri[MASTER], &ri[APPRENTICE], stderr); return EXIT_FAILURE; =20 diff --git a/risu_reginfo_aarch64.c b/risu_reginfo_aarch64.c index fb8e11a..b443745 100644 --- a/risu_reginfo_aarch64.c +++ b/risu_reginfo_aarch64.c @@ -316,15 +316,15 @@ int reginfo_dump(struct reginfo *ri, FILE * f) return !ferror(f); } =20 -/* reginfo_dump_mismatch: print mismatch details to a stream, ret nonzero= =3Dok */ -int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE * f) +void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE * f) { int i; - fprintf(f, "mismatch detail (master : apprentice):\n"); + if (m->faulting_insn !=3D a->faulting_insn) { - fprintf(f, " faulting insn mismatch %08x vs %08x\n", + fprintf(f, " faulting insn: %08x vs %08x\n", m->faulting_insn, a->faulting_insn); } + for (i =3D 0; i < 31; i++) { if (m->regs[i] !=3D a->regs[i]) { fprintf(f, " X%-2d : %016" PRIx64 " vs %016" PRIx64 "\n", @@ -383,7 +383,7 @@ int reginfo_dump_mismatch(struct reginfo *m, struct reg= info *a, FILE * f) sve_dump_preg_diff(f, vq, pm, pa); } } - return !ferror(f); + return; } #endif =20 @@ -398,6 +398,4 @@ int reginfo_dump_mismatch(struct reginfo *m, struct reg= info *a, FILE * f) (uint64_t) a->simd.vregs[i]); } } - - return !ferror(f); } diff --git a/risu_reginfo_arm.c b/risu_reginfo_arm.c index 202120b..ba1035e 100644 --- a/risu_reginfo_arm.c +++ b/risu_reginfo_arm.c @@ -183,32 +183,33 @@ int reginfo_dump(struct reginfo *ri, FILE *f) return !ferror(f); } =20 -int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) +void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) { int i; - fprintf(f, "mismatch detail (master : apprentice):\n"); =20 if (m->faulting_insn_size !=3D a->faulting_insn_size) { - fprintf(f, " faulting insn size mismatch %d vs %d\n", + fprintf(f, " faulting insn size: %d vs %d\n", m->faulting_insn_size, a->faulting_insn_size); } else if (m->faulting_insn !=3D a->faulting_insn) { if (m->faulting_insn_size =3D=3D 2) { - fprintf(f, " faulting insn mismatch %04x vs %04x\n", + fprintf(f, " faulting insn: %04x vs %04x\n", m->faulting_insn, a->faulting_insn); } else { - fprintf(f, " faulting insn mismatch %08x vs %08x\n", + fprintf(f, " faulting insn: %08x vs %08x\n", m->faulting_insn, a->faulting_insn); } } + for (i =3D 0; i < 16; i++) { if (m->gpreg[i] !=3D a->gpreg[i]) { - fprintf(f, " r%d: %08x vs %08x\n", i, m->gpreg[i], - a->gpreg[i]); + fprintf(f, " r%d: %08x vs %08x\n", i, m->gpreg[i], a->gpreg[i= ]); } } + if (m->cpsr !=3D a->cpsr) { fprintf(f, " cpsr: %08x vs %08x\n", m->cpsr, a->cpsr); } + for (i =3D 0; i < 32; i++) { if (m->fpregs[i] !=3D a->fpregs[i]) { fprintf(f, " d%d: %016llx vs %016llx\n", i, @@ -216,9 +217,8 @@ int reginfo_dump_mismatch(struct reginfo *m, struct reg= info *a, FILE *f) (unsigned long long) a->fpregs[i]); } } + if (m->fpscr !=3D a->fpscr) { fprintf(f, " fpscr: %08x vs %08x\n", m->fpscr, a->fpscr); } - - return !ferror(f); } diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c index e9730be..57e4c00 100644 --- a/risu_reginfo_i386.c +++ b/risu_reginfo_i386.c @@ -349,14 +349,12 @@ int reginfo_dump(struct reginfo *ri, FILE *f) return !ferror(f); } =20 -int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) +void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) { int i, j, n, w; uint64_t features; char r; =20 - fprintf(f, "Mismatch (master v apprentice):\n"); - for (i =3D 0; i < NGREG; i++) { if (m->gregs[i] !=3D a->gregs[i]) { assert(regname[i]); @@ -399,6 +397,4 @@ int reginfo_dump_mismatch(struct reginfo *m, struct reg= info *a, FILE *f) i, m->kregs[i], a->kregs[i]); } } - - return !ferror(f); } diff --git a/risu_reginfo_m68k.c b/risu_reginfo_m68k.c index 4c25e77..29edce9 100644 --- a/risu_reginfo_m68k.c +++ b/risu_reginfo_m68k.c @@ -118,13 +118,12 @@ int reginfo_dump(struct reginfo *ri, FILE *f) return !ferror(f); } =20 -int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE * f) +void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) { int i; =20 if (m->gregs[R_PS] !=3D a->gregs[R_PS]) { - fprintf(f, "Mismatch: Register PS\n"); - fprintf(f, "master: [%x] - apprentice: [%x]\n", + fprintf(f, " PS: %08x vs %08x\n", m->gregs[R_PS], a->gregs[R_PS]); } =20 @@ -133,22 +132,18 @@ int reginfo_dump_mismatch(struct reginfo *m, struct r= eginfo *a, FILE * f) continue; } if (m->gregs[i] !=3D a->gregs[i]) { - fprintf(f, "Mismatch: Register %c%d\n", i < 8 ? 'D' : 'A', - i % 8); - fprintf(f, "master: [%x] - apprentice: [%x]\n", m->gregs[i], - a->gregs[i]); + fprintf(f, " %c%d: %08x vs %08x\n", + i < 8 ? 'D' : 'A', i % 8, m->gregs[i], a->gregs[i]); } } =20 if (m->fpregs.f_pcr !=3D a->fpregs.f_pcr) { - fprintf(f, "Mismatch: Register FPCR\n"); - fprintf(f, "m: [%04x] !=3D a: [%04x]\n", + fprintf(f, " FPCR: %04x vs %04x\n", m->fpregs.f_pcr, a->fpregs.f_pcr); } =20 if (m->fpregs.f_psr !=3D a->fpregs.f_psr) { - fprintf(f, "Mismatch: Register FPSR\n"); - fprintf(f, "m: [%08x] !=3D a: [%08x]\n", + fprintf(f, " FPSR: %04x vs %04x\n", m->fpregs.f_psr, a->fpregs.f_psr); } =20 @@ -156,14 +151,10 @@ int reginfo_dump_mismatch(struct reginfo *m, struct r= eginfo *a, FILE * f) if (m->fpregs.f_fpregs[i][0] !=3D a->fpregs.f_fpregs[i][0] || m->fpregs.f_fpregs[i][1] !=3D a->fpregs.f_fpregs[i][1] || m->fpregs.f_fpregs[i][2] !=3D a->fpregs.f_fpregs[i][2]) { - fprintf(f, "Mismatch: Register FP%d\n", i); - fprintf(f, "m: [%08x %08x %08x] !=3D a: [%08x %08x %08x]\n", + fprintf(f, " FP%d: %08x%08x%08x vs %08x%08x%08x\n", i, m->fpregs.f_fpregs[i][0], m->fpregs.f_fpregs[i][1], m->fpregs.f_fpregs[i][2], a->fpregs.f_fpregs[i][0], a->fpregs.f_fpregs[i][1], a->fpregs.f_fpregs[i][2]); } } - - - return !ferror(f); } diff --git a/risu_reginfo_ppc64.c b/risu_reginfo_ppc64.c index 9899b36..e96dc48 100644 --- a/risu_reginfo_ppc64.c +++ b/risu_reginfo_ppc64.c @@ -27,6 +27,15 @@ const struct option * const arch_long_opts; const char * const arch_extra_help; =20 +static const char * const greg_names[NGREG] =3D { + "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", + "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", + "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", + [XER] =3D "xer", + [CCR] =3D "ccr", +}; + void process_arch_opt(int opt, const char *arg) { abort(); @@ -147,35 +156,21 @@ int reginfo_dump(struct reginfo *ri, FILE * f) return !ferror(f); } =20 -int reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) +void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) { int i; - for (i =3D 0; i < 32; i++) { - if (i =3D=3D 1 || i =3D=3D 13) { - continue; + + for (i =3D 0; i < NGREG; i++) { + if (greg_names[i] !=3D NULL && m->gregs[i] !=3D a->gregs[i]) { + fprintf(f, "%6s: %016lx vs %016lx\n", + greg_names[i], m->gregs[i], a->gregs[i]); } - - if (m->gregs[i] !=3D a->gregs[i]) { - fprintf(f, "Mismatch: Register r%d\n", i); - fprintf(f, "master: [%lx] - apprentice: [%lx]\n", - m->gregs[i], a->gregs[i]); - } - } - - if (m->gregs[XER] !=3D a->gregs[XER]) { - fprintf(f, "Mismatch: XER\n"); - fprintf(f, "m: [%lx] !=3D a: [%lx]\n", m->gregs[XER], a->gregs[XER= ]); - } - - if (m->gregs[CCR] !=3D a->gregs[CCR]) { - fprintf(f, "Mismatch: Cond. Register\n"); - fprintf(f, "m: [%lx] !=3D a: [%lx]\n", m->gregs[CCR], a->gregs[CCR= ]); } =20 for (i =3D 0; i < 32; i++) { if (m->fpregs[i] !=3D a->fpregs[i]) { - fprintf(f, "Mismatch: Register f%d\n", i); - fprintf(f, "m: [%016lx] !=3D a: [%016lx]\n", + fprintf(f, "%*s%d: %016lx vs %016lx\n", + 6 - (i < 10 ? 1 : 2), "f", i, m->fpregs[i], a->fpregs[i]); } } @@ -186,13 +181,12 @@ int reginfo_dump_mismatch(struct reginfo *m, struct r= eginfo *a, FILE *f) m->vrregs.vrregs[i][2] !=3D a->vrregs.vrregs[i][2] || m->vrregs.vrregs[i][3] !=3D a->vrregs.vrregs[i][3]) { =20 - fprintf(f, "Mismatch: Register vr%d\n", i); - fprintf(f, "m: [%x, %x, %x, %x] !=3D a: [%x, %x, %x, %x]\n", + fprintf(f, "%*s%d: %08x%08x%08x%08x vs %08x%08x%08x%08x\n", + 6 - (i < 10 ? 1 : 2), "vr", i, m->vrregs.vrregs[i][0], m->vrregs.vrregs[i][1], m->vrregs.vrregs[i][2], m->vrregs.vrregs[i][3], a->vrregs.vrregs[i][0], a->vrregs.vrregs[i][1], a->vrregs.vrregs[i][2], a->vrregs.vrregs[i][3]); } } - return !ferror(f); } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115319; cv=none; d=zohomail.com; s=zohoarc; b=CLXRWDB5ic6n/HYpl+CLdHVrQ2h7Je7LmSQXuBiYUALpO94Abw/rYlT6jz5zx3336bDlGbfffYWXQoz3lXIkspT2oc/XD5tuFKJNKmhyvCtzyG55gG1VGWLqq07h3gWdj+yBo/ix2xPTKuVj0Xeu+vGX4Dn4GujeI2lOjwTYJ2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115319; 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=BrFduBNmLob/ZHyXbyYHj/vlX7R48tWvfDpwxlGRg/0=; b=avaWCT+W5I/gvCfA5VnkG9eZkmn9R5QbmBJLqGCak9DIrD+MDojdOI+z3wNOHm2/TRNRPriaYD+W4BjkalclMcu8mHvqXR+z+CKQQfXrLMAONi6930VhDgC+Hn4U3jBSzW7OzsKY40/f/i61nbk84O68HWBtGbprTvEY6VTH/l0= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115319865642.985439580364; Thu, 21 May 2020 19:41:59 -0700 (PDT) Received: from localhost ([::1]:49562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxdG-0001qQ-IK for importer@patchew.org; Thu, 21 May 2020 22:41:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48314) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWk-0003FK-8o for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:14 -0400 Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]:55060) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWi-00059D-ST for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:13 -0400 Received: by mail-pj1-x1042.google.com with SMTP id s69so4293967pjb.4 for ; Thu, 21 May 2020 19:35:12 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BrFduBNmLob/ZHyXbyYHj/vlX7R48tWvfDpwxlGRg/0=; b=d+o7d75w1dlN4N2FIq8e4q06qpBJmNEHlzIZHEEsXlgvTpu/1E3VoqzuVXTJlqRk7r Q1dohYUTIFDY7W/ugezO08NFd8RXBhXZj8yVQhFOzhXy494BR8HjI3GBrjPkzQjrfgfp Ky0Z+CaWObUzM6P0ZIoJMiSwKPneobr5q8+v7ENzoKCdoevuYUWCEKfvqoMp1sMJcJ74 Fj70aNxhBWy5wJcnFeuABxs+bWflcgMla8v2SxVmU0Q2CAVWX6B3ssi/ardvAdaEIv4j PIWIg7vJgPw19zmrOIR1fDANVl9ZW1bu69e7qsfz+IQKJQvxP7QnD2JVolqbq1iVHrhj N0lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BrFduBNmLob/ZHyXbyYHj/vlX7R48tWvfDpwxlGRg/0=; b=SfvVHAsVl2Fc/B+UgR2aKN2+qdk59JYDYEHwuAfxfUm41KplCLUDxZYke4O1mwOV14 y7dWFv85ENnTO7t05I7A9E+jOmyAhN+c0ylO/WTpJY1n35x1LBNY+FdF+WIT6OeC5qtL 2Yq0tMvH9AXKBU1dTulYUjiGITOpCjV5g17Sk1cap3CKarCB1vYtbwjYroeliI6JNwvB sJ9F/ZtnwU3fWeyE1ixpM1/72QdTu/X1C/k6dc3SX08WcNL5ywRKrzONqNvVgb1iYGSZ /91FVKC8i95BwzTX2Hb9EJ6nl+W5vv7YIjvLXeQck2xu4N9AbDC1Ezp4ODacipwJlXiK D/wQ== X-Gm-Message-State: AOAM532WW8FBHP9cBtdrJyqn2UiUBTCDT6+C9bscFRwGxhYjEFI+yn7U cGbEvud770FZiYRww7P0aSEStfACx/4= X-Google-Smtp-Source: ABdhPJzgLCnAGnChgvw7j1EcJ3XwbYYugBr8f2c/crGpN1wg8dANLMcewLHltg2dgAgjL0ieUhZ41Q== X-Received: by 2002:a17:902:bccc:: with SMTP id o12mr11723535pls.162.1590114911034; Thu, 21 May 2020 19:35:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 23/25] Add --fulldump and --diffdup options Date: Thu, 21 May 2020 19:34:38 -0700 Message-Id: <20200522023440.26261-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1042; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1042.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" These allow the inspection of the trace files. Signed-off-by: Richard Henderson --- risu.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 15 deletions(-) diff --git a/risu.c b/risu.c index f613fa9..8d907d9 100644 --- a/risu.c +++ b/risu.c @@ -484,23 +484,101 @@ static int apprentice(void) } } =20 -static int ismaster; +static int dump_trace(bool isfull) +{ + RisuResult res; + int tick =3D 0; + + while (1) { + struct reginfo *this_ri; + + this_ri =3D &ri[tick & 1]; + res =3D recv_register_info(this_ri); + + switch (res) { + case RES_OK: + switch (header.risu_op) { + case OP_COMPARE: + case OP_TESTEND: + case OP_SIGILL: + printf("%s: (pc %#lx)\n", op_name(header.risu_op), + (unsigned long)header.pc); + + if (isfull || tick =3D=3D 0) { + reginfo_dump(this_ri, stdout); + } else { + struct reginfo *prev_ri =3D &ri[(tick - 1) & 1]; + + if (reginfo_is_eq(prev_ri, this_ri)) { + /* + * ??? There should never be no change -- at minim= um + * PC should have advanced. But for completeness.= .. + */ + printf("change detail: none\n"); + } else { + printf("change detail (prev : next):\n"); + reginfo_dump_mismatch(prev_ri, this_ri, stdout); + } + } + putchar('\n'); + if (header.risu_op =3D=3D OP_TESTEND) { + return EXIT_SUCCESS; + } + tick++; + break; + + case OP_COMPAREMEM: + /* TODO: Dump 8k of data? */ + /* fall through */ + default: + printf("%s\n", op_name(header.risu_op)); + break; + } + break; + + case RES_BAD_IO: + fprintf(stderr, "I/O error\n"); + return EXIT_FAILURE; + case RES_BAD_MAGIC: + fprintf(stderr, "Unexpected magic number: %#08x\n", header.mag= ic); + return EXIT_FAILURE; + case RES_BAD_SIZE: + fprintf(stderr, "Unexpected payload size: %u\n", header.size); + return EXIT_FAILURE; + case RES_BAD_OP: + fprintf(stderr, "Unexpected opcode: %d\n", header.risu_op); + return EXIT_FAILURE; + default: + fprintf(stderr, "Unexpected recv result %d\n", res); + return EXIT_FAILURE; + } + } +} + +enum { + DO_APPRENTICE, + DO_MASTER, + DO_FULLDUMP, + DO_DIFFDUMP, +}; + +static int operation =3D DO_APPRENTICE; =20 static void usage(void) { fprintf(stderr, - "Usage: risu [--master] [--host ] [--port ] " - "\n\n"); - fprintf(stderr, - "Run through the pattern file verifying each instruction\n"); - fprintf(stderr, "between master and apprentice risu processes.\n\n"); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " --master Be the master (server)\n"); - fprintf(stderr, " -t, --trace=3DFILE Record/playback " TRACE_TYPE " = trace file\n"); - fprintf(stderr, - " -h, --host=3DHOST Specify master host machine (apprentice= only)" - "\n"); - fprintf(stderr, + "Usage: risu [--master|--fulldump|--diffdump]\n" + " [--host ] [--port ] \n" + "\n" + "Run through the pattern file verifying each instruction\n" + "between master and apprentice risu processes.\n" + "\n" + "Options:\n" + " --master Be the master (server)\n" + " --fulldump Dump each record\n" + " --diffdump Dump difference between each record\n" + " -t, --trace=3DFILE Record/playback " TRACE_TYPE " trace fi= le\n" + " -h, --host=3DHOST Specify master host machine\n" " -p, --port=3DPORT Specify the port to connect to/listen o= n " "(default 9191)\n"); if (arch_extra_help) { @@ -512,7 +590,9 @@ static struct option * setup_options(char **short_opts) { static struct option default_longopts[] =3D { {"help", no_argument, 0, '?'}, - {"master", no_argument, &ismaster, 1}, + {"master", no_argument, &operation, DO_MASTER}, + {"fulldump", no_argument, &operation, DO_FULLDUMP}, + {"diffdump", no_argument, &operation, DO_DIFFDUMP}, {"host", required_argument, 0, 'h'}, {"port", required_argument, 0, 'p'}, {"trace", required_argument, 0, 't'}, @@ -520,7 +600,7 @@ static struct option * setup_options(char **short_opts) }; struct option *lopts =3D &default_longopts[0]; =20 - *short_opts =3D "h:p:t:"; + *short_opts =3D "d:h:p:t:"; =20 if (arch_long_opts) { const size_t osize =3D sizeof(struct option); @@ -551,6 +631,7 @@ int main(int argc, char **argv) char *trace_fn =3D NULL; struct option *longopts; char *shortopts; + bool ismaster; =20 longopts =3D setup_options(&shortopts); =20 @@ -586,6 +667,8 @@ int main(int argc, char **argv) } } =20 + ismaster =3D operation =3D=3D DO_MASTER; + if (trace) { if (strcmp(trace_fn, "-") =3D=3D 0) { comm_fd =3D ismaster ? STDOUT_FILENO : STDIN_FILENO; @@ -609,6 +692,10 @@ int main(int argc, char **argv) } } =20 + if (operation =3D=3D DO_FULLDUMP || operation =3D=3D DO_DIFFDUMP) { + return dump_trace(operation =3D=3D DO_FULLDUMP); + } + imgfile =3D argv[optind]; if (!imgfile) { fprintf(stderr, "Error: must specify image file name\n\n"); --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115580; cv=none; d=zohomail.com; s=zohoarc; b=UGcnuZfVZrNTMajB8AP5GMCwpD50b+0PRhNAlN5FhSXLTe5FHLdJGQ4ME2vyou/8i5bWwL3YQtQJ5TlsGef9fUDhiObsPwqD8EdKo/dENBW8NsfxjSOS79B4NRFKHVPSrH+0vGAuH238h3M6p1UZ1dJr98dlmt+Qayd35+EuDcM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115580; 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=d+UUwp78+6taEfLoHDVuHhWwS3335HTdwAKjJ5tb8QA=; b=l2zSW9yn/6eQAGIs5Lmk5xst+h6ZLax3EBc1xw7/G+EF7XGBjAOivXRJng6QGuntMtLknujqlGzTq7h1Uf7Lt8c86thPktM309QFsG4eDzZAzHTT9hrebj9HUOfVe8iR+tHInPfmuOGDPMUVPWGaK+DeRK4stUTN2higLfhWmGY= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1590115580687678.613091327763; Thu, 21 May 2020 19:46:20 -0700 (PDT) Received: from localhost ([::1]:40458 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxhT-0004D4-AM for importer@patchew.org; Thu, 21 May 2020 22:46:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48316) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWl-0003I1-07 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:15 -0400 Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]:55379) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWj-00059p-TP for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:14 -0400 Received: by mail-pj1-x1042.google.com with SMTP id k7so4289825pjs.5 for ; Thu, 21 May 2020 19:35:13 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d+UUwp78+6taEfLoHDVuHhWwS3335HTdwAKjJ5tb8QA=; b=r0XxkTEbcMCW0ZnPa0sMlqDv9tHIfFEg8RqPdRx1jDj5ttWO7sBThKtDd9vKrt2Whv isJ0v/9eZlZddUq4p5VIbz1APqMGJFsuZWepg29Iyxgdn/JB5hOoNhWAndrn0T2dHdky T66ifuDKiSKFXTGyEVk8ck1mTqOcbluWLJ7eN2PceTC31OxEHECLexmQePRHyXQlgFmh A4zze19ove2EDi5eFs8bwnuSr8rlkTo+3V1y1D4gPvBFW6rwIzu84McYiutmh+3sfGNX 7hRCN2iIaui+Ljzkh4C56B2EH0JPRxiJswCfzl8UCg+GyQvxMJHRld6IOMZ5DCpiIG4F yYEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=d+UUwp78+6taEfLoHDVuHhWwS3335HTdwAKjJ5tb8QA=; b=gSHPa+7VjzfLCeX7Jy+1utzkpGm6opHdXoZBQksdSGBTPD9F4wtp7hf+DT9qFCFwUK zsXGGEgJnJ7mO4YCxRSed7p2gfx5j6pegE3I99pfmbE1eu3Vp72i0DM7ocP+oZ6BSv52 LkTzXr73OpS23rGo8eB3LZEYQUI/LdhF4birALFVEEgf3AjmzNP/DoWTFNOMOwvWHrXf YCqeYL6r9h+CESGg4GZffih8UjdFKaMBjlO6wCROCJtzp9wii3P/vhuYcKhXQ4Yxfe85 jL69iQHWWC+OJQUMHk7hnxAzCDUnPcNhqyERxDUglK4Ye4whsXH4719pMGqRBH7Cvpz8 OJpg== X-Gm-Message-State: AOAM531DP2GR59WR1iOiW0lBThibijXaLv4IyNYPnzYzW0CyYr2DqFFU yhBcbpA205zfFV0VyIM2AnNKaMBKYUQ= X-Google-Smtp-Source: ABdhPJwvEoRjo7jc0b2csa2g68YVtYLlBldTEkS6j3kA74vOzU2StDFHqwaT/U9avF8TaYYUol130Q== X-Received: by 2002:a17:902:8303:: with SMTP id bd3mr12775649plb.217.1590114912196; Thu, 21 May 2020 19:35:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 24/25] Remove return value from reginfo_dump Date: Thu, 21 May 2020 19:34:39 -0700 Message-Id: <20200522023440.26261-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1042; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1042.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" No uses actually checked the error indication. Even if we wanted to check ferror on the stream, we should do that generically rather than per arch. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu.h | 4 ++-- risu_reginfo_aarch64.c | 8 +++----- risu_reginfo_arm.c | 6 ++---- risu_reginfo_i386.c | 6 ++---- risu_reginfo_m68k.c | 6 ++---- risu_reginfo_ppc64.c | 6 ++---- 6 files changed, 13 insertions(+), 23 deletions(-) diff --git a/risu.h b/risu.h index 99f0d8e..6eceb9f 100644 --- a/risu.h +++ b/risu.h @@ -120,8 +120,8 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc); /* return 1 if structs are equal, 0 otherwise. */ int reginfo_is_eq(struct reginfo *r1, struct reginfo *r2); =20 -/* print reginfo state to a stream, returns 1 on success, 0 on failure */ -int reginfo_dump(struct reginfo *ri, FILE * f); +/* print reginfo state to a stream */ +void reginfo_dump(struct reginfo *ri, FILE *f); =20 /* reginfo_dump_mismatch: print mismatch details to a stream */ void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f); diff --git a/risu_reginfo_aarch64.c b/risu_reginfo_aarch64.c index b443745..64e0e8b 100644 --- a/risu_reginfo_aarch64.c +++ b/risu_reginfo_aarch64.c @@ -258,8 +258,8 @@ static void sve_dump_zreg_diff(FILE *f, int vq, const u= int64_t *za, } #endif =20 -/* reginfo_dump: print state to a stream, returns nonzero on success */ -int reginfo_dump(struct reginfo *ri, FILE * f) +/* reginfo_dump: print state to a stream */ +void reginfo_dump(struct reginfo *ri, FILE * f) { int i; fprintf(f, " faulting insn %08x\n", ri->faulting_insn); @@ -303,7 +303,7 @@ int reginfo_dump(struct reginfo *ri, FILE * f) sve_dump_preg(f, vq, p); fprintf(f, "\n"); } - return !ferror(f); + return; } #endif =20 @@ -312,8 +312,6 @@ int reginfo_dump(struct reginfo *ri, FILE * f) (uint64_t) (ri->simd.vregs[i] >> 64), (uint64_t) (ri->simd.vregs[i])); } - - return !ferror(f); } =20 void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE * f) diff --git a/risu_reginfo_arm.c b/risu_reginfo_arm.c index ba1035e..09813c4 100644 --- a/risu_reginfo_arm.c +++ b/risu_reginfo_arm.c @@ -161,8 +161,8 @@ int reginfo_is_eq(struct reginfo *r1, struct reginfo *r= 2) return memcmp(r1, r2, sizeof(*r1)) =3D=3D 0; /* ok since we memset = 0 */ } =20 -/* reginfo_dump: print the state to a stream, returns nonzero on success */ -int reginfo_dump(struct reginfo *ri, FILE *f) +/* reginfo_dump: print the state to a stream */ +void reginfo_dump(struct reginfo *ri, FILE *f) { int i; if (ri->faulting_insn_size =3D=3D 2) { @@ -179,8 +179,6 @@ int reginfo_dump(struct reginfo *ri, FILE *f) i, (unsigned long long) ri->fpregs[i]); } fprintf(f, " fpscr: %08x\n", ri->fpscr); - - return !ferror(f); } =20 void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c index 57e4c00..37506fa 100644 --- a/risu_reginfo_i386.c +++ b/risu_reginfo_i386.c @@ -310,8 +310,8 @@ static char get_vecletter(uint64_t features) } } =20 -/* reginfo_dump: print state to a stream, returns nonzero on success */ -int reginfo_dump(struct reginfo *ri, FILE *f) +/* reginfo_dump: print state to a stream */ +void reginfo_dump(struct reginfo *ri, FILE *f) { uint64_t features; int i, j, n, w; @@ -345,8 +345,6 @@ int reginfo_dump(struct reginfo *ri, FILE *f) fprintf(f, " k%-5d: %016" PRIx64 "\n", i, ri->kregs[i]); } } - - return !ferror(f); } =20 void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) diff --git a/risu_reginfo_m68k.c b/risu_reginfo_m68k.c index 29edce9..38d7dd3 100644 --- a/risu_reginfo_m68k.c +++ b/risu_reginfo_m68k.c @@ -92,8 +92,8 @@ int reginfo_is_eq(struct reginfo *m, struct reginfo *a) return 1; } =20 -/* reginfo_dump: print state to a stream, returns nonzero on success */ -int reginfo_dump(struct reginfo *ri, FILE *f) +/* reginfo_dump: print state to a stream */ +void reginfo_dump(struct reginfo *ri, FILE *f) { int i; fprintf(f, " pc \e[1;101;37m0x%08x\e[0m\n", ri->pc); @@ -114,8 +114,6 @@ int reginfo_dump(struct reginfo *ri, FILE *f) } =20 fprintf(f, "\n"); - - return !ferror(f); } =20 void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) diff --git a/risu_reginfo_ppc64.c b/risu_reginfo_ppc64.c index e96dc48..134a152 100644 --- a/risu_reginfo_ppc64.c +++ b/risu_reginfo_ppc64.c @@ -112,8 +112,8 @@ int reginfo_is_eq(struct reginfo *m, struct reginfo *a) return 1; } =20 -/* reginfo_dump: print state to a stream, returns nonzero on success */ -int reginfo_dump(struct reginfo *ri, FILE * f) +/* reginfo_dump: print state to a stream */ +void reginfo_dump(struct reginfo *ri, FILE * f) { int i; =20 @@ -152,8 +152,6 @@ int reginfo_dump(struct reginfo *ri, FILE * f) ri->vrregs.vrregs[i][0], ri->vrregs.vrregs[i][1], ri->vrregs.vrregs[i][2], ri->vrregs.vrregs[i][3]); } - - return !ferror(f); } =20 void reginfo_dump_mismatch(struct reginfo *m, struct reginfo *a, FILE *f) --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 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=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1590115676; cv=none; d=zohomail.com; s=zohoarc; b=RsdFAXIpixOs38KGswI9Fi8QPQoFPTScrYTnxtsqZbQO0OK54OwvGRVFelG8oNqGkjMGmoebkgkBsLV4Tnxr52aZPcyBzha8s8NoYxiH7v0aehVvbUD6Phbi6G7xowhmOpTV0JthiPL8sGfuks551oQcWX1qbV1ytcgVFklVUB8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590115676; 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=Jg8schz/DdjNAa/Xi5ymKEIjRDrXBwYH1uhacJEJtGY=; b=POzOuUJeWa72FbbbmbsSNETT07nGnzkkXw2r10Tc3sfbN7wPvP8sE2yeTrJjNjwYudFT0BZv7ymI0N6DaukCgmRTtB5v294sv539qTDzoTnbAIDh7+bPn5SCIe4C/VY3ARbl8EP0mQSWp2+XH3tXpkQuEDIyStmP2JmQunR8vxQ= 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=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159011567677790.87033394759158; Thu, 21 May 2020 19:47:56 -0700 (PDT) Received: from localhost ([::1]:44604 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbxj1-0005vJ-FD for importer@patchew.org; Thu, 21 May 2020 22:47:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48322) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbxWm-0003Np-E6 for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:16 -0400 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:45081) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbxWl-0005Ai-7H for qemu-devel@nongnu.org; Thu, 21 May 2020 22:35:16 -0400 Received: by mail-pl1-x644.google.com with SMTP id u22so3800403plq.12 for ; Thu, 21 May 2020 19:35:14 -0700 (PDT) Received: from localhost.localdomain (174-21-143-238.tukw.qwest.net. [174.21.143.238]) by smtp.gmail.com with ESMTPSA id gt10sm5443755pjb.30.2020.05.21.19.35.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2020 19:35:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Jg8schz/DdjNAa/Xi5ymKEIjRDrXBwYH1uhacJEJtGY=; b=KrgStOtuLFuUuccfNSJf3bvzggv4IzMOsiMnsu1lOSHJPyO82fXmbck+BOECxTUXav OvqzloYXGQKdj4/UVCQK4OPA5KB+PyAAJuhK3mHHOiY4ugvuiBiuDp1H7h/qI1BwNLqU lRoXkLY+HxcR0TFiYI6+CR1acSdFIYyU+lJfcX2sVkhgkD7M8pLc5OnxwA3bAF4fsjRl m0rKFLeDAAiNQyy+s8yTxcQO1RiFc3T+JgLuBrTHGQKCXVekUvIxHQHqODp/j60XBun9 nrcfeq8r737LKYihPA035i7Cg/lsYIy2kSDTOItWcr5j/Bl2sVQu2jc6oFxaLeqWanGQ A9Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Jg8schz/DdjNAa/Xi5ymKEIjRDrXBwYH1uhacJEJtGY=; b=koZc9wo6VcxE7juVAVngwLy/9RgBD3eIxSVrmpe72d0haAopjsunADoUgLDrl4/ivS yT6Lqcey9V/kChNZ1M+0R3ivxvTrK0ftnrro2RFtvHeiRlyiGrxgFS6Yc3ONwSzNf/91 xb7ZmklxOrtmeOpTMHQLSVkPbkSym7gAaTVcov0fLGzhkwNWP2pT916xxCKtC4KnRh6J 8nIW8v8VdQSRUpidf0PPX+g4+PDkqmhZjmbuhF8cs+2D/LUdXjy99URNwOTIkZx1fzrG VRWP+9Sr6HZs7d/4UoNrDPj524POJ0n75WMjpaQ5KyYewco410BHkJbuFoyU+nEtbEtx h9pg== X-Gm-Message-State: AOAM532kHxqfo3hdR4m/XXBXKE05x4OifI+xA1NyleMvaA5AmxVHQ1el 9tuslO9/jcro9uvXCbCDvwbkBLGj+QE= X-Google-Smtp-Source: ABdhPJwH0cQqedW9opHCVGuCrAsxSnmCWPbeE3NYLd7Gt3Eiv562/I/2uepgbdH1XK2gvIOiDYN8Ug== X-Received: by 2002:a17:90a:8a08:: with SMTP id w8mr1825913pjn.53.1590114913512; Thu, 21 May 2020 19:35:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 25/25] ppc64: Clean up reginfo handling Date: Thu, 21 May 2020 19:34:40 -0700 Message-Id: <20200522023440.26261-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::644; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x644.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) Content-Type: text/plain; charset="utf-8" Several of the gp_reg[] elements are not relevant -- e.g. orig r3, which is related to system calls. Omit those from the original reginfo_init(), so that any differences are automatically hidden. Do not only compare bit 4 of CCR -- this register is 32 bits wide with 8 cr subfields. We should compare all of them. Tidy reginfo_dump() output. Especially, do not dump the non- relevant fields. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e --- risu_reginfo_ppc64.c | 114 +++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 70 deletions(-) diff --git a/risu_reginfo_ppc64.c b/risu_reginfo_ppc64.c index 134a152..62d7ff2 100644 --- a/risu_reginfo_ppc64.c +++ b/risu_reginfo_ppc64.c @@ -21,19 +21,30 @@ #include "risu.h" #include "risu_reginfo_ppc64.h" =20 -#define XER 37 -#define CCR 38 +/* Names for indexes within gregset_t, ignoring those irrelevant here */ +enum { + NIP =3D 32, + MSR =3D 33, + CTR =3D 35, + LNK =3D 36, + XER =3D 37, + CCR =3D 38, +}; =20 const struct option * const arch_long_opts; const char * const arch_extra_help; =20 static const char * const greg_names[NGREG] =3D { - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", - "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", - [XER] =3D "xer", - [CCR] =3D "ccr", + "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", + "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", + "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", + [NIP] =3D "nip", + [MSR] =3D "msr", + [CTR] =3D "ctr", + [LNK] =3D "lnk", + [XER] =3D "xer", + [CCR] =3D "ccr", }; =20 void process_arch_opt(int opt, const char *arg) @@ -61,8 +72,13 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) ri->nip =3D uc->uc_mcontext.regs->nip - image_start_address; =20 for (i =3D 0; i < NGREG; i++) { - ri->gregs[i] =3D uc->uc_mcontext.gp_regs[i]; + /* Do not copy gp_reg entries not relevant to the context. */ + if (greg_names[i]) { + ri->gregs[i] =3D uc->uc_mcontext.gp_regs[i]; + } } + ri->gregs[1] =3D 0xdeadbeef; /* sp */ + ri->gregs[13] =3D 0xdeadbeef; /* gp */ =20 memcpy(ri->fpregs, uc->uc_mcontext.fp_regs, 32 * sizeof(double)); ri->fpscr =3D uc->uc_mcontext.fp_regs[32]; @@ -76,79 +92,37 @@ void reginfo_init(struct reginfo *ri, ucontext_t *uc) /* reginfo_is_eq: compare the reginfo structs, returns nonzero if equal */ int reginfo_is_eq(struct reginfo *m, struct reginfo *a) { - int i; - for (i =3D 0; i < 32; i++) { - if (i =3D=3D 1 || i =3D=3D 13) { - continue; - } - - if (m->gregs[i] !=3D a->gregs[i]) { - return 0; - } - } - - if (m->gregs[XER] !=3D a->gregs[XER]) { - return 0; - } - - if ((m->gregs[CCR] & 0x10) !=3D (a->gregs[CCR] & 0x10)) { - return 0; - } - - for (i =3D 0; i < 32; i++) { - if (m->fpregs[i] !=3D a->fpregs[i]) { - return 0; - } - } - - for (i =3D 0; i < 32; i++) { - if (m->vrregs.vrregs[i][0] !=3D a->vrregs.vrregs[i][0] || - m->vrregs.vrregs[i][1] !=3D a->vrregs.vrregs[i][1] || - m->vrregs.vrregs[i][2] !=3D a->vrregs.vrregs[i][2] || - m->vrregs.vrregs[i][3] !=3D a->vrregs.vrregs[i][3]) { - return 0; - } - } - return 1; + return memcmp(m, a, sizeof(*m)); } =20 /* reginfo_dump: print state to a stream */ void reginfo_dump(struct reginfo *ri, FILE * f) { - int i; + const char *sep; + int i, j; =20 - fprintf(f, " faulting insn 0x%x\n", ri->faulting_insn); - fprintf(f, " prev insn 0x%x\n", ri->prev_insn); - fprintf(f, " prev addr 0x%" PRIx64 "\n\n", ri->nip); + fprintf(f, "%6s: %08x\n", "insn", ri->faulting_insn); + fprintf(f, "%6s: %016lx\n", "pc", ri->nip); =20 - for (i =3D 0; i < 16; i++) { - fprintf(f, "\tr%2d: %16lx\tr%2d: %16lx\n", i, ri->gregs[i], - i + 16, ri->gregs[i + 16]); + sep =3D ""; + for (i =3D j =3D 0; i < NGREG; i++) { + if (greg_names[i] !=3D NULL) { + fprintf(f, "%s%6s: %016lx", sep, greg_names[i], ri->gregs[i]); + sep =3D (++j & 1 ? " " : "\n"); + } } =20 - fprintf(f, "\n"); - fprintf(f, "\tnip : %16lx\n", ri->gregs[32]); - fprintf(f, "\tmsr : %16lx\n", ri->gregs[33]); - fprintf(f, "\torig r3: %16lx\n", ri->gregs[34]); - fprintf(f, "\tctr : %16lx\n", ri->gregs[35]); - fprintf(f, "\tlnk : %16lx\n", ri->gregs[36]); - fprintf(f, "\txer : %16lx\n", ri->gregs[37]); - fprintf(f, "\tccr : %16lx\n", ri->gregs[38]); - fprintf(f, "\tmq : %16lx\n", ri->gregs[39]); - fprintf(f, "\ttrap : %16lx\n", ri->gregs[40]); - fprintf(f, "\tdar : %16lx\n", ri->gregs[41]); - fprintf(f, "\tdsisr : %16lx\n", ri->gregs[42]); - fprintf(f, "\tresult : %16lx\n", ri->gregs[43]); - fprintf(f, "\tdscr : %16lx\n\n", ri->gregs[44]); - - for (i =3D 0; i < 16; i++) { - fprintf(f, "\tf%2d: %016lx\tf%2d: %016lx\n", i, ri->fpregs[i], - i + 16, ri->fpregs[i + 16]); + sep =3D "\n"; + for (i =3D j =3D 0; i < 32; i++) { + fprintf(f, "%s%*s%d: %016lx", + sep, 6 - (i < 10 ? 1 : 2), "f", i, ri->fpregs[i]); + sep =3D (++j & 1 ? " " : "\n"); } - fprintf(f, "\tfpscr: %016lx\n\n", ri->fpscr); + fprintf(f, "\n%6s: %016lx\n", "fpscr", ri->fpscr); =20 for (i =3D 0; i < 32; i++) { - fprintf(f, "vr%02d: %8x, %8x, %8x, %8x\n", i, + fprintf(f, "%*s%d: %08x %08x %08x %08x\n", + 6 - (i < 10 ? 1 : 2), "vr", i, ri->vrregs.vrregs[i][0], ri->vrregs.vrregs[i][1], ri->vrregs.vrregs[i][2], ri->vrregs.vrregs[i][3]); } --=20 2.20.1 From nobody Wed Apr 24 14:17:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1592924857; cv=none; d=zohomail.com; s=zohoarc; b=oDILDZ/8AgvFTc9W2TMozwu1ud4Ao9owcyiE5F5Li+akm8QxeTOtNXRqG4YQCjzccZuvP7bcuWZD3n/ju2z8m6+eYXKABuWKg3hQ0W74mgAtmD8ze4WmAdXLzC1eaZhtUE/jJNIJEyQ2YZ2NM1IVWytAeJajxIbye4gv0kpcQ3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592924857; h=Content-Type: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=QdipPuDFtPEbcTTK9bILm5/cYHhEDIazGm1KaZL1a6M=; b=afrw8RbuZoPoHSf/ID+BmA8OUGfpqTeIHLxJzOj3dNwdLbmH70pXhOvTWV10bxUc+wROghXCSIm/zsEeTqbU0MQSieSwJwGdV41+m9g636vbVHiOBBJmLx1Yvay3cLPzk2ZPgnmluqNseEECgS8AbYtRISqtFanM7u44bYoao1I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592924857568950.4045255652102; Tue, 23 Jun 2020 08:07:37 -0700 (PDT) Received: from localhost ([::1]:45362 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jnkWO-0004qI-LH for importer@patchew.org; Tue, 23 Jun 2020 11:07:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59244) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnkAT-0006Ol-Lq for qemu-devel@nongnu.org; Tue, 23 Jun 2020 10:44:57 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:55346) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jnkAR-0003TH-Cg for qemu-devel@nongnu.org; Tue, 23 Jun 2020 10:44:57 -0400 Received: by mail-wm1-x344.google.com with SMTP id g75so3206076wme.5 for ; Tue, 23 Jun 2020 07:44:54 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id l17sm4130205wmi.16.2020.06.23.07.44.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jun 2020 07:44:51 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 95CE91FF7E; Tue, 23 Jun 2020 15:44:50 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QdipPuDFtPEbcTTK9bILm5/cYHhEDIazGm1KaZL1a6M=; b=nml/dKZy7+JWhIOU7Jr4T7lYiz8nvFVcJTfBhbqNruV8vZoAQEDD3b3asAdJG4YE8N 1ajKdcizhm3D0J2egCwRJH5ZvwLVCwlMdUFbYhip7BHWoNoN0hfd+h2OXSr5xAMr640w iur+GdilZwv8quTN0/yLhci3JNEt7Ct24hnFV1R/P0ILKdHOfMRTc+MjcihAuUU+bSUm PvqtwuGFvFQMujrd67we0ds1dcOauqk8Ye8dmVqK320npGmLrMRiAdlyTIMNCnIoAwVg +79uYNdcojL8jyBqStPLF9bLtROpb7wfPS1L9BLsoM2cxztqoro17M91FRJYusAow9fP +ObQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QdipPuDFtPEbcTTK9bILm5/cYHhEDIazGm1KaZL1a6M=; b=C8zso7BjIOVOF1pZbqxqHt1ndUrYkgySpiDZHsWd43DUzD5zwtifJaSe+P6ylp9vjp 2hqlcN88usLPDEtYYO+y9tVaaawb7TcJ5NqE2/L4WMupo3foyBcIbOZbma4ZAe5+jcIa FznlyNUFRFqXTWTcujQT6AqMN4G/LzYXnORP7V9tVLpFZDiB13eTP2BXY2BdDpkWuKzk A/z0QU0xqTVQyYv0TQ/Ybbe3ApDWwxr8NfBST7Dj4VgLzGEl+vNURJkJwzOI36QP6vJ8 qpRyNIy++gLW0Q/1UkRyK6noNt1RpfK1Sri6XUdCzIFFBepDu4ajqwCoKUARtwHF+j4Z WsBA== X-Gm-Message-State: AOAM533mlt415FDgyH24xzSbpQ3GfJAzys/hzHMagD7xhPxzAyNRrDqz HNj7YXV0ew+omnWgAajOHn93L5WuJ58= X-Google-Smtp-Source: ABdhPJyNH1NZSlldd18glITD9vsvGrPmYgzjMu4b5+u2Ic6zPVPkq4Q6WiDKUkg+90/HpCMKS6JvQQ== X-Received: by 2002:a1c:2402:: with SMTP id k2mr20546657wmk.138.1592923493168; Tue, 23 Jun 2020 07:44:53 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Subject: [PATCH] risu: don't do a full register compare for OP_SIGILL Date: Tue, 23 Jun 2020 15:44:46 +0100 Message-Id: <20200623144446.4243-1-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522023440.26261-1-richard.henderson@linaro.org> References: <20200522023440.26261-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::344; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x344.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , richard.henderson@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) OP_SIGILL means we have an unexpected invalid operation. If this is a load or store the register state may be un-rectified pointing at the memblock so would be invalid. In this case just compare the PC and make sure the other end also faulted at the same place. Signed-off-by: Alex Benn=C3=A9e --- risu.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/risu.c b/risu.c index 8d907d9..6d6dcf9 100644 --- a/risu.c +++ b/risu.c @@ -124,7 +124,6 @@ static RisuResult send_register_info(void *uc) switch (op) { case OP_TESTEND: case OP_COMPARE: - case OP_SIGILL: header.size =3D reginfo_size(&ri[MASTER]); extra =3D &ri[MASTER]; break; @@ -132,6 +131,7 @@ static RisuResult send_register_info(void *uc) header.size =3D MEMBLOCKLEN; extra =3D memblock; break; + case OP_SIGILL: case OP_SETMEMBLOCK: case OP_GETMEMBLOCK: header.size =3D 0; @@ -203,7 +203,6 @@ static RisuResult recv_register_info(struct reginfo *ri) switch (header.risu_op) { case OP_COMPARE: case OP_TESTEND: - case OP_SIGILL: /* If we can't store the data, report invalid size. */ if (header.size > sizeof(*ri)) { return RES_BAD_SIZE; @@ -223,6 +222,7 @@ static RisuResult recv_register_info(struct reginfo *ri) respond(RES_OK); return read_buffer(other_memblock, MEMBLOCKLEN); =20 + case OP_SIGILL: case OP_SETMEMBLOCK: case OP_GETMEMBLOCK: return header.size =3D=3D 0 ? RES_OK : RES_BAD_SIZE; @@ -250,7 +250,6 @@ static RisuResult recv_and_compare_register_info(void *= uc) switch (op) { case OP_COMPARE: case OP_TESTEND: - case OP_SIGILL: /* * If we have nothing to compare against, report an op mismatch. * Otherwise allow the compare to continue, and assume that @@ -270,7 +269,14 @@ static RisuResult recv_and_compare_register_info(void = *uc) res =3D RES_END; } break; - + case OP_SIGILL: + /* We can only check the op and PC */ + if (header.risu_op !=3D OP_SIGILL) { + res =3D RES_MISMATCH_OP; + } else if (header.pc !=3D get_pc(&ri[APPRENTICE])) { + res =3D RES_MISMATCH_REG; + } + break; case OP_SETMEMBLOCK: if (op !=3D header.risu_op) { res =3D RES_MISMATCH_OP; --=20 2.20.1