From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 919D9385840C for ; Fri, 28 Jan 2022 16:33:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 919D9385840C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: zNEty/g/KYb0IibYcUy2uQJCaB7T9sp4IpVY/B6gQnMaxt84rI3mN8pPiSJ36lWkgbtxuYU9hH pEq32Gt0P7513CGgcFfVUzHt0c+Su5Uvlj9U9e3lLivOf7Hfjx7krRGvmSnTxG3MMDHud+URNx zS7zeGTBsGzlokVvtA910A2BY4hFyrX7RVGs7tDu7uSpHVriIyBlfphp3UAYDDdrjfvCa4xvax rd8gOnTAncqZjGWA85QJLsPdESj3oa599bSA9ABD3G0cDOQcMvTmz0BrLNa9ls4i2v7LemrLqX PJpFQcT4T7RhOzHfA1Nibwoz X-IronPort-AV: E=Sophos;i="5.88,324,1635235200"; d="scan'208,223";a="71185662" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa3.mentor.iphmx.com with ESMTP; 28 Jan 2022 08:33:34 -0800 IronPort-SDR: aXV8hOClQMu7wUs79W+0vpGXkkftD16Q1QRv/H74G85GV4aQ1oNfv5OVuCAr45ySj0QGt+yVvR DOJrzpe0RvvICiN58x+td6rUoHxW0IEmRModjD1hJcp49toMTBwKbe61vi9MagoLNFSI6gMFpC wwA1YWjz2LIF81F09qfHEdhtgBQiMit0QFp0s6rToKpfbFWx6Z7558s75plgGdOdFyvt4aVF2M MyWeE64Xr5Hzm8hTlVhhbOC4bP9P94XYXYXEBB7pixCYL9S8tgelaccpV1PVUzO4lzsOys5qz/ kjs= Content-Type: multipart/mixed; boundary="------------0304YN3zQJmGxT2oV8QFJisO" Message-ID: <2c37dd8b-4a59-6b18-b49e-4c914f45f4f7@codesourcery.com> Date: Fri, 28 Jan 2022 16:33:29 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 From: Kwok Cheung Yeung Subject: [PATCH] openmp: Add warning when functions containing metadirectives with 'construct={target}' called directly To: Jakub Jelinek CC: GCC Patches References: <8d413974-0068-3a31-6ae5-d36c1be06d06@codesourcery.com> <20210726142902.GW2380545@tucnak> <0000a35d-75a5-3067-b59c-b4f5bde0ea58@codesourcery.com> <20210726195654.GZ2380545@tucnak> <20210726212329.GE2380545@tucnak> In-Reply-To: <20210726212329.GE2380545@tucnak> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-08.mgc.mentorg.com (139.181.222.8) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Jan 2022 16:33:38 -0000 --------------0304YN3zQJmGxT2oV8QFJisO Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Hello Regarding this issue which we discussed previously - I have created a patch that adds a warning when this situation is detected. When a metadirective in a explicitly marked target function is gimplified, it is checked to see if it contains a 'construct={target}' selector - if it does, then the containing function is marked with 'omp metadirective construct target'. In the omp-low pass, when function calls are processed, the target function is checked to see if it contains the marker. If it does and the call is not made in a target context, a warning is emitted. This will obviously not catch every possible occurence (e.g. if the function containing the metadirective is called from another target function which is then called locally, or if the call is made via a function pointer), but it might still be useful? Okay for mainline (once the metadirective patches are done)? Thanks Kwok On 26/07/2021 10:23 pm, Jakub Jelinek wrote: > On Mon, Jul 26, 2021 at 10:19:35PM +0100, Kwok Cheung Yeung wrote: >>> Yes, that is a target variant, but I'm pretty sure we've decided that >>> the target construct added for declare target is actually not a dynamic >>> property. So basically mostly return to the 5.0 wording with clarifications >>> for Fortran. See >>> https://github.com/OpenMP/spec/issues/2612#issuecomment-849742988 >>> for details. >>> Making the target in construct dynamic would pretty much force all the >>> scoring to be dynamic as well. >> >> In that comment, Deepak says: >> >> So, we decided to keep the target trait static, requiring that the declare >> target directive must be explicit and that the function version must be >> different from the version of the function that may be called outside of a >> target region (with the additional clarification that whether it differs or >> not will be implementation defined). >> >> "the function version must be different from the version of the function >> that may be called outside of a target region": This is what we do not have >> in GCC at the moment - the function versions called within and outside >> target regions are the same on the host. >> >> "whether it differs or not will be implementation defined": So whether a >> function with 'declare target' and a metadirective involving a 'target' >> construct behaves the same or not when called from both inside and outside >> of a target region is implementation defined? >> >> I will leave the treatment of target constructs in the selector as it is >> then, with both calls going to the same function with the metadirective >> resolving to the 'target' variant. I will try to address your other concerns >> later. > > I think you're right, it should differ in the host vs. target version iff > it is in explicit declare target block, my memory is weak, but let's implement > the 5.0 wording for now (and ignore the 5.1 wording later on) and only when > we'll be doing 5.2 change this (and change for both metadirective and > declare variant at that point). > Ok? > > Jakub > --------------0304YN3zQJmGxT2oV8QFJisO Content-Type: text/plain; charset="UTF-8"; name="0001-openmp-Add-warning-when-functions-containing-metadir.patch" Content-Disposition: attachment; filename*0="0001-openmp-Add-warning-when-functions-containing-metadir.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NDFiMDM3YThjZDZiODVkNDNhNjI3M2FiMzA1Y2UwNzcwNWRmYTIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IEZyaSwgMjggSmFuIDIwMjIgMTM6NTY6MzMgKzAwMDAKU3ViamVj dDogW1BBVENIXSBvcGVubXA6IEFkZCB3YXJuaW5nIHdoZW4gZnVuY3Rpb25zIGNvbnRhaW5p bmcgbWV0YWRpcmVjdGl2ZXMKIHdpdGggJ2NvbnN0cnVjdD17dGFyZ2V0fScgY2FsbGVkIGRp cmVjdGx5Cgp2b2lkIGYodm9pZCkKewogICNwcmFnbWEgb21wIG1ldGFkaXJlY3RpdmUgXAog ICAgd2hlbiAoY29uc3RydWN0PXt0YXJnZXR9OiBBKSBcCiAgICBkZWZhdWx0IChCKQogICAg Li4uCn0KLi4uCnsKICAjcHJhZ21hIG9tcCB0YXJnZXQKICAgIGYoKTsgLy8gVGFyZ2V0IGNh bGwKCiAgZigpOyAvLyBMb2NhbCBjYWxsCn0KCldpdGggdGhlIE9wZW5NUCA1LjAvNS4xIHNw ZWNpZmljYXRpb25zLCB3ZSB3b3VsZCBleHBlY3QgQSB0byBiZSBzZWxlY3RlZCBpbgp0aGUg bWV0YWRpcmVjdGl2ZSB3aGVuIHRoZSB0YXJnZXQgY2FsbCBpcyBtYWRlLCBidXQgQiB3aGVu IGYgaXMgY2FsbGVkCmRpcmVjdGx5IG91dHNpZGUgb2YgYSB0YXJnZXQgY29udGV4dC4gIEhv d2V2ZXIsIHNpbmNlIEdDQyBkb2VzIG5vdCBoYXZlCnNlcGFyYXRlIGNvcGllcyBvZiBmIGZv ciBsb2NhbCBhbmQgdGFyZ2V0IGNhbGxzLCBhbmQgdGhlIGNvbnN0cnVjdCBzZWxlY3Rvcgpp cyBzdGF0aWMsIGl0IG11c3QgYmUgcmVzb2x2ZWQgb25lIHdheSBvciB0aGUgb3RoZXIgYXQg Y29tcGlsZS10aW1lIChjdXJyZW50bHkKaW4gdGhlIGZhdm91ciBvZiBzZWxlY3RpbmcgQSks IHdoaWNoIG1heSBiZSB1bmV4cGVjdGVkIGJlaGF2aW91ci4KClRoaXMgcGF0Y2ggYXR0ZW1w dHMgdG8gZGV0ZWN0IHRoZSBhYm92ZSBzaXR1YXRpb24sIGFuZCB3aWxsIGVtaXQgYSB3YXJu aW5nCmlmIGZvdW5kLgoKMjAyMi0wMS0yOCAgS3dvayBDaGV1bmcgWWV1bmcgIDxrY3lAY29k ZXNvdXJjZXJ5LmNvbT4KCglnY2MvCgkqIGdpbXBsaWZ5LmNjIChnaW1wbGlmeV9vbXBfbWV0 YWRpcmVjdGl2ZSk6IE1hcmsgb2ZmbG9hZGFibGUgZnVuY3Rpb25zCgljb250YWluaW5nIG1l dGFkaXJlY3RpdmVzIHdpdGggJ2NvbnN0cnVjdD17dGFyZ2V0fScgaW4gdGhlIHNlbGVjdG9y LgoJKiBvbXAtZ2VuZXJhbC5jYyAob21wX2hhc190YXJnZXRfY29uc3RydWN0b3JfcCk6IE5l dy4KCSogb21wLWdlbmVyYWwuaCAob21wX2hhc190YXJnZXRfY29uc3RydWN0b3JfcCk6IE5l dyBwcm90b3R5cGUuCgkqIG9tcC1sb3cuY2MgKGxvd2VyX29tcF8xKTogRW1pdCB3YXJuaW5n IGlmIG1hcmtlZCBmdW5jdGlvbnMgY2FsbGVkCglvdXRzaWRlIG9mIGEgdGFyZ2V0IGNvbnRl eHQuCgoJZ2NjL3Rlc3RzdWl0ZS8KCSogYy1jKystY29tbW9uL2dvbXAvbWV0YWRpcmVjdGl2 ZS00LmMgKG1haW4pOiBBZGQgZXhwZWN0ZWQgd2FybmluZy4KCSogZ2ZvcnRyYW4uZGcvZ29t cC9tZXRhZGlyZWN0aXZlLTQuZjkwICh0ZXN0KTogTGlrZXdpc2UuCgoJbGliZ29tcC8KCSog dGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL21ldGFkaXJlY3RpdmUtMi5jIChtYWlu KTogQWRkCglleHBlY3RlZCB3YXJuaW5nLgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFu L21ldGFkaXJlY3RpdmUtMi5mOTAgKHRlc3QpOiBMaWtld2lzZS4KLS0tCiBnY2MvZ2ltcGxp ZnkuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMSArKysrKysrKysrKysr KysrKysrCiBnY2Mvb21wLWdlbmVyYWwuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyMSArKysrKysrKysrKysrKysrKysrCiBnY2Mvb21wLWdlbmVyYWwuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMSArCiBnY2Mvb21wLWxvdy5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrCiAuLi4vYy1jKystY29t bW9uL2dvbXAvbWV0YWRpcmVjdGl2ZS00LmMgICAgICAgfCAgMiArLQogLi4uL2dmb3J0cmFu LmRnL2dvbXAvbWV0YWRpcmVjdGl2ZS00LmY5MCAgICAgIHwgIDIgKy0KIC4uLi9saWJnb21w LmMtYysrLWNvbW1vbi9tZXRhZGlyZWN0aXZlLTIuYyAgICB8ICAyICstCiAuLi4vbGliZ29t cC5mb3J0cmFuL21ldGFkaXJlY3RpdmUtMi5mOTAgICAgICAgfCAgMiArLQogOCBmaWxlcyBj aGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2djYy9naW1wbGlmeS5jYyBiL2djYy9naW1wbGlmeS5jYwppbmRleCA3OGJhZTU2N2FlNC4u YzhhMDFhNGNhNTIgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGlmeS5jYworKysgYi9nY2MvZ2lt cGxpZnkuY2MKQEAgLTE0Nzc1LDYgKzE0Nzc1LDI3IEBAIGdpbXBsaWZ5X29tcF9tZXRhZGly ZWN0aXZlICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wLCBnaW1wbGVfc2VxICos CiB7CiAgIGF1dG9fdmVjPHRyZWU+IHNlbGVjdG9yczsKIAorICAvKiBNYXJrIG9mZmxvYWRh YmxlIGZ1bmN0aW9ucyBjb250YWluaW5nIG1ldGFkaXJlY3RpdmVzIHRoYXQgc3BlY2lmeQor ICAgICBhICdjb25zdHJ1Y3QnIHNlbGVjdG9yIHdpdGggYSAndGFyZ2V0JyBjb25zdHJ1Y3Rv ci4gICovCisgIGlmIChvZmZsb2FkaW5nX2Z1bmN0aW9uX3AgKGN1cnJlbnRfZnVuY3Rpb25f ZGVjbCkpCisgICAgeworICAgICAgZm9yICh0cmVlIGNsYXVzZSA9IE9NUF9NRVRBRElSRUNU SVZFX0NMQVVTRVMgKCpleHByX3ApOworCSAgIGNsYXVzZSAhPSBOVUxMX1RSRUU7IGNsYXVz ZSA9IFRSRUVfQ0hBSU4gKGNsYXVzZSkpCisJeworCSAgdHJlZSBzZWxlY3RvciA9IFRSRUVf UFVSUE9TRSAoY2xhdXNlKTsKKworCSAgaWYgKG9tcF9oYXNfdGFyZ2V0X2NvbnN0cnVjdG9y X3AgKHNlbGVjdG9yKSkKKwkgICAgeworCSAgICAgIHRyZWUgaWQgPSBnZXRfaWRlbnRpZmll ciAoIm9tcCBtZXRhZGlyZWN0aXZlIGNvbnN0cnVjdCB0YXJnZXQiKTsKKworCSAgICAgIERF Q0xfQVRUUklCVVRFUyAoY3VycmVudF9mdW5jdGlvbl9kZWNsKQorCQk9IHRyZWVfY29ucyAo aWQsIE5VTExfVFJFRSwKKwkJCSAgICAgREVDTF9BVFRSSUJVVEVTIChjdXJyZW50X2Z1bmN0 aW9uX2RlY2wpKTsKKwkgICAgICBicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisKICAgLyog VHJ5IHRvIHJlc29sdmUgdGhlIG1ldGFkaXJlY3RpdmUuICAqLwogICB2ZWM8c3RydWN0IG9t cF9tZXRhZGlyZWN0aXZlX3ZhcmlhbnQ+IGNhbmRpZGF0ZXMKICAgICA9IG9tcF9yZXNvbHZl X21ldGFkaXJlY3RpdmUgKCpleHByX3ApOwpkaWZmIC0tZ2l0IGEvZ2NjL29tcC1nZW5lcmFs LmNjIGIvZ2NjL29tcC1nZW5lcmFsLmNjCmluZGV4IDRlZGViNThjYzczLi44NDJlOWZkODY4 ZiAxMDA2NDQKLS0tIGEvZ2NjL29tcC1nZW5lcmFsLmNjCisrKyBiL2djYy9vbXAtZ2VuZXJh bC5jYwpAQCAtMjkyMiw2ICsyOTIyLDI3IEBAIG9tcF9yZXNvbHZlX21ldGFkaXJlY3RpdmUg KGdpbXBsZSAqZ3MpCiAgIHJldHVybiBvbXBfZ2V0X2R5bmFtaWNfY2FuZGlkYXRlcyAodmFy aWFudHMpOwogfQogCitib29sCitvbXBfaGFzX3RhcmdldF9jb25zdHJ1Y3Rvcl9wICh0cmVl IHNlbGVjdG9yKQoreworICBpZiAoc2VsZWN0b3IgPT0gTlVMTF9UUkVFKQorICAgIHJldHVy biBmYWxzZTsKKworICB0cmVlIHNlbGVjdG9yX3NldCA9IFRSRUVfUFVSUE9TRSAoc2VsZWN0 b3IpOworICBpZiAoc3RyY21wIChJREVOVElGSUVSX1BPSU5URVIgKHNlbGVjdG9yX3NldCks ICJjb25zdHJ1Y3QiKSAhPSAwKQorICAgIHJldHVybiBmYWxzZTsKKworICBlbnVtIHRyZWVf Y29kZSBjb25zdHJ1Y3RzWzVdOworICBpbnQgbmNvbnN0cnVjdHMKKyAgICA9IG9tcF9jb25z dHJ1Y3Rvcl90cmFpdHNfdG9fY29kZXMgKFRSRUVfVkFMVUUgKHNlbGVjdG9yKSwgY29uc3Ry dWN0cyk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuY29uc3RydWN0czsgaSsrKQorICAg IGlmIChjb25zdHJ1Y3RzW2ldID09IE9NUF9UQVJHRVQpCisgICAgICByZXR1cm4gdHJ1ZTsK KworICByZXR1cm4gZmFsc2U7Cit9CisKIC8qIEVuY29kZSBhbiBvYWNjIGxhdW5jaCBhcmd1 bWVudC4gIFRoaXMgbWF0Y2hlcyB0aGUgR09NUF9MQVVOQ0hfUEFDSwogICAgbWFjcm8gb24g Z29tcC1jb25zdGFudHMuaC4gIFdlIGRvIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cuICAqLwog CmRpZmYgLS1naXQgYS9nY2Mvb21wLWdlbmVyYWwuaCBiL2djYy9vbXAtZ2VuZXJhbC5oCmlu ZGV4IGZkZGU0YTNkZmIwLi5jY2RlYTAxNWUxNSAxMDA2NDQKLS0tIGEvZ2NjL29tcC1nZW5l cmFsLmgKKysrIGIvZ2NjL29tcC1nZW5lcmFsLmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBleHRl cm4gdHJlZSBvbXBfZ2V0X2NvbnRleHRfc2VsZWN0b3IgKHRyZWUsIGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqKTsKIGV4dGVybiB0cmVlIG9tcF9yZXNvbHZlX2RlY2xhcmVfdmFyaWFu dCAodHJlZSk7CiBleHRlcm4gdmVjPHN0cnVjdCBvbXBfbWV0YWRpcmVjdGl2ZV92YXJpYW50 PiBvbXBfcmVzb2x2ZV9tZXRhZGlyZWN0aXZlICh0cmVlKTsKIGV4dGVybiB2ZWM8c3RydWN0 IG9tcF9tZXRhZGlyZWN0aXZlX3ZhcmlhbnQ+IG9tcF9yZXNvbHZlX21ldGFkaXJlY3RpdmUg KGdpbXBsZSAqKTsKK2V4dGVybiBib29sIG9tcF9oYXNfdGFyZ2V0X2NvbnN0cnVjdG9yX3Ag KHRyZWUpOwogZXh0ZXJuIHRyZWUgb2FjY19sYXVuY2hfcGFjayAodW5zaWduZWQgY29kZSwg dHJlZSBkZXZpY2UsIHVuc2lnbmVkIG9wKTsKIGV4dGVybiB0cmVlIG9hY2NfcmVwbGFjZV9m bl9hdHRyaWJfYXR0ciAodHJlZSBhdHRyaWJzLCB0cmVlIGRpbXMpOwogZXh0ZXJuIHZvaWQg b2FjY19yZXBsYWNlX2ZuX2F0dHJpYiAodHJlZSBmbiwgdHJlZSBkaW1zKTsKZGlmZiAtLWdp dCBhL2djYy9vbXAtbG93LmNjIGIvZ2NjL29tcC1sb3cuY2MKaW5kZXggNTk4MDQzMDBjMjgu LjA3NjEzMzYyZWYwIDEwMDY0NAotLS0gYS9nY2Mvb21wLWxvdy5jYworKysgYi9nY2Mvb21w LWxvdy5jYwpAQCAtMTQzMDAsNiArMTQzMDAsMjQgQEAgbG93ZXJfb21wXzEgKGdpbXBsZV9z dG10X2l0ZXJhdG9yICpnc2lfcCwgb21wX2NvbnRleHQgKmN0eCkKICAgICAgIHRyZWUgZm5k ZWNsOwogICAgICAgY2FsbF9zdG10ID0gYXNfYSA8Z2NhbGwgKj4gKHN0bXQpOwogICAgICAg Zm5kZWNsID0gZ2ltcGxlX2NhbGxfZm5kZWNsIChjYWxsX3N0bXQpOworICAgICAgaWYgKGZu ZGVjbAorCSAgJiYgbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBtZXRhZGlyZWN0aXZlIGNvbnN0 cnVjdCB0YXJnZXQiLAorCQkJICAgICAgIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSkpCisJ eworCSAgYm9vbCBpbl90YXJnZXRfY3R4ID0gZmFsc2U7CisKKwkgIGZvciAob21wX2NvbnRl eHQgKnVwID0gY3R4OyB1cDsgdXAgPSB1cC0+b3V0ZXIpCisJICAgIGlmIChnaW1wbGVfY29k ZSAodXAtPnN0bXQpID09IEdJTVBMRV9PTVBfVEFSR0VUKQorCSAgICAgIHsKKwkJaW5fdGFy Z2V0X2N0eCA9IHRydWU7CisJCWJyZWFrOworCSAgICAgIH0KKwkgIGlmICghY3R4IHx8ICFp bl90YXJnZXRfY3R4KQorCSAgICB3YXJuaW5nX2F0IChnaW1wbGVfbG9jYXRpb24gKHN0bXQp LCAwLAorCQkJImRpcmVjdCBjYWxscyB0byBhbiBvZmZsb2FkYWJsZSBmdW5jdGlvbiBjb250 YWluaW5nICIKKwkJCSJtZXRhZGlyZWN0aXZlcyB3aXRoIGEgJTxjb25zdHJ1Y3Q9e3Rhcmdl dH0lPiAiCisJCQkic2VsZWN0b3IgbWF5IHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzIik7 CisJfQogICAgICAgaWYgKGZuZGVjbAogCSAgJiYgZm5kZWNsX2J1aWx0X2luX3AgKGZuZGVj bCwgQlVJTFRfSU5fTk9STUFMKSkKIAlzd2l0Y2ggKERFQ0xfRlVOQ1RJT05fQ09ERSAoZm5k ZWNsKSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbWV0 YWRpcmVjdGl2ZS00LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL21ldGFk aXJlY3RpdmUtNC5jCmluZGV4IGM0YjEwOTI5NWRiLi4yNWVmYmUwNDZiZiAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9tZXRhZGlyZWN0aXZlLTQuYwor KysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL21ldGFkaXJlY3RpdmUtNC5j CkBAIC0yNSw3ICsyNSw3IEBAIHZvaWQgZihkb3VibGUgYVtdLCBkb3VibGUgeCkgewogCiAg IC8qIFRPRE86IFRoaXMgZG9lcyBub3QgZXhlY3V0ZSBhIHZlcnNpb24gb2YgZiB3aXRoIHRo ZSBkZWZhdWx0IGNsYXVzZQogICAgICBhY3RpdmUgYXMgbWlnaHQgYmUgZXhwZWN0ZWQuICAq LwotICBmIChhLCAyLjcxODI4KTsKKyAgZiAoYSwgMi43MTgyOCk7IC8qIHsgZGctd2Fybmlu ZyAiZGlyZWN0IGNhbGxzIHRvIGFuIG9mZmxvYWRhYmxlIGZ1bmN0aW9uIGNvbnRhaW5pbmcg bWV0YWRpcmVjdGl2ZXMgd2l0aCBhICdjb25zdHJ1Y3Q9e3RhcmdldH0nIHNlbGVjdG9yIG1h eSBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cyIgfSAqLwogCiAgIHJldHVybiAwOwogIH0K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9tZXRhZGlyZWN0 aXZlLTQuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL21ldGFkaXJlY3Rp dmUtNC5mOTAKaW5kZXggYjgyYzllYTk2ZDkuLjY1ZWIwNWNkMmZiIDEwMDY0NAotLS0gYS9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbWV0YWRpcmVjdGl2ZS00LmY5MAorKysg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbWV0YWRpcmVjdGl2ZS00LmY5MApA QCAtMTMsNyArMTMsNyBAQCBwcm9ncmFtIHRlc3QKIAogICAhIFRPRE86IFRoaXMgZG9lcyBu b3QgZXhlY3V0ZSBhIHZlcnNpb24gb2YgZiB3aXRoIHRoZSBkZWZhdWx0IGNsYXVzZQogICAh IGFjdGl2ZSBhcyBtaWdodCBiZSBleHBlY3RlZC4KLSAgY2FsbCBmIChhLCAyLjcxODI4KQor ICBjYWxsIGYgKGEsIDIuNzE4MjgpICEgeyBkZy13YXJuaW5nICJkaXJlY3QgY2FsbHMgdG8g YW4gb2ZmbG9hZGFibGUgZnVuY3Rpb24gY29udGFpbmluZyBtZXRhZGlyZWN0aXZlcyB3aXRo IGEgJ2NvbnN0cnVjdD17dGFyZ2V0fScgc2VsZWN0b3IgbWF5IHByb2R1Y2UgdW5leHBlY3Rl ZCByZXN1bHRzIiB9CiBjb250YWlucwogICBzdWJyb3V0aW5lIGYgKGEsIHgpCiAgICAgaW50 ZWdlciA6OiBpCmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysr LWNvbW1vbi9tZXRhZGlyZWN0aXZlLTIuYyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Yy1jKystY29tbW9uL21ldGFkaXJlY3RpdmUtMi5jCmluZGV4IGNkNWM2YzVlMjFhLi41NWE2 MDk4ZTUyNSAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1j b21tb24vbWV0YWRpcmVjdGl2ZS0yLmMKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5jLWMrKy1jb21tb24vbWV0YWRpcmVjdGl2ZS0yLmMKQEAgLTMxLDcgKzMxLDcgQEAgdm9p ZCBmKGRvdWJsZSBhW10sIGRvdWJsZSB4KSB7CiAKICAgLyogVE9ETzogVGhpcyBkb2VzIG5v dCBleGVjdXRlIGEgdmVyc2lvbiBvZiBmIHdpdGggdGhlIGRlZmF1bHQgY2xhdXNlCiAgICAg IGFjdGl2ZSBhcyBtaWdodCBiZSBleHBlY3RlZC4gICovCi0gIGYgKGEsIE1fRSk7CisgIGYg KGEsIE1fRSk7IC8qIHsgZGctd2FybmluZyAiZGlyZWN0IGNhbGxzIHRvIGFuIG9mZmxvYWRh YmxlIGZ1bmN0aW9uIGNvbnRhaW5pbmcgbWV0YWRpcmVjdGl2ZXMgd2l0aCBhICdjb25zdHJ1 Y3Q9e3RhcmdldH0nIHNlbGVjdG9yIG1heSBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cyIg fSAqLwogCiAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspCiAgICAgaWYgKGZhYnMgKGFbaV0g LSAoTV9FICogaSkpID4gRVBTSUxPTikKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuZm9ydHJhbi9tZXRhZGlyZWN0aXZlLTIuZjkwIGIvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5mb3J0cmFuL21ldGFkaXJlY3RpdmUtMi5mOTAKaW5kZXggMzIwMTdhMDAw NzcuLmQ4MzQ3NGNmMmRiIDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmZvcnRyYW4vbWV0YWRpcmVjdGl2ZS0yLmY5MAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLmZvcnRyYW4vbWV0YWRpcmVjdGl2ZS0yLmY5MApAQCAtMTksNyArMTksNyBAQCBw cm9ncmFtIHRlc3QKIAogICAhIFRPRE86IFRoaXMgZG9lcyBub3QgZXhlY3V0ZSBhIHZlcnNp b24gb2YgZiB3aXRoIHRoZSBkZWZhdWx0IGNsYXVzZQogICAhIGFjdGl2ZSBhcyBtaWdodCBi ZSBleHBlY3RlZC4KLSAgY2FsbCBmIChhLCBFX0NPTlNUKQorICBjYWxsIGYgKGEsIEVfQ09O U1QpICEgeyBkZy13YXJuaW5nICJkaXJlY3QgY2FsbHMgdG8gYW4gb2ZmbG9hZGFibGUgZnVu Y3Rpb24gY29udGFpbmluZyBtZXRhZGlyZWN0aXZlcyB3aXRoIGEgJ2NvbnN0cnVjdD17dGFy Z2V0fScgc2VsZWN0b3IgbWF5IHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzIiB9CiAKICAg ZG8gaSA9IDEsIE4KICAgICBpZiAoYWJzIChhKGkpIC0gKEVfQ09OU1QgKiBpKSkgLmd0LiBF UFNJTE9OKSBzdG9wIDIKLS0gCjIuMjUuMQoK --------------0304YN3zQJmGxT2oV8QFJisO--