From patchwork Fri Feb 17 00:57:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guillermo E. Martinez" X-Patchwork-Id: 65141 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AD6E63858409 for ; Fri, 17 Feb 2023 00:58:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AD6E63858409 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676595483; bh=zMuPmClkkvKDtz7pkRjRpS6cJkluTd9M7VpqdG94OSc=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Help:List-Subscribe:From:Reply-To:From; b=lTPk6WXFVXhyJ106d8t4/MB4ffEkAA/ju/ie/LhYbTO0p4+8LcXOBLzl8+dXpwSFY xrarHb4VXFmYkXCkP6cSNZB1BkPtdBg+03L6N4IWt7Gt1aKU8zeTQyksvSO4YbRDyY npBFOzjmFDL+NpBgPBoj3tTE8F/tO81/aMFaCcaY= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 4E8A43858D33 for ; Fri, 17 Feb 2023 00:57:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4E8A43858D33 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31GMiUbQ004001 for ; Fri, 17 Feb 2023 00:57:52 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 3np2wa4rxp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 17 Feb 2023 00:57:51 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31GNXMKu015268 for ; Fri, 17 Feb 2023 00:57:50 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2101.outbound.protection.outlook.com [104.47.70.101]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f9h7qb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 17 Feb 2023 00:57:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PTh7RscwGdDF5Md+hJlVUW6Ksw5kRgd+TTXau4hTuBA4SswgrFmfSfkgHsVyk5HxgGQs+zWTlAvSaT5gUZ/PIL+Ucs/GfdYnmH6yUt6jgOBgZhbIVYeE6TstNdiSDNtYhINS9zOJ6DD0NvP4JTuLPQ5XadXQigVke46anziq27LK6cXrO4AgJhNcOA/JxxZ1ZywJhyIZc+DiXw8optPBmMFlFmB+T9Y1Bbe0rlf4T13BFwLWX4WSSIc/5dEUoQ3MoB8M+oy9/yxJH1zAPH9+9vCMAuTqSDTkGZT43wrol8qPca2IoGZgkJ7zLFKAIWvm3N0ENvqLA/TixSjTn+aRrQ== 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=zMuPmClkkvKDtz7pkRjRpS6cJkluTd9M7VpqdG94OSc=; b=I4l2Eo/hBCgYjdAzyJi086vCXZlnkWI9NtstmnlKD6r+Tl0ln5YTvM5/eCRcc+YBjfkzFDiYXvb6w1fDd0bae6dlGGs9nmpZwM/A9LbYytyHQ/LXN0fUZooE0Bt95IsxDl9yTC1Hs41libzJAVWDIW3idfapbr3M0jCfs3Q2lG5ZGquyV1mRtc+RCOgEsVi+Yg9KX/6HS1Kf/4Hj7hBe+gYy/XUH7oHJdvT2AHNmcQdAWQav9PmBT5MOly2tOGhogeBfnHKB0XebMOuRBhLO7wXwEY8FD/iJVnQwpVo+AfI+J9GI8uFSGsKDiLtEE4qeCpuRqrek7xZlSmbK1lETiw== 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 BLAPR10MB5364.namprd10.prod.outlook.com (2603:10b6:208:322::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.6; Fri, 17 Feb 2023 00:57:48 +0000 Received: from MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::70df:cb31:cf08:5b12]) by MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::70df:cb31:cf08:5b12%9]) with mapi id 15.20.6111.010; Fri, 17 Feb 2023 00:57:48 +0000 To: libabigail@sourceware.org Cc: "Guillermo E. Martinez" Subject: [PATCH] abipkgdiff: Fix comparing CTF kABIs using Oracle Linux RPMs Date: Thu, 16 Feb 2023 18:57:43 -0600 Message-Id: <20230217005743.2607886-1-guillermo.e.martinez@oracle.com> X-Mailer: git-send-email 2.39.1 X-ClientProxiedBy: SA1PR03CA0021.namprd03.prod.outlook.com (2603:10b6:806:2d3::24) To MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR10MB1407:EE_|BLAPR10MB5364:EE_ X-MS-Office365-Filtering-Correlation-Id: 736ffc3e-c6f1-44d1-d002-08db1081fc97 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ygQtIUmGcBMB18K+x6l85UNBzJvfA4Pp/uTS4kiy/jODEoqUaL7Req4vNKR3WLbdF9kyzoi1YyiwNYNTEloDIGY0kLJ2DiSLIGLwavw0VaD8XeudEoWevkQZj1SaaKONYL6swMOqR7TvOe/ZXHBpUewF0iQ/uvVTi+xJ60AmVvEOri57aOpWGRpB+H9pfdaD9F0I2zGC2ESoUR8SW6/D0stBPFiJTsoqGsdG+FMXYLgb3pXn9Dz9qZyEzSIYI5kejojIUjX5/XOCZB5p9S6oKWHfvPf46ZQ0MMplzBZ1087FLDzlylKyVmf2RXgzEGTewli38lHj4NMX4CQn9qjnTTZDnsrABg3caM88+EpN6+1xN4j+Vl6JcAMeE3sp2aHXpIGwJ3YkXt/NKF+5d20eLA467lnTggKFc8qrkxV7RJj4YSsa1x73Z9w0oTiIIGEY8a7wgg2ae5CSsNl3gsKlgQbVX+w6Afw7GF2JE9A1/qIzK58+rK88iXdKTCE8C6YU2gqN4u48kS4WJj3ulHSpsQOJB6w6a2TEWOAgoXlMTscID3md7ozvHCdwAN9LSBC/ExgHQ3y/Cj8EuOKQWsWso2fr+nvVrQU7hKg2Ac3NCN64qIsYmpdbmoP2TSn0YQNcaOnudY03rbGka71WLIKAuA== 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:(13230025)(136003)(346002)(376002)(39860400002)(366004)(396003)(451199018)(103116003)(36756003)(86362001)(2906002)(5660300002)(8936002)(83380400001)(38100700002)(66946007)(4326008)(66556008)(66476007)(8676002)(6916009)(6486002)(478600001)(41300700001)(186003)(6512007)(1076003)(6506007)(2616005)(316002)(6666004)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AvMxh8IXSwxOywu1Jolg7VdRe4lqo/aRVWLYBSMh5kuGPrzFT/GXvu48FCu0iwGSqR385kWrXNwJmhoGLWCi9VPfT/MnPoDpOATr0YANf3E59j8GKjjyHx3rLAEbbcj2RKRsFjgy9qNPcXPl7ZvKtPA46m1yD8DUtf0cLI2rfJzKg0xei1Nj7a3GvxyRKUbWUHJchky3LR93Enxf6IGNGn2AJ9gC9+4offmQzTXfuDkUT6CBUoecs0b/5zK5tg7T+pGDx1nOyAXWCdCyp7sIWG9GAHXXeYjEhW0BKe8RCMKbe+RVnNtRqogdy/KCVK0TAKyor3iVYqWg+cGXe6Zl09E6rJBFL+mM7OvPkx2t0Yqj8pIcbOxYlzEMv5hwjAW3hAar1h63KKP1GKOR5EwgAf2FV4bmL7wJrjp+4oPF4N7Mjvrsh45r/nwJ51Y1PJx/9daBMLBb+lQRH0W+uAblJqH4BhSFjW+b8Hg0Hk9nzwxCHAfZEHEBr/YSt76eRQ0C8eOuJpaCGL9PvhkfxQlCaYGD0k/zYEffDDw6soKWX9Wq3J22rp5ud3eh3ZP1B0lZZMq/OKyVAhvxkVxg40yutdx3LlK8BH/Yn00eNmrq+L5DNkI/WaJrZQZtpxr6OcxypSTvPnCAqfEg9a6tkbXil4d8sR4Gf8nJ1bqQ7dNoScjjzYOjlNzMWXCXKFrLvAZrUuCGqmtiZH++i3NP2VGIgpkCtb3EDJk7dqiNjJ3js8jsdoXMhhxjHDx98SkDRLvvPsIteVYsonT7hb85xR1WsfT9bjxo3eqTYdScxHi7ziP8WpGGoY2neEK2Y4UJwI9Vnolw6lOb003HE3LwJZI2+q3cTAhRC+guP3P4yrTIraEtUj2PQLvMAo1M0d5DxaQUAMkwdNcV0P9EpAyskSnC7Eg9qoYXlu9jQZ2kChjQ2TlKa7L7sGBn93m3+a6gX/D4H6JTez0KPJ5dg3Ag3UYNW7MQOjuCIqG3t4JWhY4dmeBS9pxuW1JKOvQkVO5pATrJKbmGHE19sfP0HTNPfF85++JAIJcPXE4DQJ9dMjXVoQtfaQKeNarXFxKumph4DION/vNBRTpQg3pl1VhV91DzkwWuOkPkXeERIdM6YEq/HK9CObj1m+/zsVgDhq+8HEU/e+z+mMfCd8K35Yr4sLpJo0ECzpKjL1YOiyG4RPVipRYGcWTYEKd0DPPnLSbhv/rtFIQr/f0WfP9fIm4ztQdyafRaxUWWMO0NcdIhRLWiUxyrOR3mwG55GLgEk+I2UtUToyu1x/MFtQXN8/fexjOf1LfB10AOGL5WLggSpMcinydFRD3MaqsjCfHLcdmqaArQ+QBqyrDC+d3OMzfUK+kL8+uvj4ucO0BHZx5FKbG1Ry0XnHeeBQCUso5/UGc7w8RgcjXNtfY/xruszAvGwgYO3a0W5lLvYvN+2PCkE0EFui6KpmY/h0nQjj7OXgPouMTb2N5xZP/1dIiYmTMJKqFycQ/zmTFADtKwF3fhEx9JMT7J7M1xZIGJlnBae0EQ7UL0At9n/jNNA6K/hEKJSYcEhDTfL6QgWGzz91g92ibjwgq7YHA1wMH8hUrGlnKkdQ3k70UyvxRDIfPJNOBVOGlh0AbrfPEgVisWYcOS2hGQkJF6uYRq/cq5bfnw6NNlBxcSpu4vISXKt6NLlnE1crugCUhZvU9xI6Nblu5jcbY/hiA= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 76prww6B/A8tZNZXieINi7bP1WXwOgQo3X+3VfCIuIwPM5ns+6sPRVz+kK+uo2c6tz2ur07clF3a87KsUrdy9nBYZEmEmsIe4dSXpOcOinTBR57QruJPde3ZZ/KUL9wUCJgWWbCStlBYpNhMp806YwQQ7eyUdyeqzunNpiecHLA0d/pTHKzD7GMZYiQ6ZTn01n3iI/vOdm1QyidoSYwbaJk/rRXYMYMWM6LL8oVBlyLDde96pOsBhXFmBYG1w3gIb8qqb2Nj14NZvAkJds5qRwc957psMJ8bQKiUilJpUgwiIP5K/DLYEk9eE/QnyKiL1aqRkXiqi1si6zTkJwv7mF5hgK6UsGweLLrWIDDEh1G/RWEvy6272NkjsYmDDkM+ItvHK6xhvInZrIacCknAVYYtpjHkESYb3Pg02S9K7scl2AZFnVl6i8Oz0CjRQNET4gpgaOVlLV9dvPbzdxZARr1s0aSBzknv/JWNf6bcQWe08gROeQUuKDeQjBQZRaEkfI8chC/NYBkCnMJ/vZsWrtNKA+N2Pdg1C2FNWKc3GewrPQcVQLkcLSRSYe+zRzSn0Io8bA0JrUVhMWbW0S/InCevn8rMpg6aL1oDr76Zu5KtGGTNd+gT/M8oc3J1RX41u4PFlp881+gyXdM0PUh+01w4dp3o7gT12hE/E0Tgh3zPQKYapcC/QpSwQnefqB1Y4I+0eWdT5o5KvTZkJxCsEKK898hYeQu6/FuWXOMSLXspIbHSpw94R/+FQN9vpKXcA4Mt2C6dU7e28AzreF7YVw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 736ffc3e-c6f1-44d1-d002-08db1081fc97 X-MS-Exchange-CrossTenant-AuthSource: MWHPR10MB1407.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2023 00:57:48.0034 (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: qp7xqgtLnqTkPdtdoT3SrGMQvuM/+zn0YAcCRM4iUQBI/7X+ZiD6dFJBmYyD2ynfRwB4UkeT6i2+fOf6pKKTSP47C1BAQ4gcHaZQSACMYgs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5364 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-16_18,2023-02-16_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 phishscore=0 suspectscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302170005 X-Proofpoint-GUID: fgyBFyFiSP5-5xTrXEojFoXANHgtZww6 X-Proofpoint-ORIG-GUID: fgyBFyFiSP5-5xTrXEojFoXANHgtZww6 X-Spam-Status: No, score=-12.6 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 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-Patchwork-Original-From: "Guillermo E. Martinez via Libabigail" From: "Guillermo E. Martinez" Reply-To: "Guillermo E. Martinez" Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libabigail" Hello, This patch is meant to fix how `abipkgdiff' using CTF origin is looking for dependencies to analyze kABIs. IMHO `file_is_kernel_package' function is relying on package name, so when `--ctf' is provided, it only will work with executables under uncompressed directories and it never will try to find `vmlinux.cfa' because it is just needed by KABIs. I think that an option to force handle a packages as kernel would be nice regardless the package name. Please let me know your comments, Thanks in advanced!, guillermo --- Using abipkgdiff to analyze kABIs from OL packages with CTF debug format is not able to identify kernel packages, so the analysts is done as user space RPMs, `file_is_kernel_package' function uses package name to identify if the package contains kernel information, in OL distribution the those packages are named as: `kernel-uek-core-*', then a wrong flow is executed, additionally `vmlinux.ctfa' ship in a non debug package, so the expected location is not satisfied . * src/abg-ctf-reader.cc (ctf::reader::find_ctfa_file): Use `find_file_under_dir' utility function to locate `vmlinux.ctfa' file. (ctf::reader::process_ctf_archive): Adjust dictionary name according to module name, removing characters after dot. * src/abg-tools-utils.cc (file_has_ctf_debug_info): Use `find_file_under_dir' utility function to locate `vmlinux.ctfa' file. (file_is_kernel_package): Adjust package name identifying a kernel package. (build_corpus_group_from_kernel_dist_under): Add `root' package directory to debug info array. Signed-off-by: Guillermo E. Martinez --- src/abg-ctf-reader.cc | 16 ++++++---------- src/abg-tools-utils.cc | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc index 7159a578..ac0d3104 100644 --- a/src/abg-ctf-reader.cc +++ b/src/abg-ctf-reader.cc @@ -336,12 +336,8 @@ public: // for vmlinux.ctfa should be provided with --debug-info-dir // option. for (const auto& path : debug_info_root_paths()) - { - ctfa_dirname = *path; - ctfa_file = ctfa_dirname + "/vmlinux.ctfa"; - if (file_exists(ctfa_file)) - return true; - } + if (tools_utils::find_file_under_dir(*path, "vmlinux.ctfa", ctfa_file)) + return true; return false; } @@ -428,10 +424,10 @@ public: && corpus_group()) { tools_utils::base_name(corpus_path(), dict_name); - - if (dict_name != "vmlinux") - // remove .ko suffix - dict_name.erase(dict_name.length() - 3, 3); + // remove .* suffix + std::size_t pos = dict_name.find("."); + if (pos != string::npos) + dict_name.erase(pos); std::replace(dict_name.begin(), dict_name.end(), '-', '_'); } diff --git a/src/abg-tools-utils.cc b/src/abg-tools-utils.cc index 81f9aa75..d7f8b71f 100644 --- a/src/abg-tools-utils.cc +++ b/src/abg-tools-utils.cc @@ -501,7 +501,7 @@ file_has_ctf_debug_info(const string& elf_file_path, // vmlinux.ctfa could be provided with --debug-info-dir for (const auto& path : debug_info_root_paths) - if (dir_contains_ctf_archive(*path, vmlinux)) + if (find_file_under_dir(*path, "vmlinux.ctfa", vmlinux)) return true; return false; @@ -1780,7 +1780,7 @@ file_is_kernel_package(const string& file_name, file_type file_type) { if (!get_rpm_name(file_name, package_name)) return false; - result = (package_name == "kernel"); + result = (string_begins_with(package_name, "kernel")); } else if (file_type == FILE_TYPE_DEB) { @@ -2812,6 +2812,16 @@ build_corpus_group_from_kernel_dist_under(const string& root, vector di_roots; di_roots.push_back(&di_root_ptr); +#ifdef WITH_CTF + shared_ptr di_root_ctf; + if (requested_fe_kind & corpus::CTF_ORIGIN) + { + di_root_ctf = make_path_absolute(root.c_str()); + char *di_root_ctf_ptr = di_root_ctf.get(); + di_roots.push_back(&di_root_ctf_ptr); + } +#endif + abigail::elf_based_reader_sptr reader = create_best_elf_based_reader(vmlinux, di_roots,