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 9156738582BA for ; Fri, 8 Jul 2022 13:47:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9156738582BA Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 268B881U032250 for ; Fri, 8 Jul 2022 13:47:39 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3h4uby85n0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 08 Jul 2022 13:47:39 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 268De5Qa026572 for ; Fri, 8 Jul 2022 13:47:38 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2107.outbound.protection.outlook.com [104.47.55.107]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3h4ud9xxse-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 08 Jul 2022 13:47:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JciHtCuQ9FL90qXkKQz7j8j1CE/UHDBg2/hVLSzW7+d9S2QnGnnVa7vAxBxJb/+3+0v0nZy9LoQRx99OJn0DpZZpggrdLWixBvv2dPop8c0OS6kIF6DIouJ0ezG155Hgq46IRB80V7f5zXnbMUfRViQVK9sAbigVopv/Di3erjfOXpGkICpyokJV+eQQj3B5MG87DzyxB4wSK3tLusJplLYRDd1E9uHagJAsrdNIEsr43DS1C0xtohNMqkPW1Hhbk7rJIB2cAHNh+WmaTU7dHyT0fOPs26pGAcznoipaYxhcvjOGw6b7ZHkcqZFshJWrI0Elfw0ospLBAlg+8NhCnA== 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=J32/NrtCO5ikDFR7eV0fHe7U0dy7lzetck33UTA7rWA=; b=iwmUpmtuSng5S9/HHbpcywLi3fdPxiXK37gbVR6yAOXcyfAtOmtwcmuHYGSQpKmddZPb70ZPdCN+YIxO/ELx0hmbrIiHLSna6b2aBTDarovanizO6de+gvaAz8TSQq81uG1lOUg4p8RbZ4WM52G2hWQPy5gkmYvR0w7yWz73aFeQ1e5JmsOsUvfxibgNSjbPS14RD5jHSydX4ctQXFwqpxqzbBIA+rF1XH28HYecCmTM7VpnmrkVhfvLr8y7uu3f1x+bHBXxrIwJE6dUndIg2X0NrXgmHFoXwrhbOurv7SbJLEd4nOh8Ns2zbbWAlhzVTm7w4gBfwBTUl8OY22jNIg== 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 Received: from MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) 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.5417.20; Fri, 8 Jul 2022 13:47:36 +0000 Received: from MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::40f0:f59d:aca7:92ea]) by MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::40f0:f59d:aca7:92ea%3]) with mapi id 15.20.5417.020; Fri, 8 Jul 2022 13:47:36 +0000 From: "Guillermo E. Martinez" To: libabigail@sourceware.org Subject: [PATCH] ctf-reader: add support to looks for debug information to extract kABI Date: Fri, 8 Jul 2022 08:47:25 -0500 Message-Id: <20220708134725.188383-1-guillermo.e.martinez@oracle.com> X-Mailer: git-send-email 2.35.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SA9PR11CA0008.namprd11.prod.outlook.com (2603:10b6:806:6e::13) To MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1176b83a-f9c8-4a14-a56d-08da60e86a74 X-MS-TrafficTypeDiagnostic: CY5PR10MB6239:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ImsLvnx9JyKbrzK7n6luLtwRAAfBgWvDWUiqs4s2y1ynJ5pjymOBEVaS6LxbID70zuvBmrrQ1pszzxW2LIJvUljUYgd8kS7K3vHXi+jHIVw0nQHWq/Pyepjsw9ds80BQsVw3R/7ZKJomAkhxbINSo/fF7djqdt87W/oWheXJz/6b1+9yNVU+qHuDltFaxkoDkcJ5CNncv7BKs0l4T8nY/vTITBMXklZHEy0ngspUj3XOxtsCYb0IzvcjMpqSypjVmgCnCOmgMfg/ShO69h1VnkX0Vx0N+KJbmyCbvUF6IqfXZorFnUz0z05zIGiONXFGHkyV3vbm/+8KW2VKF9u9odrvqWGU6vygTdd4EKVCCAdz6o9vU8fs+AxlIrRnQ0L+WlPyMwNNynl6qRguBlvm0HX/qvDgwr0WDEfWw6gS35G+GccDvS2XuTWyC9KzA9cKeb6Cb6qjhvYlUobsWo8/dUJAaf1fsyW/K/C6vFls4V3BCmkkDepTGq3eZ2jFB4hPK59DAM4Wv6/yLpeqnsWgwO/nAlALC6C6ekluOOcS+JYaGfftP+rOfqFGZA0WFUwUNTanizM58EyVT3BpZssn93B5LOr05QMNe4l18XCha0y5x3RuU40rlWkv0+Ybqk8LWvrAqyQOCwjxuQmr6m1lpZ4HqqiERJU7CQqSzolROy+meY7lwXus/4A70H6H8te2cbE2j3Vrob0JWXJ4bCxPR+pqpL/7wjD9QfqLl1LgdYZ2OxUDZB4UEQnkQlrxBOgl X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR10MB1407.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(39860400002)(366004)(376002)(346002)(136003)(396003)(2906002)(103116003)(38100700002)(186003)(36756003)(5660300002)(8936002)(6486002)(2616005)(8676002)(66946007)(66556008)(83380400001)(4326008)(66476007)(86362001)(6916009)(1076003)(52116002)(6512007)(316002)(107886003)(6666004)(478600001)(41300700001)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?O2lawMBic3j0l2YvQ2oXOdpc0885KO24gQHR5Vw74uRYHOUWrprLAKr7+Fit?= =?us-ascii?Q?RqcgcPPsskraoFexBZxU7gyvJ5ClLDwiPuEkT0YcgVdQSPxGi1Yod1kSN1ts?= =?us-ascii?Q?gMjWnzDrGVBrieoKctmWeAbHjGo6bmsWsN8Y+69wfiG0ZdbJN75wMCc91ZaA?= =?us-ascii?Q?HQlpRzdhzhovMcFtIMmekABFI68KfHqataS1fJoiD5UaS8+iui07w1vvs8gV?= =?us-ascii?Q?9WRK5FRhdeYzS+me7BDm+fwZFQVDlNhv2FaWZ87XtyLFdy8Bwu40O20KNSAY?= =?us-ascii?Q?M/HtDMTZskp0QyUifb69Bkd2F3JeCmzLirrL+iRdK6P/P2twztfBwdklEeWN?= =?us-ascii?Q?DF3QZa+ymYHd82E+gf0j9Edcob/Ajb1aZYRLcCk1ETbhDGPElg9W1CPportJ?= =?us-ascii?Q?d9t/ZuZjKSjzOT02KQXTqxuZyracYbnxTnJQaZKMZYMmwCVCOk+S//wpGuc7?= =?us-ascii?Q?GPQxiObLBcPa1I5Ud8O7h/rWpHje2n702hCT6vg4MP6jZNmJJVC1Z6yM257A?= =?us-ascii?Q?VZXdTk/0+6WkLaYDMpX1Ri7htU8Vs3KHYb/b4rXeKr2SWKSUrB9YFsBqmxIe?= =?us-ascii?Q?/YP/3/9V7nWXinhj5020xpLkvSSzcGywj6nYK9MSM8RJsjwmodA+HrSftZxA?= =?us-ascii?Q?7r3CjcJYUSbU9qrQudd8l6MQi162xzJu4u5efvo+R3Eur1NAw9Kt3xNVaZO5?= =?us-ascii?Q?pX1G8uYdILTunj5WGaKSs09yEzBUP+IlV6XJehZVHXgjLXoNoA15uIJkK8sc?= =?us-ascii?Q?GL43qUXh0m94WqEWCZyUmiDdRcWJuWoIMwcPOfvOCnsbiato+2km1RMdX9P0?= =?us-ascii?Q?DS+e5B6nfXLJyYqGllvTh25EtdU8z2NKLBRijbmOYkYWVxztQtu22YPGntXf?= =?us-ascii?Q?UU/K8PxPeIxN4NzcOSC2QKnAT0U63H0uTkdiwZ+yWW24zf3l3rJg6gRAf3/a?= =?us-ascii?Q?vws1AhHk6NyxS/2vIKSlNR1CFU9oowIc0zQpznJf5L2VGHy0Oy1eQx7Xatqu?= =?us-ascii?Q?0L9TAz8WGWwtPY6NHhsObYbMBR4Rwpsixp5ZKk9MNQoAZtj0D86ipuH+IfOv?= =?us-ascii?Q?eYEguQFib+GMBAJj9oq2P2zI/P1Zv14jwjR9drwYNae7qEt+mqsvKKLbYMjw?= =?us-ascii?Q?bpx0M2Qk7twuq5zNcb7luYSWPeH1RmmKiRhuLmuPtrzAyBUoQShB+mnaCr24?= =?us-ascii?Q?C3G6Q/4pNqnlVU8pXCJMz0bZcHOzeA7Lfi+X1xrohu9QjU4s2ngeDJOo1Qs8?= =?us-ascii?Q?7fiFGD0mwmssbqQO4FsY5Xd5EkaxPqtS+Lvs90qqiAnxpxM9HShVO190APBo?= =?us-ascii?Q?wNs2sb7NmqOVFcK0yCa1LTzJ00tRi34I2sJSID0SEOQozzk7sSHyNjMc8y2p?= =?us-ascii?Q?NizQoVfRJuPo6lBEaxSjbHmmdk/MJosp1rB5dtmC/kOTKLh930ZVY8665bow?= =?us-ascii?Q?g7O+jA45rpbBLn5M/jp8aF5jYFdX1Bh5CRWskJDaD9ZdVDD0wF1ZsIyBuz1A?= =?us-ascii?Q?iCLsvDfzUwQ7OVeQcanDp3UwzlBh3rv7zjdFOoOE+FkNeq5fXbTW744VUupF?= =?us-ascii?Q?2Lwi0zsavIMKyyrhtV92ubzmOjpQg8z436bG5wwwlebXrpVfLL4qXSxNz2gs?= =?us-ascii?Q?dMbqJ8XQlLgSC2hVUEvdwIm1AxRKSWy0tuvn5Nw2B6bhKS8roCqTbcSab7dB?= =?us-ascii?Q?LYLiISZhDnKgmBPevyw5RB0TpWw=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1176b83a-f9c8-4a14-a56d-08da60e86a74 X-MS-Exchange-CrossTenant-AuthSource: MWHPR10MB1407.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2022 13:47:36.2929 (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: itgTakqLS8e7Krj8gz+r2jwJ6GVBsiDiH/IGTy3tWIKOxXfnjlCFZExYTdZQTGfC9g00MxLOBxlZ1t9C/0kaMdH4sX0pSoJm08qjpplPUac= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6239 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517, 18.0.883 definitions=2022-07-08_11:2022-07-08, 2022-07-08 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207080052 X-Proofpoint-ORIG-GUID: 4F4KA_su7kkf_q8ZPBYU5cxVxcyAB8bb X-Proofpoint-GUID: 4F4KA_su7kkf_q8ZPBYU5cxVxcyAB8bb X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, 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 X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2022 13:47:41 -0000 Hello, This patch update the ctf-reader in libabigail to allows use `--debug-info-dir' option to looks for `vmllinux.ctfa' and in this way compare stand alone `vmlinux' file and `modules', as follows: abidiff --ctf /path/to/[vmlinux|modulev1.ko] --d1 /path/to/vmlinux_ctfa_v1 \ /path/to/[vmlinux|modulev2.ko] --d2 /path/to/vmlinux_ctfa_v2 Please let me know your thoughts Thanks in advanced, guillermo --- abidiff tool is now able to looks for CTF debug information to extract the kABI, it uses the standard `--debug-info-dir' option to locate `vmlinux.ctfa`, looking at first instance in the base directory where the ELF binary (vmlinux/module) is want to be processed. * src/abg-ctf-reader.cc (find_ctfa_file): Add new function meant to locate the Linux Kernel debug information file `vmlinux.ctfa'. (ctf_reader::read_corpus): Use `find_ctfa_file' function. Signed-off-by: Guillermo E. Martinez --- src/abg-ctf-reader.cc | 47 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc index 77e77d13..c1ea15aa 100644 --- a/src/abg-ctf-reader.cc +++ b/src/abg-ctf-reader.cc @@ -43,6 +43,8 @@ namespace abigail namespace ctf_reader { using std::dynamic_pointer_cast; +using abigail::tools_utils::dir_name; +using abigail::tools_utils::file_exists; class read_context { @@ -1515,6 +1517,42 @@ slurp_elf_info(read_context *ctxt, status |= elf_reader::STATUS_OK; } +/// Looks for vmlinux.ctfa file in default directory or in +/// directories provided by debug-info-dir command line option, +/// it stores location path in @ref ctfa_file. +/// +/// @param ctxt the read context. +/// @param ctfa_file file name found. +/// @return true if file is found. +static bool +find_ctfa_file(read_context *ctxt, std::string& ctfa_file) +{ + std::string ctfa_dirname; + dir_name(ctxt->filename, ctfa_dirname, false); + + // In corpus group we assume vmlinux as first file to + // be processed, so default location for vmlinux.cfa + // is vmlinux dirname. + ctfa_file = ctfa_dirname + "/vmlinux.ctfa"; + if (file_exists(ctfa_file)) + return true; + + // If it's proccessing a module, then location directory + // for vmlinux.ctfa should be provided with --debug-info-dir + // option. + for (vector::const_iterator i = ctxt->debug_info_root_paths_.begin(); + i != ctxt->debug_info_root_paths_.end(); + ++i) + { + ctfa_dirname = **i; + ctfa_file = ctfa_dirname + "/vmlinux.ctfa"; + if (file_exists(ctfa_file)) + return true; + } + + return false; +} + /// Create and return a new read context to process CTF information /// from a given ELF file. /// @@ -1577,12 +1615,11 @@ read_corpus(read_context *ctxt, elf_reader::status &status) int errp; if (corp->get_origin() & corpus::LINUX_KERNEL_BINARY_ORIGIN) { - std::string filename; - if (tools_utils::base_name(ctxt->filename, filename) - && filename == "vmlinux") + if (ctxt->ctfa == NULL) { - std::string vmlinux_ctfa_path = ctxt->filename + ".ctfa"; - ctxt->ctfa = ctf_arc_open(vmlinux_ctfa_path.c_str(), &errp); + std::string ctfa_filename; + if (find_ctfa_file(ctxt, ctfa_filename)) + ctxt->ctfa = ctf_arc_open(ctfa_filename.c_str(), &errp); } } else -- 2.35.1