From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic308-17.consmr.mail.ir2.yahoo.com (sonic308-17.consmr.mail.ir2.yahoo.com [77.238.178.145]) by sourceware.org (Postfix) with ESMTPS id C883A3858C60 for ; Fri, 31 May 2024 11:48:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C883A3858C60 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C883A3858C60 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=77.238.178.145 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717156147; cv=none; b=qW/1LZL82YNFO2o18oC2fYDKPPtzln4iYw1yg8bQpv5wudA+1Ljb0j/hyoPFHQcVtiXxiAhat5jr+EJPjXetgQZCGlhtXoDq47tVOyb0B+YmVNHIo3FygJWxVq9p3yQ1VU6a5cOs9qOwWJWricMOIBy16vdrrdBGJ92Q9WorK60= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717156147; c=relaxed/simple; bh=ZXkIn6vJoDEwadqp+074+AXpZ6ATDH4b5IYGLxMfGIM=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=JgCHZ88NxfdiRAU+pZrdwxa69MJmH+p2Z5WSfwqt7cG+NPatI88l6O20Vd+brk1QFzhuSY4CsAdnd5e4cRJZC7adkEgpMQRs6gDU4Fbc6f47ewhy1LLyrUC3NMXXGxiRV4ZaqpCISnbpDKp+mEiQ08zCKpuDrZ+Rh6Rq/D0NtU4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1717156134; bh=ZFVtTIc3b/L0ACipKNojVISfap2BdI5LmHjTaIpyJqo=; h=From:To:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=qhgzW7KqRQow9YpUGOLBFsdzBER2cFaLGdS4o8DRYIJjyFZ4eETsLFc/HUhjGSmihuZMDtq+S3uGgFUMxOeJUwfnOK9AWNz+b+7NtG9tGCncsC6rrLVoLwpHVT//Q4D1IAYHr2Cauala9oul5qkc0OSASMCEAbrNWpGVTweYSUZYQG3YycItLgtNbE2qiSXVrvsfwV0GXMfX10MexZ1bp70jz+hbDdbQxUHUxPI8tSRk8+EGJXuEK0DTrDTK/Syn5WrMdheXd1+ez9yW26ofQf6ji+SXDIee0YN2m3neovD6NBx3gS7Y6JzWYVxYzTGJJlEnSQONSgvuM20PFnEvbg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1717156134; bh=iTM86L0uTW5o+VnCJo7l/RNOc1i+yaWjdXOaHBIy8Gy=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=esH4iw6DZoY13RFFS2WypB9wgytAr6h0PnBdo8H5hVwobk/6UNS9qk8Hr7z/O4N2OnGkzxAcgkMIcyc3K+W0l70Jtg5rGlDiKgiX7K3YxN+cdQUZgeFAABOaqQmYnsFI3N0Wdg+bntyD0cqYuclEWbtVnHqkLmWGStqpgD7A68wdLHpvGRjm20dS2RKnK5ijWuo5kLQE9bTGqEBdK0LujnuwblZZ8cQ6lyxNdeSbTzy9EAtmy6/H4lK8MEdbCkS2em4YYxQNLVPSFX3cjii7aJs0BYOQtdnOgC+xnCwAL0jPCscP8ka8p9EeAlFfLBpIX+L6NJ4heiJwfSETH8FrjA== X-YMail-OSG: PnYKuHMVM1nTHYzOxcmfNpcMUjCj0tITAHWQ_7owBvirYYaCJgS4ixHqgTkuQt8 ztXWdT6IOvYy0mrFnoJM07S2RqeOCRA9vQjxw1R.Jy79eiBX8LdQKi8C7KEKzMunwjIBTVoHXMxJ Gt0xPu7jdVWI9SS1i07PE.wZZ24a8B5w_3vfsPlEeqhXm5f2CJk4QxwygXB5UlAl3lIXNU2cVFE_ W3.UABJqeyKWup4Biz2p6Ab_W4njywKzPMFtzPo554k0x9zkmhrIV1RPPjRmp.m8L2ryJ6QV_Viw RLOV2pMlIZLa.OSL75rE2nRHSnmG9jxYth393z0NhN2wkIjNGZFg8LpCAMOMULFhMNlMVOHGOi54 okKLIfXC8JEgOINRdP0y.tld6CrbvoPz6yiZXraN5vcvWuhEXKvVSYUiIf3l8PsFb0FNCM4fAqu8 FFj5jWL1R1zCC5VUABtYriPfF8uWzJLWZOq1eiGYhGYa6bsf6c.IBljhvYc6WXLRa5pi8IRSQknh AUjyRRyD4dyhudcDwQkTrNMdTHq0LsOfL2Kfws8JEZiM0PuH_6SHAB7J_mjnGKLd_A4Iv2vZpFbo YMaWf6NIszCw9HfNkofblLPG084qVfwwcTd.87C2h8fsNDsO.dAo12UNi.Pj_y135d55N6BW6OFj ssEECGruQdQV58dEgqoMnmMR0uWnVnnaJw_6EJFSF5tsOjo3qK562wwIvhUIuAckdqCGnwVEcKgK XwcYuwUzO9mS_lodKhVLSTOX0WemCzgk03pSqIt3Cwrd87J8.laqnYQVYwnOHzdXjCJGixgHcxOx X8lgxFWFXa6Af2LYUisgR7VKsEvWTvlHcB9Ssi75D6HvRsYGAVpsrSsZasur4Hx_ReDWATdhf34a AvLp1C3LBnLranOYWYc1hDBmOM2xeuCtIFKNkUfOxR6cGOk_A1mxXD_D_jF.xOltDn0RqcIqcuMP 0niBdvYNyn0hoSnY7UcqvnuIG2.kO.k07vI0mIhw2HmMDeTvlq8I9uzJFXP0W_wuLHgUnXOuV1US jyHnik3MACuF2pszWOz7Shw1IpHCav4EIiZY2BQBWCRGVzjB9xk3A0Xv4JcrRXnlqqOO_3xacPv9 IB6ysKRSKg7RP1YEDoCxHBb.2V65Z5RRxHvGsb.6Tiaj7vXZEq6T2BdpyH2UtIBj06RjYKCV_wDb ZgBWVukrZaJbSxV_ckvxqWojStBKXujsGIm_XQCeJ8PG0iBkz5UDIGVbGRYllqJ73Q36keHvRddi YLl0NJqsl9CVQVR2e4Jnqec9FaH6RQQJY8ZmYsYZbNdeL_4P3bgobHPDkKSkKAM6woqnhJiH.BTl sUJAoOSafrSlHH5XjmOqZ8URLfjbStc9aBkQe1ZdvU3J9sbV2iutr5IN8cL8CGDqp5fx.LJe_.W9 .Jz_GoxWLhHf4ztWoJo4aiG4I8wKIWvCg64aOVyrYzm4lJefyg.gXkF5PNLoaM8OXl2qqbzGHiXH BCmCMDHZK12L2h8S6TrmjjZmb_o5JfhZ8BPWmUEMsb1URMUHCA349PSLwovdxaBagTp0UPVA14w0 trHfICd9ZpkQjYriFUvGJW1n3hIDdUb1vPCXQy44MGqAXuWm7BXqYZL7uOelOtf4NUrLqhyZnwQc Pfh8Kfbwc_axrxUS9xhjjbOgtWMp2inAkUItWs_oRUQqkpfVuTjT.2DmScNH.GwujlcEmV.K11Za 3552Zo3YYKNr4T90nTdKzEpyMjTxNn9kKsHwjDiK9HfZGdtNVlTMxfYqZrC2VLWiC._j3feZt6OM 4JgSgQ0elbQqEVrUTCB3z8bguaPnDDINw.qpVv5IsU4.N3BINCQ4D3cQGxw5R5Wai.Oa.Y2tZEXM aXheCwo8_YQF.5NiL56RzMKwS0q3rhuCTdQ7wVqJJb0CevcSXxauQkaLsDhjR9GR88zKLvR7smzK sqr1W0j3UhAtwPkMteIkuJ2ge13oO9GqxR23drcTZlt6ngb0ZDRIiX8tK5XTljOAVTyNaD.HZu20 8dSPtaORtq1wA10tT6dgaLn_n4_o6XdOaKLfrr9Ww1kv.vU_js0NuDVu06qub1E0YLryCHTOp0ak Bzc9tKTWgFjGG3LgWTZvJ1z0I2nULBa9EwbLfDkJyXTrX.O3YwjdEC4wGZ2IzZYhPZDrY6AY2ndt lpZLIjgOzMzO32kPyO6bXPAotDKHHI5Y2atmwduz7wlTMWzaQWaXEXA48._0bLum1Dbk89bE9Ihr IhKSC0UlCjFrJ.1XXtY9pQt.qG0AXWOeewQ-- X-Sonic-MF: X-Sonic-ID: beaca280-ed15-4cf1-9000-85b0ca9929ed Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.ir2.yahoo.com with HTTP; Fri, 31 May 2024 11:48:54 +0000 Received: by hermes--production-ir2-7b99fc9bb6-g8flm (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID f2a29022cd5c5757e910e901fd112371; Fri, 31 May 2024 11:48:53 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 4/5] Fix 64-bit shifts where long only has 32-bit size Date: Fri, 31 May 2024 13:48:00 +0200 Message-Id: <20240531114801.2745-4-ssbssa@yahoo.de> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20240531114801.2745-1-ssbssa@yahoo.de> References: <20240531114801.2745-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 240531-0, 05/31/2024), Outbound message X-Antivirus-Status: Clean X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On systems where long has 32-bit size you get these failures: print 1 << (unsigned long long) 0xffffffffffffffff Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295) (gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print 1 << (unsigned long long) 0xffffffffffffffff print 1 >> (unsigned long long) 0xffffffffffffffff Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295) (gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print 1 >> (unsigned long long) 0xffffffffffffffff print -1 << (unsigned long long) 0xffffffffffffffff Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295) (gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print -1 << (unsigned long long) 0xffffffffffffffff print -1 >> (unsigned long long) 0xffffffffffffffff Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295) (gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print -1 >> (unsigned long long) 0xffffffffffffffff Fixed by changing number-of-bits variable to ULONGEST. --- gdb/testsuite/gdb.base/bitshift.exp | 12 ++++++++++++ gdb/valarith.c | 8 ++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gdb/testsuite/gdb.base/bitshift.exp b/gdb/testsuite/gdb.base/bitshift.exp index d6e252102d9..cab82e1971e 100644 --- a/gdb/testsuite/gdb.base/bitshift.exp +++ b/gdb/testsuite/gdb.base/bitshift.exp @@ -363,6 +363,18 @@ proc test_shifts {} { test_rshift_tl $lang \ "print -1 >> [make_uint64 $lang 0xffffffffffffffff]" " = -1" } + + # Check if shift value isn't silently truncated to 32bit. + with_test_prefix "lower-32bit-zero" { + test_lshift_tl $lang \ + "print 1 << [make_uint64 $lang 0x100000000]" " = 0" + test_rshift_tl $lang \ + "print 1 >> [make_uint64 $lang 0x100000000]" " = 0" + test_lshift_tl $lang \ + "print -1 << [make_uint64 $lang 0x100000000]" " = 0" + test_rshift_tl $lang \ + "print -1 >> [make_uint64 $lang 0x100000000]" " = -1" + } } } diff --git a/gdb/valarith.c b/gdb/valarith.c index 6160b0e4438..a95d1088133 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -1086,7 +1086,7 @@ type_length_bits (type *type) static bool check_valid_shift_count (enum exp_opcode op, type *result_type, type *shift_count_type, const gdb_mpz &shift_count, - unsigned long &nbits) + ULONGEST &nbits) { if (!shift_count_type->is_unsigned ()) { @@ -1112,7 +1112,7 @@ check_valid_shift_count (enum exp_opcode op, type *result_type, } } - nbits = shift_count.as_integer (); + nbits = shift_count.as_integer (); if (nbits >= type_length_bits (result_type)) { /* In Go, shifting by large amounts is defined. Be silent and @@ -1291,7 +1291,7 @@ scalar_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) case BINOP_LSH: { - unsigned long nbits; + ULONGEST nbits; if (!check_valid_shift_count (op, result_type, type2, v2, nbits)) v = 0; else @@ -1301,7 +1301,7 @@ scalar_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) case BINOP_RSH: { - unsigned long nbits; + ULONGEST nbits; if (!check_valid_shift_count (op, result_type, type2, v2, nbits)) { /* Pretend the too-large shift was decomposed in a -- 2.35.1