From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id B8785385829A; Tue, 8 Nov 2022 20:31:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B8785385829A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1667939486; bh=F3Cx2pyAUSc7osVrRVKJ9U1GnX35MF6jJ+4xy/9xHnU=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=rXuahYgHzvYXSLefqcYdaRGZpI0H9/fGH4GsTTPTeHkd8WErgRyN0WMIoUdVI7z3P 7IPHlu1/lYGUMubd2YxAEV+j73mOKPqSK8qqjsUoDz7WrFq1bfud8HH+Jt0IrNyhcl 8KgaW7BtnFYogxwZqMJbmXAuOh85u9c8+s9n+gchTPDnZHVekzaz8Viu4fRXkwI/dH Qab9Nt28bunQ4xntmg03DmNjfwZ1wLJLcdxDmoXtiSLvPNbXuGgnaraksnTb7zDn/l 4R/MxW3n+O0+jD7M82OJjIFLQTPu86IJn6dACNC1dS05UBu376X54EqxQYb/wEiLWE xJ+4pdQuyqnbw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([79.251.14.138]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MryTF-1pOU1b1gP7-00nzg4; Tue, 08 Nov 2022 21:31:26 +0100 Content-Type: multipart/mixed; boundary="------------APWgKm0toxWbv3Lmzf0xLvLJ" Message-ID: <258a3620-5b8e-f508-2c56-863d47ef2502@gmx.de> Date: Tue, 8 Nov 2022 21:31:23 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: Re: [PATCH, v3] Fortran: ordering of hidden procedure arguments [PR107441] To: Mikael Morin , fortran@gcc.gnu.org Cc: gcc-patches@gcc.gnu.org Newsgroups: gmane.comp.gcc.fortran,gmane.comp.gcc.patches References: <7d8ddf07-e66d-2678-de99-0e575c70ea17@orange.fr> <327319ac-4ef9-1e48-e993-57113d802d3b@orange.fr> <85a5951a-7ea4-57b3-895a-ff7dbf1ef92e@orange.fr> <93a5f029-4411-3424-f6ee-3b2bcf210050@gmx.de> <8725411a-979b-dd53-d1fe-5b041482a8eb@gmx.de> <91afe6ef-e5f4-d3d8-ad15-3271fd4e61cd@orange.fr> <3ca46ea0-ee6a-cbc6-d3af-99b8db698307@orange.fr> <24c6acfa-6745-c7a3-4bbd-54bd0fa31454@gmx.de> <54c4f997-863d-f850-ddf9-1ed780feedff@orange.fr> Content-Language: en-US From: Harald Anlauf In-Reply-To: <54c4f997-863d-f850-ddf9-1ed780feedff@orange.fr> X-Provags-ID: V03:K1:rMlhVdfGycEPiruM8+dc4LH8gbfhPqt2jgk7qMukLoA4zWLdnhr s1WF2h1y1zxaUkbYofvQ3rW8yPBkEQDRglVqydObDGuPvSayC0DyRbJo5Y9rnFKdpurb/Qm +dsMaKEbMV48HEjEuMW83MrCQ4L/2PknYDJOflWME4ukZi3yDTXu6ZPKLS1G/uk7mQLnhGI ozZXniEjRmOTrfhRsCOYA== UI-OutboundReport: notjunk:1;M01:P0:BJrMh2QwKxY=;LULkAcpXLP71sUmedodwItwnbGC SFJlv77MAjDX68t0u7mGnf2l/PFASKj0PNOVoc7fzEqn/3Ocj8EQb5oZ5+fWEfWpcjIENQqpT cQdTNICAoJpR256gPFm4aRPi6f7+ybzg5QukUiBtE9ObznvkJVCAfR0Y93W/vDSWgyaKQIq30 g2tyb1x1qd/heOK8W9MlvYGVlATvnWfav6tTVbLLeQ3KhDyqaaeCtGUzb7gDEDUEECVAE9b6W HZixYt3b1Sy5jvVfRaW0DNp62yiAqq1z6s3WXiTAA9zLRtPpmpX7gzyHWJRjEvG3vtr2hKe6M RzBr3tkpJO4YfwJc8Br+RTS0I259oy+j23sO9I0Oe/+XgBkwL8TMRvOEGpiBEpMWs/YSnpOcG aDbUL2U3iV+Fn28uEamH1wG3RTyrCGCgBiO9EHgcd1Te0KV9gCYJu4WFryy6R2RbWhWSkgCoO zzo/7QCOm7gU4ohSI3h08PKlTquxUn5WhnX9s0Ld3M9B4z+CKh7AJfGgbJmAfLyNw7oSCzfD3 HQXAQAbGn6zTbCDMG2G+tpK1bQu9nbihQDXIQYVGBM0DtQOCfEQ9AZWed4gH/2JDEKGTa5AMy NdANudIPhr/cX5BpMFi5Mi49vmMSN3gVwfDcWDTM5ODRY3y92Gv3ALwXIEUlq9a5tayf5HojD J05YrgKijGGE8quDA8msN17BxgegxZ8+DV1YJfdtjYaE5MKKVNOcW6DAgOHTsyls0CAMsqWSh +peKII1z+EMBbOw8i9FOwJfMecqnUz87r6bxaLbaG8toQnfEmEYZvc+UqBOrmw/l487VVmQlx 3yB1yivLRPhz7mHWtaAiSFoVhW5nB6LJ2D/tB9Lm/KELi8enckMGLLQ0PbiBEvvV9lvUp0XsM wIGmZImntR9m2gwUkSbxHFgvPo8C4xDVQFOGvNpV7QO1ojBQy/7xyoGm8Eh0S0Go1vo63S+n3 7I6TCVB0SzAQzeYUl+5BFYZPMXo= X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------APWgKm0toxWbv3Lmzf0xLvLJ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Mikael, Am 08.11.22 um 11:32 schrieb Mikael Morin: > this is mostly good. > There is one last corner case that is not properly handled: > >> diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc >> index 63515b9072a..94988b8690e 100644 >> --- a/gcc/fortran/trans-decl.cc >> +++ b/gcc/fortran/trans-decl.cc > (...) >> @@ -2619,6 +2620,15 @@ create_function_arglist (gfc_symbol * sym) >> =C2=A0=C2=A0=C2=A0=C2=A0 if (f->sym !=3D NULL)=C2=A0=C2=A0=C2=A0 /* Ign= ore alternate returns.=C2=A0 */ >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 hidden_typelist =3D TREE_CHAIN (hi= dden_typelist); >> >> +=C2=A0 /* Advance hidden_typelist over optional+value argument presenc= e >> flags.=C2=A0 */ >> +=C2=A0 optval_typelist =3D hidden_typelist; >> +=C2=A0 for (f =3D gfc_sym_get_dummy_args (sym); f; f =3D f->next) >> +=C2=A0=C2=A0=C2=A0 if (f->sym !=3D NULL >> +=C2=A0=C2=A0=C2=A0 && f->sym->attr.optional && f->sym->attr.value >> +=C2=A0=C2=A0=C2=A0 && !f->sym->attr.dimension && f->sym->ts.type !=3D = BT_CLASS >> +=C2=A0=C2=A0=C2=A0 && !gfc_bt_struct (f->sym->ts.type)) >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 hidden_typelist =3D TREE_CHAIN (hidden_= typelist); >> + > > This new loop copies the condition guarding the handling of optional > value presence arguments, except that the condition is in an "else if", > and the complement of the condition in the corresponding "if" is > missing, to have strictly the same conditions. I know, and I left that intentionally, as it is related to PR107444, assuming that it doesn't lead to a new ICE. Bad idea. > Admittedly, it only makes a difference for character optional value > arguments, which are hardly working.=C2=A0 At least they work as long as= one > doesn't try to query their presence.=C2=A0 Below is a case regressing wi= th > your patch. > With that fixed, I think it's good for mainline. > Thanks for your patience. > > > ! { dg-do compile } > ! > ! PR fortran/107441 > ! Check that procedure types and procedure decls match when the procedur= e > ! has both character-typed and character-typed optional value args. > ! > ! Contributed by M.Morin > > program p > =C2=A0 interface > =C2=A0=C2=A0=C2=A0 subroutine i(c, o) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 character(*) :: c > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 character(3), optional, value :: o > =C2=A0=C2=A0=C2=A0 end subroutine i > =C2=A0 end interface > =C2=A0 procedure(i), pointer :: pp > =C2=A0 pp =3D> s > =C2=A0 call pp("abcd", "xyz") > contains > =C2=A0 subroutine s(c, o) > =C2=A0=C2=A0=C2=A0 character(*) :: c > =C2=A0=C2=A0=C2=A0 character(3), optional, value :: o > =C2=A0=C2=A0=C2=A0 if (o /=3D "xyz") stop 1 > =C2=A0=C2=A0=C2=A0 if (c /=3D "abcd") stop 2 > =C2=A0 end subroutine s > end program p Well, that testcase may compile with 12-branch, but it gives wrong code. Furthermore, it is arguably invalid, as you are currently unable to check the presence of the optional argument due to PR107444. I am therefore reluctant to have that testcase now. To fix that, we may have to bite the bullet and break the documented ABI, or rather update it, as character,value,optional is broken in all current gfortran versions, and the documentation is not completely consistent. I had planned to do this with the fix for PR107444, which want to keep separate from the current patch for good reasons. I have modified my patch so that your testcase above compiles and runs. But as explained, I don't want to add it now. Regtested again. What do you think? Thanks, Harald --------------APWgKm0toxWbv3Lmzf0xLvLJ Content-Type: text/x-patch; charset=UTF-8; name="pr107441-v4.diff" Content-Disposition: attachment; filename="pr107441-v4.diff" Content-Transfer-Encoding: base64 RnJvbSA4Njk0ZDFkMmNiZDE5YjUxNDhiNWQxZDg5MWIxODJjYzNlNzE4ZjQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBGcmksIDI4IE9jdCAyMDIyIDIxOjU4OjA4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogb3JkZXJpbmcgb2YgaGlkZGVuIHByb2NlZHVyZSBhcmd1bWVudHMgW1BSMTA3 NDQxXQoKVGhlIGdmb3J0cmFuIGFyZ3VtZW50IHBhc3NpbmcgY29udmVudGlvbnMgc3BlY2lm eSBhIGNlcnRhaW4gb3JkZXIgZm9yCnByb2NlZHVyZSBhcmd1bWVudHMgdGhhdCBzaG91bGQg YmUgZm9sbG93ZWQgY29uc2VxdWVudGx5OiB0aGUgaGlkZGVuCnByZXNlbmNlIHN0YXR1cyBm bGFncyBvZiBvcHRpb25hbCt2YWx1ZSBzY2FsYXIgYXJndW1lbnRzIG9mIGludHJpbnNpYyB0 eXBlCnNoYWxsIGNvbWUgYmVmb3JlIHRoZSBoaWRkZW4gY2hhcmFjdGVyIGxlbmd0aCwgY29h cnJheSB0b2tlbiBhbmQgb2Zmc2V0LgpDbGFyaWZ5IHRoYXQgaW4gdGhlIGRvY3VtZW50YXRp b24uCgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgoJUFIgZm9ydHJhbi8xMDc0NDEKCSogZ2Zv cnRyYW4udGV4aSAoQXJndW1lbnQgcGFzc2luZyBjb252ZW50aW9ucyk6IENsYXJpZnkgdGhl IGdmb3J0cmFuCglhcmd1bWVudCBwYXNzaW5nIGNvbnZlbnRpb25zIHdpdGggcmVnYXJkIHRv IE9QVElPTkFMIGR1bW15IGFyZ3VtZW50cwoJb2YgaW50cmluc2ljIHR5cGUuCgkqIHRyYW5z LWRlY2wuY2MgKGNyZWF0ZV9mdW5jdGlvbl9hcmdsaXN0KTogQWRqdXN0IHRoZSBvcmRlcmlu ZyBvZgoJYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaGlkZGVuIHByb2NlZHVyZSBhcmd1bWVu dHMgdG8gbWF0Y2ggdGhlCglkb2N1bWVudGVkIEFCSSBmb3IgZ2ZvcnRyYW4uCgkqIHRyYW5z LXR5cGVzLmNjIChnZmNfZ2V0X2Z1bmN0aW9uX3R5cGUpOiBTZXBhcmF0ZSBoaWRkZW4gcGFy YW1ldGVycwoJc28gdGhhdCB0aGUgcHJlc2VuY2UgZmxhZyBmb3Igb3B0aW9uYWwrdmFsdWUg YXJndW1lbnRzIGNvbWUgYmVmb3JlCglzdHJpbmcgbGVuZ3RoLCBjb2FycmF5IHRva2VuIGFu ZCBvZmZzZXQsIGFzIHJlcXVpcmVkLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJUFIg Zm9ydHJhbi8xMDc0NDEKCSogZ2ZvcnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1jYWYuZjkw OiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50XzYuZjkwOiBOZXcg dGVzdC4KCSogZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50XzcuZjkwOiBOZXcgdGVzdC4K LS0tCiBnY2MvZm9ydHJhbi9nZm9ydHJhbi50ZXhpICAgICAgICAgICAgICAgICAgICAgfCAg MyArLQogZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgIHwg MzEgKysrKysrKy0tLQogZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuY2MgICAgICAgICAgICAg ICAgICAgIHwgMjUgKysrKy0tLS0KIC4uLi9nZm9ydHJhbi5kZy9jb2FycmF5L3ByMTA3NDQx LWNhZi5mOTAgICAgICB8IDI3ICsrKysrKysrKwogLi4uL2dmb3J0cmFuLmRnL29wdGlvbmFs X2Fic2VudF82LmY5MCAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKwogLi4uL2dm b3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF83LmY5MCAgICAgICAgIHwgMzEgKysrKysrKysr KwogNiBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5 L3ByMTA3NDQxLWNhZi5mOTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF82LmY5MAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50XzcuZjkwCgpkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4udGV4aSBiL2djYy9mb3J0cmFuL2dmb3J0cmFu LnRleGkKaW5kZXggNGI0ZWNkNTI4YTcuLjYwZmFjMmUwNDE3IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi9nZm9ydHJhbi50ZXhpCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkK QEAgLTM3NjMsOCArMzc2Myw3IEBAIGlzIHVzZWQgZm9yIGR1bW15IGFyZ3VtZW50czsgd2l0 aCBAY29kZXtWQUxVRX0sIHRob3NlIHZhcmlhYmxlcyBhcmUKIHBhc3NlZCBieSB2YWx1ZS4K IAogRm9yIEBjb2Rle09QVElPTkFMfSBkdW1teSBhcmd1bWVudHMsIGFuIGFic2VudCBhcmd1 bWVudCBpcyBkZW5vdGVkCi1ieSBhIE5VTEwgcG9pbnRlciwgZXhjZXB0IGZvciBzY2FsYXIg ZHVtbXkgYXJndW1lbnRzIG9mIHR5cGUKLUBjb2Rle0lOVEVHRVJ9LCBAY29kZXtMT0dJQ0FM fSwgQGNvZGV7UkVBTH0gYW5kIEBjb2Rle0NPTVBMRVh9CitieSBhIE5VTEwgcG9pbnRlciwg ZXhjZXB0IGZvciBzY2FsYXIgZHVtbXkgYXJndW1lbnRzIG9mIGludHJpbnNpYyB0eXBlCiB3 aGljaCBoYXZlIHRoZSBAY29kZXtWQUxVRX0gYXR0cmlidXRlLiAgRm9yIHRob3NlLCBhIGhp ZGRlbiBCb29sZWFuCiBhcmd1bWVudCAoQGNvZGV7bG9naWNhbChraW5kPUNfYm9vbCksdmFs dWV9KSBpcyB1c2VkIHRvIGluZGljYXRlCiB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBwcmVz ZW50LgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYyBiL2djYy9mb3J0 cmFuL3RyYW5zLWRlY2wuY2MKaW5kZXggNjM1MTViOTA3MmEuLmM2OTQ4ZTFkODU5IDEwMDY0 NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjCisrKyBiL2djYy9mb3J0cmFuL3Ry YW5zLWRlY2wuY2MKQEAgLTI1MDcsOCArMjUwNyw4IEBAIGNyZWF0ZV9mdW5jdGlvbl9hcmds aXN0IChnZmNfc3ltYm9sICogc3ltKQogewogICB0cmVlIGZuZGVjbDsKICAgZ2ZjX2Zvcm1h bF9hcmdsaXN0ICpmOwotICB0cmVlIHR5cGVsaXN0LCBoaWRkZW5fdHlwZWxpc3Q7Ci0gIHRy ZWUgYXJnbGlzdCwgaGlkZGVuX2FyZ2xpc3Q7CisgIHRyZWUgdHlwZWxpc3QsIGhpZGRlbl90 eXBlbGlzdCwgb3B0dmFsX3R5cGVsaXN0OworICB0cmVlIGFyZ2xpc3QsIGhpZGRlbl9hcmds aXN0LCBvcHR2YWxfYXJnbGlzdDsKICAgdHJlZSB0eXBlOwogICB0cmVlIHBhcm07CiAKQEAg LTI1MTgsNiArMjUxOCw3IEBAIGNyZWF0ZV9mdW5jdGlvbl9hcmdsaXN0IChnZmNfc3ltYm9s ICogc3ltKQogICAgICB0aGUgbmV3IEZVTkNUSU9OX0RFQ0wgbm9kZS4gICovCiAgIGFyZ2xp c3QgPSBOVUxMX1RSRUU7CiAgIGhpZGRlbl9hcmdsaXN0ID0gTlVMTF9UUkVFOworICBvcHR2 YWxfYXJnbGlzdCA9IE5VTExfVFJFRTsKICAgdHlwZWxpc3QgPSBUWVBFX0FSR19UWVBFUyAo VFJFRV9UWVBFIChmbmRlY2wpKTsKIAogICBpZiAoc3ltLT5hdHRyLmVudHJ5X21hc3RlcikK QEAgLTI2MTksNiArMjYyMCwxNSBAQCBjcmVhdGVfZnVuY3Rpb25fYXJnbGlzdCAoZ2ZjX3N5 bWJvbCAqIHN5bSkKICAgICBpZiAoZi0+c3ltICE9IE5VTEwpCS8qIElnbm9yZSBhbHRlcm5h dGUgcmV0dXJucy4gICovCiAgICAgICBoaWRkZW5fdHlwZWxpc3QgPSBUUkVFX0NIQUlOICho aWRkZW5fdHlwZWxpc3QpOwogCisgIC8qIEFkdmFuY2UgaGlkZGVuX3R5cGVsaXN0IG92ZXIg b3B0aW9uYWwrdmFsdWUgYXJndW1lbnQgcHJlc2VuY2UgZmxhZ3MuICAqLworICBvcHR2YWxf dHlwZWxpc3QgPSBoaWRkZW5fdHlwZWxpc3Q7CisgIGZvciAoZiA9IGdmY19zeW1fZ2V0X2R1 bW15X2FyZ3MgKHN5bSk7IGY7IGYgPSBmLT5uZXh0KQorICAgIGlmIChmLT5zeW0gIT0gTlVM TAorCSYmIGYtPnN5bS0+YXR0ci5vcHRpb25hbCAmJiBmLT5zeW0tPmF0dHIudmFsdWUKKwkm JiAhZi0+c3ltLT5hdHRyLmRpbWVuc2lvbiAmJiBmLT5zeW0tPnRzLnR5cGUgIT0gQlRfQ0xB U1MKKwkmJiAhZ2ZjX2J0X3N0cnVjdCAoZi0+c3ltLT50cy50eXBlKSkKKyAgICAgIGhpZGRl bl90eXBlbGlzdCA9IFRSRUVfQ0hBSU4gKGhpZGRlbl90eXBlbGlzdCk7CisKICAgZm9yIChm ID0gZ2ZjX3N5bV9nZXRfZHVtbXlfYXJncyAoc3ltKTsgZjsgZiA9IGYtPm5leHQpCiAgICAg ewogICAgICAgY2hhciBuYW1lW0dGQ19NQVhfU1lNQk9MX0xFTiArIDJdOwpAQCAtMjY5OCwx MiArMjcwOCwxMiBAQCBjcmVhdGVfZnVuY3Rpb25fYXJnbGlzdCAoZ2ZjX3N5bWJvbCAqIHN5 bSkKIAkJdHlwZSA9IGdmY19zeW1fdHlwZSAoZi0+c3ltKTsKIAkgICAgfQogCX0KLSAgICAg IC8qIEZvciBub25jaGFyYWN0ZXIgc2NhbGFyIGludHJpbnNpYyB0eXBlcywgVkFMVUUgcGFz c2VzIHRoZSB2YWx1ZSwKKyAgICAgIC8qIEZvciBzY2FsYXIgaW50cmluc2ljIHR5cGVzLCBW QUxVRSBwYXNzZXMgdGhlIHZhbHVlLAogCSBoZW5jZSwgdGhlIG9wdGlvbmFsIHN0YXR1cyBj YW5ub3QgYmUgdHJhbnNmZXJyZWQgdmlhIGEgTlVMTCBwb2ludGVyLgogCSBUaHVzLCB3ZSB3 aWxsIHVzZSBhIGhpZGRlbiBhcmd1bWVudCBpbiB0aGF0IGNhc2UuICAqLwotICAgICAgZWxz ZSBpZiAoZi0+c3ltLT5hdHRyLm9wdGlvbmFsICYmIGYtPnN5bS0+YXR0ci52YWx1ZQotCSAg ICAgICAmJiAhZi0+c3ltLT5hdHRyLmRpbWVuc2lvbiAmJiBmLT5zeW0tPnRzLnR5cGUgIT0g QlRfQ0xBU1MKLQkgICAgICAgJiYgIWdmY19idF9zdHJ1Y3QgKGYtPnN5bS0+dHMudHlwZSkp CisgICAgICBpZiAoZi0+c3ltLT5hdHRyLm9wdGlvbmFsICYmIGYtPnN5bS0+YXR0ci52YWx1 ZQorCSAgJiYgIWYtPnN5bS0+YXR0ci5kaW1lbnNpb24gJiYgZi0+c3ltLT50cy50eXBlICE9 IEJUX0NMQVNTCisJICAmJiAhZ2ZjX2J0X3N0cnVjdCAoZi0+c3ltLT50cy50eXBlKSkKIAl7 CiAgICAgICAgICAgdHJlZSB0bXA7CiAgICAgICAgICAgc3RyY3B5ICgmbmFtZVsxXSwgZi0+ c3ltLT5uYW1lKTsKQEAgLTI3MTIsMTQgKzI3MjIsMTYgQEAgY3JlYXRlX2Z1bmN0aW9uX2Fy Z2xpc3QgKGdmY19zeW1ib2wgKiBzeW0pCiAJCQkgICAgUEFSTV9ERUNMLCBnZXRfaWRlbnRp ZmllciAobmFtZSksCiAJCQkgICAgYm9vbGVhbl90eXBlX25vZGUpOwogCi0gICAgICAgICAg aGlkZGVuX2FyZ2xpc3QgPSBjaGFpbm9uIChoaWRkZW5fYXJnbGlzdCwgdG1wKTsKKwkgIG9w dHZhbF9hcmdsaXN0ID0gY2hhaW5vbiAob3B0dmFsX2FyZ2xpc3QsIHRtcCk7CiAgICAgICAg ICAgREVDTF9DT05URVhUICh0bXApID0gZm5kZWNsOwogICAgICAgICAgIERFQ0xfQVJUSUZJ Q0lBTCAodG1wKSA9IDE7CiAgICAgICAgICAgREVDTF9BUkdfVFlQRSAodG1wKSA9IGJvb2xl YW5fdHlwZV9ub2RlOwogICAgICAgICAgIFRSRUVfUkVBRE9OTFkgKHRtcCkgPSAxOwogICAg ICAgICAgIGdmY19maW5pc2hfZGVjbCAodG1wKTsKIAotCSAgaGlkZGVuX3R5cGVsaXN0ID0g VFJFRV9DSEFJTiAoaGlkZGVuX3R5cGVsaXN0KTsKKwkgIC8qIFRoZSBwcmVzZW5jZSBmbGFn IG11c3QgYmUgYm9vbGVhbi4gICovCisJICBnY2NfYXNzZXJ0IChUUkVFX1ZBTFVFIChvcHR2 YWxfdHlwZWxpc3QpID09IGJvb2xlYW5fdHlwZV9ub2RlKTsKKwkgIG9wdHZhbF90eXBlbGlz dCA9IFRSRUVfQ0hBSU4gKG9wdHZhbF90eXBlbGlzdCk7CiAJfQogCiAgICAgICAvKiBGb3Ig bm9uLWNvbnN0YW50IGxlbmd0aCBhcnJheSBhcmd1bWVudHMsIG1ha2Ugc3VyZSB0aGV5IHVz ZQpAQCAtMjg2Myw2ICsyODc1LDkgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3QgKGdmY19z eW1ib2wgKiBzeW0pCiAgICAgICB0eXBlbGlzdCA9IFRSRUVfQ0hBSU4gKHR5cGVsaXN0KTsK ICAgICB9CiAKKyAgLyogQWRkIGhpZGRlbiBwcmVzZW50IHN0YXR1cyBmb3Igb3B0aW9uYWwr dmFsdWUgYXJndW1lbnRzLiAgKi8KKyAgYXJnbGlzdCA9IGNoYWlub24gKGFyZ2xpc3QsIG9w dHZhbF9hcmdsaXN0KTsKKwogICAvKiBBZGQgdGhlIGhpZGRlbiBzdHJpbmcgbGVuZ3RoIHBh cmFtZXRlcnMsIHVubGVzcyB0aGUgcHJvY2VkdXJlCiAgICAgIGlzIGJpbmQoQykuICAqLwog ICBpZiAoIXN5bS0+YXR0ci5pc19iaW5kX2MpCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90 cmFucy10eXBlcy5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjCmluZGV4IGRlZjc1 NTJhYzY3Li4xOTZmMmNlY2JmYyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtdHlw ZXMuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuY2MKQEAgLTMxMDUsNiArMzEw NSw3IEBAIGdmY19nZXRfZnVuY3Rpb25fdHlwZSAoZ2ZjX3N5bWJvbCAqIHN5bSwgZ2ZjX2Fj dHVhbF9hcmdsaXN0ICphY3R1YWxfYXJncywKIHsKICAgdHJlZSB0eXBlOwogICB2ZWM8dHJl ZSwgdmFfZ2M+ICp0eXBlbGlzdCA9IE5VTEw7CisgIHZlYzx0cmVlLCB2YV9nYz4gKmhpZGRl bl90eXBlbGlzdCA9IE5VTEw7CiAgIGdmY19mb3JtYWxfYXJnbGlzdCAqZjsKICAgZ2ZjX3N5 bWJvbCAqYXJnOwogICBpbnQgYWx0ZXJuYXRlX3JldHVybiA9IDA7CkBAIC0zMjIyLDE3ICsz MjIzLDE3IEBAIGdmY19nZXRfZnVuY3Rpb25fdHlwZSAoZ2ZjX3N5bWJvbCAqIHN5bSwgZ2Zj X2FjdHVhbF9hcmdsaXN0ICphY3R1YWxfYXJncywKIAkgICAgICAgc28gdGhhdCB0aGUgdmFs dWUgY2FuIGJlIHJldHVybmVkLiAgKi8KIAkgICAgdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlw ZSAoZ2ZjX2NoYXJsZW5fdHlwZV9ub2RlKTsKIAotCSAgdmVjX3NhZmVfcHVzaCAodHlwZWxp c3QsIHR5cGUpOworCSAgdmVjX3NhZmVfcHVzaCAoaGlkZGVuX3R5cGVsaXN0LCB0eXBlKTsK IAl9Ci0gICAgICAvKiBGb3Igbm9uY2hhcmFjdGVyIHNjYWxhciBpbnRyaW5zaWMgdHlwZXMs IFZBTFVFIHBhc3NlcyB0aGUgdmFsdWUsCisgICAgICAvKiBGb3Igc2NhbGFyIGludHJpbnNp YyB0eXBlcywgVkFMVUUgcGFzc2VzIHRoZSB2YWx1ZSwKIAkgaGVuY2UsIHRoZSBvcHRpb25h bCBzdGF0dXMgY2Fubm90IGJlIHRyYW5zZmVycmVkIHZpYSBhIE5VTEwgcG9pbnRlci4KIAkg VGh1cywgd2Ugd2lsbCB1c2UgYSBoaWRkZW4gYXJndW1lbnQgaW4gdGhhdCBjYXNlLiAgKi8K LSAgICAgIGVsc2UgaWYgKGFyZwotCSAgICAgICAmJiBhcmctPmF0dHIub3B0aW9uYWwKLQkg ICAgICAgJiYgYXJnLT5hdHRyLnZhbHVlCi0JICAgICAgICYmICFhcmctPmF0dHIuZGltZW5z aW9uCi0JICAgICAgICYmIGFyZy0+dHMudHlwZSAhPSBCVF9DTEFTUwotCSAgICAgICAmJiAh Z2ZjX2J0X3N0cnVjdCAoYXJnLT50cy50eXBlKSkKKyAgICAgIGlmIChhcmcKKwkgICYmIGFy Zy0+YXR0ci5vcHRpb25hbAorCSAgJiYgYXJnLT5hdHRyLnZhbHVlCisJICAmJiAhYXJnLT5h dHRyLmRpbWVuc2lvbgorCSAgJiYgYXJnLT50cy50eXBlICE9IEJUX0NMQVNTCisJICAmJiAh Z2ZjX2J0X3N0cnVjdCAoYXJnLT50cy50eXBlKSkKIAl2ZWNfc2FmZV9wdXNoICh0eXBlbGlz dCwgYm9vbGVhbl90eXBlX25vZGUpOwogICAgICAgLyogQ29hcnJheXMgd2hpY2ggYXJlIGRl c2NyaXB0b3JsZXNzIG9yIGFzc3VtZWQtc2hhcGUgcGFzcyB3aXRoCiAJIC1mY29hcnJheT1s aWIgdGhlIHRva2VuIGFuZCB0aGUgb2Zmc2V0IGFzIGhpZGRlbiBhcmd1bWVudHMuICAqLwpA QCAtMzI0NSwxMSArMzI0NiwxNSBAQCBnZmNfZ2V0X2Z1bmN0aW9uX3R5cGUgKGdmY19zeW1i b2wgKiBzeW0sIGdmY19hY3R1YWxfYXJnbGlzdCAqYWN0dWFsX2FyZ3MsCiAJCSAgJiYgQ0xB U1NfREFUQSAoYXJnKS0+YXR0ci5jb2RpbWVuc2lvbgogCQkgICYmICFDTEFTU19EQVRBIChh cmcpLT5hdHRyLmFsbG9jYXRhYmxlKSkpCiAJewotCSAgdmVjX3NhZmVfcHVzaCAodHlwZWxp c3QsIHB2b2lkX3R5cGVfbm9kZSk7ICAvKiBjYWZfdG9rZW4uICAqLwotCSAgdmVjX3NhZmVf cHVzaCAodHlwZWxpc3QsIGdmY19hcnJheV9pbmRleF90eXBlKTsgIC8qIGNhZl9vZmZzZXQu ICAqLworCSAgdmVjX3NhZmVfcHVzaCAoaGlkZGVuX3R5cGVsaXN0LCBwdm9pZF90eXBlX25v ZGUpOyAgLyogY2FmX3Rva2VuLiAgKi8KKwkgIHZlY19zYWZlX3B1c2ggKGhpZGRlbl90eXBl bGlzdCwgZ2ZjX2FycmF5X2luZGV4X3R5cGUpOyAgLyogY2FmX29mZnNldC4gICovCiAJfQog ICAgIH0KIAorICAvKiBQdXQgaGlkZGVuIGNoYXJhY3RlciBsZW5ndGgsIGNhZl90b2tlbiwg Y2FmX29mZnNldCBhdCB0aGUgZW5kLiAgKi8KKyAgdmVjX3NhZmVfcmVzZXJ2ZSAodHlwZWxp c3QsIHZlY19zYWZlX2xlbmd0aCAoaGlkZGVuX3R5cGVsaXN0KSk7CisgIHZlY19zYWZlX3Nw bGljZSAodHlwZWxpc3QsIGhpZGRlbl90eXBlbGlzdCk7CisKICAgaWYgKCF2ZWNfc2FmZV9p c19lbXB0eSAodHlwZWxpc3QpCiAgICAgICB8fCBzeW0tPmF0dHIuaXNfbWFpbl9wcm9ncmFt CiAgICAgICB8fCBzeW0tPmF0dHIuaWZfc291cmNlICE9IElGU1JDX1VOS05PV04pCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0NDEtY2Fm LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1jYWYu ZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yM2IyMjQyZTIx NwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJh eS9wcjEwNzQ0MS1jYWYuZjkwCkBAIC0wLDAgKzEsMjcgQEAKKyEgeyBkZy1kbyBydW4gfQor IQorISBQUiBmb3J0cmFuLzEwNzQ0MQorISBDaGVjayB0aGF0IHdpdGggLWZjb2FycmF5PWxp YiwgY29hcnJheSBtZXRhZGF0YSBhcmd1bWVudHMgYXJlIHBhc3NlZAorISBpbiB0aGUgcmln aHQgb3JkZXIgdG8gcHJvY2VkdXJlcy4KKyEKKyEgQ29udHJpYnV0ZWQgYnkgTS5Nb3Jpbgor Citwcm9ncmFtIHAKKyAgaW50ZWdlciA6OiBjaVsqXQorICBjaSA9IDE3CisgIGNhbGwgcygx LCBjaSwgImFiY2QiKQorY29udGFpbnMKKyAgc3Vicm91dGluZSBzKHJhLCBjYSwgYykKKyAg ICBpbnRlZ2VyIDo6IHJhLCBjYVsqXQorICAgIGNoYXJhY3RlcigqKSA6OiBjCisgICAgY2Fb MV0gPSAxMworICAgIGlmIChyYSAvPSAxKSBzdG9wIDEKKyAgICBpZiAodGhpc19pbWFnZSgp ID09IDEpIHRoZW4KKyAgICAgIGlmIChjYSAvPSAxMykgc3RvcCAyCisgICAgZWxzZQorICAg ICAgaWYgKGNhIC89IDE3KSBzdG9wIDMKKyAgICBlbmQgaWYKKyAgICBpZiAobGVuKGMpIC89 IDQpIHN0b3AgNAorICAgIGlmIChjIC89ICJhYmNkIikgc3RvcCA1CisgIGVuZCBzdWJyb3V0 aW5lIHMKK2VuZCBwcm9ncmFtIHAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvb3B0aW9uYWxfYWJzZW50XzYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9vcHRpb25hbF9hYnNlbnRfNi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI4YWJiMDY5ODBhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNi5mOTAKQEAgLTAsMCArMSw2MCBAQAor ISB7IGRnLWRvIHJ1biB9CishIFBSIGZvcnRyYW4vMTA3NDQxCishCishIFRlc3QgVkFMVUUg KyBPUFRJT05BTCBmb3IgaW50ZWdlci9yZWFsLy4uLgorISBpbiB0aGUgcHJlc2VuY2Ugb2Yg bm9uLW9wdGlvbmFsIGNoYXJhY3RlciBkdW1taWVzCisKK3Byb2dyYW0gYnVnZGVtbworICBp bXBsaWNpdCBub25lCisgIGNoYXJhY3RlciA6OiBzID0gJ2EnCisgIGludGVnZXIgICA6OiB0 CisKKyAgdCA9IHRlc3RvcHRpb25hbChzKQorICBjYWxsIHRlc3QyIChzKQorICBjYWxsIHRl c3QzIChzKQorICBjYWxsIHRlc3Q0ICh3PScxMjMnLHg9NDIpCisKK2NvbnRhaW5zCisKKyAg ZnVuY3Rpb24gdGVzdG9wdGlvbmFsICh3LCB4KSByZXN1bHQodCkKKyAgICBjaGFyYWN0ZXIs IGludGVudChpbikgICAgICAgICAgICAgICAgICA6OiB3CisgICAgaW50ZWdlciwgICBpbnRl bnQoaW4pLCB2YWx1ZSwgb3B0aW9uYWwgOjogeAorICAgIGludGVnZXIgOjogdAorICAgIHBy aW50ICosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIHQgPSAwCisgICAgaWYg KHByZXNlbnQgKHgpKSBzdG9wIDEKKyAgZW5kIGZ1bmN0aW9uIHRlc3RvcHRpb25hbAorCisg IHN1YnJvdXRpbmUgdGVzdDIgKHcsIHgpCisgICAgY2hhcmFjdGVyLCBpbnRlbnQoaW4pICAg ICAgICAgICAgICAgICAgOjogdworICAgIGludGVnZXIsICAgaW50ZW50KGluKSwgdmFsdWUs IG9wdGlvbmFsIDo6IHgKKyAgICBwcmludCosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4 KQorICAgIGlmIChwcmVzZW50ICh4KSkgc3RvcCAyCisgIGVuZCBzdWJyb3V0aW5lIHRlc3Qy CisKKyAgc3Vicm91dGluZSB0ZXN0MyAodywgeCkKKyAgICBjaGFyYWN0ZXIsIGludGVudChp biksICAgICAgICBvcHRpb25hbCA6OiB3CisgICAgaW50ZWdlciwgICBpbnRlbnQoaW4pLCB2 YWx1ZSwgb3B0aW9uYWwgOjogeAorICAgIHByaW50ICosICdwcmVzZW50KHcpIGlzJywgcHJl c2VudCh3KQorICAgIHByaW50ICosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAg IGlmICgubm90LiBwcmVzZW50ICh3KSkgc3RvcCAzCisgICAgaWYgKHByZXNlbnQgKHgpKSBz dG9wIDQKKyAgZW5kIHN1YnJvdXRpbmUgdGVzdDMKKworICBzdWJyb3V0aW5lIHRlc3Q0IChy LCB3LCB4KQorICAgIHJlYWwsICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIG9wdGlvbmFs IDo6IHIKKyAgICBjaGFyYWN0ZXIoKiksIGludGVudChpbiksICAgICAgICBvcHRpb25hbCA6 OiB3CisgICAgaW50ZWdlciwgICAgICAgICAgICAgICAgICB2YWx1ZSwgb3B0aW9uYWwgOjog eAorICAgIHByaW50ICosICdwcmVzZW50KHIpIGlzJywgcHJlc2VudChyKQorICAgIHByaW50 ICosICdwcmVzZW50KHcpIGlzJywgcHJlc2VudCh3KQorICAgIHByaW50ICosICdwcmVzZW50 KHgpIGlzJywgcHJlc2VudCh4KQorICAgIGlmIChwcmVzZW50IChyKSkgc3RvcCA1CisgICAg aWYgKC5ub3QuIHByZXNlbnQgKHcpKSBzdG9wIDYKKyAgICBpZiAoLm5vdC4gcHJlc2VudCAo eCkpIHN0b3AgNworICAgIHByaW50ICosICd4PScsIHgKKyAgICBwcmludCAqLCAnbGVuKHcp PScsIGxlbih3KQorICAgIGlmIChsZW4odykgLz0gMykgc3RvcCA4CisgICAgaWYgKHggLz0g NDIpIHN0b3AgOQorICBlbmQgc3Vicm91dGluZSB0ZXN0NAorCitlbmQgcHJvZ3JhbSBidWdk ZW1vCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fi c2VudF83LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50 XzcuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYmU5ODFj ODhmNgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0 aW9uYWxfYWJzZW50XzcuZjkwCkBAIC0wLDAgKzEsMzEgQEAKKyEgeyBkZy1kbyBydW4gfQor ISB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKyEK KyEgUFIgZm9ydHJhbi8xMDc0NDEKKyEgQ2hlY2sgdGhhdCBwcm9jZWR1cmUgdHlwZXMgYW5k IHByb2NlZHVyZSBkZWNscyBtYXRjaCB3aGVuIHRoZSBwcm9jZWR1cmUKKyEgaGFzIGJvdGgg Y2hhcmFjdGVyLXR5cGVkIGFuZCBvcHRpb25hbCB2YWx1ZSBhcmdzLgorIQorISBDb250cmli dXRlZCBieSBNLk1vcmluCisKK3Byb2dyYW0gcAorICBpbnRlcmZhY2UKKyAgICBzdWJyb3V0 aW5lIGkoYywgbykKKyAgICAgIGNoYXJhY3RlcigqKSA6OiBjCisgICAgICBpbnRlZ2VyLCBv cHRpb25hbCwgdmFsdWUgOjogbworICAgIGVuZCBzdWJyb3V0aW5lIGkKKyAgZW5kIGludGVy ZmFjZQorICBwcm9jZWR1cmUoaSksIHBvaW50ZXIgOjogcHAKKyAgcHAgPT4gcworICBjYWxs IHBwKCJhYmNkIikKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgcyhjLCBvKQorICAgIGNoYXJh Y3RlcigqKSA6OiBjCisgICAgaW50ZWdlciwgb3B0aW9uYWwsIHZhbHVlIDo6IG8KKyAgICBp ZiAocHJlc2VudChvKSkgc3RvcCAxCisgICAgaWYgKGxlbihjKSAvPSA0KSBzdG9wIDIKKyAg ICBpZiAoYyAvPSAiYWJjZCIpIHN0b3AgMworICBlbmQgc3Vicm91dGluZSBzCitlbmQgcHJv Z3JhbSBwCisKKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2b2lkIHMgLiogYywg LiogbywgbG9naWNhbC4qIF9vLCBpbnRlZ2VyLiogX2MiICJvcmlnaW5hbCIgfSB9CishIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiLCBpbnRlZ2VyLiosIGxvZ2ljYWwuKiwgaW50 ZWdlci4qIHBwIiAib3JpZ2luYWwiIH0gfQotLSAKMi4zNS4zCgo= --------------APWgKm0toxWbv3Lmzf0xLvLJ--