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 49605386D611 for ; Tue, 16 Jul 2024 18:17:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 49605386D611 Authentication-Results: sourceware.org; dmarc=pass (p=reject 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 49605386D611 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1721153868; cv=pass; b=M87yZJnp8PiRgcrhjeLeUIeP5GIJSxndmf5VlnufbAKB4DqAOFCJHslgy8LknowiXbJlECmF+NyDo7PSTb5c/bR8cxX6YtCixH8RY7neaBRe+KI9bGcjnT0mayXJYbl1tma+COq5KdBcEy9RHcuQoqHQITcGhDUG96Zq2AJF6og= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1721153868; c=relaxed/simple; bh=OSuntYhGSsDdAiifViJEROh6zVPev+Lls36daIAReiU=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=TqC6XePF5EJbJXhOuz6iCKpj+isxBlI5FOt16gO7aOcDPkFUDGrFzr9+rSX4dBJw5zlRgHqbtKlHL+MIWtZMel4jZElx5X4M8XWRJwQlqh9dxCKGIkUqYD0Qlx5ebtIEYc+UcrX8lg+lAb3rRCZ4WMalewbroH5jEsTCentykC4= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 46GHefpv022644 for ; Tue, 16 Jul 2024 18:17:45 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=OzjIrz8Shlq2aU YMJatpV4VCCRq0OYejyxKJxYUaU+Y=; b=octceam156aHm8luRBapxQDhxOPito 7tjsMTSaYhd3jH4X/rhParIVq4v/tiG+Rn47C0M+6J8zaMzRSKguVh/4lRqxXIEC 3UNLPxHCpsYauUtxQxLGwyr49shUYFaD5D7+dLNURMODwde8KXUdi59HzBNYmW4P 0zpVcp2s+/NlxEdpDMHF1oo9tmVIr084+7IDfsMMR63x9+cnlfKFFONGmLe+0onc YzMVaE9WLLd56px2nX7VWdOto21Bpm7L6WFX0R8D+O/tjzXzB9oOWBcPhOqDJ7mO L/maMbe4jqdHGy0zt2sfv21Bc9GKTbvsF9l/iTVFcH9w30l/xKm3vo1Q== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 40dwfj82p7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 16 Jul 2024 18:17:44 +0000 (GMT) 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 46GHd62E019527 for ; Tue, 16 Jul 2024 18:17:43 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2046.outbound.protection.outlook.com [104.47.66.46]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 40dwex1g2u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 16 Jul 2024 18:17:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UkJWTNtg617LyftuvekLPM/sX03rCKg8j+IqR0zIzhMaRSDYEzzmxGmxDU0yljmM0Mt7CrgAyTAqC6bjnt2oUgLtJnRjuRLBAlfz8lVGbkwk4A0pTPf0sbmKj/2N4In78f/Fpb2qhZdx6vTwdIiA0f+B4mGcbsdtO7Wc8B5RQaIeQhhVT+I5iSHFrGyhLyBKFa2JoX4EAMunsK/LXqtScmdFh59o2kLTB4DgU2qX1d2/gDSL41RRW+pydo6tjHnfesHAzgkglJx+3TdyeMprfEdGMPW818Qq5RCsKQyv7KoQ9CCG/40dGSmGM5yC6Ipo86huXxEsleggRu7Z1fH8cA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=OzjIrz8Shlq2aUYMJatpV4VCCRq0OYejyxKJxYUaU+Y=; b=ue7fahhZ3Ewqj0og/nqA//iuOuLpyYHsTrPPWRm2Z4nsuFkAtXl5GRo+TdHSgb1P/1Cmoul+5h8qp8Wa2umkvmzQsvEUOyP+BOCgCzTG9OscxX+SnPhAcVVpKH+TQGQebUfiuJuutorkeqEbTrJCAy/TsC2YCmSY7pueL143DJd13M7WP5KAzgB6+mx9ef+tvE4Cma9tHMruRN/31KtC/Gg6MUcsrR2zPgPu8+bLLAnueZi1+wIMroNZW/BhoyF665MTMZ5l0TZCiq/kBVObEQV9wbmB1N4rvzp8wPTYel/7BjC4mK5DVOVjdtz4PukrnFFC7I3SO6Pn6rwLKXMgIA== 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=OzjIrz8Shlq2aUYMJatpV4VCCRq0OYejyxKJxYUaU+Y=; b=kpCyL6vsMjudaexUU+aQAlhm/6Uo925MZmCU2uOebBwwxqA299bXdp6JR2bGU+Q7QwH+i8Zocsg+C/6HU6metpDPJ1LwYTPusjOKSEv5HH3ufp2IPcTSU5OEjs23OEXeKYHGXe/chAFPUG4HRwnQxOqI/pzzbPz/WhTH3Te8AZo= Received: from CY5PR10MB6011.namprd10.prod.outlook.com (2603:10b6:930:28::16) by LV3PR10MB8131.namprd10.prod.outlook.com (2603:10b6:408:27f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.29; Tue, 16 Jul 2024 18:17:40 +0000 Received: from CY5PR10MB6011.namprd10.prod.outlook.com ([fe80::3aca:a3f6:e92f:782e]) by CY5PR10MB6011.namprd10.prod.outlook.com ([fe80::3aca:a3f6:e92f:782e%5]) with mapi id 15.20.7762.027; Tue, 16 Jul 2024 18:17:40 +0000 From: claudiu.zissulescu-ianculescu@oracle.com To: libabigail@sourceware.org Cc: Claudiu Zissulescu Subject: [PATCH] ctf-reader: Add support for arbitrary CTF archive member as the CTF parent Date: Tue, 16 Jul 2024 21:17:31 +0300 Message-ID: <20240716181731.3498609-1-claudiu.zissulescu-ianculescu@oracle.com> X-Mailer: git-send-email 2.45.2 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VE1PR08CA0030.eurprd08.prod.outlook.com (2603:10a6:803:104::43) To CY5PR10MB6011.namprd10.prod.outlook.com (2603:10b6:930:28::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY5PR10MB6011:EE_|LV3PR10MB8131:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b52947d-50be-4465-5347-08dca5c39427 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7boNxmVDArQUctkXnFdOkHolYe5H7VpSX22SsVr3QNYH5v9kEi4yUTVOhxn/?= =?us-ascii?Q?8gsFPQ0rDIErhvxn8/v0I6B1GKAZ4kaU5TNPB4leFvqH1n1y4zge3YjcXP8A?= =?us-ascii?Q?pvKYzoeoNmk82hPZgMDdHRFbBWly1vTHXofW0X7NQR0XZHTMda9QcPgdw5ay?= =?us-ascii?Q?7rzPBIwZThxNy6UgjrG7oM18l2TjqnlbE/0CvahFyVk34pRwTFffW1pRz2ib?= =?us-ascii?Q?8m6zeydrOwFNEP9cKKeQGs1pZuern9LbDpqzDHGEQVr7a9pxzkrTwipR6M5N?= =?us-ascii?Q?hk8h4xuRtYSDApWT/GM5NDB9zykDWDvoIwsbU7i4T/OcNdhZpjSZFLeuQF28?= =?us-ascii?Q?kxgrZDWdkcWyZY5Fa9WSgNXNGov/T2Bim2wUY6W79iGiU0qEUVBx51MYeAbC?= =?us-ascii?Q?ID3Vv1yAksd3cvpy9CYD3gKPNq/c/WaPRuiRwiykNTWv0D634vejSPDxrNpm?= =?us-ascii?Q?IOmM9kO5u/phYXSR6SHoWTKx6c2XjQ5QcmX2TTo3gcpzTZyO/xl1raPFSO3y?= =?us-ascii?Q?gqAmAW3VX0/Uv2jZRUPgtfdTCVTT/8ZXHvFrMpRvAqGki/ATw84Qe1ycSsuA?= =?us-ascii?Q?fOnM7/LNP2SI1FUJOpUxCaUSUEFEKI3dne+fmEO1OEOuHX1PLnhROgkm5Hle?= =?us-ascii?Q?kDAJ/G/gwEspZMOWUuAzfJDwumP7bcbbtb9/SfD17imwm0zR1kkqFIdXfZxN?= =?us-ascii?Q?LjkYr7yY2cZy57HkYQ2OOx886zjt1DzuK+RDPCjl2vQt8e576GiKRvObdQFP?= =?us-ascii?Q?++IqGwqV54F5bxbin6LT/e30XgmGX4j/x+psskM6+ZoeGySlrJNHdB9WjSXc?= =?us-ascii?Q?RK9j95L+6Zr1u4KsRuJ6RjYM7Hw9L9rLEJxG16+ZpDwr/GjrsHwxA0UvmDcS?= =?us-ascii?Q?T78G0aZPFETI2NNpUKpzHk1HZiNxPEz7rBs8nE0xGW4XsSpLxcqh7zdX6zG1?= =?us-ascii?Q?yGIfJ4OHH4t6MRWnWsyD6hga+swJ/cpdl6+A9aT/ypX4oeMbLrGPtEMvz6P3?= =?us-ascii?Q?RJrstEKh3669GfqbQZVk8tLsiZnGUyZ/+ahwFRHbi7GpB3vUVqny6s6QLZ/i?= =?us-ascii?Q?Xhe/1Jih1gwefABy+EkPzKbGDpqs/HHAvLf5Aw7O7uNvK9gPuPY4oKqX0fk/?= =?us-ascii?Q?v9ZSTrgMpqLr00nS3KubYUZxEDwbKZoXUNZj9Z8An9c+MjDpW0o+9OePYAi3?= =?us-ascii?Q?JZgMGweIzVoVKL8ZjB80yjA+HjTMrwwfmXkp5vJ+Z9IQ79AvEfBvW6dIwlkF?= =?us-ascii?Q?kiZV5Z1W5UFBaFHvehxC3eDoI5E6iWjvgVUeijV3y/FiizWWJ/XPjo529pdJ?= =?us-ascii?Q?jvsz3NxTc4cERYhK8vwFvIdOg8azGelLvCMGFmKiVwjf2A=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR10MB6011.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SwkNEgmbPEytm3KbfIfiqzchV527DTNDCiReSm7MceRCIp6palqAhwjoLL5C?= =?us-ascii?Q?hacyEo9VATRTZPWzwa9ZUDM65N6Y2XDK9LOTdDrHNTDej4M3S7l733i70V6E?= =?us-ascii?Q?1iou+Ke1Pxfvju4VMIseQrCVD4s1nCMNPM4qn9/yI48pJhT171J9Ch42xu3P?= =?us-ascii?Q?mNFtM1P0A9ZwImcKT32C9c8TZieUcCkVnUGoTStGxEl8Dgt1fhyKSkkKQM8N?= =?us-ascii?Q?DyJg7WV4BBc7/pxeoTgkorwEYRICyXaLgLBieKHDNoskQkiyw0EoQIeiTJai?= =?us-ascii?Q?8wf57sWADD2Dzqt1B6sM09GMDD1RCJACNwd2h0RWFtbCfXN95Eu1Er7BgAaE?= =?us-ascii?Q?CQDvDWgLsaCbo/vzS7jg57uRHFRjO9PbGhhNBWhlaMiJHYoxhgVKjmrBomhm?= =?us-ascii?Q?8BzfCasY+oPYq70yYge+6q+s0sXS0ExC62TYVH1HRm9xMNPOrc/fJg9qhba8?= =?us-ascii?Q?eOgNN6XdbNWrBGFeqj/2LCKQg9Z8A0eVNK5AwHsjYNGQzp/7VBghW4rugbJY?= =?us-ascii?Q?1Gzeu3jy7ok4bWVCUMG+dL8/gGiMgmPukkKSsMacJpYqLBfJtzpGE7JS0Zjs?= =?us-ascii?Q?YX0He4ZGOMGUUn780XBTuv7XzavFRBMrSgWUo7LRKfrAWngpIv36wNY+vOW8?= =?us-ascii?Q?FeiSb620P5MhVMvdPhSopji/29AGL6ikb1QGQaqR2dJ5TdYNyVejDnT5HUkS?= =?us-ascii?Q?ftVSLf7udGbjQh0eXIeeGD+YHfC5TKbZpVLmt2tWaOW/PjCo40l72IEWpBu5?= =?us-ascii?Q?NhIKSHSxUOKL8uEAdEpaZuc8GL4aGdFU67bZigPi27zaQVkuFqynpDCr4rCC?= =?us-ascii?Q?vITBZLECEZ0Z7GqGPhaLD4u4VuakMRam2eEPwddy3oDnTJdgYk9SW5b2fw1i?= =?us-ascii?Q?eAIWvRIrEuWwAG8Vbtl3a7Vd/U0oAtlEUSc+THbPtPoEjUM78uD0DCPJhLTR?= =?us-ascii?Q?2B9QoDstrQdC71ytZZgYN6T0nRd2LfrK8sTZUd6B91oB0OdioLuM459RJoww?= =?us-ascii?Q?CHFstNSIY3vu9aXDjhsjFipIso9UhNPjsQub9m4wPCRUR4GtcXAqEisFY9Jn?= =?us-ascii?Q?bwqdQQgXqf4brK5ci8CSwfL7cViLAjFLR4C7xliYZIWRyzE3vIaNGrSmTo6+?= =?us-ascii?Q?TpatTwO1ngZWCkAg2JbHV6qoon3VzsljVvCR86YNBs9j6J2xANDXWxmoF3Am?= =?us-ascii?Q?kfpJN0O38BmeGq7eMJhPXW34s0+rNHnDu3skK6NI6B/u7fSRibPVNpqRFDyH?= =?us-ascii?Q?TBJMmkBvqFLm3rcSwSelTAVvKZougF0S3Q0YQVS8gWLXcpdXPPycsQDnkJiK?= =?us-ascii?Q?ciDjyLJ876PFaV4tC5837FEC/XpauVie+pV396ZY2kc2f0ZdQAYH4N+dgAIt?= =?us-ascii?Q?Or85GQ4APlJNOdXXykPRF98LrFc/qpbNtfiUPtSE5rbqR88By5PAv8yjIcQQ?= =?us-ascii?Q?aLJ5cknLzsIqXBqaUeqQ99ua19y80R327jZ4vYBDKVPXHs0KyF/g/IFf915j?= =?us-ascii?Q?UAe0BC/3PxflW4wEyrup9NOVE0byrR47sSkWVXxiUCoA0t5CjIbBCbV8KX7A?= =?us-ascii?Q?tTDO0YPpoCHQ2BgMCRa4Hzu2CqFiaXnHgggaq7EKzha7x7EXuCEqE1clBrRG?= =?us-ascii?Q?IiESQq814/5echb56PMSCsmjIM0Vp2iaA2bU9SH0AjXQlH3kef0oJylB9xRR?= =?us-ascii?Q?RpNu0Q=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: v5l9L2QMHWwRSMiJnIy/hztUBz27rvAJjtqbS47bSXabHiM+aH5OHSfJakofz1dEmOupITOP/YUwJQdfa59Cwuf/7CDr5j2sa4xZ37/VL7nmAx5lnbHVfQLmlkH7ZaKXuELmA2HAKCS7xcNZWisw9mRVRJVNNy1jTMM66T7vx76O6FSeNkiZsHCOguuC0uR3z0XFRdVY0Z8ljlXRAdvcz2ROtxtIaEAR5TXFZb6+TDOEht/p0T33sbfYHYoZ/EzUoFpjHBFN3FWkhfvdgUqz4dqlOZ+aWLl49d0MBBsdbMv4p36kmRBt7XKttRsJ3fxpOyDLSteniMFm2SKmtnokDOj2VBUDLMmL1/f/Zw1ahfYTd99Anc4yZ8frB2qXI+oPqSpiDQL+00YDmfhCpLhvIgICbLAJLjm3m/nV0srilSY/3Ahnzqny+O8xn40jEaEjLLg3yAC0NRqDVJyynfef3IIJv6qdebjWO2CdI4T3TScAPYAqq4d592k1SmILjxDEl9TTeo+GLybOhzfukeB+HENnIzRuIq8r//R49RbOP1cAtlz3h12Mq7+z1JE7fYvibk5fRcPoLdksWy5NCIgWOSZ35087cZaTNFqQ1Oowuow= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b52947d-50be-4465-5347-08dca5c39427 X-MS-Exchange-CrossTenant-AuthSource: CY5PR10MB6011.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2024 18:17:40.5105 (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: /M6PxkQDKLd9CjK//ZkYNF7VA3M2uPVNL2qha0gaLQAPntIQU+HpdvlnyAqJS9XAbGJeRToWyiQnOz7ePSdW7sjZ3ylHb0v8oufU1nBwSsuzdstwmv/BR0WjDGnxid8E+ZkouCIRkhECsuX1Ts1QKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR10MB8131 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-07-15_19,2024-07-16_02,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 bulkscore=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2407110000 definitions=main-2407160132 X-Proofpoint-ORIG-GUID: R2M8kfZc8B1_slGsvWWRr7Loeqo7KZ8Y X-Proofpoint-GUID: R2M8kfZc8B1_slGsvWWRr7Loeqo7KZ8Y X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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: From: Claudiu Zissulescu If the CTF section contains ambiguously-defined types, it will consist of an archive of many CTF dictionaries, all inheriting from one dictionary containing unambiguous types. This member is by default named .ctf, like the section containing it, but it is possible to change this name using the "ctf_link_set_memb_name_changer" function at link time. When looking at CTF archives that have been created by a linker that uses the name changer to rename the parent archive member, --ctf-parent can be used to specify the name used for the parent. This new option can be used with abidw, abidiff and abipkgdiff tools. * include/abg-ctf-reader.h (parent_name): New function. * src/abg-ctf-reader.cc (ctf_parent_name): New variable. (ctf_parent_name): Sets ctf parent name. (parent_name): Gets the elf base reader and sets the parent name. * tools/abidiff.cc (ctf_parent): New option. (parse_command_line): Parse the new option. (main): Handle the new option. * tools/abidw.cc (ctf_parent): New option. (parse_command_line): Parse the new option. (load_corpus_and_write_abixml): Handle the new option. * tools/abipkgdiff.cc (ctf_parent): New option. (compare): Handle the new option. (compare_to_self): Likewise. (parse_command_line): Parse the new option. Signed-off-by: Claudiu Zissulescu --- include/abg-ctf-reader.h | 5 ++++- src/abg-ctf-reader.cc | 25 +++++++++++++++++++++++++ tools/abidiff.cc | 27 +++++++++++++++++++++++++++ tools/abidw.cc | 19 +++++++++++++++++++ tools/abipkgdiff.cc | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+), 1 deletion(-) diff --git a/include/abg-ctf-reader.h b/include/abg-ctf-reader.h index c1f2a3f9..4e7f5a12 100644 --- a/include/abg-ctf-reader.h +++ b/include/abg-ctf-reader.h @@ -37,7 +37,10 @@ void reset_reader(elf_based_reader& ctxt, const std::string& elf_path, const vector& debug_info_root_path); + +void +parent_name(elf_based_reader& rdr, + const std::string& parent_name); } // end namespace ctf_reader } // end namespace abigail - #endif // ! __ABG_CTF_READER_H__ diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc index 4b6c6cd8..6ee96265 100644 --- a/src/abg-ctf-reader.cc +++ b/src/abg-ctf-reader.cc @@ -156,6 +156,9 @@ class reader : public elf_based_reader ctf_sect_t strtab_sect; translation_unit_sptr cur_tu_; + ///CTF parent name. + std::string ctf_parent_name; + public: /// Getter of the exported decls builder object. @@ -464,6 +467,10 @@ public: std::replace(dict_name.begin(), dict_name.end(), '-', '_'); } + else + { + dict_name = ctf_parent_name; + } if ((ctf_dict = ctf_dict_open(ctfa, dict_name.empty() ? NULL : dict_name.c_str(), @@ -745,6 +752,13 @@ public: return corp; } + /// Sets ctf_parent_name. + void + set_parent_name(const std::string& parent_name) + { + ctf_parent_name = parent_name; + } + /// Destructor of the CTF reader. ~reader() { @@ -1748,6 +1762,17 @@ reset_reader(elf_based_reader& rdr, r.initialize(elf_path, debug_info_root_path); } +/// Set a given parent name. +/// +/// @param ctf_parent_name the custom ctf parent name. +void +parent_name(elf_based_reader& rdr, + const std::string& parent_name) +{ + ctf::reader& r = dynamic_cast(rdr); + r.set_parent_name(parent_name); +} + /// Returns a key to be use in types_map dict conformed by /// dictionary id and the CTF type id for a given type. /// diff --git a/tools/abidiff.cc b/tools/abidiff.cc index cadb742b..515b5128 100644 --- a/tools/abidiff.cc +++ b/tools/abidiff.cc @@ -134,6 +134,7 @@ struct options #endif #ifdef WITH_CTF bool use_ctf; + string ctf_parent; #endif #ifdef WITH_BTF bool use_btf; @@ -310,6 +311,7 @@ display_usage(const string& prog_name, ostream& out) << " --stats show statistics about various internal stuff\n" #ifdef WITH_CTF << " --ctf use CTF instead of DWARF in ELF files\n" + << " --ctf-parent set the CTF archive parent name\n" #endif #ifdef WITH_BTF << " --btf use BTF instead of DWARF in ELF files\n" @@ -756,6 +758,14 @@ parse_command_line(int argc, char* argv[], options& opts) #ifdef WITH_CTF else if (!strcmp(argv[i], "--ctf")) opts.use_ctf = true; + else if (!strcmp(argv[i], "--ctf-parent")) + { + int j = i + 1; + if (j >= argc) + return false; + opts.ctf_parent = argv[j]; + ++i; + } #endif #ifdef WITH_BTF else if (!strcmp(argv[i], "--btf")) @@ -1432,6 +1442,15 @@ main(int argc, char* argv[]) ABG_ASSERT(rdr); set_generic_options(*rdr, opts); set_suppressions(*rdr, opts); + +#ifdef WITH_CTF + // If the user sets the ctf parent make sure we propagate it. + if (!opts.ctf_parent.empty() + && opts.use_ctf) + { + abigail::ctf::parent_name(*rdr, opts.ctf_parent); + } +#endif c1 = rdr->read_corpus(c1_status); if (!c1 @@ -1524,6 +1543,14 @@ main(int argc, char* argv[]) set_generic_options(*rdr, opts); set_suppressions(*rdr, opts); +#ifdef WITH_CTF + // If the user sets the ctf parent make sure we propagate it. + if (!opts.ctf_parent.empty() + && opts.use_ctf) + { + abigail::ctf::parent_name(*rdr, opts.ctf_parent); + } +#endif c2 = rdr->read_corpus(c2_status); if (!c2 diff --git a/tools/abidw.cc b/tools/abidw.cc index 14f2078c..41909512 100644 --- a/tools/abidw.cc +++ b/tools/abidw.cc @@ -118,6 +118,7 @@ struct options bool list_dependencies; #ifdef WITH_CTF bool use_ctf; + string ctf_parent; #endif #ifdef WITH_BTF bool use_btf; @@ -261,6 +262,7 @@ display_usage(const string& prog_name, ostream& out) #endif #ifdef WITH_CTF << " --ctf use CTF instead of DWARF in ELF files\n" + << " --ctf-parent set the CTF archive parent name\n" #endif << " --no-leverage-dwarf-factorization do not use DWZ optimisations to " "speed-up the analysis of the binary\n" @@ -402,6 +404,14 @@ parse_command_line(int argc, char* argv[], options& opts) #ifdef WITH_CTF else if (!strcmp(argv[i], "--ctf")) opts.use_ctf = true; + else if (!strcmp(argv[i], "--ctf-parent")) + { + int j = i + 1; + if (j >= argc) + return false; + opts.ctf_parent = argv[j]; + ++i; + } #endif #ifdef WITH_BTF else if (!strcmp(argv[i], "--btf")) @@ -683,6 +693,15 @@ load_corpus_and_write_abixml(char* argv[], set_generic_options(*reader, opts); set_suppressions(*reader, opts); +#ifdef WITH_CTF + // If the user sets the ctf parent make sure we propagate it. + if (!opts.ctf_parent.empty() + && opts.use_ctf) + { + abigail::ctf::parent_name(*reader, opts.ctf_parent); + } +#endif + // If the user asked us to check if we found the "alternate debug // info file" associated to the input binary, then proceed to do so // ... diff --git a/tools/abipkgdiff.cc b/tools/abipkgdiff.cc index d1ddd341..0d6a1fb2 100644 --- a/tools/abipkgdiff.cc +++ b/tools/abipkgdiff.cc @@ -214,6 +214,7 @@ public: optional exported_interfaces_only; #ifdef WITH_CTF bool use_ctf; + string ctf_parent; #endif #ifdef WITH_BTF bool use_btf; @@ -922,6 +923,7 @@ display_usage(const string& prog_name, ostream& out) "binaries inside the input package against their ABIXML representation\n" #ifdef WITH_CTF << " --ctf use CTF instead of DWARF in ELF files\n" + << " --ctf-parent set the CTF archive parent name\n" #endif #ifdef WITH_BTF << " --btf use BTF instead of DWARF in ELF files\n" @@ -1486,6 +1488,15 @@ compare(const elf_file& elf1, reader->add_suppressions(supprs); set_generic_options(*reader, opts); +#ifdef WITH_CTF + // If the user sets the ctf parent make sure we propagate it. + if (!opts.ctf_parent.empty() + && opts.use_ctf) + { + abigail::ctf::parent_name(*reader, opts.ctf_parent); + } +#endif + corpus1 = reader->read_corpus(c1_status); bool bail_out = false; @@ -1575,6 +1586,16 @@ compare(const elf_file& elf1, reader->add_suppressions(priv_types_supprs2); set_generic_options(*reader, opts); +#ifdef WITH_CTF + // If the user sets the ctf parent make sure we propagate it. + // Note: Do we need to have sparate parents per package? + if (!opts.ctf_parent.empty() + && opts.use_ctf) + { + abigail::ctf::parent_name(*reader, opts.ctf_parent); + } +#endif + corpus2 = reader->read_corpus(c2_status); bool bail_out = false; @@ -1741,6 +1762,15 @@ compare_to_self(const elf_file& elf, reader->add_suppressions(supprs); corp = reader->read_corpus(c_status); +#ifdef WITH_CTF + // If the user sets the ctf parent make sure we propagate it. + if (!opts.ctf_parent.empty() + && opts.use_ctf) + { + abigail::ctf::parent_name(*reader, opts.ctf_parent); + } +#endif + if (!(c_status & abigail::fe_iface::STATUS_OK)) { if (opts.verbose) @@ -3631,6 +3661,14 @@ parse_command_line(int argc, char* argv[], options& opts) #ifdef WITH_CTF else if (!strcmp(argv[i], "--ctf")) opts.use_ctf = true; + else if (!strcmp(argv[i], "--ctf-parent")) + { + int j = i + 1; + if (j >= argc) + return false; + opts.ctf_parent = argv[j]; + ++i; + } #endif #ifdef WITH_BTF else if (!strcmp(argv[i], "--btf")) -- 2.45.2