From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10275 invoked by alias); 25 Oct 2009 19:00:27 -0000 Received: (qmail 10233 invoked by uid 22791); 25 Oct 2009 19:00:23 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from ey-out-1920.google.com (HELO ey-out-1920.google.com) (74.125.78.145) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 25 Oct 2009 19:00:19 +0000 Received: by ey-out-1920.google.com with SMTP id 3so698009eyh.0 for ; Sun, 25 Oct 2009 12:00:16 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.88.68 with SMTP id z46mr1323726wee.27.1256497215973; Sun, 25 Oct 2009 12:00:15 -0700 (PDT) In-Reply-To: <84fc9c000910251104n74e3577chd774e6736973c65e@mail.gmail.com> References: <854832d40910250420i45c7bfddga4130fc1f1bfccd0@mail.gmail.com> <339c37f20910250752w51dd08d5tea70ac6e925f78f3@mail.gmail.com> <84fc9c000910250810i2b5025c1kc56ebd0c3e0730f7@mail.gmail.com> <84fc9c000910250813o6eed383cy58dcd0a2df103529@mail.gmail.com> <854832d40910251056t331b1babq5e29ee5d1abe0c2f@mail.gmail.com> <84fc9c000910251104n74e3577chd774e6736973c65e@mail.gmail.com> Date: Sun, 25 Oct 2009 19:12:00 -0000 Message-ID: <854832d40910251200t6042f0fcja4fe533cd5b5366@mail.gmail.com> Subject: Re: [Patch, Fortran] PR 41714: [OOP] ALLOCATE SOURCE= does not properly copy the value from SOURCE From: Janus Weil To: Richard Guenther Cc: Paul Richard Thomas , gfortran , gcc-patches , salvatore.filippone@uniroma2.it Content-Type: multipart/mixed; boundary=0016e6daa82b382a3c0476c70eb9 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2009-10/txt/msg01537.txt.bz2 --0016e6daa82b382a3c0476c70eb9 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2685 2009/10/25 Richard Guenther : > On Sun, Oct 25, 2009 at 6:56 PM, Janus Weil wrote: >>>>> It looks OK to me except: >>>>> >>>>>> =A0 =A0 =A0 =A0PR fortran/41714 >>>>>> =A0 =A0 =A0 =A0* trans-expr.c (gfc_build_memcpy_call): Take care of = the case that the >>>>>> =A0 =A0 =A0 =A0call to '__builtin_memcpy' is optimized away (replace= d by a direct >>>>>> =A0 =A0 =A0 =A0assignment). >>>>> >>>>> How the heck does that work? =A0It comes out as a NOP_EXPR and yet it= 's >>>>> really an assignment..... Is that documented somewhere? >>>> >>>> That patch looks indeed dubious. =A0It tests for an implementation det= ail >>>> (the memcpy folder returns (void *) ({ *dst =3D *src; dst; })). =A0You= should >>>> be able to unconditionally fold-convert to void_type_node as in the >>>> original code. =A0Instead tree_annotate_all_with_location should be fi= xed. >>> >>> Or rather the FE should not call this function - it assumes that the co= de >>> is already gimplified. >> >> Ok, so you mean one should instead just do the stuff which this >> function does, but without the extra checks? Like here: >> >> Index: gcc/fortran/trans.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- gcc/fortran/trans.c (Revision 153538) >> +++ gcc/fortran/trans.c (Arbeitskopie) >> @@ -1282,7 +1282,11 @@ gfc_trans_code (gfc_code * code) >> =A0 =A0 =A0 if (res !=3D NULL_TREE && ! IS_EMPTY_STMT (res)) >> =A0 =A0 =A0 =A0{ >> =A0 =A0 =A0 =A0 =A0if (TREE_CODE (res) =3D=3D STATEMENT_LIST) >> - =A0 =A0 =A0 =A0 =A0 tree_annotate_all_with_location (&res, input_locat= ion); >> + =A0 =A0 =A0 =A0 =A0 { >> + =A0 =A0 =A0 =A0 =A0 =A0 tree_stmt_iterator i; >> + =A0 =A0 =A0 =A0 =A0 =A0 for (i =3D tsi_start (res); !tsi_end_p (i); ts= i_next (&i)) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 SET_EXPR_LOCATION (tsi_stmt (i), input_loc= ation); >> + =A0 =A0 =A0 =A0 =A0 } >> =A0 =A0 =A0 =A0 =A0else >> =A0 =A0 =A0 =A0 =A0 =A0SET_EXPR_LOCATION (res, input_location); > > No. =A0I think the above should just be dropped (as well as the other > call in the Fortran frontend). =A0The location should have been set > by the various stmt builders (like build_call_expr_loc in the > memcpy case). =A0For the folding of memcpy case > the folder will have distributed the locations appropriately. > > The middle-end function can then be removed completely (the Fortran > FE is the only caller). =A0A patch to do so is pre-approved. Alright. Regtesting the attached patch now. Thanks for your help, Richard! Cheers, Janus --0016e6daa82b382a3c0476c70eb9 Content-Type: text/x-diff; charset=US-ASCII; name="pr41714_v4.diff" Content-Disposition: attachment; filename="pr41714_v4.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g185zcfa0 Content-length: 11566 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY2xhc3NfYWxsb2Nh dGVfNC5mMDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9jbGFzc19hbGxvY2F0ZV80LmYwMwkoUmV2aXNp b24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY2xhc3NfYWxs b2NhdGVfNC5mMDMJKFJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKyEg eyBkZy1kbyBydW4gfQorIQorISBQUiA0MTcxNDogW09PUF0gQUxMT0NBVEUg U09VUkNFPSBkb2VzIG5vdCBwcm9wZXJseSBjb3B5IHRoZSB2YWx1ZSBmcm9t IFNPVVJDRQorIQorISBDb250cmlidXRlZCBieSBUb2JpYXMgQnVybnVzIDxi dXJudXNAZ2NjLmdudS5vcmc+CisKK3R5cGUgdAorICBpbnRlZ2VyIDo6IGkK K2VuZCB0eXBlIHQKK3R5cGUsIGV4dGVuZHModCkgOjogdDIKKyAgaW50ZWdl ciA6OiBqCitlbmQgdHlwZSB0MgorCitjbGFzcyh0KSwgYWxsb2NhdGFibGUg OjogYQorYWxsb2NhdGUoYSwgc291cmNlPXQyKDEsMikpCitwcmludCAqLGEl aQoraWYoYSVpIC89IDEpIGNhbGwgYWJvcnQoKQorc2VsZWN0IHR5cGUgKGEp CisgIHR5cGUgaXMgKHQyKQorICAgICBwcmludCAqLGElagorICAgICBpZihh JWogLz0gMikgY2FsbCBhYm9ydCgpCitlbmQgc2VsZWN0CitlbmQKSW5kZXg6 IGdjYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jCShSZXZpc2lv biAxNTM1NDEpCisrKyBnY2MvZm9ydHJhbi90cmFucy1vcGVubXAuYwkoQXJi ZWl0c2tvcGllKQpAQCAtMTY0MSwxMSArMTY0MSw2IEBAIGdmY190cmFuc19v bXBfd29ya3NoYXJlIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jCiAKICAg ICAgIGlmIChyZXMgIT0gTlVMTF9UUkVFICYmICEgSVNfRU1QVFlfU1RNVCAo cmVzKSkKIAl7Ci0JICBpZiAoVFJFRV9DT0RFIChyZXMpID09IFNUQVRFTUVO VF9MSVNUKQotCSAgICB0cmVlX2Fubm90YXRlX2FsbF93aXRoX2xvY2F0aW9u ICgmcmVzLCBpbnB1dF9sb2NhdGlvbik7Ci0JICBlbHNlCi0JICAgIFNFVF9F WFBSX0xPQ0FUSU9OIChyZXMsIGlucHV0X2xvY2F0aW9uKTsKLQogCSAgaWYg KHByZXZfc2luZ2xldW5pdCkKIAkgICAgewogCSAgICAgIGlmIChvbXB3c19m bGFncyAmIE9NUFdTX0NVUlJfU0lOR0xFVU5JVCkKSW5kZXg6IGdjYy9mb3J0 cmFuL3RyYW5zLXN0bXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBn Y2MvZm9ydHJhbi90cmFucy1zdG10LmMJKFJldmlzaW9uIDE1MzU0MSkKKysr IGdjYy9mb3J0cmFuL3RyYW5zLXN0bXQuYwkoQXJiZWl0c2tvcGllKQpAQCAt Mzk4MywxMiArMzk4MywxMyBAQCBnZmNfdHJhbnNfYWxsb2NhdGUgKGdmY19j b2RlICogY29kZSkKICAgdHJlZSBzdGF0OwogICB0cmVlIHBzdGF0OwogICB0 cmVlIGVycm9yX2xhYmVsOworICB0cmVlIG1lbXN6OwogICBzdG10YmxvY2tf dCBibG9jazsKIAogICBpZiAoIWNvZGUtPmV4dC5hbGxvYy5saXN0KQogICAg IHJldHVybiBOVUxMX1RSRUU7CiAKLSAgcHN0YXQgPSBzdGF0ID0gZXJyb3Jf bGFiZWwgPSB0bXAgPSBOVUxMX1RSRUU7CisgIHBzdGF0ID0gc3RhdCA9IGVy cm9yX2xhYmVsID0gdG1wID0gbWVtc3ogPSBOVUxMX1RSRUU7CiAKICAgZ2Zj X3N0YXJ0X2Jsb2NrICgmYmxvY2spOwogCkBAIC00MDMyLDE5ICs0MDMzLDE5 IEBAIGdmY190cmFuc19hbGxvY2F0ZSAoZ2ZjX2NvZGUgKiBjb2RlKQogCSAg ICAgIGdmY19pbml0X3NlICgmc2Vfc3osIE5VTEwpOwogCSAgICAgIGdmY19j b252X2V4cHIgKCZzZV9zeiwgc3opOwogCSAgICAgIGdmY19mcmVlX2V4cHIg KHN6KTsKLQkgICAgICB0bXAgPSBzZV9zei5leHByOworCSAgICAgIG1lbXN6 ID0gc2Vfc3ouZXhwcjsKIAkgICAgfQogCSAgZWxzZSBpZiAoY29kZS0+ZXhw cjMgJiYgY29kZS0+ZXhwcjMtPnRzLnR5cGUgIT0gQlRfQ0xBU1MpCi0JICAg IHRtcCA9IFRZUEVfU0laRV9VTklUIChnZmNfdHlwZW5vZGVfZm9yX3NwZWMg KCZjb2RlLT5leHByMy0+dHMpKTsKKwkgICAgbWVtc3ogPSBUWVBFX1NJWkVf VU5JVCAoZ2ZjX3R5cGVub2RlX2Zvcl9zcGVjICgmY29kZS0+ZXhwcjMtPnRz KSk7CiAJICBlbHNlIGlmIChjb2RlLT5leHQuYWxsb2MudHMudHlwZSAhPSBC VF9VTktOT1dOKQotCSAgICB0bXAgPSBUWVBFX1NJWkVfVU5JVCAoZ2ZjX3R5 cGVub2RlX2Zvcl9zcGVjICgmY29kZS0+ZXh0LmFsbG9jLnRzKSk7CisJICAg IG1lbXN6ID0gVFlQRV9TSVpFX1VOSVQgKGdmY190eXBlbm9kZV9mb3Jfc3Bl YyAoJmNvZGUtPmV4dC5hbGxvYy50cykpOwogCSAgZWxzZQotCSAgICB0bXAg PSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChUUkVFX1RZUEUgKHNlLmV4 cHIpKSk7CisJICAgIG1lbXN6ID0gVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQ RSAoVFJFRV9UWVBFIChzZS5leHByKSkpOwogCi0JICBpZiAoZXhwci0+dHMu dHlwZSA9PSBCVF9DSEFSQUNURVIgJiYgdG1wID09IE5VTExfVFJFRSkKLQkg ICAgdG1wID0gc2Uuc3RyaW5nX2xlbmd0aDsKKwkgIGlmIChleHByLT50cy50 eXBlID09IEJUX0NIQVJBQ1RFUiAmJiBtZW1zeiA9PSBOVUxMX1RSRUUpCisJ ICAgIG1lbXN6ID0gc2Uuc3RyaW5nX2xlbmd0aDsKIAotCSAgdG1wID0gZ2Zj X2FsbG9jYXRlX3dpdGhfc3RhdHVzICgmc2UucHJlLCB0bXAsIHBzdGF0KTsK KwkgIHRtcCA9IGdmY19hbGxvY2F0ZV93aXRoX3N0YXR1cyAoJnNlLnByZSwg bWVtc3osIHBzdGF0KTsKIAkgIHRtcCA9IGZvbGRfYnVpbGQyIChNT0RJRllf RVhQUiwgdm9pZF90eXBlX25vZGUsIHNlLmV4cHIsCiAJCQkgICAgIGZvbGRf Y29udmVydCAoVFJFRV9UWVBFIChzZS5leHByKSwgdG1wKSk7CiAJICBnZmNf YWRkX2V4cHJfdG9fYmxvY2sgKCZzZS5wcmUsIHRtcCk7CkBAIC00MDc1LDIx ICs0MDc2LDE3IEBAIGdmY190cmFuc19hbGxvY2F0ZSAoZ2ZjX2NvZGUgKiBj b2RlKQogICAgICAgaWYgKGNvZGUtPmV4cHIzKQogCXsKIAkgIGdmY19leHBy ICpyaHMgPSBnZmNfY29weV9leHByIChjb2RlLT5leHByMyk7Ci0JICBpZiAo cmhzLT50cy50eXBlID09IEJUX0NMQVNTKQorCSAgaWYgKGFsLT5leHByLT50 cy50eXBlID09IEJUX0NMQVNTKQogCSAgICB7Ci0JICAgICAgZ2ZjX3NlIGRz dCxzcmMsbGVuOwotCSAgICAgIGdmY19leHByICpzejsKLQkgICAgICBnZmNf YWRkX2NvbXBvbmVudF9yZWYgKHJocywgIiRkYXRhIik7Ci0JICAgICAgc3og PSBnZmNfY29weV9leHByIChjb2RlLT5leHByMyk7Ci0JICAgICAgZ2ZjX2Fk ZF9jb21wb25lbnRfcmVmIChzeiwgIiRzaXplIik7CisJICAgICAgZ2ZjX3Nl IGRzdCxzcmM7CisJICAgICAgaWYgKHJocy0+dHMudHlwZSA9PSBCVF9DTEFT UykKKwkJZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChyaHMsICIkZGF0YSIpOwog CSAgICAgIGdmY19pbml0X3NlICgmZHN0LCBOVUxMKTsKIAkgICAgICBnZmNf aW5pdF9zZSAoJnNyYywgTlVMTCk7Ci0JICAgICAgZ2ZjX2luaXRfc2UgKCZs ZW4sIE5VTEwpOwogCSAgICAgIGdmY19jb252X2V4cHIgKCZkc3QsIGV4cHIp OwogCSAgICAgIGdmY19jb252X2V4cHIgKCZzcmMsIHJocyk7Ci0JICAgICAg Z2ZjX2NvbnZfZXhwciAoJmxlbiwgc3opOwotCSAgICAgIGdmY19mcmVlX2V4 cHIgKHN6KTsKLQkgICAgICB0bXAgPSBnZmNfYnVpbGRfbWVtY3B5X2NhbGwg KGRzdC5leHByLCBzcmMuZXhwciwgbGVuLmV4cHIpOworCSAgICAgIGdmY19h ZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywgJnNyYy5wcmUpOworCSAgICAg IHRtcCA9IGdmY19idWlsZF9tZW1jcHlfY2FsbCAoZHN0LmV4cHIsIHNyYy5l eHByLCBtZW1zeik7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgdG1wID0gZ2Zj X3RyYW5zX2Fzc2lnbm1lbnQgKGdmY19leHByX3RvX2luaXRpYWxpemUgKGV4 cHIpLApAQCAtNDEwOCw4ICs0MTA1LDcgQEAgZ2ZjX3RyYW5zX2FsbG9jYXRl IChnZmNfY29kZSAqIGNvZGUpCiAJICBnZmNfY29udl9leHByICgmZHN0LCBl eHByKTsKIAkgIGdmY19jb252X2V4cHIgKCZzcmMsIGluaXRfZSk7CiAJICBn ZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgmYmxvY2ssICZzcmMucHJlKTsKLQkg IHRtcCA9IFRZUEVfU0laRV9VTklUIChnZmNfdHlwZW5vZGVfZm9yX3NwZWMg KCZjb2RlLT5leHQuYWxsb2MudHMpKTsKLQkgIHRtcCA9IGdmY19idWlsZF9t ZW1jcHlfY2FsbCAoZHN0LmV4cHIsIHNyYy5leHByLCB0bXApOworCSAgdG1w ID0gZ2ZjX2J1aWxkX21lbWNweV9jYWxsIChkc3QuZXhwciwgc3JjLmV4cHIs IG1lbXN6KTsKIAkgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJmJsb2NrLCB0 bXApOwogCX0KICAgICAgIC8qIEFkZCBkZWZhdWx0IGluaXRpYWxpemVyIGZv ciB0aG9zZSBkZXJpdmVkIHR5cGVzIHRoYXQgbmVlZCB0aGVtLiAgKi8KQEAg LTQxMjcsNiArNDEyMyw3IEBAIGdmY190cmFuc19hbGxvY2F0ZSAoZ2ZjX2Nv ZGUgKiBjb2RlKQogICAgICAgaWYgKGV4cHItPnRzLnR5cGUgPT0gQlRfQ0xB U1MpCiAJewogCSAgZ2ZjX2V4cHIgKmxocywqcmhzOworCSAgZ2ZjX3NlIGxz ZTsKIAkgIC8qIEluaXRpYWxpemUgVklOREVYIGZvciBDTEFTUyBvYmplY3Rz LiAgKi8KIAkgIGxocyA9IGdmY19leHByX3RvX2luaXRpYWxpemUgKGV4cHIp OwogCSAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChsaHMsICIkdmluZGV4Iik7 CkBAIC00MTU4LDM2ICs0MTU1LDExIEBAIGdmY190cmFuc19hbGxvY2F0ZSAo Z2ZjX2NvZGUgKiBjb2RlKQogCSAgLyogSW5pdGlhbGl6ZSBTSVpFIGZvciBD TEFTUyBvYmplY3RzLiAgKi8KIAkgIGxocyA9IGdmY19leHByX3RvX2luaXRp YWxpemUgKGV4cHIpOwogCSAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChsaHMs ICIkc2l6ZSIpOwotCSAgcmhzID0gTlVMTDsKLQkgIGlmIChjb2RlLT5leHBy MyAmJiBjb2RlLT5leHByMy0+dHMudHlwZSA9PSBCVF9DTEFTUykKLQkgICAg ewotCSAgICAgIC8qIFNpemUgbXVzdCBiZSBkZXRlcm1pbmVkIGF0IHJ1biB0 aW1lLiAgKi8KLQkgICAgICByaHMgPSBnZmNfY29weV9leHByIChjb2RlLT5l eHByMyk7Ci0JICAgICAgZ2ZjX2FkZF9jb21wb25lbnRfcmVmIChyaHMsICIk c2l6ZSIpOwotCSAgICAgIHRtcCA9IGdmY190cmFuc19hc3NpZ25tZW50IChs aHMsIHJocywgZmFsc2UpOwotCSAgICAgIGdmY19hZGRfZXhwcl90b19ibG9j ayAoJmJsb2NrLCB0bXApOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkg ICAgICAvKiBTaXplIGlzIGZpeGVkIGF0IGNvbXBpbGUgdGltZS4gICovCi0J ICAgICAgZ2ZjX3R5cGVzcGVjICp0czsKLQkgICAgICBnZmNfc2UgbHNlOwot CSAgICAgIGdmY19pbml0X3NlICgmbHNlLCBOVUxMKTsKLQkgICAgICBnZmNf Y29udl9leHByICgmbHNlLCBsaHMpOwotCSAgICAgIGlmIChjb2RlLT5leHBy MykKLQkJdHMgPSAmY29kZS0+ZXhwcjMtPnRzOwotCSAgICAgIGVsc2UgaWYg KGNvZGUtPmV4dC5hbGxvYy50cy50eXBlID09IEJUX0RFUklWRUQpCi0JCXRz ID0gJmNvZGUtPmV4dC5hbGxvYy50czsKLQkgICAgICBlbHNlIGlmIChleHBy LT50cy50eXBlID09IEJUX0NMQVNTKQotCQl0cyA9ICZleHByLT50cy51LmRl cml2ZWQtPmNvbXBvbmVudHMtPnRzOwotCSAgICAgIGVsc2UKLQkJdHMgPSAm ZXhwci0+dHM7Ci0JICAgICAgdG1wID0gVFlQRV9TSVpFX1VOSVQgKGdmY190 eXBlbm9kZV9mb3Jfc3BlYyAodHMpKTsKLQkgICAgICBnZmNfYWRkX21vZGlm eSAoJmJsb2NrLCBsc2UuZXhwciwKLQkJCSAgICAgIGZvbGRfY29udmVydCAo VFJFRV9UWVBFIChsc2UuZXhwciksIHRtcCkpOwotCSAgICB9CisJICBnZmNf aW5pdF9zZSAoJmxzZSwgTlVMTCk7CisJICBnZmNfY29udl9leHByICgmbHNl LCBsaHMpOworCSAgZ2ZjX2FkZF9tb2RpZnkgKCZibG9jaywgbHNlLmV4cHIs CisJCQkgIGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChsc2UuZXhwciksIG1l bXN6KSk7CiAJICBnZmNfZnJlZV9leHByIChsaHMpOwotCSAgZ2ZjX2ZyZWVf ZXhwciAocmhzKTsKIAl9CiAKICAgICB9CkluZGV4OiBnY2MvZm9ydHJhbi90 cmFucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9mb3J0cmFu L3RyYW5zLmMJKFJldmlzaW9uIDE1MzU0MSkKKysrIGdjYy9mb3J0cmFuL3Ry YW5zLmMJKEFyYmVpdHNrb3BpZSkKQEAgLTEyNzksMTYgKzEyNzksOSBAQCBn ZmNfdHJhbnNfY29kZSAoZ2ZjX2NvZGUgKiBjb2RlKQogCiAgICAgICBnZmNf c2V0X2JhY2tlbmRfbG9jdXMgKCZjb2RlLT5sb2MpOwogCisgICAgICAvKiBB ZGQgdGhlIG5ldyBzdGF0ZW1lbnQgdG8gdGhlIGJsb2NrLiAgKi8KICAgICAg IGlmIChyZXMgIT0gTlVMTF9UUkVFICYmICEgSVNfRU1QVFlfU1RNVCAocmVz KSkKLQl7Ci0JICBpZiAoVFJFRV9DT0RFIChyZXMpID09IFNUQVRFTUVOVF9M SVNUKQotCSAgICB0cmVlX2Fubm90YXRlX2FsbF93aXRoX2xvY2F0aW9uICgm cmVzLCBpbnB1dF9sb2NhdGlvbik7Ci0JICBlbHNlCi0JICAgIFNFVF9FWFBS X0xPQ0FUSU9OIChyZXMsIGlucHV0X2xvY2F0aW9uKTsKLQkgICAgCi0JICAv KiBBZGQgdGhlIG5ldyBzdGF0ZW1lbnQgdG8gdGhlIGJsb2NrLiAgKi8KLQkg IGdmY19hZGRfZXhwcl90b19ibG9jayAoJmJsb2NrLCByZXMpOwotCX0KKwln ZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZibG9jaywgcmVzKTsKICAgICB9CiAK ICAgLyogUmV0dXJuIHRoZSBmaW5pc2hlZCBibG9jay4gICovCkluZGV4OiBn Y2MvZ2ltcGxpZnkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Z2ltcGxpZnkuYwkoUmV2aXNpb24gMTUzNTQxKQorKysgZ2NjL2dpbXBsaWZ5 LmMJKEFyYmVpdHNrb3BpZSkKQEAgLTg3MiwzMCArODcyLDcgQEAgYW5ub3Rh dGVfYWxsX3dpdGhfbG9jYXRpb24gKGdpbXBsZV9zZXEgc3RtdF9wLCBsb2MK ICAgICB9CiB9CiAKLS8qIFNhbWUsIGJ1dCBmb3Igc3RhdGVtZW50IG9yIHN0 YXRlbWVudCBsaXN0IGluICpTVE1UX1AuICAqLwogCi12b2lkCi10cmVlX2Fu bm90YXRlX2FsbF93aXRoX2xvY2F0aW9uICh0cmVlICpzdG10X3AsIGxvY2F0 aW9uX3QgbG9jYXRpb24pCi17Ci0gIHRyZWVfc3RtdF9pdGVyYXRvciBpOwot Ci0gIGlmICghKnN0bXRfcCkKLSAgICByZXR1cm47Ci0KLSAgZm9yIChpID0g dHNpX3N0YXJ0ICgqc3RtdF9wKTsgIXRzaV9lbmRfcCAoaSk7IHRzaV9uZXh0 ICgmaSkpCi0gICAgewotICAgICAgdHJlZSB0ID0gdHNpX3N0bXQgKGkpOwot Ci0gICAgICAvKiBBc3N1bWluZyB3ZSd2ZSBhbHJlYWR5IGJlZW4gZ2ltcGxp ZmllZCwgd2Ugc2hvdWxkbid0Ci0JICBzZWUgbmVzdGVkIGNoYWluaW5nIGNv bnN0cnVjdHMgYW55bW9yZS4gICovCi0gICAgICBnY2NfYXNzZXJ0IChUUkVF X0NPREUgKHQpICE9IFNUQVRFTUVOVF9MSVNUCi0JCSAgJiYgVFJFRV9DT0RF ICh0KSAhPSBDT01QT1VORF9FWFBSKTsKLQotICAgICAgdHJlZV9hbm5vdGF0 ZV9vbmVfd2l0aF9sb2NhdGlvbiAodCwgbG9jYXRpb24pOwotICAgIH0KLX0K LQotCiAvKiBTaW1pbGFyIHRvIGNvcHlfdHJlZV9yKCkgYnV0IGRvIG5vdCBj b3B5IFNBVkVfRVhQUiBvciBUQVJHRVRfRVhQUiBub2Rlcy4KICAgIFRoZXNl IG5vZGVzIG1vZGVsIGNvbXB1dGF0aW9ucyB0aGF0IHNob3VsZCBvbmx5IGJl IGRvbmUgb25jZS4gIElmIHdlCiAgICB3ZXJlIHRvIHVuc2hhcmUgc29tZXRo aW5nIGxpa2UgU0FWRV9FWFBSKGkrKyksIHRoZSBnaW1wbGlmaWNhdGlvbgpJ bmRleDogZ2NjL2dpbXBsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGdjYy9naW1wbGUuaAkoUmV2aXNpb24gMTUzNTQxKQorKysgZ2NjL2dpbXBs ZS5oCShBcmJlaXRza29waWUpCkBAIC05MzksNyArOTM5LDYgQEAgZXh0ZXJu IHRyZWUgY3JlYXRlX3RtcF92YXIgKHRyZWUsIGNvbnN0IGNoYXIgKik7CiBl eHRlcm4gdHJlZSBnZXRfaW5pdGlhbGl6ZWRfdG1wX3ZhciAodHJlZSwgZ2lt cGxlX3NlcSAqLCBnaW1wbGVfc2VxICopOwogZXh0ZXJuIHRyZWUgZ2V0X2Zv cm1hbF90bXBfdmFyICh0cmVlLCBnaW1wbGVfc2VxICopOwogZXh0ZXJuIHZv aWQgZGVjbGFyZV92YXJzICh0cmVlLCBnaW1wbGUsIGJvb2wpOwotZXh0ZXJu IHZvaWQgdHJlZV9hbm5vdGF0ZV9hbGxfd2l0aF9sb2NhdGlvbiAodHJlZSAq LCBsb2NhdGlvbl90KTsKIGV4dGVybiB2b2lkIGFubm90YXRlX2FsbF93aXRo X2xvY2F0aW9uIChnaW1wbGVfc2VxLCBsb2NhdGlvbl90KTsKIAogLyogVmFs aWRhdGlvbiBvZiBHSU1QTEUgZXhwcmVzc2lvbnMuICBOb3RlIHRoYXQgdGhl c2UgcHJlZGljYXRlcyBvbmx5IGNoZWNrCg== --0016e6daa82b382a3c0476c70eb9--