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 510A73858004 for ; Thu, 11 Jan 2024 07:49:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 510A73858004 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 510A73858004 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1704959358; cv=pass; b=H3RCHXxzvJ9N3QAuIqnevGnLLMzqK9MdJ5V9iPPpBaxaQGHT0wkaK95slu9Hh5xE6UfbFhoT0yNsGeDvc17ls9SL1/Cgoqsg0Shs9//V7vW99PCJdyiWgrPN/Q44ta6MYKxEuRMzBZJQMel1QpgMU+Viw0Lgd4OtfGT1uhbOovU= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1704959358; c=relaxed/simple; bh=2AcOC7+wQ8CQ5lSbjrtgBlrBWMHskBB8h4iqwxNoVGA=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=d1TIw1lVvBSkDYf78urGsamjIx0mpW4fp/n58IHrxmoLL+RrP/0s0DlpHJnOYNI+81iv8OBz0JN7ejuL6H8+BKHE8ostL/h70HOIB/u5AAPHPely2EqAmZQrVTPoYqWeuG/OOzUQkmvPh4J19hjd9WeJM9VDt6/akXiVDG5xlHg= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40B7iCIL007839 for ; Thu, 11 Jan 2024 07:49:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=Qgav1RaTC1O5wPEPNfoPWX78kVEx+rm12PmVsM6a0GA=; b=SrhpW5KSSjYMn6aOLnX2iXBl7UKAF6ve0VxE3dKTsgWEzIWnL8uvlp6WJeFDNrn3/5fS 2Ws7hoHhBsE99Iikd/R1u7uSkWHWb7rrU41rZpmgV12bdL762Y9GJ2KDLG+NDJrBqles l3dIhzuBA+26dXDfHiRRh7S4nwgBBHrSJvbu8dejLTGxEEv+QZJZBhbfYjXCM1Oy7aGV 6HHil/8J9KUAopFbmcFPGTSu05wMSOw9bYNzZhEvDubQcYjdE7XjvyPAlyOVE32OOyXb g21LWYnh18saoFPosu95Km55E2lTpV+RUUPo30igJnxGShtTo7ebD6psEgYAlHgnYxI1 JA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vjbc2r1uq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 11 Jan 2024 07:49:14 +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 40B78bh0006761 for ; Thu, 11 Jan 2024 07:49:14 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2168.outbound.protection.outlook.com [104.47.55.168]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3vfur6j6ry-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 11 Jan 2024 07:49:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OKEFzVEg39wCjLN0x5uIzaUmVPcHjC1Ir4zuc/0eA0Btmj2EmKDFOiMU7nDCVJ+0qKDwYgEza+e4CJdNVb9zSBL4ZZXfGAKzM3o4fe1f3Vn2trTGO6+EgtQ0skxqMeWQtur+VN19L+MToHEXeFPzJLEGXbOE0+UI8kNhty34IA5cbAJtUoN5VGCEUN03FSfV4MCymSTKwwiedabcClrUh4+OHAfpxUJqdS15+mKHhhofH7VLn3n1T/7zUARKEVRyt9UXpB6NnfBozaWOipF2tL0Npb6hgZXmm8aBb1v7dErg/E9Kwkws08LEt2rlt+sIQBex+4qlAw2I/PWmfCCYLg== 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=Qgav1RaTC1O5wPEPNfoPWX78kVEx+rm12PmVsM6a0GA=; b=oPGiAcvPd5cAOulL76H//pnALzWrVp2c2jet0+WNbEnrOZuwX6tFshLuWtBKB04K6AI796tnM09kv6ZFf36N1ItwKhRJX/5brxYBXUfTBxwVoP7K3/dhWtYWUsOiSmEPQHRYmin3Yi7oXfcX+fT9o4u+Ph2YBWR0q6G4GWHB/cBCn9CXkFAq9PQZUXfMhmkwzsE39a6GL94gPky+gfsjXVs6JVPFSIwddmiUqutjGEySNYy16qnVd2m3JvENLqYGf9VoTSq1Sul42ZSlOo8Bzx95rHV5CpKyi5TAfRxSFAK8rz03bAtK8fLDo/xXLZmMpLtLyEqHTswY+/y5nbIs/Q== 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=Qgav1RaTC1O5wPEPNfoPWX78kVEx+rm12PmVsM6a0GA=; b=Fl+ga/9k+ZokJGVOPcEOXpDP+HE/Kr+Cxqz5+2i/EvimQZXrcoWShHzOBTw3uc0doZx++ZIh77wBDeXCPyE6RU13wdfuJjtsmXNgx6c/IC70cSr0uR6rc9z3JoCTTEDlHISIZBjbVZbTMGVDdOIzxINTpYb8n8pV+rIicmaE5O0= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by BN0PR10MB4901.namprd10.prod.outlook.com (2603:10b6:408:126::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Thu, 11 Jan 2024 07:48:28 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fde7:fb92:8ea1:a5ac]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fde7:fb92:8ea1:a5ac%4]) with mapi id 15.20.7159.020; Thu, 11 Jan 2024 07:48:27 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: Indu Bhagat Subject: [PATCH, V5 00/16] Experimental support for synthesizing CFI for hand-written asm Date: Wed, 10 Jan 2024 23:48:04 -0800 Message-ID: <20240111074820.2677826-1-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.41.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW4PR03CA0061.namprd03.prod.outlook.com (2603:10b6:303:b6::6) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|BN0PR10MB4901:EE_ X-MS-Office365-Filtering-Correlation-Id: e48fb584-92d4-41c9-c383-08dc1279b250 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KL3CSFoTwfBIh/26UNJENipTVa89VA5OUAk/MYYDxcgPKTitWqf7eRqlVL3cZS8PCWupYE/Y3aFXkFdAUYiv4vHFYIEtwhR2abO8lE3Q+oUYKKpi6aNCXndUqHQK2IIsPBZR4gDW1SpHbKZZgnQjWEfpMxjQBGZk3a/KYhh5kCooB4e1GM13af+Luhk9vK9UcNpFXUWVcjhCX3up9W0fu7MAst2WRkVzTuhGGkUbA8OhND/vH3L81JvkEyXBI3d9fMhftkjEBGZZBNKmHH/Vxg5AqJ2Aidp+qIhkzfE+mslSFYzy8lYBiRAxtg5I1r10c+t/7RkGLqvcgdBNCMRrIW/vyUunMyoA2n9eFNjjeXfOANZPLOHPqYco8yG11ne4KbWqTGtmYULV02oVKXbabKoK9w+ZIU68JKPrFvqqftCvpGRfXWeH1OyyvMjfSwqBbNm+YQQiP/h37okJ/UletfBamIof+4S9S3ZdThxSFAj/FX/bTJDQ2N9iUjgIgoLSkoJHKI5Ew7olbX2tEHd03Q+6yApQdDj4RCtN6LYvdg2/DczE9jp+nqzH7Kz1bU7/pcaAS7ADUKywlKBaucXGUNTooBO4nQew70OfXvZYwWMLWawU+Ygz7SMdhzUEG6y91KnZZ8MRanTZ1ygiYCbk0w== 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:(13230031)(346002)(366004)(376002)(396003)(136003)(39860400002)(230173577357003)(230273577357003)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(86362001)(1076003)(6512007)(8676002)(8936002)(107886003)(6916009)(478600001)(66946007)(66476007)(6506007)(66556008)(6666004)(6486002)(83380400001)(316002)(2616005)(44832011)(4326008)(2906002)(66899024)(38100700002)(36756003)(41300700001)(30864003)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LlMr2QqTdk4FcRApq6Df5LUtnXERPCwuoapWfXAqAPoCVCY0I2oOFiwg6tlC?= =?us-ascii?Q?I4MLG49d7/GMPU0Ji5d2xT1LVwyi2uIr3bjcv5DiguRbeDASBpcJ35pv5r9R?= =?us-ascii?Q?83h6H2EjAX1f38e7hPJwi3M+7Ec54mIhGF0W6/zxHIHi2LmQh9milZpP1ELl?= =?us-ascii?Q?CS4NcRnxm8pkbICPHPOD1hKaQ0oFn1bTtl8RyzOG+CzZ/7rGX9bwW/Gr+CAX?= =?us-ascii?Q?wAxwLJiM5bc1VMA32h7RzqEeDlaVf5Xaf8IJzMlpF6oElmaPB5OVXivwX7eW?= =?us-ascii?Q?bsnu/Vt+wX6ChUOG+8NJpXwICcpFLQpyPkhyKM9EvvmBAwmblMIEJdXdY/ed?= =?us-ascii?Q?K/zp8bD0Qd6UDqSd5pz+R7RIbbUwd+x5Q0F1zHC1vfVfdcdewnpw8tNG4wTn?= =?us-ascii?Q?70PHXelaaUmqtU8YdKMPHQT2UykschYAHI4NKhG4o5DgwyTr3WINAP9kZ0mU?= =?us-ascii?Q?QW1Zjn4Znw/EjTY5LqNFVAalDIlImI6osj7ea/7wTbVI58v+SQAow742J+DZ?= =?us-ascii?Q?doCEx8z2EIF7Sqouf6QDQhQ5oYjCJthGoHi63kQZe61r5TylZitB3zmdY8iY?= =?us-ascii?Q?yN67IvYwVvfjiCO2bDTfJHQKS1A8AoPPNCNFUtepZEmGONaw3COPdaW4pLxu?= =?us-ascii?Q?2ZJvphiIGcr87buG85PC5fY49sltwyBheI9/TfW4BVkc2ZVVF2TgLBQCMHNs?= =?us-ascii?Q?0e/TNEwn2PlsKst0z/PIPWUq5ex+0q8XpqxaCvMqLr6raeR59AbR4FVnKYZe?= =?us-ascii?Q?vLZtuOrw1LUXG4xfXaIzArBRbEnfs++BWdfmOrACFBpIkv2p14SrRZnMT3FZ?= =?us-ascii?Q?HBIBKH4EYHbnSj+61ivRLcQvrUCfJ+1zUdrb5psFyviq/dqi/j1ooOzh8WS3?= =?us-ascii?Q?8ivW+FqiT78LZf4riNG9Zb5IKin+zXaVDYmh/vFveJq9WK9YB925pXmM3haq?= =?us-ascii?Q?mJrsgFzbFNqZDKzt++94RxytEkQ2DFdvCcEBsbofr79s57UV3jtwzoDiILzA?= =?us-ascii?Q?s5KVPsM8ctO0VPJyEPuN6Dnw58Rqi0cJbMDcyGx1fVYPpNo17xIWFmpFsQqv?= =?us-ascii?Q?6wZdxVxqgy4qSqyky5Vy9vGCDNnCD0ou+atIUr4sjzbPoA3Rm4jZJGcLUiW5?= =?us-ascii?Q?9NH6T8fBWDL2ua35ycEn95jbARTQ4r9JqrR5W4JfelBL1TEbomfboQQoRHtt?= =?us-ascii?Q?m7nyY4xIa+GZtP8l/DCyXzT7b6cx3YftfJN6lQuuF9QgAXRPS4HxMp6GnzQg?= =?us-ascii?Q?1EqRgMdLHzikVVnqQntTLSZPRIkAo6RjxnqgqRYRbxEe17+n7MFKBly6BOu9?= =?us-ascii?Q?oInvgBvLhq9CP1+yjti7yYpSq9OPdb5Ivbuiw9ht3KQAP+KDpL13iJjO16+l?= =?us-ascii?Q?LUT1bJuv5sV/nrfvxROQMjSSqZw0fEEB1zxXNuMOMonnX9o8OMBzRVv5Z5VQ?= =?us-ascii?Q?YjeMOFm3zN9JIyhfzaTY+ykqiSgkyAO7dYthYiiOfzMLXlc7Z4zDu1gfDAah?= =?us-ascii?Q?oK3CM36CPWBuU7tXcViUkPCS9bGMyk7tL3XRzn3hH8L/DbOZHlyEla8HkV/z?= =?us-ascii?Q?rUIbotZJExm2AwIYtfIE7gpjHGlt9FVy++/GYDKzWNAgs8oy0DFdX3JtCdGv?= =?us-ascii?Q?PtmHX5Pjs3raFfA6AmVM8Y0=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: +zHHJK3kOk1MgmoMFeW2z/zU5xpcGvslhkv/TCshd8uxCMtIy3gT6vILQ3B2gv+Xn0SGMlx68AfA+Ag8H+xu7vV9Eoz/qMJ+dgBckx+oWB9D9bpQQNLKh74kFN0hQaps1a5pjvBvIc52si080x+wOHVIHPdvh6enT9gaOfu9jMUr8YAniJYWjp9jW7qcbMJWGkPLCpo3ApQU5u3M99qz6sQ/nXTHjm9uJ/sgV5zLa55kRGaCLN82ryQPqDSQQuA2tlQE0Tc+n/0U2/I4Ie+EWlOPteHLsyzSe7Q4pRjXGu5QjIp8KA9arV6H0K+pMH5abWmhs2IcztPFFToBbNcrj9LqTvDaIm2TCPNuDPEOoNPUDqcrd0fqOz5Iu/W5gWfRmyX5rl6jkaAcpN+w/z5LZCoMQK7ib/YNDd540luktctSN6gNO+iJIidR6v1v87eT4V14j74WVYNAhmhKsHffeEFzRKdDF0DikXt2yiklzZ7Sh3faqhqRt/j84adqjgTN8ueENPvF3TF6oWnGZNWUcJk8SCJxwpu5gyKkfXWredEsrBHTPuDXGcnQMneNRxtGmui0ns9YurJNvYuVluNPQpnzOi+XgQLJgI1Syiak2JM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e48fb584-92d4-41c9-c383-08dc1279b250 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2024 07:48:27.5510 (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: HoMkDWtEiA9EhNu52GzRo/LpzlzTgX47kqlS0sDqlDULSYNCyFga4N5vtPKsaVwRVBdxUDr5RQ44CK+AIeEZpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR10MB4901 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-11_03,2024-01-10_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401110062 X-Proofpoint-GUID: DXmJRmNF-0Hs4ZtvPWe8w7FDCQyJJaX7 X-Proofpoint-ORIG-GUID: DXmJRmNF-0Hs4ZtvPWe8w7FDCQyJJaX7 X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,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 List-Id: Hello, This patch series adds support in GAS to synthesize CFI for hand-written asm, acronym'd as SCFI. In the current V5 version, I have addressed many of the review comments. If this version looks OK to you, I like this to be merged for the upcoming 2.42 release. The current SCFI support is experimental; Work will need to continue to make SCFI a more mature and robust offering. Thanks for reviewing the previous versions: - RFC patch series (https://sourceware.org/pipermail/binutils/2023-September/129560.html). - V1 (https://sourceware.org/pipermail/binutils/2023-October/130163.html) - V2 (https://sourceware.org/pipermail/binutils/2023-October/130210.html) - V3 (https://sourceware.org/pipermail/binutils/2023-December/131079.html) - V4 (https://sourceware.org/pipermail/binutils/2024-January/131521.html) To aid the review process, each patch has a short summary of changes from V2->V3, from V3->V4, and now from V4->V5. Following are the most significant ones: - After consensus to merge this feature as experimental, the command line option has been changed to --scfi=experimental. - Fixed several cases of incorrect, insufficient or confusing code in tc-i386.c. Some work items for future include: - Allow APX instructions. - Handle 8-bit, 16-bit, 32-bit MOV and ALU ops correctly. - User-interfacing documentation around best-practices to use SCFI. - Other minor items We will create a bugzilla entry for each and handle them over the coming weeks. SCFI ------ Motivation for the patch series is to alleviate users from manually adding the CFI directives in hand-written asm. Manually adding CFI annotations to user input asm needs additional expertise; human-errors are possible and indeed occur more often than one may like. These errors, if present at the time of virtual stack unwind, lead to unfavorable outcomes: incorrect stacktraces, program state corruption etc. For synthesis of CFI to work, the user input must adhere to the ABI and the appropriate calling conventions, as GAS derives the set of callee-saved registers based on that contract. Currently, only System V AMD64 ABI is supported. AArch64 support is in the works. The SCFI implementation is based on some heuristics/rules, please see the patch "gas: synthesize CFI for hand-written asm" for more details. Further, at the moment, SCFI does not help in cases when the control flow graph of the input asm cannot be generated (e.g., in case of indirect jumps, jump tables). Thanks, Indu Bhagat (16): gas: dw2gencfi: minor rejig for cfi_sections_set and all_cfi_sections gas: dw2gencfi: use all_cfi_sections instead of cfi_sections gas: dw2gencfi: expose a new cfi_set_last_fde API gas: dw2gencfi: move some tc_* defines to the header file gas: dw2gencfi: expose dot_cfi_sections for scfidw2gen gas: dw2gencfi: externalize the all_cfi_sections gas: add new command line option --scfi=experimental gas: scfidw2gen: new functionality to prepare for SCFI opcodes: i386: fix dw2_regnum data type in reg_entry opcodes: gas: i386: define and use Rex2 as attribute not constraint opcodes: i386: new marker for insns that implicitly update stack pointer gas: synthesize CFI for hand-written asm gas: doc: update documentation for the new listing option opcodes: i386-reg.tbl: Add a comment to reflect dependency on ordering gas: testsuite: add an x86_64 testsuite for SCFI gas/NEWS: announce the new SCFI command line option gas/Makefile.am | 6 + gas/Makefile.in | 18 +- gas/NEWS | 3 + gas/as.c | 28 +- gas/as.h | 8 + gas/config/obj-elf.c | 18 + gas/config/tc-i386.c | 1112 +- gas/config/tc-i386.h | 21 + gas/doc/as.texi | 31 +- gas/dw2gencfi.c | 45 +- gas/dw2gencfi.h | 20 + gas/ginsn.c | 1259 ++ gas/ginsn.h | 384 + gas/listing.h | 1 + gas/read.c | 29 +- gas/scfi.c | 1232 ++ gas/scfi.h | 38 + gas/scfidw2gen.c | 272 + gas/scfidw2gen.h | 35 + gas/subsegs.c | 1 + gas/subsegs.h | 2 + gas/symbols.c | 3 + gas/testsuite/gas/scfi/README | 16 + gas/testsuite/gas/scfi/x86_64/ginsn-add-1.l | 49 + gas/testsuite/gas/scfi/x86_64/ginsn-add-1.s | 27 + .../gas/scfi/x86_64/ginsn-dw2-regnum-1.l | 69 + .../gas/scfi/x86_64/ginsn-dw2-regnum-1.s | 33 + gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.l | 41 + gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.s | 16 + gas/testsuite/gas/scfi/x86_64/ginsn-push-1.l | 44 + gas/testsuite/gas/scfi/x86_64/ginsn-push-1.s | 17 + gas/testsuite/gas/scfi/x86_64/scfi-add-1.d | 26 + gas/testsuite/gas/scfi/x86_64/scfi-add-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-add-1.s | 13 + gas/testsuite/gas/scfi/x86_64/scfi-add-2.d | 37 + gas/testsuite/gas/scfi/x86_64/scfi-add-2.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-add-2.s | 48 + .../gas/scfi/x86_64/scfi-asm-marker-1.d | 29 + .../gas/scfi/x86_64/scfi-asm-marker-1.l | 3 + .../gas/scfi/x86_64/scfi-asm-marker-1.s | 27 + .../gas/scfi/x86_64/scfi-asm-marker-2.d | 25 + .../gas/scfi/x86_64/scfi-asm-marker-2.l | 3 + .../gas/scfi/x86_64/scfi-asm-marker-2.s | 11 + .../gas/scfi/x86_64/scfi-asm-marker-3.d | 32 + .../gas/scfi/x86_64/scfi-asm-marker-3.l | 2 + .../gas/scfi/x86_64/scfi-asm-marker-3.s | 38 + gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.d | 32 + gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.s | 21 + gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.d | 58 + gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.s | 52 + .../gas/scfi/x86_64/scfi-callee-saved-1.d | 41 + .../gas/scfi/x86_64/scfi-callee-saved-1.l | 2 + .../gas/scfi/x86_64/scfi-callee-saved-1.s | 25 + .../gas/scfi/x86_64/scfi-callee-saved-2.d | 42 + .../gas/scfi/x86_64/scfi-callee-saved-2.l | 2 + .../gas/scfi/x86_64/scfi-callee-saved-2.s | 40 + .../gas/scfi/x86_64/scfi-callee-saved-3.d | 43 + .../gas/scfi/x86_64/scfi-callee-saved-3.l | 3 + .../gas/scfi/x86_64/scfi-callee-saved-3.s | 39 + .../gas/scfi/x86_64/scfi-callee-saved-4.d | 41 + .../gas/scfi/x86_64/scfi-callee-saved-4.l | 3 + .../gas/scfi/x86_64/scfi-callee-saved-4.s | 55 + gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.d | 37 + gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.s | 47 + gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.d | 29 + gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.s | 21 + .../gas/scfi/x86_64/scfi-cfi-label-1.d | 38 + .../gas/scfi/x86_64/scfi-cfi-label-1.l | 2 + .../gas/scfi/x86_64/scfi-cfi-label-1.s | 19 + .../gas/scfi/x86_64/scfi-cfi-sections-1.d | 24 + .../gas/scfi/x86_64/scfi-cfi-sections-1.l | 2 + .../gas/scfi/x86_64/scfi-cfi-sections-1.s | 22 + gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.d | 5 + gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.l | 3 + gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.s | 24 + gas/testsuite/gas/scfi/x86_64/scfi-diag-1.l | 4 + gas/testsuite/gas/scfi/x86_64/scfi-diag-1.s | 22 + gas/testsuite/gas/scfi/x86_64/scfi-diag-2.l | 4 + gas/testsuite/gas/scfi/x86_64/scfi-diag-2.s | 28 + .../gas/scfi/x86_64/scfi-dyn-stack-1.d | 24 + .../gas/scfi/x86_64/scfi-dyn-stack-1.l | 2 + .../gas/scfi/x86_64/scfi-dyn-stack-1.s | 50 + gas/testsuite/gas/scfi/x86_64/scfi-enter-1.d | 36 + gas/testsuite/gas/scfi/x86_64/scfi-enter-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-enter-1.s | 24 + .../gas/scfi/x86_64/scfi-fp-diag-2.l | 3 + .../gas/scfi/x86_64/scfi-fp-diag-2.s | 55 + .../gas/scfi/x86_64/scfi-indirect-mov-1.d | 52 + .../gas/scfi/x86_64/scfi-indirect-mov-1.l | 2 + .../gas/scfi/x86_64/scfi-indirect-mov-1.s | 48 + .../gas/scfi/x86_64/scfi-indirect-mov-2.d | 42 + .../gas/scfi/x86_64/scfi-indirect-mov-2.l | 2 + .../gas/scfi/x86_64/scfi-indirect-mov-2.s | 38 + .../gas/scfi/x86_64/scfi-indirect-mov-3.d | 42 + .../gas/scfi/x86_64/scfi-indirect-mov-3.l | 2 + .../gas/scfi/x86_64/scfi-indirect-mov-3.s | 38 + .../gas/scfi/x86_64/scfi-indirect-mov-4.d | 64 + .../gas/scfi/x86_64/scfi-indirect-mov-4.l | 3 + .../gas/scfi/x86_64/scfi-indirect-mov-4.s | 68 + .../gas/scfi/x86_64/scfi-indirect-mov-5.s | 35 + gas/testsuite/gas/scfi/x86_64/scfi-lea-1.d | 38 + gas/testsuite/gas/scfi/x86_64/scfi-lea-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-lea-1.s | 39 + gas/testsuite/gas/scfi/x86_64/scfi-leave-1.d | 37 + gas/testsuite/gas/scfi/x86_64/scfi-leave-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-leave-1.s | 25 + gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.d | 36 + gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.s | 23 + .../gas/scfi/x86_64/scfi-pushsection-1.d | 43 + .../gas/scfi/x86_64/scfi-pushsection-1.l | 2 + .../gas/scfi/x86_64/scfi-pushsection-1.s | 40 + .../gas/scfi/x86_64/scfi-pushsection-2.d | 40 + .../gas/scfi/x86_64/scfi-pushsection-2.l | 2 + .../gas/scfi/x86_64/scfi-pushsection-2.s | 40 + .../gas/scfi/x86_64/scfi-selfalign-func-1.d | 32 + .../gas/scfi/x86_64/scfi-selfalign-func-1.l | 2 + .../gas/scfi/x86_64/scfi-selfalign-func-1.s | 36 + gas/testsuite/gas/scfi/x86_64/scfi-simple-1.d | 27 + gas/testsuite/gas/scfi/x86_64/scfi-simple-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-simple-1.s | 15 + gas/testsuite/gas/scfi/x86_64/scfi-simple-2.d | 31 + gas/testsuite/gas/scfi/x86_64/scfi-simple-2.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-simple-2.s | 16 + gas/testsuite/gas/scfi/x86_64/scfi-sub-1.d | 26 + gas/testsuite/gas/scfi/x86_64/scfi-sub-1.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-sub-1.s | 12 + gas/testsuite/gas/scfi/x86_64/scfi-sub-2.d | 32 + gas/testsuite/gas/scfi/x86_64/scfi-sub-2.l | 2 + gas/testsuite/gas/scfi/x86_64/scfi-sub-2.s | 29 + .../gas/scfi/x86_64/scfi-unsupported-1.l | 2 + .../gas/scfi/x86_64/scfi-unsupported-1.s | 9 + .../gas/scfi/x86_64/scfi-unsupported-2.l | 3 + .../gas/scfi/x86_64/scfi-unsupported-2.s | 13 + .../gas/scfi/x86_64/scfi-unsupported-3.l | 3 + .../gas/scfi/x86_64/scfi-unsupported-3.s | 13 + .../gas/scfi/x86_64/scfi-unsupported-4.l | 4 + .../gas/scfi/x86_64/scfi-unsupported-4.s | 22 + .../gas/scfi/x86_64/scfi-unsupported-cfg-1.l | 3 + .../gas/scfi/x86_64/scfi-unsupported-cfg-1.s | 52 + .../gas/scfi/x86_64/scfi-unsupported-cfg-2.l | 4 + .../gas/scfi/x86_64/scfi-unsupported-cfg-2.s | 14 + .../gas/scfi/x86_64/scfi-unsupported-drap-1.l | 4 + .../gas/scfi/x86_64/scfi-unsupported-drap-1.s | 75 + .../gas/scfi/x86_64/scfi-unsupported-insn-1.l | 7 + .../gas/scfi/x86_64/scfi-unsupported-insn-1.s | 16 + gas/testsuite/gas/scfi/x86_64/scfi-x86-64.exp | 113 + opcodes/i386-gen.c | 1 + opcodes/i386-opc.h | 10 +- opcodes/i386-opc.tbl | 106 +- opcodes/i386-reg.tbl | 3 + opcodes/i386-tbl.h | 11755 ++++++++++------ 156 files changed, 15482 insertions(+), 4033 deletions(-) create mode 100644 gas/ginsn.c create mode 100644 gas/ginsn.h create mode 100644 gas/scfi.c create mode 100644 gas/scfi.h create mode 100644 gas/scfidw2gen.c create mode 100644 gas/scfidw2gen.h create mode 100644 gas/testsuite/gas/scfi/README create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-add-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-add-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-dw2-regnum-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-dw2-regnum-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-push-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-push-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-3.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-3.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-3.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-3.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-3.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-3.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-4.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-4.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-4.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-label-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-label-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-label-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-fp-diag-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-fp-diag-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-3.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-3.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-3.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-4.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-4.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-4.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-5.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-selfalign-func-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-selfalign-func-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-selfalign-func-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.d create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-3.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-3.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-4.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-4.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-2.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-2.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-drap-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-drap-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-insn-1.l create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-insn-1.s create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-x86-64.exp -- 2.41.0