From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by sourceware.org (Postfix) with ESMTPS id 95B84395187A for ; Mon, 31 Aug 2020 10:53:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 95B84395187A Received: by mail-pj1-x1031.google.com with SMTP id mw10so2763208pjb.2 for ; Mon, 31 Aug 2020 03:53:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=FYQs7nQmQi7jubrCKvsF7ENVt6Oyt+UnFSOz9pZel6Q=; b=HgaEJX7EgM3CU/D0GV1H+YH+sZ91VcSQ58LS9f6w6/5otxYn7hlaEYFqv3ZsVmpaOr +fsEPHzwxYom4dSVns3HPLDfJUtpte8Axbij3CNA7N9E3VkXMWZ64ZUwmLqmRLVMXW7e j6XOMVnMFiSAeLjRSxczOfejxGrqoWTo+z3eqpHc77w9ATg/fNWr4WvWRJsoEUUemrDo Cy0iR2u6ohLEVBo6oehPERBrVM7mtCLANHz5kzp88muCGM23g61dM05G93seq75beyU0 XrmpNLoHF5B4l3hhBE9pAigGRSGQfG822tOUTkiS5D2HBhCCtibmnDiZYIhdbo2E5LhW rNsw== X-Gm-Message-State: AOAM533Uujei6I6bsTaiCVdsQcrOGr5vZEKiR8X1Y3Tzo1IBu5IwLF4u T/KlRJMNQ/p16uiA+Wfx0WfZZF1fiHlI6g== X-Google-Smtp-Source: ABdhPJxHe5wHwK82MI6+C+jHhXx3/RMJbEggVsPvk5wqTqxsk+PNkouVYNXYHwG6MAHh5MRzU5vvjA== X-Received: by 2002:a17:90a:ac07:: with SMTP id o7mr893471pjq.194.1598871230538; Mon, 31 Aug 2020 03:53:50 -0700 (PDT) Received: from bubble.grove.modra.org ([2406:3400:51d:8cc0:c543:706:99a3:1068]) by smtp.gmail.com with ESMTPSA id 25sm7471180pfj.73.2020.08.31.03.53.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 03:53:49 -0700 (PDT) From: Alan Modra To: binutils@sourceware.org Subject: PR26472, PR26473, PR26474 UBSAN: tc-mips.c shift left UB Date: Mon, 31 Aug 2020 20:20:34 +0930 Message-Id: <20200831105041.29238-15-amodra@gmail.com> X-Mailer: git-send-email 2.17.1 X-Spam-Status: No, score=-10.4 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, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Aug 2020 10:53:52 -0000 PR 26472 PR 26473 PR 26474 * config/tc-mips.c (operand_reg_mask): Shift 1u left. (load_register): Shift 0xffffU left. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 00e9eceef1..7d0d5a1991 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -4656,7 +4656,7 @@ operand_reg_mask (const struct mips_cl_insn *insn, if (!(type_mask & (1 << reg_op->reg_type))) return 0; uval = insn_extract_operand (insn, operand); - return 1 << mips_decode_reg_operand (reg_op, uval); + return 1u << mips_decode_reg_operand (reg_op, uval); } case OP_REG_PAIR: @@ -4667,28 +4667,28 @@ operand_reg_mask (const struct mips_cl_insn *insn, if (!(type_mask & (1 << pair_op->reg_type))) return 0; uval = insn_extract_operand (insn, operand); - return (1 << pair_op->reg1_map[uval]) | (1 << pair_op->reg2_map[uval]); + return (1u << pair_op->reg1_map[uval]) | (1u << pair_op->reg2_map[uval]); } case OP_CLO_CLZ_DEST: if (!(type_mask & (1 << OP_REG_GP))) return 0; uval = insn_extract_operand (insn, operand); - return (1 << (uval & 31)) | (1 << (uval >> 5)); + return (1u << (uval & 31)) | (1u << (uval >> 5)); case OP_SAME_RS_RT: if (!(type_mask & (1 << OP_REG_GP))) return 0; uval = insn_extract_operand (insn, operand); gas_assert ((uval & 31) == (uval >> 5)); - return 1 << (uval & 31); + return 1u << (uval & 31); case OP_CHECK_PREV: case OP_NON_ZERO_REG: if (!(type_mask & (1 << OP_REG_GP))) return 0; uval = insn_extract_operand (insn, operand); - return 1 << (uval & 31); + return 1u << (uval & 31); case OP_LWM_SWM_LIST: abort (); @@ -4703,12 +4703,12 @@ operand_reg_mask (const struct mips_cl_insn *insn, vsel = uval >> 5; if ((vsel & 0x18) == 0x18) return 0; - return 1 << (uval & 31); + return 1u << (uval & 31); case OP_REG_INDEX: if (!(type_mask & (1 << OP_REG_GP))) return 0; - return 1 << insn_extract_operand (insn, operand); + return 1u << insn_extract_operand (insn, operand); } abort (); } @@ -9564,11 +9564,11 @@ load_register (int reg, expressionS *ep, int dbl) if (shift < 32) { himask = 0xffff >> (32 - shift); - lomask = (0xffff << shift) & 0xffffffff; + lomask = (0xffffU << shift) & 0xffffffff; } else { - himask = 0xffff << (shift - 32); + himask = 0xffffU << (shift - 32); lomask = 0; } if ((hi32.X_add_number & ~(offsetT) himask) == 0