From patchwork Sun Jan 7 05:24:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Frysinger X-Patchwork-Id: 83476 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BBCE13858C35 for ; Sun, 7 Jan 2024 05:24:34 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) by sourceware.org (Postfix) with ESMTP id 31B163858D20 for ; Sun, 7 Jan 2024 05:24:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 31B163858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 31B163858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.211.166.183 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704605053; cv=none; b=M2K2YXlHdpdeHFOqopKJUWd/czrFUOwscpTEyMxCJ+Evsbl/64W4KApe39xX+SUSWNTMSdfEj+QuwiF2sR0Hm1tqgdtMiVu1BnVE5sqthripw3UMmc7fgfZJ6BnseZoxbjanJ3nTJ6Z+o853ARFpB4a/8+SPk9V4O0keJ1ad8LM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704605053; c=relaxed/simple; bh=erdAJ7QRTcoB+DGUq3b2yzwpzLb/nm0OIqELqNIt/xw=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=w4bMihkBN9zQwOC1uVmukYwMzL91Zd1AZgfBJ8ZXY7ajM3lpjsyf54CTvBYq9nOT8F8V3WzAoHmkzpxgLF+kDKseGCfHCef60LiEllsJmedHa+cWEKJjjJtel3OstuOewlQhCY2bvULhtOCugjQkkX9YeqqWLyg8Z6hR8x8mxoI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by smtp.gentoo.org (Postfix, from userid 559) id BC1D7343233; Sun, 7 Jan 2024 05:24:11 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH] sim: bfin: avoid left shifting negative values Date: Sun, 7 Jan 2024 00:24:09 -0500 Message-ID: <20240107052409.28931-1-vapier@gentoo.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org We just want to create a bitmask here, so cast the mask to unsigned to avoid left shifting a negative value which is undefined behavior. --- sim/bfin/bfin-sim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sim/bfin/bfin-sim.c b/sim/bfin/bfin-sim.c index 1a9b499ebb4c..2e7a5632fffe 100644 --- a/sim/bfin/bfin-sim.c +++ b/sim/bfin/bfin-sim.c @@ -786,7 +786,7 @@ lshift (SIM_CPU *cpu, bu64 val, int cnt, int size, bool saturate, bool overflow) However, it's a little more complex than looking at sign bits, we need to see if we are shifting the sign information away... */ if (((val << cnt) >> size) == 0 - || (((val << cnt) >> size) == ~(~0 << cnt) + || (((val << cnt) >> size) == ~((bu32)~0 << cnt) && ((new_val >> (size - 1)) & 0x1))) v_i = 0; else @@ -5880,7 +5880,7 @@ decode_dsp32shiftimm_0 (SIM_CPU *cpu, bu16 iw0, bu16 iw1) bu16 inshift = in << shift; if (((inshift & ~0xFFFF) - && ((inshift & ~0xFFFF) >> 16) != ~(~0 << shift)) + && ((inshift & ~0xFFFF) >> 16) != ~((bu32)~0 << shift)) || (inshift & 0x8000) != (in & 0x8000)) { if (in & 0x8000)