From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o91.zoho.com [136.143.188.91]) by sourceware.org (Postfix) with ESMTPS id 10AC83858D28; Thu, 10 Feb 2022 01:33:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 10AC83858D28 ARC-Seal: i=1; a=rsa-sha256; t=1644456792; cv=none; d=zohomail.com; s=zohoarc; b=QfitxdmDveF9ybNP/qXyJDoqg5U/lSpxPsyUTeMTD180yBpcIF2XLH2WCroOOeU2cowbeXEM6flYOPs6T67ynBsq14Sd2cShsSO0owXOJoX9f0sJfOKrBNhdUzOLcI4ID9turudv5ZuJ2XHM9AICSJ0wBqd8S/t0Pc/1FBVw5zE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644456792; h=Content-Type:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=bnAsFucuJ+v/B4E7l0tAFJLExsPSVDgfh8xz1//au/M=; b=nc4soBiUECSmm8wl4wmhdMh6tB+2ryn0vbhDVoKUbY30jUfHvDfPdAlSoJZ3dWDjz1P+NJHIhqczmb1yZOifju0ykrJ4xwSo17nCPuvCR142HjeuBkJaMnKAMU5srhgPr9jMveTYZWQjrwdmXICqPlEvnfY6VnWmwTCIoVKDRso= 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 1644456789048479.67460817219103; Wed, 9 Feb 2022 17:33:09 -0800 (PST) Message-ID: <9a119ab046e15b2e56e1269fa8c85ff7f410c988.camel@zoho.com> 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: Wed, 09 Feb 2022 20:33:07 -0500 In-Reply-To: <10b23be1a7be24134dfbc610f7a4ea12e54f5869.camel@zoho.com> References: <5a254fe52188d76ae6e292288b05f9c99994ff23.camel@zoho.com> <734c3e099c819286df512eb618b2f94bd11f4a87.camel@redhat.com> <9f0e398fc80a28c4a95313f7b1e16fb4651ebe1d.camel@zoho.com> <10b23be1a7be24134dfbc610f7a4ea12e54f5869.camel@zoho.com> Content-Type: multipart/mixed; boundary="=-cGisMFz4O5zflUfHOjqE" User-Agent: Evolution 3.42.3 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-10.7 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, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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: Thu, 10 Feb 2022 01:33:22 -0000 --=-cGisMFz4O5zflUfHOjqE Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Here's the updated patch. Le mardi 25 janvier 2022 =C3=A0 12:13 -0500, Antoni Boucher via Jit a =C3=A9crit=C2=A0: > See answers below. >=20 > 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=A9cr= it=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 > > > > for > > > > 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 > > the > > 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 > rustc_codegen_gcc does not have releases. It is merged from time to > time into rustc, so we can as well say that I point them to trunk. >=20 > I can feature gate the future features/patches I will need so that > people can still use the project with an unpatched gcc. >=20 > There's some interest in having it work with an unpatched gcc because > that would allow people to start working on the infra to get the > project distributed via rustup so that it could be distributed as a > preview component. >=20 > >=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 > Thanks. I'll update the patch to do this. >=20 > >=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 >=20 --=-cGisMFz4O5zflUfHOjqE 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" RnJvbSA1NDJiN2FmNjEyOTJhMDRkNjE0ODAzODhkNDI1YTEwNTdlY2Q2NmQ0IE1vbiBTZXAgMTcg 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 Z2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdCAgICAgICAgIHwgIDkgKysrCiBn Y2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdCAgICAgICAgICAgfCAyMCArKysrKysr CiBnY2Mvaml0L2ppdC1wbGF5YmFjay5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysK IGdjYy9qaXQvaml0LXJlY29yZGluZy5jYyAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysr LQogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKyst CiBnY2Mvaml0L2xpYmdjY2ppdC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysr KwogZ2NjL2ppdC9saWJnY2NqaXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysr KwogZ2NjL2ppdC9saWJnY2NqaXQubWFwICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysr KwogZ2NjL3JlZ2luZm8uY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysr KysrCiBnY2MvcnRsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSAr CiBnY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaCAgfCAgMyArCiAu Li4vdGVzdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1iYWQtbmFtZS5jICAgfCAzNSArKysrKysr KysrKysKIC4uLnN0LWVycm9yLXJlZ2lzdGVyLXZhcmlhYmxlLXNpemUtbWlzbWF0Y2guYyB8IDQw ICsrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtcmVnaXN0ZXItdmFyaWFi bGUuYyB8IDU2ICsrKysrKysrKysrKysrKysrKysKIGdjYy90b3BsZXYuY2MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAxICsKIDE1IGZpbGVzIGNoYW5nZWQsIDI1MCBpbnNlcnRp b25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv aml0LmRnL3Rlc3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtYmFkLW5hbWUuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFi bGUtc2l6ZS1taXNtYXRjaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9qaXQu ZGcvdGVzdC1yZWdpc3Rlci12YXJpYWJsZS5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3Rv cGljcy9jb21wYXRpYmlsaXR5LnJzdCBiL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0 eS5yc3QKaW5kZXggMTZjZWJlMzFhMTAuLjY4OWM5NGM0ZmFjIDEwMDY0NAotLS0gYS9nY2Mvaml0 L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3BpY3Mv Y29tcGF0aWJpbGl0eS5yc3QKQEAgLTMwMiwzICszMDIsMTIgQEAgdGhyZWFkLWxvY2FsIHN0b3Jh Z2UgbW9kZWwgb2YgYSB2YXJpYWJsZToKIHNlY3Rpb24gb2YgYSB2YXJpYWJsZToKIAogICAqIDpm dW5jOmBnY2Nfaml0X2x2YWx1ZV9zZXRfbGlua19zZWN0aW9uYAorCisuLiBfTElCR0NDSklUX0FC SV8yMjoKKworYGBMSUJHQ0NKSVRfQUJJXzIyYGAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitg YExJQkdDQ0pJVF9BQklfMjJgYCBjb3ZlcnMgdGhlIGFkZGl0aW9uIG9mIGFuIEFQSSBlbnRyeXBv aW50IHRvIHNldCB0aGUKK3JlZ2lzdGVyIG5hbWUgb2YgYSB2YXJpYWJsZToKKworICAqIDpmdW5j OmBnY2Nfaml0X2x2YWx1ZV9zZXRfcmVnaXN0ZXJfbmFtZWAKZGlmZiAtLWdpdCBhL2djYy9qaXQv ZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0IGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNz aW9ucy5yc3QKaW5kZXggNzkxYTIwMzk4Y2EuLjVjZjc4MGU2MzQ5IDEwMDY0NAotLS0gYS9nY2Mv aml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNz L2V4cHJlc3Npb25zLnJzdApAQCAtNzM4LDYgKzczOCwyNiBAQCB3aGVyZSB0aGUgcnZhbHVlIGlz IGNvbXB1dGVkIGJ5IHJlYWRpbmcgZnJvbSB0aGUgc3RvcmFnZSBhcmVhLgogCiAgICAgICAjaWZk ZWYgTElCR0NDSklUX0hBVkVfZ2NjX2ppdF9sdmFsdWVfc2V0X2xpbmtfc2VjdGlvbgogCisuLiBm dW5jdGlvbjo6IHZvaWQKKyAgICAgICAgICAgICAgZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lzdGVy X25hbWUgKGdjY19qaXRfbHZhbHVlICpsdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWdfbmFtZSk7CisKKyAgIFNldCB0 aGUgcmVnaXN0ZXIgbmFtZSBvZiBhIHZhcmlhYmxlLgorICAgVGhlIHBhcmFtZXRlciBgYHJlZ19u YW1lYGAgbXVzdCBiZSBub24tTlVMTC4gQW5hbG9nb3VzIHRvOgorCisgICAuLiBjb2RlLWJsb2Nr OjogYworCisgICAgIHJlZ2lzdGVyIGludCB2YXJpYWJsZSBhc20gKCJyMTIiKTsKKworICAgaW4g Qy4KKworICAgVGhpcyBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiA6cmVmOmBMSUJHQ0NKSVRfQUJJ XzIyYDsgeW91IGNhbiB0ZXN0IGZvcgorICAgaXRzIHByZXNlbmNlIHVzaW5nCisKKyAgIC4uIGNv ZGUtYmxvY2s6OiBjCisKKyAgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2x2YWx1 ZV9zZXRfcmVnaXN0ZXJfbmFtZQorCiBHbG9iYWwgdmFyaWFibGVzCiAqKioqKioqKioqKioqKioq CiAKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXBsYXliYWNrLmggYi9nY2Mvaml0L2ppdC1wbGF5 YmFjay5oCmluZGV4IGM5M2Q3MDU1ZDQzLi5hZjQ0MjdjNDUwMyAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9qaXQtcGxheWJhY2suaAorKysgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5oCkBAIC0yNCw2ICsy NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2Vl CiAjaW5jbHVkZSA8dXRpbGl0eT4gLy8gZm9yIHN0ZDo6cGFpcgogCiAjaW5jbHVkZSAidGltZXZh ci5oIgorI2luY2x1ZGUgInZhcmFzbS5oIgogCiAjaW5jbHVkZSAiaml0LXJlY29yZGluZy5oIgog CkBAIC03MDEsNiArNzAyLDE0IEBAIHB1YmxpYzoKICAgICBzZXRfZGVjbF9zZWN0aW9uX25hbWUg KGFzX3RyZWUgKCksIG5hbWUpOwogICB9CiAKKyAgdm9pZAorICBzZXRfcmVnaXN0ZXJfbmFtZSAo Y29uc3QgY2hhciogcmVnX25hbWUpCisgIHsKKyAgICBzZXRfdXNlcl9hc3NlbWJsZXJfbmFtZSAo YXNfdHJlZSAoKSwgcmVnX25hbWUpOworICAgIERFQ0xfUkVHSVNURVIgKGFzX3RyZWUgKCkpID0g MTsKKyAgICBERUNMX0hBUkRfUkVHSVNURVIgKGFzX3RyZWUgKCkpID0gMTsKKyAgfQorCiBwcml2 YXRlOgogICBib29sIG1hcmtfYWRkcmVzc2FibGUgKGxvY2F0aW9uICpsb2MpOwogfTsKZGlmZiAt LWdpdCBhL2djYy9qaXQvaml0LXJlY29yZGluZy5jYyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5j YwppbmRleCAxZTNmYWRmYWNkNy4uNTcwMzExNGYxMzggMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0 LXJlY29yZGluZy5jYworKysgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuY2MKQEAgLTM4MDcsNiAr MzgwNywxMSBAQCB2b2lkIHJlY29yZGluZzo6bHZhbHVlOjpzZXRfbGlua19zZWN0aW9uIChjb25z dCBjaGFyICpuYW1lKQogICBtX2xpbmtfc2VjdGlvbiA9IG5ld19zdHJpbmcgKG5hbWUpOwogfQog Cit2b2lkIHJlY29yZGluZzo6bHZhbHVlOjpzZXRfcmVnaXN0ZXJfbmFtZSAoY29uc3QgY2hhciAq cmVnX25hbWUpCit7CisgIG1fcmVnX25hbWUgPSBuZXdfc3RyaW5nIChyZWdfbmFtZSk7Cit9CisK IC8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjbGFzcyBnY2M6OmppdDo6cmVjb3JkaW5nOjpwYXJh bS4gICovCiAKIC8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUgdmlydHVhbCBob29rIHJlY29yZGlu Zzo6bWVtZW50bzo6cmVwbGF5X2ludG8KQEAgLTQ2NzMsNiArNDY3OCw5IEBAIHJlY29yZGluZzo6 Z2xvYmFsOjpyZXBsYXlfaW50byAocmVwbGF5ZXIgKnIpCiAgIGlmIChtX2xpbmtfc2VjdGlvbiAh PSBOVUxMKQogICAgIGdsb2JhbC0+c2V0X2xpbmtfc2VjdGlvbiAobV9saW5rX3NlY3Rpb24tPmNf c3RyICgpKTsKIAorICBpZiAobV9yZWdfbmFtZSAhPSBOVUxMKQorICAgIGdsb2JhbC0+c2V0X3Jl Z2lzdGVyX25hbWUgKG1fcmVnX25hbWUtPmNfc3RyICgpKTsKKwogICBzZXRfcGxheWJhY2tfb2Jq IChnbG9iYWwpOwogfQogCkBAIC02MzQzLDExICs2MzUxLDE1IEBAIHJlY29yZGluZzo6ZnVuY3Rp b25fcG9pbnRlcjo6d3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAmcikKIHZvaWQKIHJlY29y ZGluZzo6bG9jYWw6OnJlcGxheV9pbnRvIChyZXBsYXllciAqcikKIHsKLSAgc2V0X3BsYXliYWNr X29iaiAoCi0gICAgbV9mdW5jLT5wbGF5YmFja19mdW5jdGlvbiAoKQorICBwbGF5YmFjazo6bHZh bHVlICpvYmogPSBtX2Z1bmMtPnBsYXliYWNrX2Z1bmN0aW9uICgpCiAgICAgICAtPm5ld19sb2Nh bCAocGxheWJhY2tfbG9jYXRpb24gKHIsIG1fbG9jKSwKIAkJICAgbV90eXBlLT5wbGF5YmFja190 eXBlICgpLAotCQkgICBwbGF5YmFja19zdHJpbmcgKG1fbmFtZSkpKTsKKwkJICAgcGxheWJhY2tf c3RyaW5nIChtX25hbWUpKTsKKworICBpZiAobV9yZWdfbmFtZSAhPSBOVUxMKQorICAgIG9iai0+ c2V0X3JlZ2lzdGVyX25hbWUgKG1fcmVnX25hbWUtPmNfc3RyICgpKTsKKworICBzZXRfcGxheWJh Y2tfb2JqIChvYmopOwogfQogCiAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv biBvZgpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggYi9nY2Mvaml0L2ppdC1y ZWNvcmRpbmcuaAppbmRleCA4NDZkNjVjYjIwMi4uNjBiMzYzZDU5MGUgMTAwNjQ0Ci0tLSBhL2dj Yy9qaXQvaml0LXJlY29yZGluZy5oCisrKyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5oCkBAIC0x MTQ3LDggKzExNDcsOSBAQCBwdWJsaWM6CiAJICBsb2NhdGlvbiAqbG9jLAogCSAgdHlwZSAqdHlw ZV8pCiAgICAgOiBydmFsdWUgKGN0eHQsIGxvYywgdHlwZV8pLAotICAgIG1fdGxzX21vZGVsIChH Q0NfSklUX1RMU19NT0RFTF9OT05FKSwKLSAgICBtX2xpbmtfc2VjdGlvbiAoTlVMTCkKKyAgICBt X2xpbmtfc2VjdGlvbiAoTlVMTCksCisgICAgbV9yZWdfbmFtZSAoTlVMTCksCisgICAgbV90bHNf bW9kZWwgKEdDQ19KSVRfVExTX01PREVMX05PTkUpCiAgICAge30KIAogICBwbGF5YmFjazo6bHZh bHVlICoKQEAgLTExNzIsMTAgKzExNzMsMTIgQEAgcHVibGljOgogICB2aXJ0dWFsIGJvb2wgaXNf Z2xvYmFsICgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgIHZvaWQgc2V0X3Rsc19tb2RlbCAo ZW51bSBnY2Nfaml0X3Rsc19tb2RlbCBtb2RlbCk7CiAgIHZvaWQgc2V0X2xpbmtfc2VjdGlvbiAo Y29uc3QgY2hhciAqbmFtZSk7CisgIHZvaWQgc2V0X3JlZ2lzdGVyX25hbWUgKGNvbnN0IGNoYXIg KnJlZ19uYW1lKTsKIAogcHJvdGVjdGVkOgotICBlbnVtIGdjY19qaXRfdGxzX21vZGVsIG1fdGxz X21vZGVsOwogICBzdHJpbmcgKm1fbGlua19zZWN0aW9uOworICBzdHJpbmcgKm1fcmVnX25hbWU7 CisgIGVudW0gZ2NjX2ppdF90bHNfbW9kZWwgbV90bHNfbW9kZWw7CiB9OwogCiBjbGFzcyBwYXJh bSA6IHB1YmxpYyBsdmFsdWUKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmNjIGIvZ2Nj L2ppdC9saWJnY2NqaXQuY2MKaW5kZXggNGMzNTJlOGM5M2QuLmMyYWRhYTM4NGI2IDEwMDY0NAot LS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5jYworKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5jYwpAQCAt MjY0OSw2ICsyNjQ5LDIwIEBAIGdjY19qaXRfbHZhbHVlX3NldF9saW5rX3NlY3Rpb24gKGdjY19q aXRfbHZhbHVlICpsdmFsdWUsCiAgIGx2YWx1ZS0+c2V0X2xpbmtfc2VjdGlvbiAoc2VjdGlvbl9u YW1lKTsKIH0KIAorLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGli Z2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRv bmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjpsdmFsdWU6OnNldF9yZWdpc3Rlcl9u YW1lIG1ldGhvZCBpbiBqaXQtcmVjb3JkaW5nLmNjLiAgKi8KKwordm9pZAorZ2NjX2ppdF9sdmFs dWVfc2V0X3JlZ2lzdGVyX25hbWUgKGdjY19qaXRfbHZhbHVlICpsdmFsdWUsCisJCQkJICBjb25z dCBjaGFyICpyZWdfbmFtZSkKK3sKKyAgUkVUVVJOX0lGX0ZBSUwgKGx2YWx1ZSwgTlVMTCwgTlVM TCwgIk5VTEwgbHZhbHVlIik7CisgIFJFVFVSTl9JRl9GQUlMIChyZWdfbmFtZSwgTlVMTCwgTlVM TCwgIk5VTEwgcmVnX25hbWUiKTsKKyAgbHZhbHVlLT5zZXRfcmVnaXN0ZXJfbmFtZSAocmVnX25h bWUpOworfQorCiAvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJn Y2NqaXQuaC4KIAogICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9u ZSBieSB0aGUKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmggYi9nY2Mvaml0L2xpYmdj Y2ppdC5oCmluZGV4IDJhNWZmYWNiMWZlLi5jOGE5ZWM0ZjZhNCAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9saWJnY2NqaXQuaAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5oCkBAIC0xMjc3LDYgKzEyNzcs MTggQEAgZXh0ZXJuIHZvaWQKIGdjY19qaXRfbHZhbHVlX3NldF9saW5rX3NlY3Rpb24gKGdjY19q aXRfbHZhbHVlICpsdmFsdWUsCiAJCQkgICAgY29uc3QgY2hhciAqc2VjdGlvbl9uYW1lKTsKIAor I2RlZmluZSBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2x2YWx1ZV9zZXRfcmVnaXN0ZXJfbmFtZQor CisvKiBNYWtlIHRoaXMgdmFyaWFibGUgYSByZWdpc3RlciB2YXJpYWJsZSBhbmQgc2V0IGl0cyBy ZWdpc3RlciBuYW1lLgorCisgICBUaGlzIEFQSSBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiBMSUJH Q0NKSVRfQUJJXzIyOyB5b3UgY2FuIHRlc3QgZm9yIGl0cworICAgcHJlc2VuY2UgdXNpbmcKKyAg ICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX2djY19qaXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9uYW1l CisqLwordm9pZAorZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lzdGVyX25hbWUgKGdjY19qaXRfbHZh bHVlICpsdmFsdWUsCisJCQkJICBjb25zdCBjaGFyICpyZWdfbmFtZSk7CisKIGV4dGVybiBnY2Nf aml0X2x2YWx1ZSAqCiBnY2Nfaml0X2Z1bmN0aW9uX25ld19sb2NhbCAoZ2NjX2ppdF9mdW5jdGlv biAqZnVuYywKIAkJCSAgICBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCmRpZmYgLS1naXQgYS9nY2Mv aml0L2xpYmdjY2ppdC5tYXAgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKaW5kZXggZjM3M2ZkMzlh YzcuLjhiN2RjMTNjOTdkIDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKKysrIGIv Z2NjL2ppdC9saWJnY2NqaXQubWFwCkBAIC0yNDMsMyArMjQzLDE0IEBAIExJQkdDQ0pJVF9BQklf MTkgewogICAgIGdjY19qaXRfY29udGV4dF9uZXdfdW5pb25fY29uc3RydWN0b3I7CiAgICAgZ2Nj X2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3J2YWx1ZTsKIH0gTElCR0NDSklUX0FCSV8xODsK KworTElCR0NDSklUX0FCSV8yMCB7Cit9IExJQkdDQ0pJVF9BQklfMTk7CisKK0xJQkdDQ0pJVF9B QklfMjEgeworfSBMSUJHQ0NKSVRfQUJJXzIwOworCitMSUJHQ0NKSVRfQUJJXzIyIHsKKyAgZ2xv YmFsOgorICAgIGdjY19qaXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9uYW1lOworfSBMSUJHQ0NKSVRf QUJJXzIxOwpkaWZmIC0tZ2l0IGEvZ2NjL3JlZ2luZm8uY2MgYi9nY2MvcmVnaW5mby5jYwppbmRl eCAyMzRmNzJlY2VlYi4uMDdlZTk1OTZlODAgMTAwNjQ0Ci0tLSBhL2djYy9yZWdpbmZvLmNjCisr KyBiL2djYy9yZWdpbmZvLmNjCkBAIC0xMjIsNiArMTIyLDI0IEBAIGNvbnN0IGNoYXIgKiByZWdf Y2xhc3NfbmFtZXNbXSA9IFJFR19DTEFTU19OQU1FUzsKICAgIHJlZ2luZm8gaGFzIGJlZW4gaW5p dGlhbGl6ZWQuICAqLwogc3RhdGljIGludCBub19nbG9iYWxfcmVnX3ZhcnMgPSAwOwogCitzdGF0 aWMgdm9pZAorY2xlYXJfZ2xvYmFsX3JlZ3NfY2FjaGUgKHZvaWQpCit7CisgIGZvciAoc2l6ZV90 IGkgPSAwIDsgaSA8IEZJUlNUX1BTRVVET19SRUdJU1RFUiA7IGkrKykKKyAgeworICAgIGdsb2Jh bF9yZWdzW2ldID0gMDsKKyAgICBnbG9iYWxfcmVnc19kZWNsW2ldID0gTlVMTDsKKyAgfQorfQor Cit2b2lkCityZWdpbmZvX2NjX2ZpbmFsaXplICh2b2lkKQoreworICBjbGVhcl9nbG9iYWxfcmVn c19jYWNoZSAoKTsKKyAgbm9fZ2xvYmFsX3JlZ192YXJzID0gMDsKKyAgQ0xFQVJfSEFSRF9SRUdf U0VUIChnbG9iYWxfcmVnX3NldCk7Cit9CisKIC8qIEdpdmVuIGEgcmVnaXN0ZXIgYml0bWFwLCB0 dXJuIG9uIHRoZSBiaXRzIGluIGEgSEFSRF9SRUdfU0VUIHRoYXQKICAgIGNvcnJlc3BvbmQgdG8g dGhlIGhhcmQgcmVnaXN0ZXJzLCBpZiBhbnksIHNldCBpbiB0aGF0IG1hcC4gIFRoaXMKICAgIGNv dWxkIGJlIGRvbmUgZmFyIG1vcmUgZWZmaWNpZW50bHkgYnkgaGF2aW5nIGFsbCBzb3J0cyBvZiBz cGVjaWFsLWNhc2VzCmRpZmYgLS1naXQgYS9nY2MvcnRsLmggYi9nY2MvcnRsLmgKaW5kZXggNjQ4 ZjliOGE2MDEuLjEzMTYzZDk0ZWM5IDEwMDY0NAotLS0gYS9nY2MvcnRsLmgKKysrIGIvZ2NjL3J0 bC5oCkBAIC0zNzc0LDYgKzM3NzQsNyBAQCBleHRlcm4gYm9vbCByZXNpemVfcmVnX2luZm8gKHZv aWQpOwogZXh0ZXJuIHZvaWQgZnJlZV9yZWdfaW5mbyAodm9pZCk7CiBleHRlcm4gdm9pZCBpbml0 X3N1YnJlZ3Nfb2ZfbW9kZSAodm9pZCk7CiBleHRlcm4gdm9pZCBmaW5pc2hfc3VicmVnc19vZl9t b2RlICh2b2lkKTsKK2V4dGVybiB2b2lkIHJlZ2luZm9fY2NfZmluYWxpemUgKHZvaWQpOwogCiAv KiByZWNvZy5jYyAqLwogZXh0ZXJuIHJ0eCBleHRyYWN0X2FzbV9vcGVyYW5kcyAocnR4KTsKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIGIv Z2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmgKaW5kZXggMjlhZmUw NjRkYjYuLjA2MDNhY2UyNTVhIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwt bm9uLWZhaWxpbmctdGVzdHMuaAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZh aWxpbmctdGVzdHMuaApAQCAtMzA2LDYgKzMwNiw5IEBACiAjdW5kZWYgY3JlYXRlX2NvZGUKICN1 bmRlZiB2ZXJpZnlfY29kZQogCisvKiB0ZXN0LXJlZ2lzdGVyLXZhcmlhYmxlLmM6IFRoaXMgY2Fu J3QgYmUgaW4gdGhlIHRlc3RjYXNlcyBhcnJheSBhcyBpdAorICAgZG9lc24ndCBoYXZlIGEgdmVy aWZ5X2NvZGUgaW1wbGVtZW50YXRpb24uICAqLworCiAvKiB0ZXN0LXN0cmluZy1saXRlcmFsLmMg Ki8KICNkZWZpbmUgY3JlYXRlX2NvZGUgY3JlYXRlX2NvZGVfc3RyaW5nX2xpdGVyYWwKICNkZWZp bmUgdmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVfc3RyaW5nX2xpdGVyYWwKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtYmFkLW5hbWUu YyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtYmFk LW5hbWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2YyNjk5Mzc0 YWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWVycm9yLXJl Z2lzdGVyLXZhcmlhYmxlLWJhZC1uYW1lLmMKQEAgLTAsMCArMSwzNSBAQAorLyoKKworICBUZXN0 IHRoYXQgdGhlIHByb3BlciBlcnJvciBpcyB0cmlnZ2VyZWQgd2hlbiB3ZSBidWlsZCBhIHJlZ2lz dGVyIHZhcmlhYmxlCisgIHdpdGggYSByZWdpc3RlciBuYW1lIHRoYXQgZG9lc24ndCBleGlzdC4K KworKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNs dWRlICJsaWJnY2NqaXQuaCIKKyNpbmNsdWRlICJoYXJuZXNzLmgiCisKK3ZvaWQKK2NyZWF0ZV9j b2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgZ2NjX2pp dF90eXBlICppbnRfdHlwZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCBH Q0NfSklUX1RZUEVfSU5UKTsKKyAgZ2NjX2ppdF9sdmFsdWUgKmdsb2JhbF92YXJpYWJsZSA9Cisg ICAgZ2NjX2ppdF9jb250ZXh0X25ld19nbG9iYWwgKAorICAgICAgY3R4dCwgTlVMTCwgR0NDX0pJ VF9HTE9CQUxfRVhQT1JURUQsIGludF90eXBlLCAiZ2xvYmFsX3ZhcmlhYmxlIik7CisgIGdjY19q aXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9uYW1lKGdsb2JhbF92YXJpYWJsZSwgInRoaXNfaXNfbm90 X2FfcmVnaXN0ZXIiKTsKK30KKwordm9pZAordmVyaWZ5X2NvZGUgKGdjY19qaXRfY29udGV4dCAq Y3R4dCwgZ2NjX2ppdF9yZXN1bHQgKnJlc3VsdCkKK3sKKyAgLyogRW5zdXJlIHRoYXQgdGhlIGJh ZCBBUEkgdXNhZ2UgcHJldmVudHMgdGhlIEFQSSBnaXZpbmcgYSBib2d1cworICAgICByZXN1bHQg YmFjay4gICovCisgIENIRUNLX1ZBTFVFIChyZXN1bHQsIE5VTEwpOworCisgIC8qIFZlcmlmeSB0 aGF0IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2Ugd2FzIGVtaXR0ZWQuICovCisgIENIRUNLX1NU UklOR19WQUxVRSAoZ2NjX2ppdF9jb250ZXh0X2dldF9sYXN0X2Vycm9yIChjdHh0KSwKKwkJICAg ICAgImludmFsaWQgcmVnaXN0ZXIgbmFtZSBmb3IgJ1wwMzNbMDFtXDAzM1tLZ2xvYmFsX3Zhcmlh YmxlXDMzW21cMzNbSyciKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rl c3QtZXJyb3ItcmVnaXN0ZXItdmFyaWFibGUtc2l6ZS1taXNtYXRjaC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9qaXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJpYWJsZS1zaXplLW1pc21hdGNoLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ5YTBhYzUwNWQxCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1yZWdpc3Rlci12YXJp YWJsZS1zaXplLW1pc21hdGNoLmMKQEAgLTAsMCArMSw0MCBAQAorLyoKKworICBUZXN0IHRoYXQg dGhlIHByb3BlciBlcnJvciBpcyB0cmlnZ2VyZWQgd2hlbiB3ZSBidWlsZCBhIHJlZ2lzdGVyIHZh cmlhYmxlCisgIHdpdGggYSByZWdpc3RlciBuYW1lIHRoYXQgZG9lc24ndCBleGlzdC4KKworKi8K KworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJs aWJnY2NqaXQuaCIKKyNpbmNsdWRlICJoYXJuZXNzLmgiCisKK3ZvaWQKK2NyZWF0ZV9jb2RlIChn Y2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgZ2NjX2ppdF90eXBl ICppbnRfdHlwZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCBHQ0NfSklU X1RZUEVfSU5UKTsKKyAgZ2NjX2ppdF90eXBlICphcnJheV90eXBlID0KKyAgICBnY2Nfaml0X2Nv bnRleHRfbmV3X2FycmF5X3R5cGUgKGN0eHQsIE5VTEwsIGludF90eXBlLCA0MDk2KTsKKyAgZ2Nj X2ppdF9sdmFsdWUgKmdsb2JhbF92YXJpYWJsZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19n bG9iYWwgKAorICAgICAgY3R4dCwgTlVMTCwgR0NDX0pJVF9HTE9CQUxfRVhQT1JURUQsIGFycmF5 X3R5cGUsICJnbG9iYWxfdmFyaWFibGUiKTsKKyAgZ2NjX2ppdF9sdmFsdWVfc2V0X3JlZ2lzdGVy X25hbWUoZ2xvYmFsX3ZhcmlhYmxlLCAicjEyIik7Cit9CisKK3ZvaWQKK3ZlcmlmeV9jb2RlIChn Y2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpyZXN1bHQpCit7CisgIC8qIEVu c3VyZSB0aGF0IHRoZSBiYWQgQVBJIHVzYWdlIHByZXZlbnRzIHRoZSBBUEkgZ2l2aW5nIGEgYm9n dXMKKyAgICAgcmVzdWx0IGJhY2suICAqLworICBDSEVDS19WQUxVRSAocmVzdWx0LCBOVUxMKTsK KworICAvKiBWZXJpZnkgdGhhdCB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlIHdhcyBlbWl0dGVk LiAqLworICAvLyBGSVhNRTogdGhpcyBkb2Vzbid0IGNvbXBhcmUgZXF1YWwgYmVjYXVzZSBpdCBz ZWVtcyBnbG9iYWxfdmFyaWFibGUgaXMgZm9ybWF0dGVkIGluIGJvbGQuCisgIC8vIE1heWJlIHRy aWdnZXIgdGhlIGVycm9yIG15c2VsZiB3aXRoCisgIC8vIGRlY29kZV9yZWdfbmFtZSAoYXNtc3Bl Yyk/CisgIENIRUNLX1NUUklOR19WQUxVRSAoZ2NjX2ppdF9jb250ZXh0X2dldF9sYXN0X2Vycm9y IChjdHh0KSwKKwkJICAgICAgImRhdGEgdHlwZSBvZiAnXDAzM1swMW1cMDMzW0tnbG9iYWxfdmFy aWFibGVcMzNbbVwzM1tLJyBpc24ndCBzdWl0YWJsZSBmb3IgYSByZWdpc3RlciIpOworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1yZWdpc3Rlci12YXJpYWJsZS5jIGIv Z2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1yZWdpc3Rlci12YXJpYWJsZS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZTZkY2FhOTIxMwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtcmVnaXN0ZXItdmFyaWFibGUuYwpAQCAtMCww ICsxLDU2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gKi8K KworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJs aWJnY2NqaXQuaCIKKworLyogV2UgZG9uJ3Qgd2FudCBzZXRfb3B0aW9ucygpIGluIGhhcm5lc3Mu aCB0byBzZXQgLU8zIHNvIG91ciBsaXR0bGUgbG9jYWwKKyAgIGlzIG9wdGltaXplZCBhd2F5LiAq LworI2RlZmluZSBURVNUX0VTQ0hFV1NfU0VUX09QVElPTlMKK3N0YXRpYyB2b2lkIHNldF9vcHRp b25zIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGNvbnN0IGNoYXIgKmFyZ3YwKQoreworfQorCisj ZGVmaW5lIFRFU1RfQ09NUElMSU5HX1RPX0ZJTEUKKyNkZWZpbmUgT1VUUFVUX0tJTkQgICAgICBH Q0NfSklUX09VVFBVVF9LSU5EX0FTU0VNQkxFUgorI2RlZmluZSBPVVRQVVRfRklMRU5BTUUgICJv dXRwdXQtb2YtdGVzdC1saW5rLXNlY3Rpb24tYXNzZW1ibGVyLmMucyIKKyNpbmNsdWRlICJoYXJu ZXNzLmgiCisKK3ZvaWQKK2NyZWF0ZV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQg KnVzZXJfZGF0YSkKK3sKKyAgLyogTGV0J3MgdHJ5IHRvIGluamVjdCB0aGUgZXF1aXZhbGVudCBv ZjoKKyAgICAgcmVnaXN0ZXIgaW50IGdsb2JhbF92YXJpYWJsZSBhc20gKCJyMTMiKTsKKyAgICAg aW50IG1haW4oKSB7CisgICAgICAgIHJlZ2lzdGVyIGludCB2YXJpYWJsZSBhc20gKCJyMTIiKTsK KyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAgKi8KKyAgZ2NjX2ppdF90eXBlICppbnRfdHlw ZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCBHQ0NfSklUX1RZUEVfSU5U KTsKKyAgZ2NjX2ppdF9sdmFsdWUgKmdsb2JhbF92YXJpYWJsZSA9CisgICAgZ2NjX2ppdF9jb250 ZXh0X25ld19nbG9iYWwgKAorICAgICAgY3R4dCwgTlVMTCwgR0NDX0pJVF9HTE9CQUxfRVhQT1JU RUQsIGludF90eXBlLCAiZ2xvYmFsX3ZhcmlhYmxlIik7CisgIGdjY19qaXRfbHZhbHVlX3NldF9y ZWdpc3Rlcl9uYW1lKGdsb2JhbF92YXJpYWJsZSwgInIxMyIpOworCisgIGdjY19qaXRfZnVuY3Rp b24gKmZ1bmNfbWFpbiA9CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAoY3R4dCwg TlVMTCwKKwkJCQkgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisJCQkJICBpbnRfdHlwZSwK KwkJCQkgICJtYWluIiwKKwkJCQkgIDAsIE5VTEwsCisJCQkJICAwKTsKKyAgZ2NjX2ppdF9sdmFs dWUgKnZhcmlhYmxlID0gZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwoZnVuY19tYWluLCBOVUxM LCBpbnRfdHlwZSwgInZhcmlhYmxlIik7CisgIGdjY19qaXRfbHZhbHVlX3NldF9yZWdpc3Rlcl9u YW1lKHZhcmlhYmxlLCAicjEyIik7CisgIGdjY19qaXRfcnZhbHVlICp0d28gPSBnY2Nfaml0X2Nv bnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUsIDIpOworICBnY2Nfaml0 X3J2YWx1ZSAqb25lID0gZ2NjX2ppdF9jb250ZXh0X29uZSAoY3R4dCwgaW50X3R5cGUpOworICBn Y2Nfaml0X2Jsb2NrICpibG9jayA9IGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2NrIChmdW5jX21h aW4sIE5VTEwpOworICBnY2Nfaml0X2Jsb2NrX2FkZF9hc3NpZ25tZW50KGJsb2NrLCBOVUxMLCB2 YXJpYWJsZSwgb25lKTsKKyAgZ2NjX2ppdF9ibG9ja19hZGRfYXNzaWdubWVudChibG9jaywgTlVM TCwgZ2xvYmFsX3ZhcmlhYmxlLCB0d28pOworICBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVy biAoYmxvY2ssIE5VTEwsIGdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSh2YXJpYWJsZSkpOworfQor CisvKiB7IGRnLWZpbmFsIHsgaml0LXZlcmlmeS1vdXRwdXQtZmlsZS13YXMtY3JlYXRlZCAiIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBqaXQtdmVyaWZ5LWFzc2VtYmxlci1vdXRwdXQgIm1vdmwJ XFxcJDEsICVyMTJkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBqaXQtdmVyaWZ5LWFzc2VtYmxl ci1vdXRwdXQgIm1vdmwJXFxcJDIsICVyMTNkIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90b3Bs ZXYuY2MgYi9nY2MvdG9wbGV2LmNjCmluZGV4IDUzNGRhMTQ2MmU4Li5lZGJhOTZiMDAyZCAxMDA2 NDQKLS0tIGEvZ2NjL3RvcGxldi5jYworKysgYi9nY2MvdG9wbGV2LmNjCkBAIC0yMzY4LDYgKzIz NjgsNyBAQCB0b3BsZXY6OmZpbmFsaXplICh2b2lkKQogICBnY3NlX2NfZmluYWxpemUgKCk7CiAg IGlwYV9jcF9jX2ZpbmFsaXplICgpOwogICBpcmFfY29zdHNfY19maW5hbGl6ZSAoKTsKKyAgcmVn aW5mb19jY19maW5hbGl6ZSAoKTsKIAogICAvKiBzYXZlX2RlY29kZWRfb3B0aW9ucyB1c2VzIG9w dHNfb2JzdGFjaywgc28gdGhlc2UgbXVzdAogICAgICBiZSBjbGVhbmVkIHVwIHRvZ2V0aGVyLiAg Ki8KLS0gCjIuMjYuMi43LmcxOWRiOWNmYjY4LmRpcnR5Cgo= --=-cGisMFz4O5zflUfHOjqE--