From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o90.zoho.com (sender4-pp-o90.zoho.com [136.143.188.90]) by sourceware.org (Postfix) with ESMTPS id AAB2F3858D3C; Mon, 24 Jan 2022 23:28:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AAB2F3858D3C ARC-Seal: i=1; a=rsa-sha256; t=1643066900; cv=none; d=zohomail.com; s=zohoarc; b=g1TK3rh1LFYd0z+hRq7FNuncd7z6OUhbs7DR3cjxCPuyaDsziaQ3y5lre/NkFdpDeWwKiYqjDXWU0fel0YpT9Eif7M6idpnzJX7R59glcBcOmq94ABrXsDbemp/pESS7lHJTqPfozdhSnYOIZd0AFmbzjxpKdH2mXKOHoPqGFJE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643066900; h=Content-Type:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=qkZA3+8sOnDv9HUTgbnKgLJNOElyRkxOMkzVC8kBgnM=; b=ijQ8nN6wBWny/R35xpNABo0o2Bg9ULR1+h7Oz+Wb5UquurcaLv2kRfn8w4deYydakfCCm/ABMKNwZ57kJMDmcphV3i2J0JB8kvSvFtLbNrPvaDxRq8gBGa+lXEOdEj2ssVdbEGjATznqHhzFBrHM6HX+8e8Lnm1x1FPZ2UAL4Ao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1643066897686529.6829947029729; Mon, 24 Jan 2022 15:28:17 -0800 (PST) Message-ID: Subject: Re: [PATCH] libgccjit: Add support for register variables [PR104072] From: Antoni Boucher To: David Malcolm , gcc-patches@gcc.gnu.org, jit@gcc.gnu.org Date: Mon, 24 Jan 2022 18:28:16 -0500 In-Reply-To: References: <5a254fe52188d76ae6e292288b05f9c99994ff23.camel@zoho.com> <734c3e099c819286df512eb618b2f94bd11f4a87.camel@redhat.com> <9f0e398fc80a28c4a95313f7b1e16fb4651ebe1d.camel@zoho.com> Content-Type: multipart/mixed; boundary="=-fJI5qGOIbSuhMagBrJ43" User-Agent: Evolution 3.42.3 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Jan 2022 23:28:29 -0000 --=-fJI5qGOIbSuhMagBrJ43 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Indeed, I forgot to attach the patch. Le lundi 24 janvier 2022 =C3=A0 18:20 -0500, David Malcolm a =C3=A9crit=C2= =A0: > On Sat, 2022-01-22 at 19:29 -0500, Antoni Boucher wrote: > > Hi. > >=20 > > Le mardi 18 janvier 2022 =C3=A0 18:49 -0500, David Malcolm a =C3=A9crit= =C2=A0: > > > On Mon, 2022-01-17 at 19:46 -0500, Antoni Boucher via Gcc-patches > > > wrote: > > > > I missed the comment about the new define, so here's the > > > > updated > > > > patch. > > >=20 > > > Thanks for the patch. > > > >=20 > > > > Le lundi 17 janvier 2022 =C3=A0 19:24 -0500, Antoni Boucher via Jit > > > > a > > > > =C3=A9crit=C2=A0: > > > > > Hi. > > > > > This patch add supports for register variables in libgccjit. > > > > >=20 > > > > > It passes the JIT tests, but since I added a function in > > > > > reginfo.c, > > > > > I > > > > > wonder if I should run the whole testsuite. > > >=20 > > > We're in stage 4 for gcc 12, so we should be especially careful > > > about > > > changes right now, and we're not meant to be adding new GCC 12 > > > features. > > >=20 > > > How close is gcc 12's libgccjit to being usable with your rustc > > > backend?=C2=A0 If we're almost there, I'm willing to make our case fo= r > > > late- > > > breaking libgccjit changes to the release managers, but if you > > > think > > > rustc users are going to need to build a patched libgccjit, then > > > let's > > > queue this up for gcc 13. > >=20 > > As I mentioned in my other email, if the 4 patches currently being > > reviewed (and listed here: > > https://github.com/antoyo/libgccjit-patches) were included in gcc > > 12, > > I'd be able to build rustc_codegen_gcc with an unpatched gcc. >=20 > Thanks.=C2=A0 Once the relevant patches look good to me, I'll approach th= e > release managers with the proposal. >=20 > >=20 > > It is to be noted however, that I'll need more patches for future > > work. > > Off the top of my head, I'll at least need a patch for the inline > > attribute, try/catch and target-specific builtins. > > The last 2 features will probably take some time to implement, so > > I'll > > let you judge if you think it's worth merging the 4 patches > > currently > > being reviewed for gcc 12. >=20 > Thanks, though I don't know enough about your project's features to > make the judgement call.=C2=A0 Does rustc_codegen_gcc have releases yet, > or > are you just pointing people at the trunk of your repo?=C2=A0 I guess the > question is - are you hoping to be able to point people at distro > installs of gcc 12's libgccjit and have some version of > rustc_codegen_gcc "just work" with that, or are they going to have to > rebuild their own libgccjit to meaningfully use it? >=20 > [...snip various corrections...] >=20 > >=20 > > > > diff --git a/gcc/testsuite/jit.dg/test-register-variable.c > > > > b/gcc/testsuite/jit.dg/test-register-variable.c > > > > new file mode 100644 > > > > index 00000000000..3cea3f1668f > > > > --- /dev/null > > > > +++ b/gcc/testsuite/jit.dg/test-register-variable.c > > > > + >=20 > [...snip...] >=20 > > > > +/* { dg-final { jit-verify-output-file-was-created "" } } */ > > > > +/* { dg-final { jit-verify-assembler-output "movl=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0\\\$1, > > > > %r12d" } } */ > > > > +/* { dg-final { jit-verify-assembler-output "movl=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0\\\$2, > > > > %r13d" } } */ > > >=20 > > > How target-specific is this test? > >=20 > > It will only work on x86-64. Should I feature-gate the test > > somehow? >=20 >=20 > Yes; I think you can do this by adding this to the top of the test: >=20 > =C2=A0=C2=A0 /* { dg-do compile { target x86_64-*-* } } */ >=20 > like test-asm.c does. >=20 > > >=20 > > > We should have test coverage for at least these two errors: > > >=20 > > > - gcc_jit_lvalue_set_register_name(global_variable, > > > "this_is_not_a_register"); > > > - attempting to set the name for a var that doesn't fit in the > > > given > > > register (e.g. trying to use a register for an array that's way > > > too > > > big) > >=20 > > Done. >=20 > Thanks. >=20 > Is the updated patch available for review? It looks like you didn't > attach it. >=20 > Dave >=20 --=-fJI5qGOIbSuhMagBrJ43 Content-Disposition: attachment; filename*0=0001-libgccjit-Add-support-for-register-variables-PR10407.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-libgccjit-Add-support-for-register-variables-PR10407.patch"; charset="UTF-8" RnJvbSBjZDc2NTkzOTA1YTQzY2ViNTNjYjIzMjVmMmI3NDJiYTMzMWRhMmY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogU3VuLCAyOSBBdWcgMjAyMSAxMDo1NDo1NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmdj Y2ppdDogQWRkIHN1cHBvcnQgZm9yIHJlZ2lzdGVyIHZhcmlhYmxlcyBbUFIxMDQwNzJdCgoyMDIy LTAxLTE3ICBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KCmdjYy9qaXQvCglQUiBq aXQvMTA0MDcyCgkqIGRvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0IChMSUJHQ0NKSVRfQUJJ XzIyKTogTmV3IEFCSSB0YWcuCgkqIGRvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdDogQWRkIGRv Y3VtZW50YXRpb24gZm9yIHRoZQoJZnVuY3Rpb24gZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lzdGVy X25hbWUuCgkqIGR1bW15LWZyb250ZW5kLmNjOiBDbGVhciB0aGUgZ2xvYmFsX3JlZ3MgY2FjaGUg dG8gYXZvaWQgYW4KCWlzc3VlIHdoZXJlIGNvbXBpbGluZyBtdWx0aXBsZSB0aW1lcyB0aGUgc2Ft ZSBjb2RlIGdpdmVzIGFuCgllcnJvciBhYm91dCBhc3NpZ25pbmcgdGhlIHNhbWUgcmVnaXN0ZXIg dG8gMiBnbG9iYWwgdmFyaWFibGVzLgoJKiBqaXQtcGxheWJhY2suaDogTmV3IGZ1bmN0aW9uIChz ZXRfcmVnaXN0ZXJfbmFtZSkuCgkqIGppdC1yZWNvcmRpbmcuY2M6IE5ldyBmdW5jdGlvbiAoc2V0 X3JlZ2lzdGVyX25hbWUpIGFuZCBhZGQKCXN1cHBvcnQgZm9yIHJlZ2lzdGVyIHZhcmlhYmxlcy4K CSogaml0LXJlY29yZGluZy5oOiBOZXcgZmllbGQgKG1fcmVnX25hbWUpIGFuZCBuZXcgZnVuY3Rp b24KCShzZXRfcmVnaXN0ZXJfbmFtZSkuCgkqIGxpYmdjY2ppdC5jYzogTmV3IGZ1bmN0aW9uIChn Y2Nfaml0X2x2YWx1ZV9zZXRfcmVnaXN0ZXJfbmFtZSkuCgkqIGxpYmdjY2ppdC5oOiBOZXcgZnVu Y3Rpb24gKGdjY19qaXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9uYW1lKS4KCSogbGliZ2Njaml0Lm1h cCAoTElCR0NDSklUX0FCSV8yMik6IE5ldyBBQkkgdGFnLgoKZ2NjLwoJUFIgaml0LzEwNDA3MgoJ KiByZWdpbmZvLmNjOiBOZXcgZnVuY3Rpb25zIChjbGVhcl9nbG9iYWxfcmVnc19jYWNoZSwgcmVn aW5mb19jY19maW5hbGl6ZSkuCgkqIHJ0bC5oOiBOZXcgZnVuY3Rpb24gKHJlZ2luZm9fY2NfZmlu YWxpemUpLgoKZ2NjL3Rlc3RzdWl0ZS8KCVBSIGppdC8xMDQwNzIKCSogaml0LmRnL2FsbC1ub24t ZmFpbGluZy10ZXN0cy5oOiBBZGQgbmV3Cgl0ZXN0LXJlZ2lzdGVyLXZhcmlhYmxlLgoJKiBqaXQu ZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1iYWQtbmFtZS5jOiBOZXcgdGVzdC4KCSog aml0LmRnL3Rlc3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtc2l6ZS1taXNtYXRjaC5jOiBOZXcg dGVzdC4KCSogaml0LmRnL3Rlc3QtcmVnaXN0ZXItdmFyaWFibGUuYzogTmV3IHRlc3QuCi0tLQog Z2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdCAgICAgICAgIHwgIDkgKysrKwog Z2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QgICAgICAgICAgIHwgMjAgKysrKysr KwogZ2NjL2ppdC9qaXQtcGxheWJhY2suaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysr KwogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysr KystLQogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDkg KystLQogZ2NjL2ppdC9saWJnY2NqaXQuY2MgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQg KysrKysKIGdjYy9qaXQvbGliZ2Njaml0LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEy ICsrKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5tYXAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx MSArKysrCiBnY2MvcmVnaW5mby5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx OCArKysrKysrCiBnY2MvcnRsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMSArCiBnY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaCAgfCAg MyArKwogLi4uL3Rlc3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtYmFkLW5hbWUuYyAgIHwgMzUg KysrKysrKysrKysrCiAuLi5zdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1zaXplLW1pc21hdGNo LmMgfCA0MCArKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1yZWdpc3Rl ci12YXJpYWJsZS5jIHwgNTQgKysrKysrKysrKysrKysrKysrKwogZ2NjL3RvcGxldi5jYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMjQ4 IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1iYWQtbmFtZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rl ci12YXJpYWJsZS1zaXplLW1pc21hdGNoLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2ppdC5kZy90ZXN0LXJlZ2lzdGVyLXZhcmlhYmxlLmMKCmRpZmYgLS1naXQgYS9nY2Mvaml0 L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0IGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21w YXRpYmlsaXR5LnJzdAppbmRleCAxNmNlYmUzMWExMC4uNjg5Yzk0YzRmYWMgMTAwNjQ0Ci0tLSBh L2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKKysrIGIvZ2NjL2ppdC9kb2Nz L3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdApAQCAtMzAyLDMgKzMwMiwxMiBAQCB0aHJlYWQtbG9j YWwgc3RvcmFnZSBtb2RlbCBvZiBhIHZhcmlhYmxlOgogc2VjdGlvbiBvZiBhIHZhcmlhYmxlOgog CiAgICogOmZ1bmM6YGdjY19qaXRfbHZhbHVlX3NldF9saW5rX3NlY3Rpb25gCisKKy4uIF9MSUJH Q0NKSVRfQUJJXzIyOgorCitgYExJQkdDQ0pJVF9BQklfMjJgYAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK2BgTElCR0NDSklUX0FCSV8yMmBgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YgYW4gQVBJ IGVudHJ5cG9pbnQgdG8gc2V0IHRoZQorcmVnaXN0ZXIgbmFtZSBvZiBhIHZhcmlhYmxlOgorCisg ICogOmZ1bmM6YGdjY19qaXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9uYW1lYApkaWZmIC0tZ2l0IGEv Z2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNz L2V4cHJlc3Npb25zLnJzdAppbmRleCA3OTFhMjAzOThjYS4uNWNmNzgwZTYzNDkgMTAwNjQ0Ci0t LSBhL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0CisrKyBiL2djYy9qaXQvZG9j cy90b3BpY3MvZXhwcmVzc2lvbnMucnN0CkBAIC03MzgsNiArNzM4LDI2IEBAIHdoZXJlIHRoZSBy dmFsdWUgaXMgY29tcHV0ZWQgYnkgcmVhZGluZyBmcm9tIHRoZSBzdG9yYWdlIGFyZWEuCiAKICAg ICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2x2YWx1ZV9zZXRfbGlua19zZWN0aW9u CiAKKy4uIGZ1bmN0aW9uOjogdm9pZAorICAgICAgICAgICAgICBnY2Nfaml0X2x2YWx1ZV9zZXRf cmVnaXN0ZXJfbmFtZSAoZ2NjX2ppdF9sdmFsdWUgKmx2YWx1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlZ19uYW1lKTsKKwor ICAgU2V0IHRoZSByZWdpc3RlciBuYW1lIG9mIGEgdmFyaWFibGUuCisgICBUaGUgcGFyYW1ldGVy IGBgcmVnX25hbWVgYCBtdXN0IGJlIG5vbi1OVUxMLiBBbmFsb2dvdXMgdG86CisKKyAgIC4uIGNv ZGUtYmxvY2s6OiBjCisKKyAgICAgcmVnaXN0ZXIgaW50IHZhcmlhYmxlIGFzbSAoInIxMiIpOwor CisgICBpbiBDLgorCisgICBUaGlzIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIDpyZWY6YExJQkdD Q0pJVF9BQklfMjJgOyB5b3UgY2FuIHRlc3QgZm9yCisgICBpdHMgcHJlc2VuY2UgdXNpbmcKKwor ICAgLi4gY29kZS1ibG9jazo6IGMKKworICAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX2djY19q aXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9uYW1lCisKIEdsb2JhbCB2YXJpYWJsZXMKICoqKioqKioq KioqKioqKioKIApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcGxheWJhY2suaCBiL2djYy9qaXQv aml0LXBsYXliYWNrLmgKaW5kZXggYzkzZDcwNTVkNDMuLmFmNDQyN2M0NTAzIDEwMDY0NAotLS0g YS9nY2Mvaml0L2ppdC1wbGF5YmFjay5oCisrKyBiL2djYy9qaXQvaml0LXBsYXliYWNrLmgKQEAg LTI0LDYgKzI0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKICNpbmNsdWRlIDx1dGlsaXR5PiAvLyBmb3Igc3RkOjpwYWlyCiAKICNpbmNsdWRl ICJ0aW1ldmFyLmgiCisjaW5jbHVkZSAidmFyYXNtLmgiCiAKICNpbmNsdWRlICJqaXQtcmVjb3Jk aW5nLmgiCiAKQEAgLTcwMSw2ICs3MDIsMTQgQEAgcHVibGljOgogICAgIHNldF9kZWNsX3NlY3Rp b25fbmFtZSAoYXNfdHJlZSAoKSwgbmFtZSk7CiAgIH0KIAorICB2b2lkCisgIHNldF9yZWdpc3Rl cl9uYW1lIChjb25zdCBjaGFyKiByZWdfbmFtZSkKKyAgeworICAgIHNldF91c2VyX2Fzc2VtYmxl cl9uYW1lIChhc190cmVlICgpLCByZWdfbmFtZSk7CisgICAgREVDTF9SRUdJU1RFUiAoYXNfdHJl ZSAoKSkgPSAxOworICAgIERFQ0xfSEFSRF9SRUdJU1RFUiAoYXNfdHJlZSAoKSkgPSAxOworICB9 CisKIHByaXZhdGU6CiAgIGJvb2wgbWFya19hZGRyZXNzYWJsZSAobG9jYXRpb24gKmxvYyk7CiB9 OwpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjIGIvZ2NjL2ppdC9qaXQtcmVj b3JkaW5nLmNjCmluZGV4IDFlM2ZhZGZhY2Q3Li41NzAzMTE0ZjEzOCAxMDA2NDQKLS0tIGEvZ2Nj L2ppdC9qaXQtcmVjb3JkaW5nLmNjCisrKyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5jYwpAQCAt MzgwNyw2ICszODA3LDExIEBAIHZvaWQgcmVjb3JkaW5nOjpsdmFsdWU6OnNldF9saW5rX3NlY3Rp b24gKGNvbnN0IGNoYXIgKm5hbWUpCiAgIG1fbGlua19zZWN0aW9uID0gbmV3X3N0cmluZyAobmFt ZSk7CiB9CiAKK3ZvaWQgcmVjb3JkaW5nOjpsdmFsdWU6OnNldF9yZWdpc3Rlcl9uYW1lIChjb25z dCBjaGFyICpyZWdfbmFtZSkKK3sKKyAgbV9yZWdfbmFtZSA9IG5ld19zdHJpbmcgKHJlZ19uYW1l KTsKK30KKwogLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIGNsYXNzIGdjYzo6aml0OjpyZWNvcmRp bmc6OnBhcmFtLiAgKi8KIAogLyogSW1wbGVtZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFsIGhvb2sg cmVjb3JkaW5nOjptZW1lbnRvOjpyZXBsYXlfaW50bwpAQCAtNDY3Myw2ICs0Njc4LDkgQEAgcmVj b3JkaW5nOjpnbG9iYWw6OnJlcGxheV9pbnRvIChyZXBsYXllciAqcikKICAgaWYgKG1fbGlua19z ZWN0aW9uICE9IE5VTEwpCiAgICAgZ2xvYmFsLT5zZXRfbGlua19zZWN0aW9uIChtX2xpbmtfc2Vj dGlvbi0+Y19zdHIgKCkpOwogCisgIGlmIChtX3JlZ19uYW1lICE9IE5VTEwpCisgICAgZ2xvYmFs LT5zZXRfcmVnaXN0ZXJfbmFtZSAobV9yZWdfbmFtZS0+Y19zdHIgKCkpOworCiAgIHNldF9wbGF5 YmFja19vYmogKGdsb2JhbCk7CiB9CiAKQEAgLTYzNDMsMTEgKzYzNTEsMTUgQEAgcmVjb3JkaW5n OjpmdW5jdGlvbl9wb2ludGVyOjp3cml0ZV9yZXByb2R1Y2VyIChyZXByb2R1Y2VyICZyKQogdm9p ZAogcmVjb3JkaW5nOjpsb2NhbDo6cmVwbGF5X2ludG8gKHJlcGxheWVyICpyKQogewotICBzZXRf cGxheWJhY2tfb2JqICgKLSAgICBtX2Z1bmMtPnBsYXliYWNrX2Z1bmN0aW9uICgpCisgIHBsYXli YWNrOjpsdmFsdWUgKm9iaiA9IG1fZnVuYy0+cGxheWJhY2tfZnVuY3Rpb24gKCkKICAgICAgIC0+ bmV3X2xvY2FsIChwbGF5YmFja19sb2NhdGlvbiAociwgbV9sb2MpLAogCQkgICBtX3R5cGUtPnBs YXliYWNrX3R5cGUgKCksCi0JCSAgIHBsYXliYWNrX3N0cmluZyAobV9uYW1lKSkpOworCQkgICBw bGF5YmFja19zdHJpbmcgKG1fbmFtZSkpOworCisgIGlmIChtX3JlZ19uYW1lICE9IE5VTEwpCisg ICAgb2JqLT5zZXRfcmVnaXN0ZXJfbmFtZSAobV9yZWdfbmFtZS0+Y19zdHIgKCkpOworCisgIHNl dF9wbGF5YmFja19vYmogKG9iaik7CiB9CiAKIC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGltcGxl bWVudGF0aW9uIG9mCmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaCBiL2djYy9q aXQvaml0LXJlY29yZGluZy5oCmluZGV4IDg0NmQ2NWNiMjAyLi42MGIzNjNkNTkwZSAxMDA2NDQK LS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKKysrIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5n LmgKQEAgLTExNDcsOCArMTE0Nyw5IEBAIHB1YmxpYzoKIAkgIGxvY2F0aW9uICpsb2MsCiAJICB0 eXBlICp0eXBlXykKICAgICA6IHJ2YWx1ZSAoY3R4dCwgbG9jLCB0eXBlXyksCi0gICAgbV90bHNf bW9kZWwgKEdDQ19KSVRfVExTX01PREVMX05PTkUpLAotICAgIG1fbGlua19zZWN0aW9uIChOVUxM KQorICAgIG1fbGlua19zZWN0aW9uIChOVUxMKSwKKyAgICBtX3JlZ19uYW1lIChOVUxMKSwKKyAg ICBtX3Rsc19tb2RlbCAoR0NDX0pJVF9UTFNfTU9ERUxfTk9ORSkKICAgICB7fQogCiAgIHBsYXli YWNrOjpsdmFsdWUgKgpAQCAtMTE3MiwxMCArMTE3MywxMiBAQCBwdWJsaWM6CiAgIHZpcnR1YWwg Ym9vbCBpc19nbG9iYWwgKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgdm9pZCBzZXRfdGxz X21vZGVsIChlbnVtIGdjY19qaXRfdGxzX21vZGVsIG1vZGVsKTsKICAgdm9pZCBzZXRfbGlua19z ZWN0aW9uIChjb25zdCBjaGFyICpuYW1lKTsKKyAgdm9pZCBzZXRfcmVnaXN0ZXJfbmFtZSAoY29u c3QgY2hhciAqcmVnX25hbWUpOwogCiBwcm90ZWN0ZWQ6Ci0gIGVudW0gZ2NjX2ppdF90bHNfbW9k ZWwgbV90bHNfbW9kZWw7CiAgIHN0cmluZyAqbV9saW5rX3NlY3Rpb247CisgIHN0cmluZyAqbV9y ZWdfbmFtZTsKKyAgZW51bSBnY2Nfaml0X3Rsc19tb2RlbCBtX3Rsc19tb2RlbDsKIH07CiAKIGNs YXNzIHBhcmFtIDogcHVibGljIGx2YWx1ZQpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQu Y2MgYi9nY2Mvaml0L2xpYmdjY2ppdC5jYwppbmRleCA0YzM1MmU4YzkzZC4uYzJhZGFhMzg0YjYg MTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0LmNjCisrKyBiL2djYy9qaXQvbGliZ2Njaml0 LmNjCkBAIC0yNjQ5LDYgKzI2NDksMjAgQEAgZ2NjX2ppdF9sdmFsdWVfc2V0X2xpbmtfc2VjdGlv biAoZ2NjX2ppdF9sdmFsdWUgKmx2YWx1ZSwKICAgbHZhbHVlLT5zZXRfbGlua19zZWN0aW9uIChz ZWN0aW9uX25hbWUpOwogfQogCisvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlv biBpbiBsaWJnY2NqaXQuaC4KKworICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdv cmsgaXMgZG9uZSBieSB0aGUKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6Omx2YWx1ZTo6c2V0X3Jl Z2lzdGVyX25hbWUgbWV0aG9kIGluIGppdC1yZWNvcmRpbmcuY2MuICAqLworCit2b2lkCitnY2Nf aml0X2x2YWx1ZV9zZXRfcmVnaXN0ZXJfbmFtZSAoZ2NjX2ppdF9sdmFsdWUgKmx2YWx1ZSwKKwkJ CQkgIGNvbnN0IGNoYXIgKnJlZ19uYW1lKQoreworICBSRVRVUk5fSUZfRkFJTCAobHZhbHVlLCBO VUxMLCBOVUxMLCAiTlVMTCBsdmFsdWUiKTsKKyAgUkVUVVJOX0lGX0ZBSUwgKHJlZ19uYW1lLCBO VUxMLCBOVUxMLCAiTlVMTCByZWdfbmFtZSIpOworICBsdmFsdWUtPnNldF9yZWdpc3Rlcl9uYW1l IChyZWdfbmFtZSk7Cit9CisKIC8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9u IGluIGxpYmdjY2ppdC5oLgogCiAgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29y ayBpcyBkb25lIGJ5IHRoZQpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuaCBiL2djYy9q aXQvbGliZ2Njaml0LmgKaW5kZXggMmE1ZmZhY2IxZmUuLmM4YTllYzRmNmE0IDEwMDY0NAotLS0g YS9nY2Mvaml0L2xpYmdjY2ppdC5oCisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmgKQEAgLTEyNzcs NiArMTI3NywxOCBAQCBleHRlcm4gdm9pZAogZ2NjX2ppdF9sdmFsdWVfc2V0X2xpbmtfc2VjdGlv biAoZ2NjX2ppdF9sdmFsdWUgKmx2YWx1ZSwKIAkJCSAgICBjb25zdCBjaGFyICpzZWN0aW9uX25h bWUpOwogCisjZGVmaW5lIExJQkdDQ0pJVF9IQVZFX2djY19qaXRfbHZhbHVlX3NldF9yZWdpc3Rl cl9uYW1lCisKKy8qIE1ha2UgdGhpcyB2YXJpYWJsZSBhIHJlZ2lzdGVyIHZhcmlhYmxlIGFuZCBz ZXQgaXRzIHJlZ2lzdGVyIG5hbWUuCisKKyAgIFRoaXMgQVBJIGVudHJ5cG9pbnQgd2FzIGFkZGVk IGluIExJQkdDQ0pJVF9BQklfMjI7IHlvdSBjYW4gdGVzdCBmb3IgaXRzCisgICBwcmVzZW5jZSB1 c2luZworICAgICAjaWZkZWYgTElCR0NDSklUX0hBVkVfZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lz dGVyX25hbWUKKyovCit2b2lkCitnY2Nfaml0X2x2YWx1ZV9zZXRfcmVnaXN0ZXJfbmFtZSAoZ2Nj X2ppdF9sdmFsdWUgKmx2YWx1ZSwKKwkJCQkgIGNvbnN0IGNoYXIgKnJlZ19uYW1lKTsKKwogZXh0 ZXJuIGdjY19qaXRfbHZhbHVlICoKIGdjY19qaXRfZnVuY3Rpb25fbmV3X2xvY2FsIChnY2Nfaml0 X2Z1bmN0aW9uICpmdW5jLAogCQkJICAgIGdjY19qaXRfbG9jYXRpb24gKmxvYywKZGlmZiAtLWdp dCBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcCBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcAppbmRleCBm MzczZmQzOWFjNy4uOGI3ZGMxM2M5N2QgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0Lm1h cAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKQEAgLTI0MywzICsyNDMsMTQgQEAgTElCR0ND SklUX0FCSV8xOSB7CiAgICAgZ2NjX2ppdF9jb250ZXh0X25ld191bmlvbl9jb25zdHJ1Y3RvcjsK ICAgICBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfcnZhbHVlOwogfSBMSUJHQ0NKSVRf QUJJXzE4OworCitMSUJHQ0NKSVRfQUJJXzIwIHsKK30gTElCR0NDSklUX0FCSV8xOTsKKworTElC R0NDSklUX0FCSV8yMSB7Cit9IExJQkdDQ0pJVF9BQklfMjA7CisKK0xJQkdDQ0pJVF9BQklfMjIg eworICBnbG9iYWw6CisgICAgZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lzdGVyX25hbWU7Cit9IExJ QkdDQ0pJVF9BQklfMjE7CmRpZmYgLS1naXQgYS9nY2MvcmVnaW5mby5jYyBiL2djYy9yZWdpbmZv LmNjCmluZGV4IDIzNGY3MmVjZWViLi4wN2VlOTU5NmU4MCAxMDA2NDQKLS0tIGEvZ2NjL3JlZ2lu Zm8uY2MKKysrIGIvZ2NjL3JlZ2luZm8uY2MKQEAgLTEyMiw2ICsxMjIsMjQgQEAgY29uc3QgY2hh ciAqIHJlZ19jbGFzc19uYW1lc1tdID0gUkVHX0NMQVNTX05BTUVTOwogICAgcmVnaW5mbyBoYXMg YmVlbiBpbml0aWFsaXplZC4gICovCiBzdGF0aWMgaW50IG5vX2dsb2JhbF9yZWdfdmFycyA9IDA7 CiAKK3N0YXRpYyB2b2lkCitjbGVhcl9nbG9iYWxfcmVnc19jYWNoZSAodm9pZCkKK3sKKyAgZm9y IChzaXplX3QgaSA9IDAgOyBpIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSIDsgaSsrKQorICB7Cisg ICAgZ2xvYmFsX3JlZ3NbaV0gPSAwOworICAgIGdsb2JhbF9yZWdzX2RlY2xbaV0gPSBOVUxMOwor ICB9Cit9CisKK3ZvaWQKK3JlZ2luZm9fY2NfZmluYWxpemUgKHZvaWQpCit7CisgIGNsZWFyX2ds b2JhbF9yZWdzX2NhY2hlICgpOworICBub19nbG9iYWxfcmVnX3ZhcnMgPSAwOworICBDTEVBUl9I QVJEX1JFR19TRVQgKGdsb2JhbF9yZWdfc2V0KTsKK30KKwogLyogR2l2ZW4gYSByZWdpc3RlciBi aXRtYXAsIHR1cm4gb24gdGhlIGJpdHMgaW4gYSBIQVJEX1JFR19TRVQgdGhhdAogICAgY29ycmVz cG9uZCB0byB0aGUgaGFyZCByZWdpc3RlcnMsIGlmIGFueSwgc2V0IGluIHRoYXQgbWFwLiAgVGhp cwogICAgY291bGQgYmUgZG9uZSBmYXIgbW9yZSBlZmZpY2llbnRseSBieSBoYXZpbmcgYWxsIHNv cnRzIG9mIHNwZWNpYWwtY2FzZXMKZGlmZiAtLWdpdCBhL2djYy9ydGwuaCBiL2djYy9ydGwuaApp bmRleCA2NDhmOWI4YTYwMS4uMTMxNjNkOTRlYzkgMTAwNjQ0Ci0tLSBhL2djYy9ydGwuaAorKysg Yi9nY2MvcnRsLmgKQEAgLTM3NzQsNiArMzc3NCw3IEBAIGV4dGVybiBib29sIHJlc2l6ZV9yZWdf aW5mbyAodm9pZCk7CiBleHRlcm4gdm9pZCBmcmVlX3JlZ19pbmZvICh2b2lkKTsKIGV4dGVybiB2 b2lkIGluaXRfc3VicmVnc19vZl9tb2RlICh2b2lkKTsKIGV4dGVybiB2b2lkIGZpbmlzaF9zdWJy ZWdzX29mX21vZGUgKHZvaWQpOworZXh0ZXJuIHZvaWQgcmVnaW5mb19jY19maW5hbGl6ZSAodm9p ZCk7CiAKIC8qIHJlY29nLmNjICovCiBleHRlcm4gcnR4IGV4dHJhY3RfYXNtX29wZXJhbmRzIChy dHgpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRl c3RzLmggYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaAppbmRl eCAyOWFmZTA2NGRiNi4uMDYwM2FjZTI1NWEgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvaml0 LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oCisrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL2Fs bC1ub24tZmFpbGluZy10ZXN0cy5oCkBAIC0zMDYsNiArMzA2LDkgQEAKICN1bmRlZiBjcmVhdGVf Y29kZQogI3VuZGVmIHZlcmlmeV9jb2RlCiAKKy8qIHRlc3QtcmVnaXN0ZXItdmFyaWFibGUuYzog VGhpcyBjYW4ndCBiZSBpbiB0aGUgdGVzdGNhc2VzIGFycmF5IGFzIGl0CisgICBkb2Vzbid0IGhh dmUgYSB2ZXJpZnlfY29kZSBpbXBsZW1lbnRhdGlvbi4gICovCisKIC8qIHRlc3Qtc3RyaW5nLWxp dGVyYWwuYyAqLwogI2RlZmluZSBjcmVhdGVfY29kZSBjcmVhdGVfY29kZV9zdHJpbmdfbGl0ZXJh bAogI2RlZmluZSB2ZXJpZnlfY29kZSB2ZXJpZnlfY29kZV9zdHJpbmdfbGl0ZXJhbApkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1i YWQtbmFtZS5jIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJp YWJsZS1iYWQtbmFtZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z ZjI2OTkzNzRhZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3Qt ZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtYmFkLW5hbWUuYwpAQCAtMCwwICsxLDM1IEBACisvKgor CisgIFRlc3QgdGhhdCB0aGUgcHJvcGVyIGVycm9yIGlzIHRyaWdnZXJlZCB3aGVuIHdlIGJ1aWxk IGEgcmVnaXN0ZXIgdmFyaWFibGUKKyAgd2l0aCBhIHJlZ2lzdGVyIG5hbWUgdGhhdCBkb2Vzbid0 IGV4aXN0LgorCisqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K KworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorI2luY2x1ZGUgImhhcm5lc3MuaCIKKwordm9pZAor Y3JlYXRlX2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgdm9pZCAqdXNlcl9kYXRhKQorewor ICBnY2Nfaml0X3R5cGUgKmludF90eXBlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUg KGN0eHQsIEdDQ19KSVRfVFlQRV9JTlQpOworICBnY2Nfaml0X2x2YWx1ZSAqZ2xvYmFsX3Zhcmlh YmxlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3X2dsb2JhbCAoCisgICAgICBjdHh0LCBOVUxM LCBHQ0NfSklUX0dMT0JBTF9FWFBPUlRFRCwgaW50X3R5cGUsICJnbG9iYWxfdmFyaWFibGUiKTsK KyAgZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lzdGVyX25hbWUoZ2xvYmFsX3ZhcmlhYmxlLCAidGhp c19pc19ub3RfYV9yZWdpc3RlciIpOworfQorCit2b2lkCit2ZXJpZnlfY29kZSAoZ2NjX2ppdF9j b250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0KQoreworICAvKiBFbnN1cmUgdGhh dCB0aGUgYmFkIEFQSSB1c2FnZSBwcmV2ZW50cyB0aGUgQVBJIGdpdmluZyBhIGJvZ3VzCisgICAg IHJlc3VsdCBiYWNrLiAgKi8KKyAgQ0hFQ0tfVkFMVUUgKHJlc3VsdCwgTlVMTCk7CisKKyAgLyog VmVyaWZ5IHRoYXQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZSB3YXMgZW1pdHRlZC4gKi8KKyAg Q0hFQ0tfU1RSSU5HX1ZBTFVFIChnY2Nfaml0X2NvbnRleHRfZ2V0X2xhc3RfZXJyb3IgKGN0eHQp LAorCQkgICAgICAiaW52YWxpZCByZWdpc3RlciBuYW1lIGZvciAnXDAzM1swMW1cMDMzW0tnbG9i YWxfdmFyaWFibGVcMzNbbVwzM1tLJyIpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9q aXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1zaXplLW1pc21hdGNoLmMgYi9nY2Mv dGVzdHN1aXRlL2ppdC5kZy90ZXN0LWVycm9yLXJlZ2lzdGVyLXZhcmlhYmxlLXNpemUtbWlzbWF0 Y2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDlhMGFjNTA1ZDEK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWVycm9yLXJlZ2lz dGVyLXZhcmlhYmxlLXNpemUtbWlzbWF0Y2guYwpAQCAtMCwwICsxLDQwIEBACisvKgorCisgIFRl c3QgdGhhdCB0aGUgcHJvcGVyIGVycm9yIGlzIHRyaWdnZXJlZCB3aGVuIHdlIGJ1aWxkIGEgcmVn aXN0ZXIgdmFyaWFibGUKKyAgd2l0aCBhIHJlZ2lzdGVyIG5hbWUgdGhhdCBkb2Vzbid0IGV4aXN0 LgorCisqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lu Y2x1ZGUgImxpYmdjY2ppdC5oIgorI2luY2x1ZGUgImhhcm5lc3MuaCIKKwordm9pZAorY3JlYXRl X2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgdm9pZCAqdXNlcl9kYXRhKQoreworICBnY2Nf aml0X3R5cGUgKmludF90eXBlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQs IEdDQ19KSVRfVFlQRV9JTlQpOworICBnY2Nfaml0X3R5cGUgKmFycmF5X3R5cGUgPQorICAgIGdj Y19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZSAoY3R4dCwgTlVMTCwgaW50X3R5cGUsIDQwOTYp OworICBnY2Nfaml0X2x2YWx1ZSAqZ2xvYmFsX3ZhcmlhYmxlID0KKyAgICBnY2Nfaml0X2NvbnRl eHRfbmV3X2dsb2JhbCAoCisgICAgICBjdHh0LCBOVUxMLCBHQ0NfSklUX0dMT0JBTF9FWFBPUlRF RCwgYXJyYXlfdHlwZSwgImdsb2JhbF92YXJpYWJsZSIpOworICBnY2Nfaml0X2x2YWx1ZV9zZXRf cmVnaXN0ZXJfbmFtZShnbG9iYWxfdmFyaWFibGUsICJyMTIiKTsKK30KKwordm9pZAordmVyaWZ5 X2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9yZXN1bHQgKnJlc3VsdCkKK3sK KyAgLyogRW5zdXJlIHRoYXQgdGhlIGJhZCBBUEkgdXNhZ2UgcHJldmVudHMgdGhlIEFQSSBnaXZp bmcgYSBib2d1cworICAgICByZXN1bHQgYmFjay4gICovCisgIENIRUNLX1ZBTFVFIChyZXN1bHQs IE5VTEwpOworCisgIC8qIFZlcmlmeSB0aGF0IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2Ugd2Fz IGVtaXR0ZWQuICovCisgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3QgY29tcGFyZSBlcXVhbCBiZWNh dXNlIGl0IHNlZW1zIGdsb2JhbF92YXJpYWJsZSBpcyBmb3JtYXR0ZWQgaW4gYm9sZC4KKyAgLy8g TWF5YmUgdHJpZ2dlciB0aGUgZXJyb3IgbXlzZWxmIHdpdGgKKyAgLy8gZGVjb2RlX3JlZ19uYW1l IChhc21zcGVjKT8KKyAgQ0hFQ0tfU1RSSU5HX1ZBTFVFIChnY2Nfaml0X2NvbnRleHRfZ2V0X2xh c3RfZXJyb3IgKGN0eHQpLAorCQkgICAgICAiZGF0YSB0eXBlIG9mICdcMDMzWzAxbVwwMzNbS2ds b2JhbF92YXJpYWJsZVwzM1ttXDMzW0snIGlzbid0IHN1aXRhYmxlIGZvciBhIHJlZ2lzdGVyIik7 Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LXJlZ2lzdGVyLXZhcmlh YmxlLmMgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LXJlZ2lzdGVyLXZhcmlhYmxlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNjZWEzZjE2NjhmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1yZWdpc3Rlci12YXJpYWJsZS5j CkBAIC0wLDAgKzEsNTQgQEAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5o PgorCisjaW5jbHVkZSAibGliZ2Njaml0LmgiCisKKy8qIFdlIGRvbid0IHdhbnQgc2V0X29wdGlv bnMoKSBpbiBoYXJuZXNzLmggdG8gc2V0IC1PMyBzbyBvdXIgbGl0dGxlIGxvY2FsCisgICBpcyBv cHRpbWl6ZWQgYXdheS4gKi8KKyNkZWZpbmUgVEVTVF9FU0NIRVdTX1NFVF9PUFRJT05TCitzdGF0 aWMgdm9pZCBzZXRfb3B0aW9ucyAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBjb25zdCBjaGFyICph cmd2MCkKK3sKK30KKworI2RlZmluZSBURVNUX0NPTVBJTElOR19UT19GSUxFCisjZGVmaW5lIE9V VFBVVF9LSU5EICAgICAgR0NDX0pJVF9PVVRQVVRfS0lORF9BU1NFTUJMRVIKKyNkZWZpbmUgT1VU UFVUX0ZJTEVOQU1FICAib3V0cHV0LW9mLXRlc3QtbGluay1zZWN0aW9uLWFzc2VtYmxlci5jLnMi CisjaW5jbHVkZSAiaGFybmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250 ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisgIC8qIExldCdzIHRyeSB0byBpbmplY3Qg dGhlIGVxdWl2YWxlbnQgb2Y6CisgICAgIHJlZ2lzdGVyIGludCBnbG9iYWxfdmFyaWFibGUgYXNt ICgicjEzIik7CisgICAgIGludCBtYWluKCkgeworICAgICAgICByZWdpc3RlciBpbnQgdmFyaWFi bGUgYXNtICgicjEyIik7CisgICAgICAgIHJldHVybiAwOworICAgICB9CisgICovCisgIGdjY19q aXRfdHlwZSAqaW50X3R5cGUgPQorICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwg R0NDX0pJVF9UWVBFX0lOVCk7CisgIGdjY19qaXRfbHZhbHVlICpnbG9iYWxfdmFyaWFibGUgPQor ICAgIGdjY19qaXRfY29udGV4dF9uZXdfZ2xvYmFsICgKKyAgICAgIGN0eHQsIE5VTEwsIEdDQ19K SVRfR0xPQkFMX0VYUE9SVEVELCBpbnRfdHlwZSwgImdsb2JhbF92YXJpYWJsZSIpOworICBnY2Nf aml0X2x2YWx1ZV9zZXRfcmVnaXN0ZXJfbmFtZShnbG9iYWxfdmFyaWFibGUsICJyMTMiKTsKKwor ICBnY2Nfaml0X2Z1bmN0aW9uICpmdW5jX21haW4gPQorICAgIGdjY19qaXRfY29udGV4dF9uZXdf ZnVuY3Rpb24gKGN0eHQsIE5VTEwsCisJCQkJICBHQ0NfSklUX0ZVTkNUSU9OX0VYUE9SVEVELAor CQkJCSAgaW50X3R5cGUsCisJCQkJICAibWFpbiIsCisJCQkJICAwLCBOVUxMLAorCQkJCSAgMCk7 CisgIGdjY19qaXRfbHZhbHVlICp2YXJpYWJsZSA9IGdjY19qaXRfZnVuY3Rpb25fbmV3X2xvY2Fs KGZ1bmNfbWFpbiwgTlVMTCwgaW50X3R5cGUsICJ2YXJpYWJsZSIpOworICBnY2Nfaml0X2x2YWx1 ZV9zZXRfcmVnaXN0ZXJfbmFtZSh2YXJpYWJsZSwgInIxMiIpOworICBnY2Nfaml0X3J2YWx1ZSAq dHdvID0gZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBl LCAyKTsKKyAgZ2NjX2ppdF9ydmFsdWUgKm9uZSA9IGdjY19qaXRfY29udGV4dF9vbmUgKGN0eHQs IGludF90eXBlKTsKKyAgZ2NjX2ppdF9ibG9jayAqYmxvY2sgPSBnY2Nfaml0X2Z1bmN0aW9uX25l d19ibG9jayAoZnVuY19tYWluLCBOVUxMKTsKKyAgZ2NjX2ppdF9ibG9ja19hZGRfYXNzaWdubWVu dChibG9jaywgTlVMTCwgdmFyaWFibGUsIG9uZSk7CisgIGdjY19qaXRfYmxvY2tfYWRkX2Fzc2ln bm1lbnQoYmxvY2ssIE5VTEwsIGdsb2JhbF92YXJpYWJsZSwgdHdvKTsKKyAgZ2NjX2ppdF9ibG9j a19lbmRfd2l0aF9yZXR1cm4gKGJsb2NrLCBOVUxMLCBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUo dmFyaWFibGUpKTsKK30KKworLyogeyBkZy1maW5hbCB7IGppdC12ZXJpZnktb3V0cHV0LWZpbGUt d2FzLWNyZWF0ZWQgIiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgaml0LXZlcmlmeS1hc3NlbWJs ZXItb3V0cHV0ICJtb3ZsCVxcXCQxLCAlcjEyZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgaml0 LXZlcmlmeS1hc3NlbWJsZXItb3V0cHV0ICJtb3ZsCVxcXCQyLCAlcjEzZCIgfSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdG9wbGV2LmNjIGIvZ2NjL3RvcGxldi5jYwppbmRleCA1MzRkYTE0NjJlOC4u ZWRiYTk2YjAwMmQgMTAwNjQ0Ci0tLSBhL2djYy90b3BsZXYuY2MKKysrIGIvZ2NjL3RvcGxldi5j YwpAQCAtMjM2OCw2ICsyMzY4LDcgQEAgdG9wbGV2OjpmaW5hbGl6ZSAodm9pZCkKICAgZ2NzZV9j X2ZpbmFsaXplICgpOwogICBpcGFfY3BfY19maW5hbGl6ZSAoKTsKICAgaXJhX2Nvc3RzX2NfZmlu YWxpemUgKCk7CisgIHJlZ2luZm9fY2NfZmluYWxpemUgKCk7CiAKICAgLyogc2F2ZV9kZWNvZGVk X29wdGlvbnMgdXNlcyBvcHRzX29ic3RhY2ssIHNvIHRoZXNlIG11c3QKICAgICAgYmUgY2xlYW5l ZCB1cCB0b2dldGhlci4gICovCi0tIAoyLjI2LjIuNy5nMTlkYjljZmI2OC5kaXJ0eQoK --=-fJI5qGOIbSuhMagBrJ43--