From nobody Mon May 20 20:30:42 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=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1666854017; cv=none; d=zohomail.com; s=zohoarc; b=GgtlTC4YDBPhQLd1A7yNyVJCLT7FxpfyA6qX3sB0ijvS7AJNeEJMHzUz2l5RutwT9uHl9KfRq4FQMQE8ngQ8s8FHLUTbORHuhRANO+vq1MYiOvuv+LekzmWfzhOmave81nzMcfrjfteYIeev8+vm5QcZ/wAE0xydLLTimwGJQ6Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666854017; h=Content-Type:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=KUdxAMs0iShSULYp4kBa92WxBsV7xy86bJZNGLHh0RM=; b=StTR6XeXw3U+efTJmq7V7mJ3l7uNKWwNQ5ussiVDDfbVofjHNrpGWCqundWDOWccHViWY7E/e+oGh2KflKfVXTeaRtHbSwyK16WD7OCfb+1ukByOFGa/AzHR/Vy440IANzqfvq36tUHwpSnh0vJnrDjey4wSSKUJiWmmw7JBxlY= 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666854017761612.0742951820511; Thu, 27 Oct 2022 00:00:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1onwr1-0006QQ-Jo; Thu, 27 Oct 2022 02:59:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1onwqj-0006BF-0i for qemu-devel@nongnu.org; Thu, 27 Oct 2022 02:58:46 -0400 Received: from mout.gmx.net ([212.227.15.19]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1onwqg-0006uW-GF for qemu-devel@nongnu.org; Thu, 27 Oct 2022 02:58:44 -0400 Received: from p100 ([92.116.164.228]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MHXBj-1osbgU1SS1-00DU0v; Thu, 27 Oct 2022 08:58:39 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1666853919; bh=T25pljQnIusPjzDPi4ssIlPiCYIn3r7qd1HK4PXbz60=; h=X-UI-Sender-Class:Date:From:To:Subject; b=jo4ACq5mAEiMqg8RKZJCFGATCiayceGMayJrvWcYSWS9u/aLQ9UXrhqjNkiYltAIy whIPERo6bRCOkIQyTRF3DK5jEehqeZ8pP7+BnUQQpyxUvdzpiCZZZO8J4BxGL0TVMr dq4vSwTBGsz23EDCbEU6HEumCDGpbzO3kXQQVI6NukS/jV61G+0BlVU16zBy6ZaH54 uOhb1XJox4WSaZZ75Kutn62GkmisbWPLWl0jqJjVZDEDEY94Aqg/eXu1EOxLIEQpiw lwqz4GFe38JJiPN6FtIca/VF1vv4AL/XRus3lClhbI2O4lnpQgxHYCjODRW3LDjMBy QzmNJC8VlG5lA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Date: Thu, 27 Oct 2022 08:58:37 +0200 From: Helge Deller To: Laurent Vivier , Richard Henderson , qemu-devel@nongnu.org Subject: [PATCH] linux-user/hppa: Detect glibc ABORT_INSTRUCTION and EXCP_BREAK handler Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Provags-ID: V03:K1:5W1IATQXUnViYZogmQCIhgoiAOsAQ4aShw+IQjdqb75oCNOCkTd l1KmhrZUjwrhH8EXJjfI1EFvWF6s4QcpUihMEPoRNNuauX4Lzq5CUKW3EljWWJt9yrQCmO1 SFun+qZS2y5D+hOOJg5Yp2318X39oT3Z6XhgxCYwORYR+hL+ULtekcEVxy2yEE42Q9wsFXR w0D1APTOvCdupE5oVDvow== UI-OutboundReport: notjunk:1;M01:P0:YKRPiQSPN88=;uUjlE02XsOe2NEboBCmRKCQf5xS mBNkK3Vh7rfziXxRQH8EbZd5WdK5KBKyjPj7fEZHSF1ht4lRSKJmBW3N/JPUoMAX2Zdt5C7W9 huriv3XEcMLN5Ufb+kRjkiYWyPoN7rBcgC7OfJff4Ag0Th2Z0Iwo6EPLhq+Hm8yDwQcx910P2 rFOcn38Pw0VRCfkozQuuXyEhckF8fmJ1RWY0zeKn1OWWQIm7rtV8I6mcFRswKdDtfdotvD2Ls lLWXyLItCCQPU5LHgWavinXBCYGnpXdFRkTb8+lMLYXk6CSX8gcPUjHXYiEbWgNGk3UFFEEpf feHc+ukZFYkpH6QpODYQcN7bQukIaG6+FU0DHJlhG0MF/qNpDZNLG8z322mC2JRpuU1xWhmYV gBKpR4fvDR5Ptl4YLkZNfrlqqj0gD9zti8FAK4D3TqXK5CVHMzK3wwx9OK77NrNWMfBh/lXZy JHUFRDaSC9Y1ImGPF4kRBTtx5AcRn6XVikkf63EntNMls5K5Zhkiiz5r8ZQ+/eBaBuWQ0uUdX 8bZGvvnggOloX7KE8Zvfb7buhnNYzn+TIOZR5sR94LMblo4hO0m+ZyiC2cxZKdcYn4gPwjhPM Cx0fxwFwNNQNf3QXeNuJRG1XH/ijb100vo2YpKbpkJtUSQMnjORdb4S7ERBNsM1fF5jjP/uCa gYQbWV4vK0xKf9DeblV7e/lSox6lj6wy6a/KP9aEIKxRsg3qZpSqmIqaPg+y+fjL4irDLO4j4 N2mlp6hFndN/moC+7YiaVt5GV25j6LliNyzwaBuCML+i1EHKLHqYhtj3vXquTY1wkViur1NSP UWCTadzyKdyGmbnXHIolownUOy1Q4r8XhgbNUS4XQo832e9LdIgP+1sHtfUrgMR+KqPFwmGwJ acdVLn+O5rf2nlZcoUg99e98u0sMl6cHNXzXW1iXTTnv3BIKjso9Wew6g+1nEq0RU3wSF882e UBrALKxJH+DYb5R8m+X3Owh32ig= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.19; envelope-from=deller@gmx.de; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmx.de) X-ZM-MESSAGEID: 1666854018487100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The glibc on the hppa platform uses the "iitlbp %r0,(%sr0, %r0)" assembler instruction as ABORT_INSTRUCTION. If this (in userspace context) illegal assembler statement is found, dump the registers and report the failure to userspace the same way as the Linux kernel on physical hardware. For other illegal instructions report TARGET_ILL_ILLOPC instead of TARGET_ILL_ILLOPN as si_code. Additionally add the missing EXCP_BREAK exception handler which occurs when the "break x,y" assembler instruction is executed and report EXCP_ASSIST traps. Signed-off-by: Helge Deller diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 98c51e9b8b..a42c34e549 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -196,15 +196,20 @@ void cpu_loop(CPUHPPAState *env) force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, env->iaoq_= f); break; case EXCP_ILL: - EXCP_DUMP(env, "qemu: got CPU exception 0x%x - aborting\n", tr= apnr); - force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->iaoq_f); + EXCP_DUMP(env, "qemu: EXCP_ILL exception %#x\n", trapnr); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->iaoq_f); break; case EXCP_PRIV_OPR: - EXCP_DUMP(env, "qemu: got CPU exception 0x%x - aborting\n", tr= apnr); - force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->iaoq_f); + /* check for glibc ABORT_INSTRUCTION "iitlbp %r0,(%sr0, %r0)" = */ + EXCP_DUMP(env, "qemu: EXCP_PRIV_OPR exception %#x\n", trapnr); + if (env->cr[CR_IIR] =3D=3D 0x04000000) { + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->iaoq_f); + } else { + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->iaoq_f); + } break; case EXCP_PRIV_REG: - EXCP_DUMP(env, "qemu: got CPU exception 0x%x - aborting\n", tr= apnr); + EXCP_DUMP(env, "qemu: EXCP_PRIV_REG exception %#x\n", trapnr); force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVREG, env->iaoq_f); break; case EXCP_OVERFLOW: @@ -216,6 +221,10 @@ void cpu_loop(CPUHPPAState *env) case EXCP_ASSIST: force_sig_fault(TARGET_SIGFPE, 0, env->iaoq_f); break; + case EXCP_BREAK: + EXCP_DUMP(env, "qemu: EXCP_BREAK exception %#x\n", trapnr); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->iaoq_f= & ~3); + break; case EXCP_DEBUG: force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->iaoq_f= ); break;