From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by sourceware.org (Postfix) with ESMTPS id 13DEA3857BBE; Mon, 30 May 2022 20:53:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 13DEA3857BBE X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.178.29] ([93.207.86.156]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MIx3C-1oGBah3QKY-00KSf5; Mon, 30 May 2022 22:53:25 +0200 Content-Type: multipart/mixed; boundary="------------uXpCTRGdxKOeLT33gmO1VkWM" Message-ID: <8f8592d1-93b0-5092-dcf7-62b91dd5a767@gmx.de> Date: Mon, 30 May 2022 22:53:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: [PATCH] Fortran: improve runtime error message with ALLOCATE and, ERRMSG= [PR91300] Content-Language: en-US To: Tobias Burnus , fortran , gcc-patches Newsgroups: gmane.comp.gcc.patches,gmane.comp.gcc.fortran References: <3480e229-b8af-905a-b33a-bc10751fc933@codesourcery.com> From: Harald Anlauf In-Reply-To: <3480e229-b8af-905a-b33a-bc10751fc933@codesourcery.com> X-Provags-ID: V03:K1:n4rrGrykYqvJJmvmBSc5fn8lkxE1CVgPP7JB2tTZSGU3BXkY50I TsHQUXAnhlHPTinOOZIGHm8skAEhBhzj2DFXpoHQy1TTotp6NVsf2rvoRr1iOcrynwUjta8 rQNgUEJ2f9Zdw1mtv0yJ5FBCf6OIxLb4BiUILgjhXFZn8Pu1+qf4jD3KpCvjNc6sXwQEOlp cTyS7uY84eoRkYk919jFQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:56b1tZfwCjE=:soNoT8+WPte4dAQkfoe4kc t32//7QetPs0mRLObXPYS8sCaWXSHV5V78b5H2HZsk1B9r4BuYznSZcISOwoAWZ3HsunAQYEG OruBlBkBX8mQQ5ZCQlwD7c1B3LT9wqIxf2yFzgvnTHI6PgnHE3JzonymLTL8H3s7ukIMJh4fB Br3jlZm6UXbCfRVpUvtt75cEwKEKjDFiiZ+rkObP+4dUH6lOHCkDaX4C9vj7dqHPFU/y19TtA TvA4A5f/Gf7fwXhlg686FwhumHEu4XsHko1HIf/suY9i0MjPItttvP9q8Gs/z2RDntWlznHBS c3/y12MSMv/cr1vOSKqlbH9qxoLFLegr4N5LO2jjcxmXkgUl4hzbSrNEzb9H1JcnxpdEoPT3J /R09oqPUgqOAssrRkdMfdXrR4gMdkOsjhAiO+YGvRskB3OE+YO8WLtSgaEcGqK08FTJjg3J7V jVYQPJpgSvpjKYs8i5ofBKcvhU+Cqw6U0P0onKlLcXWIgZAYlUfCBoZFH410w143a/2VZnrZu UQMKRcpqlTzk5NDDj2eeRpcBOmP4qT1bqKl5CpFdc0j3tR9MO29M777N6G2f9d0grP7eCs9v7 HN0yKpbMJg6w8dfbvUzBXRZ1EuCoOvbKPjXJnvcIegDVqK3FU3jM4R97eb85DLg8QCN56W+QQ l+YUDWUmZyEv0/i6EFKQrY/aCJZlqt8JR/wRbC3J9+r5US5JEovkvKnROsrZ86ziOoI1MSZOv tyecCv9XnbszZpW1fDMIkqYzo9Fa3YvhrxvzPg75YW8DwygYHtPBSaJ1xYzgphFgOkOb7x8UM KSBnYkiA/WRdk3IZR17VSeFLZafJ5vGdHzfvbzRLLUuYLOOOy9UNnY2kMLsNqsCJYTU+Cn11V ItQkFH6cZ2tIpB1H5nDVva5bUBs36ECXx7G9IWPp+HaL+nqJPhv6yNR9rtzzPGUmn6W8ux17d pX4+jKUShADIjafNq4L50Sk2fzOfsz2XW46DgVLh9GVieOX4TjkFss5oqiXKjvGZdefPAIbIF 6DYmyeiFou10gYwHps3SQWwDwUy1Wmr8L2uf1AvVdCWC171b+t3/em2tst5GV1BMfeqBoUIwG UpErwOwAcgbojaenll1xJR/Iiq5Io6NaEVx3r0GfMhYP82unuIhebq6CQ== X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 May 2022 20:53:33 -0000 This is a multi-part message in MIME format. --------------uXpCTRGdxKOeLT33gmO1VkWM Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Tobias, Am 30.05.22 um 09:33 schrieb Tobias Burnus: > On 28.05.22 22:25, Harald Anlauf via Fortran wrote: >> the PR rightfully complained that we did not differentiate errors on >> ALLOCATE(...,stat=3D,errmsg=3D) for failures from allocation of already >> allocated objects or insufficient virtual memory. > It is even worse: The error message states the wrong reason. >> The attached patch introduces a new STAT value LIBERROR_NO_MEMORY >> that is returned for insufficient virtual memory, and a corresponding >> (simple and invariant) ERRMSG: "Insufficient virtual memory". > I think the message is fine =E2=80=93 at least on Linux 'virtual memory'= is > what's used and it is clear what's meant, even if I stumble a bit about > the wording. (But do not have a crisp short & comprehensive wording > myself.) for reference these are the messages of selected compilers: ifort: insufficient virtual memory nag: Out of memory crayftn: The program was unable to request more memory space. And since Intel's message for attempting to allocate an already allocated object was closest to gfortran's version, and Cray is far too verbose for my taste, I threw mental dice between Intel and NAG, and Intel won. >> (In the PR Janne mentions checking for errno, but since the standard >> malloc(3) only mentions ENOMEM as possible error value, and the user >> may replace malloc by a special library, I believe that won't be easy >> to handle in a general way.) > I con concur. Especially as POSIX and the Linux manpage only list ENOMEM > as only value. >> Most compilers I tried (Intel/NAG/Crayftn) behave similarly, except >> for Nvidia/Flang, which try to return the size of the allocation in >> the error message. >> >> I am not sure that this is worth the effort. > I think it is not needed =E2=80=93 especially as we generate the message= in the > FE and not in libgfortran. The advantage for the users is that they know > what value has been requested =E2=80=93 but they cannot really do much w= ith the > knowledge, either. Thanks for confirming this. >> The testcase should be able to handle 32 and 64 bit systems. >> At least that's what I think. > > I hope it is =E2=80=93 at least on 64bit, I currently expect it too fail > somewhat reliably, with 32bit I think it won't =E2=80=93 but that's also= handled. > > But you could add a -fdump-tree-original + '! { dg-final { > scan-tree-dump*' to do some checking in addition (e.g. whether both > strings appear in the dump; could be more complex, but that's probably > not needed). > >> Regtested on x86_64-pc-linux-gnu.=C2=A0 OK for mainline?=C2=A0 Suggesti= ons? > > LGTM =E2=80=93 with considering comments on the testcase. > > >> Fortran: improve runtime error message with ALLOCATE and ERRMSG=3D > > Consider appending [PR91300] in that line =E2=80=93 and try to make the > gcc-patches@ and fortran@ lines the same > > (Searching for the PR number or case-insignificantly for the string in > the mailing list archive, will fine the message; thus, that's okay.) OK, will do from now on. My visual parsing and reading ability of subject lines is not really positive-correlated with their machine- readability, but then gcc-patches@ is not what I'm reading... ;-) (I consider it basically a write-only list). >> ALLOCATE: generate different STAT,ERRMSG results for failures from >> allocation of already allocated objects or insufficient virtual memory. >> >> gcc/fortran/ChangeLog: >> >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PR fortran/91300 >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * libgfortran.h: Define new error code L= IBERROR_NO_MEMORY. >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * trans-stmt.cc (gfc_trans_allocate): Ge= nerate code for setting >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ERRMSG depending on result of STAT resul= t of ALLOCATE. >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * trans.cc (gfc_allocate_using_malloc): = Use STAT value of >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LIBERROR_NO_MEMORY in case of failed mal= loc. >> >> gcc/testsuite/ChangeLog: >> >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PR fortran/91300 >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * gfortran.dg/allocate_alloc_opt_15.f90:= New test. >> --- > ... > >> +=C2=A0 stat1=C2=A0=C2=A0 =3D -1 >> +=C2=A0 errmsg1 =3D "" >> +=C2=A0 allocate (array(1), stat=3Dstat1, errmsg=3Derrmsg1) >> +=C2=A0 if (stat1=C2=A0=C2=A0 /=3D=C2=A0 0) stop 1 >> +=C2=A0 if (errmsg1 /=3D "") stop 1 > Consider to init the errmsg1 and then check that is has not been > touched. (For completeness, I think we already have such tests). >> +=C2=A0 ! Obtain stat,errmsg for attempt to allocate an allocated objec= t >> +=C2=A0 allocate (array(1), stat=3Dstat1, errmsg=3Derrmsg1) >> +=C2=A0 if (stat1=C2=A0=C2=A0 =3D=3D=C2=A0 0) stop 2 >> +=C2=A0 if (errmsg1 =3D=3D "") stop 2 > Consider to check (either here or as a third test) for the > gfortran-specific error message. >> +=C2=A0 stat2=C2=A0=C2=A0 =3D -1 >> +=C2=A0 errmsg2 =3D "" >> +=C2=A0 ! Try to allocate very large object >> +=C2=A0 allocate (bigarray(bignumber), stat=3Dstat2, errmsg=3Derrmsg2) >> +=C2=A0 if (stat2 /=3D 0) then >> +=C2=A0=C2=A0=C2=A0=C2=A0 print *, "stat=C2=A0 =3D", stat1 >> +=C2=A0=C2=A0=C2=A0=C2=A0 print *, "errmsg: ", trim (errmsg1) >> +=C2=A0=C2=A0=C2=A0=C2=A0 print *, "stat=C2=A0 =3D", stat2 >> +=C2=A0=C2=A0=C2=A0=C2=A0 print *, "errmsg: ", trim (errmsg2) >> +=C2=A0=C2=A0=C2=A0=C2=A0 ! Ensure different results for stat, errmsg v= ariables >> +=C2=A0=C2=A0=C2=A0=C2=A0 if (stat2=C2=A0=C2=A0 =3D=3D stat1=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ) stop 3 >> +=C2=A0=C2=A0=C2=A0=C2=A0 if (errmsg2 =3D=3D "" .or. errmsg2 =3D=3D err= msg1) stop 4 > > Likewise for errmsg2 I've adjusted the testcase as suggested and hardened it somewhat against strange options like -fdefault-integer-8 -fdefault-real-8. Committed and pushed as attached. Thanks for the review! Harald > Thanks, > > 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 Gesellschaft: M=C3=BCnchen; > Registergericht M=C3=BCnchen, HRB 106955 > --------------uXpCTRGdxKOeLT33gmO1VkWM Content-Type: text/x-patch; charset=UTF-8; name="0001-Fortran-improve-runtime-error-message-with-ALLOCATE-.patch" Content-Disposition: attachment; filename*0="0001-Fortran-improve-runtime-error-message-with-ALLOCATE-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4NzFkYmI2MTEyZTIyZmY5MjkxNDYxM2MzMzI5NDRmZDE5ZGQzOWE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBTYXQsIDI4IE1heSAyMDIyIDIyOjAyOjIwICswMjAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogaW1wcm92ZSBydW50aW1lIGVycm9yIG1lc3NhZ2Ugd2l0aCBBTExPQ0FURSBh bmQKIEVSUk1TRz0gW1BSOTEzMDBdCgpBTExPQ0FURTogZ2VuZXJhdGUgZGlmZmVyZW50IFNU QVQsRVJSTVNHIHJlc3VsdHMgZm9yIGZhaWx1cmVzIGZyb20KYWxsb2NhdGlvbiBvZiBhbHJl YWR5IGFsbG9jYXRlZCBvYmplY3RzIG9yIGluc3VmZmljaWVudCB2aXJ0dWFsIG1lbW9yeS4K CmdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKCglQUiBmb3J0cmFuLzkxMzAwCgkqIGxpYmdmb3J0 cmFuLmg6IERlZmluZSBuZXcgZXJyb3IgY29kZSBMSUJFUlJPUl9OT19NRU1PUlkuCgkqIHRy YW5zLXN0bXQuY2MgKGdmY190cmFuc19hbGxvY2F0ZSk6IEdlbmVyYXRlIGNvZGUgZm9yIHNl dHRpbmcKCUVSUk1TRyBkZXBlbmRpbmcgb24gcmVzdWx0IG9mIFNUQVQgcmVzdWx0IG9mIEFM TE9DQVRFLgoJKiB0cmFucy5jYyAoZ2ZjX2FsbG9jYXRlX3VzaW5nX21hbGxvYyk6IFVzZSBT VEFUIHZhbHVlIG9mCglMSUJFUlJPUl9OT19NRU1PUlkgaW4gY2FzZSBvZiBmYWlsZWQgbWFs bG9jLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJUFIgZm9ydHJhbi85MTMwMAoJKiBn Zm9ydHJhbi5kZy9hbGxvY2F0ZV9hbGxvY19vcHRfMTUuZjkwOiBOZXcgdGVzdC4KLS0tCiBn Y2MvZm9ydHJhbi9saWJnZm9ydHJhbi5oICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBn Y2MvZm9ydHJhbi90cmFucy1zdG10LmNjICAgICAgICAgICAgICAgICAgICAgfCAzMyArKysr KysrKysrKy0tCiBnY2MvZm9ydHJhbi90cmFucy5jYyAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCArLQogLi4uL2dmb3J0cmFuLmRnL2FsbG9jYXRlX2FsbG9jX29wdF8xNS5mOTAg ICAgIHwgNDkgKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvYWxsb2NhdGVfYWxsb2Nfb3B0XzE1LmY5MAoKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL2xpYmdmb3J0cmFuLmggYi9nY2MvZm9ydHJhbi9saWJnZm9ydHJh bi5oCmluZGV4IDA2NDc5NWViNDY5Li40MzI4NDQ3YmUwNCAxMDA2NDQKLS0tIGEvZ2NjL2Zv cnRyYW4vbGliZ2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJhbi9saWJnZm9ydHJhbi5oCkBA IC0xMzMsNiArMTMzLDcgQEAgdHlwZWRlZiBlbnVtCiAgIExJQkVSUk9SX0NPUlJVUFRfRklM RSwKICAgTElCRVJST1JfSU5RVUlSRV9JTlRFUk5BTF9VTklULCAvKiBNdXN0IGJlIGRpZmZl cmVudCBmcm9tIFNUQVRfU1RPUFBFRF9JTUFHRS4gICovCiAgIExJQkVSUk9SX0JBRF9XQUlU X0lELAorICBMSUJFUlJPUl9OT19NRU1PUlksCiAgIExJQkVSUk9SX0xBU1QJCQkvKiBOb3Qg YSByZWFsIGVycm9yLCB0aGUgbGFzdCBlcnJvciAjICsgMS4gICovCiB9CiBsaWJnZm9ydHJh bl9lcnJvcl9jb2RlczsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuY2Mg Yi9nY2MvZm9ydHJhbi90cmFucy1zdG10LmNjCmluZGV4IDc5MDk2ODE2YzZlLi5mZDZkMjk0 MTQ3ZSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jYworKysgYi9nY2Mv Zm9ydHJhbi90cmFucy1zdG10LmNjCkBAIC03MTMwLDcgKzcxMzAsOCBAQCBnZmNfdHJhbnNf YWxsb2NhdGUgKGdmY19jb2RlICogY29kZSkKICAgaWYgKGNvZGUtPmV4cHIxICYmIGNvZGUt PmV4cHIyKQogICAgIHsKICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJBdHRlbXB0IHRvIGFs bG9jYXRlIGFuIGFsbG9jYXRlZCBvYmplY3QiOwotICAgICAgdHJlZSBzbGVuLCBkbGVuLCBl cnJtc2dfc3RyOworICAgICAgY29uc3QgY2hhciAqb29tbXNnID0gIkluc3VmZmljaWVudCB2 aXJ0dWFsIG1lbW9yeSI7CisgICAgICB0cmVlIHNsZW4sIGRsZW4sIGVycm1zZ19zdHIsIG9v bV9zdHIsIG9vbV9sb2M7CiAgICAgICBzdG10YmxvY2tfdCBlcnJtc2dfYmxvY2s7CiAKICAg ICAgIGdmY19pbml0X2Jsb2NrICgmZXJybXNnX2Jsb2NrKTsKQEAgLTcxNTEsOCArNzE1Miwz NCBAQCBnZmNfdHJhbnNfYWxsb2NhdGUgKGdmY19jb2RlICogY29kZSkKIAkJCSAgICAgZ2Zj X2RlZmF1bHRfY2hhcmFjdGVyX2tpbmQpOwogICAgICAgZGxlbiA9IGdmY19maW5pc2hfYmxv Y2sgKCZlcnJtc2dfYmxvY2spOwogCi0gICAgICB0bXAgPSBmb2xkX2J1aWxkMl9sb2MgKGlu cHV0X2xvY2F0aW9uLCBORV9FWFBSLCBsb2dpY2FsX3R5cGVfbm9kZSwKLQkJCSAgICAgc3Rh dCwgYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFIChzdGF0KSwgMCkpOworICAgICAgdG1wID0g Zm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgRVFfRVhQUiwgbG9naWNhbF90eXBl X25vZGUsCisJCQkgICAgIHN0YXQsIGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAoc3RhdCks CisJCQkJCQkgIExJQkVSUk9SX0FMTE9DQVRJT04pKTsKKworICAgICAgdG1wID0gYnVpbGQz X3YgKENPTkRfRVhQUiwgdG1wLAorCQkgICAgICBkbGVuLCBidWlsZF9lbXB0eV9zdG10IChp bnB1dF9sb2NhdGlvbikpOworCisgICAgICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZibG9j aywgdG1wKTsKKworICAgICAgb29tX3N0ciA9IGdmY19jcmVhdGVfdmFyIChwY2hhcl90eXBl X25vZGUsICJPT01NU0ciKTsKKyAgICAgIG9vbV9sb2MgPSBnZmNfYnVpbGRfbG9jYWxpemVk X2NzdHJpbmdfY29uc3QgKG9vbW1zZyk7CisgICAgICBnZmNfYWRkX21vZGlmeSAoJmVycm1z Z19ibG9jaywgb29tX3N0ciwKKwkJICAgICAgZ2ZjX2J1aWxkX2FkZHJfZXhwciAocGNoYXJf dHlwZV9ub2RlLCBvb21fbG9jKSk7CisKKyAgICAgIHNsZW4gPSBidWlsZF9pbnRfY3N0IChn ZmNfY2hhcmxlbl90eXBlX25vZGUsIHN0cmxlbiAob29tbXNnKSk7CisgICAgICBkbGVuID0g Z2ZjX2dldF9leHByX2NoYXJsZW4gKGNvZGUtPmV4cHIyKTsKKyAgICAgIHNsZW4gPSBmb2xk X2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNSU5fRVhQUiwKKwkJCSAgICAgIFRSRUVf VFlQRSAoc2xlbiksIGRsZW4sIHNsZW4pOworCisgICAgICBnZmNfdHJhbnNfc3RyaW5nX2Nv cHkgKCZlcnJtc2dfYmxvY2ssIGRsZW4sIGVycm1zZywKKwkJCSAgICAgY29kZS0+ZXhwcjIt PnRzLmtpbmQsCisJCQkgICAgIHNsZW4sIG9vbV9zdHIsCisJCQkgICAgIGdmY19kZWZhdWx0 X2NoYXJhY3Rlcl9raW5kKTsKKyAgICAgIGRsZW4gPSBnZmNfZmluaXNoX2Jsb2NrICgmZXJy bXNnX2Jsb2NrKTsKKworICAgICAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2Nh dGlvbiwgRVFfRVhQUiwgbG9naWNhbF90eXBlX25vZGUsCisJCQkgICAgIHN0YXQsIGJ1aWxk X2ludF9jc3QgKFRSRUVfVFlQRSAoc3RhdCksCisJCQkJCQkgIExJQkVSUk9SX05PX01FTU9S WSkpOwogCiAgICAgICB0bXAgPSBidWlsZDNfdiAoQ09ORF9FWFBSLCB0bXAsCiAJCSAgICAg IGRsZW4sIGJ1aWxkX2VtcHR5X3N0bXQgKGlucHV0X2xvY2F0aW9uKSk7CmRpZmYgLS1naXQg YS9nY2MvZm9ydHJhbi90cmFucy5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLmNjCmluZGV4IGYw YTVkZmI1MGZjLi45MTJhMjA2ZjJlZCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMu Y2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuY2MKQEAgLTc3Miw3ICs3NzIsNyBAQCBnZmNf Y2FsbF9tYWxsb2MgKHN0bXRibG9ja190ICogYmxvY2ssIHRyZWUgdHlwZSwgdHJlZSBzaXpl KQogICAgICAgaWYgKG5ld21lbSA9PSBOVUxMKQogICAgICAgewogICAgICAgICBpZiAoc3Rh dCkKLSAgICAgICAgICAqc3RhdCA9IExJQkVSUk9SX0FMTE9DQVRJT047CisJICAqc3RhdCA9 IExJQkVSUk9SX05PX01FTU9SWTsKICAgICAgICAgZWxzZQogCSAgcnVudGltZV9lcnJvciAo IkFsbG9jYXRpb24gd291bGQgZXhjZWVkIG1lbW9yeSBsaW1pdCIpOwogICAgICAgfQpAQCAt ODA3LDcgKzgwNyw3IEBAIGdmY19hbGxvY2F0ZV91c2luZ19tYWxsb2MgKHN0bXRibG9ja190 ICogYmxvY2ssIHRyZWUgcG9pbnRlciwKICAgaWYgKHN0YXR1cyAhPSBOVUxMX1RSRUUpCiAg ICAgewogICAgICAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTU9E SUZZX0VYUFIsIHN0YXR1c190eXBlLCBzdGF0dXMsCi0JCQkgICAgIGJ1aWxkX2ludF9jc3Qg KHN0YXR1c190eXBlLCBMSUJFUlJPUl9BTExPQ0FUSU9OKSk7CisJCQkgICAgIGJ1aWxkX2lu dF9jc3QgKHN0YXR1c190eXBlLCBMSUJFUlJPUl9OT19NRU1PUlkpKTsKICAgICAgIGdmY19h ZGRfZXhwcl90b19ibG9jayAoJm9uX2Vycm9yLCB0bXApOwogICAgIH0KICAgZWxzZQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9hbGxvY2F0ZV9hbGxvY19vcHRf MTUuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9hbGxvY2F0ZV9hbGxvY19vcHRf MTUuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYzI2ZTgx NzljYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvYWxs b2NhdGVfYWxsb2Nfb3B0XzE1LmY5MApAQCAtMCwwICsxLDQ5IEBACishIHsgZGctZG8gcnVu IH0KKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLW9yaWdpbmFsIiB9 CishIFBSIGZvcnRyYW4vOTEzMDAgLSBydW50aW1lIGVycm9yIG1lc3NhZ2Ugd2l0aCBhbGxv Y2F0ZSBhbmQgZXJybXNnPQorISBDb250cmlidXRlZCBieSB6ZWQudGhyZWUKKworcHJvZ3Jh bSBiaWdhcnJheV9wcm9nCisgIHVzZSwgaW50cmluc2ljIDo6IGlzb19jX2JpbmRpbmcsIG9u bHk6IENfSU5UUFRSX1QKKyAgaW1wbGljaXQgbm9uZQorICByZWFsKDQpLCBkaW1lbnNpb24o OiksIGFsbG9jYXRhYmxlIDo6IGFycmF5LCBiaWdhcnJheQorICBpbnRlZ2VyICAgICAgICAg ICAgICAgICA6OiBzdGF0MSwgc3RhdDIKKyAgY2hhcmFjdGVyKGxlbj0xMDApICAgICAgOjog ZXJybXNnMSwgZXJybXNnMgorICBjaGFyYWN0ZXIoKiksIHBhcmFtZXRlciA6OiBub19lcnJv ciA9ICJubyBlcnJvciIKKyAgaW50ZWdlcig4KSwgcGFyYW1ldGVyIDo6IG4xID0gaHVnZSAo MV80KSAvIDMgICAgICAgICAgISByZXF1ZXN0IG1vcmUgdGhhbiAyR0IKKyAgaW50ZWdlcig4 KSwgcGFyYW1ldGVyIDo6IG4yID0gaHVnZSAoMV9DX0lOVFBUUl9UKSAvIDQgISAic2FmZSIg Zm9yIDY0Yml0CisgIGludGVnZXIoOCksIHBhcmFtZXRlciA6OiBiaWdudW1iZXIgPSBtYXgg KG4xLCBuMikKKworICBzdGF0MSAgID0gLTEKKyAgc3RhdDIgICA9IC0xCisgIGVycm1zZzEg PSBub19lcnJvcgorICBlcnJtc2cyID0gbm9fZXJyb3IKKyAgYWxsb2NhdGUgKGFycmF5KDEp LCBzdGF0PXN0YXQxLCBlcnJtc2c9ZXJybXNnMSkKKyAgaWYgKHN0YXQxICAgLz0gMCAgICAg ICApIHN0b3AgMQorICBpZiAoZXJybXNnMSAvPSBub19lcnJvcikgc3RvcCAxCisKKyAgISBP YnRhaW4gc3RhdCwgZXJybXNnIGZvciBhdHRlbXB0IHRvIGFsbG9jYXRlIGFuIGFsbG9jYXRl ZCBvYmplY3QKKyAgYWxsb2NhdGUgKGFycmF5KDEpLCBzdGF0PXN0YXQxLCBlcnJtc2c9ZXJy bXNnMSkKKyAgaWYgKHN0YXQxICAgPT0gMCAgICAgICApIHN0b3AgMgorICBpZiAoZXJybXNn MSA9PSBub19lcnJvcikgc3RvcCAyCisKKyAgISBUcnkgdG8gYWxsb2NhdGUgdmVyeSBsYXJn ZSBvYmplY3QKKyAgYWxsb2NhdGUgKGJpZ2FycmF5KGJpZ251bWJlciksIHN0YXQ9c3RhdDIs IGVycm1zZz1lcnJtc2cyKQorICBpZiAoc3RhdDIgLz0gMCkgdGhlbgorICAgICBwcmludCAq LCAic3RhdDEgPSIsIHN0YXQxCisgICAgIHByaW50ICosICJlcnJtc2c6ICIsIHRyaW0gKGVy cm1zZzEpCisgICAgIHByaW50ICosICJzdGF0MiA9Iiwgc3RhdDIKKyAgICAgcHJpbnQgKiwg ImVycm1zZzogIiwgdHJpbSAoZXJybXNnMikKKyAgICAgISBFbnN1cmUgZGlmZmVyZW50IHJl c3VsdHMgZm9yIHN0YXQsIGVycm1zZyB2YXJpYWJsZXMgKGFsbCBjb21waWxlcnMpCisgICAg IGlmIChzdGF0MiAgID09IHN0YXQxICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBzdG9w IDMKKyAgICAgaWYgKGVycm1zZzIgPT0gbm9fZXJyb3IgLm9yLiBlcnJtc2cyID09IGVycm1z ZzEpIHN0b3AgNAorCisgICAgICEgRmluYWxseSB2ZXJpZnkgZ2ZvcnRyYW4tc3BlY2lmaWMg ZXJyb3IgbWVzc2FnZXMKKyAgICAgaWYgKGVycm1zZzEgLz0gIkF0dGVtcHQgdG8gYWxsb2Nh dGUgYW4gYWxsb2NhdGVkIG9iamVjdCIpIHN0b3AgNQorICAgICBpZiAoZXJybXNnMiAvPSAi SW5zdWZmaWNpZW50IHZpcnR1YWwgbWVtb3J5IiAgICAgICAgICAgICkgc3RvcCA2CisgIGVu ZCBpZgorCitlbmQgcHJvZ3JhbSBiaWdhcnJheV9wcm9nCisKKyEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJBdHRlbXB0IHRvIGFsbG9jYXRlIGFuIGFsbG9jYXRlZCBv YmplY3QiIDQgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJJbnN1ZmZpY2llbnQgdmlydHVhbCBtZW1vcnkiIDQgIm9yaWdpbmFsIiB9IH0K LS0gCjIuMzUuMwoK --------------uXpCTRGdxKOeLT33gmO1VkWM--