From patchwork Fri May 26 07:01:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 99316 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp275898vqr; Fri, 26 May 2023 00:02:52 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6PUGz5/TnyalN7qyYmp0e6FVKqrbo7hUHMLnSxhiMMEHeN3/ozbI5Edz2UxFIJYvUt/ekO X-Received: by 2002:a17:907:9488:b0:966:4d99:b0aa with SMTP id dm8-20020a170907948800b009664d99b0aamr1110890ejc.59.1685084571945; Fri, 26 May 2023 00:02:51 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id vz5-20020a17090704c500b0096f8e319c3fsi2080155ejb.946.2023.05.26.00.02.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 May 2023 00:02:51 -0700 (PDT) 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=woqMsV+q; 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 BAFBF3856944 for ; Fri, 26 May 2023 07:02:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BAFBF3856944 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1685084531; bh=Y2TbKJppn3wRpfq4tFZ2G+dfiKqAM55UWuAu62vN3Jc=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=woqMsV+qy5+mPpPzR3ln7alvAEU566VcJhLdwPe0sp/CRlGmWQQ+U9e0o8Ab1oiEU 1o9n7Jk5MwmBvUGbCfAWOh4llwv7qcWiV3mg2SA3lStjGBmGH/FTXVdBGZPlcnHorG CKyPgT2EtrttfS2EbrDn0xntYwtwdSyjEl1o9oxA= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id AB6B53856DC8 for ; Fri, 26 May 2023 07:01:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AB6B53856DC8 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34Q6iplM010891 for ; Fri, 26 May 2023 07:01:49 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3qtqrw01a9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 26 May 2023 07:01:49 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 34Q6FKoH015873 for ; Fri, 26 May 2023 07:01:48 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2103.outbound.protection.outlook.com [104.47.70.103]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3qqk6p5h53-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 26 May 2023 07:01:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XLlDN3ddu9UGJx+Iw+CqtwR74VeLi8Vpi7AHFqOprstA5wcYorPSEsiHD93jvB32CXLyjlxIsSCADEdfvdEqOu0iAsSmPxVQCET4AqrvT2YgRWl1pPunGyFdyEO0h/Umifkt6lbzCjjdn0lRhuK1hiBEbPlcf8mtAEelbM55hzzGN3+zjeiUR5Bc+msCQboygE1oj65ay+kKa9yzKt6SzN49GwPoEZvIrRVCRlPyKbcdP27QkhNHq3n/Z5jI6YpyrhJw/NRzbbDxN8xFvFo1hF5e/fKs3dYvf40xTmPU2ND7NWXIzlUANm5lMidIasWUMtIyL83bHo93453hBzAmRQ== 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=Y2TbKJppn3wRpfq4tFZ2G+dfiKqAM55UWuAu62vN3Jc=; b=mgnS7wlf6n+gVs3iOQOFom6cYqBBUnJJZWrqfRaZtRmiaYHijSuJ/V2D0CE4cuFo0K8hTcq0GYJ/tGLpOEhL0Lry/g7DNi+VLjVrcTJs3JGB+g8I6C4kSgrLZBExleIjEpPsjNRdCbEJuKW04XSaR8bgaH4X9DFM52SkzfacpZ0z3MRVLLxoWoV9LfX01lSLULWd3g6RrTux8naYYGac0qOX2XAE2PGPr2efwjPikJ4hBLVDk2IoO36Qteql9Fa1Ux9CBjr3S43ywLhl4yfPw7UW+VI9t5kdq2ftujbalgmuExJXTsKvuDg3f+fUi1SQXBQY6SRCMz0CqU4i6j/VaQ== 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 PH7PR10MB5879.namprd10.prod.outlook.com (2603:10b6:510:130::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.17; Fri, 26 May 2023 07:01:46 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fdbb:b921:1ef:2d44]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fdbb:b921:1ef:2d44%4]) with mapi id 15.20.6411.025; Fri, 26 May 2023 07:01:46 +0000 To: binutils@sourceware.org Cc: Indu Bhagat Subject: [COMMITTED] libsframe: revisit sframe_find_fre API Date: Fri, 26 May 2023 00:01:31 -0700 Message-Id: <20230526070132.4185600-3-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230526070132.4185600-1-indu.bhagat@oracle.com> References: <20230526070132.4185600-1-indu.bhagat@oracle.com> X-ClientProxiedBy: BYAPR05CA0011.namprd05.prod.outlook.com (2603:10b6:a03:c0::24) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|PH7PR10MB5879:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ec1a360-280d-4ff0-5408-08db5db711b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OsVuLDMS6lfFbKJNIKVENsgqeP5NKiJ+NXPyO6GNx+eMc5gZg9RQjEXt3Irr0QuBnxtJ1Vqt/+2lKcLJ+IqiXy6oddsApU/2vgr8mYOk7E0PAJc5s42Sfc/SwuVvlWeiKaSIbW3bcYoy9J8EJqFJFSnMVn2EcCiSoEqC1WxI80M+wGzDtXt1HZPINZXvpIbvfH85lIxbVTI9BncT/HgNQdH7NYTQdEPXqxEe5NQTYQGNkShjon1398bv82r17WByD1n+jTLj3OEuoDib7iAUQcDhXceW3Jl/3x1rUnqSKyfZjx0ZY8q8x0ORy80/aiHUo46dDca9KuDo+q4eODeYc1ZyIx07t2dT1sLZUd9kihkDc6ItqSta9nQbnLCecMtyQxZF7ac4y4caABOyD+oeA4Oyr3Lg4XKGrW79Oivek1UnGfDhEkloBJ/uQ+fXknNxMSjFogQH8ohKrG9P20rT0OSK0tG32gu1JE1NUIOkS3RKyWAkL45/PYY6ZJwJPpC6Y9zK7diQQkhkyl0NjNb2VFa+Mz2TbasHKSJo5eeXVBwhPPQ2Okq/13EMUy55eA2N 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:(13230028)(376002)(136003)(396003)(39860400002)(366004)(346002)(451199021)(4326008)(316002)(41300700001)(86362001)(6486002)(36756003)(66476007)(5660300002)(8676002)(66946007)(6916009)(66556008)(8936002)(6666004)(44832011)(2906002)(478600001)(186003)(2616005)(38100700002)(83380400001)(107886003)(26005)(6506007)(6512007)(1076003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FXa7sV5i+uNFoHA4QsTKgrr+JfhUa2B1YukiFjWjpQMrGmGW70mdxvCxupSi7tm6tKZul5aHc5juS+BCnl6czckPUW2RXCKs8Ai2Urjq3GsqZpBh09TpXJ5y+XRqWKIjI7OyBNF0dJXN2Ci795EHvMxkRvnjITru5T9DZR6Sj63SyUjO0vi0G5oIwEPSSauB19+XQuTYGQMQh0KzS18bS9GmjEFr4N7JoPtI0h3dZl+/bCig8DTrvkmByoE7Pm8TL8IVr9Dqd5aGwfrXwoRrWlmxvnaAZAhtO3W9wv40Jau+1MJ6kDf5e8408Sf6VOyqhNqZutQT+LOE/hKD0gfeXoiIUvPOYDxbQmYUi+4Q8Ry7BXIQ9P/Fcubme9SuB+jbdb17TZzRxzjspGFd5JMGmdVloJKSqMeDEfcPu8r5ZzOCr73MbrfIPhs50Ik2nQhEaetp8DSRIEytGnrWfY+izaSh0caubjaY8n36IF3OgK1/q6yYCLlEGdUqUOBhvII/stIEye9TIZD7OdPs+C9dR6AglVS+KTSiz5JOkCdJx9HITzA/+F8riq1Hqll8zynTCmOyBxXpChwbt5o4/Xa4FdYabLliFTe1oG/fYqhymE9eRGOcOKvTP6eVjKsgkSWOwphWTfvP2RcCnH0nUN9MWMyMLKDjruaWy5hBud9+B7uV55N03QL+pSM6PckWdH9/koS0XnCS7sn0AoC9mKZGWEyqWRsuYSg3v2eXeI805y/c2oeNuAf9EHnk21kNDKPplrzNrjm7WrEKEadLeiSO8hmqx4YfKq2ayMlDLMOfuQkL11bozYYUJe1n1I4N8ZOhU1AmakJ5aUjf+rnPrVZ5W/Pz80knAMQqbvwg+RbmRXLPNm8OMTBrnfw7qLzzCPWmWVuFSaNB9ENvhP+WvAI04ccBhsWWhYd/QSM/uXGZrhAPvDzIfcYAFy9Yeo/cY3Ex26SxcTjPgOu7kkxFDK0n8CMwvnzfEJEjhYbJnz8ifhHJn8tRjHXb3otW/r4Ck16IthaQdVaCpJdY/XKsmjeCkmmd0+8l9Ayr4UKBdgRBLGMAUSwMUo7Q0L3dpxDv1agPWD46WdPVghZOxpTRSYseeWPn056NmM+cGiU+emxTd3E0BF1rQ9vYJgb/2Q5qALsJmweZwdb3/AxGVL6LemGZkVYwM2vXA1fhSKpGerZQR4c0UTLqGuzlvQOZ1MzTfgCj2POwR84kIXe/q/S86NvoxVOKZRiLZX1ZE8n4VZiGUMtBNefjfYG86fs21k9lmcmpynhiF5N4OioRk2xR9JyaeDKUcPOknO4oHHfb0v6JAoPPSlkc8Wq+yTbgkYYKFjagtLig/aVhIo8dIO7mZ7ZovSu0mHZnJaO8RbEYJIJOfg+0M6xomuqwG2uyMLYJUbbQNST4Hok2wexmSSedt0xLLnA1SPWK8FSWMsEjttMYBomzCb9N2ZMDleCjUepHOzd418NM3pysfamOaArgQw0f6t+hBVDgNa334021mVz3PG/H3pUmbZveisXYom2uGSSriE/43rL8PggXKumcMoeXu5mYv9VlsMLs+BWYTPllSZstb9KGafiKGRuuyRIfgM9Q X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bM8f+OrKTjWmwJ2MDh5kTNKARhsBhM2qS5U4XlDudqvI5iUUKsxTHKja5Js7dT9AIFeEQtNTnhiaFg7PcSKDCHGN4ojllIG0Law0VnQK5EkqOD3PW7XrZ35G8Bz6dwSWyZrlpcn3RRKUv45g7TZPpg+nCOQwWd5Y+Dlkz6NusGKBastLhHs2B/l46/x2aFRvfnMxIuolR/yiSEak9GLsjUs/gJMCTq3bcOPqvg0I9Lo3td6vXBRcCorAaY0ie7rNWBRmOgWoycxTHryvr7hB2ahqnBZnfji5TOOBIP4e0K9381uMLRIQwnraTwfdribc7fc1YexUn9HPAC//zfUXazCwmsynphDEhHgDQX4cgSDv01GQh3zwEgicjbBLgn5kPlPkA9wUmtdyU2eLbqmIkbC5icH+MUKP6gWvWajMBHEjRI8z/kBrawdrozSJjuIRrMV2WlPb1bkRkmLWWFK+EW8DKh2HVf/hVRaGfFIUKZcDb+0IOTsS6mUvOnbDo2e8fc3r2sBPmXf4nt8+3UXEdfIDLjFnHaAhceNS0/m9Woets/qc4LfY6y2A0LbgIOcDQpn4LZT+32FfAzWicKSdKEIDZG+NniiMUcXDIIa5nVsNntKNiBkc41d4eDg6bX4dMPlHeChDuQ4ccxlWKEAMnDTOriVxOfG37d2SR7awXG+r13Pp57G8OrLWWX6nevjK9/TWqBjsV9l5gErp16c/poAeKBHzgxFAIHcgczIjIbo1y4Q8AEVOCPPfZEz+oHoh X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ec1a360-280d-4ff0-5408-08db5db711b1 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2023 07:01:46.2140 (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: X79c268CPNv9iVDP0dpKBjn0E7Hte/Zuv7R4tbyDY6A8W+H52Seyvmis4TPAjXNmMeEkHV4kyH4U/lfhCyiYAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5879 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.176.26 definitions=2023-05-26_01,2023-05-25_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 malwarescore=0 bulkscore=0 mlxlogscore=974 mlxscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2304280000 definitions=main-2305260058 X-Proofpoint-GUID: Yp_7aZ5fqZmkkwe9xvBnBNr7jWw5cv-O X-Proofpoint-ORIG-GUID: Yp_7aZ5fqZmkkwe9xvBnBNr7jWw5cv-O 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_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, 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: 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?1766939239934229401?= X-GMAIL-MSGID: =?utf-8?q?1766939239934229401?= Inspite of implementing a rather simple functionality, this function was relatively difficult to follow, and maintain. Some changes are done now to address that - refactor the function and use better names to make it more readable. The changes to the implementation do not cause any change in the contract of the API. libsframe/ * sframe.c (sframe_fre_get_end_ip_offset): to here... (sframe_find_fre): Refactor some bits from... --- libsframe/sframe.c | 83 +++++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/libsframe/sframe.c b/libsframe/sframe.c index 72b221349ad..dadce2c1262 100644 --- a/libsframe/sframe.c +++ b/libsframe/sframe.c @@ -980,6 +980,32 @@ sframe_get_funcdesc_with_addr (sframe_decoder_ctx *ctx, return sframe_ret_set_errno (errp, SFRAME_ERR_FDE_NOTFOUND); } +/* Get the end IP offset for the FRE at index i in the FDEP. The buffer FRES + is the starting location for the FRE. */ + +static uint32_t +sframe_fre_get_end_ip_offset (sframe_func_desc_entry *fdep, unsigned int i, + const char *fres) +{ + uint32_t end_ip_offset; + uint32_t fre_type; + + fre_type = sframe_get_fre_type (fdep); + + /* Get the start address of the next FRE in sequence. */ + if (i < fdep->sfde_func_num_fres - 1) + { + sframe_decode_fre_start_address (fres, &end_ip_offset, fre_type); + end_ip_offset -= 1; + } + else + /* The end IP offset for the FRE needs to be deduced from the function + size. */ + end_ip_offset = fdep->sfde_func_size - 1; + + return end_ip_offset; +} + /* Find the SFrame Row Entry which contains the PC. Returns SFRAME_ERR if failure. */ @@ -987,14 +1013,15 @@ int sframe_find_fre (sframe_decoder_ctx *ctx, int32_t pc, sframe_frame_row_entry *frep) { + sframe_frame_row_entry cur_fre; sframe_func_desc_entry *fdep; - uint32_t start_address, i; - sframe_frame_row_entry cur_fre, next_fre; - const char *fres; unsigned int fre_type, fde_type; - size_t esz; - int err = 0; + uint32_t end_ip_offset, i; + int32_t start_ip, end_ip; + int32_t func_start_addr; + const char *fres; size_t size = 0; + int err = 0; /* For regular FDEs (i.e. fde_type SFRAME_FDE_TYPE_PCINC), where the start address in the FRE is an offset from start pc, use a bitmask with all bits set so that none of the address bits are @@ -1022,40 +1049,28 @@ sframe_find_fre (sframe_decoder_ctx *ctx, int32_t pc, bitmask = 0xff; fres = ctx->sfd_fres + fdep->sfde_func_start_fre_off; + func_start_addr = fdep->sfde_func_start_address; + for (i = 0; i < fdep->sfde_func_num_fres; i++) { - err = sframe_decode_fre (fres, &next_fre, fre_type, &esz); - start_address = next_fre.fre_start_addr; + err = sframe_decode_fre (fres, &cur_fre, fre_type, &size); + if (err) + return sframe_set_errno (&err, SFRAME_ERR_FRE_INVAL); - if (((fdep->sfde_func_start_address - + (int32_t) start_address) & bitmask) <= (pc & bitmask)) + start_ip = func_start_addr + cur_fre.fre_start_addr; + end_ip_offset = sframe_fre_get_end_ip_offset (fdep, i, fres + size); + end_ip = func_start_addr + end_ip_offset; + + if ((start_ip & bitmask) > (pc & bitmask)) + return sframe_set_errno (&err, SFRAME_ERR_FRE_INVAL); + + if (((start_ip & bitmask) <= (pc & bitmask)) + && (end_ip & bitmask) >= (pc & bitmask)) { - sframe_frame_row_entry_copy (&cur_fre, &next_fre); - - /* Get the next FRE in sequence. */ - if (i < fdep->sfde_func_num_fres - 1) - { - sp += esz; - err = sframe_decode_fre (fres, &next_fre, fre_type, &esz); - - /* Sanity check the next FRE. */ - if (!sframe_fre_sanity_check_p (&next_fre)) - return sframe_set_errno (&err, SFRAME_ERR_FRE_INVAL); - - size = next_fre.fre_start_addr; - } - else size = fdep->sfde_func_size; - - /* If the cur FRE is the one that contains the PC, return it. */ - if (((fdep->sfde_func_start_address - + (int32_t)size) & bitmask) > (pc & bitmask)) - { - sframe_frame_row_entry_copy (frep, &cur_fre); - return 0; - } + sframe_frame_row_entry_copy (frep, &cur_fre); + return 0; } - else - return sframe_set_errno (&err, SFRAME_ERR_FRE_INVAL); + fres += size; } return sframe_set_errno (&err, SFRAME_ERR_FDE_INVAL); }