From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 266373858429; Thu, 10 Mar 2022 11:44:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 266373858429 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.90,170,1643702400"; d="diff'?scan'208";a="72994258" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 10 Mar 2022 03:44:51 -0800 IronPort-SDR: mYC3sgTumC8i964IDjt4N/IN4ULLlRLhCYNcZSjy4UtGyriqJGvwXGCeurvdAkoA0Z8Vsuk8L7 6m3d/4fIpd8jqmeihsdipKXbQzoBCNQ/z2SbDVR8bJGTsis4ShVFO5ZwOXM2VFvAFmNRKkpxhs /AxtkFLKgz4HS3HGDL6ZCOhk/YZdVs+It4C0rEbRRM1MzBWYwU2rWD8G0m53Bi8hlq1VeH4Joy Q+2N1We/RuI99gOM4151AqHbYXeB7PHdwfi+T1LTwHjY+9vFk1JYS//GZhTihu12det90hle+R NYI= Content-Type: multipart/mixed; boundary="------------k0oz30jjVheld0vhbsLU7ui4" Message-ID: Date: Thu, 10 Mar 2022 12:44:44 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: [Patch] Fortran: OpenMP/OpenACC avoid uninit access in size calc for mapping Content-Language: en-US To: Thomas Schwinge , Tobias Burnus CC: Jakub Jelinek , , References: <877d92mbc6.fsf@euler.schwinge.homeip.net> From: Tobias Burnus In-Reply-To: <877d92mbc6.fsf@euler.schwinge.homeip.net> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Thu, 10 Mar 2022 11:44:55 -0000 --------------k0oz30jjVheld0vhbsLU7ui4 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Hi Thomas, hi all, (Updated patch attached =E2=80=93 only changes the goacc testcases. I intent to commit the patch tomorrow, unless more comments come up.) On 10.03.22 10:00, Thomas Schwinge wrote: [OpenACC testcases:] > I recently added that checking in ... [...] to document the status quo. > (1), as you have proposed, add '-O0' (but with source code comment, pleas= e); [...] > ..., or (2): update the test cases [...] (rationale: the test cases > haven't originally been written for the '-Wuninitialized' diagnostics; [.= ..] > (3): duplicate the test cases to account for both (1) and (2) > [...] (3), would be my approach. Attached patch does (3). I also remove the code tweaking, added in previous patch. - But added a bunch of comments. And I have to admit that I did not realize that the -Wuninitialized was onl= y added later. (I did not expect that new flags get added to existing patches= .) >> ** I am actually not sure whether 'acc update(b)' will/should map a >> previous allocated variable - or whether it should. [...] >> testcases. Should be: "previously *un*allocated" (+ Thomas s%...%.. comments). > I don't quickly dig that, sorry. Do we need to first clarify that with > OpenACC Technical Committee, or is this just a GCC/OpenACC implementation > issue? That's mostly an OpenACC spec question. But I did not check what the spec says. Thus, I don't know * whether the spec needs to be improved * what the implications are on the implementation. I assume that the implementation for OpenMP does also make sense for OpenACC (i.e. either works as required or does more but in a sensible way) - but I don't know. I think either/both of us should check the OpenACC spec. * * * On the OpenMP side (clarified in 5.1 or 5.2): * Map first an unallocated allocatable =3D> That one is regarded as mapped/present * Allocate it and map it again (e.g. implicit/explicit mapping for a target region) =3D> Spec: Implementation may or may not update the item. However, (only) with 'always' the spec guarantees that it will also show up as allocated on the device. =3D> Sentiment: should also work without 'always' modifier if previously unallocated. (Discussion postponed.) * I have not checked 'update' but I think it behaves like 'map(always,to/from:' (except for ref counting) OpenMP GCC implementation: there is a known issue for scalar allocatables (PR96668). It does work for arrays (also without 'always') - and 'omp update' has not been checked. (Ref counting issues?) OpenACC GCC implementation: I think this code is shared with OpenMP and, thus, works likewise. But I have have also not checked this. 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 Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------k0oz30jjVheld0vhbsLU7ui4 Content-Type: text/x-patch; charset="UTF-8"; name="uninit-map-v2.diff" Content-Disposition: attachment; filename="uninit-map-v2.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbjogT3Blbk1QL09wZW5BQ0MgYXZvaWQgdW5pbml0IGFjY2VzcyBpbiBzaXplIGNh bGMgZm9yIG1hcHBpbmcKCmdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKCgkqIHRyYW5zLW9wZW5t cC5jYyAoZ2ZjX3RyYW5zX29tcF9jbGF1c2VzLCBnZmNfb21wX2ZpbmlzaF9jbGF1c2UpOgoJ T2J0YWluIHNpemUgZm9yIG1hcHBpbmcgb25seSBpZiBhbGxvY2F0YWJsZSBhcnJheSBpcyBh bGxvY2F0ZWQuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGdmb3J0cmFuLmRnL2dv YWNjL2FycmF5LXdpdGgtZHQtMS5mOTA6IFVwZGF0ZS9hZGQgY29tbWVudHM7CglyZW1vdmUg ZGctd2FybmluZyBmb3IgJ2lzIHVzZWQgdW5pbml0aWFsaXplZCcuCgkqIGdmb3J0cmFuLmRn L2dvYWNjL3ByOTM0NjQuZjkwOiBMaWtld2lzZS4KCSogZ2ZvcnRyYW4uZGcvZ29hY2MvYXJy YXktd2l0aC1kdC0xYS5mOTA6IE5ldzsgY29waWVkIGZyb20KCWdmb3J0cmFuLmRnL2dvYWNj L2FycmF5LXdpdGgtZHQtMS5mOTAgYnV0IHJ1biB3aXRoIC1PMC4gVXBkYXRlCglkZy13YXJu aW5nIGZvciAnbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCcuCgkqIGdmb3J0cmFuLmRnL2dv YWNjL3ByOTM0NjQtMi5mOTA6IExpa2V3aXNlOyBjb3BpZWQgZnJvbQoJZ2ZvcnRyYW4uZGcv Z29hY2MvcHI5MzQ2NC5mOTAuCgogZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNiArKystLQogLi4uL2dmb3J0cmFuLmRnL2dvYWNjL2Fy cmF5LXdpdGgtZHQtMS5mOTAgICAgICAgICAgfCAxOCArKysrKysrKysrKystLS0KIC4uLi9n Zm9ydHJhbi5kZy9nb2FjYy9hcnJheS13aXRoLWR0LTFhLmY5MCAgICAgICAgIHwgMjcgKysr KysrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9w cjkzNDY0LTIuZjkwICAgICAgfCAyNiArKysrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHI5MzQ2NC5mOTAgICAgICAgIHwgMTIgKysrKysr LS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2djYy9mb3J0 cmFuL3RyYW5zLW9wZW5tcC5jYwppbmRleCA0ZDU2YTc3MTM0OS4uZmFkNzZhNDc5MWYgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYworKysgYi9nY2MvZm9ydHJh bi90cmFucy1vcGVubXAuY2MKQEAgLTE1OTcsNyArMTU5Nyw4IEBAIGdmY19vbXBfZmluaXNo X2NsYXVzZSAodHJlZSBjLCBnaW1wbGVfc2VxICpwcmVfcCwgYm9vbCBvcGVuYWNjKQogICAg ICAgdHJlZSBzaXplID0gY3JlYXRlX3RtcF92YXIgKGdmY19hcnJheV9pbmRleF90eXBlKTsK ICAgICAgIHRyZWUgZWxlbXN6ID0gVFlQRV9TSVpFX1VOSVQgKGdmY19nZXRfZWxlbWVudF90 eXBlICh0eXBlKSk7CiAgICAgICBlbGVtc3ogPSBmb2xkX2NvbnZlcnQgKGdmY19hcnJheV9p bmRleF90eXBlLCBlbGVtc3opOwotICAgICAgaWYgKEdGQ19UWVBFX0FSUkFZX0FLSU5EICh0 eXBlKSA9PSBHRkNfQVJSQVlfUE9JTlRFUgorICAgICAgaWYgKEdGQ19UWVBFX0FSUkFZX0FL SU5EICh0eXBlKSA9PSBHRkNfQVJSQVlfQUxMT0NBVEFCTEUKKwkgIHx8IEdGQ19UWVBFX0FS UkFZX0FLSU5EICh0eXBlKSA9PSBHRkNfQVJSQVlfUE9JTlRFUgogCSAgfHwgR0ZDX1RZUEVf QVJSQVlfQUtJTkQgKHR5cGUpID09IEdGQ19BUlJBWV9QT0lOVEVSX0NPTlQpCiAJewogCSAg c3RtdGJsb2NrX3QgY29uZF9ibG9jazsKQEAgLTMyMDgsNyArMzIwOSw4IEBAIGdmY190cmFu c19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNs YXVzZXMsCiAKIAkJICAgICAgLyogV2UgaGF2ZSB0byBjaGVjayBmb3Igbi0+c3ltLT5hdHRy LmRpbWVuc2lvbiBiZWNhdXNlCiAJCQkgb2Ygc2NhbGFyIGNvYXJyYXlzLiAgKi8KLQkJICAg ICAgaWYgKG4tPnN5bS0+YXR0ci5wb2ludGVyICYmIG4tPnN5bS0+YXR0ci5kaW1lbnNpb24p CisJCSAgICAgIGlmICgobi0+c3ltLT5hdHRyLnBvaW50ZXIgfHwgbi0+c3ltLT5hdHRyLmFs bG9jYXRhYmxlKQorCQkJICAmJiBuLT5zeW0tPmF0dHIuZGltZW5zaW9uKQogCQkJewogCQkJ ICBzdG10YmxvY2tfdCBjb25kX2Jsb2NrOwogCQkJICB0cmVlIHNpemUKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvYXJyYXktd2l0aC1kdC0xLmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvYXJyYXktd2l0aC1kdC0xLmY5MApp bmRleCAxMzZlNDJhY2Q1OS4uZmIyN2Y2ZTQwNTggMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29hY2MvYXJyYXktd2l0aC1kdC0xLmY5MAorKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL2FycmF5LXdpdGgtZHQtMS5mOTAKQEAgLTEsMTUg KzEsMjcgQEAKICEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgLVd1bmluaXRpYWxpemVkIH0K IAorISBQdXJwb3NlIG9mIHRoaXMgdGVzdGNhc2UgKGZyb20gdGhlIGNvbW1pdCBsb2cpOgor ISAgIFRoaXMgcGF0Y2ggZml4ZXMgbG93ZXJpbmcgb2YgZGVyaXZlZC10eXBlIG1hcHBpbmdz IHdoaWNoIHNlbGVjdCBlbGVtZW50cworISAgIG9mIGFycmF5cyBvZiBkZXJpdmVkIHR5cGVz LCBhbmQgc2ltaWxhci4gVGhlc2Ugd291bGQgcHJldmlvdXNseSBsZWFkCishICAgdG8gSUNF cy4KKworISBUaGlzIHRlc3RjYXNlIGRvZXMgbm90IHNob3cgYW55IHVuaW5pdGlhbGl6ZWQg d2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIC1PCishIChhcyBkb25lKS4gRm9yIC1PMCwg c2VlIHRlc3RjYXNlIGZpbGUgJ2FycmF5LXdpdGgtZHQtMWEuZjkwJy4KKwogdHlwZSB0CiAg ICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBBKDosOikKIGVuZCB0eXBlIHQKIAogdHlwZSh0 KSwgYWxsb2NhdGFibGUgOjogYig6KQotISB7IGRnLW5vdGUgeydiJyBkZWNsYXJlZCBoZXJl fSB7fSB7IHRhcmdldCAqLSotKiB9IC4tMSB9CisKKyEgUmVtYXJrOiBTZW1hbnRpY2FsbHks IHRoZSBmb2xsb3dpbmcgbGluZSByZXF1aXJlcyB0aGF0ICdiJworISBpcyBhbHJlYWR5IHBy ZXNlbnQgb24gdGhlIGRldmljZS4KIAogISRhY2MgdXBkYXRlIGhvc3QoYikKLSEgeyBkZy13 YXJuaW5nIHsnYlwuZGltXFswXF1cLnVib3VuZCcgaXMgdXNlZCB1bmluaXRpYWxpemVkfSB7 fSB7IHRhcmdldCAqLSotKiB9IC4tMSB9Ci0hIHsgZGctd2FybmluZyB7J2JcLmRpbVxbMFxd XC5sYm91bmQnIGlzIHVzZWQgdW5pbml0aWFsaXplZH0ge30geyB0YXJnZXQgKi0qLSogfSAu LTIgfQorCishIFJlbWFyazogU2VtYW50aWNhbGx5LCB0aGUgZm9sbG93aW5nIGxpbmVzIHJl cXVpcmUgdGhhdCBiIGlzIGFsbG9jYXRlZAorISBhbmQgcHJlc2VudCBvbiB0aGUgZGV2aWNl LiBUaGUgbGFzdCBsaW5lIGFsc28gcmVxdWlyZXMgdGhlIHNhbWUgZm9yICdBJy4KKwogISRh Y2MgdXBkYXRlIGhvc3QoYig6KSkKICEkYWNjIHVwZGF0ZSBob3N0KGIoMSklQSkKICEkYWNj IHVwZGF0ZSBob3N0KGIoMSklQSg6LDopKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb2FjYy9hcnJheS13aXRoLWR0LTFhLmY5MCBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29hY2MvYXJyYXktd2l0aC1kdC0xYS5mOTAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhiZWFlYjQ1ZTJlCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9hcnJheS13aXRoLWR0LTFhLmY5 MApAQCAtMCwwICsxLDI3IEBACishIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItV3VuaW5p dGlhbGl6ZWQgLU8wIiB9CishCishIFdpdGggLU8wIG9ubHksICdtYXkgYmUgdW5pbml0YWxp emVkJyB3YXJuaW5ncyBzaG93IHVwLgorISBGb3IgdGhlIG9yaWdpbmFsIHRlc3RjYXNlLCBj b21waWxlZCB3aXRoICctTycsCishIHNlZSB0ZXN0Y2FzZSBmaWxlICdhcnJheS13aXRoLWR0 LTFhLmY5MCcKKwordHlwZSB0CisgICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBBKDosOikK K2VuZCB0eXBlIHQKKwordHlwZSh0KSwgYWxsb2NhdGFibGUgOjogYig6KQorISB7IGRnLW5v dGUgeydiJyBkZWNsYXJlZCBoZXJlfSB7fSB7IHRhcmdldCAqLSotKiB9IC4tMSB9CisKKyEg UmVtYXJrOiBTZW1hbnRpY2FsbHksIHRoZSBmb2xsb3dpbmcgbGluZSByZXF1aXJlcyB0aGF0 ICdiJworISBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS4KKworISRhY2MgdXBk YXRlIGhvc3QoYikKKyEgeyBkZy13YXJuaW5nIHsnYlwuZGltXFswXF1cLnVib3VuZCcgbWF5 IGJlIHVzZWQgdW5pbml0aWFsaXplZH0ge30geyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISB7 IGRnLXdhcm5pbmcgeydiXC5kaW1cWzBcXVwubGJvdW5kJyBtYXkgYmUgdXNlZCB1bmluaXRp YWxpemVkfSB7fSB7IHRhcmdldCAqLSotKiB9IC4tMiB9CisKKyEgUmVtYXJrOiBTZW1hbnRp Y2FsbHksIHRoZSBmb2xsb3dpbmcgbGluZXMgcmVxdWlyZSB0aGF0IGIgaXMgYWxsb2NhdGVk CishIGFuZCBwcmVzZW50IG9uIHRoZSBkZXZpY2UuIFRoZSBsYXN0IGxpbmUgYWxzbyByZXF1 aXJlcyB0aGUgc2FtZSBmb3IgJ0EnLgorCishJGFjYyB1cGRhdGUgaG9zdChiKDopKQorISRh Y2MgdXBkYXRlIGhvc3QoYigxKSVBKQorISRhY2MgdXBkYXRlIGhvc3QoYigxKSVBKDosOikp CitlbmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHI5 MzQ2NC0yLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHI5MzQ2NC0y LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRhNmE0ZWI3 YjAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNj L3ByOTM0NjQtMi5mOTAKQEAgLTAsMCArMSwyNiBAQAorISB7IGRnLWFkZGl0aW9uYWwtb3B0 aW9ucyAiLVd1bmluaXRpYWxpemVkIC1PMCIgfQorIQorISBQUiBmb3J0cmFuLzkzNDY0Cish CishIENvbnRyaWJ1dGVkIGJ5IEcuIFN0ZWlubWV0egorIQorISBEaWQgYmVmb3JlIElDRSBp biBnZmNfb21wX2NoZWNrX29wdGlvbmFsX2FyZ3VtZW50CisKKyEgQWRkaXRpb25hbGx5LCBj aGVjayBmb3IgdW5pbml0aWFsaXplZCB3YXJuaW5ncy4gVGhlcmUgYXJlCishIG5vbmUgd2l0 aCAtTyAoY2YuIG9yaWdpbmFsIHRlc3RjYXNlIGZpbGUgJ3ByOTM0NjQuZjkwJykuCishIEZv ciAtTzAsIHNlZSBiZWxvdzoKKworcHJvZ3JhbSBwCisgICBjaGFyYWN0ZXIgOjogYygyKSA9 ICdhJworICAgY2hhcmFjdGVyLCBhbGxvY2F0YWJsZSA6OiB6KDopCisgICAhIHsgZGctbm90 ZSB7J3onIGRlY2xhcmVkIGhlcmV9IHt9IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KKyAgICEk YWNjIHBhcmFsbGVsCisgICAhIHsgZGctd2FybmluZyB7J3pcLmRpbVxbMFxdXC51Ym91bmQn IG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWR9IHt9IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0K KyAgICEgeyBkZy13YXJuaW5nIHsnelwuZGltXFswXF1cLmxib3VuZCcgbWF5IGJlIHVzZWQg dW5pbml0aWFsaXplZH0ge30geyB0YXJnZXQgKi0qLSogfSAuLTIgfQorICAgISRvbXAgdGFy Z2V0CisgICAhIFJlbWFyazogQXMgcnVuLXRpbWUgY2hlY2ssIHJlcXVpcmVkIGVpdGhlciAn YycgYmVpbmcgYWxsb2NhdGVkIG9yIGlmKGFsbG9jYXRlZChjKSc6CisgICB6ID0gYworICAg ISRhY2MgZW5kIHBhcmFsbGVsCisgICAhJG9tcCBlbmQgdGFyZ2V0CisgICBwcmludCAqLCB6 CitlbmQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcHI5 MzQ2NC5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvYWNjL3ByOTM0NjQuZjkw CmluZGV4IGM5MmYxZDNkOGIyLi4xYjVjYTdkMWM3NiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9wcjkzNDY0LmY5MAorKysgYi9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvYWNjL3ByOTM0NjQuZjkwCkBAIC0xLDE3ICsxLDIxIEBACishIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zIC1XdW5pbml0aWFsaXplZCB9CishCiAhIFBSIGZvcnRy YW4vOTM0NjQKICEKICEgQ29udHJpYnV0ZWQgYnkgRy4gU3RlaW5tZXR6CishCishIERpZCBi ZWZvcmUgSUNFIGluIGdmY19vbXBfY2hlY2tfb3B0aW9uYWxfYXJndW1lbnQKIAotISB7IGRn LWFkZGl0aW9uYWwtb3B0aW9ucyAtV3VuaW5pdGlhbGl6ZWQgfQorISBBZGRpdGlvbmFsbHks IGNoZWNrIGZvciB1bmluaXRpYWxpemVkIHdhcm5pbmdzLgorISBDb21waWxlZCB3aXRoIC1P IChhcyBkb25lIGhlcmUpLCBubyBzaG93IHVwOworISBmb3IgLU8wLCBzZWUgdGVzdGNhc2Ug ZmlsZSAncHI5MzQ2NC0xLmY5MCcuCiAKIHByb2dyYW0gcAogICAgY2hhcmFjdGVyIDo6IGMo MikgPSAnYScKICAgIGNoYXJhY3RlciwgYWxsb2NhdGFibGUgOjogeig6KQotICAgISB7IGRn LW5vdGUgeyd6JyBkZWNsYXJlZCBoZXJlfSB7fSB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiAg ICAhJGFjYyBwYXJhbGxlbAotICAgISB7IGRnLXdhcm5pbmcgeyd6XC5kaW1cWzBcXVwudWJv dW5kJyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWR9IHt9IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0K LSAgICEgeyBkZy13YXJuaW5nIHsnelwuZGltXFswXF1cLmxib3VuZCcgaXMgdXNlZCB1bmlu aXRpYWxpemVkfSB7fSB7IHRhcmdldCAqLSotKiB9IC4tMiB9CiAgICAhJG9tcCB0YXJnZXQK KyAgICEgUmVtYXJrOiBBcyBydW4tdGltZSBjaGVjaywgcmVxdWlyZWQgZWl0aGVyICdjJyBi ZWluZyBhbGxvY2F0ZWQgb3IgaWYoYWxsb2NhdGVkKGMpJzoKICAgIHogPSBjCiAgICAhJGFj YyBlbmQgcGFyYWxsZWwKICAgICEkb21wIGVuZCB0YXJnZXQK --------------k0oz30jjVheld0vhbsLU7ui4--