From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) by sourceware.org (Postfix) with ESMTPS id 85CEB3858C60; Wed, 29 Nov 2023 11:04:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 85CEB3858C60 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 85CEB3858C60 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::436 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701255886; cv=none; b=HasQUqQRfiPIj9EjNH2oKUmzJLzzG75iirggZKQVOpTwX416WJ+J0So7F1+xIuPYP4Mm4SjJCVp6Tov0BILSik0/DjbrFvLKQgVCKfVObZFwHGvRR3IcmcU6PHdJNy3+x3ATCrQTTdEu6KQT8vThP+rDqfXmDzy4zrz9mG+IOwU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701255886; c=relaxed/simple; bh=BbTaBU5QGe27geEgExUUKr7uXzlhcOiZSsA5oTpIU4s=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=o190Y8V/9rd2DssUTLf9ZLL729NZjIZh+E9SfBTcPYIVkjm4KR6+ZYLnFZktWekqtwEsNuzV1LsfE8sIy6zZxKCEODfaBljDeWvVM3Rk6lo4TmEZroH4aUU2G6Kkm40YJRcu7roeJzcT8xKqlo5Kqg7JsyFKfmZ7o5qfmQPGwv8= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-6cb4d366248so5607743b3a.0; Wed, 29 Nov 2023 03:04:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701255882; x=1701860682; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=s56nC8o2QmaoJEkQZfr7RbNROGCNpVuUgu4O+XzHeuA=; b=kKU6LVKNZXWFey7dl0Y2QSADyfX1m3ClLfWdw0DXyz7d7o8i+062Eeq88waOXNP3eY kkXpu/GMzTYxm6ZQtOUXAvJdsJZ/6z8OZ723AtgrgSfHtljOPH0Lp7e9PYfhDvRUwy5n sCOBFyqyymdpoD+YjtwScWe45kxXsFkNeRN9rcYRxv1L72z5wQGKIUBuomfCgMVpv3na u2zIKOSHAiVtmVs9F3EUdLXw7pC24VVZzZ2+3csAe4JxLe/E6Yo7DyfswNqvmY8gYt5B CR5UxQToxJJS1gjNpFYmgpeIX8LLmo73TD1Ehhg1KF6uyvuecnSgAfZqvxn0tefNMYSt cgWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701255882; x=1701860682; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=s56nC8o2QmaoJEkQZfr7RbNROGCNpVuUgu4O+XzHeuA=; b=d7/QT52wwUmIT0Q418bs6o3LO82YG/OjEMyjIvphi8NHrDRBH9LPczJDv2oQm8AIvM Fvy2k6jreOIQhV9iwo3+TQir4ecu5WqvZujHZWAL0ToIwf22PJwtOUaBToZjdgw8jNb9 +WYwNEiAG3nPBMGBlCH9iq8nhcUZWPzPWLSi1GZKtSZOwzEN31dFVcqW2FyKKFiy/Iy7 FuGX/+PXe701x10HMlKvq9GERQjYOyvdeIz9v5zDzcfsnRx7JeXMymw10dNtjZpGOYIE sRjNL5J7TmV1Na9PGCKEpwwqWPKJOnqDLEa4IRuxOKIcZru+UYyqO3f6Y0uIOONJ3b0A G+Ag== X-Gm-Message-State: AOJu0Yw9qqA+7+iEsg6kQ1drwcgmSqQ9Hxjyclwjk5v8XWvnaT7Ujv0V pRcKwoJYtf7MIDqswAYkXY4G1I6XhwD1ziSTdOw= X-Google-Smtp-Source: AGHT+IH+NteI1+Le6PDZo/LxAGDK6AVxhZlFOGZLHiolO0eRU5qC8h/Af6EJiK74pw8TbdZSzoTSVhYd06CYYdcaqtE= X-Received: by 2002:a05:6a20:3d13:b0:18c:177d:2122 with SMTP id y19-20020a056a203d1300b0018c177d2122mr16981210pzi.2.1701255881827; Wed, 29 Nov 2023 03:04:41 -0800 (PST) MIME-Version: 1.0 References: <4733a0ea-1a3e-4cf3-8b1e-3e1efac91dd0@codesourcery.com> In-Reply-To: <4733a0ea-1a3e-4cf3-8b1e-3e1efac91dd0@codesourcery.com> From: Paul Richard Thomas Date: Wed, 29 Nov 2023 11:04:30 +0000 Message-ID: Subject: Re: [PATCH v2] Fortran: fix reallocation on assignment of polymorphic variables [PR110415] To: Andrew Jenner Cc: gcc Patches , fortran@gcc.gnu.org, Tobias Burnus Content-Type: multipart/mixed; boundary="0000000000008268d6060b488036" X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,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 List-Id: --0000000000008268d6060b488036 Content-Type: multipart/alternative; boundary="0000000000008268d5060b488034" --0000000000008268d5060b488034 Content-Type: text/plain; charset="UTF-8" Hi Andrew, This is OK by me. I attach a slightly edited version of the patch itself in the hope that it will make the code a bit clearer. Thanks and welcome! Paul On Mon, 27 Nov 2023 at 17:35, Andrew Jenner wrote: > This is the second version of the patch - previous discussion at: > https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636671.html > > This patch adds the testcase from PR110415 and fixes the bug. > > The problem is that in a couple of places in trans_class_assignment in > trans-expr.cc, we need to get the run-time size of the polymorphic > object from the vtbl, but we are currently getting that vtbl from the > lhs of the assignment rather than the rhs. This gives us the old value > of the size but we need to pass the new size to __builtin_malloc and > __builtin_realloc. > > I'm fixing this by adding a parameter to trans_class_vptr_len_assignment > to retrieve the tree corresponding the vptr from the object on the rhs > of the assignment, and then passing this where it is needed. In the case > where trans_class_vptr_len_assignment returns NULL_TREE for the rhs vptr > we use the lhs vptr as before. > > To get this to work I also needed to change the implementation of > trans_class_vptr_len_assignment to create a temporary for the assignment > in more circumstances. Currently, the "a = func()" assignment in MAIN__ > doesn't hit the "Create a temporary for complication expressions" case > on line 9951 because "DECL_P (rse->expr)" is true - the expression has > already been placed into a temporary. That means we don't hit the "if > (temp_rhs ..." case on line 10038 and go on to get the vptr_expr from > "gfc_lval_expr_from_sym (gfc_find_vtab (&re->ts))" on line 10057 which > is the vtbl of the static type rather than the dynamic one from the rhs. > So with this fix we create an extra temporary, but that should be > optimised away in the middle-end so there should be no run-time effect. > > I'm not sure if this is the best way to fix this (the Fortran front-end > is new territory for me) but I've verified that the testcase passes with > this change, fails without it, and that the change does not introduce > any FAILs when running the gfortran testcases on x86_64-pc-linux-gnu. > > After the previous submission, Tobias Burnus found a closely related > problem and contributed testcases and a fix for it, which I have > incorporated into this version of the patch. The problem in this case is > with the __builtin_realloc call that is executed if one polymorphic > variable is replaced by another. The return value of this call was being > ignored rather than used to replace the pointer being reallocated. > > Is this OK for mainline, GCC 13 and OG13? > > Thanks, > > Andrew > > gcc/fortran/ > PR fortran/110415 > * trans-expr.cc (trans_class_vptr_len_assignment): Add > from_vptrp parameter. Populate it. Don't check for DECL_P > when deciding whether to create temporary. > (trans_class_pointer_fcn, gfc_trans_pointer_assignment): Add > NULL argument to trans_class_vptr_len_assignment calls. > (trans_class_assignment): Get rhs_vptr from > trans_class_vptr_len_assignment and use it for determining size > for allocation/reallocation. Use return value from realloc. > > gcc/testsuite/ > PR fortran/110415 > * gfortran.dg/pr110415.f90: New test. > * gfortran.dg/asan/pr110415-2.f90: New test. > * gfortran.dg/asan/pr110415-3.f90: New test. --0000000000008268d5060b488034-- --0000000000008268d6060b488036 Content-Type: text/x-patch; charset="US-ASCII"; name="pr110415_prt.diff" Content-Disposition: attachment; filename="pr110415_prt.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpjntami0 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuY2MgYi9nY2Mv Zm9ydHJhbi90cmFucy1leHByLmNjCmluZGV4IDFiOGJlMDgxYTE3Li4zNWIw MDBiZjhkNSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5j YworKysgYi9nY2MvZm9ydHJhbi90cmFucy1leHByLmNjCkBAIC05ODkyLDcg Kzk4OTIsOSBAQCB0cmFuc19nZXRfdXBvbHlfbGVuIChzdG10YmxvY2tfdCAq YmxvY2ssIGdmY19leHByICpleHByKQogc3RhdGljIHRyZWUKIHRyYW5zX2Ns YXNzX3ZwdHJfbGVuX2Fzc2lnbm1lbnQgKHN0bXRibG9ja190ICpibG9jaywg Z2ZjX2V4cHIgKiBsZSwKIAkJCQkgZ2ZjX2V4cHIgKiByZSwgZ2ZjX3NlICpy c2UsCi0JCQkJIHRyZWUgKiB0b19sZW5wLCB0cmVlICogZnJvbV9sZW5wKQor CQkJCSB0cmVlICogdG9fbGVucCA9IE5VTEwsCisJCQkJIHRyZWUgKiBmcm9t X2xlbnAgPSBOVUxMLAorCQkJCSB0cmVlICogZnJvbV92cHRycCA9IE5VTEwp CiB7CiAgIGdmY19zZSBzZTsKICAgZ2ZjX2V4cHIgKiB2cHRyX2V4cHI7CkBA IC05OTAwLDEyICs5OTAyLDE1IEBAIHRyYW5zX2NsYXNzX3ZwdHJfbGVuX2Fz c2lnbm1lbnQgKHN0bXRibG9ja190ICpibG9jaywgZ2ZjX2V4cHIgKiBsZSwK ICAgYm9vbCBzZXRfdnB0ciA9IGZhbHNlLCB0ZW1wX3JocyA9IGZhbHNlOwog ICBzdG10YmxvY2tfdCAqcHJlID0gYmxvY2s7CiAgIHRyZWUgY2xhc3NfZXhw ciA9IE5VTExfVFJFRTsKKyAgdHJlZSBmcm9tX3ZwdHIgPSBOVUxMX1RSRUU7 CiAKICAgLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZvciBjb21wbGljYXRlZCBl eHByZXNzaW9ucy4gICovCi0gIGlmIChyZS0+ZXhwcl90eXBlICE9IEVYUFJf VkFSSUFCTEUgJiYgcmUtPmV4cHJfdHlwZSAhPSBFWFBSX05VTEwKLSAgICAg ICYmIHJzZS0+ZXhwciAhPSBOVUxMX1RSRUUgJiYgIURFQ0xfUCAocnNlLT5l eHByKSkKKyAgaWYgKHJlLT5leHByX3R5cGUgIT0gRVhQUl9WQVJJQUJMRQor ICAgICAgJiYgcmUtPmV4cHJfdHlwZSAhPSBFWFBSX05VTEwKKyAgICAgICYm IHJzZS0+ZXhwciAhPSBOVUxMX1RSRUUpCiAgICAgewotICAgICAgaWYgKHJl LT50cy50eXBlID09IEJUX0NMQVNTICYmICFHRkNfQ0xBU1NfVFlQRV9QIChU UkVFX1RZUEUgKHJzZS0+ZXhwcikpKQorICAgICAgaWYgKHJlLT50cy50eXBl ID09IEJUX0NMQVNTCisgICAgICAgICAgJiYgIUdGQ19DTEFTU19UWVBFX1Ag KFRSRUVfVFlQRSAocnNlLT5leHByKSkpCiAJY2xhc3NfZXhwciA9IGdmY19n ZXRfY2xhc3NfZnJvbV9leHByIChyc2UtPmV4cHIpOwogCiAgICAgICBpZiAo cnNlLT5sb29wKQpAQCAtOTk1OSw4ICs5OTY0LDggQEAgdHJhbnNfY2xhc3Nf dnB0cl9sZW5fYXNzaWdubWVudCAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNf ZXhwciAqIGxlLAogICAgICAgLyogR2V0IHRoZSB2cHRyIGZyb20gdGhlIHJo cyBleHByZXNzaW9uIG9ubHksIHdoZW4gaXQgaXMgdmFyaWFibGUuCiAJIEZ1 bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gYmUgYXNzaWduZWQgdG8gYSB0ZW1w b3JhcnkgYmVmb3JlaGFuZC4gICovCiAgICAgICB2cHRyX2V4cHIgPSAocmUt PmV4cHJfdHlwZSA9PSBFWFBSX1ZBUklBQkxFICYmIHJlLT50cy50eXBlID09 IEJUX0NMQVNTKQotCSAgPyBnZmNfZmluZF9hbmRfY3V0X2F0X2xhc3RfY2xh c3NfcmVmIChyZSkKLQkgIDogTlVMTDsKKwkJICA/IGdmY19maW5kX2FuZF9j dXRfYXRfbGFzdF9jbGFzc19yZWYgKHJlKQorCQkgIDogTlVMTDsKICAgICAg IGlmICh2cHRyX2V4cHIgIT0gTlVMTCAmJiB2cHRyX2V4cHItPnRzLnR5cGUg PT0gQlRfQ0xBU1MpCiAJewogCSAgaWYgKHRvX2xlbiAhPSBOVUxMX1RSRUUp CkBAIC0xMDAwMCw2ICsxMDAwNSw3IEBAIHRyYW5zX2NsYXNzX3ZwdHJfbGVu X2Fzc2lnbm1lbnQgKHN0bXRibG9ja190ICpibG9jaywgZ2ZjX2V4cHIgKiBs ZSwKIAkJdG1wID0gcnNlLT5leHByOwogCiAJICAgICAgc2UuZXhwciA9IGdm Y19jbGFzc192cHRyX2dldCAodG1wKTsKKwkgICAgICBmcm9tX3ZwdHIgPSBz ZS5leHByOwogCSAgICAgIGlmIChVTkxJTUlURURfUE9MWSAocmUpKQogCQlm cm9tX2xlbiA9IGdmY19jbGFzc19sZW5fZ2V0ICh0bXApOwogCkBAIC0xMDAy MSw5ICsxMDAyNywxMCBAQCB0cmFuc19jbGFzc192cHRyX2xlbl9hc3NpZ25t ZW50IChzdG10YmxvY2tfdCAqYmxvY2ssIGdmY19leHByICogbGUsCiAJICBn ZmNfZnJlZV9leHByICh2cHRyX2V4cHIpOwogCSAgZ2ZjX2FkZF9ibG9ja190 b19ibG9jayAoYmxvY2ssICZzZS5wcmUpOwogCSAgZ2NjX2Fzc2VydCAoc2Uu cG9zdC5oZWFkID09IE5VTExfVFJFRSk7CisJICBmcm9tX3ZwdHIgPSBzZS5l eHByOwogCX0KLSAgICAgIGdmY19hZGRfbW9kaWZ5IChwcmUsIGxoc192cHRy LCBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAobGhzX3ZwdHIpLAotCQkJCQkJ c2UuZXhwcikpOworICAgICAgZ2ZjX2FkZF9tb2RpZnkgKHByZSwgbGhzX3Zw dHIsCisJCSAgICAgIGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChsaHNfdnB0 ciksIHNlLmV4cHIpKTsKIAogICAgICAgaWYgKHRvX2xlbiAhPSBOVUxMX1RS RUUpCiAJewpAQCAtMTAwNDksMTEgKzEwMDU2LDEzIEBAIHRyYW5zX2NsYXNz X3ZwdHJfbGVuX2Fzc2lnbm1lbnQgKHN0bXRibG9ja190ICpibG9jaywgZ2Zj X2V4cHIgKiBsZSwKIAl9CiAgICAgfQogCi0gIC8qIFJldHVybiB0aGUgX2xl biB0cmVlcyBvbmx5LCB3aGVuIHJlcXVlc3RlZC4gICovCisgIC8qIFJldHVy biB0aGUgX2xlbiBhbmQgX3ZwdHIgdHJlZXMgb25seSwgd2hlbiByZXF1ZXN0 ZWQuICAqLwogICBpZiAodG9fbGVucCkKICAgICAqdG9fbGVucCA9IHRvX2xl bjsKICAgaWYgKGZyb21fbGVucCkKICAgICAqZnJvbV9sZW5wID0gZnJvbV9s ZW47CisgIGlmIChmcm9tX3ZwdHJwKQorICAgICpmcm9tX3ZwdHJwID0gZnJv bV92cHRyOwogICByZXR1cm4gbGhzX3ZwdHI7CiB9CiAKQEAgLTEwMTIwLDkg KzEwMTI5LDcgQEAgdHJhbnNfY2xhc3NfcG9pbnRlcl9mY24gKHN0bXRibG9j a190ICpibG9jaywgZ2ZjX3NlICpsc2UsIGdmY19zZSAqcnNlLAogICAgICAg cnNlLT5leHByID0gZ2ZjX2NsYXNzX2RhdGFfZ2V0IChyc2UtPmV4cHIpOwog ICBlbHNlCiAgICAgewotICAgICAgZXhwcjFfdnB0ciA9IHRyYW5zX2NsYXNz X3ZwdHJfbGVuX2Fzc2lnbm1lbnQgKGJsb2NrLCBleHByMSwKLQkJCQkJCSAg ICBleHByMiwgcnNlLAotCQkJCQkJICAgIE5VTEwsIE5VTEwpOworICAgICAg ZXhwcjFfdnB0ciA9IHRyYW5zX2NsYXNzX3ZwdHJfbGVuX2Fzc2lnbm1lbnQg KGJsb2NrLCBleHByMSwgZXhwcjIsIHJzZSk7CiAgICAgICBnZmNfYWRkX2Js b2NrX3RvX2Jsb2NrIChibG9jaywgJnJzZS0+cHJlKTsKICAgICAgIHRtcCA9 IGdmY19jcmVhdGVfdmFyIChUUkVFX1RZUEUgKHJzZS0+ZXhwciksICJwdHJ0 ZW1wIik7CiAgICAgICBnZmNfYWRkX21vZGlmeSAoJmxzZS0+cHJlLCB0bXAs IHJzZS0+ZXhwcik7CkBAIC0xMDE5Nyw4ICsxMDIwNCw3IEBAIGdmY190cmFu c19wb2ludGVyX2Fzc2lnbm1lbnQgKGdmY19leHByICogZXhwcjEsIGdmY19l eHByICogZXhwcjIpCiAKICAgICAgIGlmIChub25fcHJvY19wdHJfYXNzaWdu ICYmIGV4cHIxLT50cy50eXBlID09IEJUX0NMQVNTKQogCXsKLQkgIHRyYW5z X2NsYXNzX3ZwdHJfbGVuX2Fzc2lnbm1lbnQgKCZibG9jaywgZXhwcjEsIGV4 cHIyLCAmcnNlLCBOVUxMLAotCQkJCQkgICBOVUxMKTsKKwkgIHRyYW5zX2Ns YXNzX3ZwdHJfbGVuX2Fzc2lnbm1lbnQgKCZibG9jaywgZXhwcjEsIGV4cHIy LCAmcnNlKTsKIAkgIGxzZS5leHByID0gZ2ZjX2NsYXNzX2RhdGFfZ2V0IChs c2UuZXhwcik7CiAJfQogCkBAIC0xMDMyNiw4ICsxMDMzMiw3IEBAIGdmY190 cmFuc19wb2ludGVyX2Fzc2lnbm1lbnQgKGdmY19leHByICogZXhwcjEsIGdm Y19leHByICogZXhwcjIpCiAJICAgICAgc3RybGVuX3JocyA9IHJzZS5zdHJp bmdfbGVuZ3RoOwogCSAgICAgIGlmIChleHByMS0+dHMudHlwZSA9PSBCVF9D TEFTUykKIAkJZXhwcjFfdnB0ciA9IHRyYW5zX2NsYXNzX3ZwdHJfbGVuX2Fz c2lnbm1lbnQgKCZibG9jaywgZXhwcjEsCi0JCQkJCQkJICAgICAgZXhwcjIs ICZyc2UsCi0JCQkJCQkJICAgICAgTlVMTCwgTlVMTCk7CisJCQkJCQkJICAg ICAgZXhwcjIsICZyc2UpOwogCSAgICB9CiAJfQogICAgICAgZWxzZSBpZiAo ZXhwcjItPmV4cHJfdHlwZSA9PSBFWFBSX1ZBUklBQkxFKQpAQCAtMTAzNDMs OCArMTAzNDgsNyBAQCBnZmNfdHJhbnNfcG9pbnRlcl9hc3NpZ25tZW50IChn ZmNfZXhwciAqIGV4cHIxLCBnZmNfZXhwciAqIGV4cHIyKQogCSAgICB7CiAJ ICAgICAgcnNlLmV4cHIgPSBOVUxMX1RSRUU7CiAJICAgICAgcnNlLnN0cmlu Z19sZW5ndGggPSBzdHJsZW5fcmhzOwotCSAgICAgIHRyYW5zX2NsYXNzX3Zw dHJfbGVuX2Fzc2lnbm1lbnQgKCZibG9jaywgZXhwcjEsIGV4cHIyLCAmcnNl LAotCQkJCQkgICAgICAgTlVMTCwgTlVMTCk7CisJICAgICAgdHJhbnNfY2xh c3NfdnB0cl9sZW5fYXNzaWdubWVudCAoJmJsb2NrLCBleHByMSwgZXhwcjIs ICZyc2UpOwogCSAgICB9CiAKIAkgIGlmIChyZW1hcCA9PSBOVUxMKQpAQCAt MTAzNzYsOCArMTAzODAsNyBAQCBnZmNfdHJhbnNfcG9pbnRlcl9hc3NpZ25t ZW50IChnZmNfZXhwciAqIGV4cHIxLCBnZmNfZXhwciAqIGV4cHIyKQogCSAg ZWxzZQogCSAgICB7CiAJICAgICAgZXhwcjFfdnB0ciA9IHRyYW5zX2NsYXNz X3ZwdHJfbGVuX2Fzc2lnbm1lbnQgKCZibG9jaywgZXhwcjEsCi0JCQkJCQkJ ICAgIGV4cHIyLCAmcnNlLCBOVUxMLAotCQkJCQkJCSAgICBOVUxMKTsKKwkJ CQkJCQkgICAgZXhwcjIsICZyc2UpOwogCSAgICAgIGdmY19hZGRfYmxvY2tf dG9fYmxvY2sgKCZibG9jaywgJnJzZS5wcmUpOwogCSAgICAgIHRtcCA9IGdm Y19jcmVhdGVfdmFyIChUUkVFX1RZUEUgKHJzZS5leHByKSwgInB0cnRlbXAi KTsKIAkgICAgICBnZmNfYWRkX21vZGlmeSAoJmxzZS5wcmUsIHRtcCwgcnNl LmV4cHIpOwpAQCAtMTE3NzUsNyArMTE3NzgsNyBAQCB0cmFuc19jbGFzc19h c3NpZ25tZW50IChzdG10YmxvY2tfdCAqYmxvY2ssIGdmY19leHByICpsaHMs IGdmY19leHByICpyaHMsCiAJCQlnZmNfc2UgKmxzZSwgZ2ZjX3NlICpyc2Us IGJvb2wgdXNlX3ZwdHJfY29weSwKIAkJCWJvb2wgY2xhc3NfcmVhbGxvYykK IHsKLSAgdHJlZSB0bXAsIGZjbiwgc3RkY29weSwgdG9fbGVuLCBmcm9tX2xl biwgdnB0ciwgb2xkX3ZwdHI7CisgIHRyZWUgdG1wLCBmY24sIHN0ZGNvcHks IHRvX2xlbiwgZnJvbV9sZW4sIHZwdHIsIG9sZF92cHRyLCByaHNfdnB0cjsK ICAgdmVjPHRyZWUsIHZhX2djPiAqYXJncyA9IE5VTEw7CiAgIGJvb2wgZmlu YWxfZXhwcjsKIApAQCAtMTE3OTksNyArMTE4MDIsOSBAQCB0cmFuc19jbGFz c19hc3NpZ25tZW50IChzdG10YmxvY2tfdCAqYmxvY2ssIGdmY19leHByICps aHMsIGdmY19leHByICpyaHMsCiAgICAgfQogCiAgIHZwdHIgPSB0cmFuc19j bGFzc192cHRyX2xlbl9hc3NpZ25tZW50IChibG9jaywgbGhzLCByaHMsIHJz ZSwgJnRvX2xlbiwKLQkJCQkJICZmcm9tX2xlbik7CisJCQkJCSAgJmZyb21f bGVuLCAmcmhzX3ZwdHIpOworICBpZiAocmhzX3ZwdHIgPT0gTlVMTF9UUkVF KQorICAgIHJoc192cHRyID0gdnB0cjsKIAogICAvKiBHZW5lcmF0ZSAocmUp YWxsb2NhdGlvbiBvZiB0aGUgbGhzLiAgKi8KICAgaWYgKGNsYXNzX3JlYWxs b2MpCkBAIC0xMTgxMiw3ICsxMTgxNyw3IEBAIHRyYW5zX2NsYXNzX2Fzc2ln bm1lbnQgKHN0bXRibG9ja190ICpibG9jaywgZ2ZjX2V4cHIgKmxocywgZ2Zj X2V4cHIgKnJocywKICAgICAgIGVsc2UKIAlvbGRfdnB0ciA9IGJ1aWxkX2lu dF9jc3QgKFRSRUVfVFlQRSAodnB0ciksIDApOwogCi0gICAgICBzaXplID0g Z2ZjX3ZwdHJfc2l6ZV9nZXQgKHZwdHIpOworICAgICAgc2l6ZSA9IGdmY192 cHRyX3NpemVfZ2V0IChyaHNfdnB0cik7CiAgICAgICB0bXAgPSBsc2UtPmV4 cHI7CiAgICAgICBjbGFzc19oYW4gPSBHRkNfQ0xBU1NfVFlQRV9QIChUUkVF X1RZUEUgKHRtcCkpCiAJICA/IGdmY19jbGFzc19kYXRhX2dldCAodG1wKSA6 IHRtcDsKQEAgLTExODI2LDEyICsxMTgzMSwxNCBAQCB0cmFuc19jbGFzc19h c3NpZ25tZW50IChzdG10YmxvY2tfdCAqYmxvY2ssIGdmY19leHByICpsaHMs IGdmY19leHByICpyaHMsCiAKICAgICAgIC8qIFJlYWxsb2NhdGUgaWYgZHlu YW1pYyB0eXBlcyBhcmUgZGlmZmVyZW50LiAqLwogICAgICAgZ2ZjX2luaXRf YmxvY2sgKCZyZV9hbGxvYyk7CisgICAgICB0bXAgPSBmb2xkX2NvbnZlcnQg KHB2b2lkX3R5cGVfbm9kZSwgY2xhc3NfaGFuKTsKICAgICAgIHJlID0gYnVp bGRfY2FsbF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sCiAJCQkJYnVpbHRp bl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9SRUFMTE9DKSwgMiwKLQkJCQlm b2xkX2NvbnZlcnQgKHB2b2lkX3R5cGVfbm9kZSwgY2xhc3NfaGFuKSwKLQkJ CQlzaXplKTsKKwkJCQl0bXAsIHNpemUpOworICAgICAgcmUgPSBmb2xkX2J1 aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNT0RJRllfRVhQUiwgVFJFRV9U WVBFICh0bXApLCB0bXAsCisJCQkgICAgcmUpOwogICAgICAgdG1wID0gZm9s ZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTkVfRVhQUiwKLQkJCSAg ICAgbG9naWNhbF90eXBlX25vZGUsIHZwdHIsIG9sZF92cHRyKTsKKwkJCSAg ICAgbG9naWNhbF90eXBlX25vZGUsIHJoc192cHRyLCBvbGRfdnB0cik7CiAg ICAgICByZSA9IGZvbGRfYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENP TkRfRVhQUiwgdm9pZF90eXBlX25vZGUsCiAJCQkgICAgdG1wLCByZSwgYnVp bGRfZW1wdHlfc3RtdCAoaW5wdXRfbG9jYXRpb24pKTsKICAgICAgIGdmY19h ZGRfZXhwcl90b19ibG9jayAoJnJlX2FsbG9jLCByZSk7Cg== --0000000000008268d6060b488036--