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 846313847821; Wed, 26 May 2021 21:58:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 846313847821 ARC-Seal: i=1; a=rsa-sha256; t=1622066285; cv=none; d=zohomail.com; s=zohoarc; b=GavUHruIY6jr4doGgdhZfc5l1c5o82L41K+jasVKZmBnlnJKkY7DfhjSLqZ80PQaj2HQ396PjhiZs1UewkfDqsILPledVSrE63VbXAYZxLzox+A1lD097etd4RQqJIzz3UklNLc8QHner+5xnQKPpYGtGKOQebkpKf1YTCJQ4XM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622066285; h=Content-Type:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=HqIsVEhiyHZaO8Ky9OOrWCpCVCqf4fv2mmgCsoKygOU=; b=hiyU3j/urxvouEmteX7Ks4OCzRH/k507ObDZf8Kht2WAAbQTGCnCz9pdfFNRum6VgJvLlb6RxS/XSdRXicPTHVVgUkivybN55mNFYcXlhlZFj9NRbIGuiozYqN4SxBg0PLQRKKKMKTULL69GZIVsZNXdkAdLNXv6yF6/4p3SKlA= 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 1622066284344806.7226972561265; Wed, 26 May 2021 14:58:04 -0700 (PDT) Message-ID: <3e29fb0d853b6df1056b7759218c330e40b4b6e2.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: Wed, 26 May 2021 17:58:02 -0400 In-Reply-To: References: <212418d2a4b81cfff1e125ddb12d0b4d10d8404a.camel@zoho.com> Content-Type: multipart/mixed; boundary="=-bxxtJyrUbniG1LG+Qvdf" User-Agent: Evolution 3.40.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-11.2 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_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Wed, 26 May 2021 21:58:11 -0000 --=-bxxtJyrUbniG1LG+Qvdf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi. Here's the new patch with the fixes requested. 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? Yes! >=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? Done. >=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. Done. >=20 > [...snip...] >=20 > Hope this is constructive > Dave >=20 --=-bxxtJyrUbniG1LG+Qvdf Content-Disposition: attachment; filename*0=0001-Add-support-for-types-used-by-atomic-builtins-PR9606.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Add-support-for-types-used-by-atomic-builtins-PR9606.patch"; charset="UTF-8" RnJvbSBiMWIwNjg4N2U1MTlhZTEwMGNiMzE4ODhmNDUxZjdhYTBiYzU1ZGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogU3VuLCA5IE1heSAyMDIxIDIwOjE0OjM3IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1 cHBvcnQgZm9yIHR5cGVzIHVzZWQgYnkgYXRvbWljIGJ1aWx0aW5zIFtQUjk2MDY2XQogW1BSOTYw NjddCgoyMDIxLTA1LTE3ICBBbnRvbmkgQm91Y2hlciAgPGJvdWFudG9Aem9oby5jb20+CgogICAg Z2NjL2ppdC8KICAgICAgICAgICAgUFIgdGFyZ2V0L1BSOTYwNjYKICAgICAgICAgICAgUFIgdGFy Z2V0L1BSOTYwNjcKICAgICAgICAgICAgKiBqaXQtYnVpbHRpbnMuYzogSW1wbGVtZW50IG1pc3Np bmcgdHlwZXMgZm9yIGJ1aWx0aW5zLgogICAgICAgICAgICAqIGppdC1yZWNvcmRpbmcuYzogQWxs b3cgc2VuZGluZyBhIHZvbGF0aWxlIGNvbnN0IHZvaWQgKiBhcwogICAgICAgICAgICBhcmd1bWVu dC4KICAgICAgICAgICAgKiBqaXQtcmVjb3JkaW5nLmg6IE5ldyBlbnVtIGRlY29yYXRlZF90eXBl X3ZhcmlhbnQsIG5ldwogICAgICAgICAgICBmdW5jdGlvbiB0eXBlOjpnZXRfdmFyaWFudCwgYW5k IG5ldyBmaWVsZCB0eXBlOjptX3ZhcmlhbnQuCiAgICBnY2MvdGVzdHN1aXRlLwogICAgICAgICAg ICBQUiB0YXJnZXQvUFI5NjA2NgogICAgICAgICAgICBQUiB0YXJnZXQvUFI5NjA2NwogICAgICAg ICAgICAqIGppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaDogQWRkIHRlc3QtYnVpbHRpbi10 eXBlcy5jLgogICAgICAgICAgICAqIGppdC5kZy90ZXN0LWJ1aWx0aW4tdHlwZXMuYzogTmV3IHRl c3QuCi0tLQogZ2NjL2ppdC9qaXQtYnVpbHRpbnMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAx MCArKy0tLQogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMgICAgICAgICAgICAgICAgICAgICAgfCAx NCArKysrKystCiBnY2Mvaml0L2ppdC1yZWNvcmRpbmcuaCAgICAgICAgICAgICAgICAgICAgICB8 IDMxICsrKysrKysrKysrKy0tLQogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5n LXRlc3RzLmggfCAxMiArKysrKy0KIGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtYnVpbHRpbi10 eXBlcy5jICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgOTQg aW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9qaXQuZGcvdGVzdC1idWlsdGluLXR5cGVzLmMKCmRpZmYgLS1naXQgYS9nY2Mvaml0 L2ppdC1idWlsdGlucy5jIGIvZ2NjL2ppdC9qaXQtYnVpbHRpbnMuYwppbmRleCAxZWE5NmY0ZTAy NS4uYzI3OWRkODU4ZjkgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LWJ1aWx0aW5zLmMKKysrIGIv Z2NjL2ppdC9qaXQtYnVpbHRpbnMuYwpAQCAtNTQxLDExICs1NDEsMTEgQEAgYnVpbHRpbnNfbWFu YWdlcjo6bWFrZV9wcmltaXRpdmVfdHlwZSAoZW51bSBqaXRfYnVpbHRpbl90eXBlIHR5cGVfaWQp CiAgICAgLy8gY2FzZSBCVF9ERkxPQVQxMjg6CiAgICAgLy8gY2FzZSBCVF9WQUxJU1RfUkVGOgog ICAgIC8vIGNhc2UgQlRfVkFMSVNUX0FSRzoKLSAgICAvLyBjYXNlIEJUX0kxOgotICAgIC8vIGNh c2UgQlRfSTI6Ci0gICAgLy8gY2FzZSBCVF9JNDoKLSAgICAvLyBjYXNlIEJUX0k4OgotICAgIC8v IGNhc2UgQlRfSTE2OgorICAgIGNhc2UgQlRfSTE6IHJldHVybiBtX2N0eHQtPmdldF9pbnRfdHlw ZSAoMSwgdHJ1ZSk7CisgICAgY2FzZSBCVF9JMjogcmV0dXJuIG1fY3R4dC0+Z2V0X2ludF90eXBl ICgyLCB0cnVlKTsKKyAgICBjYXNlIEJUX0k0OiByZXR1cm4gbV9jdHh0LT5nZXRfaW50X3R5cGUg KDQsIHRydWUpOworICAgIGNhc2UgQlRfSTg6IHJldHVybiBtX2N0eHQtPmdldF9pbnRfdHlwZSAo OCwgdHJ1ZSk7CisgICAgY2FzZSBCVF9JMTY6IHJldHVybiBtX2N0eHQtPmdldF9pbnRfdHlwZSAo MTYsIHRydWUpOwogICAgIC8vIGNhc2UgQlRfUFRSX0NPTlNUX1NUUklORzoKICAgICB9CiB9CmRp ZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuYyBiL2djYy9qaXQvaml0LXJlY29yZGlu Zy5jCmluZGV4IDExN2ZmNzAxMTRjLi43OThiZTU3YTYxMSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmMKKysrIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMKQEAgLTI1OTgsOCAr MjU5OCwxOCBAQCByZWNvcmRpbmc6Om1lbWVudG9fb2ZfZ2V0X3BvaW50ZXI6OmFjY2VwdHNfd3Jp dGVzX2Zyb20gKHR5cGUgKnJ0eXBlKQogICAgIHJldHVybiBmYWxzZTsKIAogICAvKiBJdCdzIE9L IHRvIGFzc2lnbiB0byBhIChjb25zdCBUICopIGZyb20gYSAoVCAqKS4gICovCi0gIHJldHVybiBt X290aGVyX3R5cGUtPnVucXVhbGlmaWVkICgpCi0gICAgLT5hY2NlcHRzX3dyaXRlc19mcm9tIChy dHlwZV9wb2ludHNfdG8pOworICBpZiAobV9vdGhlcl90eXBlLT51bnF1YWxpZmllZCAoKQorICAg IC0+YWNjZXB0c193cml0ZXNfZnJvbSAocnR5cGVfcG9pbnRzX3RvKSkKKyAgICByZXR1cm4gdHJ1 ZTsKKworICAvKiBJdCdzIE9LIHRvIGFzc2lnbiB0byBhICh2b2xhdGlsZSBjb25zdCBUICopIGZy b20gYSAodm9sYXRpbGUgY29uc3QgVCAqKS4gKi8KKyAgaWYgKG1fb3RoZXJfdHlwZS0+Z2V0X3Zh cmlhbnQgKCkgPT0gREVDT1JBVEVEX1RZUEVfVk9MQVRJTEUKKyAgICAgICYmIHJ0eXBlLT5nZXRf dmFyaWFudCAoKSA9PSBERUNPUkFURURfVFlQRV9WT0xBVElMRQorICAgICAgJiYgbV9vdGhlcl90 eXBlLT51bnF1YWxpZmllZCAoKS0+dW5xdWFsaWZpZWQgKCkKKyAgICAgIC0+YWNjZXB0c193cml0 ZXNfZnJvbSAocnR5cGVfcG9pbnRzX3RvLT51bnF1YWxpZmllZCAoKSkpCisgICAgcmV0dXJuIHRy dWU7CisKKyAgcmV0dXJuIGZhbHNlOwogfQogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBwdXJlIHZp cnR1YWwgaG9vayByZWNvcmRpbmc6Om1lbWVudG86OnJlcGxheV9pbnRvCmRpZmYgLS1naXQgYS9n Y2Mvaml0L2ppdC1yZWNvcmRpbmcuaCBiL2djYy9qaXQvaml0LXJlY29yZGluZy5oCmluZGV4IDAz ZmExMTYwY2YwLi44NmUxODNjMTIwMSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5n LmgKKysrIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKQEAgLTQ5Niw2ICs0OTYsMTQgQEAgcHJp dmF0ZToKICAgYm9vbCBtX2NyZWF0ZWRfYnlfdXNlcjsKIH07CiAKK2VudW0gZGVjb3JhdGVkX3R5 cGVfdmFyaWFudCB7CisgICAgTk9STUFMX1RZUEUsCisgICAgREVDT1JBVEVEX1RZUEVfQ09OU1Qs CisgICAgREVDT1JBVEVEX1RZUEVfVk9MQVRJTEUsCisgICAgREVDT1JBVEVEX1RZUEVfQUxJR05F RCwKKyAgICBERUNPUkFURURfVFlQRV9WRUNUT1IsCit9OworCiBjbGFzcyB0eXBlIDogcHVibGlj IG1lbWVudG8KIHsKIHB1YmxpYzoKQEAgLTU1NCw2ICs1NjIsMTEgQEAgcHVibGljOgogICAgIHJl dHVybiBpc19pbnQgKCkgfHwgaXNfZmxvYXQgKCkgfHwgaXNfYm9vbCAoKTsKICAgfQogCisgIGVu dW0gZGVjb3JhdGVkX3R5cGVfdmFyaWFudCBnZXRfdmFyaWFudCAoKSBjb25zdAorICB7CisgICAg cmV0dXJuIG1fdmFyaWFudDsKKyAgfQorCiAgIHBsYXliYWNrOjp0eXBlICoKICAgcGxheWJhY2tf dHlwZSAoKQogICB7CkBAIC01NjUsOSArNTc4LDEyIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg dHlwZSAoY29udGV4dCAqY3R4dCkKICAgICA6IG1lbWVudG8gKGN0eHQpLAorICAgIG1fdmFyaWFu dCAoTk9STUFMX1RZUEUpLAogICAgIG1fcG9pbnRlcl90b190aGlzX3R5cGUgKE5VTEwpCiAgIHt9 CiAKKyAgZW51bSBkZWNvcmF0ZWRfdHlwZV92YXJpYW50IG1fdmFyaWFudDsKKwogcHJpdmF0ZToK ICAgdHlwZSAqbV9wb2ludGVyX3RvX3RoaXNfdHlwZTsKIH07CkBAIC02NTIsOSArNjY4LDEyIEBA IHByaXZhdGU6CiBjbGFzcyBkZWNvcmF0ZWRfdHlwZSA6IHB1YmxpYyB0eXBlCiB7CiBwdWJsaWM6 Ci0gIGRlY29yYXRlZF90eXBlICh0eXBlICpvdGhlcl90eXBlKQorICBkZWNvcmF0ZWRfdHlwZSAo dHlwZSAqb3RoZXJfdHlwZSwgZW51bSBkZWNvcmF0ZWRfdHlwZV92YXJpYW50IHZhcmlhbnQpCiAg IDogdHlwZSAob3RoZXJfdHlwZS0+bV9jdHh0KSwKLSAgICBtX290aGVyX3R5cGUgKG90aGVyX3R5 cGUpIHt9CisgICAgbV9vdGhlcl90eXBlIChvdGhlcl90eXBlKQorICB7CisgICAgbV92YXJpYW50 ID0gdmFyaWFudDsKKyAgfQogCiAgIHR5cGUgKmRlcmVmZXJlbmNlICgpIEZJTkFMIE9WRVJSSURF IHsgcmV0dXJuIG1fb3RoZXJfdHlwZS0+ZGVyZWZlcmVuY2UgKCk7IH0KIApAQCAtNjczLDcgKzY5 Miw3IEBAIGNsYXNzIG1lbWVudG9fb2ZfZ2V0X2NvbnN0IDogcHVibGljIGRlY29yYXRlZF90eXBl CiB7CiBwdWJsaWM6CiAgIG1lbWVudG9fb2ZfZ2V0X2NvbnN0ICh0eXBlICpvdGhlcl90eXBlKQot ICA6IGRlY29yYXRlZF90eXBlIChvdGhlcl90eXBlKSB7fQorICA6IGRlY29yYXRlZF90eXBlIChv dGhlcl90eXBlLCBERUNPUkFURURfVFlQRV9DT05TVCkge30KIAogICBib29sIGFjY2VwdHNfd3Jp dGVzX2Zyb20gKHR5cGUgKi8qcnR5cGUqLykgRklOQUwgT1ZFUlJJREUKICAgewpAQCAtNjk2LDcg KzcxNSw3IEBAIGNsYXNzIG1lbWVudG9fb2ZfZ2V0X3ZvbGF0aWxlIDogcHVibGljIGRlY29yYXRl ZF90eXBlCiB7CiBwdWJsaWM6CiAgIG1lbWVudG9fb2ZfZ2V0X3ZvbGF0aWxlICh0eXBlICpvdGhl cl90eXBlKQotICA6IGRlY29yYXRlZF90eXBlIChvdGhlcl90eXBlKSB7fQorICA6IGRlY29yYXRl ZF90eXBlIChvdGhlcl90eXBlLCBERUNPUkFURURfVFlQRV9WT0xBVElMRSkge30KIAogICAvKiBT dHJpcCBvZmYgdGhlICJ2b2xhdGlsZSIsIGdpdmluZyB0aGUgdW5kZXJseWluZyB0eXBlLiAgKi8K ICAgdHlwZSAqdW5xdWFsaWZpZWQgKCkgRklOQUwgT1ZFUlJJREUgeyByZXR1cm4gbV9vdGhlcl90 eXBlOyB9CkBAIC03MTMsNyArNzMyLDcgQEAgY2xhc3MgbWVtZW50b19vZl9nZXRfYWxpZ25lZCA6 IHB1YmxpYyBkZWNvcmF0ZWRfdHlwZQogewogcHVibGljOgogICBtZW1lbnRvX29mX2dldF9hbGln bmVkICh0eXBlICpvdGhlcl90eXBlLCBzaXplX3QgYWxpZ25tZW50X2luX2J5dGVzKQotICA6IGRl Y29yYXRlZF90eXBlIChvdGhlcl90eXBlKSwKKyAgOiBkZWNvcmF0ZWRfdHlwZSAob3RoZXJfdHlw ZSwgREVDT1JBVEVEX1RZUEVfQUxJR05FRCksCiAgICAgbV9hbGlnbm1lbnRfaW5fYnl0ZXMgKGFs aWdubWVudF9pbl9ieXRlcykge30KIAogICAvKiBTdHJpcCBvZmYgdGhlIGFsaWdubWVudCwgZ2l2 aW5nIHRoZSB1bmRlcmx5aW5nIHR5cGUuICAqLwpAQCAtNzM0LDcgKzc1Myw3IEBAIGNsYXNzIHZl Y3Rvcl90eXBlIDogcHVibGljIGRlY29yYXRlZF90eXBlCiB7CiBwdWJsaWM6CiAgIHZlY3Rvcl90 eXBlICh0eXBlICpvdGhlcl90eXBlLCBzaXplX3QgbnVtX3VuaXRzKQotICA6IGRlY29yYXRlZF90 eXBlIChvdGhlcl90eXBlKSwKKyAgOiBkZWNvcmF0ZWRfdHlwZSAob3RoZXJfdHlwZSwgREVDT1JB VEVEX1RZUEVfVkVDVE9SKSwKICAgICBtX251bV91bml0cyAobnVtX3VuaXRzKSB7fQogCiAgIHNp emVfdCBnZXRfbnVtX3VuaXRzICgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtX3VuaXRzOyB9CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaCBiL2dj Yy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oCmluZGV4IDQyMDJlYjc3 OThiLi40NWEwYThjMmFiYyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5v bi1mYWlsaW5nLXRlc3RzLmgKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWls aW5nLXRlc3RzLmgKQEAgLTE4MSw2ICsxODEsMTMgQEAKICN1bmRlZiBjcmVhdGVfY29kZQogI3Vu ZGVmIHZlcmlmeV9jb2RlCiAKKy8qIHRlc3QtYnVpbHRpbi10eXBlcy5jICovCisjZGVmaW5lIGNy ZWF0ZV9jb2RlIGNyZWF0ZV9jb2RlX2J1aWx0aW5fdHlwZXMKKyNkZWZpbmUgdmVyaWZ5X2NvZGUg dmVyaWZ5X2NvZGVfYnVpbHRpbl90eXBlcworI2luY2x1ZGUgInRlc3QtYnVpbHRpbi10eXBlcy5j IgorI3VuZGVmIGNyZWF0ZV9jb2RlCisjdW5kZWYgdmVyaWZ5X2NvZGUKKwogLyogdGVzdC1oZWxs by13b3JsZC5jICovCiAjZGVmaW5lIGNyZWF0ZV9jb2RlIGNyZWF0ZV9jb2RlX2hlbGxvX3dvcmxk CiAjZGVmaW5lIHZlcmlmeV9jb2RlIHZlcmlmeV9jb2RlX2hlbGxvX3dvcmxkCkBAIC00NDQsNyAr NDUxLDEwIEBAIGNvbnN0IHN0cnVjdCB0ZXN0Y2FzZSB0ZXN0Y2FzZXNbXSA9IHsKICAgIHZlcmlm eV9jb2RlX3ZlcnNpb259LAogICB7InZvbGF0aWxlIiwKICAgIGNyZWF0ZV9jb2RlX3ZvbGF0aWxl LAotICAgdmVyaWZ5X2NvZGVfdm9sYXRpbGV9CisgICB2ZXJpZnlfY29kZV92b2xhdGlsZX0sCisg IHsiYnVpbHRpbi10eXBlcyIsCisgICBjcmVhdGVfY29kZV9idWlsdGluX3R5cGVzLAorICAgdmVy aWZ5X2NvZGVfYnVpbHRpbl90eXBlc30KIH07CiAKIGNvbnN0IGludCBudW1fdGVzdGNhc2VzID0g KHNpemVvZiAodGVzdGNhc2VzKSAvIHNpemVvZiAodGVzdGNhc2VzWzBdKSk7CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWJ1aWx0aW4tdHlwZXMuYyBiL2djYy90ZXN0c3Vp dGUvaml0LmRnL3Rlc3QtYnVpbHRpbi10eXBlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5lMjBkNzE1NzFiNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvaml0LmRnL3Rlc3QtYnVpbHRpbi10eXBlcy5jCkBAIC0wLDAgKzEsNDEgQEAKKyNpbmNsdWRl IDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu Y2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorCisjaW5jbHVkZSAiaGFy bmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2b2lk ICp1c2VyX2RhdGEpCit7CisgIENIRUNLX05PTl9OVUxMIChnY2Nfaml0X2NvbnRleHRfZ2V0X2J1 aWx0aW5fZnVuY3Rpb24gKGN0eHQsICJfX2F0b21pY19mZXRjaF9hZGRfNCIpKTsKKworICBnY2Nf aml0X2Z1bmN0aW9uICphdG9taWNfbG9hZCA9IGdjY19qaXRfY29udGV4dF9nZXRfYnVpbHRpbl9m dW5jdGlvbiAoY3R4dCwgIl9fYXRvbWljX2xvYWRfOCIpOworCisgIGdjY19qaXRfdHlwZSAqdm9s YXRpbGVfdm9pZF9wdHIgPQorICAgIGdjY19qaXRfdHlwZV9nZXRfdm9sYXRpbGUoZ2NjX2ppdF90 eXBlX2dldF9jb25zdChnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIEdDQ19KSVRfVFlQ RV9WT0lEX1BUUikpKTsKKyAgZ2NjX2ppdF90eXBlICp2b2lkX3R5cGUgPQorICAgIGdjY19qaXRf Y29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJVF9UWVBFX1ZPSUQpOworICBnY2Nfaml0X3R5 cGUgKmxvbmdfdHlwZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCBHQ0Nf SklUX1RZUEVfTE9ORyk7CisgIGdjY19qaXRfdHlwZSAqaW50X3R5cGUgPQorICAgIGdjY19qaXRf Y29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJVF9UWVBFX0lOVCk7CisgIGdjY19qaXRfZnVu Y3Rpb24gKmZ1bmMgPQorICAgIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24gKGN0eHQsIE5V TEwsIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsIHZvaWRfdHlwZSwgImF0b21pY3MiLCAwLCBO VUxMLCAwKTsKKworICBnY2Nfaml0X2x2YWx1ZSAqdmFyaWFibGUgPSBnY2Nfaml0X2Z1bmN0aW9u X25ld19sb2NhbCAoZnVuYywgTlVMTCwgbG9uZ190eXBlLCAidmFyaWFibGUiKTsKKyAgZ2NjX2pp dF9ydmFsdWUgKmJ1aWx0aW5fYXJnc1syXTsKKyAgZ2NjX2ppdF9ydmFsdWUgKnBhcmFtMSA9IGdj Y19qaXRfbHZhbHVlX2dldF9hZGRyZXNzKHZhcmlhYmxlLCBOVUxMKTsKKyAgYnVpbHRpbl9hcmdz WzBdID0gZ2NjX2ppdF9jb250ZXh0X25ld19jYXN0KGN0eHQsIE5VTEwsIHBhcmFtMSwgdm9sYXRp bGVfdm9pZF9wdHIpOworICBidWlsdGluX2FyZ3NbMV0gPSBnY2Nfaml0X2NvbnRleHRfbmV3X3J2 YWx1ZV9mcm9tX2xvbmcoY3R4dCwgaW50X3R5cGUsIDApOworICBnY2Nfaml0X2NvbnRleHRfbmV3 X2NhbGwgKGN0eHQsIE5VTEwsIGF0b21pY19sb2FkLCAyLCBidWlsdGluX2FyZ3MpOworfQorCit2 b2lkCit2ZXJpZnlfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAq cmVzdWx0KQoreworICAvKiBWZXJpZnkgdGhhdCBubyBlcnJvcnMgd2VyZSBlbWl0dGVkLiAgKi8K KyAgQ0hFQ0tfTk9OX05VTEwgKHJlc3VsdCk7Cit9Ci0tIAoyLjMxLjEKCg== --=-bxxtJyrUbniG1LG+Qvdf--