From patchwork Fri Jan 6 06:40:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 39967 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp676457wrt; Thu, 5 Jan 2023 22:41:19 -0800 (PST) X-Google-Smtp-Source: AMrXdXv+MrebkhHar1doNE2w91fS0Rpna3WGf1W78YY+WazydXzXNc3hFhH4pc3Az1REbKtYhE1a X-Received: by 2002:a05:6402:1caa:b0:46c:2c94:d30a with SMTP id cz10-20020a0564021caa00b0046c2c94d30amr43465751edb.31.1672987279470; Thu, 05 Jan 2023 22:41:19 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id hz5-20020a1709072ce500b007bc30c06aa2si437428ejc.902.2023.01.05.22.41.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jan 2023 22:41:19 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="mjGUd7R/"; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2B0093858CDB for ; Fri, 6 Jan 2023 06:41:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2B0093858CDB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1672987278; bh=aEjrWDZSldBTol9f1zfLGWTf+2l8C+HVA/GX7rfZWWw=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=mjGUd7R/oMelXfqbxTdEFCN9ltfXZLuAyGACIgdaU3CielUBmW7zrwP8X8/1vPsJn I3u02HZVvDk3f3GXFjltfmV1Me633SbN7+E7AeQ1PpzU2UAKOwwm6g3H7TL05W3RK+ BBc8BBwYIYBxVY2gb1VmECSoAevI1xOB6e+b34bo= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 7A3383858D28 for ; Fri, 6 Jan 2023 06:41:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7A3383858D28 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3061ZCnx011637 for ; Fri, 6 Jan 2023 06:41:05 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mtcyaafay-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 06 Jan 2023 06:41:05 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 3064oO96040442 for ; Fri, 6 Jan 2023 06:41:04 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2170.outbound.protection.outlook.com [104.47.73.170]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3mwxkft6yy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 06 Jan 2023 06:41:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cf9/m+7SVILqf9qFF2UMGqgAb09TnpKZL9TIIbK5MTg1WWQ8CuVvwB090nRvVbrh870kJ7b2blYmeZSSHs8u2EHOUURKHqzyft6uKNNWSVvt+oDRNHHtgl47XgGZncXmJN/gF0Sy2L+wwdaByVm97JjXl6ba7XEjH08ZryJD3Pqlmq7MQr7QJcFngZkkel/TM7QvJLKsMjzj7nuCqHK/b3JxRe37d+a5DQsrODgahLI+4JKdR2+WQsU8P8LIP4xDyoBW1FoR/1VGKkjkur3+PTUt9OGh8Nz+fw3YaH9cB+1Shg4ozJN1oafgGoZY+NzKDkG3VNKbuxLr+W6H1EMyBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aEjrWDZSldBTol9f1zfLGWTf+2l8C+HVA/GX7rfZWWw=; b=EQfHSHXpihdLd261Z1aNld32rv1na5TPHMaeW8jE53xfhes6f0PSJ0LDGs6iihQ23i9QPcXsr5zr4yvTcILKZFroxNcN6zx3uVp5e6COW6NZu97RBN5BDjlqAnYbUNbQm0bU1V7APUntBqQ0cxR4tUZcayviUuGTrJK4UgGCDps2M13ikz30sgq5J7ojLpcS6xFVT+/Hp4xOANG5Lv9Ir5gKVwIRIIqKX7CSCJuE1ZfomvN/fs04kxYRRBeqyy40JJlNd0LYWo9yqQMD4FElxkcLlY198efijEw7/uGNrITsWNqBJ/bgfEFGF4792KaTZ3a0hdKWM3wH4Xwb6o/OwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CH0PR10MB5259.namprd10.prod.outlook.com (2603:10b6:610:c2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Fri, 6 Jan 2023 06:41:02 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::ee70:1952:4416:1bdc]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::ee70:1952:4416:1bdc%5]) with mapi id 15.20.5944.019; Fri, 6 Jan 2023 06:41:01 +0000 To: binutils@sourceware.org Cc: Indu Bhagat Subject: [PATCH] sframe: fix the defined SFRAME_FRE_TYPE_*_LIMIT constants Date: Thu, 5 Jan 2023 22:40:53 -0800 Message-Id: <20230106064053.984817-1-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 X-ClientProxiedBy: MW4PR04CA0146.namprd04.prod.outlook.com (2603:10b6:303:84::31) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|CH0PR10MB5259:EE_ X-MS-Office365-Filtering-Correlation-Id: cf3ae8c6-bc19-462d-b612-08daefb0fa28 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Pk72OH2rCl5+ylcsJU/6tVG1Xb/ogtFTGThlXgIxaW9zB++4UTiNvBbAgniJs2KqPwSSf38MkLWk3wEnn/UdxwUJxQ4CMFRYmN6xvayFrQtODVMLNaYf6AYhu3R0pciqgJHHW6vxOWFCzPJjPyUQmXYOYj4zrdfJjDn3sAk8w0+4hrlVbpmgV+XYrEWFYmWx3wjvMC2kE+410/Kjy1hKRsFz5/V7p/7Fz11YM5U1XRW0alyMXA/b5i/qNHgTbcbzcn7Z2NYUuzM7bsp+qfxpOD3D8nFodthS0Ud0Ljs4Ei46ExI4WAkf7Q8iNNrh4vHqQ0vd16q6gkIdCVeR+a43q4fgREb7rZMM0s/oeNXN1aMZxHHyVYiqkXuv92cWrGlXrLg0D8GhLyhZkOx67hNfsWznac3P9t4WGm7GVHadubjQAuwd1KVAO63gAXcaawPsFVHczSTGP0lV4v5cuKj1/9LwFBv16BpOQND/nj/+B/R9eyv9d/+4htX/RYa3CK9T49GDKPxzpDBW0RHzPBWZ9xxxHX28NuTPMcZBXWlpDTHRIiYHRu7I1g9mgLO8gd4eru+B4mdPTiQcNhQ5WOU32Z0w14jH8CPVtYBD5XVLi3q+SJZ861siXo9B2yPEuhFz49MtwdSaIX0JprWT88VEIA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1001MB2158.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(136003)(39860400002)(346002)(396003)(376002)(366004)(451199015)(66556008)(66946007)(4326008)(66476007)(41300700001)(6916009)(5660300002)(44832011)(8936002)(2906002)(8676002)(316002)(6486002)(107886003)(6666004)(478600001)(6506007)(26005)(1076003)(86362001)(83380400001)(186003)(2616005)(6512007)(36756003)(38100700002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xCp0Cy2UgFHoKDAojvw8NMVCbQB1jnb41MIQAARu9XOAANztIOAdLzk0YUltMpsf7PrVZHhl0wN3lc5sdo9p4YB5dUZ3/q3Pvqy0MYNHJRh6c873HlwZXIz3xuN9DYl6PuM3KjPSoEwtI1OwTY3pAxpRLN2yBnSdzMcMEb2+FOy+8zz82nsZFF6o85dMIZUmpdowel2T4+jYkOeIX62I2i4UfTncqxNo8vn9wJk8wiOCO+rPINFgRmFhov5SSbg9fhPtgLJNl+Hz7A4Oky1bGapPf9XHpXtGuRy9iuTat+4fz1edFtMa+m6cvtUnMbEv4Jros51JD19qa5ZR1/Rj+nIdXg4ZtnmZ5sBb1f6/5NvP8AaI86myhpGhe2kJF6MeJZzh0Y9tUjYmEKs0YPhRQyVjLKtX+S/JNLgbONUSS3uZquZrJkQcGUG2UacOn1+6xwbKAEXzE3TSkaxQKP62Vwe6bakd2DihJf4zVDVg/n/mWcMtSD65FZcNNLAUHVOOGhdraFq+K9Khm42fJLxX/2MxuuPdJG3mf5Wj/0bWGnUv+shEucimglHAF+aIoAqCeRb6c8xr5qo8nyvYraHBXzfsEp196KjGfqFoIEiFzm48yTLCWSyrZB+B3DrKIzb6NkNaJW3Wm1EFgLyqHFP8AcfFBtNNKdrD9uyooqsyX4ojCIu3tLmEwRTkJ+Xfs8bfUCAVf9X31fb72h1oXOA87Mo/Iwld/+m9qd56yhDPjMhqp8DZtnB5thjNHUcPCpJDY+V9JDOduG4BbbbeTjfe467oBjD7hlEp6LQNhw/6tBTnmKceP4AzVwPuzesXls/Uv6L2KvRQEN/3OyX8ioVmma5EkD2PFTVtwecDTi2jq33QzHBkD2mstIb+kZVo/Fz/O/Jswkm5c3Klb6Ka+AuAPXj+nqxpk/zxxj/7Sw/iNBN3eGYmpm8aWDAsofciQUkKqgaTrHfzYK72b4A8Mnlz/OAACPqJxpWH8MoV/l3qj2jx95N2aoX2vrzvOq3SPEP55c9CG3OTUZEc8gVp+rJEryDm8rMXAguWdiGRHAYpRWvQoQCqyMcK/+e515XReIFK6dwkur9bP6Mt3/dM4rcJ8TFfPrDQ/SGsVPpPKz0zEd4/uWBlfg1iWMkyPV/ZlYyGTTkRfNq/MID8h6DQU2vmM90E7klHJj0DL6nGtRKMn5vWpLPInmMWDQcntIpmAl16eNn+BkqWoah/Ac/tm34uXvUMS7qoJn+DV3uQ9KuMINYKHdKDP3BXdCUJ5v8NsbUHsTyedqRB+DVQXZ0/IohxcfRDRwsRWHhFHTqBD0PjNyaYuxCPrAmH1IehI/RSZj+Pvl9snC/uE6S7DopFl864e4Sl8jxTZsElV4mhdbF7vkDyo0VIdgIHzoPvdQsdrQdsSFj7I/dMbXL1obG9lPBsRNxP1p/D1jB68RDsFVt6hHEBJW/cDuGKSR+xmnhdTRofyqxcJ5OpCaJMNFvE77i805R530ckRMKmqZXQH0f6RFM/pxhMhe4j5Dld6Yqnra/7JO1pBzNOeY44U3bTThc5Vn0I6MZ7nZ1DnAdPhwyPSiWqfkhHWbXRaLBaqrfERqXW X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: PoON7vGUL5a/5st3WaZQbU1GPpilckkPM8b9JAO5tSIXvi+0VcsS+sgFitCKM93xzIjX3TgLgLt4hHXnLWG+ekpxfwQiAt176kq9uCj3oR5OWgOX3ptYRQu03IUY6ax2Rn6MYG8rpY15B73lL802sL+1LjcayZ2bvSA15rr2BZbcX7K3xyi/4pYKA/K2HKAgsvIhyi3GhkQsQzhg3H9xgqXNgdQjJy/DfcAcPmfsz8z9+GpuFbvwzuRr0NyGWvrwuxaWhzXgYFl7YI4etH6ZWr3eZDOWzhQEOQ21IwcRpimXHN+M+HW69arQlQNyhBhMpHagMhaZjeQltdJZEPFPfB2SJ4dksU7HGhQHP6DWKlNMKO7FcTZn9BeIghzvTbOltZRph1MZSUXcnh1b7nxpozbPw0VYSD6fdAciQflTg/4EN8+3ZE6+jaM1dja+mcG40XiKm0odbLeQn2kyy/hWiSYbCl4MkpfDpctvVRmbqnAuuKNHwzYZ2DqoMAXbMrsRr1wpvT79X70dL1skIsjrJNAehVutwtew1UPdohCR4yjx0vogRo1g3qoCazIpt765kupYfea50JiY/sZneu2ezXzjhz2PlZtc1QS1REj4Cy5KNt6cllGjK+kgDOUhoEKYOQGSiSl/D+hFZi43wgvr2aaYtp/87MBVo6agF4L9AvaHnX7yHC7CAcNhv4WxHEKY4zbfDEwWhjoxmXfvnkRzZDdClJqYRFS5wQqqteZQPEgHo2IYwMryg67WRycD19zB X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf3ae8c6-bc19-462d-b612-08daefb0fa28 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2023 06:41:01.8788 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: B3GU3xZWsxBPTU89fnBs/OtGPQvRPAWPxM6cYZ5uawJNxrywEDNHCLF8feYYWnCC1WWBDdkq66ewlLjmmzRPng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB5259 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-06_02,2023-01-05_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301060051 X-Proofpoint-ORIG-GUID: ldZF-iREw8nRT_0Ay2W_nIB-0NLPk0Ip X-Proofpoint-GUID: ldZF-iREw8nRT_0Ay2W_nIB-0NLPk0Ip X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP 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: 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-Patchwork-Original-From: Indu Bhagat via Binutils From: Indu Bhagat Reply-To: Indu Bhagat Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754254309757155142?= X-GMAIL-MSGID: =?utf-8?q?1754254309757155142?= Hello, This patch fixes an issue created by a previous commit (of mine) which did not define the constant values correctly. Without this fix in this patch, the size of the SFrame section as generated by the assembler (and hence, the final linked artifact generated by the linker) will be larger than necessary. More details in the commit log below. This patch touches more than just libsframe, and will need an OK for trunk. I would like this patch to be included in trunk and binutils-2_40-branch branches. Testing notes: - Tested the size of the SFrame sections in the generated binutils programs (host: aarch64) generated using -Wa,--gsframe. The size of SFrame sections is now as expected. - Reg tested native and cross builds on x86_64 and aarch64 (checked binutils, ld, gas, libctf, libsframe). - try bot shows no new regressions. Thanks, ------------------------------ An earlier commit 3f107464 defined the SFRAME_FRE_TYPE_*_LIMIT constants. These constants are used (by gas and libsframe) to pick an SFrame FRE type based on the function size. Those constants, however, were buggy, causing the generated SFrame sections to be bloated as SFRAME_FRE_TYPE_ADDR2/SFRAME_FRE_TYPE_ADDR4 got chosen more often than necessary. gas/ * sframe-opt.c (sframe_estimate_size_before_relax): Use typecast. (sframe_convert_frag): Likewise. libsframe/ * sframe.c (sframe_calc_fre_type): Use a more appropriate type for argument. Adjust the check for SFRAME_FRE_TYPE_ADDR4_LIMIT to keep it warning-free but meaningful. include/ * sframe-api.h (sframe_calc_fre_type): Use a more appropriate type for the argument. * sframe.h (SFRAME_FRE_TYPE_ADDR1_LIMIT): Correct the constant. (SFRAME_FRE_TYPE_ADDR2_LIMIT): Likewise. (SFRAME_FRE_TYPE_ADDR4_LIMIT): Likewise. --- gas/sframe-opt.c | 12 ++++++------ include/sframe-api.h | 2 +- include/sframe.h | 9 ++++++--- libsframe/sframe.c | 6 ++++-- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/gas/sframe-opt.c b/gas/sframe-opt.c index 01138f28deb..ec0509f8977 100644 --- a/gas/sframe-opt.c +++ b/gas/sframe-opt.c @@ -53,9 +53,9 @@ sframe_estimate_size_before_relax (fragS *frag) widthS = exp->X_op_symbol; width = resolve_symbol_value (widthS); - if (width < SFRAME_FRE_TYPE_ADDR1_LIMIT) + if (width < (offsetT) SFRAME_FRE_TYPE_ADDR1_LIMIT) ret = 1; - else if (width < SFRAME_FRE_TYPE_ADDR2_LIMIT) + else if (width < (offsetT) SFRAME_FRE_TYPE_ADDR2_LIMIT) ret = 2; else ret = 4; @@ -123,9 +123,9 @@ sframe_convert_frag (fragS *frag) /* Calculate the applicable fre_type. */ fsizeS = exp->X_op_symbol; fsize = resolve_symbol_value (fsizeS); - if (fsize < SFRAME_FRE_TYPE_ADDR1_LIMIT) + if (fsize < (offsetT) SFRAME_FRE_TYPE_ADDR1_LIMIT) fre_type = SFRAME_FRE_TYPE_ADDR1; - else if (fsize < SFRAME_FRE_TYPE_ADDR2_LIMIT) + else if (fsize < (offsetT) SFRAME_FRE_TYPE_ADDR2_LIMIT) fre_type = SFRAME_FRE_TYPE_ADDR2; else fre_type = SFRAME_FRE_TYPE_ADDR4; @@ -150,11 +150,11 @@ sframe_convert_frag (fragS *frag) switch (frag->fr_subtype & 7) { case 1: - gas_assert (fsize < SFRAME_FRE_TYPE_ADDR1_LIMIT); + gas_assert (fsize < (offsetT) SFRAME_FRE_TYPE_ADDR1_LIMIT); frag->fr_literal[frag->fr_fix] = diff; break; case 2: - gas_assert (fsize < SFRAME_FRE_TYPE_ADDR2_LIMIT); + gas_assert (fsize < (offsetT) SFRAME_FRE_TYPE_ADDR2_LIMIT); md_number_to_chars (frag->fr_literal + frag->fr_fix, diff, 2); break; case 4: diff --git a/include/sframe-api.h b/include/sframe-api.h index cdffc25d2cd..405e30c27e8 100644 --- a/include/sframe-api.h +++ b/include/sframe-api.h @@ -96,7 +96,7 @@ sframe_fde_create_func_info (unsigned int fre_type, unsigned int fde_type); /* Gather the FRE type given the function size. */ extern unsigned int -sframe_calc_fre_type (unsigned int func_size); +sframe_calc_fre_type (size_t func_size); /* The SFrame Decoder. */ diff --git a/include/sframe.h b/include/sframe.h index 7e7840b605c..58ef07dcc21 100644 --- a/include/sframe.h +++ b/include/sframe.h @@ -304,7 +304,8 @@ typedef struct sframe_frame_row_entry_addr1 /* Upper limit of start address in sframe_frame_row_entry_addr1 is 0x100 (not inclusive). */ -#define SFRAME_FRE_TYPE_ADDR1_LIMIT ((SFRAME_FRE_TYPE_ADDR1 + 1) * 8) +#define SFRAME_FRE_TYPE_ADDR1_LIMIT \ + (1ULL << ((SFRAME_FRE_TYPE_ADDR1 + 1) * 8)) /* Used when SFRAME_FRE_TYPE_ADDR2 is specified as FRE type. */ typedef struct sframe_frame_row_entry_addr2 @@ -317,7 +318,8 @@ typedef struct sframe_frame_row_entry_addr2 /* Upper limit of start address in sframe_frame_row_entry_addr2 is 0x10000 (not inclusive). */ -#define SFRAME_FRE_TYPE_ADDR2_LIMIT ((SFRAME_FRE_TYPE_ADDR2 * 2) * 8) +#define SFRAME_FRE_TYPE_ADDR2_LIMIT \ + (1ULL << ((SFRAME_FRE_TYPE_ADDR2 * 2) * 8)) /* Used when SFRAME_FRE_TYPE_ADDR4 is specified as FRE type. */ typedef struct sframe_frame_row_entry_addr4 @@ -330,7 +332,8 @@ typedef struct sframe_frame_row_entry_addr4 /* Upper limit of start address in sframe_frame_row_entry_addr2 is 0x100000000 (not inclusive). */ -#define SFRAME_FRE_TYPE_ADDR4_LIMIT ((SFRAME_FRE_TYPE_ADDR4 * 2) * 8) +#define SFRAME_FRE_TYPE_ADDR4_LIMIT \ + (1ULL << ((SFRAME_FRE_TYPE_ADDR4 * 2) * 8)) #ifdef __cplusplus } diff --git a/libsframe/sframe.c b/libsframe/sframe.c index 4aada1a25e0..6c778244c48 100644 --- a/libsframe/sframe.c +++ b/libsframe/sframe.c @@ -580,14 +580,16 @@ sframe_fde_create_func_info (unsigned int fre_type, /* FIXME API for linker. Revisit if its better placed somewhere else? */ unsigned int -sframe_calc_fre_type (unsigned int func_size) +sframe_calc_fre_type (size_t func_size) { unsigned int fre_type = 0; if (func_size < SFRAME_FRE_TYPE_ADDR1_LIMIT) fre_type = SFRAME_FRE_TYPE_ADDR1; else if (func_size < SFRAME_FRE_TYPE_ADDR2_LIMIT) fre_type = SFRAME_FRE_TYPE_ADDR2; - else if (func_size < SFRAME_FRE_TYPE_ADDR4_LIMIT) + /* Adjust the check a bit so that it remains warning-free but meaningful + on 32-bit systems. */ + else if (func_size <= (size_t) (SFRAME_FRE_TYPE_ADDR4_LIMIT - 1)) fre_type = SFRAME_FRE_TYPE_ADDR4; return fre_type; }