From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o90.zoho.com [136.143.188.90]) by sourceware.org (Postfix) with ESMTPS id BE3B3385840D; Sat, 20 Nov 2021 16:27:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BE3B3385840D ARC-Seal: i=1; a=rsa-sha256; t=1637425663; cv=none; d=zohomail.com; s=zohoarc; b=R0EWFDK+sV3u922YI6UHYSuFb+wZarEN/EYWdY2dN16HmJ6WNe0hrYiB7tVdjahuaVu4APv5G6lxJJjWlJbABgU+a/rnev4GpcXrJESfaYWarmPeKl4Xvd348iFxi09lHvm+iRgbdbTiDhRdnfvZB+zlJ8UyNtPD6Er67JQsl6c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637425663; h=Content-Type:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=mwWdnU78jgEVX8Ww6zE3p3uV2v1fDE8iMKf3KRqI0kg=; b=VIL4xVIztx9IHfj2vGSgC0C+k3H3lFfdpnDaTGXPeLVSwAyMElwE+XvBkjUzMn+xjXuv3A97G6k5Z4HQT1ojupj6/SYjAeVq95YAE1jvnOpOjqC6r/tYrSBh2xvDtTcGug2W6oaWBszX8V4AbnD0BIt/0BucPiHU3qi3p9oM570= 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 1637425661276936.8118990089976; Sat, 20 Nov 2021 08:27:41 -0800 (PST) Message-ID: <3abfd5cf6546892f25a01c1772121c848487a196.camel@zoho.com> Subject: Re: [PATCH] libgccjit: Add support for types used by atomic builtins [PR96066] [PR96067] From: Antoni Boucher To: David Malcolm , jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Date: Sat, 20 Nov 2021 11:27:39 -0500 In-Reply-To: References: <212418d2a4b81cfff1e125ddb12d0b4d10d8404a.camel@zoho.com> Content-Type: multipart/mixed; boundary="=-mJQ9q1dovrncz61rx92T" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-10.3 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: Sat, 20 Nov 2021 16:27:51 -0000 --=-mJQ9q1dovrncz61rx92T Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi. Here's the updated patch. Thanks for the review! Le jeudi 20 mai 2021 =C3=A0 16:24 -0400, David Malcolm a =C3=A9crit=C2=A0: > On Mon, 2021-05-17 at 21:02 -0400, Antoni Boucher via Jit wrote: > > Hello. > > This patch fixes the issue with using atomic builtins in libgccjit. > > Thanks to review it. >=20 > [...snip...] > =C2=A0 > > diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c > > index 117ff70114c..de876ff9fa6 100644 > > --- a/gcc/jit/jit-recording.c > > +++ b/gcc/jit/jit-recording.c > > @@ -2598,8 +2598,18 @@ > > recording::memento_of_get_pointer::accepts_writes_from (type > > *rtype) > > =C2=A0=C2=A0=C2=A0=C2=A0 return false; > > =C2=A0 > > =C2=A0=C2=A0 /* It's OK to assign to a (const T *) from a (T *).=C2=A0 = */ > > -=C2=A0 return m_other_type->unqualified () > > -=C2=A0=C2=A0=C2=A0 ->accepts_writes_from (rtype_points_to); > > +=C2=A0 if (m_other_type->unqualified () > > +=C2=A0=C2=A0=C2=A0 ->accepts_writes_from (rtype_points_to)) { > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return true; > > +=C2=A0 } > > + > > +=C2=A0 /* It's OK to assign to a (volatile const T *) from a (volatile > > const T *). */ > > +=C2=A0 if (m_other_type->unqualified ()->unqualified () > > +=C2=A0=C2=A0=C2=A0 ->accepts_writes_from (rtype_points_to->unqualified= ())) { > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return true; > > +=C2=A0 } >=20 > Presumably you need this to get the atomic builtins working? >=20 > If I'm reading the above correctly, the new test doesn't distinguish > between the 3 different kinds of qualifiers (aligned, volatile, and > const), it merely tries to strip some of them off. >=20 > It's not valid to e.g.=C2=A0assign to a (aligned T *) from a (const T *). >=20 > Maybe we need an internal enum to discriminate between different > subclasses of decorated_type? >=20 >=20 > > + > > +=C2=A0 return false; > > =C2=A0} > > =C2=A0 > > =C2=A0/* Implementation of pure virtual hook > > recording::memento::replay_into > > diff --git a/gcc/testsuite/jit.dg/all-non-failing-tests.h > > b/gcc/testsuite/jit.dg/all-non-failing-tests.h > > index 4202eb7798b..dfc6596358c 100644 > > --- a/gcc/testsuite/jit.dg/all-non-failing-tests.h > > +++ b/gcc/testsuite/jit.dg/all-non-failing-tests.h > > @@ -181,6 +181,13 @@ > > =C2=A0#undef create_code > > =C2=A0#undef verify_code > > =C2=A0 > > +/* test-builtin-types.c */ > > +#define create_code create_code_builtin_types > > +#define verify_code verify_code_builtin_types > > +#include "test-builtin-types.c" > > +#undef create_code > > +#undef verify_code > > + > > =C2=A0/* test-hello-world.c */ > > =C2=A0#define create_code create_code_hello_world > > =C2=A0#define verify_code verify_code_hello_world >=20 > As with various other patches, this needs to also add a new entry to > the "testcases" array making use of the new > {create|verify}_code_builtin_types functions. >=20 > [...snip...] >=20 > Hope this is constructive > Dave >=20 --=-mJQ9q1dovrncz61rx92T Content-Disposition: attachment; filename*0=0001-libgccjit-Add-support-for-types-used-by-atomic-built.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-libgccjit-Add-support-for-types-used-by-atomic-built.patch"; charset="UTF-8" RnJvbSA3NDIzMGJlMmMzMjQ4NzZiMjU1ZmMxY2M5NmZhZTRlZWNlOGZmMmEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogU3VuLCA5IE1heSAyMDIxIDIwOjE0OjM3IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gbGliZ2Nj aml0OiBBZGQgc3VwcG9ydCBmb3IgdHlwZXMgdXNlZCBieSBhdG9taWMgYnVpbHRpbnMKIFtQUjk2 MDY2XSBbUFI5NjA2N10KCjIwMjEtMTEtMjAgIEFudG9uaSBCb3VjaGVyICA8Ym91YW50b0B6b2hv LmNvbT4KCiAgICBnY2Mvaml0LwogICAgICAgICAgICBQUiB0YXJnZXQvUFI5NjA2NgogICAgICAg ICAgICBQUiB0YXJnZXQvUFI5NjA2NwogICAgICAgICAgICAqIGppdC1idWlsdGlucy5jOiBJbXBs ZW1lbnQgbWlzc2luZyB0eXBlcyBmb3IgYnVpbHRpbnMuCiAgICAgICAgICAgICogaml0LXJlY29y ZGluZy5jOjogQWxsb3cgc2VuZGluZyBhIHZvbGF0aWxlIGNvbnN0IHZvaWQgKiBhcwogICAgICAg ICAgICBhcmd1bWVudC4KICAgICAgICAgICAgKiBqaXQtcmVjb3JkaW5nLmg6IE5ldyBmdW5jdGlv bnMgKGlzX3ZvbGF0aWxlLCBpc19jb25zdCkgYW5kCiAgICAgICAgICAgICAgYWxsb3cgY29tcGFy aW5nIHF1YWxpZmllZCB0eXBlcy4KICAgIGdjYy90ZXN0c3VpdGUvCiAgICAgICAgICAgIFBSIHRh cmdldC9QUjk2MDY2CiAgICAgICAgICAgIFBSIHRhcmdldC9QUjk2MDY3CiAgICAgICAgICAgICog aml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oOiBBZGQgdGVzdC1idWlsdGluLXR5cGVzLmMu CiAgICAgICAgICAgICogaml0LmRnL3Rlc3QtYnVpbHRpbi10eXBlcy5jCgpTaWduZWQtb2ZmLWJ5 OiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KLS0tCiBnY2Mvaml0L2ppdC1idWls dGlucy5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCiBnY2Mvaml0L2ppdC1yZWNv cmRpbmcuYyAgICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKy0KIGdjYy9qaXQvaml0LXJlY29y ZGluZy5oICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysKIGdjYy90ZXN0c3VpdGUv aml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIHwgMTAgKysrKysKIGdjYy90ZXN0c3VpdGUv aml0LmRnL3Rlc3QtYnVpbHRpbi10eXBlcy5jICAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysK IDUgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWJ1aWx0aW4tdHlwZXMuYwoK ZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LWJ1aWx0aW5zLmMgYi9nY2Mvaml0L2ppdC1idWlsdGlu cy5jCmluZGV4IDFlYTk2ZjRlMDI1Li5jMjc5ZGQ4NThmOSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9q aXQtYnVpbHRpbnMuYworKysgYi9nY2Mvaml0L2ppdC1idWlsdGlucy5jCkBAIC01NDEsMTEgKzU0 MSwxMSBAQCBidWlsdGluc19tYW5hZ2VyOjptYWtlX3ByaW1pdGl2ZV90eXBlIChlbnVtIGppdF9i dWlsdGluX3R5cGUgdHlwZV9pZCkKICAgICAvLyBjYXNlIEJUX0RGTE9BVDEyODoKICAgICAvLyBj YXNlIEJUX1ZBTElTVF9SRUY6CiAgICAgLy8gY2FzZSBCVF9WQUxJU1RfQVJHOgotICAgIC8vIGNh c2UgQlRfSTE6Ci0gICAgLy8gY2FzZSBCVF9JMjoKLSAgICAvLyBjYXNlIEJUX0k0OgotICAgIC8v IGNhc2UgQlRfSTg6Ci0gICAgLy8gY2FzZSBCVF9JMTY6CisgICAgY2FzZSBCVF9JMTogcmV0dXJu IG1fY3R4dC0+Z2V0X2ludF90eXBlICgxLCB0cnVlKTsKKyAgICBjYXNlIEJUX0kyOiByZXR1cm4g bV9jdHh0LT5nZXRfaW50X3R5cGUgKDIsIHRydWUpOworICAgIGNhc2UgQlRfSTQ6IHJldHVybiBt X2N0eHQtPmdldF9pbnRfdHlwZSAoNCwgdHJ1ZSk7CisgICAgY2FzZSBCVF9JODogcmV0dXJuIG1f Y3R4dC0+Z2V0X2ludF90eXBlICg4LCB0cnVlKTsKKyAgICBjYXNlIEJUX0kxNjogcmV0dXJuIG1f Y3R4dC0+Z2V0X2ludF90eXBlICgxNiwgdHJ1ZSk7CiAgICAgLy8gY2FzZSBCVF9QVFJfQ09OU1Rf U1RSSU5HOgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXJlY29yZGluZy5jIGIv Z2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMKaW5kZXggMTE3ZmY3MDExNGMuLjJlZWNmNDRjOGRiIDEw MDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuYworKysgYi9nY2Mvaml0L2ppdC1yZWNv cmRpbmcuYwpAQCAtMjU5OCw4ICsyNTk4LDEzIEBAIHJlY29yZGluZzo6bWVtZW50b19vZl9nZXRf cG9pbnRlcjo6YWNjZXB0c193cml0ZXNfZnJvbSAodHlwZSAqcnR5cGUpCiAgICAgcmV0dXJuIGZh bHNlOwogCiAgIC8qIEl0J3MgT0sgdG8gYXNzaWduIHRvIGEgKGNvbnN0IFQgKikgZnJvbSBhIChU ICopLiAgKi8KLSAgcmV0dXJuIG1fb3RoZXJfdHlwZS0+dW5xdWFsaWZpZWQgKCkKLSAgICAtPmFj Y2VwdHNfd3JpdGVzX2Zyb20gKHJ0eXBlX3BvaW50c190byk7CisgIGlmIChtX290aGVyX3R5cGUt PnVucXVhbGlmaWVkICgpLT5hY2NlcHRzX3dyaXRlc19mcm9tIChydHlwZV9wb2ludHNfdG8pKQor ICB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICAvKiBJdCdzIE9LIHRvIGFzc2lnbiB0byBh ICh2b2xhdGlsZSBjb25zdCBUICopIGZyb20gYSAodm9sYXRpbGUgY29uc3QgVCAqKS4gKi8KKyAg cmV0dXJuIG1fb3RoZXJfdHlwZS0+aXNfc2FtZV90eXBlX2FzIChydHlwZV9wb2ludHNfdG8pOwog fQogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBwdXJlIHZpcnR1YWwgaG9vayByZWNvcmRpbmc6Om1l bWVudG86OnJlcGxheV9pbnRvCmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaCBi L2djYy9qaXQvaml0LXJlY29yZGluZy5oCmluZGV4IDRhOTk0ZmU3MDk0Li42MGFhYmEyYTI0NiAx MDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKKysrIGIvZ2NjL2ppdC9qaXQtcmVj b3JkaW5nLmgKQEAgLTU0NSw2ICs1NDUsOCBAQCBwdWJsaWM6CiAgIHZpcnR1YWwgYm9vbCBpc19m bG9hdCAoKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgYm9vbCBpc19ib29sICgpIGNvbnN0ID0gMDsK ICAgdmlydHVhbCB0eXBlICppc19wb2ludGVyICgpID0gMDsKKyAgdmlydHVhbCB0eXBlICppc192 b2xhdGlsZSAoKSB7IHJldHVybiBOVUxMOyB9CisgIHZpcnR1YWwgdHlwZSAqaXNfY29uc3QgKCkg eyByZXR1cm4gTlVMTDsgfQogICB2aXJ0dWFsIHR5cGUgKmlzX2FycmF5ICgpID0gMDsKICAgdmly dHVhbCBzdHJ1Y3RfICppc19zdHJ1Y3QgKCkgeyByZXR1cm4gTlVMTDsgfQogICB2aXJ0dWFsIGJv b2wgaXNfdm9pZCAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjg3LDYgKzY4OSwxMyBA QCBwdWJsaWM6CiAgIC8qIFN0cmlwIG9mZiB0aGUgImNvbnN0IiwgZ2l2aW5nIHRoZSB1bmRlcmx5 aW5nIHR5cGUuICAqLwogICB0eXBlICp1bnF1YWxpZmllZCAoKSBGSU5BTCBPVkVSUklERSB7IHJl dHVybiBtX290aGVyX3R5cGU7IH0KIAorICB2aXJ0dWFsIGJvb2wgaXNfc2FtZV90eXBlX2FzICh0 eXBlICpvdGhlcikKKyAgeworICAgIHJldHVybiBtX290aGVyX3R5cGUtPmlzX3NhbWVfdHlwZV9h cyAob3RoZXItPmlzX2NvbnN0ICgpKTsKKyAgfQorCisgIHZpcnR1YWwgdHlwZSAqaXNfY29uc3Qg KCkgeyByZXR1cm4gbV9vdGhlcl90eXBlOyB9CisKICAgdm9pZCByZXBsYXlfaW50byAocmVwbGF5 ZXIgKikgRklOQUwgT1ZFUlJJREU7CiAKIHByaXZhdGU6CkBAIC03MDEsOSArNzEwLDE2IEBAIHB1 YmxpYzoKICAgbWVtZW50b19vZl9nZXRfdm9sYXRpbGUgKHR5cGUgKm90aGVyX3R5cGUpCiAgIDog ZGVjb3JhdGVkX3R5cGUgKG90aGVyX3R5cGUpIHt9CiAKKyAgdmlydHVhbCBib29sIGlzX3NhbWVf dHlwZV9hcyAodHlwZSAqb3RoZXIpCisgIHsKKyAgICByZXR1cm4gbV9vdGhlcl90eXBlLT5pc19z YW1lX3R5cGVfYXMgKG90aGVyLT5pc192b2xhdGlsZSAoKSk7CisgIH0KKwogICAvKiBTdHJpcCBv ZmYgdGhlICJ2b2xhdGlsZSIsIGdpdmluZyB0aGUgdW5kZXJseWluZyB0eXBlLiAgKi8KICAgdHlw ZSAqdW5xdWFsaWZpZWQgKCkgRklOQUwgT1ZFUlJJREUgeyByZXR1cm4gbV9vdGhlcl90eXBlOyB9 CiAKKyAgdmlydHVhbCB0eXBlICppc192b2xhdGlsZSAoKSB7IHJldHVybiBtX290aGVyX3R5cGU7 IH0KKwogICB2b2lkIHJlcGxheV9pbnRvIChyZXBsYXllciAqKSBGSU5BTCBPVkVSUklERTsKIAog cHJpdmF0ZToKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGlu Zy10ZXN0cy5oIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmgK aW5kZXggYTdmZGRmOTZkYjguLmJlNGE0MWY4ZGFkIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5k Zy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaApAQCAtMTg4LDYgKzE4OCwxMyBAQAogI3VuZGVmIGNy ZWF0ZV9jb2RlCiAjdW5kZWYgdmVyaWZ5X2NvZGUKIAorLyogdGVzdC1idWlsdGluLXR5cGVzLmMg Ki8KKyNkZWZpbmUgY3JlYXRlX2NvZGUgY3JlYXRlX2NvZGVfYnVpbHRpbl90eXBlcworI2RlZmlu ZSB2ZXJpZnlfY29kZSB2ZXJpZnlfY29kZV9idWlsdGluX3R5cGVzCisjaW5jbHVkZSAidGVzdC1i dWlsdGluLXR5cGVzLmMiCisjdW5kZWYgY3JlYXRlX2NvZGUKKyN1bmRlZiB2ZXJpZnlfY29kZQor CiAvKiB0ZXN0LWhlbGxvLXdvcmxkLmMgKi8KICNkZWZpbmUgY3JlYXRlX2NvZGUgY3JlYXRlX2Nv ZGVfaGVsbG9fd29ybGQKICNkZWZpbmUgdmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVfaGVsbG9fd29y bGQKQEAgLTQwOCw2ICs0MTUsOSBAQCBjb25zdCBzdHJ1Y3QgdGVzdGNhc2UgdGVzdGNhc2VzW10g PSB7CiAgIHsiZnVuY3Rpb25zIiwKICAgIGNyZWF0ZV9jb2RlX2Z1bmN0aW9ucywKICAgIHZlcmlm eV9jb2RlX2Z1bmN0aW9uc30sCisgIHsiYnVpbHRpbi10eXBlcyIsCisgICBjcmVhdGVfY29kZV9i dWlsdGluX3R5cGVzLAorICAgdmVyaWZ5X2NvZGVfYnVpbHRpbl90eXBlc30sCiAgIHsiaGVsbG9f d29ybGQiLAogICAgY3JlYXRlX2NvZGVfaGVsbG9fd29ybGQsCiAgICB2ZXJpZnlfY29kZV9oZWxs b193b3JsZH0sCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWJ1aWx0aW4t dHlwZXMuYyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtYnVpbHRpbi10eXBlcy5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNWIwMjZjOTU5MwotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtYnVpbHRpbi10eXBlcy5jCkBAIC0w LDAgKzEsNDMgQEAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImxpYmdjY2pp dC5oIgorCisjaW5jbHVkZSAiaGFybmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2pp dF9jb250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisgIENIRUNLX05PTl9OVUxMIChn Y2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5fZnVuY3Rpb24gKGN0eHQsICJfX2F0b21pY19mZXRj aF9hZGRfNCIpKTsKKworICBnY2Nfaml0X2Z1bmN0aW9uICphdG9taWNfbG9hZCA9IGdjY19qaXRf Y29udGV4dF9nZXRfYnVpbHRpbl9mdW5jdGlvbiAoY3R4dCwgIl9fYXRvbWljX2xvYWRfOCIpOwor CisgIGdjY19qaXRfdHlwZSAqdm9pZF90eXBlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5 cGUgKGN0eHQsIEdDQ19KSVRfVFlQRV9WT0lEKTsKKyAgZ2NjX2ppdF90eXBlICpjb25zdF92b2lk X3R5cGUgPQorICAgIGdjY19qaXRfdHlwZV9nZXRfY29uc3QgKGdjY19qaXRfY29udGV4dF9nZXRf dHlwZSAoY3R4dCwgR0NDX0pJVF9UWVBFX1ZPSUQpKTsKKyAgZ2NjX2ppdF90eXBlICp2b2xhdGls ZV92b2lkX3B0ciA9CisgICAgZ2NjX2ppdF90eXBlX2dldF9wb2ludGVyIChnY2Nfaml0X3R5cGVf Z2V0X3ZvbGF0aWxlIChjb25zdF92b2lkX3R5cGUpKTsKKyAgZ2NjX2ppdF90eXBlICpsb25nX3R5 cGUgPQorICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJVF9UWVBFX0xP TkcpOworICBnY2Nfaml0X3R5cGUgKmludF90eXBlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0 X3R5cGUgKGN0eHQsIEdDQ19KSVRfVFlQRV9JTlQpOworICBnY2Nfaml0X2Z1bmN0aW9uICpmdW5j ID0KKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0LCBOVUxMLCBHQ0NfSklU X0ZVTkNUSU9OX0VYUE9SVEVELCB2b2lkX3R5cGUsICJhdG9taWNzIiwgMCwgTlVMTCwgMCk7CisK KyAgZ2NjX2ppdF9sdmFsdWUgKnZhcmlhYmxlID0gZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwg KGZ1bmMsIE5VTEwsIGxvbmdfdHlwZSwgInZhcmlhYmxlIik7CisgIGdjY19qaXRfcnZhbHVlICpi dWlsdGluX2FyZ3NbMl07CisgIGdjY19qaXRfcnZhbHVlICpwYXJhbTEgPSBnY2Nfaml0X2x2YWx1 ZV9nZXRfYWRkcmVzcyh2YXJpYWJsZSwgTlVMTCk7CisgIGJ1aWx0aW5fYXJnc1swXSA9IGdjY19q aXRfY29udGV4dF9uZXdfY2FzdChjdHh0LCBOVUxMLCBwYXJhbTEsIHZvbGF0aWxlX3ZvaWRfcHRy KTsKKyAgYnVpbHRpbl9hcmdzWzFdID0gZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9s b25nKGN0eHQsIGludF90eXBlLCAwKTsKKyAgZ2NjX2ppdF9jb250ZXh0X25ld19jYWxsIChjdHh0 LCBOVUxMLCBhdG9taWNfbG9hZCwgMiwgYnVpbHRpbl9hcmdzKTsKK30KKwordm9pZAordmVyaWZ5 X2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9yZXN1bHQgKnJlc3VsdCkKK3sK KyAgLyogVmVyaWZ5IHRoYXQgbm8gZXJyb3JzIHdlcmUgZW1pdHRlZC4gICovCisgIENIRUNLX05P Tl9OVUxMIChyZXN1bHQpOworfQotLSAKMi4yNi4yLjcuZzE5ZGI5Y2ZiNjguZGlydHkKCg== --=-mJQ9q1dovrncz61rx92T--