From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068529; cv=none; d=zohomail.com; s=zohoarc; b=GPdBGPleTwYSoZe2OraCIppIsufBvY3ktdRF7ZVzUG+MKQdM617h8H3Rxu62erAya9jDpik3DPkv/1a5LyBVHqXi86qn0e7/mu3/0pqUich+YUJTy9Pv4CctalzPFkr5rY97QyyJMcvfS+/VqbswHIH/QK4hs3+9Cg3EAlbeZ4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068529; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oskPBWWiY60hLX22naFd0lGb37DJ3UAou3Lt6En4Zn4=; b=Tsei5aocLGxTf5+h2hSkjtXh5khuDc4XthZ+VHVdLjUuV2A5wF9hh3ZCbt7qewy0dizgynH7WemPvf/vBW6DOgROJEWESZjdtRXXdpU57VGn7BOrpC1FcBxI/Mil7ugvIuEor/uiBoOsmTR2RjbjJCJDL3SuyZbmXSiBBuLOTak= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17890685293661006.3006466765522; Thu, 10 Sep 2026 12:28:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kRa-0002Wi-59; Thu, 10 Sep 2026 15:28:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQH-0002Gh-UN for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:09 -0400 Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kPW-0004d7-G8 for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:26:25 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M26rD-1x6gLK418r-000N9B; Thu, 10 Sep 2026 21:25:48 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068348; x=1789673148; i=deller@gmx.de; bh=oskPBWWiY60hLX22naFd0lGb37DJ3UAou3Lt6En4Zn4=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=fBBMdef+RY0dYwlKFhWZR1Kf/EqcvpYM3OI/NhDPX/zfZ99cDnIxnYv6BLTGdmYS I/1e0JXESsY09fYu7nL/vrMy+4k5ZPHE0hyMGd05TNGQNqUf1Xc9OMXOyDhjf4V+o OJ+eNnddvEEUKn3XMrzzDKYiQdLE1FG+OGvmsTcomYfJNtCypnx4bVE+WL6RLMa0E fMu8H/hgUlRrDuCd+FJVv8/0f+Mt9rwScgtmTCUFCHIKlUxSdbQL76Zbt0gRAB2uy xD1H88/N5xZjXL8f65JHOqirUYM8gZKAoWhJEf+4hdQliK+Xhq6ZoBnhQLC6Qu7M9 Eax48mu81QZmQ3Cndw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 1/7] linux-user/i386: report the real trap number in sigcontext.trapno Date: Thu, 10 Sep 2026 21:25:38 +0200 Message-ID: <20260910192545.768850-2-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:7GDjWX7fMpI6XPiezdpQ70zzwlSB3Bkv7RKbTJS6kiYdjUS1xzv pKzi4qnLSs9nd3TH0blabUvLzjCjfwPG0hAy525JpLesoWKuvqCUcrtdvmW1Kjiz8uqlbR1 vKImjIzRh5XHyO787yqH6M5fDUwlPUnFTOWPmp7h40rUHu9qSMgzlix2uuy+O0yGdAqw1Gz CIYnrJ2bjX69FVuppxHAQ== UI-OutboundReport: notjunk:1;M01:P0:3YBLMx4UAws=;1a2qMepbNMmFeRcgX+dqznChfs4 cE2rgqCRFID/XRW1Hn6NDASlLtCB4sIcz2C9ApNdU36WFVxgP/UIWPWEPp17d9ox1SRSXcK5f fkitXqXOn+hWrSzNFSESgIFpVpQ/uU5j+N2C3n0M3y/xd9zT2hkpIVIh6TT71MgZoPPnkyOY4 Yqwp+HN0zxBlmqI22EWrWMt8OuX11Oy94n/xZphpcL5wR2dc8qYJJAut+4viNHX6TWKanmOuD YID/1Durpfi2CwfmhPRntaPqv6PgQ+Db/pHYiQjUviiLpqnL73ZD45Q5ukJpDYvTV9t5nMr0p gTDIsYw6iM+WeN0EsdEo5YNS1VLy0KaQInlH+vKqkpIbZIbAeg8L29hUZzV5yDYkzjX2l8o8h H/se0fL8JeHhR8Y2YCovK+cAqgumKJewgmNTJDs+MIgDW7kpRqNpG/X+TMuQQUSX2bHuNjFYp kWGCYSiFoPFAxbG2XhBdOFpEMLJyd6hwAuwaDVOmJl5ExuGsxJhv05nhdzg352OrBTMUHU+43 XFGztKCE0QXv7uz3cmSZvgLGxbi/zBNjzYH+2OLOPpUYfN5rEAkzva8az2i76Fy/SgiBc9YFj boEUSkGD79BAIz/Jiwvo0igA8RaCAN08fq3EHQcStExuTtHjAh5b+5M7uphVQQ2yaM5rtnIs5 o87nTcyn7GoUZaq8H1RtjqTR4L+OWmgPuDgxaWCYDwmYOVfrU3NlT8Vd0OcuJMOTYP5MR3GnA tDl9+6oRKesKAdLNCOAuOf3VSb8RcAN4nVdB45UbaQZiuKz0ogLAImO24dvY+ZgiJAweRVhCi SpuFZdaZg1voXsaRFyQwF8phQRi34a/hr70xspc4j53diPdkMdQUAbcWokXMh5DLjx5hDfQOq FppTy9tsLZ2RdpBwIorqfLGc29KFuxbgcgjcVbLELO4Qli2kwKQ3BvRdbqRB7wFs9dzXPOZ33 WLwz6wFuUFtOn0w/jgwO4CXZjmG6ctaGhBykVY9YKshsMyGsHLm7TzaTU5xobnVcgMUFcnbp+ cHIQd2w6vcGuhEryh9/lXD1jruUa5DhFMbStDrHNjvdySV3JU1pz4ufe91ElW+IxoTgfaTKVe LvM1TqWNBDMBDDyx1Tnwe8mLsPFdJKGRngOXDYUom4MkGeYZPwMKfFP6MpRsU7gIA9a4LZDGJ mEMzgIXRyaBNAJNkV6GzTSbH0Hckd396WdnIR38/6TBJxexfKmNykytMmEEaVzgrPIgzHcMfY aPEoZebxNj62JInJwE54/EcTnbavKYMqOOwcoLclYAyyT/JWDZE3PVCkBck+O6w78TSJnSu6J LmWaX5syQ6X1/mrxRJegE/dpQWXILEg/yg2pz96aC6+fdZ0hTcT61S0savE1OvXDvG/QY0p/b /mfN4PZv3G+MaseckApLQGFzz3vOEDHjeXcPY3LOyXQ8bAkPoHg1P69bjtSoPLdsrGr3ySgNK ndHAFEBylojbyRUrVekhjT8aEkn6cMgbZfl/+QOpgdld6Kr2Bg14x4a4OcDBDyqD4XP6CzRvz KngBVnOAZWOQhs00uhP2lybmn8YeMfqrsyH2iPAPf19C+fp6qyYDnJ/DtLYl9ei17yyg39Koj SSmSAStQBlVm7r7CGWJ5bUn+g7fws6xBiBYSEPegWIL6szDTUR5wAriYDcmqBeSo2o2o3OB0P +j+7Osj0UbTB61f0/eIFJfKNky7zJcf8xFqCYsJfhCUYZx7FqAr8a8KwpxE5S5mRGmRbizMH9 2QQUD/ibUK9qgeib6mkSOpuQDGmfZU+JDjHyL7cdmam/O6JwELpnbiRttRhQII+okvE+0cMkc m9UUKsGsvYCSPeauUTcxFUdji2+3SIrfyGWMtW+ztniY8BHqCa6lC2DN+9uEW7+JET0s454TC sj/PhK/X5quGWLY9j91UWbx7reaAVGp4Phk8zJJ74WNtNKJHcmOO0OSpMBc+ByP5E6ImAlARN KCB3wfeUhqvMzEKNysZSMrfWWll2xKbzubtbhEyajSCVVzs1BmEXUsC4FQAgPkrFTOOxmh4K1 oJ9Myp4NUXWnusUh0BOxO+dYCtVSB/uSY4dvGW6qCv7nwLNZuy2CP3Eu9V6O/HwGUobsj+Cjl PQblTw24e/ePI/q2Rn/a1RrJmRCp7MKVVTJlyBtbBZtW/qkzJ/6+SqDU3nfAC0tqb2i/aLfyi /akWDy3IVz7B/g9aIsMUsKutPDORsHM7ZhrgkdzDeESq5LV2niy3uhNeGA/TslgEAi2gMlQus IZn0jXr2pk4u+lEDG9vFnbq/To28z5k05SDsFcIza01KKN7ZxtMPvlM5xUW4H9ttugMx1Ok2f OjeO4pOAC0gTRS0S8gSbpxQN5rqcebe11q1CxfemO93kZzFoUwPHrs230sj6OyqCTNdVerkV4 LOjQcbveRiOJLw8nb5WiFlOMdBC45aGTewXoaGvu53hucpeO4+49z7rmvx2F+L76VGCHbMdCV ckKw1kZ+IvQ+Jc+DvDUGDtEmfrM+5PfbcrlwRYJ/nzTxvQuFMQzTBzGtNoNLHPZgNN5zZoWSr z7MwSsWLHQz9RJTKGNcv9l1qQ1Edo/K/acAi9gqRSvmmrPdYipiT7wXQjUScKNY17dwkXwyOK IkKU6VU6GGMyzD/GYLKfEvL8HQL0Ai2Mr4X2RyzA4rpstWhLLi7XcubTEkinN9peVxHPON1y2 b875ECZUOOLw6iBsYTmV8ShgzQOvg2sStokAxj2d1rqK0VoCzWbv2yH1xy07vML+GP/yb2Shf O4XqQXAc46yaiLCjnRpKPrOb4wlhVaHx8BbSU7Gzo+s9u53QQsyqcez83LSqy25qTp56Crjc0 ytXun/eZl8Mklnr4VsI0IiUcBJErPCav7Vzjnn4BPvtSWfLoYF59irZ3wm9awDf4KLqpvS3/A vl3A/D9fbOCNNpty9QkSr5XDQKRu+DPwqZ43fkxzlgdXWCKAOlZB4RoxMlCx5iStyPESKhPkl mIrgDNFvri4xqvutj+AHt4oSBuzXCtaYRr3kmJhnw/A3hvNgkhLPA5mv8W5m0WwtYLT+VRWuC SDv7yXdZscOBCGLi2ZxGfJ5n4rCVp7PYg/7dXwj3nd6cuLrpUHI+YJ919GFIiuNAtxsy0IsSK qZBTemIqdXALcPJPA6eUD7vN6QgxvNLd1gh9GqiJ2fSdrCHCQ3n9IGb5AzepqPwgXVbrzBC2j tOpfNzgpSVleWWLdQ0xjZH+DVrvX4s1BXnTmUa+MKXt85mwuCqkeR+sffBwI1xQ8XBCUA30fX Y6GQ9JwLeyEV9qtI3VlumZpevafaTh5HKtN2Zipx6Q2dPTID+hVYwph1ThNx2xEx8AlhZekvB HRMsx5oKKJR/wDE5nGjIfqV+T+4c21G/0SCGzEQTcCvFDwamUjTyOBmNUYwxTxGEqtoiX7KIX ti9kczb5y6bBtNrtIuNGnr5yjWFBwNcXv7Vj42Odn8ka5PU4hPgt983Oynf+yx1HwDVbifsw+ V0Djx2kRnK22D86LBRoZ09sZpNRXUtt1+7htNJ/znAhK4n8EOe+PbWnD6MCCMCJGBmJnomIKW N5Zf0X0J2D3TIYuo/YvJJpBt4V2qtkD+m1NECsq3oCOs3lVQnYNUpivDFVcI76coLqPCNuqD2 kZaICIlJm/pScgKVWKpq1jm8o+k7l2xcQEosV8D250NavYRLiviRUQAFCMsKtpdefWLyTfRLh ENWkSvhxmBu272/xSCAc417kn8N90e9RLAqgY/XOYzJKA4JgZkKqW/jm0ZJ4ECMHa13qU7z4r 64VWdFVhxpjsNGxfmFlsh4NTrjeS/HCBKQsTHDcWX9h9c6zCMKAGPBbSkBP4k3EV+2jso1lan EAicv3WdMFCvduMGDA67VAYPIodu7BzllPVQxQDnPAzrJNPQn/OyKCacqUdT6Lla0YzUtXKYi XvC2A5lYUc4ghvrkVwiX6xqqMpeK89jkW5AJgj38QeVt6X5ZgoBdEt9kaLC1FF/IhakFPvnk0 ItEvJN8Uje70W5Pb7p3Z4kUujZH2r2d59wFGvlaW0viynX7lQkhU2FfkEiy6+n6kKxlCUawuH yU4Sze4fNKb6G75xJInNvhLAuM2alfQWuWTmpDMk0emoZ5LSeqkc5T/DqvC8hy7JqA+LERgBA PGF/jgqybCogQZriMH038gVnNJoQhJ9tlZFYkM4tYZT9pSfIv7v8sGVepYOoovjO1X73b06wT Dj6hAM4V2BlBsV+fyPC+B1Ph/RW4RW7ldd0BnbGVmGwYsIpBSUZ444w2GUdvnN9utHPKjsjk5 cizpMLWUHZiD3No5DrfwWiijHG93xBOAAaEPlfYuOS52RPsdXDX5vkOh+LFDaJX8i1Zcvbx6t bniQeT9PPHD3iDIo3Gw2/K3C2xSUE/z/kft+1hXTJYP+8LkEYCdv54W3vrRvfsnH0JhJ8fWXU Lc6jbpQoKqi6K6NQsfd22HyX8OSl+iUMbmyYwYb2Oso3LPRoq8FIDWf6+h/DFxxCmcvtpIk54 inwsis7prOjUQubO5odrYpDcy8U3THpgPTfIm7ts7AF9VdGlGytxVnfMWakKz39zuK+/m03ZX /zmw18lpzTuAOP71sceynxqBQ9U8gb1npYmVxllRSxdLgIXnQZxkUcX49hDD1gkWTHEzDFRko PwP6aiATSS89Raavr2PAomPViROZeqxbUTaX2jwqWmh2HKI3sxqbz59YzozExgpPbZy6RgqZX Lm6IVNzYpmCbhSIuRnPdDK+RAKM1O3ZsP+UueSkthbAJYiBO+x8fe+R0VHwsEF2BELVOmS6X9 iZFIng/r62giq+s1RNe0Yl1jDKUOCsWtY45P1Us88R/r+0Amx5QTVV35e8wrunrYUHxKa4fCN Nj/hjfJ5Zp4Tv41wQTW5FBWWOPLzAQG43u6S/FU9WDEY8h1BEXM4EyZgtl0BFDsB7by5MvXvf oYeiDMSf/1sqjujghK7FsfuDseTFLWhP4p7YCn9RXQGKHLL+XTQ4WS09ewd0pM7mXPzk+IjVb cFS7rUYxf3nnfAycmO5basgmgzxZQ6MsRrsNJbIjQ4stf2C076j9CQYoKxXXpz13P1B8MaJn+ lHDugdz2MGQFj6MIYRUGyWqMiAaVnlRWrKAgfHGKuRVKoTR1EV1gnNgzuIVfBeescgyEmFi8j BErWvR0IVfYiiOdLonsk8qKz6Q918Bs3lsCDOXxmOMiHOwE8Gfap2XNy5qAq9d84gGEnr7eOF xpSoCF9aKBbETN8SSQ8XbRK4f3+YNdtYXdedlSczLNdQYjHIaWAi1BU2wHYW/0/RP5vEol8gz p5zktJzGntWxeWUduWhl14nRJxh4/HnAoMjfZRmcioufX+STsIDNn3NsO5mgwGLJDfYoPn1GX 54FY5n2F2pAemPRdW4I6iYDcB1HgCpv43RGf+8LybZ8VfLY/Y8vlizX5/Hhldg2Bc+QBMoGEY D9ahp2t7N3gPlh3y6ACqLhSnBOJL4VXC035UXFHuTYiEjEWnWqKL+ummDR1TNPFdX43d2rbjq gaQ2ozLxELMgYFjVT0JYa6ULZazBtsKBZXfejtWitA1yLXXf3Hf6ZlcJorsYM6hKsIB2mM9WJ 1ekhdkN3Rixuyov7fUO9vVPjmuxP04qjnaje5b4O/sBPeWrLDp/kzJigfYfe2+mPY0ZAw957W taTzir2+DTu7ERyjzpg4kSLsYT4hBFOP6UFD8gihNHlhqInFTUfy2kFjvFW1hSAdQrymq1d3I IsoJLOhnv1psrOmNV0F/43OEiNXGA7gRiuVe2DBAqbppXwFradOCbkbYpr/eAkx+olOLb+kB7 lZnmVRti3/gE7wb1Mt1TxbxtlpAeGmiJI4dmNEmZxhJ9v1vN/cWT+Zagn3sk5+s+/lNNxt6Ja DUCXyCMwg0rEb80u4yoR715nOzt/9HkRHd4DwK4ua+LoIJC6gv1Si5zN//1gKuMw4dwZnNYq4 UM+IVAj/cvUi6oCATkRRObmxr4lrrV2rJNhFASFuccITl2d1pGcWc7sE2R3XxiDVE5p0pzZsL 7JnTSnH1H9aRno2+SR/Xf6wE9FPSnAZfofzGFi4owlLYN4fgCBO22WPFQUi68xOZZTFme8uIm dY2LY44v/Fwf3ORN88n+4TEYFTQqyBg+YwGAtF6D4oQpdSoeHFosUhi0wNpn+NXjuSE7PpA8j pOgICW+Sq0TFHl64jPOy5rTzRR8yi7z6wmhne/I4JsCXSa9LIv6nWhZ8vXkgAUppnh1LmTOSa k3VYe16ZPq8RoWPE15sHsETGk9GWOy7EVWqeBtbs+4VU2dU0yu3qc0bDY2hudXAHPG/I5nUvi o/JEqA8sCmUm7uI7yUJxdCnchw1nzxMuavC+1CX3bzm3ViJAFPl3cAYRvCd1xXP0vOpea0O8p IXEcQpN0WWLJJ5hCEpTBN2/8xfS7uIVoPO2QXksIwBHPy0qFGj8+sG+U= 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=lists1p.gnu.org; Received-SPF: pass client-ip=212.227.15.18; 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068533062158500 Content-Type: text/plain; charset="utf-8" From: Nat Brown setup_sigcontext() fills sigcontext.trapno from CPUState::exception_index, = but by the time a signal frame is built that field has already been reset to -1: cpu_exec() copies the exception number into its return value and clears exception_index before returning to cpu_loop(), which is where the signal is queued. Guests therefore see trapno =3D=3D -1 for every cpu exception. #include #include #include static void h(int sig, siginfo_t *si, void *uc_) { ucontext_t *uc =3D uc_; printf("sig=3D%d trapno=3D%d err=3D%#x\n", sig, (int)uc->uc_mcontext.gregs[REG_TRAPNO], (unsigned)uc->uc_mcontext.gregs[REG_ERR]); fflush(stdout); _exit(0); } int main(void) { struct sigaction sa =3D { .sa_sigaction =3D h, .sa_flags =3D SA_SIGIN= FO }; sigaction(SIGSEGV, &sa, 0); *(volatile int *)0 =3D 1; } Natively this prints trapno=3D14 err=3D0x6; under qemu it prints trapno=3D-= 1 err=3D0x6. A SIGILL likewise reports -1 instead of 6, and SIGFPE -1 instead of 0. Both qemu-i386 and qemu-x86_64 are affected, and both report the expected 14/6/0 with this patch applied. Only trapno is wrong; error_code lives in CPUX86State and survives. x86_cpu_record_sigsegv() already notes the coupling, observing that we cann= ot let the caller clobber exception_index "short of inventing a new place to s= tore the trapno". Invent it: record the exception in env->trap_nr, mirroring li= nux's thread.trap_nr, which is exactly what the kernel reports in sigcontext.trap= no and which likewise persists beyond the exception that set it. Only hardware vectors are recorded; the EXCP_* values at 0x100 and above are emulation internals and never appear in a signal frame. This matters to wine, whose segv_handler() dispatches on the trap number and cannot service a fault it sees as -1, so 32-bit module loading fails under qemu-i386. The equivalent 64-bit handler dispatches the same way, so the s= ame failure is expected under qemu-x86_64. Discussed at https://gitlab.winehq.org/wine/wine/-/merge_requests/11737 , where the suggestion was that qemu is the right place to fix this. Signed-off-by: Nat Brown Signed-off-by: Helge Deller Reviewed-by: Helge Deller --- linux-user/i386/cpu_loop.c | 9 +++++++++ linux-user/i386/signal.c | 6 ++---- target/i386/cpu.h | 10 ++++++++++ target/i386/tcg/user/excp_helper.c | 8 ++++---- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index 2f733b0b47..049bae7bc6 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -218,6 +218,15 @@ void cpu_loop(CPUX86State *env) cpu_exec_end(cs); qemu_process_cpu_events(cs); =20 + /* + * Remember the exception for sigcontext.trapno, as linux does in + * thread.trap_nr. Only hardware exception vectors qualify; the + * EXCP_* values at 0x100 and above are emulation internals. + */ + if (trapnr >=3D EXCP00_DIVZ && trapnr <=3D EXCP12_MCHK) { + env->trap_nr =3D trapnr; + } + switch(trapnr) { case 0x80: #ifndef TARGET_X86_64 diff --git a/linux-user/i386/signal.c b/linux-user/i386/signal.c index b646fde431..9650fac940 100644 --- a/linux-user/i386/signal.c +++ b/linux-user/i386/signal.c @@ -367,8 +367,6 @@ static void setup_sigcontext(CPUX86State *env, abi_ptr fxstate_addr, abi_ptr fpend_addr) { - CPUState *cs =3D env_cpu(env); - #ifndef TARGET_X86_64 uint16_t magic; =20 @@ -385,7 +383,7 @@ static void setup_sigcontext(CPUX86State *env, __put_user(env->regs[R_EDX], &sc->edx); __put_user(env->regs[R_ECX], &sc->ecx); __put_user(env->regs[R_EAX], &sc->eax); - __put_user(cs->exception_index, &sc->trapno); + __put_user(env->trap_nr, &sc->trapno); __put_user(env->error_code, &sc->err); __put_user(env->eip, &sc->eip); __put_user(env->segs[R_CS].selector, (uint32_t *)&sc->cs); @@ -416,7 +414,7 @@ static void setup_sigcontext(CPUX86State *env, __put_user(env->regs[14], &sc->r14); __put_user(env->regs[15], &sc->r15); =20 - __put_user(cs->exception_index, &sc->trapno); + __put_user(env->trap_nr, &sc->trapno); __put_user(env->error_code, &sc->err); __put_user(env->eip, &sc->rip); =20 diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 9ce8ca0038..e61ccc9e68 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2188,6 +2188,16 @@ typedef struct CPUArchState { =20 /* exception/interrupt handling */ int error_code; +#ifdef CONFIG_USER_ONLY + /* + * The number of the last cpu exception taken by this thread, mirroring + * linux's thread.trap_nr, which is what the kernel reports in + * sigcontext.trapno. CPUState::exception_index cannot be used for th= is: + * cpu_exec() resets it before returning, long before the signal frame= is + * built during delivery. + */ + int trap_nr; +#endif int exception_is_int; target_ulong exception_next_eip; target_ulong dr[8]; /* debug registers; note dr4 and dr5 are unused */ diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp= _helper.c index 0957ad2e9e..26a4c0ef92 100644 --- a/target/i386/tcg/user/excp_helper.c +++ b/target/i386/tcg/user/excp_helper.c @@ -31,10 +31,10 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr, =20 /* * The error_code that hw reports as part of the exception frame - * is copied to linux sigcontext.err. The exception_index is - * copied to linux sigcontext.trapno. Short of inventing a new - * place to store the trapno, we cannot let our caller raise the - * signal and set exception_index to EXCP_INTERRUPT. + * is copied to linux sigcontext.err. The trapno reported in + * linux sigcontext.trapno is recorded separately in env->trap_nr + * by cpu_loop(), since cpu_exec() clears exception_index before + * the signal frame is built. */ env->cr[2] =3D addr; env->error_code =3D (maperr ? 0 : PG_ERROR_P_MASK) --=20 2.55.0 From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068728; cv=none; d=zohomail.com; s=zohoarc; b=MZpQDEdoq8du2VAIsgahHllxb+K3zizja/GD5WebXnui9K52f5LPwQwIfVOcJoWT5CTAJ2dytyv9W3HsgSdYmActdplbg8n/Q+l2q4oZ0Y6csDaYs7ZaJyyeoTmIiHu6V+kuRClhIh3Vi1wA6YFirkHZLdcG3unB634QZuAGepQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068728; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ptcJhfomH/bRpx9QW4fglW83w+d1nMh9Cml7QzkflFY=; b=HQ0RpIzfGXeAIJqUm7t0GBTUXzQXs5PCr17qm5mDDmITW+5iRqyUPI2pE/j/GGkHk5OEVti65wNpQTqV5LEXmiSUCUNgqqEQQ8YcKGKWanMADdDBUzu1RLoWmIktdlE8P9GNKnpdKcezV7KYIlxZQ97hRWQiJMCIhkwHBB5Gf/s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789068727984919.4801706850102; Thu, 10 Sep 2026 12:32:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kUm-0003aD-I2; Thu, 10 Sep 2026 15:31:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQl-0002Le-7P for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:32 -0400 Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQQ-0004d4-Lu for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:20 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MgesQ-1wdPOa2jrY-00euxM; Thu, 10 Sep 2026 21:25:48 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068348; x=1789673148; i=deller@gmx.de; bh=ptcJhfomH/bRpx9QW4fglW83w+d1nMh9Cml7QzkflFY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Fl5OHRs4Gmv2cVEBqsEPJLjqvdrtaLzTq6qh2H0Jnf5CL8kObyawEvJDouzlOJ/Z JyosDzaWc8h9uMKUeEi+O7luuaYpP64CeySjaphpsx+lTDUdSL4k6JQHWK5gOxZhj JSCzxZ1GQOfKvxuade0PEn+ohdmQ/64Mu6rvfhSv0/0fxgAe6fomSHrWZVkUM9CNT hK/TTJdIsl04El8WPttzTWrX/Npw5frZEdUJ728V7Jy9/i9xbeeTUdeR+01YZu6Xh 4XlF5Y4ta5fNleECUJ7hUBXIncKrKIv36vPwpSfOOSkZPIzH2RT3wJpAnnofmcdH6 Atlx/bd9qqz7AJlRtA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 2/7] linux-user/hexagon: Add HWCAP support Date: Thu, 10 Sep 2026 21:25:39 +0200 Message-ID: <20260910192545.768850-3-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:J6pOsmrqDrQYay1K9/+1zOb+Sua7gi8ZIgkkj4mM3zaYrKqLhlD E+aClL1HRregri9Z/PY3U6krMkbwZxfcUiiQ0WDr+D3uHhiFsikllSnahvdyIPcUCpXRkzW mj9GXKmusa1fpO89WbG9NYHbx9z4o8YBVZoGp4e0nVVj/YFl8PYjBSY3X7oOYykz9mUN0Ji G55BNbnC7wvCyUHuxohFw== UI-OutboundReport: notjunk:1;M01:P0:fWV9WWCMq4M=;vEmdGptIzfHVWWwEOd5uN88d0iJ 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 TPi3Azn7kmmcJ7iECW6w7aAOaVAd2Y7Y5wQ== 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=lists1p.gnu.org; Received-SPF: pass client-ip=212.227.15.18; 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068728183158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain Link: https://lore.kernel.org/linux-hexagon/20260910003346.596593-1-brian.c= ain@oss.qualcomm.com/ Signed-off-by: Brian Cain Reviewed-by: Helge Deller Signed-off-by: Helge Deller --- linux-user/hexagon/elfload.c | 61 +++++++++++++++++++++++++++++++++ linux-user/hexagon/target_elf.h | 30 ++++++++++++++++ 2 files changed, 91 insertions(+) diff --git a/linux-user/hexagon/elfload.c b/linux-user/hexagon/elfload.c index 39b0201814..3d19a711f8 100644 --- a/linux-user/hexagon/elfload.c +++ b/linux-user/hexagon/elfload.c @@ -3,8 +3,69 @@ #include "qemu/osdep.h" #include "qemu.h" #include "loader.h" +#include "target_elf.h" +#include "target/hexagon/cpu.h" =20 =20 +abi_ulong get_elf_hwcap(CPUState *cs) +{ + HexagonCPUClass *mcc =3D HEXAGON_CPU_GET_CLASS(cs); + abi_ulong hwcaps; + uint32_t hex_ver; + + if (!mcc->hex_def) { + return 0; + } + + hex_ver =3D mcc->hex_def->hex_version; + switch (hex_ver) { + case HEX_VER_V5: + hwcaps =3D HWCAP_HEXAGON_ISA_V5; + break; + case HEX_VER_V55: + hwcaps =3D HWCAP_HEXAGON_ISA_V55; + break; + case HEX_VER_V60: + case HEX_VER_V61: + hwcaps =3D HWCAP_HEXAGON_ISA_V60; + break; + case HEX_VER_V62: + hwcaps =3D HWCAP_HEXAGON_ISA_V62; + break; + case HEX_VER_V65: + hwcaps =3D HWCAP_HEXAGON_ISA_V65; + break; + case HEX_VER_V66: + hwcaps =3D HWCAP_HEXAGON_ISA_V66; + break; + case HEX_VER_V67: + hwcaps =3D HWCAP_HEXAGON_ISA_V67; + break; + case HEX_VER_V68: + hwcaps =3D HWCAP_HEXAGON_ISA_V68; + break; + case HEX_VER_V69: + hwcaps =3D HWCAP_HEXAGON_ISA_V69; + break; + case HEX_VER_V71: + hwcaps =3D HWCAP_HEXAGON_ISA_V71; + break; + case HEX_VER_V73: + hwcaps =3D HWCAP_HEXAGON_ISA_V73; + break; + default: + return 0; + } + + hwcaps |=3D HWCAP_HEXAGON_HVX; + hwcaps |=3D HWCAP_HEXAGON_HVX_LENGTH_128B; + if (hex_ver >=3D HEX_VER_V68) { + hwcaps |=3D HWCAP_HEXAGON_HVX_IEEE_FP; + } + + return hwcaps; +} + const char *get_elf_cpu_model(uint32_t eflags) { static char buf[32]; diff --git a/linux-user/hexagon/target_elf.h b/linux-user/hexagon/target_el= f.h index f81ae3895a..90e5032d5a 100644 --- a/linux-user/hexagon/target_elf.h +++ b/linux-user/hexagon/target_elf.h @@ -21,4 +21,34 @@ #define ELF_CLASS ELFCLASS32 #define ELF_MACHINE EM_HEXAGON =20 +#define HAVE_ELF_HWCAP 1 + +enum { + HWCAP_HEXAGON_ISA_MASK =3D 0x7F, + HWCAP_HEXAGON_ISA_V2 =3D 1, + HWCAP_HEXAGON_ISA_V3 =3D 2, + HWCAP_HEXAGON_ISA_V4 =3D 3, + HWCAP_HEXAGON_ISA_V5 =3D 4, + HWCAP_HEXAGON_ISA_V55 =3D 5, + HWCAP_HEXAGON_ISA_V60 =3D 6, + HWCAP_HEXAGON_ISA_V62 =3D 7, + HWCAP_HEXAGON_ISA_V65 =3D 8, + HWCAP_HEXAGON_ISA_V66 =3D 9, + HWCAP_HEXAGON_ISA_V67 =3D 10, + HWCAP_HEXAGON_ISA_V68 =3D 11, + HWCAP_HEXAGON_ISA_V69 =3D 12, + HWCAP_HEXAGON_ISA_V71 =3D 13, + HWCAP_HEXAGON_ISA_V73 =3D 14, + HWCAP_HEXAGON_ISA_V75 =3D 15, + HWCAP_HEXAGON_ISA_V77 =3D 16, + HWCAP_HEXAGON_ISA_V79 =3D 17, + HWCAP_HEXAGON_ISA_V81 =3D 18, + HWCAP_HEXAGON_HVX =3D 1 << 7, + HWCAP_HEXAGON_CABAC =3D 1 << 8, + HWCAP_HEXAGON_HVX_LENGTH_128B =3D 1 << 9, + HWCAP_HEXAGON_HVX_IEEE_FP =3D 1 << 10, + HWCAP_HEXAGON_AUDIO =3D 1 << 11, + HWCAP_HEXAGON_HMX =3D 1 << 12, +}; + #endif --=20 2.55.0 From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068487; cv=none; d=zohomail.com; s=zohoarc; b=oGP/KoGKfXmmqk7m2DR4mNlD0kle8VR6R8BeknpVhDc85FmPgYxoIt74Lq8dGXMtk/r6EOxg957aSQk7ORN96O4viEunc7Nhe86ZrzbDng407KX93Fx+n7qIRMQQWwnSLBJ1f8g1jtem7+y6OXTzUUu4vt0ZE/oarnrOUW4lesM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068487; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yteRSq6bAtmx6S1tlzA8jfXoADGFrIcOO03+cDxnMiY=; b=Mj23vTiSDOrDXZc/3p/dJ04yYpzvGq5uaNaLNlJFH9knCtiiZJuymFOIvJzSubaLKQ7vW5ozU8kK3xJVPvjTJMa+XVIaClzuVmlpgxB16uif6tyl8UuD3XKWoci9I2nlp1yGNbqyw9cOb0J/Kr36u+Du5YvFjjSzP4O3Fz595ZU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789068487726558.5824199152298; Thu, 10 Sep 2026 12:28:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kR5-0002Lq-0r; Thu, 10 Sep 2026 15:27:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQ5-0002F0-QI for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:26:55 -0400 Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kPP-0004cn-4D for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:26:17 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MHoRA-1x0wln2bmI-00H9je; Thu, 10 Sep 2026 21:25:49 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068349; x=1789673149; i=deller@gmx.de; bh=yteRSq6bAtmx6S1tlzA8jfXoADGFrIcOO03+cDxnMiY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=YTfN17xwQJzXq1ajs9wMbddU4oDj51SdFZwqseT2iKMx4dMCfEGlhr8+voLgH7H4 +s/zSITcYsiusFM6LZt2KsIecShoEm+lFP7IZujVwispZ2DS74JRO9BiaVySlanXb JeitjCL3wCY7CTz3lz5J7F2Y9VvuAHvoLf+QANdIha4sugRpdcMjQOm4rz+xIEdga XJRt2AFvX14gmXMR3hoBXHbX3RuX8GAieY2N/5i4psmqhWZuWbyLH2Io3Fz5CY7Yk 2VAnomci6Rgrvn4jKEVfRXDCR5230SGmCxHQ278a3NWCpBH/cq98ALSD8O0wE59H7 GZ7JnBfJ6vF2Fck3lw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 3/7] linux-user: madvise() on unmapped ranges should return ENOMEM Date: Thu, 10 Sep 2026 21:25:40 +0200 Message-ID: <20260910192545.768850-4-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:W1vRnlzHP9BbvFt4H3/UmSmAowRgs2W3s3SnhclGXZAE6GVXwME /gk27e8EJPM5FDVIciYG58rqtXLqgZKgryVyjXPdr0zHARmoRbuFAW7ZkOTTP85UAzLD2yK fz5TF9Ho8Ol/gar99cK3KoWbcoIeI5eEA5BCe9WqQNUCgzy97QcXWd0Q7DBf/wHGygm4sDk i4BgEKUU4KgF2CLKSJMaw== UI-OutboundReport: notjunk:1;M01:P0:nDXGP+8A1OM=;CR5DoA2itjlQPAVhgIYwxgVRrcI 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 Vh1/ 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=lists1p.gnu.org; Received-SPF: pass client-ip=212.227.15.18; 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068489520158500 Content-Type: text/plain; charset="utf-8" From: Alex Benn=C3=A9e Per madvise(2) and the Linux kernel implementation (madvise_walk_vmas), madvise() must validate that the requested range is currently mapped and return -ENOMEM if any page in the range is unmapped. Add a page_check_range(start, len, PAGE_VALID) check for valid advice values before proceeding with the advice actions. In addition, extend the tcg multiarch test linux-madvise.c to test this behaviour. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/4382 AI-used-for: importing and validating test case Signed-off-by: Alex Benn=C3=A9e Signed-off-by: Helge Deller Reviewed-by: Helge Deller --- linux-user/mmap.c | 12 ++++++++++++ tests/tcg/multiarch/linux/linux-madvise.c | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index cc0c2ee6c2..4066072ff4 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -1307,6 +1307,16 @@ abi_long target_madvise(abi_ulong start, abi_ulong l= en_in, int advice) * though. */ mmap_lock(); + + /* + * Whatever advice if the pages are not currently mapped, or are + * outside the address space of the process. + */ + if (!page_check_range(start, len, PAGE_VALID)) { + ret =3D -TARGET_ENOMEM; + goto unlock; + } + switch (advice) { case MADV_NORMAL: case MADV_RANDOM: @@ -1358,6 +1368,8 @@ abi_long target_madvise(abi_ulong start, abi_ulong le= n_in, int advice) ret =3D -EINVAL; /* not yet known advise */ break; } + + unlock: mmap_unlock(); =20 return ret; diff --git a/tests/tcg/multiarch/linux/linux-madvise.c b/tests/tcg/multiarc= h/linux/linux-madvise.c index 539fb3b772..ebb9666c91 100644 --- a/tests/tcg/multiarch/linux/linux-madvise.c +++ b/tests/tcg/multiarch/linux/linux-madvise.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -63,10 +64,29 @@ static void test_file(void) assert(ret =3D=3D 0); } =20 +static void test_unmapped(void) +{ + int pagesize =3D getpagesize(); + void *page; + int ret; + + page =3D mmap(NULL, pagesize, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, = -1, 0); + assert(page !=3D MAP_FAILED); + + ret =3D munmap(page, pagesize); + assert(ret =3D=3D 0); + + errno =3D 0; + ret =3D madvise(page, pagesize, MADV_NORMAL); + assert(ret =3D=3D -1); + assert(errno =3D=3D ENOMEM); +} + int main(void) { test_anonymous(); test_file(); + test_unmapped(); =20 return EXIT_SUCCESS; } --=20 2.55.0 From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068947; cv=none; d=zohomail.com; s=zohoarc; b=ndC3W+O+CuSo7oTW5+u60MHuSBVaqrS/La8qUfbjAe5hT1aQ2BaBU/Nk1fWQ76PexjKFVO2lvMSUVGk02JZ0WmE9GsuYtd8TyEtXLEE/94/gETrZ1IilDM0zRmNaUubrd1jQ3vpTpy1zwum0/Vdwe6M27t6ql5FZuecLdscy65U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068947; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aeQ/ZW9NWOqgtCtNPQnKo79I1qD484PyIRQ8qxVAa1E=; b=SzZTdXARKUQsIMv7PWGte1upsiA9oJQYoEFzDMIPcB3vhchILIngGA20YFVLJrBFQEP1hKKViq1DSK/DjPjlsaHMN9lXKa7LvqFtcMapZMfe+VWR50uzW263ioxaCO5QmocET+lF3TTdfxCnTWP+X7Qvdci9Rq8IBni0I5dK5F0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789068947889118.89168759660959; Thu, 10 Sep 2026 12:35:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kYJ-0004su-Rd; Thu, 10 Sep 2026 15:35:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQy-0002Mo-GB for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:47 -0400 Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQc-0004dl-PH for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:31 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MrQEn-1wRc5J0inf-00qlbP; Thu, 10 Sep 2026 21:25:50 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068350; x=1789673150; i=deller@gmx.de; bh=aeQ/ZW9NWOqgtCtNPQnKo79I1qD484PyIRQ8qxVAa1E=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=dC73PeBeMgPDbCvEIxlqrC0oIIkfLJVOXTL9XQE55IrSKDuhoICU+PVOFtBWVVLv SEebVBKhjSFr0+i0QJCDVQHbLBtiofwWeY3Z1jRazlWHXK1mes+SURMoWPgAAFrVl 2kURGgwA575E6BMUMm/JMLqbroX7zhu68bpwWZsjytZah+p3OTE47K02neIzdDfE3 expGEHJ9VHGvjSSK0quH7dmvbdgk00zr1hfDB2YIQA6iSJF87pdvQ1jW//ZgZkjhh y9rPC8h4hV0eEpXRfUkT/KNTCviIbw3+VbAdS9jUwrpv45u4h/JQ8/Af7o1+DYEeI VOUk60q3fQRm7frtxw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 4/7] linux-user: Fix target_madvise() to always return TARGET_xxx error codes Date: Thu, 10 Sep 2026 21:25:41 +0200 Message-ID: <20260910192545.768850-5-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:4FWFwK3xC8JKy4fiFp5oLpXgfp1qBg6/S3UhLuR9Jtgo6e/+L1g 2kwx4In5vZWxgacr4krYoBg+CIY9rOFGMWVmDf3KQWGSRWdo1VtQazHZqL/C4XRRpQuqb/d BgISCIMQqlMuY4fczFqJXb0RziCKp1YYP3af2pxegotDxGEK1UmVMlePcKdKeo+6jWioqrd ZLAIB061nosGm3Zw3PBbw== UI-OutboundReport: notjunk:1;M01:P0:xtsN3tI710Q=;o4d8yTBu5en4yM7Y5KfoTsVNSrU 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 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=lists1p.gnu.org; Received-SPF: pass client-ip=212.227.15.18; 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068950103158500 Content-Type: text/plain; charset="utf-8" The code currently mixes host and guest return codes. Fix it up. Signed-off-by: Helge Deller --- linux-user/mmap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 4066072ff4..dd957db55a 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -1329,7 +1329,7 @@ abi_long target_madvise(abi_ulong start, abi_ulong le= n_in, int advice) ret =3D 0; /* OK */ break; case MADV_REMOVE: - ret =3D -EOPNOTSUPP; + ret =3D -TARGET_EOPNOTSUPP; break; case MADV_DONTDUMP: page_set_flags(start, start + len - 1, PAGE_DONTDUMP, 0); @@ -1339,7 +1339,7 @@ abi_long target_madvise(abi_ulong start, abi_ulong le= n_in, int advice) break; case MADV_WIPEONFORK: case MADV_KEEPONFORK: - ret =3D -EINVAL; + ret =3D -TARGET_EINVAL; /* fall through */ case MADV_DONTNEED: if (page_check_range(start, len, PAGE_PASSTHROUGH)) { @@ -1361,11 +1361,11 @@ abi_long target_madvise(abi_ulong start, abi_ulong = len_in, int advice) case MADV_COLLAPSE: #endif case -1: /* BoringSSL uses -1 to check if the environment is broken= */ - ret =3D -EINVAL; + ret =3D -TARGET_EINVAL; break; default: qemu_log_mask(LOG_UNIMP, "Unhandled madvise(%d) call.\n", advice); - ret =3D -EINVAL; /* not yet known advise */ + ret =3D -TARGET_EINVAL; /* not yet known advise */ break; } =20 --=20 2.55.0 From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068830; cv=none; d=zohomail.com; s=zohoarc; b=HT/rp0tCs4JyXhaoLxpGCOOTr/7Myo6x7yCwd64ZnKO99cAQpxIRp6WT2oWdA6HpCejlQKX4N5V2RdXeTZrZOmxu1b6p3XsB1dhxBHhWCuHybMyBg8cX8Jdzyc39CHnLwZ/IMHSE0yHL+HfKPuUGOizYzqI09vwbjsooB7ax52M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068830; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=K/zEFSxTT6/UgrMjGsDD6x6RufJlD9LGlrVxVYgOtUI=; b=BQ5oEih8ecysdGt+L0SFrTZut8UmG225WOykL/XbTGme7ZBpIhjcick9cb35maBeJvr1Lsg5BKKp+D+bQ4kI8IL6hCMvxtTvrEisVykHMB4ViXFdkBPaOIQDpEbwvdHhr5R4kD5iaxGVIVgR0dniFTzIM5+JdHbIsDR7RigSB/g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789068830113766.1653278827142; Thu, 10 Sep 2026 12:33:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kWG-000488-33; Thu, 10 Sep 2026 15:33:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQs-0002MC-2v for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:40 -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 1x4kQV-0004d3-PG for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:25 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MnJlW-1wO1Bj2DlU-00lYoC; Thu, 10 Sep 2026 21:25:51 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068352; x=1789673152; i=deller@gmx.de; bh=K/zEFSxTT6/UgrMjGsDD6x6RufJlD9LGlrVxVYgOtUI=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=gc7JxO6OWOE9sAnYzbtatbUhdCdvIkCSd1MpdXUBCeqH+mUUjsAF0F+pwQrXH8Jc 0Frk9dzrIm9UGx0/KKpXqUnWtg21AH+k1ywARdlVL5ImAyLq3xrECcSqmDA3oY0XB C5/hO/YuV/Bt+aZnsIgrtsBCV5hkVSZVLGdpGctXkT+E57/cmhc93kf7NG3Z4T9Lg QpQRjuhQqTw6/6eTavv7jdOy/IpKtq3hAZdHnv/A/e9TKI7WgSAqrfPagdhneNGNp rhNVF6reH3jBuIS2B7qfcot5n87zPbrao9yQt2m5tERSl8ur5LLKNomossLAalOhF vEnJ9Y/aY/UpxfqrSA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 5/7] target/i386: split the FNINIT out of do_fsave() Date: Thu, 10 Sep 2026 21:25:42 +0200 Message-ID: <20260910192545.768850-6-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:iGxU4wesxqRU0tPfN4e8gRULYRQ/mawXO+zIkZcm+8YwRGij/dz 6Ec/Wp9E2EDF+JZxTm2ObYC7PuXDJZv0VqT0dEHaV4cz1UdqIBS7mMm78vFrNtcLzy1G7WF YB+iFmqnDvmUwppAKUPKYV2YiwUEfIzENCoguTJXSvjTIfrw00T7p1LiGkWwvNKMdioTb6K dwsxR/C+rWa5XFEt//2RA== UI-OutboundReport: notjunk:1;M01:P0:zpnQ3YWbUn8=;uj+Dg+fBDsSG5sFmG/OYw4GyYvj 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 E059AWkTp/uet 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=lists1p.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_H4=0.001, RCVD_IN_MSPIKE_WL=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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068831009158502 Content-Type: text/plain; charset="utf-8" From: Matt Turner do_fsave() ends with an FNINIT, which is what the FSAVE instruction and the signal frame setup both want, but it makes the helper unusable for a caller that only wants to read the state out: recording the registers would destroy them. Move the FNINIT into helper_fsave() and cpu_x86_fsave(), and expose the store alone as cpu_x86_fsave_noinit(). No functional change; the next patch uses the new entry point to write the x87 registers to a guest core dump. Signed-off-by: Matt Turner Reviewed-by: Helge Deller Signed-off-by: Helge Deller --- target/i386/cpu.h | 2 ++ target/i386/tcg/fpu_helper.c | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index e61ccc9e68..786957fadd 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2727,6 +2727,8 @@ int cpu_x86_get_descr_debug(CPUX86State *env, unsigne= d int selector, */ void cpu_x86_load_seg(CPUX86State *s, X86Seg seg_reg, int selector); void cpu_x86_fsave(CPUX86State *s, void *host, size_t len); +/* As cpu_x86_fsave(), but leaving the FPU state undisturbed. */ +void cpu_x86_fsave_noinit(CPUX86State *s, void *host, size_t len); void cpu_x86_frstor(CPUX86State *s, void *host, size_t len); void cpu_x86_fxsave(CPUX86State *s, void *host, size_t len); void cpu_x86_fxrstor(CPUX86State *s, void *host, size_t len); diff --git a/target/i386/tcg/fpu_helper.c b/target/i386/tcg/fpu_helper.c index b812125efa..f7cf4220ff 100644 --- a/target/i386/tcg/fpu_helper.c +++ b/target/i386/tcg/fpu_helper.c @@ -2536,6 +2536,10 @@ void helper_fldenv(CPUX86State *env, target_ulong pt= r, int data32) do_fldenv(&ac, ptr, data32); } =20 +/* + * Store the environment and the register stack, as FSAVE does, but + * without the FNINIT that FSAVE performs afterward. + */ static void do_fsave(X86Access *ac, target_ulong ptr, int data32) { CPUX86State *env =3D ac->env; @@ -2548,8 +2552,6 @@ static void do_fsave(X86Access *ac, target_ulong ptr,= int data32) do_fstt(ac, ptr, tmp); ptr +=3D 10; } - - do_fninit(env); } =20 void helper_fsave(CPUX86State *env, target_ulong ptr, int data32) @@ -2559,6 +2561,7 @@ void helper_fsave(CPUX86State *env, target_ulong ptr,= int data32) =20 access_prepare(&ac, env, ptr, size, MMU_DATA_STORE, GETPC()); do_fsave(&ac, ptr, data32); + do_fninit(env); } =20 static void do_frstor(X86Access *ac, target_ulong ptr, int data32) @@ -3085,6 +3088,12 @@ void helper_xrstor(CPUX86State *env, target_ulong pt= r, uint64_t rfbm) =20 #if defined(CONFIG_USER_ONLY) void cpu_x86_fsave(CPUX86State *env, void *host, size_t len) +{ + cpu_x86_fsave_noinit(env, host, len); + do_fninit(env); +} + +void cpu_x86_fsave_noinit(CPUX86State *env, void *host, size_t len) { X86Access ac =3D { .haddr1 =3D host, --=20 2.55.0 From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068699; cv=none; d=zohomail.com; s=zohoarc; b=SFArhkqOxLGLVVIW4JGrOemh3YMGr79OyazZfkw9ON7TSaGwt5WDoJeF7t+iZPy6W7KAholrlTx6XvE8Mo+07L+OKjRjXW4HbRPLzxOVu4LCK1/tjlBudQ6Pn4xW9fLkD8xej46jXuVbj0OXIDKwcVclr+RJjIr7QqT5DmLv+r0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068699; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ff/kuujdCxaeULvfSpYUXLMMvycEKNujf3jneAJSaqs=; b=JH3ngA1XZisKGfyi9ebnzeaiYfJAL4j9c74UuIgionL2YwDPLuUvkOSVhweFlvd1biz4d81PM3xSQFly5lbxpYRzvVm9RN1lP2ltkWsyRloDoE5iVhrTMEsqqHVemmdf/GWapNF8BNf7VdSmCnppJWA4iX6t6lhxAIhy0zmMaN0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789068699553280.6417590557978; Thu, 10 Sep 2026 12:31:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kUB-0003Pq-0Z; Thu, 10 Sep 2026 15:31:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQy-0002Mp-Fp for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:47 -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 1x4kQc-0004e2-PY for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:29 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MDhhN-1wwFxn33Xr-00D38d; Thu, 10 Sep 2026 21:25:52 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068353; x=1789673153; i=deller@gmx.de; bh=Ff/kuujdCxaeULvfSpYUXLMMvycEKNujf3jneAJSaqs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=HwRiiQo4eJ+4gR8JJnG3UPK5ajqxED+AFqWEL1txEpQiln/ARrmXzunKoMdOnMtx T7Uf+hd4jBf/HZ2rIuBtNUUlHgBywlHe1/ZMRdmejlivytjDRAtIT3n2roYq+k+DG adyjqnNtlLNsV4OeAW7mXaEMPku5Uatztga4CI5qUyfCd+7jCkMKfCp8UEuJGSUVF 1bZ3C+DznusG7+vVBhHnlIbs8eeweZHs8kbh25Xtx9wqysb7vcEpXyD6Jch4f6koJ b3JYjeJifIwTeu8W9fndyFu4QVIMA2Ov17rDJrUY9wp4qfp30nPGFE802GM0me1tp qhjsegc4fCgNKXHfoQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 6/7] linux-user/i386: write the floating-point registers to a core dump Date: Thu, 10 Sep 2026 21:25:43 +0200 Message-ID: <20260910192545.768850-7-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:3j+ix3NyVhkPMHDHlVyGNqJ3Iat/oDmHN7ZgROYvv8YaxjnbsZw ck4oaM+0FPTqVsK7/af4+dBZOj1VDuv6lcRKNrF4HJQ58dnijwAHbGhsOv2929Ry8JEFGAb nNOzmIInF6FFYh1SynYzdyRKFpZkTYTpn7rW8RlVRxcLh8bk/0qLCqZVRW+YetH9PD10avN KpogomzPfg0f8Ph3yk8aw== UI-OutboundReport: notjunk:1;M01:P0:QTutdPiuaP4=;bAx1cTQbTl5RYYXTCPUTZnFEU6R p+HxZVhO2+cgymU2H2nNUxgGcDZVJHR9hJi8HMa8ZuxdJNr63K3h8h48y0OGNP2ukl2GIGLOa EiMG2udeqzTSGp+Mx735RxkM8f26ngJpzOSQGPCclYBZ9jmB9eWic5nz3QVWMwaBDTQ4ZGg2y FPiawRwy6gaQhgVb7eqSYH7yayxnyBQr9B/kE4c/6l82ZmeyuOInDs6NXSJRgkQ/DPZxbioI5 6Y7ldLYYmqV1W8ZMPt9mvnevZ8iGNkFER91KWbcExKTf3DOBVU3ypJJx3qufO6aQiD87dh48A S3Th9NZPVOOhaNDaD667x3F7mXzNeOGnbImh9S2Lr97J/OoAaNydpCSwLmSdwrQHR3FoxqSGW yrpMXxmuNoH9JSFyDPvMB9xNze9Tjyh854Yrj6m1sQbGfSr5E5ggx3rNoFa/G9COeQjRQAfih Lwhf1aj3E7SsJxYg/DyyinLG/YX1HHo6qiuBdPaNh3H5pA1uaLKxvJN8FE3LL2Vq06m5Ywu97 AboU0wO/7SgglAbBqBKXkMu+m4hON3mSUkAo4QKyTJ8bXxt/DpBhrALh+PHv5adYGHFu4jqpf JbmyDGuzAUpWcbEimHI4jjmydDj4ZML0dPV+lpmI8WyBQXyT/jlHldYqzWlO1KxmcCHtPAnDL TwayApBlVQ7NbaSjR5h8iDdFAu9Vx/Ln7uRkgkx/b7JLqS+fMnRB2i/IIMEzbBzSGJkyIn44d nYTSXb5kpEjYebeaSPalVm7dQv8Y3bQ4We62KAI9whxvUEuSoepK+DEfJMneyGfjSjIRmZCTh gbnBZ/jkeP7NOCCAlvUlL0MFXxELGWu8fcSE2Ld8hhb9yWVgsBq+SsloZ1zemIuSi3t4KS5+u 9SvZQAByquHayxKTNgPzKwYsTgKINBzKVqFSry0N38FCQCuGTdNJjNMBhglq81HFpZIRnXAer BEoL2ybieu01h6N+qMtHTDsA27imVG61Eal3doHMMilmUfpQSC3RZkgJWGnkf5aXhELbrh5CM SjxuMpX1a662MANAOobp3iwte6F0gMTlftpMQEPXg4v+8I9dOA04A3UEMA96B78sSLWPpUr34 7xC38lk5iQdSrnJ46WqB03QhZgtA80KSxRi3ywXy7FxTZvBscnHLFrecsOTs2SxSq0XbTvFA6 uth9m846p+3dVJ0T1eX+RX7f7H6ylXmnVdFnEToq6LrrrGtcTNVu84CqXwEv7yrZ49a59mrgV UxDFN+zEDnhyYK+qZv5a9bXFfhZvxorxlCKeMwxE68R9mkfnCRzAA5ztvIwiOHaw1Ln23doyo v76QzCRVq3AG5dcAGjRg9QOOGScv0IbG1moRea1AVGW86F1XINJnhcdqM3qrL7tm4em2u1zL9 +i5STIrwcigKpdHvys4vDi3vby/L0Etjkd6OzZW0TvJCj/Ea3PiOOWjtTUxpoplrdpch7Jb+m LW6wwmQw1xo9UgQ+q9wvfxcElpw7AShFP8i5vw/qy/UAa78LgQAo3FJcfnlxwsdooYqIGDN0I 2uorfzxrBWAv05ibb/a/wkixN6g24YU8kgzRPDNQD9awyvpozW1bYha79X+B/cqLWzTPlJaK6 T2DRj/FMogl1X9tIKxmK6Hz/9TxiTfJdKa50WxOzrFKmPIyTtLyuO0uLgv+1mQsz5625h4lpj P7ssqa6YBXiv+BxnX6S1NzPajOmQ7Wb5b40BRTGgrsl3waZjMZ4i1KVKL5M3ZsUT5c0UOsQtt D0dj/VqGOCNzVFSTJBuMzLaq4vW8hb6FvfFbckbkGC7Ao600acwcYD4TiKYOvTH3mGNcT1l8z zJSOx0P7kJNUY4dv4Gb2LMxGyQ2vuLGGVhYd7M1WrC/m5Jz74rCyQlw1UiIWN9Phanl04CIvm YlGQoTBR7sLdQuNso9GXl/f5kXC7FOnO8WJZTjE3iF/bnYPdjD50+LhlRv2HeWkdGzWiGqTRj GWEhCfChF/IoiJCwc1rvNHU6HNLA4/qUShPbl35Xn8WSpWRsvON6pNlmKrMiBv+Ykfj2CiMBL rNkzQktsBQhYm8gOSSl4GxaLIxYx5CKt0/QrmcUy8tnOg4BZBbHmlgGZ+3qEj0dJfhZAR9Ijt 2yUg9B3NVx/6MomJotBMlDITLCGh/4997KOaCpMrXhh9kGeWqlX4RSIpGOfDONVmvmh+dcSnd Y70jbm9i3G2ywSw2NxmUcfqoHZygoQPVQYVYpz9pSn8qKUVnLqsyEMWlr1EJzWr9EZG897xDg qzHlRuReqnDK3Jg8iLNJTxYWY9vkf0W7RtF7K5b7sJfyagGhFPp0nRbMlhIaiW+UZo40xG1ic 6zCVJB7C8Fj2Q55FU1aNvtlXOQLdgAgRh4mydGMS+oMtkgj/nekGc2n0dNg346J0of0XfWhrp ERple5gJlZpZFCSERkLaqUS4gTcIklsr+EJj159F/D//WDLf++JtxU9X7nKLD3pJRqUUPoUna ET3ArNdZ0wyH0TuMhgQoj9NdsWPHkTULpkQCagedsfUl9xnRMxTNDzVoozCOLUBgXLfETeK+H x45M6z/rASZjux5AWH/ZuNZXTe3GObaKk9yjhZg6Bf6lUuIGEqW9td1BcNJ+FVsY6elMcJTCD 7ntZtKWETki6qDuoLYoI/GyR6DEDsipITXZyoBsBzcg65UYITti7802C6SYktm3ibWIRh73Me O3m7+qf8UzyKLh9Mp2r1brAhOtqmxbPWLSz1VL7BQ+geHU9CXfL+5u8FVTkCEa8Fr3PiYGiWa sa3Q1K+D57gZPXK9nKICQtxROCxcsYj1INv99bFHAZZeoQWrelGgoIkquzK91jaPcknmjZiGc 1DzmV+d50ZtJM5Ui3Ow2ElJPuRJAVf3P6TlMEHVYYIQ60E2l+0X9KAztGPKurD0s9TVeRXzAf 4Rms36Ii41m5iCz90ObpHy/94W36I9ANbuKWSCcYSiJprsDUpsaBrZ/detUlvCVvhDOfMksSx rJ4kfwMSUzuRqKebgt1Teq6xQZ38NS3Jpl1yuYwBRaFp854YXKneDJR5myVVY6MaPW/+rrpPL YQv0hyKe9iNu4yxWWekbbmTlkXp/fas+vuzB/DLKUttZHf2B1IDjnnQ9fprMPV0kSc2lUX8qw dqq99UKqB4NVkcAEWPn+W0hjZ0okJ03PbZ1SBJVyH7Mym3OpQjt3aPFqesUweL6CvepwL1QYn +2fw3FoOIBskkef5IjXQbh+8t/aDcxGfyhnYS/ird72+vcUURAKk0nN/iWRmZCAPTomG/t0pg wZvhU4rcgr7Jb0/JY8v84PK3r+dce5Sdk7MYmWqNHNnfhD1eyNo/w00LwpkGw2FN8f+oRxlT7 c/zpX0khTDT1ukc92YOkJsavX6UeQVvMWI1Y2/f3jQB96WGjaHBkCNRKfYxwNTPDNr2kedfv7 oUxOnghVSo4OK6PTa8gxIzvnI6FMObXvWZncMlY55O4I9klRz45JLE9Xl/vGftomNpqjxFzjz 06e6GNAa9ge2XeTPApwWsFNGmfPj1+p/PK37mqdgjS44yOH6mozgK0xdKaaQv2SW4XIpbpBh2 Hj5vbIJOGo2AsmFzi1e1oUm7Rzsven3H4RnKU45ZdLO4WMlHTSoNOq2zDoQ3eNeI/GyKZgu/0 qoY8btFIU9LkXz9YLVi7p3qs8ErKJlxRTfR20JUfyc3jdBmAdZy1fJg06EUHRmGcjGgyVieDJ 3nEveQ7GqonJ6rww2WV/yxZcblSYtyYmtgmGKcA5TMNx0Q+vnnE4tVcP3Z+KAY7BI/xvrTzYW IDVs4ZmMDUDHCU4WVTzmQEKFQxyv4bTU0cHc99VZN0lMHnj+6tKzJioLpSrUg7FPDm3ISThd3 AiXw0BQcJ8Wr/GcgwTN2+3WRC8KTEi7pwPjjtzrzYPO8FXqpRIiSSdMTRf1DNJDB1ekQBMel7 dWF6+2CUUlm0L5zwpKpovry+PchyWhhtnRRHiMrQhoLL707Fz8SFG22rksjvtcbsuZjDM+q6z ZlVXwyMI8YGmHR1YB7wlgxF4O3UuqXgzo/mnAnpPw9yaaP6JvJRJW0aHpNNgbtP05dYl1LJrA kBAYXZVeHdl1X+Q73oMhGO2JAjTUIMb/v50ZcL57jkzjqQBLyT/53w5Krzu6XhwdVW/z6p7M3 ESpJ4qQsWUI2UkXcpveOLqvjqIGXOIPLNgrUqnPYXKFimizcMZ3/D/4PpyWpEq+0Uer1uzR5b yNyv8BLMCDHvoMmPYUIpYm+WnTDVbj73MoQXV0RRgtzDbtgXbe+y05YTIu274OryPOFfH2z42 7exWqgEYOdktOx76xCZaQodBZnoCeEeH6SkTwHhwjAwnfLheain6C2BaDil42jIQ/5paW5azo 7vhcgEIbzDsSBzpw4/S+HpmNQWcOm3ir7CS4ZY9zAMzvGJOihwCGqoFw4UP8JI8pGsNCoG/r0 2JY9mbbmu9RsqqPjCzJaKjaY3Bf3C+CfyW2OOlt4ejJHbXzt9F/TWRj02Peigy9L9sOfr7/Ye 2MbfgfYlQu20e6edueKQ25SYu67E4yw+6A5UculcKGWwIIfU6dtS07NKOGw4kLHjjZS9ykA6M MH3pJrl8AWaR6zF/u1C593XlYYV6iOb6aGpybKMtez8BDx9j1KlxD28haWdi2JZBHWCa5f/2t nxhSD28MtdeHsGF9tJCx/bE/jPPzOCq4gO8xKyTiT95QbFebSObfiX4/C/SKqUpUatEbPweq9 hTlsUBgPNcjMHpxQwQdpqKCqbwloBxfnA2W0sFT6pNYxKOYwmkBla/ZbRGBpqbxA/8iQxW+t9 VHTzkMTCtKe9oAwNuaMLM7CWNfN7DMXFxI+O2meFIbjQqOIXf6eg477FLNO3KwNO0kARfbPSj UTF1S7du3Vh+d+vRAHX8UuXF+bMVeXSx8slHauaYB6CgH9smeKMY4vxdQaPATK+bsO8wrjfit HUP4gpFS3EZmoOfwW3yHkfPDGU3pG0e/WXVAHxzkokSrRVd8OCHgDRatFG46g1iL7PtSjzGR0 x7tx2X24Zxcu2ODtqmTbfeIMZ86S2F4KpOtg6cm5/P5crmLeh+xDmStkqRZScyMsDuOjFtY2W pg/wF3RZ68NPDJlON1/Bk1eliQuJXpSkTcim1DbTJCRejMOg1Oo+3Nx1iOMujgvwmsE8Ya29R 0U3rcX8aV09EK5g6mXZAKfn1dtNffdkur5LpcuYosDQRPUSZ9B2sOryn5roMEV5rOoPPJhnlP f8se3xJPt4/268ezAgY5vXPMVR5Ab946+jH26L0+DZOWGso2kzZzAtNchXTsTr2UNKXe93Acu /IUo344Mob89el4Jge7AoMnBvpm91mokOGJEsfoUXmqZ5PZedsRG4tIGRupAMr9wJMm1wKh22 sAVTCrAn0Mr6TlBHA3Ht//TYs62RRTFFDpRjQTvRieCvhaun3STrtbmMsOwyg3iBTDKQrxax8 n30998QtCzjBKGfTt10bv0bG4wrvw0ZIhWlyEOxbAXWGgCx6xGqvvBmCUDfXvuXR4Rk29HDqR 8UM0ejv8CwhjDzEpqvS1Y+C56J5ttFbeTLRekfsYYQ58gqwVjlhqlnl3rD0wd+IfOFL/36YJU a2xm+KIwvKFMWKyh7L0LNUY6lknHnlsUgaFD/woO1VFZe0vAGCuqszj1qiW2MVja9fzQYu9ZU V3OP07wvmq+vQ22FAP1tvWFn93aHiH1F7QyQ1sjPe2kSy+wMGLU85o/n4y9GFeTmqFu9+xAeu VW0h1kchNrvEG98Z04C9qzz1+KnyufTbzNxiYB8HsHzKRpmEmUg7wLoxCNeVlL13r2nGyPDrv E52T7Ayuc/52UGbc7Qfi8G0QVVwXHVgYTTBU1InSjZgGoDxsob/R2Wnw5cBwznD+VCMd8V59p /JmaIqbzP0WGeVB4s7wROc/YC0T1n0+Fgow46e5JnntCi3M1+ljveRM3WfwjPPh9qlMDdM+qy d20poGMmBChx23E6xiMyvgxR+dcr8It+TUhrpXYR7gA3ICtu5KbFQ0foHw/uyIlHsN9g+/MuQ YDnaCpgfg+BKlh0lag4dQFokWW/l6kt34vB2a42RB2Ssm2Sbxiu18FX1b64EKjA+EdcTMkr34 wBH/rsaKMMQf859h2havVMsq+IukCBLTCmg09T3e1p34g/QaXcrIlLDUO/L7AmkVp0J2tQ9EF 2g9Eg1nUOgcig9BZIiZWxFXOmF/A4rnBoC+rx+hqNcxlNXvoX6IGCoe7U6poVK9JdN+cyeIYY DBY7ozX50pr5cq/KohOt1pu66xP16xW5LvEDjiK559cjmE9lXufkvzzPHTEk98wwlsluX+0VB H7uwUBer71cbd7mzoLeR/ZVR3E4MEwMgSz2gf6NCCbfCfqEYhhA/Qc2HwfJ8PR4zyKQarz3fU 4FqSF5If3dszWa3oDdtOatShnwEM/RQ+n4UfELJbi7HPnUYudEPet1zl9oqaPspoP9YGMowZ7 K/oY 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=lists1p.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_H4=0.001, RCVD_IN_MSPIKE_WL=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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068700224158500 Content-Type: text/plain; charset="utf-8" From: Matt Turner A guest core carried only the general-purpose registers, so a debugger opening one reported the x87 stack as unavailable. Implement HAVE_ELF_CORE_FPREGS for i386: define target_elf_fpregset_t to match the kernel's elf_fpregset_t, i.e. struct user_i387_struct from arch/x86/include/asm/user_32.h, which is the legacy FSAVE image without the trailing software status word that FSAVE does not write either. cpu_x86_fsave_noinit() produces exactly that, already in target byte order. The SSE registers are still absent: the kernel dumps those in a separate NT_PRXFPREG note, which the generic core dump code has no support for. Checked with gdb on a core from a program that faults with 1.5 and 2.25 live on the x87 stack: "info float" reads both back, along with the tag word and the instruction and operand pointers. Signed-off-by: Matt Turner Reviewed-by: Helge Deller Signed-off-by: Helge Deller --- linux-user/i386/elfload.c | 7 +++++++ linux-user/i386/target_elf.h | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/linux-user/i386/elfload.c b/linux-user/i386/elfload.c index 2e10f38a41..3c8a65e35c 100644 --- a/linux-user/i386/elfload.c +++ b/linux-user/i386/elfload.c @@ -25,6 +25,13 @@ const char *get_elf_platform(CPUState *cs) return elf_platform[family - 3]; } =20 +void elf_core_copy_fpregs(target_elf_fpregset_t *r, const CPUX86State *env) +{ + /* The FSAVE image exactly, stored in target byte order. */ + QEMU_BUILD_BUG_ON(sizeof(*r) !=3D 4 * 7 + 8 * 10); + cpu_x86_fsave_noinit((CPUX86State *)env, r, sizeof(*r)); +} + void elf_core_copy_regs(target_elf_gregset_t *r, const CPUX86State *env) { r->pt.bx =3D tswapal(env->regs[R_EBX]); diff --git a/linux-user/i386/target_elf.h b/linux-user/i386/target_elf.h index eafac8f382..931ea23ffa 100644 --- a/linux-user/i386/target_elf.h +++ b/linux-user/i386/target_elf.h @@ -27,6 +27,24 @@ typedef struct target_elf_gregset_t { struct target_user_regs_struct pt; } target_elf_gregset_t; =20 +/* + * Matches the kernel's elf_fpregset_t, i.e. struct user_i387_struct from + * arch/x86/include/asm/user_32.h. This is the legacy FSAVE image without + * the trailing software status word, which FSAVE does not write either. + */ +#define HAVE_ELF_CORE_FPREGS 1 + +typedef struct target_elf_fpregset_t { + uint32_t cwd; /* FPU control word */ + uint32_t swd; /* FPU status word */ + uint32_t twd; /* FPU tag word */ + uint32_t fip; /* FPU IP offset */ + uint32_t fcs; /* FPU IP selector */ + uint32_t foo; /* FPU operand pointer offset */ + uint32_t fos; /* FPU operand pointer selector */ + uint32_t st_space[20]; /* 8 * 10 bytes for st0-st7 */ +} target_elf_fpregset_t; + /* * This is used to ensure we don't load something for the wrong architectu= re. */ --=20 2.55.0 From nobody Sat Sep 26 20:51:03 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1789068629; cv=none; d=zohomail.com; s=zohoarc; b=iHukb45Bgj8aueqcLM1NQ48OJSOwbTkCNyPXZwTGnVscHS+hj8BqhSfF2NbMwibJRGE36cAGZizaooioRlMJmpZAUaTa4Oy8NscNB2fYVgdlEdRqd/bNljhsjGgFIjAha08jGr19ykjL62lrYlu7sIq/OL070f2sYjhC44wjdNA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789068629; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RTZKur3+S0/VPn8+xcJ2EVRpK0+XqSA4zDIUuQHBo+o=; b=UcKseOJ46hPuQT8QdkVdV6TdguojZXBemXwGr4U/d8awDDAESBkQsGlcVuV7QC84wfxB4wlmyIcVx6NEJNPWf85uFObSXE6iFk2gSjPi0yNYU1xZKFMLcjtmDh4v3DkcuxkTDlVrt9x72M2Rnj3QPQr6FuppAB+motMpb1RqygU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=deller@gmx.de; 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789068629683426.710087626729; Thu, 10 Sep 2026 12:30:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4kT2-0002zz-5l; Thu, 10 Sep 2026 15:30:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQf-0002Kv-UA for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:28 -0400 Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x4kQH-0004dg-KI for qemu-devel@nongnu.org; Thu, 10 Sep 2026 15:27:12 -0400 Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MMofW-1xNVi927c4-00KvEm; Thu, 10 Sep 2026 21:25:53 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1789068353; x=1789673153; i=deller@gmx.de; bh=RTZKur3+S0/VPn8+xcJ2EVRpK0+XqSA4zDIUuQHBo+o=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=VSFehA72PqGja3uYBLi3pgQLV5NFtnx7TH1zXv5ZtGg63xI/Bcw99NB5bGnSHOfK pVm8vDsHaj9F21vGCv2VtqWrbQ4RKRDRXxEqBetHeY8DEfx4lVko7tEjlCnx4k3Bq 69pP/4NWH0uFU8D8IxsRNcmW2ssB5Sjkcs6mBG89a9Yh+EtM+m+AX/ZY7GRhuvSsm cjMqWX1H1t7fRvBBfISybdejWU+921yIKCU6T3xM+dB8n0H5pyfGJSZQAgmxzP8L7 23d0BGdXdgX/6ufOq5pA8qTs8phuTgk2ynvJkpaonqN1ZCd2N1tccxTQJKmDK7VvL HCBnzbgl9ndQ6RfEcw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a From: Helge Deller To: qemu-devel@nongnu.org Cc: Laurent Vivier , Zhao Liu , Helge Deller , Richard Henderson , Brian Cain , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini Subject: [PULL 7/7] linux-user/x86_64: write the floating-point registers to a core dump Date: Thu, 10 Sep 2026 21:25:44 +0200 Message-ID: <20260910192545.768850-8-deller@gmx.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910192545.768850-1-deller@gmx.de> References: <20260910192545.768850-1-deller@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:StP4vB5bUSDTCZhn5vTM9KVI/oylCNHf/p2fR4YyTNhHtUStDoI GkVlLUx+gNyML6+FIIWPQAujsLtfx8qeYF7PJtNoG18bxLrae/WT4iYcdCg/Klo5KlPlDnB K0yxU/arGh+g+T28YqiIRL7dnpdowOgkRqAJE+AAzYGVNOv8+AR0vBEhZUs3UnI+HW/ejMn qXEZgyqdJyTfxZ/pVFmVg== UI-OutboundReport: notjunk:1;M01:P0:86RLEvSe9ig=;1/Qm8SOt0SzdelluIoZvl6Ob3ld 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 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=lists1p.gnu.org; Received-SPF: pass client-ip=212.227.15.18; 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity deller@gmx.de) X-ZM-MESSAGEID: 1789068631716158500 Content-Type: text/plain; charset="utf-8" From: Matt Turner A guest core carried only the general-purpose registers, so a debugger opening one reported the x87 stack and every SSE register as unavailable. Implement HAVE_ELF_CORE_FPREGS for x86_64: define target_elf_fpregset_t to match the kernel's elf_fpregset_t, i.e. struct user_i387_struct from arch/x86/include/asm/user_64.h, which is the 512 byte FXSAVE image, and fill it with the existing cpu_x86_fxsave(). As on the signal path, the helper writes in target byte order, so there is nothing to swap. QEMU's FXSAVE writes zero for the instruction and operand pointers and never writes the opcode field, as it does everywhere else, so those three fields are not recovered from a core. Checked with gdb on a core from a program that faults with live values on the x87 stack and in xmm0 and xmm1: "info float" reads back the stack and the tag word, and the xmm registers and $mxcsr read correctly. Signed-off-by: Matt Turner Reviewed-by: Helge Deller Signed-off-by: Helge Deller --- linux-user/x86_64/elfload.c | 11 +++++++++++ linux-user/x86_64/target_elf.h | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/linux-user/x86_64/elfload.c b/linux-user/x86_64/elfload.c index 121a8167ac..4560106faf 100644 --- a/linux-user/x86_64/elfload.c +++ b/linux-user/x86_64/elfload.c @@ -42,6 +42,17 @@ bool init_guest_commpage(void) return true; } =20 +void elf_core_copy_fpregs(target_elf_fpregset_t *r, const CPUX86State *env) +{ + QEMU_BUILD_BUG_ON(sizeof(*r) !=3D sizeof(X86LegacyXSaveArea)); + /* + * The helper stores the image in target byte order. cpu_x86_fxsave() + * folds the softfloat exception flags back into env->mxcsr, so the + * const has to go. + */ + cpu_x86_fxsave((CPUX86State *)env, r, sizeof(*r)); +} + void elf_core_copy_regs(target_elf_gregset_t *r, const CPUX86State *env) { r->pt.r15 =3D tswapal(env->regs[15]); diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h index 840bddf5ec..23f84f6a91 100644 --- a/linux-user/x86_64/target_elf.h +++ b/linux-user/x86_64/target_elf.h @@ -27,4 +27,24 @@ typedef struct target_elf_gregset_t { struct target_user_regs_struct pt; } target_elf_gregset_t; =20 +/* + * Matches the kernel's elf_fpregset_t, i.e. struct user_i387_struct from + * arch/x86/include/asm/user_64.h, which is the 512 byte FXSAVE image. + */ +#define HAVE_ELF_CORE_FPREGS 1 + +typedef struct target_elf_fpregset_t { + uint16_t cwd; /* FPU control word */ + uint16_t swd; /* FPU status word */ + uint16_t twd; /* abridged tag word, not the x87 one */ + uint16_t fop; /* last instruction opcode */ + uint64_t rip; /* instruction pointer */ + uint64_t rdp; /* data pointer */ + uint32_t mxcsr; + uint32_t mxcsr_mask; + uint32_t st_space[32]; /* 8 * 16 bytes for st0-st7 */ + uint32_t xmm_space[64]; /* 16 * 16 bytes for xmm0-xmm15 */ + uint32_t padding[24]; +} target_elf_fpregset_t; + #endif --=20 2.55.0