From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) by sourceware.org (Postfix) with ESMTPS id C3E9B385B835 for ; Thu, 9 Apr 2020 13:52:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C3E9B385B835 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=seketeli.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=dodji@seketeli.org X-Originating-IP: 91.166.131.130 Received: from localhost (91-166-131-130.subs.proxad.net [91.166.131.130]) (Authenticated sender: dodj@seketeli.org) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id A5854FF809; Thu, 9 Apr 2020 13:52:52 +0000 (UTC) Received: by localhost (Postfix, from userid 1001) id 4260B1A4B65; Thu, 9 Apr 2020 15:52:51 +0200 (CEST) From: Dodji Seketeli To: Mark Wielaard Cc: libabigail@sourceware.org Subject: Re: Surprising behavior of suppress_type drop = yes Organization: Me, myself and I References: <86pnckpmc6.fsf@seketeli.org> <52c5ab9801899f080f4e7838ded9ea64f78317c9.camel@klomp.org> X-Operating-System: Red Hat Enterprise Linux Server 7.7 X-URL: http://www.seketeli.net/~dodji Date: Thu, 09 Apr 2020 15:52:51 +0200 In-Reply-To: <52c5ab9801899f080f4e7838ded9ea64f78317c9.camel@klomp.org> (Mark Wielaard's message of "Wed, 08 Apr 2020 16:32:53 +0200") Message-ID: <86k12oojf0.fsf@seketeli.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libabigail mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Apr 2020 13:52:58 -0000 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Mark, Mark Wielaard a =C3=A9crit: > Hi Dodji, > > On Mon, 2020-04-06 at 19:15 +0200, Dodji Seketeli wrote: >> > Note how abidiff treats the function return type and parameters changed >> > from void * to Foo * as disappearing. >> >=20 >> > Is there another way to achieve what I want/need? >>=20 >> I think there is a non-documented way to do this, yes. It hasn't been >> yet documented because nobody expressed the need for it yet. >>=20 >> Basically you want to do this: >>=20 >> [suppress_type] >> label =3D "Artificial=C2=B7private=C2=B7types=C2=B7suppression=C2=B7sp= ecification" > > Assuming those fancy dots are actually spaces. Pfff, sorry, my copy-paste-fu failed miserably there. I am attaching below the libfoo.supp suppression file I used. Actually, there are no '"' delimitation character either. [...] > It doesn't seem to change anything for my example. I assume it does > for you? Yes, sorry, it's my fault. I hope with suppression file below it gets better. > Can you attach the xml abi file it is supposed to generate? Mine still > looks like the attached with missing return types and arguments where > there should be pointers to Foo. Maybe my suppression file still isn't > correct? I attached both. I attached the resulting abixml file I am getting below as well. >> > Or can we have a "drop mode" that treats handles to dropped types a >> > simple void pointers instead? >>=20 >> I think what you'd need, really, is a combination of: >>=20 >> 1/ a new --header-files{1,2} option >> 2/ an "opaque =3D yes" attribute in the suppression specification. >>=20 >> I think either 1/ or 2/ should work, but it'd be nice to have both. >>=20 >> If you think that suggession holds water, then we should probably >> file a >> bug to add this new feature. > > Why not fix the default? I am not sure what you mean by default. "drop =3D yes" in the [suppress_type] section of a suppression specification is not meant to be the same feature as --header-files{1,2}. drop =3D yes really drops *all* types that match the suppression specification. Those types disappear completement from the internal representation. This can be useful to aggressively reduce the size of the internal representation. --header-files{1,2} generates a suppression specification that drop all types that are not defined in header files, but, for class/struct/ types, it does something different. Rather than just droping those struct/class types from the internal representation, it replaces them by a (forward) declaration -- as opposed to the full type definition. So a pointer to that declaration becomes a pointer to an opaque type, in practise. These two features are useful to people in different use cases. If your question is "how to do exactly what --headers-files{1,2} does using suppression specfications", then the official answer today is "you can't". > I am trying to figure out why the command line option is different from > the suppress_type default way of handling drop. And when that default > way of working is actually useful? Being able completly drop types from the IR is mainly used for size optimization purposes. And in that case, you really want to drop the type on the floor, not replace it with something else. I hope this is useful. Cheers, --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=libfoo.supp Content-Transfer-Encoding: base64 W3N1cHByZXNzX2Z1bmN0aW9uXQogIGZpbGVfbmFtZV9ub3RfcmVnZXhwID0gZm9vLmMKICBkcm9w ID0geWVzCgoKW3N1cHByZXNzX3R5cGVdCiAgbGFiZWwgPSBBcnRpZmljaWFsIHByaXZhdGUgdHlw ZXMgc3VwcHJlc3Npb24gc3BlY2lmaWNhdGlvbgogIHNvdXJjZV9sb2NhdGlvbl9ub3RfaW4gPSBm b28uaCwgbGlzdC5oLCBvZi5oLCBwdWJsaWMuaCwgaGVhZGVycy5oCiAgZHJvcCA9IHllcw== --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=libfoo.so.suppr.abi Content-Transfer-Encoding: base64 PGFiaS1jb3JwdXMgcGF0aD0nbGliZm9vLnNvJyBhcmNoaXRlY3R1cmU9J2VsZi1hbWQteDg2XzY0 Jz4KICA8ZWxmLW5lZWRlZD4KICAgIDxkZXBlbmRlbmN5IG5hbWU9J2xpYmMuc28uNicvPgogIDwv ZWxmLW5lZWRlZD4KICA8ZWxmLWZ1bmN0aW9uLXN5bWJvbHM+CiAgICA8ZWxmLXN5bWJvbCBuYW1l PSdjcmVhdGVfZm9vJyB2ZXJzaW9uPSdGT09MSUJfMS4wJyBpcy1kZWZhdWx0LXZlcnNpb249J3ll cycgdHlwZT0nZnVuYy10eXBlJyBiaW5kaW5nPSdnbG9iYWwtYmluZGluZycgdmlzaWJpbGl0eT0n ZGVmYXVsdC12aXNpYmlsaXR5JyBpcy1kZWZpbmVkPSd5ZXMnLz4KICAgIDxlbGYtc3ltYm9sIG5h bWU9J2Rlc3Ryb3lfZm9vJyB2ZXJzaW9uPSdGT09MSUJfMS4wJyBpcy1kZWZhdWx0LXZlcnNpb249 J3llcycgdHlwZT0nZnVuYy10eXBlJyBiaW5kaW5nPSdnbG9iYWwtYmluZGluZycgdmlzaWJpbGl0 eT0nZGVmYXVsdC12aXNpYmlsaXR5JyBpcy1kZWZpbmVkPSd5ZXMnLz4KICAgIDxlbGYtc3ltYm9s IG5hbWU9J2dldF9mb28nIHZlcnNpb249J0ZPT0xJQl8xLjAnIGlzLWRlZmF1bHQtdmVyc2lvbj0n eWVzJyB0eXBlPSdmdW5jLXR5cGUnIGJpbmRpbmc9J2dsb2JhbC1iaW5kaW5nJyB2aXNpYmlsaXR5 PSdkZWZhdWx0LXZpc2liaWxpdHknIGlzLWRlZmluZWQ9J3llcycvPgogICAgPGVsZi1zeW1ib2wg bmFtZT0nc2V0X2ZvbycgdmVyc2lvbj0nRk9PTElCXzEuMCcgaXMtZGVmYXVsdC12ZXJzaW9uPSd5 ZXMnIHR5cGU9J2Z1bmMtdHlwZScgYmluZGluZz0nZ2xvYmFsLWJpbmRpbmcnIHZpc2liaWxpdHk9 J2RlZmF1bHQtdmlzaWJpbGl0eScgaXMtZGVmaW5lZD0neWVzJy8+CiAgPC9lbGYtZnVuY3Rpb24t c3ltYm9scz4KICA8YWJpLWluc3RyIHZlcnNpb249JzEuMCcgYWRkcmVzcy1zaXplPSc2NCcgcGF0 aD0nZm9vLmMnIGNvbXAtZGlyLXBhdGg9Jy9ob21lL2RvZGppL3Rlc3RzL2Zvb2xpYi9mb29saWIn IGxhbmd1YWdlPSdMQU5HX0M4OSc+CiAgICA8dHlwZS1kZWNsIG5hbWU9J2ludCcgc2l6ZS1pbi1i aXRzPSczMicgaWQ9J3R5cGUtaWQtMScvPgogICAgPHR5cGUtZGVjbCBuYW1lPSd1bnNpZ25lZCBs b25nIGludCcgc2l6ZS1pbi1iaXRzPSc2NCcgaWQ9J3R5cGUtaWQtMicvPgogICAgPHR5cGUtZGVj bCBuYW1lPSd2b2lkJyBpZD0ndHlwZS1pZC0zJy8+CiAgICA8dHlwZWRlZi1kZWNsIG5hbWU9J0Zv bycgdHlwZS1pZD0ndHlwZS1pZC00JyBmaWxlcGF0aD0nL2hvbWUvZG9kamkvdGVzdHMvZm9vbGli L2Zvb2xpYi9mb28uaCcgbGluZT0nMScgY29sdW1uPScxJyBpZD0ndHlwZS1pZC01Jy8+CiAgICA8 dHlwZWRlZi1kZWNsIG5hbWU9J3NpemVfdCcgdHlwZS1pZD0ndHlwZS1pZC0yJyBmaWxlcGF0aD0n L3Vzci9saWIvZ2NjL3g4Nl82NC1yZWRoYXQtbGludXgvNC44LjUvaW5jbHVkZS9zdGRkZWYuaCcg bGluZT0nMjEyJyBjb2x1bW49JzEnIGlkPSd0eXBlLWlkLTYnLz4KICAgIDxwb2ludGVyLXR5cGUt ZGVmIHR5cGUtaWQ9J3R5cGUtaWQtNScgc2l6ZS1pbi1iaXRzPSc2NCcgaWQ9J3R5cGUtaWQtNycv PgogICAgPHBvaW50ZXItdHlwZS1kZWYgdHlwZS1pZD0ndHlwZS1pZC0zJyBzaXplLWluLWJpdHM9 JzY0JyBpZD0ndHlwZS1pZC04Jy8+CiAgICA8ZnVuY3Rpb24tZGVjbCBuYW1lPSdjcmVhdGVfZm9v JyBtYW5nbGVkLW5hbWU9J2NyZWF0ZV9mb28nIGZpbGVwYXRoPScvaG9tZS9kb2RqaS90ZXN0cy9m b29saWIvZm9vbGliL2Zvby5jJyBsaW5lPSc1JyBjb2x1bW49JzEnIHZpc2liaWxpdHk9J2RlZmF1 bHQnIGJpbmRpbmc9J2dsb2JhbCcgc2l6ZS1pbi1iaXRzPSc2NCcgZWxmLXN5bWJvbC1pZD0nY3Jl YXRlX2Zvb0BARk9PTElCXzEuMCc+CiAgICAgIDxyZXR1cm4gdHlwZS1pZD0ndHlwZS1pZC03Jy8+ CiAgICA8L2Z1bmN0aW9uLWRlY2w+CiAgICA8ZnVuY3Rpb24tZGVjbCBuYW1lPSdkZXN0cm95X2Zv bycgbWFuZ2xlZC1uYW1lPSdkZXN0cm95X2ZvbycgZmlsZXBhdGg9Jy9ob21lL2RvZGppL3Rlc3Rz L2Zvb2xpYi9mb29saWIvZm9vLmMnIGxpbmU9JzE0JyBjb2x1bW49JzEnIHZpc2liaWxpdHk9J2Rl ZmF1bHQnIGJpbmRpbmc9J2dsb2JhbCcgc2l6ZS1pbi1iaXRzPSc2NCcgZWxmLXN5bWJvbC1pZD0n ZGVzdHJveV9mb29AQEZPT0xJQl8xLjAnPgogICAgICA8cGFyYW1ldGVyIHR5cGUtaWQ9J3R5cGUt aWQtNycgbmFtZT0nZm9vJyBmaWxlcGF0aD0nL2hvbWUvZG9kamkvdGVzdHMvZm9vbGliL2Zvb2xp Yi9mb28uYycgbGluZT0nMTQnIGNvbHVtbj0nMScvPgogICAgICA8cmV0dXJuIHR5cGUtaWQ9J3R5 cGUtaWQtMycvPgogICAgPC9mdW5jdGlvbi1kZWNsPgogICAgPGZ1bmN0aW9uLWRlY2wgbmFtZT0n c2V0X2ZvbycgbWFuZ2xlZC1uYW1lPSdzZXRfZm9vJyBmaWxlcGF0aD0nL2hvbWUvZG9kamkvdGVz dHMvZm9vbGliL2Zvb2xpYi9mb28uYycgbGluZT0nMjAnIGNvbHVtbj0nMScgdmlzaWJpbGl0eT0n ZGVmYXVsdCcgYmluZGluZz0nZ2xvYmFsJyBzaXplLWluLWJpdHM9JzY0JyBlbGYtc3ltYm9sLWlk PSdzZXRfZm9vQEBGT09MSUJfMS4wJz4KICAgICAgPHBhcmFtZXRlciB0eXBlLWlkPSd0eXBlLWlk LTcnIG5hbWU9J2ZvbycgZmlsZXBhdGg9Jy9ob21lL2RvZGppL3Rlc3RzL2Zvb2xpYi9mb29saWIv Zm9vLmMnIGxpbmU9JzIwJyBjb2x1bW49JzEnLz4KICAgICAgPHBhcmFtZXRlciB0eXBlLWlkPSd0 eXBlLWlkLTEnIG5hbWU9J251bScgZmlsZXBhdGg9Jy9ob21lL2RvZGppL3Rlc3RzL2Zvb2xpYi9m b29saWIvZm9vLmMnIGxpbmU9JzIwJyBjb2x1bW49JzEnLz4KICAgICAgPHJldHVybiB0eXBlLWlk PSd0eXBlLWlkLTMnLz4KICAgIDwvZnVuY3Rpb24tZGVjbD4KICAgIDxmdW5jdGlvbi1kZWNsIG5h bWU9J2dldF9mb28nIG1hbmdsZWQtbmFtZT0nZ2V0X2ZvbycgZmlsZXBhdGg9Jy9ob21lL2RvZGpp L3Rlc3RzL2Zvb2xpYi9mb29saWIvZm9vLmMnIGxpbmU9JzI3JyBjb2x1bW49JzEnIHZpc2liaWxp dHk9J2RlZmF1bHQnIGJpbmRpbmc9J2dsb2JhbCcgc2l6ZS1pbi1iaXRzPSc2NCcgZWxmLXN5bWJv bC1pZD0nZ2V0X2Zvb0BARk9PTElCXzEuMCc+CiAgICAgIDxwYXJhbWV0ZXIgdHlwZS1pZD0ndHlw ZS1pZC03JyBuYW1lPSdmb28nIGZpbGVwYXRoPScvaG9tZS9kb2RqaS90ZXN0cy9mb29saWIvZm9v bGliL2Zvby5jJyBsaW5lPScyNycgY29sdW1uPScxJy8+CiAgICAgIDxyZXR1cm4gdHlwZS1pZD0n dHlwZS1pZC0xJy8+CiAgICA8L2Z1bmN0aW9uLWRlY2w+CiAgICA8ZnVuY3Rpb24tZGVjbCBuYW1l PSdtYWxsb2MnIGZpbGVwYXRoPScvdXNyL2luY2x1ZGUvc3RkbGliLmgnIGxpbmU9JzQ2NScgY29s dW1uPScxJyB2aXNpYmlsaXR5PSdkZWZhdWx0JyBiaW5kaW5nPSdnbG9iYWwnIHNpemUtaW4tYml0 cz0nNjQnPgogICAgICA8cGFyYW1ldGVyIHR5cGUtaWQ9J3R5cGUtaWQtNicvPgogICAgICA8cmV0 dXJuIHR5cGUtaWQ9J3R5cGUtaWQtOCcvPgogICAgPC9mdW5jdGlvbi1kZWNsPgogICAgPGZ1bmN0 aW9uLWRlY2wgbmFtZT0nZnJlZScgZmlsZXBhdGg9Jy91c3IvaW5jbHVkZS9zdGRsaWIuaCcgbGlu ZT0nNDgyJyBjb2x1bW49JzEnIHZpc2liaWxpdHk9J2RlZmF1bHQnIGJpbmRpbmc9J2dsb2JhbCcg c2l6ZS1pbi1iaXRzPSc2NCc+CiAgICAgIDxwYXJhbWV0ZXIgdHlwZS1pZD0ndHlwZS1pZC04Jy8+ CiAgICAgIDxyZXR1cm4gdHlwZS1pZD0ndHlwZS1pZC0zJy8+CiAgICA8L2Z1bmN0aW9uLWRlY2w+ CiAgICA8Y2xhc3MtZGVjbCBuYW1lPSdmb28nIGlzLXN0cnVjdD0neWVzJyBpcy1hcnRpZmljaWFs PSd5ZXMnIHZpc2liaWxpdHk9J2RlZmF1bHQnIGZpbGVwYXRoPScvaG9tZS9kb2RqaS90ZXN0cy9m b29saWIvZm9vbGliL2Zvb1AuaCcgbGluZT0nMycgY29sdW1uPScxJyBpcy1kZWNsYXJhdGlvbi1v bmx5PSd5ZXMnIGlkPSd0eXBlLWlkLTQnLz4KICA8L2FiaS1pbnN0cj4KPC9hYmktY29ycHVzPgo= --=-=-= Content-Type: text/plain -- Dodji --=-=-=--