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 ADD1C3852209 for ; Wed, 14 Dec 2022 20:08:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ADD1C3852209 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 (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BEHFf1i006695 for ; Wed, 14 Dec 2022 20:08:08 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=aujTbaXXgxovef+khWg4L9b/4sNkWGXD7qBAlCWX6hI=; b=ao6f7rkovjdGR6+joREInGwohah9eOZELcx5IMXBVYGW43uVzjbrbquCtl6UVs+vsFkI mUbBA5fLNNCGwKBiVkNYYIyGDMfPdWeh/HcU6Y3zuAwJepCbAEbXVpgDxPjDioV4bw/9 vhuIM+oTIawKBrOk7qyyGr1pCHj9erXrW1s97DGrCdcuRloyP89zRVw2ZLcaApmwNK3q Lx2OrmYzmUlKNv8eEKGgdwWuUDU+3X3ho8kD7TDg3x1zL62KY1OFV1fHUlDn/14B3sRz u8+beg3VMokh6k5KFeH+vanGfWcBlhjvB4IO5T5r6c3yBlDafPZTB+XDU4v238jQIRAL 1A== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3meyewu8we-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 14 Dec 2022 20:08:08 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2BEJFO5O018881 for ; Wed, 14 Dec 2022 20:08:07 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2048.outbound.protection.outlook.com [104.47.56.48]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3meyeqk7mr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 14 Dec 2022 20:08:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PuW6bx5Mx3zlXM5K3Fj0hP5kgt7v4GRyNzSADVWToGDIFOwHsmRFXQJ6n1+TCB2Xz8mnSdZwfpLCY4ndu1l4an8QqCWRfk4/coP3JJnDscJNWKJCc7fCRa17PzxNnhFRs87tfQtDRbAghsO6Dvm3qeWMux8uFWUEwf1Bfs/WO8EWCx9QZvR+2pKxOFitgPby1TohkK9wCH/ymrtAjJ9CYWvi6VAEJh4hakdRFflvZFQbZX7uwYwwhrISjbnAqw5oQB88dBeQjTrTeY2Z6nGTji75oKJwPEqvdzFXE0MipNyqYwDYe1Kvx0biPjuZO1MVcmLQAZKg8ye22qX/e6h0Qw== 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=aujTbaXXgxovef+khWg4L9b/4sNkWGXD7qBAlCWX6hI=; b=HIEViqorhyNtp3Yg1Jd5jVZtf4/z8brhzaPAWC3PK0lbMpFQ7LOBd+MTnslcDFKJnOoYb3Hq4K+7+gFGPD4LWUeQ7Zh+Zdw66/5Rp34zhR2etUIRioHiBSSSuyv3qd82V+UQ+TRkPsxtQaJKwtImEE70nv7PJ1Jsj6lGvlPekzp4zMrApGUm90u4eWTQYsj8LU2qudr7Jpz2lx3XpiT43SCDv49aPPhUsq/4XtX5kDJAFK4P2W6g0ERIsykAhApm90Pk0qJtJHJnhF9LAOuhGCHOzo13RNygTIhBr0uxoTFv/1q1UrfgwivHFt6U2ZTOjBMeDRJwU8tL9ie+kQRzVQ== 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=aujTbaXXgxovef+khWg4L9b/4sNkWGXD7qBAlCWX6hI=; b=Zf+mFJzfdYlfOQQ/LMbbFbJoG+nNi2LC6JsC1PeBvXB2eT7bb3QMMeLRU67Y5yo9VSBjYX/k7tFlAGLX4SKFUFF9C/aEhAgEFGdESbOlN7AM1g9ExgMUG8JtRUU4qsLPXHIoQ5yQldhSNlV6xGFTFwdbU/yN5MrZ9tbBBupqlLs= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by BL3PR10MB6114.namprd10.prod.outlook.com (2603:10b6:208:3b9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Wed, 14 Dec 2022 20:08:06 +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.019; Wed, 14 Dec 2022 20:08:05 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: Indu Bhagat Subject: [PATCH 1/5] [1/5] sframe.h: add support for .cfi_b_key_frame Date: Wed, 14 Dec 2022 12:07:52 -0800 Message-Id: <20221214200756.1234528-2-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221214200756.1234528-1-indu.bhagat@oracle.com> References: <20221214200756.1234528-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW4PR03CA0262.namprd03.prod.outlook.com (2603:10b6:303:b4::27) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|BL3PR10MB6114:EE_ X-MS-Office365-Filtering-Correlation-Id: 91b0ccd4-e9c5-4f57-055b-08dade0ee9a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 96V/P2KCNa82+jfiaNdVg0L3PyubL4Pu9W7BwHRqywKtJAGJ4TA9GzlBZJCcGD5UNqzKoma8JGeqy8w3bvIhmkoxt5ZWiwX2g3YAY687GAmCD5dh8fJcCLC6jl1vkJIxOdL2PgbX63uccymLAlbvFs6NKC4m0wI3CUgGllSHWVXrRRhzbcxkZs4C4Mp3YXrf3hq6ZhNFQxx+ytDMHdOCIzC7ov/nPXhwmVxDcl6yhp+IDSrTz4iM1axE8KGt/v/oHOsMtbT1yEi0Ny5riUFloRU1imXpgnI0/ykO/ZG6wVPPEzZa2JP5nqpVbjGQGxoxth0ZeDjcqvb4u15AKHmhJQ38uA1HSEAOmBIHgCoN9Df0XG/qzYguQldUgRDIdRHRLUNd6MtieqBHgofzqJeVuAUpYIgSup7M2c4j65TFyoly1xm015RNMq49lQM9jAcq5bOxfsgXvjIWs2JNNYOxkNHsHuEcflQiFFNL7xWE8LhvBMNixMoVVE5oSx17L35gdBEZpBLT1sL3uJtBq7DRRmQE6ef9Z12kplktwJoO9YuKdgJn2eMV/6hWoDMup7MSpqGzPYt08JE7rxW6gXkw5tY+QqpmK8xbUsafJqD829lJJSi17Jn3ZQGCVtA08MQZXVhAqWGKhLYSiGm2n1vud26QVGm0N7IvlrjA5N55+VFyFzUxQsx8wNobEHCmkLshtUXlOXlpbVDKe+NqmQoUrw== 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)(346002)(39860400002)(366004)(136003)(396003)(376002)(451199015)(478600001)(6486002)(186003)(1076003)(6666004)(107886003)(6506007)(6512007)(38100700002)(2616005)(66476007)(83380400001)(6916009)(36756003)(41300700001)(4326008)(66946007)(66556008)(8676002)(86362001)(316002)(8936002)(5660300002)(2906002)(44832011)(142923001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yMRZlgXnGn36xnZ7/Gn27CDC2y5GAQ4Eg9k1CCcGkGYlPCHm0W/frfJ9otML?= =?us-ascii?Q?tq/fW44ZVn1mT5RPlAfiIE8k6IaGvQmaX02+UdJywp7WkM5ySRcxY5w/pssG?= =?us-ascii?Q?86NoCM4QI3DKqtts7DBisLII1GY09xwojVWXCkpVwNw/5LJ2IXf94+ym3kf7?= =?us-ascii?Q?p3VFHC57ICmyU1zD4TyhMQZKOV//BmpKFAVojB0TAH8n1NK+7tKsVnA/Qmoc?= =?us-ascii?Q?CQ8fOGbCys0R/o/EGOVkuf8F5WsKPJA4hN893Pw/iWq7DaPf+rB3JA4fRnIg?= =?us-ascii?Q?pWujzZ7+wkHleGVgOT5D2D9atJyQHGBD5MA8THTt64Ez6+EI9iMLBhDMiUiN?= =?us-ascii?Q?qb1TUAUQER0V36mm6g25htxIimVxb4inw0yd7A26OC1jbAKQvxMm3XfVWiwE?= =?us-ascii?Q?4ve7n0g4aWdkjL7bdxMYUzj5GBdiePzUChpPTIw+2ve6B06iZy1AV/s2Xr2K?= =?us-ascii?Q?sbZD8/Kvz/TEaesLB3A1kAu2fekhnT8sLrLDZyKfzRljm84JBYCGutSgfQcU?= =?us-ascii?Q?MMJDQjUjMJsnitFcheATY4qMYLKvUQy4FeB0r+foHKnddQ2bGOBUircnEuo1?= =?us-ascii?Q?RpavZhxPlSxa6uuQIafTyzUUig+E/wX7ObNQ6/x3+srFbf4R2msRChUBA5hP?= =?us-ascii?Q?t/IeM8Hw7/z/8QHxEz3getQZTledZDwsZGPTiY+36PEYEfuaeYg2tLR99LjC?= =?us-ascii?Q?bdhPGhcBl49qhxUXrdSZtuDFY/nunez78tI1ffUE2QpzV6u2GgjZb3RXO1cL?= =?us-ascii?Q?dNdJX5RI7JBZ9+KoVFhqFQA0haLBD85DA1DryzyEJJjn/xh00sakLhnOOTnn?= =?us-ascii?Q?sbun5E3QPxS3wX9ZDWYb5ZirRF+80lHzoukLHHRlskVdOliAKa86u3/lY5rO?= =?us-ascii?Q?o4bFouzISKPPcxciS4JIsCLJlrliJ1gBpjqJZ6/tfHFRwxhE0wH2cyAlmOF+?= =?us-ascii?Q?9f6uet66jNaCCimfyGSntJj9nQuvftC6S6am7/W5BLgOMXIJFuipSw5m6KrO?= =?us-ascii?Q?rAfowu58PHdVmHjiKcz1zDF4AhoiGNcUh+pWpAlAwI59OYEfWa5qVTWVPc5e?= =?us-ascii?Q?Etw5wOAbVnboXCquAp37ZK+QFPOhhVW+Ghl+uZpB+2YPx38wU8rYbc13D5Oy?= =?us-ascii?Q?WKs/Pp+1ayLv0tKc6tiiDoU7ev0bFZDJGdkEfs0KjikmuH7dZuvqEuz0Nvdn?= =?us-ascii?Q?UFCbSZNFxQnMCaMVhBm7VpmGdpiKK9svjDWrqIPYMajHnx3GFPq1Sup8Z7So?= =?us-ascii?Q?brqN9uXqc2aPeyVo3ggL44ZENBco7igugqmAQz2ohkBysALduCX6Ae3CxVP5?= =?us-ascii?Q?DQGHO7XHHYeFbMCr6ggqyiTGrr5N+zDxKCl81MUNFWgtEhPOR50zf9h9GIvK?= =?us-ascii?Q?VTGqXByC5yGd7ZabHgQg4FWmouAnNbd5ukdwuIbdmXzKkJQ+cS+GMErznQDb?= =?us-ascii?Q?HcN9fywKOnt0azwtvP409Xnq1nQX8du/0OpptixECCcxOhU1391Hgydj4n2e?= =?us-ascii?Q?o8m0cF1Mtxjh7A4N5JtB2eSWZ3qycR1kwIIbCnbksgYhS6d33+ZXCJxjT3EW?= =?us-ascii?Q?WAcR+olZV0d2xpVjIRwzoliVKyOriWYoVGSpAFxh5VpZAqoqqkIeLZzjMHR6?= =?us-ascii?Q?1nukMdHCTTfrk5mRNF7qJyo=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91b0ccd4-e9c5-4f57-055b-08dade0ee9a0 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2022 20:08:05.9176 (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: LRARR4AR2bQq5i2VxdtYcXvpKz5rubJjkvb1ZGl+xF+KvyRT6s0Ph/k7a369Q99bz8H4sFHLh9W6I1ri0WOkGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR10MB6114 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-14_11,2022-12-14_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212140164 X-Proofpoint-ORIG-GUID: uWbwUVbvYljKDn_EAGK2_zGJ7oW9Pwk5 X-Proofpoint-GUID: uWbwUVbvYljKDn_EAGK2_zGJ7oW9Pwk5 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: ARM 8.3 provides five separate keys that can be used to authenticate pointers. There are two key 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..77071c99d90 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