From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=aEjrWDZSldBTol9f1zfLGWTf+2l8C+HVA/GX7rfZWWw=; b=FFD5UsViBh2WTTWTY+z9uQvltSd8abBcWGhSh5BqsUPveKHRb7IVOmJnEMPaVnXWDV6+ yzw7eNdCwpTnNhnD0h4Cb3j+32h/HHIwCqz0e+iHweaLZmotlhPndhpqRNshhRJTDJb7 B4mspWtPi2sAj31h6oear6Q/yFsNnBdmMbr1HBjx4unHfSxu+qlNBJGLlWTgmBRNwyV7 Sv/Edxb5hWZcU6zMlmK0qxXQ2KvfjERj2mm4RvN3TrwUuGS/rt/ujcU8tk9Kv0hlX0Qa +f6LDOe5jGrdLcZevYyLLMXsW6TUqefD8mv0odUReztPyHnb6rMOWLUH3k6pgclN3ToO wQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aEjrWDZSldBTol9f1zfLGWTf+2l8C+HVA/GX7rfZWWw=; b=bLuo7qFCnqXq+Op2/O5YmPsEfb+OloNcXJP4QCYZEUP6KvpIj+cxgJFsuMDfByZ1i74YiAo971OJIqDwzohnyXJ8h+44O24WRZogFeaf0pGwbQRMkWo/A8CJjqPYTDS7gz7xk6RErIW1mC9zDopRTxUY9YxCZQo3WWFEBRogGSc= 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 From: Indu Bhagat 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 Content-Transfer-Encoding: 8bit Content-Type: text/plain 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: =?us-ascii?Q?xCp0Cy2UgFHoKDAojvw8NMVCbQB1jnb41MIQAARu9XOAANztIOAdLzk0YUlt?= =?us-ascii?Q?Mpsf7PrVZHhl0wN3lc5sdo9p4YB5dUZ3/q3Pvqy0MYNHJRh6c873HlwZXIz3?= =?us-ascii?Q?xuN9DYl6PuM3KjPSoEwtI1OwTY3pAxpRLN2yBnSdzMcMEb2+FOy+8zz82nsZ?= =?us-ascii?Q?FF6o85dMIZUmpdowel2T4+jYkOeIX62I2i4UfTncqxNo8vn9wJk8wiOCO+rP?= =?us-ascii?Q?INFgRmFhov5SSbg9fhPtgLJNl+Hz7A4Oky1bGapPf9XHpXtGuRy9iuTat+4f?= =?us-ascii?Q?z1edFtMa+m6cvtUnMbEv4Jros51JD19qa5ZR1/Rj+nIdXg4ZtnmZ5sBb1f6/?= =?us-ascii?Q?5NvP8AaI86myhpGhe2kJF6MeJZzh0Y9tUjYmEKs0YPhRQyVjLKtX+S/JNLgb?= =?us-ascii?Q?ONUSS3uZquZrJkQcGUG2UacOn1+6xwbKAEXzE3TSkaxQKP62Vwe6bakd2Dih?= =?us-ascii?Q?Jf4zVDVg/n/mWcMtSD65FZcNNLAUHVOOGhdraFq+K9Khm42fJLxX/2MxuuPd?= =?us-ascii?Q?JG3mf5Wj/0bWGnUv+shEucimglHAF+aIoAqCeRb6c8xr5qo8nyvYraHBXzfs?= =?us-ascii?Q?Ep196KjGfqFoIEiFzm48yTLCWSyrZB+B3DrKIzb6NkNaJW3Wm1EFgLyqHFP8?= =?us-ascii?Q?AcfFBtNNKdrD9uyooqsyX4ojCIu3tLmEwRTkJ+Xfs8bfUCAVf9X31fb72h1o?= =?us-ascii?Q?XOA87Mo/Iwld/+m9qd56yhDPjMhqp8DZtnB5thjNHUcPCpJDY+V9JDOduG4B?= =?us-ascii?Q?bbbeTjfe467oBjD7hlEp6LQNhw/6tBTnmKceP4AzVwPuzesXls/Uv6L2KvRQ?= =?us-ascii?Q?EN/3OyX8ioVmma5EkD2PFTVtwecDTi2jq33QzHBkD2mstIb+kZVo/Fz/O/Js?= =?us-ascii?Q?wkm5c3Klb6Ka+AuAPXj+nqxpk/zxxj/7Sw/iNBN3eGYmpm8aWDAsofciQUkK?= =?us-ascii?Q?qgaTrHfzYK72b4A8Mnlz/OAACPqJxpWH8MoV/l3qj2jx95N2aoX2vrzvOq3S?= =?us-ascii?Q?PEP55c9CG3OTUZEc8gVp+rJEryDm8rMXAguWdiGRHAYpRWvQoQCqyMcK/+e5?= =?us-ascii?Q?15XReIFK6dwkur9bP6Mt3/dM4rcJ8TFfPrDQ/SGsVPpPKz0zEd4/uWBlfg1i?= =?us-ascii?Q?WMkyPV/ZlYyGTTkRfNq/MID8h6DQU2vmM90E7klHJj0DL6nGtRKMn5vWpLPI?= =?us-ascii?Q?nmMWDQcntIpmAl16eNn+BkqWoah/Ac/tm34uXvUMS7qoJn+DV3uQ9KuMINYK?= =?us-ascii?Q?HdKDP3BXdCUJ5v8NsbUHsTyedqRB+DVQXZ0/IohxcfRDRwsRWHhFHTqBD0Pj?= =?us-ascii?Q?NyaYuxCPrAmH1IehI/RSZj+Pvl9snC/uE6S7DopFl864e4Sl8jxTZsElV4mh?= =?us-ascii?Q?dbF7vkDyo0VIdgIHzoPvdQsdrQdsSFj7I/dMbXL1obG9lPBsRNxP1p/D1jB6?= =?us-ascii?Q?8RDsFVt6hHEBJW/cDuGKSR+xmnhdTRofyqxcJ5OpCaJMNFvE77i805R530ck?= =?us-ascii?Q?RMKmqZXQH0f6RFM/pxhMhe4j5Dld6Yqnra/7JO1pBzNOeY44U3bTThc5Vn0I?= =?us-ascii?Q?6MZ7nZ1DnAdPhwyPSiWqfkhHWbXRaLBaqrfERqXW?= 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 List-Id: 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; } -- 2.37.2