From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 83D313857001 for ; Wed, 27 Jul 2022 11:45:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 83D313857001 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,195,1654588800"; d="diff'?scan'208";a="80383163" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 27 Jul 2022 03:45:48 -0800 IronPort-SDR: MNkMR8hNOGmbZEluWSjUz3oZcZHu5fS9jnuN3ILnRkW+LFlfQZSxBHHQ870TMYwXoDtoDng671 I29N5Hp/orU6n3xoKfdy5r8vLgUsTXSh4B93QCXQKown7mxO5wnPUsnWWtayhb2RsLhjHysUVD O1c9q92Gq94CP+V6bBsl+22lUHzFelaPASO4cOwLB99I/ZUULmYfM8ys1lZvd4ZGmayNeRBpQ2 nfPB0fsmKowh3KpfHgJ8DNQQTbkvTOW3gG5SaovhGA10MMHrnMU7JIR6SgjbNKPRxEGdQ04UsK bUg= Content-Type: multipart/mixed; boundary="------------Fs1sAj8Pv0odsv1Z00kviRIY" Message-ID: <4e5632ec-d25a-445e-2c74-5b54a8d145ea@codesourcery.com> Date: Wed, 27 Jul 2022 13:45:30 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH, OpenMP, C++] Allow classes with static members to be mappable Content-Language: en-US To: Jakub Jelinek , gcc-patches References: <45836136-ada7-500e-8fd1-c4f2b4ae515b@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-08.mgc.mentorg.com (139.181.222.8) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jul 2022 11:46:01 -0000 --------------Fs1sAj8Pv0odsv1Z00kviRIY Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi all, On 05.05.22 11:12, Jakub Jelinek via Gcc-patches wrote: =E2=86=92 https://gcc.gnu.org/pipermail/gcc-patches/2022-May/594082.html > On Wed, Mar 09, 2022 at 07:04:24PM +0800, Chung-Lin Tang wrote: =E2=86=92 https://gcc.gnu.org/pipermail/gcc-patches/2022-March/591449.html >> Now in OpenMP 5.x, static members are supposed to be not a barrier for a= class >> to be target-mapped. >> >> There is the related issue of actually providing access to static const/= constexpr >> members on the GPU (probably a case of https://github.com/OpenMP/spec/is= sues/2158) >> but that is for later. >> >> This patch basically just removes the check for static members inside >> cp_omp_mappable_type_1, and adjusts a testcase. Not sure if more tests a= re needed. >> Tested on trunk without regressions, okay when stage1 reopens? > I don't see anything useful left in cp_omp_mappable_type{,_1}. > In particular, starting with OpenMP 5.0, for both C and C++ we just say > that a mappable type is a complete type. True, for C++ there is also the > "All member functions accessed in any target region must appear in a > declare target directive." > and similarly for Fortran, but that isn't something we really can check [= ...] I have now removed the hook as suggested. > Now, the C++ FE has also cp_omp_emit_unmappable_type_notes while other FE= s > don't, either we can just say that type doesn't have mappable type > like the C FE does, or perhaps just can emit a note that it isn't a mappa= ble > type because it is incomplete (but then it would be nice to do the same > thing in the C FE too). I looked into this =E2=80=93 but I think only C++ has TYPE_MAIN_DECL; witho= ut being able to get the DECL_SOURCE_LOCATION, adding an "inform" does not really he= lp. Instead of the omp-specific emit function, I now use cxx_incomplete_type_in= form, which avoids printing a pointless "note:"/inform if no source location is available and uses common wording. (Visible with the added example, which printed before for some errors the omp-specific inform and for others the cp-generic inform.) (Actually, the testcase shows some overdiagnostic - for the single incomplete-type issue, there are 3 error message (two identical) and with C++ trice the same inform/"note:". This is unchanged with this patch.) The code could be simplified by removing the COMPLETE_TYPE_P condition befo= re cxx_incomplete_type_inform in cp/{decl,semantics}.cc, given that in omp_mappable_type(), the only check besides error_node is !COMPLETE_TYPE_P. The patch passes bootstrapping and regtesting on x86-64-gnu-linux. OK? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------Fs1sAj8Pv0odsv1Z00kviRIY Content-Type: text/x-patch; charset="UTF-8"; name="omp-static-class.diff" Content-Disposition: attachment; filename="omp-static-class.diff" Content-Transfer-Encoding: base64 T3Blbk1QL0MrKzogQWxsb3cgY2xhc3NlcyB3aXRoIHN0YXRpYyBtZW1iZXJzIHRvIGJlIG1h cHBhYmxlCgpBcyB0aGlzIGlzIHRoZSBsYXN0IGxhbmctc3BlY2lmaWMgdXNlciBvZiB0aGUg b21wX21hcHBhYmxlX3R5cGUgaG9vaywKdGhlIGhvb2sgaXMgcmVtb3ZlZCwga2VlcGluZyBv bmx5IGEgZ2VuZXJpYyBvbXBfbWFwcGFibGVfdHlwZSBmb3IKaW5jb21wbGV0ZSB0eXBlcyAo b3IgZXJyb3Jfbm9kZSkuCgpnY2MvYy9DaGFuZ2VMb2c6CgoJKiBjLWRlY2wuY2MgKGNfZGVj bF9hdHRyaWJ1dGVzLCBmaW5pc2hfZGVjbCk6IENhbGwgb21wX21hcHBhYmxlX3R5cGUKCWlu c3RlYWQgb2YgcmVtb3ZlZCBsYW5naG9vay4KCSogYy10eXBlY2suY2MgKGNfZmluaXNoX29t cF9jbGF1c2VzKTogTGlrZXdpc2UuCgpnY2MvY3AvQ2hhbmdlTG9nOgoKCSogY3Atb2JqY3At Y29tbW9uLmggKExBTkdfSE9PS1NfT01QX01BUFBBQkxFX1RZUEUpOiBSZW1vdmUuCgkqIGNw LXRyZWUuaCAoY3Bfb21wX21hcHBhYmxlX3R5cGUsIGNwX29tcF9lbWl0X3VubWFwcGFibGVf dHlwZV9ub3Rlcyk6CglSZW1vdmUuCgkqIGRlY2wyLmNjIChjcF9vbXBfbWFwcGFibGVfdHlw ZV8xLCBjcF9vbXBfbWFwcGFibGVfdHlwZSwKCWNwX29tcF9lbWl0X3VubWFwcGFibGVfdHlw ZV9ub3Rlcyk6IFJlbW92ZS4KCShjcGx1c19kZWNsX2F0dHJpYnV0ZXMpOiBDYWxsIG9tcF9t YXBwYWJsZV90eXBlIGluc3RlYWQgb2YKCXJlbW92ZWQgbGFuZ2hvb2suCgkqIGRlY2wuY2Mg KGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2U7IGNhbGwgY3h4X2luY29tcGxldGVfdHlwZV9p bmZvcm0KCWluIGxpZXUgb2YgY3Bfb21wX2VtaXRfdW5tYXBwYWJsZV90eXBlX25vdGVzLgoJ KiBzZW1hbnRpY3MuY2MgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IExpa2V3aXNlLgoKZ2NjL0No YW5nZUxvZzoKCgkqIGdpbXBsaWZ5LmNjIChvbXBfbm90aWNlX3ZhcmlhYmxlKTogQ2FsbCBv bXBfbWFwcGFibGVfdHlwZQogICAgICAgIGluc3RlYWQgb2YgcmVtb3ZlZCBsYW5naG9vay4K CSogb21wLWdlbmVyYWwuaCAob21wX21hcHBhYmxlX3R5cGUpOiBOZXcgcHJvdG90eXBlLgoJ KiBvbXAtZ2VuZXJhbC5jYyAob21wX21hcHBhYmxlX3R5cGUpOiAgTmV3OyBtb3ZlZCBmcm9t IC4uLgoJKiBsYW5naG9va3MuY2MgKGxoZF9vbXBfbWFwcGFibGVfdHlwZSk6IC4uLiBoZXJl LgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9vbXBfbWFwcGFibGVfdHlwZSwKCUxBTkdfSE9P S1NfT01QX01BUFBBQkxFX1RZUEUpOiBSZW1vdmUuCgkoTEFOR19IT09LU19GT1JfVFlQRVNf SU5JVElBTElaRVIpOiBSZW1vdGUgdGhlIGxhdHRlci4KCSogbGFuZ2hvb2tzLmggKHN0cnVj dCBsYW5nX2hvb2tzX2Zvcl90eXBlcyk6IFJlbW92ZQoJb21wX21hcHBhYmxlX3R5cGUuCgpn Y2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGcrKy5kZy9nb21wL3VubWFwcGFibGUtMS5D OiBSZW1vdmUgZGctZXJyb3I7IHJlbW92ZSBkZy1ub3RlIG5vCglsb25nZXIgc2hvd24gYXMg VFlQRV9NQUlOX0RFQ0wgaXMgTlVMTC4KCSogYy1jKystY29tbW9uL2dvbXAvbWFwLWluY29t cGxldGUtdHlwZS5jOiBOZXcgdGVzdC4KCkNvLWF1dGhvcmVkLWJ5OiBDaHVuZy1MaW4gVGFu ZyA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CgogZ2NjL2MvYy1kZWNsLmNjICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArLQogZ2NjL2MvYy10eXBlY2suY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArLS0KIGdjYy9jcC9jcC1v YmpjcC1jb21tb24uaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgLQogZ2NjL2Nw L2NwLXRyZWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiAtCiBn Y2MvY3AvZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2 ICsrLQogZ2NjL2NwL2RlY2wyLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA1OSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBnY2MvY3Avc2VtYW50aWNzLmNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKy0tLS0KIGdjYy9naW1w bGlmeS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGdj Yy9sYW5naG9va3MtZGVmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMg LS0KIGdjYy9sYW5naG9va3MuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTEgLS0tLQogZ2NjL2xhbmdob29rcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMyAtLQogZ2NjL29tcC1nZW5lcmFsLmNjICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAxMSArKysrCiBnY2Mvb21wLWdlbmVyYWwuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi9jLWMrKy1jb21tb24vZ29tcC9t YXAtaW5jb21wbGV0ZS10eXBlLmMgICAgICAgIHwgMTcgKysrKysrKwogZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvZ29tcC91bm1hcHBhYmxlLTEuQyAgICAgICAgICAgfCAgMyArLQogMTUgZmls ZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2djYy9jL2MtZGVjbC5jYyBiL2djYy9jL2MtZGVjbC5jYwppbmRleCBhZTg5OTBj MTM4Zi4uOWU1OTBjNjZkYWUgMTAwNjQ0Ci0tLSBhL2djYy9jL2MtZGVjbC5jYworKysgYi9n Y2MvYy9jLWRlY2wuY2MKQEAgLTUwNzQsOCArNTA3NCw3IEBAIGNfZGVjbF9hdHRyaWJ1dGVz ICh0cmVlICpub2RlLCB0cmVlIGF0dHJpYnV0ZXMsIGludCBmbGFncykKICAgICAgICYmICgo VkFSX1AgKCpub2RlKSAmJiBpc19nbG9iYWxfdmFyICgqbm9kZSkpCiAJICB8fCBUUkVFX0NP REUgKCpub2RlKSA9PSBGVU5DVElPTl9ERUNMKSkKICAgICB7Ci0gICAgICBpZiAoVkFSX1Ag KCpub2RlKQotCSAgJiYgIWxhbmdfaG9va3MudHlwZXMub21wX21hcHBhYmxlX3R5cGUgKFRS RUVfVFlQRSAoKm5vZGUpKSkKKyAgICAgIGlmIChWQVJfUCAoKm5vZGUpICYmICFvbXBfbWFw cGFibGVfdHlwZSAoVFJFRV9UWVBFICgqbm9kZSkpKQogCWF0dHJpYnV0ZXMgPSB0cmVlX2Nv bnMgKGdldF9pZGVudGlmaWVyICgib21wIGRlY2xhcmUgdGFyZ2V0IGltcGxpY2l0IiksCiAJ CQkJTlVMTF9UUkVFLCBhdHRyaWJ1dGVzKTsKICAgICAgIGVsc2UKQEAgLTU3MDEsNyArNTcw MCw3IEBAIGZpbmlzaF9kZWNsICh0cmVlIGRlY2wsIGxvY2F0aW9uX3QgaW5pdF9sb2MsIHRy ZWUgaW5pdCwKICAgICAgIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkKIAk9IHJlbW92ZV9hdHRy aWJ1dGUgKCJvbXAgZGVjbGFyZSB0YXJnZXQgaW1wbGljaXQiLAogCQkJICAgIERFQ0xfQVRU UklCVVRFUyAoZGVjbCkpOwotICAgICAgaWYgKCFsYW5nX2hvb2tzLnR5cGVzLm9tcF9tYXBw YWJsZV90eXBlIChUUkVFX1RZUEUgKGRlY2wpKSkKKyAgICAgIGlmICghb21wX21hcHBhYmxl X3R5cGUgKFRSRUVfVFlQRSAoZGVjbCkpKQogCWVycm9yICgiJXErRCBpbiBkZWNsYXJlIHRh cmdldCBkaXJlY3RpdmUgZG9lcyBub3QgaGF2ZSBtYXBwYWJsZSB0eXBlIiwKIAkgICAgICAg ZGVjbCk7CiAgICAgICBlbHNlIGlmICghbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJl IHRhcmdldCIsCmRpZmYgLS1naXQgYS9nY2MvYy9jLXR5cGVjay5jYyBiL2djYy9jL2MtdHlw ZWNrLmNjCmluZGV4IGZkMGE3ZjgxYTdhLi5kMDg0NzQ2YjdjMyAxMDA2NDQKLS0tIGEvZ2Nj L2MvYy10eXBlY2suY2MKKysrIGIvZ2NjL2MvYy10eXBlY2suY2MKQEAgLTE0OTQ0LDcgKzE0 OTQ0LDcgQEAgY19maW5pc2hfb21wX2NsYXVzZXMgKHRyZWUgY2xhdXNlcywgZW51bSBjX29t cF9yZWdpb25fdHlwZSBvcnQpCiAJICAgICAgZWxzZQogCQl7CiAJCSAgdCA9IE9NUF9DTEFV U0VfREVDTCAoYyk7Ci0JCSAgaWYgKCFsYW5nX2hvb2tzLnR5cGVzLm9tcF9tYXBwYWJsZV90 eXBlIChUUkVFX1RZUEUgKHQpKSkKKwkJICBpZiAoIW9tcF9tYXBwYWJsZV90eXBlIChUUkVF X1RZUEUgKHQpKSkKIAkJICAgIHsKIAkJICAgICAgZXJyb3JfYXQgKE9NUF9DTEFVU0VfTE9D QVRJT04gKGMpLAogCQkJCSJhcnJheSBzZWN0aW9uIGRvZXMgbm90IGhhdmUgbWFwcGFibGUg dHlwZSAiCkBAIC0xNTA4MSw3ICsxNTA4MSw3IEBAIGNfZmluaXNoX29tcF9jbGF1c2VzICh0 cmVlIGNsYXVzZXMsIGVudW0gY19vbXBfcmVnaW9uX3R5cGUgb3J0KQogCQkJICAgIHQsIG9t cF9jbGF1c2VfY29kZV9uYW1lW09NUF9DTEFVU0VfQ09ERSAoYyldKTsKIAkJICByZW1vdmUg PSB0cnVlOwogCQl9Ci0JICAgICAgZWxzZSBpZiAoIWxhbmdfaG9va3MudHlwZXMub21wX21h cHBhYmxlX3R5cGUgKFRSRUVfVFlQRSAodCkpKQorCSAgICAgIGVsc2UgaWYgKCFvbXBfbWFw cGFibGVfdHlwZSAoVFJFRV9UWVBFICh0KSkpCiAJCXsKIAkJICBlcnJvcl9hdCAoT01QX0NM QVVTRV9MT0NBVElPTiAoYyksCiAJCQkgICAgIiVxRSBkb2VzIG5vdCBoYXZlIGEgbWFwcGFi bGUgdHlwZSBpbiAlcXMgY2xhdXNlIiwKQEAgLTE1MTYyLDcgKzE1MTYyLDcgQEAgY19maW5p c2hfb21wX2NsYXVzZXMgKHRyZWUgY2xhdXNlcywgZW51bSBjX29tcF9yZWdpb25fdHlwZSBv cnQpCiAJCQkgfHwgKE9NUF9DTEFVU0VfTUFQX0tJTkQgKGMpCiAJCQkgICAgID09IEdPTVBf TUFQX0ZPUkNFX0RFVklDRVBUUikpKQogCQkgICAmJiB0ID09IE9NUF9DTEFVU0VfREVDTCAo YykKLQkJICAgJiYgIWxhbmdfaG9va3MudHlwZXMub21wX21hcHBhYmxlX3R5cGUgKFRSRUVf VFlQRSAodCkpKQorCQkgICAmJiAhb21wX21hcHBhYmxlX3R5cGUgKFRSRUVfVFlQRSAodCkp KQogCSAgICB7CiAJICAgICAgZXJyb3JfYXQgKE9NUF9DTEFVU0VfTE9DQVRJT04gKGMpLAog CQkJIiVxRCBkb2VzIG5vdCBoYXZlIGEgbWFwcGFibGUgdHlwZSBpbiAlcXMgY2xhdXNlIiwg dCwKQEAgLTE1Mjc5LDcgKzE1Mjc5LDcgQEAgY19maW5pc2hfb21wX2NsYXVzZXMgKHRyZWUg Y2xhdXNlcywgZW51bSBjX29tcF9yZWdpb25fdHlwZSBvcnQpCiAJCQljbmFtZSk7CiAJICAg ICAgcmVtb3ZlID0gdHJ1ZTsKIAkgICAgfQotCSAgZWxzZSBpZiAoIWxhbmdfaG9va3MudHlw ZXMub21wX21hcHBhYmxlX3R5cGUgKFRSRUVfVFlQRSAodCkpKQorCSAgZWxzZSBpZiAoIW9t cF9tYXBwYWJsZV90eXBlIChUUkVFX1RZUEUgKHQpKSkKIAkgICAgewogCSAgICAgIGVycm9y X2F0IChPTVBfQ0xBVVNFX0xPQ0FUSU9OIChjKSwKIAkJCSIlcUQgZG9lcyBub3QgaGF2ZSBh IG1hcHBhYmxlIHR5cGUgaW4gJXFzIGNsYXVzZSIsIHQsCmRpZmYgLS1naXQgYS9nY2MvY3Av Y3Atb2JqY3AtY29tbW9uLmggYi9nY2MvY3AvY3Atb2JqY3AtY29tbW9uLmgKaW5kZXggM2Mw NGU1YzAyNjUuLjFhNjdmMTRkOWIzIDEwMDY0NAotLS0gYS9nY2MvY3AvY3Atb2JqY3AtY29t bW9uLmgKKysrIGIvZ2NjL2NwL2NwLW9iamNwLWNvbW1vbi5oCkBAIC0xODcsOCArMTg3LDYg QEAgZXh0ZXJuIHRyZWUgY3h4X3NpbXVsYXRlX3JlY29yZF9kZWNsIChsb2NhdGlvbl90LCBj b25zdCBjaGFyICosCiAjZGVmaW5lIExBTkdfSE9PS1NfT01QX0ZJTklTSF9DTEFVU0UgY3h4 X29tcF9maW5pc2hfY2xhdXNlCiAjdW5kZWYgTEFOR19IT09LU19PTVBfUFJJVkFUSVpFX0JZ X1JFRkVSRU5DRQogI2RlZmluZSBMQU5HX0hPT0tTX09NUF9QUklWQVRJWkVfQllfUkVGRVJF TkNFIGN4eF9vbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZQotI3VuZGVmIExBTkdfSE9PS1Nf T01QX01BUFBBQkxFX1RZUEUKLSNkZWZpbmUgTEFOR19IT09LU19PTVBfTUFQUEFCTEVfVFlQ RSBjcF9vbXBfbWFwcGFibGVfdHlwZQogI3VuZGVmIExBTkdfSE9PS1NfT01QX0RJU1JFR0FS RF9WQUxVRV9FWFBSCiAjZGVmaW5lIExBTkdfSE9PS1NfT01QX0RJU1JFR0FSRF9WQUxVRV9F WFBSIGN4eF9vbXBfZGlzcmVnYXJkX3ZhbHVlX2V4cHIKIApkaWZmIC0tZ2l0IGEvZ2NjL2Nw L2NwLXRyZWUuaCBiL2djYy9jcC9jcC10cmVlLmgKaW5kZXggMzI3OGI0MTE0YmQuLmNiMjM5 NzU0ODRmIDEwMDY0NAotLS0gYS9nY2MvY3AvY3AtdHJlZS5oCisrKyBiL2djYy9jcC9jcC10 cmVlLmgKQEAgLTY5NTksOCArNjk1OSw2IEBAIGV4dGVybiBib29sIHBvc3NpYmx5X2lubGlu ZWRfcAkJCSh0cmVlKTsKIGV4dGVybiBpbnQgcGFybV9pbmRleCAgICAgICAgICAgICAgICAg ICAgICAgICAgICh0cmVlKTsKIGV4dGVybiB0cmVlIHZ0dl9zdGFydF92ZXJpZmljYXRpb25f Y29uc3RydWN0b3JfaW5pdF9mdW5jdGlvbiAodm9pZCk7CiBleHRlcm4gdHJlZSB2dHZfZmlu aXNoX3ZlcmlmaWNhdGlvbl9jb25zdHJ1Y3Rvcl9pbml0X2Z1bmN0aW9uICh0cmVlKTsKLWV4 dGVybiBib29sIGNwX29tcF9tYXBwYWJsZV90eXBlCQkodHJlZSk7Ci1leHRlcm4gYm9vbCBj cF9vbXBfZW1pdF91bm1hcHBhYmxlX3R5cGVfbm90ZXMJKHRyZWUpOwogZXh0ZXJuIHZvaWQg Y3BfY2hlY2tfY29uc3RfYXR0cmlidXRlcyAodHJlZSk7CiAKIC8qIGluIGVycm9yLmNjICov CmRpZmYgLS1naXQgYS9nY2MvY3AvZGVjbC5jYyBiL2djYy9jcC9kZWNsLmNjCmluZGV4IDcw YWQ2ODE0NjdlLi43ZjhiZmEzMTY3NCAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wuY2MKKysr IGIvZ2NjL2NwL2RlY2wuY2MKQEAgLTg2MjUsMTEgKzg2MjUsMTMgQEAgY3BfZmluaXNoX2Rl Y2wgKHRyZWUgZGVjbCwgdHJlZSBpbml0LCBib29sIGluaXRfY29uc3RfZXhwcl9wLAogCT0g cmVtb3ZlX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCBpbXBsaWNpdCIsCiAJCQkg ICAgREVDTF9BVFRSSUJVVEVTIChkZWNsKSk7CiAgICAgICBjb21wbGV0ZV90eXBlIChUUkVF X1RZUEUgKGRlY2wpKTsKLSAgICAgIGlmICghY3Bfb21wX21hcHBhYmxlX3R5cGUgKFRSRUVf VFlQRSAoZGVjbCkpKQorICAgICAgaWYgKCFvbXBfbWFwcGFibGVfdHlwZSAoVFJFRV9UWVBF IChkZWNsKSkpCiAJewogCSAgZXJyb3IgKCIlcStEIGluIGRlY2xhcmUgdGFyZ2V0IGRpcmVj dGl2ZSBkb2VzIG5vdCBoYXZlIG1hcHBhYmxlIgogCQkgIiB0eXBlIiwgZGVjbCk7Ci0JICBj cF9vbXBfZW1pdF91bm1hcHBhYmxlX3R5cGVfbm90ZXMgKFRSRUVfVFlQRSAoZGVjbCkpOwor CSAgaWYgKFRSRUVfVFlQRSAoZGVjbCkgIT0gZXJyb3JfbWFya19ub2RlCisJICAgICAgJiYg IUNPTVBMRVRFX1RZUEVfUCAoVFJFRV9UWVBFIChkZWNsKSkpCisJICAgIGN4eF9pbmNvbXBs ZXRlX3R5cGVfaW5mb3JtIChUUkVFX1RZUEUgKGRlY2wpKTsKIAl9CiAgICAgICBlbHNlIGlm ICghbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCIsCiAJCQkJICBERUNM X0FUVFJJQlVURVMgKGRlY2wpKQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2RlY2wyLmNjIGIvZ2Nj L2NwL2RlY2wyLmNjCmluZGV4IDM3MzdlNWYwMTBjLi44OWFiMjU0NWQ2NCAxMDA2NDQKLS0t IGEvZ2NjL2NwL2RlY2wyLmNjCisrKyBiL2djYy9jcC9kZWNsMi5jYwpAQCAtNDksNiArNDks NyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQogI2luY2x1ZGUgImMtZmFtaWx5L2MtYWRhLXNwZWMuaCIKICNpbmNsdWRlICJhc2FuLmgi CiAjaW5jbHVkZSAib3B0YWJzLXF1ZXJ5LmgiCisjaW5jbHVkZSAib21wLWdlbmVyYWwuaCIK IAogLyogSWQgZm9yIGR1bXBpbmcgdGhlIHJhdyB0cmVlcy4gICovCiBpbnQgcmF3X2R1bXBf aWQ7CkBAIC0xNTc4LDYyICsxNTc5LDYgQEAgY3BfY2hlY2tfY29uc3RfYXR0cmlidXRlcyAo dHJlZSBhdHRyaWJ1dGVzKQogICAgIH0KIH0KIAotLyogUmV0dXJuIHRydWUgaWYgVFlQRSBp cyBhbiBPcGVuTVAgbWFwcGFibGUgdHlwZS4KLSAgIElmIE5PVEVTIGlzIG5vbi16ZXJvLCBl bWl0IGEgbm90ZSBtZXNzYWdlIGZvciBlYWNoIHByb2JsZW0uICAqLwotc3RhdGljIGJvb2wK LWNwX29tcF9tYXBwYWJsZV90eXBlXzEgKHRyZWUgdHlwZSwgYm9vbCBub3RlcykKLXsKLSAg Ym9vbCByZXN1bHQgPSB0cnVlOwotCi0gIC8qIE1hcHBhYmxlIHR5cGUgaGFzIHRvIGJlIGNv bXBsZXRlLiAgKi8KLSAgaWYgKHR5cGUgPT0gZXJyb3JfbWFya19ub2RlIHx8ICFDT01QTEVU RV9UWVBFX1AgKHR5cGUpKQotICAgIHsKLSAgICAgIGlmIChub3RlcyAmJiB0eXBlICE9IGVy cm9yX21hcmtfbm9kZSkKLQl7Ci0JICB0cmVlIGRlY2wgPSBUWVBFX01BSU5fREVDTCAodHlw ZSk7Ci0JICBpbmZvcm0gKChkZWNsID8gREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpIDog aW5wdXRfbG9jYXRpb24pLAotCQkgICJpbmNvbXBsZXRlIHR5cGUgJXFUIGlzIG5vdCBtYXBw YWJsZSIsIHR5cGUpOwotCX0KLSAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgIH0KLSAgLyog QXJyYXlzIGhhdmUgbWFwcGFibGUgdHlwZSBpZiB0aGUgZWxlbWVudHMgaGF2ZSBtYXBwYWJs ZSB0eXBlLiAgKi8KLSAgd2hpbGUgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRSkK LSAgICB0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKLSAgLyogQWxsIGRhdGEgbWVtYmVycyBt dXN0IGJlIG5vbi1zdGF0aWMuICAqLwotICBpZiAoQ0xBU1NfVFlQRV9QICh0eXBlKSkKLSAg ICB7Ci0gICAgICB0cmVlIGZpZWxkOwotICAgICAgZm9yIChmaWVsZCA9IFRZUEVfRklFTERT ICh0eXBlKTsgZmllbGQ7IGZpZWxkID0gREVDTF9DSEFJTiAoZmllbGQpKQotCWlmIChWQVJf UCAoZmllbGQpKQotCSAgewotCSAgICBpZiAobm90ZXMpCi0JICAgICAgaW5mb3JtIChERUNM X1NPVVJDRV9MT0NBVElPTiAoZmllbGQpLAotCQkgICAgICAic3RhdGljIGZpZWxkICVxRCBp cyBub3QgbWFwcGFibGUiLCBmaWVsZCk7Ci0JICAgIHJlc3VsdCA9IGZhbHNlOwotCSAgfQot CS8qIEFsbCBmaWVsZHMgbXVzdCBoYXZlIG1hcHBhYmxlIHR5cGVzLiAgKi8KLQllbHNlIGlm IChUUkVFX0NPREUgKGZpZWxkKSA9PSBGSUVMRF9ERUNMCi0JCSAmJiAhY3Bfb21wX21hcHBh YmxlX3R5cGVfMSAoVFJFRV9UWVBFIChmaWVsZCksIG5vdGVzKSkKLQkgIHJlc3VsdCA9IGZh bHNlOwotICAgIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUmV0dXJuIHRydWUgaWYg VFlQRSBpcyBhbiBPcGVuTVAgbWFwcGFibGUgdHlwZS4gICovCi1ib29sCi1jcF9vbXBfbWFw cGFibGVfdHlwZSAodHJlZSB0eXBlKQotewotICByZXR1cm4gY3Bfb21wX21hcHBhYmxlX3R5 cGVfMSAodHlwZSwgZmFsc2UpOwotfQotCi0vKiBSZXR1cm4gdHJ1ZSBpZiBUWVBFIGlzIGFu IE9wZW5NUCBtYXBwYWJsZSB0eXBlLgotICAgRW1pdCBhbiBlcnJvciBtZXNzYWdlcyBpZiBu b3QuICAqLwotYm9vbAotY3Bfb21wX2VtaXRfdW5tYXBwYWJsZV90eXBlX25vdGVzICh0cmVl IHR5cGUpCi17Ci0gIHJldHVybiBjcF9vbXBfbWFwcGFibGVfdHlwZV8xICh0eXBlLCB0cnVl KTsKLX0KLQogLyogUmV0dXJuIHRoZSBsYXN0IHB1c2hlZCBkZWNsYXJhdGlvbiBmb3IgdGhl IHN5bWJvbCBERUNMIG9yIE5VTEwKICAgIHdoZW4gbm8gc3VjaCBkZWNsYXJhdGlvbiBleGlz dHMuICAqLwogCkBAIC0xNzA5LDcgKzE2NTQsNyBAQCBjcGx1c19kZWNsX2F0dHJpYnV0ZXMg KHRyZWUgKmRlY2wsIHRyZWUgYXR0cmlidXRlcywgaW50IGZsYWdzKQogCSAgICAgICAqZGVj bCk7CiAgICAgICBlbHNlIGlmIChWQVJfUCAoKmRlY2wpCiAJICAgICAgICYmIChwcm9jZXNz aW5nX3RlbXBsYXRlX2RlY2wKLQkJICAgfHwgIWNwX29tcF9tYXBwYWJsZV90eXBlIChUUkVF X1RZUEUgKCpkZWNsKSkpKQorCQkgICB8fCAhb21wX21hcHBhYmxlX3R5cGUgKFRSRUVfVFlQ RSAoKmRlY2wpKSkpCiAJYXR0cmlidXRlcyA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIg KCJvbXAgZGVjbGFyZSB0YXJnZXQgaW1wbGljaXQiKSwKIAkJCQlOVUxMX1RSRUUsIGF0dHJp YnV0ZXMpOwogICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlbWFudGljcy5jYyBi L2djYy9jcC9zZW1hbnRpY3MuY2MKaW5kZXggMTZkZWEwNTkzYjAuLmFlN2M4ZWE3YjFmIDEw MDY0NAotLS0gYS9nY2MvY3Avc2VtYW50aWNzLmNjCisrKyBiL2djYy9jcC9zZW1hbnRpY3Mu Y2MKQEAgLTc5OTIsMTMgKzc5OTIsMTUgQEAgZmluaXNoX29tcF9jbGF1c2VzICh0cmVlIGNs YXVzZXMsIGVudW0gY19vbXBfcmVnaW9uX3R5cGUgb3J0KQogCQkgIHQgPSBPTVBfQ0xBVVNF X0RFQ0wgKGMpOwogCQkgIGlmIChUUkVFX0NPREUgKHQpICE9IFRSRUVfTElTVAogCQkgICAg ICAmJiAhdHlwZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wICh0KQotCQkgICAgICAmJiAhY3Bf b21wX21hcHBhYmxlX3R5cGUgKFRSRUVfVFlQRSAodCkpKQorCQkgICAgICAmJiAhb21wX21h cHBhYmxlX3R5cGUgKFRSRUVfVFlQRSAodCkpKQogCQkgICAgewogCQkgICAgICBlcnJvcl9h dCAoT01QX0NMQVVTRV9MT0NBVElPTiAoYyksCiAJCQkJImFycmF5IHNlY3Rpb24gZG9lcyBu b3QgaGF2ZSBtYXBwYWJsZSB0eXBlICIKIAkJCQkiaW4gJXFzIGNsYXVzZSIsCiAJCQkJb21w X2NsYXVzZV9jb2RlX25hbWVbT01QX0NMQVVTRV9DT0RFIChjKV0pOwotCQkgICAgICBjcF9v bXBfZW1pdF91bm1hcHBhYmxlX3R5cGVfbm90ZXMgKFRSRUVfVFlQRSAodCkpOworCQkgICAg ICBpZiAoVFJFRV9UWVBFICh0KSAhPSBlcnJvcl9tYXJrX25vZGUKKwkJCSAgJiYgIUNPTVBM RVRFX1RZUEVfUCAoVFJFRV9UWVBFICh0KSkpCisJCQljeHhfaW5jb21wbGV0ZV90eXBlX2lu Zm9ybSAoVFJFRV9UWVBFICh0KSk7CiAJCSAgICAgIHJlbW92ZSA9IHRydWU7CiAJCSAgICB9 CiAJCSAgd2hpbGUgKFRSRUVfQ09ERSAodCkgPT0gQVJSQVlfUkVGKQpAQCAtODEzNCwxMiAr ODEzNiwxNCBAQCBmaW5pc2hfb21wX2NsYXVzZXMgKHRyZWUgY2xhdXNlcywgZW51bSBjX29t cF9yZWdpb25fdHlwZSBvcnQpCiAJCQkgICAgdCwgb21wX2NsYXVzZV9jb2RlX25hbWVbT01Q X0NMQVVTRV9DT0RFIChjKV0pOwogCQkgIHJlbW92ZSA9IHRydWU7CiAJCX0KLQkgICAgICBl bHNlIGlmICghY3Bfb21wX21hcHBhYmxlX3R5cGUgKFRSRUVfVFlQRSAodCkpKQorCSAgICAg IGVsc2UgaWYgKCFvbXBfbWFwcGFibGVfdHlwZSAoVFJFRV9UWVBFICh0KSkpCiAJCXsKIAkJ ICBlcnJvcl9hdCAoT01QX0NMQVVTRV9MT0NBVElPTiAoYyksCiAJCQkgICAgIiVxRSBkb2Vz IG5vdCBoYXZlIGEgbWFwcGFibGUgdHlwZSBpbiAlcXMgY2xhdXNlIiwKIAkJCSAgICB0LCBv bXBfY2xhdXNlX2NvZGVfbmFtZVtPTVBfQ0xBVVNFX0NPREUgKGMpXSk7Ci0JCSAgY3Bfb21w X2VtaXRfdW5tYXBwYWJsZV90eXBlX25vdGVzIChUUkVFX1RZUEUgKHQpKTsKKwkJICBpZiAo VFJFRV9UWVBFICh0KSAhPSBlcnJvcl9tYXJrX25vZGUKKwkJICAgICAgJiYgIUNPTVBMRVRF X1RZUEVfUCAoVFJFRV9UWVBFICh0KSkpCisJCSAgICBjeHhfaW5jb21wbGV0ZV90eXBlX2lu Zm9ybSAoVFJFRV9UWVBFICh0KSk7CiAJCSAgcmVtb3ZlID0gdHJ1ZTsKIAkJfQogCSAgICAg IHdoaWxlIChUUkVFX0NPREUgKHQpID09IENPTVBPTkVOVF9SRUYpCkBAIC04MjMyLDE0ICs4 MjM2LDE2IEBAIGZpbmlzaF9vbXBfY2xhdXNlcyAodHJlZSBjbGF1c2VzLCBlbnVtIGNfb21w X3JlZ2lvbl90eXBlIG9ydCkKIAkJCSAgICAgPT0gR09NUF9NQVBfRklSU1RQUklWQVRFX1BP SU5URVIpKSkKIAkJICAgJiYgdCA9PSBPTVBfQ0xBVVNFX0RFQ0wgKGMpCiAJCSAgICYmICF0 eXBlX2RlcGVuZGVudF9leHByZXNzaW9uX3AgKHQpCi0JCSAgICYmICFjcF9vbXBfbWFwcGFi bGVfdHlwZSAoVFlQRV9SRUZfUCAoVFJFRV9UWVBFICh0KSkKLQkJCQkJICAgICA/IFRSRUVf VFlQRSAoVFJFRV9UWVBFICh0KSkKLQkJCQkJICAgICA6IFRSRUVfVFlQRSAodCkpKQorCQkg ICAmJiAhb21wX21hcHBhYmxlX3R5cGUgKFRZUEVfUkVGX1AgKFRSRUVfVFlQRSAodCkpCisJ CQkJCSAgPyBUUkVFX1RZUEUgKFRSRUVfVFlQRSAodCkpCisJCQkJCSAgOiBUUkVFX1RZUEUg KHQpKSkKIAkgICAgewogCSAgICAgIGVycm9yX2F0IChPTVBfQ0xBVVNFX0xPQ0FUSU9OIChj KSwKIAkJCSIlcUQgZG9lcyBub3QgaGF2ZSBhIG1hcHBhYmxlIHR5cGUgaW4gJXFzIGNsYXVz ZSIsIHQsCiAJCQlvbXBfY2xhdXNlX2NvZGVfbmFtZVtPTVBfQ0xBVVNFX0NPREUgKGMpXSk7 Ci0JICAgICAgY3Bfb21wX2VtaXRfdW5tYXBwYWJsZV90eXBlX25vdGVzIChUUkVFX1RZUEUg KHQpKTsKKwkgICAgICBpZiAoVFJFRV9UWVBFICh0KSAhPSBlcnJvcl9tYXJrX25vZGUKKwkJ ICAmJiAhQ09NUExFVEVfVFlQRV9QIChUUkVFX1RZUEUgKHQpKSkKKwkJY3h4X2luY29tcGxl dGVfdHlwZV9pbmZvcm0gKFRSRUVfVFlQRSAodCkpOwogCSAgICAgIHJlbW92ZSA9IHRydWU7 CiAJICAgIH0KIAkgIGVsc2UgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykgPT0gT01QX0NMQVVT RV9NQVAKQEAgLTg0MDksMTIgKzg0MTUsMTQgQEAgZmluaXNoX29tcF9jbGF1c2VzICh0cmVl IGNsYXVzZXMsIGVudW0gY19vbXBfcmVnaW9uX3R5cGUgb3J0KQogCQkJY25hbWUpOwogCSAg ICAgIHJlbW92ZSA9IHRydWU7CiAJICAgIH0KLQkgIGVsc2UgaWYgKCFjcF9vbXBfbWFwcGFi bGVfdHlwZSAoVFJFRV9UWVBFICh0KSkpCisJICBlbHNlIGlmICghb21wX21hcHBhYmxlX3R5 cGUgKFRSRUVfVFlQRSAodCkpKQogCSAgICB7CiAJICAgICAgZXJyb3JfYXQgKE9NUF9DTEFV U0VfTE9DQVRJT04gKGMpLAogCQkJIiVxRCBkb2VzIG5vdCBoYXZlIGEgbWFwcGFibGUgdHlw ZSBpbiAlcXMgY2xhdXNlIiwgdCwKIAkJCWNuYW1lKTsKLQkgICAgICBjcF9vbXBfZW1pdF91 bm1hcHBhYmxlX3R5cGVfbm90ZXMgKFRSRUVfVFlQRSAodCkpOworCSAgICAgIGlmIChUUkVF X1RZUEUgKHQpICE9IGVycm9yX21hcmtfbm9kZQorCQkgICYmICFDT01QTEVURV9UWVBFX1Ag KFRSRUVfVFlQRSAodCkpKQorCQljeHhfaW5jb21wbGV0ZV90eXBlX2luZm9ybSAoVFJFRV9U WVBFICh0KSk7CiAJICAgICAgcmVtb3ZlID0gdHJ1ZTsKIAkgICAgfQogCSAgaWYgKHJlbW92 ZSkKZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jYyBiL2djYy9naW1wbGlmeS5jYwppbmRl eCAyYWM3Y2EwODU1ZS4uNWUzNDBhN2FmYjUgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGlmeS5j YworKysgYi9nY2MvZ2ltcGxpZnkuY2MKQEAgLTc4ODIsNyArNzg4Miw3IEBAIG9tcF9ub3Rp Y2VfdmFyaWFibGUgKHN0cnVjdCBnaW1wbGlmeV9vbXBfY3R4ICpjdHgsIHRyZWUgZGVjbCwg Ym9vbCBpbl9jb2RlKQogCSAgICAgIGlmIChnaW1wbGlmeV9vbXBfY3R4cC0+dGFyZ2V0X2Zp cnN0cHJpdmF0aXplX2FycmF5X2Jhc2VzCiAJCSAgJiYgb21wX3ByaXZhdGl6ZV9ieV9yZWZl cmVuY2UgKGRlY2wpKQogCQl0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKLQkgICAgICBpZiAo IWxhbmdfaG9va3MudHlwZXMub21wX21hcHBhYmxlX3R5cGUgKHR5cGUpKQorCSAgICAgIGlm ICghb21wX21hcHBhYmxlX3R5cGUgKHR5cGUpKQogCQl7CiAJCSAgZXJyb3IgKCIlcUQgcmVm ZXJlbmNlZCBpbiB0YXJnZXQgcmVnaW9uIGRvZXMgbm90IGhhdmUgIgogCQkJICJhIG1hcHBh YmxlIHR5cGUiLCBkZWNsKTsKZGlmZiAtLWdpdCBhL2djYy9sYW5naG9va3MtZGVmLmggYi9n Y2MvbGFuZ2hvb2tzLWRlZi5oCmluZGV4IDRlMTc5MTVlOGIzLi4wZjFiZmJmMjU1YyAxMDA2 NDQKLS0tIGEvZ2NjL2xhbmdob29rcy1kZWYuaAorKysgYi9nY2MvbGFuZ2hvb2tzLWRlZi5o CkBAIC04OCw3ICs4OCw2IEBAIGV4dGVybiB0cmVlIGxoZF9vbXBfYXJyYXlfc2l6ZSAodHJl ZSwgZ2ltcGxlX3NlcSAqKTsKIHN0cnVjdCBnaW1wbGlmeV9vbXBfY3R4OwogZXh0ZXJuIHZv aWQgbGhkX29tcF9maXJzdHByaXZhdGl6ZV90eXBlX3NpemVzIChzdHJ1Y3QgZ2ltcGxpZnlf b21wX2N0eCAqLAogCQkJCQkgICAgICAgdHJlZSk7Ci1leHRlcm4gYm9vbCBsaGRfb21wX21h cHBhYmxlX3R5cGUgKHRyZWUpOwogZXh0ZXJuIGJvb2wgbGhkX29tcF9zY2FsYXJfcCAodHJl ZSwgYm9vbCk7CiBleHRlcm4gdHJlZSAqbGhkX29tcF9nZXRfZGVjbF9pbml0ICh0cmVlKTsK IGV4dGVybiB2b2lkIGxoZF9vbXBfZmluaXNoX2RlY2xfaW5pdHMgKCk7CkBAIC0yMDYsNyAr MjA1LDYgQEAgZXh0ZXJuIHRyZWUgbGhkX3VuaXRfc2l6ZV93aXRob3V0X3JldXNhYmxlX3Bh ZGRpbmcgKHRyZWUpOwogI2RlZmluZSBMQU5HX0hPT0tTX1RZUEVfTUFYX1NJWkUJbGhkX3Jl dHVybl9udWxsX2NvbnN0X3RyZWUKICNkZWZpbmUgTEFOR19IT09LU19PTVBfRklSU1RQUklW QVRJWkVfVFlQRV9TSVpFUyBcCiAgIGxoZF9vbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9zaXpl cwotI2RlZmluZSBMQU5HX0hPT0tTX09NUF9NQVBQQUJMRV9UWVBFCWxoZF9vbXBfbWFwcGFi bGVfdHlwZQogI2RlZmluZSBMQU5HX0hPT0tTX1RZUEVfSEFTSF9FUQkJTlVMTAogI2RlZmlu ZSBMQU5HX0hPT0tTX0NPUFlfTEFOR19RVUFMSUZJRVJTIE5VTEwKICNkZWZpbmUgTEFOR19I T09LU19HRVRfQVJSQVlfREVTQ1JfSU5GTwlOVUxMCkBAIC0yMzUsNyArMjMzLDYgQEAgZXh0 ZXJuIHRyZWUgbGhkX3VuaXRfc2l6ZV93aXRob3V0X3JldXNhYmxlX3BhZGRpbmcgKHRyZWUp OwogICBMQU5HX0hPT0tTX0lOQ09NUExFVEVfVFlQRV9FUlJPUiwgXAogICBMQU5HX0hPT0tT X1RZUEVfTUFYX1NJWkUsIFwKICAgTEFOR19IT09LU19PTVBfRklSU1RQUklWQVRJWkVfVFlQ RV9TSVpFUywgXAotICBMQU5HX0hPT0tTX09NUF9NQVBQQUJMRV9UWVBFLCBcCiAgIExBTkdf SE9PS1NfVFlQRV9IQVNIX0VRLCBcCiAgIExBTkdfSE9PS1NfQ09QWV9MQU5HX1FVQUxJRklF UlMsIFwKICAgTEFOR19IT09LU19HRVRfQVJSQVlfREVTQ1JfSU5GTywgXApkaWZmIC0tZ2l0 IGEvZ2NjL2xhbmdob29rcy5jYyBiL2djYy9sYW5naG9va3MuY2MKaW5kZXggYTkzMzQwNzk5 ZjMuLjdkOTc1Njc1OTkwIDEwMDY0NAotLS0gYS9nY2MvbGFuZ2hvb2tzLmNjCisrKyBiL2dj Yy9sYW5naG9va3MuY2MKQEAgLTY4NiwxNyArNjg2LDYgQEAgbGhkX29tcF9maXJzdHByaXZh dGl6ZV90eXBlX3NpemVzIChzdHJ1Y3QgZ2ltcGxpZnlfb21wX2N0eCAqYyBBVFRSSUJVVEVf VU5VU0VELAogewogfQogCi0vKiBSZXR1cm4gdHJ1ZSBpZiBUWVBFIGlzIGFuIE9wZW5NUCBt YXBwYWJsZSB0eXBlLiAgKi8KLQotYm9vbAotbGhkX29tcF9tYXBwYWJsZV90eXBlICh0cmVl IHR5cGUpCi17Ci0gIC8qIE1hcHBhYmxlIHR5cGUgaGFzIHRvIGJlIGNvbXBsZXRlLiAgKi8K LSAgaWYgKHR5cGUgPT0gZXJyb3JfbWFya19ub2RlIHx8ICFDT01QTEVURV9UWVBFX1AgKHR5 cGUpKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KIC8qIENvbW1v biBmdW5jdGlvbiBmb3IgYWRkX2J1aWx0aW5fZnVuY3Rpb24sIGFkZF9idWlsdGluX2Z1bmN0 aW9uX2V4dF9zY29wZQogICAgYW5kIHNpbXVsYXRlX2J1aWx0aW5fZnVuY3Rpb25fZGVjbC4g ICovCiAKZGlmZiAtLWdpdCBhL2djYy9sYW5naG9va3MuaCBiL2djYy9sYW5naG9va3MuaApp bmRleCA5N2FhOWUwZDA3MC4uYjFiMmIwZTEwZjAgMTAwNjQ0Ci0tLSBhL2djYy9sYW5naG9v a3MuaAorKysgYi9nY2MvbGFuZ2hvb2tzLmgKQEAgLTEyOCw5ICsxMjgsNiBAQCBzdHJ1Y3Qg bGFuZ19ob29rc19mb3JfdHlwZXMKICAgICAgZmlyc3Rwcml2YXRlIHZhcmlhYmxlcy4gICov CiAgIHZvaWQgKCpvbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9zaXplcykgKHN0cnVjdCBnaW1w bGlmeV9vbXBfY3R4ICosIHRyZWUpOwogCi0gIC8qIFJldHVybiB0cnVlIGlmIFRZUEUgaXMg YSBtYXBwYWJsZSB0eXBlLiAgKi8KLSAgYm9vbCAoKm9tcF9tYXBwYWJsZV90eXBlKSAodHJl ZSB0eXBlKTsKLQogICAvKiBSZXR1cm4gVFJVRSBpZiBUWVBFMSBhbmQgVFlQRTIgYXJlIGlk ZW50aWNhbCBmb3IgdHlwZSBoYXNoaW5nIHB1cnBvc2VzLgogICAgICBDYWxsZWQgb25seSBh ZnRlciBkb2luZyBhbGwgbGFuZ3VhZ2UgaW5kZXBlbmRlbnQgY2hlY2tzLgogICAgICBBdCBw cmVzZW50LCB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gYm90aCBUWVBFMSBh bmQgVFlQRTIgYXJlCmRpZmYgLS1naXQgYS9nY2Mvb21wLWdlbmVyYWwuY2MgYi9nY2Mvb21w LWdlbmVyYWwuY2MKaW5kZXggYTQwNmM1NzhmMzMuLjMzNzkyYWRjNGRlIDEwMDY0NAotLS0g YS9nY2Mvb21wLWdlbmVyYWwuY2MKKysrIGIvZ2NjL29tcC1nZW5lcmFsLmNjCkBAIC04MCw2 ICs4MCwxNyBAQCBvbXBfY2hlY2tfb3B0aW9uYWxfYXJndW1lbnQgKHRyZWUgZGVjbCwgYm9v bCBmb3JfcHJlc2VudF9jaGVjaykKICAgcmV0dXJuIGxhbmdfaG9va3MuZGVjbHMub21wX2No ZWNrX29wdGlvbmFsX2FyZ3VtZW50IChkZWNsLCBmb3JfcHJlc2VudF9jaGVjayk7CiB9CiAK Ky8qIFJldHVybiB0cnVlIGlmIFRZUEUgaXMgYW4gT3Blbk1QIG1hcHBhYmxlIHR5cGUuICAq LworCitib29sCitvbXBfbWFwcGFibGVfdHlwZSAodHJlZSB0eXBlKQoreworICAvKiBNYXBw YWJsZSB0eXBlIGhhcyB0byBiZSBjb21wbGV0ZS4gICovCisgIGlmICh0eXBlID09IGVycm9y X21hcmtfbm9kZSB8fCAhQ09NUExFVEVfVFlQRV9QICh0eXBlKSkKKyAgICByZXR1cm4gZmFs c2U7CisgIHJldHVybiB0cnVlOworfQorCiAvKiBUcnVlIGlmIE9wZW5NUCBzaG91bGQgcHJp dmF0aXplIHdoYXQgdGhpcyBERUNMIHBvaW50cyB0byByYXRoZXIKICAgIHRoYW4gdGhlIERF Q0wgaXRzZWxmLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL29tcC1nZW5lcmFsLmggYi9nY2Mv b21wLWdlbmVyYWwuaAppbmRleCA3NGU5MGUxYTcxYS4uMWI1NDU1YTBhOGYgMTAwNjQ0Ci0t LSBhL2djYy9vbXAtZ2VuZXJhbC5oCisrKyBiL2djYy9vbXAtZ2VuZXJhbC5oCkBAIC05NCw2 ICs5NCw3IEBAIHN0cnVjdCBvbXBfZm9yX2RhdGEKIGV4dGVybiB0cmVlIG9tcF9maW5kX2Ns YXVzZSAodHJlZSBjbGF1c2VzLCBlbnVtIG9tcF9jbGF1c2VfY29kZSBraW5kKTsKIGV4dGVy biBib29sIG9tcF9pc19hbGxvY2F0YWJsZV9vcl9wdHIgKHRyZWUgZGVjbCk7CiBleHRlcm4g dHJlZSBvbXBfY2hlY2tfb3B0aW9uYWxfYXJndW1lbnQgKHRyZWUgZGVjbCwgYm9vbCBmb3Jf cHJlc2VudF9jaGVjayk7CitleHRlcm4gYm9vbCBvbXBfbWFwcGFibGVfdHlwZSAodHJlZSB0 eXBlKTsKIGV4dGVybiBib29sIG9tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlICh0cmVlIGRl Y2wpOwogZXh0ZXJuIHZvaWQgb21wX2FkanVzdF9mb3JfY29uZGl0aW9uIChsb2NhdGlvbl90 IGxvYywgZW51bSB0cmVlX2NvZGUgKmNvbmRfY29kZSwKIAkJCQkgICAgICB0cmVlICpuMiwg dHJlZSB2LCB0cmVlIHN0ZXApOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZ29tcC9tYXAtaW5jb21wbGV0ZS10eXBlLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9nb21wL21hcC1pbmNvbXBsZXRlLXR5cGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMjk3MDJkZWZhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL21hcC1pbmNvbXBsZXRlLXR5cGUuYwpA QCAtMCwwICsxLDE3IEBACitzdHJ1Y3QgaW5jb21wbGV0ZV90OworLyogeyBkZy1ub3RlICJm b3J3YXJkIGRlY2xhcmF0aW9uIG9mICdzdHJ1Y3QgaW5jb21wbGV0ZV90JyIgIiIgeyB0YXJn ZXQgYysrIH0gLi0xIH0gKi8KKworLyogTm90ZTogVGhpcyBub3RlIGlzIG9ubHkgcHJpbnRl ZCB3aXRoIEMrKyAodHJpY2UpOyB0aGUgbG9jIGlzIGF2YWlsYWJsZSBkdWUgdG8gVFlQRV9N QUlOX0RFQ0wuICAqLworCitzdHJ1Y3QgaW5jb21wbGV0ZV90ICpwdHI7CitpbnQgaTsKKwor dm9pZAorZm9vICh2b2lkKQoreworICAjcHJhZ21hIG9tcCB0YXJnZXQgZW50ZXIgZGF0YSBt YXAodG86IGkpIG1hcCh0bzogcHRyWzBdKQorICAgIC8qIEFsbCBhcHBseSB0byB0aGUgbGlu ZSBhYm92ZS4gIFRoZSBmaXJzdCBlcnJvciBpcyBwcmludGVkIHR3aWNlLiAgKi8KKyAgICAv KiB7IGRnLWVycm9yICJpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSAnc3RydWN0IGlu Y29tcGxldGVfdCciICIiIHsgdGFyZ2V0IGMgfSAuLTIgfSAqLworICAgIC8qIHsgZGctZXJy b3IgImludmFsaWQgdXNlIG9mIGluY29tcGxldGUgdHlwZSAnc3RydWN0IGluY29tcGxldGVf dCciICIiIHsgdGFyZ2V0IGMrKyB9IC4tMyB9ICovCisgICAgLyogeyBkZy1lcnJvciAiYXJy YXkgc2VjdGlvbiBkb2VzIG5vdCBoYXZlIG1hcHBhYmxlIHR5cGUgaW4gJ21hcCcgY2xhdXNl IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tNCB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9nb21wL3VubWFwcGFibGUtMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvZ29tcC91bm1hcHBhYmxlLTEuQwppbmRleCAzNjRmODg0NTAwYy4uMjhiYTE4NGE1N2Eg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvdW5tYXBwYWJsZS0xLkMK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC91bm1hcHBhYmxlLTEuQwpAQCAtNCw3 ICs0LDcgQEAKIGNsYXNzIEMKIHsKIHB1YmxpYzoKLSAgc3RhdGljIGludCBzdGF0aWNfbWVt YmVyOyAvKiB7IGRnLW1lc3NhZ2UgInN0YXRpYyBmaWVsZCAuQzo6c3RhdGljX21lbWJlci4g aXMgbm90IG1hcHBhYmxlIiB9ICovCisgIHN0YXRpYyBpbnQgc3RhdGljX21lbWJlcjsKICAg dmlydHVhbCB2b2lkIGYoKSB7fQogfTsKIApAQCAtMTQsNyArMTQsNiBAQCBpbnQKIG1haW4g KCkKIHsKICNwcmFnbWEgb21wIHRhcmdldCBtYXAodikgLyogeyBkZy1lcnJvciAiLnYuIGRv ZXMgbm90IGhhdmUgYSBtYXBwYWJsZSB0eXBlIGluIC5tYXAuIGNsYXVzZSIgfSAqLwotICAv KiB7IGRnLW1lc3NhZ2UgImluY29tcGxldGUgdHlwZSAuQyBcXFxbXFxcXS4gaXMgbm90IG1h cHBhYmxlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCiAgIHsKICAgfQogfQo= --------------Fs1sAj8Pv0odsv1Z00kviRIY--