From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 188DFC7EE32 for ; Fri, 3 Mar 2023 21:09:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231766AbjCCVJX (ORCPT ); Fri, 3 Mar 2023 16:09:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231270AbjCCVJW (ORCPT ); Fri, 3 Mar 2023 16:09:22 -0500 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1759860D70; Fri, 3 Mar 2023 13:09:19 -0800 (PST) Received: (Authenticated sender: dodji@seketeli.org) by mail.gandi.net (Postfix) with ESMTPSA id 592651BF206; Fri, 3 Mar 2023 21:09:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seketeli.org; s=gm1; t=1677877758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cv66zFFxlrbcWbvrnbTnad6WW7AbCdUiUsmIER3GGNo=; b=VJ3mH6zdWteY8M4XC4ovydcmbhNtEm1vA24Iv/QkNqJXO8RZpPW1T7U0bgq0raGYksTqtt RLPkBW5UVyKF3rL2oSwz0sy91JQzNeAugxrnzxtmaBo6wElmPyvJhp6IgSNe284tAEYuID p6r4YlwLtc8wfKWWJrGt46K9Od8MJJCQNL5K7eFmbaA4gdt/gJcSCHU7mLqk8NDhpiQFI1 viL6RZSpzLJi2mhYHneDXdI/M439SUELnvFcSwddbX6WinC0J4gnxPltN98lnelSo71nV3 1A8IAeBQ2AyVH2MPJ5zsJhbpkM2JTsR+rUOwWyV8q8uoTsxvj06aAn5K977Pvg== Received: by localhost (Postfix, from userid 1000) id 4FFA9B4E34; Fri, 3 Mar 2023 22:09:11 +0100 (CET) From: Dodji Seketeli To: John Moon via Libabigail Cc: Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , "Nicolas Schier" , John Moon , , , , , Greg Kroah-Hartman , Randy Dunlap , "Arnd Bergmann" , Bjorn Andersson , Todd Kjos , Matthias Maennich , Giuliano Procida , , Jordan Crouse , Trilok Soni , Satya Durga Srinivasu Prabhala , Elliot Berman Subject: Re: [PATCH v2 1/2] check-uapi: Introduce check-uapi.sh Organization: Me, myself and I References: <20230301075402.4578-1-quic_johmoo@quicinc.com> <20230301075402.4578-2-quic_johmoo@quicinc.com> X-Operating-System: CentOS Stream release 9 X-URL: http://www.seketeli.net/~dodji Date: Fri, 03 Mar 2023 22:09:11 +0100 In-Reply-To: <20230301075402.4578-2-quic_johmoo@quicinc.com> (John Moon via Libabigail's message of "Tue, 28 Feb 2023 23:54:01 -0800") Message-ID: <87zg8t5yq0.fsf@seketeli.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hello John, John Moon via Libabigail a =C3=A9crit: > While the kernel community has been good at maintaining backwards > compatibility with kernel UAPIs, it would be helpful to have a tool > to check if a commit introduces changes that break backwards > compatibility. > > To that end, introduce check-uapi.sh: a simple shell script that > checks for changes to UAPI headers using libabigail. > > libabigail is "a framework which aims at helping developers and > software distributors to spot some ABI-related issues like interface > incompatibility in ELF shared libraries by performing a static > analysis of the ELF binaries at hand." > > The script uses one of libabigail's tools, "abidiff", to compile the > changed header before and after the commit to detect any changes. > > abidiff "compares the ABI of two shared libraries in ELF format. It > emits a meaningful report describing the differences between the two > ABIs." > > The script also includes the ability to check the compatibilty of > all UAPI headers across commits. This allows developers to inspect > the stability of the UAPIs over time. Thank you for working on this. The libabigail bits look good to me, for what it's worth. I just have some general considerations to discuss. [...] > +# Perform the A/B compilation and compare output ABI > +compare_abi() { [...] > + if "$ABIDIFF" --non-reachable-types "${ref_header}.bin" "${base_header}= .bin" > "$log"; then > + printf "No ABI differences detected in %s from %s -> %s\n" "$file" "$r= ef" "${base_ref:-dirty tree}" > + else > + # If the only changes were additions (not modifications to existing AP= Is), then > + # there's no problem. Ignore these diffs. > + if grep "Unreachable types summary" "$log" | grep -q "0 removed" && > + grep "Unreachable types summary" "$log" | grep -q "0 changed"; then > + return 0 There is no problem in parsing the output of the tool like this. However, the return code of the tool has been designed as a bit field that could be analysed to know more about the kind of changes that were reported: https://sourceware.org/libabigail/manual/abidiff.html#return-valu= es. Right now, there is no bit assigned to detect new types (or interface) addition, but do you think that it would be a helpful new feature to add to abidiff for this use case? We can discuss this in a separate thread if you prefer, so that we don't pollute others with this minutiae. > + fi > + { > + printf "!!! ABI differences detected in %s from %s -> %s !!!\n\n" "$f= ile" "$ref" "${base_ref:-dirty tree}" > + sed -e '/summary:/d' -e '/changed type/d' -e '/^$/d' -e 's/^/ /g' "= $log" Here again, if you'd like to have a particular output format emitted by the tool, we'd be glad to discuss how to improve the plasticity of the tool enough to emit the right output for you. For instance, we could add a new --no-summary that would let the tool display the change directly without the summary header that you are strimming out with this sed script. [...] Thanks again for this tool that I think might be very useful. Cheers, --=20 Dodji From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 77BB1C64EC4 for ; Fri, 3 Mar 2023 21:10:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:In-Reply-To: Date:References:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8M6qkYdhRxqmnDOp0faG2GAtd7ITux3IhVvJnr3th8Q=; b=DmexMi6ArvyWsP 642yg7ySTf2+7J/DEgPATjEi+QB8URnFVc6pFj+KAUTk0SNnGL/2We+xzpvLmprlCt0tnFKGdkbqK ogdsqwll3Jt+xNlx1nReKOZM7pT23WvfQN+1PoB5qbUef1xucrP1Q+GrMPf6X/uBl4AxdRKbTghdU HFXeezyaUzGAUblTc1QqRTOl8KupQdnjEJu314PLqs7ju4MTdmNoOoZW2GGuMX+LYFyeQYZLSY2o9 RuOZvHi9OpOy95M2qTfUjrlipdVahbj6YxkrTH7yzXTSS4xydJV9n6oFjez6mr+fiN+T/dRqmOVXG cjB6OxjXghEtMvd5oEVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pYCeg-007RK3-CC; Fri, 03 Mar 2023 21:09:30 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pYCec-007RIU-Dv for linux-arm-kernel@lists.infradead.org; Fri, 03 Mar 2023 21:09:28 +0000 Received: (Authenticated sender: dodji@seketeli.org) by mail.gandi.net (Postfix) with ESMTPSA id 592651BF206; Fri, 3 Mar 2023 21:09:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seketeli.org; s=gm1; t=1677877758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cv66zFFxlrbcWbvrnbTnad6WW7AbCdUiUsmIER3GGNo=; b=VJ3mH6zdWteY8M4XC4ovydcmbhNtEm1vA24Iv/QkNqJXO8RZpPW1T7U0bgq0raGYksTqtt RLPkBW5UVyKF3rL2oSwz0sy91JQzNeAugxrnzxtmaBo6wElmPyvJhp6IgSNe284tAEYuID p6r4YlwLtc8wfKWWJrGt46K9Od8MJJCQNL5K7eFmbaA4gdt/gJcSCHU7mLqk8NDhpiQFI1 viL6RZSpzLJi2mhYHneDXdI/M439SUELnvFcSwddbX6WinC0J4gnxPltN98lnelSo71nV3 1A8IAeBQ2AyVH2MPJ5zsJhbpkM2JTsR+rUOwWyV8q8uoTsxvj06aAn5K977Pvg== Received: by localhost (Postfix, from userid 1000) id 4FFA9B4E34; Fri, 3 Mar 2023 22:09:11 +0100 (CET) From: Dodji Seketeli To: John Moon via Libabigail Cc: Masahiro Yamada , Nathan Chancellor , Nick Desaulniers , "Nicolas Schier" , John Moon , , , , , Greg Kroah-Hartman , Randy Dunlap , "Arnd Bergmann" , Bjorn Andersson , Todd Kjos , Matthias Maennich , Giuliano Procida , , Jordan Crouse , Trilok Soni , Satya Durga Srinivasu Prabhala , Elliot Berman Subject: Re: [PATCH v2 1/2] check-uapi: Introduce check-uapi.sh Organization: Me, myself and I References: <20230301075402.4578-1-quic_johmoo@quicinc.com> <20230301075402.4578-2-quic_johmoo@quicinc.com> X-Operating-System: CentOS Stream release 9 X-URL: http://www.seketeli.net/~dodji Date: Fri, 03 Mar 2023 22:09:11 +0100 In-Reply-To: <20230301075402.4578-2-quic_johmoo@quicinc.com> (John Moon via Libabigail's message of "Tue, 28 Feb 2023 23:54:01 -0800") Message-ID: <87zg8t5yq0.fsf@seketeli.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230303_130926_797998_D134C9B1 X-CRM114-Status: GOOD ( 26.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8gSm9obiwKCkpvaG4gTW9vbiB2aWEgTGliYWJpZ2FpbCA8bGliYWJpZ2FpbEBzb3VyY2V3 YXJlLm9yZz4gYSDDqWNyaXQ6Cgo+IFdoaWxlIHRoZSBrZXJuZWwgY29tbXVuaXR5IGhhcyBiZWVu IGdvb2QgYXQgbWFpbnRhaW5pbmcgYmFja3dhcmRzCj4gY29tcGF0aWJpbGl0eSB3aXRoIGtlcm5l bCBVQVBJcywgaXQgd291bGQgYmUgaGVscGZ1bCB0byBoYXZlIGEgdG9vbAo+IHRvIGNoZWNrIGlm IGEgY29tbWl0IGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IGJyZWFrIGJhY2t3YXJkcwo+IGNvbXBh dGliaWxpdHkuCj4KPiBUbyB0aGF0IGVuZCwgaW50cm9kdWNlIGNoZWNrLXVhcGkuc2g6IGEgc2lt cGxlIHNoZWxsIHNjcmlwdCB0aGF0Cj4gY2hlY2tzIGZvciBjaGFuZ2VzIHRvIFVBUEkgaGVhZGVy cyB1c2luZyBsaWJhYmlnYWlsLgo+Cj4gbGliYWJpZ2FpbCBpcyAiYSBmcmFtZXdvcmsgd2hpY2gg YWltcyBhdCBoZWxwaW5nIGRldmVsb3BlcnMgYW5kCj4gc29mdHdhcmUgZGlzdHJpYnV0b3JzIHRv IHNwb3Qgc29tZSBBQkktcmVsYXRlZCBpc3N1ZXMgbGlrZSBpbnRlcmZhY2UKPiBpbmNvbXBhdGli aWxpdHkgaW4gRUxGIHNoYXJlZCBsaWJyYXJpZXMgYnkgcGVyZm9ybWluZyBhIHN0YXRpYwo+IGFu YWx5c2lzIG9mIHRoZSBFTEYgYmluYXJpZXMgYXQgaGFuZC4iCj4KPiBUaGUgc2NyaXB0IHVzZXMg b25lIG9mIGxpYmFiaWdhaWwncyB0b29scywgImFiaWRpZmYiLCB0byBjb21waWxlIHRoZQo+IGNo YW5nZWQgaGVhZGVyIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNvbW1pdCB0byBkZXRlY3QgYW55IGNo YW5nZXMuCj4KPiBhYmlkaWZmICJjb21wYXJlcyB0aGUgQUJJIG9mIHR3byBzaGFyZWQgbGlicmFy aWVzIGluIEVMRiBmb3JtYXQuIEl0Cj4gZW1pdHMgYSBtZWFuaW5nZnVsIHJlcG9ydCBkZXNjcmli aW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28KPiBBQklzLiIKPgo+IFRoZSBzY3Jp cHQgYWxzbyBpbmNsdWRlcyB0aGUgYWJpbGl0eSB0byBjaGVjayB0aGUgY29tcGF0aWJpbHR5IG9m Cj4gYWxsIFVBUEkgaGVhZGVycyBhY3Jvc3MgY29tbWl0cy4gVGhpcyBhbGxvd3MgZGV2ZWxvcGVy cyB0byBpbnNwZWN0Cj4gdGhlIHN0YWJpbGl0eSBvZiB0aGUgVUFQSXMgb3ZlciB0aW1lLgoKVGhh bmsgeW91IGZvciB3b3JraW5nIG9uIHRoaXMuCgpUaGUgbGliYWJpZ2FpbCBiaXRzIGxvb2sgZ29v ZCB0byBtZSwgZm9yIHdoYXQgaXQncyB3b3J0aC4gIEkganVzdCBoYXZlCnNvbWUgZ2VuZXJhbCBj b25zaWRlcmF0aW9ucyB0byBkaXNjdXNzLgoKWy4uLl0KCj4gKyMgUGVyZm9ybSB0aGUgQS9CIGNv bXBpbGF0aW9uIGFuZCBjb21wYXJlIG91dHB1dCBBQkkKPiArY29tcGFyZV9hYmkoKSB7CgpbLi4u XQoKPiArCWlmICIkQUJJRElGRiIgLS1ub24tcmVhY2hhYmxlLXR5cGVzICIke3JlZl9oZWFkZXJ9 LmJpbiIgIiR7YmFzZV9oZWFkZXJ9LmJpbiIgPiAiJGxvZyI7IHRoZW4KPiArCQlwcmludGYgIk5v IEFCSSBkaWZmZXJlbmNlcyBkZXRlY3RlZCBpbiAlcyBmcm9tICVzIC0+ICVzXG4iICIkZmlsZSIg IiRyZWYiICIke2Jhc2VfcmVmOi1kaXJ0eSB0cmVlfSIKPiArCWVsc2UKPiArCQkjIElmIHRoZSBv bmx5IGNoYW5nZXMgd2VyZSBhZGRpdGlvbnMgKG5vdCBtb2RpZmljYXRpb25zIHRvIGV4aXN0aW5n IEFQSXMpLCB0aGVuCj4gKwkJIyB0aGVyZSdzIG5vIHByb2JsZW0uIElnbm9yZSB0aGVzZSBkaWZm cy4KPiArCQlpZiBncmVwICJVbnJlYWNoYWJsZSB0eXBlcyBzdW1tYXJ5IiAiJGxvZyIgfCBncmVw IC1xICIwIHJlbW92ZWQiICYmCj4gKwkJICAgZ3JlcCAiVW5yZWFjaGFibGUgdHlwZXMgc3VtbWFy eSIgIiRsb2ciIHwgZ3JlcCAtcSAiMCBjaGFuZ2VkIjsgdGhlbgo+ICsJCQlyZXR1cm4gMAoKVGhl cmUgaXMgbm8gcHJvYmxlbSBpbiBwYXJzaW5nIHRoZSBvdXRwdXQgb2YgdGhlIHRvb2wgbGlrZSB0 aGlzLgpIb3dldmVyLCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIHRvb2wgaGFzIGJlZW4gZGVzaWdu ZWQgYXMgYSBiaXQgZmllbGQgdGhhdApjb3VsZCBiZSBhbmFseXNlZCB0byBrbm93IG1vcmUgYWJv dXQgdGhlIGtpbmQgb2YgY2hhbmdlcyB0aGF0IHdlcmUKcmVwb3J0ZWQ6IGh0dHBzOi8vc291cmNl d2FyZS5vcmcvbGliYWJpZ2FpbC9tYW51YWwvYWJpZGlmZi5odG1sI3JldHVybi12YWx1ZXMuCgpS aWdodCBub3csIHRoZXJlIGlzIG5vIGJpdCBhc3NpZ25lZCB0byBkZXRlY3QgbmV3IHR5cGVzIChv ciBpbnRlcmZhY2UpCmFkZGl0aW9uLCBidXQgZG8geW91IHRoaW5rIHRoYXQgaXQgd291bGQgYmUg YSBoZWxwZnVsIG5ldyBmZWF0dXJlIHRvIGFkZAp0byBhYmlkaWZmIGZvciB0aGlzIHVzZSBjYXNl PyAgV2UgY2FuIGRpc2N1c3MgdGhpcyBpbiBhIHNlcGFyYXRlIHRocmVhZAppZiB5b3UgcHJlZmVy LCBzbyB0aGF0IHdlIGRvbid0IHBvbGx1dGUgb3RoZXJzIHdpdGggdGhpcyBtaW51dGlhZS4KCj4g KwkJZmkKPiArCQl7Cj4gKwkJCXByaW50ZiAiISEhIEFCSSBkaWZmZXJlbmNlcyBkZXRlY3RlZCBp biAlcyBmcm9tICVzIC0+ICVzICEhIVxuXG4iICIkZmlsZSIgIiRyZWYiICIke2Jhc2VfcmVmOi1k aXJ0eSB0cmVlfSIKPiArCQkJc2VkICAtZSAnL3N1bW1hcnk6L2QnIC1lICcvY2hhbmdlZCB0eXBl L2QnIC1lICcvXiQvZCcgLWUgJ3MvXi8gIC9nJyAiJGxvZyIKCkhlcmUgYWdhaW4sIGlmIHlvdSdk IGxpa2UgdG8gaGF2ZSBhIHBhcnRpY3VsYXIgb3V0cHV0IGZvcm1hdCBlbWl0dGVkIGJ5CnRoZSB0 b29sLCB3ZSdkIGJlIGdsYWQgdG8gZGlzY3VzcyBob3cgdG8gaW1wcm92ZSB0aGUgcGxhc3RpY2l0 eSBvZiB0aGUKdG9vbCBlbm91Z2ggdG8gZW1pdCB0aGUgcmlnaHQgb3V0cHV0IGZvciB5b3UuICBG b3IgaW5zdGFuY2UsIHdlIGNvdWxkCmFkZCBhIG5ldyAtLW5vLXN1bW1hcnkgdGhhdCB3b3VsZCBs ZXQgdGhlIHRvb2wgZGlzcGxheSB0aGUgY2hhbmdlCmRpcmVjdGx5IHdpdGhvdXQgdGhlIHN1bW1h cnkgaGVhZGVyIHRoYXQgeW91IGFyZSBzdHJpbW1pbmcgb3V0IHdpdGggdGhpcwpzZWQgc2NyaXB0 LgoKWy4uLl0KClRoYW5rcyBhZ2FpbiBmb3IgdGhpcyB0b29sIHRoYXQgSSB0aGluayBtaWdodCBi ZSB2ZXJ5IHVzZWZ1bC4KCkNoZWVycywKCi0tIAoJCURvZGppCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==