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 837F03858D28 for ; Mon, 19 Dec 2022 21:14:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 837F03858D28 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 2BJIx4QN030180; Mon, 19 Dec 2022 21:14:15 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=3DCR2FXwbyKhOpkXvXIHpoLQP+ruZg+3m3dsUT8EpDQ=; b=kCzlb2hQAeCMi3NTtNINcPpxTpnKRqloADOo7A/iNdp9QQC/e8h1B0cnk1bnBWpyxLBF Z2QewH47ro4A3cSWbDM1tTGdLplQ9xyJ5tE7eDenwGf5Rb3nCcz/fe/TnN/SaTzDC7yZ Xr3eCdiv5A5nl2SFI/1tpcqk+X1UF77GXT1PFi/CRVsEnAo4dTG306yIe+EFFVUQbr/O vZkRBDqOpuju18ZWSLLafiEhe5ZgOaR/xG4eOw/k8AQzXf6sjrmOnImcb+ILb2U/yyda oJVUbEblsumpECAEYGqZc0ZDRSPH7UDN0TR/hM1adKEPVXuOFaqAMZ4V5bfsf9rxi8h5 uw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mh6tmuxuj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 21:14:15 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2BJLDwgW004747; Mon, 19 Dec 2022 21:14:14 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2044.outbound.protection.outlook.com [104.47.57.44]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3mh47ad0fq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 21:14:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y5AyQwROoNTIYg3SJKAySdyNfMl2G1S7xxvCmzfSO5orpeX6RfFd+18g146gUmn6X5VdZVhdO2KBa6BqC9E8JLnfW6NBOfo+7ii9q3uA8+5oI8F5SyOYbT+mPCdggKeYB2EKjpIQyUM/ePFAGq9uyIa8eUufhQpTs52tI6e0Y0Ox9B8wBoMnlNLhm3r+n/S6oIy+hD1pXnsO3838CXlsoZNsxgxSqbjIn6XP9VtlhY6oVOzXugSkr5zs/SfNxlihLnjnI4hWQANByZtVr1FTy5yanNv9eQ0CkKHS7ddMym99TnJilL+OLZQIa4RUrlmdiw1iBqX+SPE1dVRNg+/GsQ== 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=3DCR2FXwbyKhOpkXvXIHpoLQP+ruZg+3m3dsUT8EpDQ=; b=QVA6vZxAx6elrXIj9i4d0csW602OWkRhl4dNjkuzxocXNYtkKT22B2/sIKy0Vhno47srrL9kaZAjUgGezdVCsWyxUOmoYhowH1w1EY+O2U7W3cax5lyaXJZgQp1lXtUI2wOQRPtnEv1gyxLERtk2arXcHzBfE+RZy+QMhWuX22QlaoRPjfqOvH/3dD0FA3jCVr97kF7SwD9EQjFmZqLilih2d0NlA/vYNyg6LAcSnac4doyYJEYYzciGBvppjOtlm5M0wevimrQBZRQcjrpkdQnp+AcH0xdz7O75jthMGuiV6UIu6vBxmLFORsDlCTeqmc94vBInrgB8cmFudL4ufg== 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=3DCR2FXwbyKhOpkXvXIHpoLQP+ruZg+3m3dsUT8EpDQ=; b=ZMkAOTq0dTddzaIN6gQCz+G2gLdcXgRnu6aLKqG25PnsW0aS10vaZ5gObAIesYEN4qPo/UmY1/TpEXipWCT36x3176d9UVhbsjGzRijZBy6WXbKtgc+aq9qzf0eos27gFXwhX4t+v7/K1CVWF/dSXICWAcpvjNhn20w2KHNy3eg= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by DS7PR10MB4944.namprd10.prod.outlook.com (2603:10b6:5:38d::15) 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 21:14:12 +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 21:14:12 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: nickc@redhat.com, Indu Bhagat Subject: [PATCH, V2 1/5] [1/5] sframe.h: add support for .cfi_b_key_frame Date: Mon, 19 Dec 2022 13:14:02 -0800 Message-Id: <20221219211406.1443750-2-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221219211406.1443750-1-indu.bhagat@oracle.com> References: <20221219211406.1443750-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW2PR2101CA0013.namprd21.prod.outlook.com (2603:10b6:302:1::26) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|DS7PR10MB4944:EE_ X-MS-Office365-Filtering-Correlation-Id: 71602d9e-1cbc-4bdd-d11b-08dae205fa07 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B0XAfyrcxOgQN6fQihO0JJ5QK/ua83ILWjR8Y+amEgUGDShMnz0rAi3cnsOFVLlR2rcIAmP3Z4KSY69FAX8jSynN5MZNyMHP74nIrUniOVCxsRsrOmW93VZhKqMQ5jPvxWSDZ/Lu+8LBghqZEsdiX1THoB/z2ezNrNDG70HeBKWgESfAYFg4xAwg2H4vRQWPmZemrCEt3PVvM1IZzoWNsCXLwq1HcmFXWgXO84MipeBopxOOgWzH65w8l1CJbas53BeuLbuMdgcrZkajsuz9c6PzuGEI+Q30v5lsqxR9hffDx7p7xH4PhGZCulondQqRNFJws3u/zG6knafhOXxk6wK8OwV+RfqZ6ZMdqE7VAxE2YL4h8Hw1d0FqkSI4xEke68fsueqiZp/D4hO4JUpYetTOuTWvK44tDLC9eZ3vb3OlCphwlGVGI8+G58/z5fmEBiDIFt+hDmWaO3dkr4SkkUSSBhJV81IjA9sTpriLEWWfxxyIm2ZmpeH1Ei/xaz2LEsBazlWkViPztB/w5swat8eDoGomBqdFPn/tQ7kG0sMb//IFnsX6rrB+Nb+WK+iMvZhsNjkNEHvPY3hAMkUPQDBOAt7WhYP815wXZL/5CIAHCW1X7Mee/Jx2RsTXp0gCdH0mHmOMTkGfBGsZpbwiPnqhof+FvJ2D7HFiBO5B4qN7PThE3YEcxqIswXeVisqc 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)(39860400002)(396003)(346002)(366004)(376002)(136003)(451199015)(6916009)(44832011)(4326008)(41300700001)(86362001)(36756003)(5660300002)(8936002)(83380400001)(2906002)(316002)(66476007)(8676002)(2616005)(66556008)(66946007)(1076003)(107886003)(6666004)(38100700002)(6512007)(6506007)(478600001)(186003)(6486002)(142923001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2qiSG99wLYHoROHkSJ2fGLxpTgIKfUub0wgZLdaz3inHiXj2E00lA531O1Bo?= =?us-ascii?Q?mcpwLsx4JEKaWc/DH7atjX9XeukvxjY0hkO1EQNqtWm3+F8qAfuqUFIC+sA8?= =?us-ascii?Q?uYhVJzx6b6JM33KKFE9+zPryGJ5p6UX+nowfEmho2dtFCZGPXfYxusAkhpNY?= =?us-ascii?Q?z82H1Fy22HcaHwpX0ktZMfuzMBjTZXS4+xbtgmpwlQl0VMtSXVtPhOvGTeQi?= =?us-ascii?Q?S9/tSugt0GIYlxMXNtyrfkGE9/QHM7o5DQW1fVnnfpAmpnl1T3xYMkoVPcFd?= =?us-ascii?Q?W3OxnPh7tu1RZd864L7rm0FSJ31bmytbvoV8X7RiFpfI/91Rr3iY+pcRBa6J?= =?us-ascii?Q?pk5LD/uXkcDzPgHWpvYZ0p0/+vaJaa2H8JGO/87oFoiQfn4i2cT/LX1+fy0d?= =?us-ascii?Q?BniPQBQfT6zsCsUsgDuc7iia3lpj0Vu5nRi0AsfrWfD7dDqv8DhBPWzJfwJ1?= =?us-ascii?Q?FANMVnqwhkdF9DIe0gmnYe0m5hrWxKQRaxLtCVtvmoT2ODbAPzysmzxPK5vf?= =?us-ascii?Q?6Lwj2gNduMG9Y0xbDGIZPb0wySLOKddq0MmTDpE8URPzwGu9cIirV1+Hyr7g?= =?us-ascii?Q?+8KUnw3shEZ55jayZfNCZILVQZ99K4XEMKCPFiBDz3CWNYFt3Vbf6l7+vyT/?= =?us-ascii?Q?/1tByfYDMhMDoe2sYoMw2pxO9nTpmkWg85vsYyKeVtkEEnU4SUqd77kWn/uF?= =?us-ascii?Q?HihFOCTPNmIH8+VkXf2dmZnG+vYiEPjSQ3YFsbJHK/I3gs/Fu7aC3lYj+C/C?= =?us-ascii?Q?PkjUjtM/ZkqIqrje3+0ZYoX4X+rP/lw5tbGhFgmuTDsGkFekL0hckmcbMUd4?= =?us-ascii?Q?QU17ISRuy+tdj+iaBW1I4y1x8X32YJaB9rK3FnwsGDfRL4a0uKg09UXUQAbO?= =?us-ascii?Q?clnk+9X1aLtY5BBM5uuJKDW3QGFumjVCnMh8OjVeYH36utZXxTh2+XEbxylm?= =?us-ascii?Q?P//sPZyNLavtWNLpfxVy1qscRVPnPzaZJiRuewFOLKycLRjoqGVYW8z3sDdA?= =?us-ascii?Q?6rsKWuQFb1fV7sVKTHKrN+eARr+zgn9rRdHCRM4HBG58mcEgriHv9zAUVhTN?= =?us-ascii?Q?/6XZOLsRdAxa173F7269971p9bs4UdRioqrFQSjrHUBagG0Jw5fWmMOl2jqY?= =?us-ascii?Q?T+7sCj76bkRqY/JHz3tX3f8fFGQeHHBrOZp76daSyrGcnhMYxxnhS4TLNR/u?= =?us-ascii?Q?RmzUTNHTF0fKVtFVo5p2DXVBOE1KvI4+bnLrAbKL0fk8lu0NSeMGF6PAyy9K?= =?us-ascii?Q?H2z3UVaUFAeqgJoeCBYbScv/gaRX5Xg22PqYiTnKjkhrxGeavRKDnn/bFryF?= =?us-ascii?Q?lWtlF1LOmYNc9k56nSgGGlfh4dlBDtiHCugnFiaGED5w+x3z0vHDrkcRz2Wg?= =?us-ascii?Q?doriFJozbk6pjoE/aJcObT+cCrAaCSHawitAZzO2h1ortNiFGmGvEZhwkNgH?= =?us-ascii?Q?m/l8vLInuG7EffiByALIprmDaaZJx1d6YtFByjvGiklGFrEsmFvdixDEKYsH?= =?us-ascii?Q?jLcXgD5H4kmRLq4yXYukdI5mFwYv7bLb8vb//dAsVU6KUvIsLZp7dy/P1IcF?= =?us-ascii?Q?n/Gga4OfT5W783bd5Vg5MnpZ8zQKoUdRRgbta/YtEZIPG84lF58UvtHFXviu?= =?us-ascii?Q?ObtToHDn245i1uc6LXlxd5s=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71602d9e-1cbc-4bdd-d11b-08dae205fa07 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2022 21:14:12.5595 (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: qe9PPR7hd9MN9p8Ne4hbdFcS/I/DVKuGjI9VgShg81PgNzEPtZ9Qg09aP3bRG4XmVb35ZOWBFZl3YUx1eL8B5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB4944 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 suspectscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212190187 X-Proofpoint-ORIG-GUID: SX6HGOiOpUHK4F0OmDxQ8fPIslVXkc8Z X-Proofpoint-GUID: SX6HGOiOpUHK4F0OmDxQ8fPIslVXkc8Z 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 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