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 061AB3858D28 for ; Mon, 19 Dec 2022 20:23:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 061AB3858D28 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 (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BJIwmQn011731; Mon, 19 Dec 2022 20:23:40 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=mhGGs1rY5shdRWUEPSkSoY68P8C/GQIQ9miRLwKUXtk=; b=apy5wTA5aCz9XYcEGnedRtXTxgNWoP0RIduefS0R8M1M8tEzNzHOqH6Tv487DMvtnOSw VrGscBCpoIJ8JyPKpVpv4+8VG2Dd3+zZa7uGoUI3TwDjJ3WhRUfP6gHxUQacENRpjcMi UNIalwTeISgDfR1iZ7iwg3brbrhaNshxPQXkQyv/0oXHUfN1rYEfE3OyP4nhKuF0Iy1R HLU9WsEnTrBdtAIUnoRrV3Vpus7EwkHeb7/ktZGZfXBpOzSk3TJ2xysxcJe2yKhJotxJ m6FNA9T+YzVGV+FbCiFMOabEbpvzAXieZZham8iURx0hXTLFGagYFH4BH/ECXbIpuqTu Ew== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mh6tsuvsw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 20:23:40 +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 2BJJexWb008149; Mon, 19 Dec 2022 20:23:39 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3mh47b2ba6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 20:23:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hq1AjJGWLD+Or2F6wpqiitxFFUniNSKJmysss/gfRj22sRljfm1Ort3ZdVBqKZsyOZ1ofSBhhSNRY3tiV60lPGP7y4+T0i9zU3xyYvyMug8DIDwOijrRUmUHm15e0qP4Lf7rumwz60JCf9K6kA0DpHVOMC4GSElr/2xwI8VZSbGCkyWCS44P9qWDrl54Uy5+hhpaxF/N4jrV9KMoJk9w6nj6zVeHho9C2N+/ftN7hPTLFmGtQWwZZjVM3m/9a1ZFAQq/pkPRk85s8LXuSP34QCmb1Sxp3O6hrbME6dlDCAt8gnekCwVfb9iNqYKvSzJozGhabmmQU58HV8nAQuwlHA== 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=mhGGs1rY5shdRWUEPSkSoY68P8C/GQIQ9miRLwKUXtk=; b=XQ3tEWXpR+jqdMOEnUYWN7cW1f/SY+AxcQs06GXG9iqqD9DOhk7mvqSQHqtkebyn52MYDCWCBunWBeMtpjVqS8Nwk7bfZWqOKtJ0MDoyijmF069S/4Ey11ey1lEbd6oave9oetabyexwG/7A2BNHvckbyhtlf9bIa65fervjDtt6b9pEREDi731k06wOtxky84aIx1uCyZKC8EkyYb2i43peFwe7EWtUzXT/WsMzPNd9GRSuqqyfOwcUREE33uiFPCMZdGvO/D0jbosdnhpzw+U3Gn9OivbhoNVWdwyRZusPCvTbB48yJH6SIbUYh3VPOnAs2CU2HoXFJxsaXvAkkQ== 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=mhGGs1rY5shdRWUEPSkSoY68P8C/GQIQ9miRLwKUXtk=; b=qZ3SujKc2z0BvXwxplN/F+A4Cuf/y9nazYp+GnkYeNEErbofgLzqPtuKeU71bIjq2wQo0Dw4jtF6E35XnY7zP/GQTy50in7dpze7dYCMyvDXxknh+tcHe+q9AbmvO+GMQWBcZxHKcH5Gx8GuGWz1zTP7FbitWSFpVjJQgoWDu04= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CY5PR10MB6239.namprd10.prod.outlook.com (2603:10b6:930:41::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Mon, 19 Dec 2022 20:23: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.5924.016; Mon, 19 Dec 2022 20:23:38 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: nickc@redhat.com, Indu Bhagat Subject: [COMMITTED, V2 1/5] [1/5] sframe.h: add support for .cfi_b_key_frame Date: Mon, 19 Dec 2022 12:23:24 -0800 Message-Id: <20221219202328.1442022-2-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221219202328.1442022-1-indu.bhagat@oracle.com> References: <20221219202328.1442022-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW4PR03CA0145.namprd03.prod.outlook.com (2603:10b6:303:8c::30) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|CY5PR10MB6239:EE_ X-MS-Office365-Filtering-Correlation-Id: 73513ded-cfc5-4f98-a911-08dae1fee96e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1hXAAOXO0pnJL7yYPTvvSS2B5sxjU28bnRpm7KX/bZr18Y/sV4/9xKebRX3rgenNuqqiU78UTNDJUWAcFQC1iikl6vUIeYUXntvXGg5Z/D9BjPqkOe59a7mZh/njByjbePlEpGdxuhNQyjcMRZCjyl8Bv67G1C6outEVg2Rqqna+zEm8ItNGf1t7N37fNN8peLxn28tZv9k3Ljfr7gmF6sOKR5Xl6YdJ/BTU7xOdV8aphXDCU5BaiZjejRo8Uh15uVnOyW4DbHAMyFjqJEO+lwG1e9ew9c48MyOXfAxg6sPUktwT+L5KbeolJIfDocOz3oFfFFgAUfA/e8+QeBOUMDTlMGgM7QpU5ILUZjA17GxT+mcde5r+GeMdjlgZsvQEiEFsZ+EHbCI9wpcJOUzg3FjUcDgH07d33Ec3kNB3ZdFdxBQvO9/zz79S0/5TRF9O5h05a6jPcgTBlYLfhFm7oBRqOjJUDSq1rEOvwNtsMrwfXhpJ7QnZJfUz/gErlF02o4AlU2KtR+bxHIPUNp9qO5f900tz4PzIV0G/tGFLu6XVAIMoTQ3Nm4lgxLE6oS4pAnX9l8x+v17IB/iYIk3Gnm9EBtARZ6qeiQNm/G6T11PMNBj3uxYD4gx0gEYPULu6s5dW1fJmiyzlVKHEguWfbGkYpWAJqWcwN216XVmMI8xwQHelBPbIOgsDHoDyPSKy 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)(39860400002)(346002)(366004)(451199015)(83380400001)(478600001)(186003)(6486002)(36756003)(86362001)(1076003)(2616005)(38100700002)(66476007)(107886003)(66946007)(5660300002)(66556008)(6506007)(6512007)(6666004)(6916009)(44832011)(8936002)(4326008)(2906002)(41300700001)(8676002)(316002)(142923001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?g6HthZf69+SOMBhePUe/N07I96eQuIp42MVG2OtP6OGWOBoszQrMuZ89vkwX?= =?us-ascii?Q?CpxHbgmpNfv31/1CIciJRKKDNsnI5/HEj8qhaxxNqywT/6VPk0VSwxw3xOTk?= =?us-ascii?Q?DvxrgtGKdbzhuCAMb9TbnAudjvaGtlFpPPPMPX8/zvpNsyyAXKZhHsEwOmp7?= =?us-ascii?Q?ke+dTEM8bEss6s4ThMCXLwrKDRQRdTdDw8ekf4yWED6xpKughE/Fb4X3F20z?= =?us-ascii?Q?liHDBwkwtWmBKZHKPqLuN87AhCNq/ddb6F+HWFtK1HVZtcQX2JHWx0kGZr54?= =?us-ascii?Q?ZgntP6mh8gjLHr5NLTjMgUiNTAc6KnyfJf38HKAnvuK5ztJrgRRqou/yYdII?= =?us-ascii?Q?PZqSFrHTOF/wKeEn70I1Lox1+PewdLQRA7QUIK9876cRHInzNs+QRoFky1Ok?= =?us-ascii?Q?JKJpMzQcSMp68BwE98pkXvFvyr80eQ+RLHlqe/MgftZsVRSUCGjJ7Sm98b57?= =?us-ascii?Q?15Cw2eYIdpuzqQIiNfdXrgBtjIWhdlQQX4Gwv16gEU96NxLuWH50SG9f8wXo?= =?us-ascii?Q?ExKijmxEV2yPbbPkLnFYgsBAdogxH7wMnj5S/9egLRGCvReAT42NefQo+hAA?= =?us-ascii?Q?2FEw7UvWw4endmLzDQa1Ntz2EFEFd5gSdtz+9W+8229oxxP3hIQYivX+p7hg?= =?us-ascii?Q?caxtk968kGxe0ZJa/scUAMaInNlyP25h3yi8F3FatzeIao1Kul0bl4tSkoX0?= =?us-ascii?Q?m/m/qCQ3EXRZS1pX7K7g1m2To3gAdPH5c5uyxFmBTZTRCQTOY2FT07OMKbQJ?= =?us-ascii?Q?scAj76DE/ZEmDhfe70XpN30RA2dI9UQKoYNYyABzMJA8xcU1qs/yXAJSGXz2?= =?us-ascii?Q?G0L88YLOiJ3hYujypQdHl+f50YV4UtbDbbQbpWEJ1nGJ3hmB/BGNMzAA2QuE?= =?us-ascii?Q?U9kETl7gvhhT78z/gFCqbPgMCELxRnGGsr3IOptzX+wI20eFwyX148LTg8CE?= =?us-ascii?Q?p27lqaoHANAkRqHHQzfjzXQr0GAWgAgpRQ99wjNgqHkUHRIRPXy6NNelaD5Z?= =?us-ascii?Q?rmuFFSPCG0UA3GYYGlwrUIIZwDUo5caUFswSDIylTLdsvuY39gvSyZyuqYoh?= =?us-ascii?Q?R1bBi7+DfyJU9AkNioYQGhuv5gtaABCaPSveP3WZFiT15yxQa2tvCTfK0+PD?= =?us-ascii?Q?fkXQn+w4o4eF+FnCP6ive0fQAePDavh2KN0Xjbk0UwQDywUx2wGYBfT0WO+b?= =?us-ascii?Q?gMPT1Vtkner0Bz3C1of9jLwb81Ky1wgItCridx0jSoGp6q0uTbxmLtNWTQEN?= =?us-ascii?Q?ZvifuyOx/6+sVfKK0fhALT0gwcQO83x3D1KcYT/+ZOT08+sR4Ht0BH4jp8z+?= =?us-ascii?Q?Tx9NBGxVTuYvouBLw1PUQUEldBdk7itdu+rY3lJnU+DXh9waNHnRp6NX5ovR?= =?us-ascii?Q?jfLg/hn91PB/S8fGlGrOK3ExHj1aeewumqNNirSKqcAUExEb9OF/ZqLuQ3ng?= =?us-ascii?Q?+NQx3zNVNSLaar1siIk5X8+4AFXPBIk4PgqOTIeVlUzpDKFBTovnDihS4CUH?= =?us-ascii?Q?4m3ZP50l+ppOUABsmCk7PgDhDPwQJL37oGrdRLOhkKLp5+1sprkVin3GHFXm?= =?us-ascii?Q?ec31vxpGe802EF43kuW5srUJ1vwn4fgLybVXFGuBNBUk0bNzrIvP89Tz5ReX?= =?us-ascii?Q?blVsP70/dJUQatcettMnCDQ=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73513ded-cfc5-4f98-a911-08dae1fee96e X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2022 20:23:38.1882 (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: r0l6OJzRDkV7ysVQg2uCViWG+Aj+GPgta4l08VB6peSQtLrQUWVPGAszQMWPGPDSolzkK8GBUVBZ1DMKXuRtKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6239 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-19_01,2022-12-15_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 phishscore=0 suspectscore=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212190180 X-Proofpoint-ORIG-GUID: t5-sP97lgZqXH1yNEXhKQEvWRLA3Rp5r X-Proofpoint-GUID: t5-sP97lgZqXH1yNEXhKQEvWRLA3Rp5r X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_ASCII_DIVIDERS,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: [No changes in V2] ARM 8.3 provides five separate keys that can be used to authenticate pointers. There are two keys for executable (instruction) pointers. The enum pointer_auth_key in gas/config/tc-aarch64.h currently holds two keys: enum pointer_auth_key { AARCH64_PAUTH_KEY_A, AARCH64_PAUTH_KEY_B }; Analogous to the above, in SFrame format V1, a bit is reserved in the SFrame FDE to indicate which key is used for signing the frame's return addresses: - SFRAME_AARCH64_PAUTH_KEY_A has a value of 0 - SFRAME_AARCH64_PAUTH_KEY_B has a value of 1 Note that the information in this bit will always be used along with the mangled_ra_p bit, the latter indicates whether the return addresses are mangled/contain PAC auth bits. include/ChangeLog: * sframe.h (SFRAME_AARCH64_PAUTH_KEY_A): New definition. (SFRAME_AARCH64_PAUTH_KEY_B): Likewise. (SFRAME_V1_FUNC_INFO): Adjust to accommodate pauth_key. (SFRAME_V1_FUNC_PAUTH_KEY): New macro. (SFRAME_V1_FUNC_INFO_UPDATE_PAUTH_KEY): Likewise. --- include/sframe.h | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/include/sframe.h b/include/sframe.h index b2bd41a724e..1d0c12058ac 100644 --- a/include/sframe.h +++ b/include/sframe.h @@ -165,6 +165,10 @@ typedef struct sframe_header #define SFRAME_V1_HDR_SIZE(sframe_hdr) \ ((sizeof (sframe_header) + (sframe_hdr).sfh_auxhdr_len)) +/* Two possible keys for executable (instruction) pointers signing. */ +#define SFRAME_AARCH64_PAUTH_KEY_A 0 /* Key A. */ +#define SFRAME_AARCH64_PAUTH_KEY_B 1 /* Key B. */ + typedef struct sframe_func_desc_entry { /* Function start address. Encoded as a signed offset, relative to the @@ -181,21 +185,30 @@ typedef struct sframe_func_desc_entry function. - 4-bits: Identify the FRE type used for the function. - 1-bit: Identify the FDE type of the function - mask or inc. - - 3-bits: Unused. - -------------------------------------------- - | Unused | FDE type | FRE type | - -------------------------------------------- - 8 5 4 0 */ + - 1-bit: PAC authorization A/B key (aarch64). + - 2-bits: Unused. + -------------------------------------------------------------------------- + | Unused | PAC auth A/B key (aarch64) | FDE type | FRE type | + | | Unused (amd64) | | | + -------------------------------------------------------------------------- + 8 6 5 4 0 */ uint8_t sfde_func_info; } ATTRIBUTE_PACKED sframe_func_desc_entry; /* Macros to compose and decompose function info in FDE. */ +/* Note: Set PAC auth key to SFRAME_AARCH64_PAUTH_KEY_A by default. */ #define SFRAME_V1_FUNC_INFO(fde_type, fre_enc_type) \ - ((((fde_type) & 0x1) << 4) | ((fre_enc_type) & 0xf)) + (((SFRAME_AARCH64_PAUTH_KEY_A & 0x1) << 5) | \ + (((fde_type) & 0x1) << 4) | ((fre_enc_type) & 0xf)) #define SFRAME_V1_FUNC_FRE_TYPE(data) ((data) & 0xf) #define SFRAME_V1_FUNC_FDE_TYPE(data) (((data) >> 4) & 0x1) +#define SFRAME_V1_FUNC_PAUTH_KEY(data) (((data) >> 5) & 0x1) + +/* Set the pauth key as indicated. */ +#define SFRAME_V1_FUNC_INFO_UPDATE_PAUTH_KEY(pauth_key, fde_info) \ + ((((pauth_key) & 0x1) << 5) | ((fde_info) & 0xdf)) /* Size of stack frame offsets in an SFrame Frame Row Entry. A single SFrame FRE has all offsets of the same size. Offset size may vary -- 2.37.2