From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id DFD7A388FB65 for ; Wed, 7 Dec 2022 19:52:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DFD7A388FB65 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 (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B7GDnUs010606 for ; Wed, 7 Dec 2022 19:52:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=CpKt0hL+R8B0WkeaO71z2ljN4wkt69Z7CrE1wZSAdGc=; b=TF924NcEKDih5hZe8nrQh/AxUZ1XaExLyInHthljkrezI9Lgo73bCTWAdNdkxc6rbHuB pZre/g1nbVurSyyQuE3qNN/5eRWUq9XQ8QxQAFViidFpHOz+q/bOIZTn3rYCkEazghgv J2oKGft/nFV3YhAWfG+Oy3U0aJzg149fHo8kZGUqV7RC5e23zOSAVvIol9WPdBlKFnfv LfB4O97A7mMTUFRmT6yKP5d0aV/fMg1cOaHF0SJCBt74JM5zUjloF9VjONYibwheEOpe pGBj6phYc+u4S3GqvytGg+dvyf3lo4sx4Z19oVxSS/jXlJ3GogIqzBZaNJ+Trl1v3u+t Bg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mauf8h7jf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 07 Dec 2022 19:52:41 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2B7J8YT4017074 for ; Wed, 7 Dec 2022 19:52:40 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2104.outbound.protection.outlook.com [104.47.58.104]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3maa5ycnht-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 07 Dec 2022 19:52:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EU+8zXUjIS5UJQx9f3DrlxjX+EyD2rVw1ai90HUznXvOJmf/qvpQe7EOSZMGjvLjS1UwBr5KNJW0eNaHRb389os9G/54Kin82dzzFp9UyhwqIqKvg8aWrRWntTnMj/SpyDY1TgqJjlq+Giir9qO6prbWM5sPE5VHMkdCYF4aCBKCgRcF4F9WrLVXnU8GCCEc4t65P5WOE3Y5ZUuI/u5seJcAhUK2GDqqqxbPqBYpihYSe18sntPbC1Ww7OcuBovUu2USVy3YmGfo0P5TenTr6o/w5+a3COEGyTVL6TQ97sPxwmRSg2o8y3SUBuB9yJaOpqDXpKr3XL6jQ3Gg68CwZA== 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=CpKt0hL+R8B0WkeaO71z2ljN4wkt69Z7CrE1wZSAdGc=; b=hsDG12OJHxixGsD7xBR6p1+XPALpSA97zGXsU5kwUGjlTsCO9ni7VYdwx9s4Rm/GjY6wopQmfi62hSlZesFcYtQdRZMCVvMxIy4KeUUkIoOIGK8EVkh0SwA7hrb5YDfQEpZFUK46KXDIm3ZrfsjMwdQfaFoiV7nTA6CsZ2j2sZS3gco+kC2YMLtetfHvMlVP4TzMx6bXPzxExd/h+20FtUFMzmQ3VvMaAheBPMad2NCMBKta4lOIARAKfdmhYHfcScKz0nDZiM9fgJPkxZj4Z4ptoeK8yBAPKHIVl29XVxZGRIGrmXo8YELBsDFyt+2dDGvNCw8mD+eZAyT0J3L5fw== 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=CpKt0hL+R8B0WkeaO71z2ljN4wkt69Z7CrE1wZSAdGc=; b=NT1NfsCFDTiNkex4cP15HaoSH7t7XJ0/QkEYoTEy8XvQBH17ErN3h7i+S4MD04a4a/ezANmNQtW499G+CWOoCabjKgSitvLj9B1uEZ07t65CpoULetelz6j8m2k3VxrcMMN7Rn6J4V6M0B2/quUbTkk/gITzKdkQ3GOu425BzyY= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by BN0PR10MB5125.namprd10.prod.outlook.com (2603:10b6:408:12e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Wed, 7 Dec 2022 19:52:38 +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.5880.014; Wed, 7 Dec 2022 19:52:38 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: weimin.pan@oracle.com, Indu Bhagat Subject: [PATCH 4/6] gas: sframe: fine tune the fragment fixup for SFrame func info Date: Wed, 7 Dec 2022 11:52:20 -0800 Message-Id: <20221207195222.1182788-5-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221207195222.1182788-1-indu.bhagat@oracle.com> References: <20221207195222.1182788-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW4PR04CA0163.namprd04.prod.outlook.com (2603:10b6:303:85::18) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|BN0PR10MB5125:EE_ X-MS-Office365-Filtering-Correlation-Id: 34bfb813-21e0-4258-9a99-08dad88c97e7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: faqpTQ2CJOW6waZV1ULoY9wWFvLNx4e1uPc3tYh3o7EToUCbrMymdV2BlcbnEqJE50jd6Kd6tr+mADzXuCqHjtypFQ0Lt/zbTrmJxlplRTu3iTSwOlqKHtG4rMIud3enLU6Rh3VTZ3jh6W4MSqGpiG2jQt0jCPiFBkDBTjUePecE+xqJHmmlCEaTaS8D4NpMoFN9bzq3FSJ1ngXKlX9ljVKddJoS3hKhJc8zZAzalhKSn0BNDqYBvr9rUg3BHRsQLFjM10O4Oh8GGhB+YoNggdWkFULvhXHQElY5KWWnQQya9dTrG32OYY0c6WRZ1ps0eVuqbBN7/MWBzowiseWQJ6dHNs7GI4k23ZCL5NfPh8+8fd7gZAvCLMBgkLB9BEEpUzTk6H/CvjOVQ41fGJqVzRAzOZhiOYlXntxk4dYqq4upN8F2W2ixKV6HNRUTmuGEDko3ttqastFHgzLIs9mWqKrmJJBOFpvgvxUsMPanVXXqyQYR2Dv5tVE5YcSYvv5SC+080kIWXeCmXkhf/nb38+Y6tbYN6VK0oY7rPhZn4CAElvDbTj8r54htFCQ5at5QGGcv7k8HvwCj54DKeuTQ/DWzr04PKFfONLaYSlJXMH1y4snNlHf0XVfojCwPT+Xzff88hHT2McOfPhJycSDGdQ== 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)(376002)(396003)(136003)(366004)(39860400002)(346002)(451199015)(83380400001)(38100700002)(8936002)(4326008)(66946007)(66476007)(6916009)(86362001)(41300700001)(44832011)(2906002)(66556008)(8676002)(478600001)(6666004)(5660300002)(6506007)(186003)(6512007)(107886003)(316002)(2616005)(6486002)(1076003)(66899015)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?p8K7gWT9kE5V8f9Pqac6ULD+bk+VyGcLCbC6UJd6nCADAE3/wn34R1TkUkYL?= =?us-ascii?Q?sBa/VlG8u3BB4oJ4OX2W8gwOsOUKp2eXjfbEE3vQxXLJbmBa/V/qlkIdIG6e?= =?us-ascii?Q?w6BUsYte9t99e+IWCRbXEw/lnmgGAVAvgwqS4TyoyTODoprVrlH7sbj6BgNj?= =?us-ascii?Q?A08MaxwVmJ4MH1gNQWdyLn0YcUrYH4jqI/s0ZJzxBUKAhwWEFRvG5vWfuINR?= =?us-ascii?Q?z3QcvwFUYBRa+itfod5lWEgTHrjHfZ8Ok2Sdl/vNhTeursQMVJtaONNkUBZc?= =?us-ascii?Q?bF5aUArmT4XWkeKF3rcw1+YwF4xtdbdmrlTCutGAWKh0BSMupEIFzTjpycj0?= =?us-ascii?Q?lacu1okqDz++nBM9DIL+H1Y1/aSPl05lupC37LSIxt2R8aTw21AzeH6gjLRL?= =?us-ascii?Q?DNVab0xt1aiL6XSxO5RU4cNF5oISRYe6do9qpY4XVxiVVqwSCnhCWsFVfm4n?= =?us-ascii?Q?AQExclNCsAVionc48iY7rJsCIYfm3qiwg0ZzqM3w+TVxl6N1sHrI84FBmnmw?= =?us-ascii?Q?wxtJVIkjxbk24GvWizu+ZyTpzVb/MEIsvT4mRerYAN7UpnL0a5v266ZNUAj2?= =?us-ascii?Q?/4KWgoV97f0EPS3w5aUR83lHTMCri/E3oqD4/JUKArsZJEDz8lqMhie5Hq9U?= =?us-ascii?Q?uRQBb2kvsxAxNZDXbomR82c3pzTLG3cfx5U0FdSvkDj4AkI6bz/Sq0/RNGdi?= =?us-ascii?Q?7qD7MLlqdH6duyuw3bHFFOyPgzOS2kvSFxb5C1Ur+3gxpF/nw80bNwSGJjUE?= =?us-ascii?Q?YgkRSzF9vOTRZipCILkJd1d8VEKLGF/s6/pvKBA0HNxjO8FuSKGNe/LjL9e3?= =?us-ascii?Q?1CpmV6QnE3a6wJ2WRFK+GBbClGj/Hz4hLbffv2ECUZYiaZ1CCI4s3NWU2u8I?= =?us-ascii?Q?XruEW/EnRLLXY6UuOiMWTE7aGgZslAaRlLKNlNt6n6nDsJwQG4CswNP24oYl?= =?us-ascii?Q?fK8vQS2sEfl00yDE5V2Du8PcocRqQhws88EGTaELmytd5R45LO1Ryc2C2esn?= =?us-ascii?Q?krWGqBBDPKnYSjJtO80j5NAFBIDsfqevfK9jII3Oab2UfhE41jMrwKu1s1PV?= =?us-ascii?Q?U5Cw0x1Zg8dMQDG8B/TaJ5h/IM62H+A/UMX+9dkcmlxO0QD91PLeTPIoMlH7?= =?us-ascii?Q?5q0StdqN8hKQSKME1aw8A+/N1tHi8C7IT9lZieBCRYqoOwbWtLIGWem1m/e1?= =?us-ascii?Q?uTW13YC41Uy7vwlfEWwRdPM98iAE2U3xEBGZavBoqyFOIrwkmYOFZsiW14lE?= =?us-ascii?Q?8nTUrXQdJ39axNZPnHtDoMlJuqsD094joCm0BcUX1ywn0aOmmJmRcbAGYrEF?= =?us-ascii?Q?uTWWAcsx626E0TLrIdpE3jgZEx0cYQMI/lY2sFrRnDNzFQ02euXuoTALkYae?= =?us-ascii?Q?c6wOho1YW1Mo/qS0Z+j48wS1tqwWL+Xc+12NqYmFLFWByaNNTs7zObyIZ9Dj?= =?us-ascii?Q?d5LxOziEL5gSDh4KaAaaSVxDxYghgfd5rMgna6+whSTIkYgBMzC4XRl6ZCBG?= =?us-ascii?Q?MFvG109EwQePFLRCvMMwYi1Y5g9xI0n5yvotC3pz2SaStY+p1xiryWVVwJYk?= =?us-ascii?Q?r4eiwA3hwnvYYaEORPPTjiXdos7AxPgRx4S7QqHcJTEn6klqYTGpXuvN44n6?= =?us-ascii?Q?7C0EgwVilj8A6CLCKuo+5Gg=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34bfb813-21e0-4258-9a99-08dad88c97e7 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2022 19:52:38.3155 (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: r1gA1pVqEc3DM6qKEfifCAPZ2ah/MujLTXL/NKGdbpdqx9d8uAucMV/b9gmiCcpeajxwq1d61CcmSBAS5scg6w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB5125 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=2022-12-07_09,2022-12-07_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=967 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 mlxscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212070167 X-Proofpoint-ORIG-GUID: T3TG1HuhB0mwTz9KokVS2EMNZTs1lY8R X-Proofpoint-GUID: T3TG1HuhB0mwTz9KokVS2EMNZTs1lY8R 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: SFrame function info is an unsigned 8-bit field comprising of the following (from LSB to MSB): - 4-bits: FRE type - 1-bit: FRE start address encoding - 3-bits: Unused At the moment, the most-significat 4-bits are zero (The FRE start address encoding of SFRAME_FDE_TYPE_PCINC has a value of zero, and the upper 3-bits are unused). So the current implementation works without this patch. To be precise, however, the fragment fixup logic is meant to fixup only the least-significant 4-bits (i.e., only the FRE type needs to be updated according to the function size). This patch makes the gas implementation a bit more resilient: In the future, when the format does evolve to make use of the currently unused 3-bits in various ways, the values in those 3-bits can be propagated unchanged while the fragment fixup continues to update the lowermost 4-bits to indicate the selected FRE type. ChangeLog: * gas/gen-sframe.c (create_func_info_exp): New definition. (output_sframe_funcdesc): Call create_func_info_exp. * gas/sframe-opt.c (sframe_estimate_size_before_relax): The associated fragment uses O_modulus now. (sframe_convert_frag): Adjust the fragment fixup code according to the new composite exp. --- gas/gen-sframe.c | 55 ++++++++++++++++++++++++++++++++++++++---------- gas/sframe-opt.c | 34 +++++++++++++++++++++--------- 2 files changed, 68 insertions(+), 21 deletions(-) diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c index 896fbe44c6b..075720facd6 100644 --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -396,8 +396,8 @@ sframe_get_fre_offset_size (struct sframe_row_entry *sframe_fre) - and are themselves expressionS. - stores the expression which when evaluated gives the value of the start address offset of the FRE. - - stores the expression when when evaluated gives the number of - bytes needed to encode the start address offset of the FRE. + - stores the expression when evaluated gives the number of bytes + needed to encode the start address offset of the FRE. The use of OP_absent as the X_op_symbol helps identify this expression later when fragments are fixed up. */ @@ -431,6 +431,41 @@ create_fre_start_addr_exp (expressionS *cexp, symbolS *fre_pc_begin, cexp->X_add_number = 0; } +/* Create a composite exression CEXP (for SFrame FDE function info) such that: + + exp = OP_modulus , where, + + - and are themselves expressionS. + - stores a constant expression where X_add_number is + used to stash away the func_info. The upper 4-bits of the func_info are copied + back to the resulting byte by the fragment fixup logic. + - stores the expression when evaluated gives the size of the + funtion in number of bytes. + + The use of OP_modulus as the X_op_symbol helps identify this expression + later when fragments are fixed up. */ + +static void +create_func_info_exp (expressionS *cexp, symbolS *dw_fde_end_addrS, + symbolS *dw_fde_start_addrS, uint8_t func_info) +{ + expressionS width; + expressionS rest_of_func_info; + + width.X_op = O_subtract; + width.X_add_symbol = dw_fde_end_addrS; + width.X_op_symbol = dw_fde_start_addrS; + width.X_add_number = 0; + + rest_of_func_info.X_op = O_constant; + rest_of_func_info.X_add_number = func_info; + + cexp->X_op = O_modulus; + cexp->X_add_symbol = make_expr_symbol (&rest_of_func_info); + cexp->X_op_symbol = make_expr_symbol (&width); + cexp->X_add_number = 0; +} + #endif static void @@ -538,19 +573,17 @@ output_sframe_funcdesc (symbolS *start_of_fre_section, out_four (sframe_fde->num_fres); /* SFrame FDE function info. */ + unsigned char func_info; + func_info = sframe_set_func_info (SFRAME_FDE_TYPE_PCINC, + SFRAME_FRE_TYPE_ADDR4); #if SFRAME_FRE_TYPE_SELECTION_OPT - expressionS width; - width.X_op = O_subtract; - width.X_add_symbol = dw_fde_end_addrS; - width.X_op_symbol = dw_fde_start_addrS; - width.X_add_number = 0; + expressionS cexp; + create_func_info_exp (&cexp, dw_fde_end_addrS, dw_fde_start_addrS, + func_info); frag_grow (1); /* Size of func info is unsigned char. */ frag_var (rs_sframe, 1, 0, (relax_substateT) 0, - make_expr_symbol (&width), 0, (char *) frag_now); + make_expr_symbol (&cexp), 0, (char *) frag_now); #else - unsigned char func_info; - func_info = sframe_set_func_info (SFRAME_FDE_TYPE_PCINC, - SFRAME_FRE_TYPE_ADDR4); out_one (func_info); #endif } diff --git a/gas/sframe-opt.c b/gas/sframe-opt.c index 6901aa82a77..f08a424fd88 100644 --- a/gas/sframe-opt.c +++ b/gas/sframe-opt.c @@ -40,10 +40,10 @@ sframe_estimate_size_before_relax (fragS *frag) The two kind of fragments can be differentiated based on the opcode of the symbol. */ exp = symbol_get_value_expression (frag->fr_symbol); - gas_assert ((exp->X_op == O_subtract) || (exp->X_op == O_absent)); + gas_assert ((exp->X_op == O_modulus) || (exp->X_op == O_absent)); /* Fragment for function info in an SFrame FDE will always write only one byte. */ - if (exp->X_op == O_subtract) + if (exp->X_op == O_modulus) ret = 1; /* Fragment for the start address in an SFrame FRE may write out 1/2/4 bytes depending on the value of the diff. */ @@ -92,8 +92,12 @@ sframe_convert_frag (fragS *frag) offsetT fsize; offsetT diff; offsetT value; - unsigned char func_info = SFRAME_FRE_TYPE_ADDR4; + + offsetT rest_of_data; + uint8_t fde_type, fre_type; + expressionS *exp; + symbolS *dataS; symbolS *fsizeS, *diffS; /* We are dealing with two different kind of fragments here which need @@ -103,19 +107,29 @@ sframe_convert_frag (fragS *frag) The two kind of fragments can be differentiated based on the opcode of the symbol. */ exp = symbol_get_value_expression (frag->fr_symbol); - gas_assert ((exp->X_op == O_subtract) || (exp->X_op == O_absent)); + gas_assert ((exp->X_op == O_modulus) || (exp->X_op == O_absent)); /* Fragment for function info in an SFrame FDE. */ - if (exp->X_op == O_subtract) + if (exp->X_op == O_modulus) { - fsizeS = frag->fr_symbol; + /* Gather the existing value of the rest of the data except + the fre_type. */ + dataS = exp->X_add_symbol; + rest_of_data = (symbol_get_value_expression(dataS))->X_add_number; + fde_type = SFRAME_V1_FUNC_FDE_TYPE (rest_of_data); + gas_assert (fde_type == SFRAME_FDE_TYPE_PCINC); + + /* Calculate the applicable fre_type. */ + fsizeS = exp->X_op_symbol; fsize = resolve_symbol_value (fsizeS); if (fsize < SFRAME_FRE_TYPE_ADDR1_LIMIT) - func_info = SFRAME_FRE_TYPE_ADDR1; + fre_type = SFRAME_FRE_TYPE_ADDR1; else if (fsize < SFRAME_FRE_TYPE_ADDR2_LIMIT) - func_info = SFRAME_FRE_TYPE_ADDR2; + fre_type = SFRAME_FRE_TYPE_ADDR2; else - func_info = SFRAME_FRE_TYPE_ADDR4; - value = func_info; + fre_type = SFRAME_FRE_TYPE_ADDR4; + + /* Create the new function info. */ + value = SFRAME_V1_FUNC_INFO (fde_type, fre_type); frag->fr_literal[frag->fr_fix] = value; } -- 2.37.2