From nobody Thu May 2 02:32:03 2024 Delivered-To: importer2@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+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1660636971; cv=none; d=zohomail.com; s=zohoarc; b=Va6j+iFECyC9CR70qhJDUUmg8EspTuUqjJcSGsNynA2ov8jzv4LJ9ZlPFExbhLKD0sVJzYARn/a2NYK9+cC0Tfzj7UA4OAmjdTX6a8Ot86TiH18YPKSQvzPpB7h6DAl17FOH5DgW39lbapaJWE5/IINjdeYmu/zyc3PQZroqvH8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660636971; 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=L4JUHfoG3ebnWWMb34dAHbusbIE7F+nu+rABcmx3uz4=; b=CHx6XSSNbETGJVsXD1pT2044I1IbyGyXPbZu76fEVJZZOL+phEC4Rv1VYTbt/0QZ/XkI69RcEKTfGkstRlJ97er2RuIGrthLqV4J4gCX0Az6/wdY9wVe01AcB7sGg2vkxtDYJOy21aj1iZAOmiGF6c11uA0AAOEciRkErbCxxtM= 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+importer2=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1660636971772836.1511034636951; Tue, 16 Aug 2022 01:02:51 -0700 (PDT) Received: from localhost ([::1]:49286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oNrXF-0000xD-J6 for importer2@patchew.org; Tue, 16 Aug 2022 04:02:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45220) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oNrSy-0006pF-FH for qemu-devel@nongnu.org; Tue, 16 Aug 2022 03:58:24 -0400 Received: from mout.gmx.net ([212.227.17.22]:38953) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oNrSw-00081Z-IX for qemu-devel@nongnu.org; Tue, 16 Aug 2022 03:58:24 -0400 Received: from p100 ([92.116.188.167]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MO9z7-1nzKSX1Knp-00Ob7H; Tue, 16 Aug 2022 09:58:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1660636696; bh=gYB4tfK4sDeQ493Ds37fCgT75bc/wAEDph8KifAoA3I=; h=X-UI-Sender-Class:Date:From:To:Subject; b=Hrut3FKNG6dBSPre2/pV+79Xx5qKF9+Oo8GTGND0G6nJ8pxwapyECCO0DT3yXWSLJ e6x8N4WMw3U/PYndPoFwBd+PB+jvQ8MrWHa4fvrgJ5acob6deumD8i8V0FYrPS0QWC xi9zVoGYz9/C57l8+GNJ8m/j0aXddp0XahT760vA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Date: Tue, 16 Aug 2022 09:58:14 +0200 From: Helge Deller To: Richard Henderson , Laurent Vivier , qemu-devel@nongnu.org Subject: [PATCH] target/hppa: Fix proberi instruction emulation for linux-user Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Provags-ID: V03:K1:7aeteNK2lZXJd8ab53LcmDqu1YUp/VrqpErl2kQK3NsJ0yv9lNm PZl2ukD2JU17GsUApi807zYfX0uQvL5Xlk+80asUoSvtq+bSyFxtUXm8aOXibPIo55gHiOZ urZb/GS552SigTjkkemZoYM+T9BamyTYdoAuYvuiQCxyyUPAAqw3RAYD6BH/ubO6b3XdlYT cqiWXdnUDGDmU2+53epPg== X-UI-Out-Filterresults: notjunk:1;V03:K0:thqbzlIIGOg=:dXgNfGHKQp0NsaYC+egkmx ZxM3jFE/uCByLSzPhpoAY6ShaMpfI7k8uNnd81ohK1eaysfgEBWG8bFV6dofJF2A9bSmSqdpT E1gnrE1O8Pryni9wrj/5Ga2BtksFG7LZKmrqJLzmaNN8+hXgvY6S+aXnaEHz8flYxtbHaTut7 /uxDsoYiGU7einmAI5Z+I25UOju/oYyrmWjhiZWJYsvi+5e8mnn/Z5ATpu42p622oYO6HM06J RYoeUgb9mjCBh04D5RdJT9ItQrkCMG6SiVbaivepc79qBAoLMpIitXbkJhg02Qeh1bgkhQITA xTS3YI8rtqF1jdk4tKAhXqOh5mRembTU7sp17wVJXaOI+rDtf2nbm5QB15P1WmS6ApTTox191 W/TPhJYPMjARYfM8R6NwFRKdTMdTJnk+q4uD+67S5D1Zl31AwhVB+WWF9/Sahow1HSXttfbE3 gfP5Ot92riiXO9c2L5x0spQxOwyEq19LehAjfWfWU+22GLpUxcgfM4lNLG2TqPeOcB18ugsl6 AMFR0sfUMSCHPtkI0lDoTUv9509NzcX1G5/xiBLjXnsSVNSwgL6Txui/1UdeD8GUIOTEQmHgh gu3SC4q2eWz4pQflPoJZ4N8gn4fU0fWbIDCKWU/KBtlVOITzvtFzyHWBgvieT8V2kjD0L1rAX +/KxQ9K4A3jaV3iVnqhqKQzMi2TlQzHe34UsqkFIKl7nIgeQp7VgcW36aqmyBSx4fvE6ipNim nT6+FxCm4J+NdN/DfBxjAycR0wsuKhYk1nU0oXRL3J0VwCXsp78zzCQH0TIEj2R5+qAZd5Rhe DATls9b+EYjlTerZmTTp2QSSoanr70aUAiYLp7IqXDJ3aSQt1atAe0eolq1G0kB3UxZPpbWmZ jcNWj9cVVXo3QqhAjvBujP1sJ8m6mhcmdr1sF/dm1qvwbt6l83BbSd8kZ1cYCCCpYhF2EemSi AuBrkdfAc7GArF+TpLnzYqGgmGS9WXYpLQcCqOdBwdfNkXAUMdmedg86OWaw0bfYRYMuEm8vf yyeq+ZhTUtb8cdKeAJpeIjOs9p8rmiGGl4f48nzQz+dyKAc8QmSKhK2ij2XP5tBtyIHMrwnG9 4FKOf6Orug0OEudDTX1isSL9z16ROHzdIZu2v6f7LNjB7E4zEYjGheOKQ== 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.22; envelope-from=deller@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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, T_SCC_BODY_TEXT_LINE=-0.01 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: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1660636974528100001 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The proberi assembler instruction checks the read/write access rights for the page of a given address and shall return a value of 1 if the test succeeds and a value of 0 on failure in the target register. But when run in linux-user mode, qemu currently simply returns the return code of page_check_range() which returns 0 on success and -1 on failure, which is the opposite of what proberi should return. Fix it by checking the return code of page_check_range() and return the expected return value. The easiest way to reproduce the issue is by running "/lib/ld.so.1 --version" in a chroot which fails without this patch. At startup of ld.so the __canonicalize_funcptr_for_compare() function is used to resolve the function address out of a function descriptor, which fails because proberi (due to the wrong return code) seems to indicate that the given address isn't accessible. Signed-off-by: Helge Deller diff --git a/target/hppa/op_helper.c b/target/hppa/op_helper.c index cd304f051e..fbd80e4248 100644 --- a/target/hppa/op_helper.c +++ b/target/hppa/op_helper.c @@ -170,7 +170,7 @@ target_ureg HELPER(probe)(CPUHPPAState *env, target_ulo= ng addr, uint32_t level, uint32_t want) { #ifdef CONFIG_USER_ONLY - return page_check_range(addr, 1, want); + return (page_check_range(addr, 1, want) =3D=3D 0) ? 1 : 0; #else int prot, excp; hwaddr phys;