From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 7846C1F461 for ; Mon, 26 Aug 2019 02:40:20 +0000 (UTC) Received: from localhost ([::1]:49334 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i24vb-0004XD-FD for normalperson@yhbt.net; Sun, 25 Aug 2019 22:40:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34400) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i24vX-0004X6-9f for bug-gnulib@gnu.org; Sun, 25 Aug 2019 22:40:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i24vU-0001hN-Q5 for bug-gnulib@gnu.org; Sun, 25 Aug 2019 22:40:14 -0400 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:60254) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i24vU-0001fV-Fd for bug-gnulib@gnu.org; Sun, 25 Aug 2019 22:40:12 -0400 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 9467E160079; Sun, 25 Aug 2019 19:40:10 -0700 (PDT) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id qNXi78-kmJtU; Sun, 25 Aug 2019 19:40:08 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id BEF4B1600BF; Sun, 25 Aug 2019 19:40:08 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id qwaFHKUdcpRr; Sun, 25 Aug 2019 19:40:08 -0700 (PDT) Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 8DF00160079; Sun, 25 Aug 2019 19:40:08 -0700 (PDT) Subject: Re: __builtin_add_overflow on clang To: =?UTF-8?Q?Mattias_Engdeg=c3=a5rd?= References: <5f49721d-6129-38bd-e712-ef4693475cb1@cs.ucla.edu> <2EDB456C-AB0C-4F64-A8B2-6543A3A4C28D@acm.org> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: <447acef3-dd55-4813-172a-577ed951d9d8@cs.ucla.edu> Date: Sun, 25 Aug 2019 19:40:08 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <2EDB456C-AB0C-4F64-A8B2-6543A3A4C28D@acm.org> Content-Type: multipart/mixed; boundary="------------899B39DB3D58C2AD8C829CE4" Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gnulib bugs Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" This is a multi-part message in MIME format. --------------899B39DB3D58C2AD8C829CE4 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Mattias Engdeg=C3=A5rd wrote: > On macOS (and *BSD, probably), compiler-rt is linked by default so the = problem never arises there. Much as I dislike them in general, perhaps a = configure test would be appropriate? I've been avoiding configure-time tests for intprops.h, since we haven't = needed=20 them yet and intprops.h is occasionally used outside Gnulib. And strictly= =20 speaking we don't need the tests here, as the fallback code works correct= ly for=20 Clang (albeit most likely not as efficiently). The reason I patched Gnulib in 2017 to work around the Clang bug: https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=3D04441fd8156978c= fc51d6c203fd43c23b64f95df was in response to a private bug report for GNU 'sed' builds from Nelson = H.F.=20 Beebe, who reported finding the Clang bug on these platforms: > alpine3 dragonflybsd47 mageia6 salix142 > alpine343 fedorarh mint18 slackware142 > alpine35 fedorarh mint181 slackware142x > beta gentoo openbsd60 solus12 > clearos7 grousecreek opensusetw ubuntu1610 > dragonflybsd46 kali2 pclinuxos ubunturr > dragonflybsd461 mageia6 pclinuxosb void64 > dragonflybsd46b These failures occurred with ordinary integer types, as sed doesn't use 1= 28-bit=20 types. Beebe also wrote: > I fear that others might hit the problem, and because Mac OS X > and recent FreeBSD have switched to clang as the default C compiler, > the same problem might start showing up on those platforms. Given the prevalence of this Clang bug, and the iffiness of whether the b= ug=20 might occur on macOS or FreeBSD, I was cautious and stuck with the fallba= ck code=20 for Clang. However, now that you mention it this problem seems limited to= =20 multiplication and it's easy to change intprops.h to use Clang's=20 __builtin_add_overflow and __builtin_sub_overflow even if its=20 __builtin_mul_overflow is buggy. So I installed the attached patch into G= nulib=20 to do that. If we definitely know that this bug cannot occur on FreeBSD and/or macOS,= I=20 suppose we could add further tests on the appropriate preprocessor macros= . But=20 that would require further investigation as to what packages are availabl= e in=20 these platforms and whether the relevant clang runtimes can be installed = separately. --------------899B39DB3D58C2AD8C829CE4 Content-Type: text/plain; charset=UTF-8; name="0001-intprops.h-verify.h-port-better-to-clang.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-intprops.h-verify.h-port-better-to-clang.txt" RnJvbSBiOGFlODU5NjBmOWQyMGI0MWU2ZTE1ZGUxMDRiMzhkYTJhYzQwZTBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTdW4sIDI1IEF1ZyAyMDE5IDE5OjI5OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gaW50cHJvcHMuaCwgdmVyaWZ5Lmg6IHBvcnQgYmV0dGVyIHRvIGNsYW5nCk1JTUUtVmVy c2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpJbXByb3ZlIGNvZGUgZ2VuZXJhdGVkIGJ5 IElOVF9BRERfV1JBUFYgYW5kIElOVF9TVUJUUkFDVF9XUkFQVgp3aXRoIENsYW5nLiAgUHJv YmxlbSByZXBvcnRlZCBwcml2YXRlbHkgYnkgTWF0dGlhcyBFbmdkZWfDpXJkLgpBbHNvLCBp bnN1bGF0ZSBpbnRwcm9wcy5oIGFuZCB2ZXJpZnkuaCBiZXR0ZXIgYWdhaW5zdCBlYWNoIG90 aGVy4oCZcwpkZWZpbml0aW9ucyBvZiBfX2hhc19idWlsdGluIG9uIG5vbi1DbGFuZyBob3N0 cy4KKiBsaWIvaW50cHJvcHMuaCAoX19oYXNfYnVpbHRpbik6IERlZmluZSBhIHRlbXBvcmFy eSBzdWJzdGl0dXRlCmlmIF9faGFzX2J1aWx0aW4gaXMgbm90IGFscmVhZHkgZGVmaW5lZC4K KF9HTF9IQVNfX19idWlsdGluX2FkZF9vdmVyZmxvdywgX0dMX1RFTVBERUZfX19oYXNfYnVp bHRpbik6Ck5ldyB0ZW1wb3JhcnkgaW50ZXJuYWwgbWFjcm9zLgooX0dMX0hBU19CVUlMVElO X0FERF9PVkVSRkxPVywgX0dMX0hBU19CVUlMVElOX01VTF9PVkVSRkxPVyk6Ck5vdyB0d28g c2VwYXJhdGUgbWFjcm9zLCByZXBsYWNpbmcgdGhlIG9sZApfR0xfSEFTX0JVSUxUSU5fT1ZF UkZMT1csIHNpbmNlIHdlIG5vIGxvbmdlciBhc3N1bWUgdGhhdApfX2J1aWx0aW5fbXVsX292 ZXJmbG93IGlzIGxpa2UgdGhlIHJlc3QuICBBbGwgdXNlcyBjaGFuZ2VkLgooSU5UX0FERF9X UkFQViwgSU5UX1NVQlRSQUNUX1dSQVBWLCBJTlRfTVVMVElQTFlfV1JBUFYpOgpBZGp1c3Qg dG8gYWJvdmUgY2hhbmdlcy4KKF9HTF9JTlRfT1BfV1JBUFYpOiBSZW1vdmUg4oCYYnVpbHRp buKAmSBhcmcsIHNpbmNlIGl04oCZcyBubwpsb25nZXIgcmVsZXZhbnQuICBBbGwgdXNlcyBj aGFuZ2VkLgoqIGxpYi92ZXJpZnkuaCAoX19oYXNfYnVpbHRpbik6IFRyZWF0IGxpa2UgaW50 cHJvcHMuaCwKc28gdGhhdCB0aGUgdHdvIC5oIGZpbGVzIGRvIG5vdCBjb2xsaWRlIHdpdGgg ZWFjaCBvdGhlci4KKF9HTF9IQVNfX19idWlsdGluX3VucmVhY2hhYmxlLCBfR0xfSEFTX19f YnVpbHRpbl90cmFwKQooX0dMX1RFTVBERUZfX19oYXNfYnVpbHRpbik6IE5ldyB0ZW1wb3Jh cnkgaW50ZXJuYWwgbWFjcm9zLgotLS0KIENoYW5nZUxvZyAgICAgIHwgMjQgKysrKysrKysr KysrKwogbGliL2ludHByb3BzLmggfCA5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLQogbGliL3ZlcmlmeS5oICAgfCAyOCArKysrKysrKysr LS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmN2ZiY2Y0 MTMuLmU2ZjVhMDk2YSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA QCAtMSwzICsxLDI3IEBACisyMDE5LTA4LTI1ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51 Y2xhLmVkdT4KKworCWludHByb3BzLmgsIHZlcmlmeS5oOiBwb3J0IGJldHRlciB0byBjbGFu ZworCUltcHJvdmUgY29kZSBnZW5lcmF0ZWQgYnkgSU5UX0FERF9XUkFQViBhbmQgSU5UX1NV QlRSQUNUX1dSQVBWCisJd2l0aCBDbGFuZy4gIFByb2JsZW0gcmVwb3J0ZWQgcHJpdmF0ZWx5 IGJ5IE1hdHRpYXMgRW5nZGVnw6VyZC4KKwlBbHNvLCBpbnN1bGF0ZSBpbnRwcm9wcy5oIGFu ZCB2ZXJpZnkuaCBiZXR0ZXIgYWdhaW5zdCBlYWNoIG90aGVy4oCZcworCWRlZmluaXRpb25z IG9mIF9faGFzX2J1aWx0aW4gb24gbm9uLUNsYW5nIGhvc3RzLgorCSogbGliL2ludHByb3Bz LmggKF9faGFzX2J1aWx0aW4pOiBEZWZpbmUgYSB0ZW1wb3Jhcnkgc3Vic3RpdHV0ZQorCWlm IF9faGFzX2J1aWx0aW4gaXMgbm90IGFscmVhZHkgZGVmaW5lZC4KKwkoX0dMX0hBU19fX2J1 aWx0aW5fYWRkX292ZXJmbG93LCBfR0xfVEVNUERFRl9fX2hhc19idWlsdGluKToKKwlOZXcg dGVtcG9yYXJ5IGludGVybmFsIG1hY3Jvcy4KKwkoX0dMX0hBU19CVUlMVElOX0FERF9PVkVS RkxPVywgX0dMX0hBU19CVUlMVElOX01VTF9PVkVSRkxPVyk6CisJTm93IHR3byBzZXBhcmF0 ZSBtYWNyb3MsIHJlcGxhY2luZyB0aGUgb2xkCisJX0dMX0hBU19CVUlMVElOX09WRVJGTE9X LCBzaW5jZSB3ZSBubyBsb25nZXIgYXNzdW1lIHRoYXQKKwlfX2J1aWx0aW5fbXVsX292ZXJm bG93IGlzIGxpa2UgdGhlIHJlc3QuICBBbGwgdXNlcyBjaGFuZ2VkLgorCShJTlRfQUREX1dS QVBWLCBJTlRfU1VCVFJBQ1RfV1JBUFYsIElOVF9NVUxUSVBMWV9XUkFQVik6CisJQWRqdXN0 IHRvIGFib3ZlIGNoYW5nZXMuCisJKF9HTF9JTlRfT1BfV1JBUFYpOiBSZW1vdmUg4oCYYnVp bHRpbuKAmSBhcmcsIHNpbmNlIGl04oCZcyBubworCWxvbmdlciByZWxldmFudC4gIEFsbCB1 c2VzIGNoYW5nZWQuCisJKiBsaWIvdmVyaWZ5LmggKF9faGFzX2J1aWx0aW4pOiBUcmVhdCBs aWtlIGludHByb3BzLmgsCisJc28gdGhhdCB0aGUgdHdvIC5oIGZpbGVzIGRvIG5vdCBjb2xs aWRlIHdpdGggZWFjaCBvdGhlci4KKwkoX0dMX0hBU19fX2J1aWx0aW5fdW5yZWFjaGFibGUs IF9HTF9IQVNfX19idWlsdGluX3RyYXApCisJKF9HTF9URU1QREVGX19faGFzX2J1aWx0aW4p OiBOZXcgdGVtcG9yYXJ5IGludGVybmFsIG1hY3Jvcy4KKwogMjAxOS0wOC0yNCAgUGF1bCBF Z2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAlpbnRwcm9wczogc2F5IHdoeSBub3Qg Q2xhbmcgX19idWlsdGluX2FkZF9vdmVyZmxvdwpkaWZmIC0tZ2l0IGEvbGliL2ludHByb3Bz LmggYi9saWIvaW50cHJvcHMuaAppbmRleCBmYmJjM2NmZmUuLmZmZDczNzAyOCAxMDA2NDQK LS0tIGEvbGliL2ludHByb3BzLmgKKysrIGIvbGliL2ludHByb3BzLmgKQEAgLTIyLDYgKzIy LDE4IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorLyogSWYgdGhlIGNvbXBpbGVyIGxh Y2tzIF9faGFzX2J1aWx0aW4sIGRlZmluZSBpdCB3ZWxsIGVub3VnaCBmb3IgdGhpcworICAg c291cmNlIGZpbGUgb25seS4gICovCisjaWZuZGVmIF9faGFzX2J1aWx0aW4KKyMgZGVmaW5l IF9faGFzX2J1aWx0aW4oeCkgX0dMX0hBU18jI3gKKyMgaWYgNSA8PSBfX0dOVUNfXyAmJiAh ZGVmaW5lZCBfX0lDQworIyAgZGVmaW5lIF9HTF9IQVNfX19idWlsdGluX2FkZF9vdmVyZmxv dyAxCisjIGVsc2UKKyMgIGRlZmluZSBfR0xfSEFTX19fYnVpbHRpbl9hZGRfb3ZlcmZsb3cg MAorIyBlbmRpZgorIyBkZWZpbmUgX0dMX1RFTVBERUZfX19oYXNfYnVpbHRpbgorI2VuZGlm CisKIC8qIFJldHVybiBhIHZhbHVlIHdpdGggdGhlIGNvbW1vbiByZWFsIHR5cGUgb2YgRSBh bmQgViBhbmQgdGhlIHZhbHVlIG9mIFYuCiAgICBEbyBub3QgZXZhbHVhdGUgRS4gICovCiAj ZGVmaW5lIF9HTF9JTlRfQ09OVkVSVChlLCB2KSAoKDEgPyAwIDogKGUpKSArICh2KSkKQEAg LTIyMCwxNiArMjMyLDI0IEBACiAgICA/IChhKSA8IChtaW4pID4+IChiKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgIDogKG1heCkgPj4gKGIpIDwgKGEpKQogCi0v KiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4g UCBpcyBub24tbnVsbC4KLSAgIFNlZSA8aHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVn LmNnaT9pZD0xNjQwND4gZm9yIHdoeSB0aGlzIGlzCi0gICBmYWxzZSBmb3IgQ2xhbmcuICAq LwotI2lmIDUgPD0gX19HTlVDX18gJiYgIWRlZmluZWQgX19JQ0MKLSMgZGVmaW5lIF9HTF9I QVNfQlVJTFRJTl9PVkVSRkxPVyAxCisvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZs b3cgKEEsIEIsIFApIGFuZCBfX2J1aWx0aW5fc3ViX292ZXJmbG93CisgICAoQSwgQiwgUCkg d29yayB3aGVuIFAgaXMgbm9uLW51bGwuICAqLworI2lmIF9faGFzX2J1aWx0aW4gKF9fYnVp bHRpbl9hZGRfb3ZlcmZsb3cpCisjIGRlZmluZSBfR0xfSEFTX0JVSUxUSU5fQUREX09WRVJG TE9XIDEKKyNlbHNlCisjIGRlZmluZSBfR0xfSEFTX0JVSUxUSU5fQUREX09WRVJGTE9XIDAK KyNlbmRpZgorCisvKiBUcnVlIGlmIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cgKEEsIEIsIFAp IHdvcmtzIHdoZW4gUCBpcyBub24tbnVsbC4gICovCisjaWZkZWYgX19jbGFuZ19fCisvKiBX b3JrIGFyb3VuZCBDbGFuZyBidWcgPGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MTY0MDQ+LiAgKi8KKyMgZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9NVUxfT1ZFUkZM T1cgMAogI2Vsc2UKLSMgZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVyAwCisjIGRl ZmluZSBfR0xfSEFTX0JVSUxUSU5fTVVMX09WRVJGTE9XIF9HTF9IQVNfQlVJTFRJTl9BRERf T1ZFUkZMT1cKICNlbmRpZgogCi0vKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3df cCAoQSwgQiwgQykgd29ya3MuICAqLworLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJm bG93X3AgKEEsIEIsIEMpIHdvcmtzLCBhbmQgc2ltaWxhcmx5IGZvcgorICAgX19idWlsdGlu X211bF9vdmVyZmxvd19wIGFuZCBfX2J1aWx0aW5fbXVsX292ZXJmbG93X3AuICAqLwogI2Rl ZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUCAoNyA8PSBfX0dOVUNfXykKIAogLyog VGhlIF9HTCpfT1ZFUkZMT1cgbWFjcm9zIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIGFz IHRoZQpAQCAtMzUzLDI5ICszNzMsMzMgQEAKIAogLyogU3RvcmUgdGhlIGxvdy1vcmRlciBi aXRzIG9mIEEgKyBCLCBBIC0gQiwgQSAqIEIsIHJlc3BlY3RpdmVseSwgaW50byAqUi4KICAg IFJldHVybiAxIGlmIHRoZSByZXN1bHQgb3ZlcmZsb3dzLiAgU2VlIGFib3ZlIGZvciByZXN0 cmljdGlvbnMuICAqLwotI2RlZmluZSBJTlRfQUREX1dSQVBWKGEsIGIsIHIpIFwKLSAgX0dM X0lOVF9PUF9XUkFQViAoYSwgYiwgciwgKywgX19idWlsdGluX2FkZF9vdmVyZmxvdywgXAot ICAgICAgICAgICAgICAgICAgICBfR0xfSU5UX0FERF9SQU5HRV9PVkVSRkxPVykKLSNkZWZp bmUgSU5UX1NVQlRSQUNUX1dSQVBWKGEsIGIsIHIpIFwKLSAgX0dMX0lOVF9PUF9XUkFQViAo YSwgYiwgciwgLSwgX19idWlsdGluX3N1Yl9vdmVyZmxvdywgXAotICAgICAgICAgICAgICAg ICAgICBfR0xfSU5UX1NVQlRSQUNUX1JBTkdFX09WRVJGTE9XKQotI2RlZmluZSBJTlRfTVVM VElQTFlfV1JBUFYoYSwgYiwgcikgXAotICAgX0dMX0lOVF9PUF9XUkFQViAoYSwgYiwgciwg KiwgX0dMX0JVSUxUSU5fTVVMX09WRVJGTE9XLCBcCi0gICAgICAgICAgICAgICAgICAgICBf R0xfSU5UX01VTFRJUExZX1JBTkdFX09WRVJGTE9XKQotCi0vKiBMaWtlIF9fYnVpbHRpbl9t dWxfb3ZlcmZsb3csIGJ1dCB3b3JrIGFyb3VuZCBHQ0MgYnVnIDkxNDUwLiAgKi8KLSNkZWZp bmUgX0dMX0JVSUxUSU5fTVVMX09WRVJGTE9XKGEsIGIsIHIpIFwKLSAgKCghX0dMX1NJR05F RF9UWVBFX09SX0VYUFIgKCoocikpICYmIEVYUFJfU0lHTkVEIChhKSAmJiBFWFBSX1NJR05F RCAoYikgXAotICAgICYmIF9HTF9JTlRfTVVMVElQTFlfUkFOR0VfT1ZFUkZMT1cgKGEsIGIs IDAsIChfX3R5cGVvZl9fICgqKHIpKSkgLTEpKSBcCi0gICA/ICgodm9pZCkgX19idWlsdGlu X211bF9vdmVyZmxvdyAoYSwgYiwgciksIDEpIFwKLSAgIDogX19idWlsdGluX211bF9vdmVy ZmxvdyAoYSwgYiwgcikpCisjaWYgX0dMX0hBU19CVUlMVElOX0FERF9PVkVSRkxPVworIyBk ZWZpbmUgSU5UX0FERF9XUkFQVihhLCBiLCByKSBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChh LCBiLCByKQorIyBkZWZpbmUgSU5UX1NVQlRSQUNUX1dSQVBWKGEsIGIsIHIpIF9fYnVpbHRp bl9zdWJfb3ZlcmZsb3cgKGEsIGIsIHIpCisjZWxzZQorIyBkZWZpbmUgSU5UX0FERF9XUkFQ VihhLCBiLCByKSBcCisgICBfR0xfSU5UX09QX1dSQVBWIChhLCBiLCByLCArLCBfR0xfSU5U X0FERF9SQU5HRV9PVkVSRkxPVykKKyMgZGVmaW5lIElOVF9TVUJUUkFDVF9XUkFQVihhLCBi LCByKSBcCisgICBfR0xfSU5UX09QX1dSQVBWIChhLCBiLCByLCAtLCBfR0xfSU5UX1NVQlRS QUNUX1JBTkdFX09WRVJGTE9XKQorI2VuZGlmCisjaWYgX0dMX0hBU19CVUlMVElOX01VTF9P VkVSRkxPVworLyogV29yayBhcm91bmQgR0NDIGJ1ZyA5MTQ1MC4gICovCisjIGRlZmluZSBJ TlRfTVVMVElQTFlfV1JBUFYoYSwgYiwgcikgXAorICAgKCghX0dMX1NJR05FRF9UWVBFX09S X0VYUFIgKCoocikpICYmIEVYUFJfU0lHTkVEIChhKSAmJiBFWFBSX1NJR05FRCAoYikgXAor ICAgICAmJiBfR0xfSU5UX01VTFRJUExZX1JBTkdFX09WRVJGTE9XIChhLCBiLCAwLCAoX190 eXBlb2ZfXyAoKihyKSkpIC0xKSkgXAorICAgID8gKCh2b2lkKSBfX2J1aWx0aW5fbXVsX292 ZXJmbG93IChhLCBiLCByKSwgMSkgXAorICAgIDogX19idWlsdGluX211bF9vdmVyZmxvdyAo YSwgYiwgcikpCisjZWxzZQorIyBkZWZpbmUgSU5UX01VTFRJUExZX1dSQVBWKGEsIGIsIHIp IFwKKyAgIF9HTF9JTlRfT1BfV1JBUFYgKGEsIGIsIHIsICosIF9HTF9JTlRfTVVMVElQTFlf UkFOR0VfT1ZFUkZMT1cpCisjZW5kaWYKIAogLyogTm9uemVybyBpZiB0aGlzIGNvbXBpbGVy IGhhcyBHQ0MgYnVnIDY4MTkzIG9yIENsYW5nIGJ1ZyAyNTM5MC4gIFNlZToKICAgIGh0dHBz Oi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY4MTkzCiAgICBodHRw czovL2xsdm0ub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTI1MzkwCiAgICBGb3Igbm93LCBh c3N1bWUgYWxsIHZlcnNpb25zIG9mIEdDQy1saWtlIGNvbXBpbGVycyBnZW5lcmF0ZSBib2d1 cwotICAgd2FybmluZ3MgZm9yIF9HZW5lcmljLiAgVGhpcyBtYXR0ZXJzIG9ubHkgZm9yIG9s ZGVyIGNvbXBpbGVycyB0aGF0Ci0gICBsYWNrIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cuICAq LworICAgd2FybmluZ3MgZm9yIF9HZW5lcmljLiAgVGhpcyBtYXR0ZXJzIG9ubHkgZm9yIGNv bXBpbGVycyB0aGF0CisgICBsYWNrIHJlbGV2YW50IGJ1aWx0aW5zLiAgKi8KICNpZiBfX0dO VUNfXwogIyBkZWZpbmUgX0dMX19HRU5FUklDX0JPR1VTIDEKICNlbHNlCkBAIC0zODMsMTMg KzQwNywxMCBAQAogI2VuZGlmCiAKIC8qIFN0b3JlIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBB IDxvcD4gQiBpbnRvICpSLCB3aGVyZSBPUCBzcGVjaWZpZXMKLSAgIHRoZSBvcGVyYXRpb24u ICBCVUlMVElOIGlzIHRoZSBidWlsdGluIG9wZXJhdGlvbiwgYW5kIE9WRVJGTE9XIHRoZQot ICAgb3ZlcmZsb3cgcHJlZGljYXRlLiAgUmV0dXJuIDEgaWYgdGhlIHJlc3VsdCBvdmVyZmxv d3MuICBTZWUgYWJvdmUKLSAgIGZvciByZXN0cmljdGlvbnMuICAqLwotI2lmIF9HTF9IQVNf QlVJTFRJTl9PVkVSRkxPVwotIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBv cCwgYnVpbHRpbiwgb3ZlcmZsb3cpIGJ1aWx0aW4gKGEsIGIsIHIpCi0jZWxpZiAyMDExMTIg PD0gX19TVERDX1ZFUlNJT05fXyAmJiAhX0dMX19HRU5FUklDX0JPR1VTCi0jIGRlZmluZSBf R0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgXAorICAg dGhlIG9wZXJhdGlvbiBhbmQgT1ZFUkZMT1cgdGhlIG92ZXJmbG93IHByZWRpY2F0ZS4gIFJl dHVybiAxIGlmIHRoZQorICAgcmVzdWx0IG92ZXJmbG93cy4gIFNlZSBhYm92ZSBmb3IgcmVz dHJpY3Rpb25zLiAgKi8KKyNpZiAyMDExMTIgPD0gX19TVERDX1ZFUlNJT05fXyAmJiAhX0dM X19HRU5FUklDX0JPR1VTCisjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9w LCBvdmVyZmxvdykgXAogICAgKF9HZW5lcmljIFwKICAgICAoKihyKSwgXAogICAgICBzaWdu ZWQgY2hhcjogXApAQCAtNDQ0LDcgKzQ2NSw3IEBACiAgICAgICAgIDogKCoocikgPSBfR0xf SU5UX09QX1dSQVBWX1ZJQV9VTlNJR05FRCAoYSxiLG9wLHVuc2lnbmVkLHN0KSwgMCkpKQog IyBlbmRpZgogCi0jIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWls dGluLCBvdmVyZmxvdykgXAorIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBv cCwgb3ZlcmZsb3cpIFwKICAgIChzaXplb2YgKihyKSA9PSBzaXplb2YgKHNpZ25lZCBjaGFy KSBcCiAgICAgPyBfR0xfSU5UX09QX1dSQVBWX1NNQUxMSVNIIChhLCBiLCByLCBvcCwgb3Zl cmZsb3csIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFy LCBTQ0hBUl9NSU4sIFNDSEFSX01BWCwgXApAQCAtNTY1LDQgKzU4NiwxMCBAQAogICAgICAg ICAgOiAodG1pbikgLyAoYSkgPCAoYikpIFwKICAgICAgIDogKHRtYXgpIC8gKGIpIDwgKGEp KSkKIAorI2lmZGVmIF9HTF9URU1QREVGX19faGFzX2J1aWx0aW4KKyMgdW5kZWYgX19oYXNf YnVpbHRpbgorIyB1bmRlZiBfR0xfSEFTX19fYnVpbHRpbl9hZGRfb3ZlcmZsb3cKKyMgdW5k ZWYgX0dMX1RFTVBERUZfX19oYXNfYnVpbHRpbgorI2VuZGlmCisKICNlbmRpZiAvKiBfR0xf SU5UUFJPUFNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3ZlcmlmeS5oIGIvbGliL3ZlcmlmeS5o CmluZGV4IGFmZGMxYWQ4MS4uMDZlOTc1ZWJmIDEwMDY0NAotLS0gYS9saWIvdmVyaWZ5LmgK KysrIGIvbGliL3ZlcmlmeS5oCkBAIC01Niw2ICs1NiwxNiBAQAogIyB1bmRlZiBfU3RhdGlj X2Fzc2VydAogI2VuZGlmCiAKKy8qIElmIHRoZSBjb21waWxlciBsYWNrcyBfX2hhc19idWls dGluLCBkZWZpbmUgaXQgd2VsbCBlbm91Z2ggZm9yIHRoaXMKKyAgIHNvdXJjZSBmaWxlIG9u bHkuICAqLworI2lmbmRlZiBfX2hhc19idWlsdGluCisjIGRlZmluZSBfX2hhc19idWlsdGlu KHgpIF9HTF9IQVNfIyN4CisjIGRlZmluZSBfR0xfSEFTX19fYnVpbHRpbl91bnJlYWNoYWJs ZSAoNCA8IF9fR05VQ19fICsgKDUgPD0gX19HTlVDX01JTk9SX18pKQorIyBkZWZpbmUgX0dM X0hBU19fX2J1aWx0aW5fdHJhcCBcCisgICAgKDMgPCBfX0dOVUNfXyArICgzIDwgX19HTlVD X01JTk9SX18gKyAoNCA8PSBfX0dOVUNfUEFUQ0hMRVZFTF9fKSkpCisjIGRlZmluZSBfR0xf VEVNUERFRl9fX2hhc19idWlsdGluCisjZW5kaWYKKwogLyogRWFjaCBvZiB0aGVzZSBtYWNy b3MgdmVyaWZpZXMgdGhhdCBpdHMgYXJndW1lbnQgUiBpcyBub256ZXJvLiAgVG8KICAgIGJl IHBvcnRhYmxlLCBSIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGNvbnN0YW50IGV4cHJlc3Npb24u ICBVbmxpa2UKICAgIGFzc2VydCAoUiksIHRoZXJlIGlzIG5vIHJ1bi10aW1lIG92ZXJoZWFk LgpAQCAtMjYwLDI0ICsyNzAsMTcgQEAgdGVtcGxhdGUgPGludCB3PgogIyBkZWZpbmUgdmVy aWZ5KFIpIF9HTF9WRVJJRlkgKFIsICJ2ZXJpZnkgKCIgI1IgIikiLCAtKQogI2VuZGlmCiAK LSNpZm5kZWYgX19oYXNfYnVpbHRpbgotIyBkZWZpbmUgX19oYXNfYnVpbHRpbih4KSAwCi0j ZW5kaWYKLQogLyogQXNzdW1lIHRoYXQgUiBhbHdheXMgaG9sZHMuICBCZWhhdmlvciBpcyB1 bmRlZmluZWQgaWYgUiBpcyBmYWxzZSwKICAgIGZhaWxzIHRvIGV2YWx1YXRlLCBvciBoYXMg c2lkZSBlZmZlY3RzLiAgQWx0aG91Z2ggYXNzdW1pbmcgUiBjYW4KICAgIGhlbHAgYSBjb21w aWxlciBnZW5lcmF0ZSBiZXR0ZXIgY29kZSBvciBkaWFnbm9zdGljcywgcGVyZm9ybWFuY2UK ICAgIGNhbiBzdWZmZXIgaWYgUiB1c2VzIGhhcmQtdG8tb3B0aW1pemUgZmVhdHVyZXMgc3Vj aCBhcyBmdW5jdGlvbgogICAgY2FsbHMgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiAg Ki8KIAotI2lmIChfX2hhc19idWlsdGluIChfX2J1aWx0aW5fdW5yZWFjaGFibGUpIFwKLSAg ICAgfHwgNCA8IF9fR05VQ19fICsgKDUgPD0gX19HTlVDX01JTk9SX18pKQorI2lmIF9faGFz X2J1aWx0aW4gKF9fYnVpbHRpbl91bnJlYWNoYWJsZSkKICMgZGVmaW5lIGFzc3VtZShSKSAo KFIpID8gKHZvaWQpIDAgOiBfX2J1aWx0aW5fdW5yZWFjaGFibGUgKCkpCiAjZWxpZiAxMjAw IDw9IF9NU0NfVkVSCiAjIGRlZmluZSBhc3N1bWUoUikgX19hc3N1bWUgKFIpCi0jZWxpZiAo KGRlZmluZWQgR0NDX0xJTlQgfHwgZGVmaW5lZCBsaW50KSBcCi0gICAgICAgJiYgKF9faGFz X2J1aWx0aW4gKF9fYnVpbHRpbl90cmFwKSBcCi0gICAgICAgICAgIHx8IDMgPCBfX0dOVUNf XyArICgzIDwgX19HTlVDX01JTk9SX18gKyAoNCA8PSBfX0dOVUNfUEFUQ0hMRVZFTF9fKSkp KQorI2VsaWYgKGRlZmluZWQgR0NDX0xJTlQgfHwgZGVmaW5lZCBsaW50KSAmJiBfX2hhc19i dWlsdGluIChfX2J1aWx0aW5fdHJhcCkKICAgLyogRG9pbmcgaXQgdGhpcyB3YXkgaGVscHMg dmFyaW91cyBwYWNrYWdlcyB3aGVuIGNvbmZpZ3VyZWQgd2l0aAogICAgICAtLWVuYWJsZS1n Y2Mtd2FybmluZ3MsIHdoaWNoIGNvbXBpbGVzIHdpdGggLURsaW50LiAgSXQncyBuaWNlcgog ICAgICB3aGVuICdhc3N1bWUnIHNpbGVuY2VzIHdhcm5pbmdzIGV2ZW4gd2l0aCBvbGRlciBH Q0NzLiAgKi8KQEAgLTI4Nyw2ICsyOTAsMTMgQEAgdGVtcGxhdGUgPGludCB3PgogIyBkZWZp bmUgYXNzdW1lKFIpICgoUikgPyAodm9pZCkgMCA6IC8qTk9UUkVBQ0hFRCovICh2b2lkKSAw KQogI2VuZGlmCiAKKyNpZmRlZiBfR0xfVEVNUERFRl9fX2hhc19idWlsdGluCisjIHVuZGVm IF9faGFzX2J1aWx0aW4KKyMgdW5kZWYgX0dMX0hBU19fX2J1aWx0aW5fdW5yZWFjaGFibGUK KyMgdW5kZWYgX0dMX0hBU19fX2J1aWx0aW5fdHJhcAorIyB1bmRlZiBfR0xfVEVNUERFRl9f X2hhc19idWlsdGluCisjZW5kaWYKKwogLyogQGFzc2VydC5oIG9taXQgZW5kQCAgKi8KIAog I2VuZGlmCi0tIAoyLjE3LjEKCg== --------------899B39DB3D58C2AD8C829CE4--