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 5D72C385801D for ; Fri, 10 Dec 2021 17:36:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5D72C385801D 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: Hj98bOzIokKG9A1fphSgs4HDGdkTZ5vD2YJA6StZHylajMJXRo/vJL5cmXACYQBObM4yj5Z+1Q aVKE/LNwPF2PnHWOTWYyfeBGN4EoK2d9uBPs+/2QJpNzbZmsD7creSohIRd0PBvyjJtOuRmq1W cR8zgD2brZ3B6cK0X14ueUGUjjiitaF3VBCMj1Ron21u5bfyPwEbYiXWEnjF4JJmxXaFlpgA5x ij/GIvz5QqwCBMDHxb5dUMBMKKr5nBo2pM9UpZi+BnC+5kriC4LRo+UsiM59/l2O0WXUxplykb Lb7O+2ceqZqrDel2MBoxQsiw X-IronPort-AV: E=Sophos;i="5.88,196,1635235200"; d="scan'208,223";a="69540032" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 10 Dec 2021 09:36:51 -0800 IronPort-SDR: 8iOBBzkFnH2St0Ohb8o3/EhlbLqkyJBOIFJ9w+2vttcZMbAOZETSQjQGx1jubt1MbSH1UJDvXL F3yiPSUZegEskFBlnan9pKYKjnchPn2Ldcu0SBaZlj1wQrhe/tve97wArjb66h1qLJIw4hOi/I n2XdU4T1s0E4L+2QyXBlpLK0444DZWgkabp0UjJeRw6JCgS6Ln2O14DY7Ao6byYVkb6PY0hw/Z qq/dTnQMiRfLF6F/N9ol3/msamqfDkKuSqOy4rmKoUv/JHfUMVOCUIrfUpnamJI/iTLrOCTHW5 Zag= Content-Type: multipart/mixed; boundary="------------7Or7TOJU1vPNu0asNNeH5zI2" Message-ID: <0813fb26-b6ec-0a39-11aa-4a4687947531@codesourcery.com> Date: Fri, 10 Dec 2021 17:36:20 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 References: Subject: [PATCH 4/7] openmp: Add support for streaming metadirectives and resolving them after LTO To: gcc-patches , Jakub Jelinek From: Kwok Cheung Yeung In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) 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, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP 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, 10 Dec 2021 17:36:55 -0000 --------------7Or7TOJU1vPNu0asNNeH5zI2 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch adds support for streaming the Gimple metadirective representation during LTO. An extra pass (also using omp_get_dynamic_candidates) is also added to resolve metadirectives after LTO, which is required for selectors that need to be resolved on the accel compiler. Kwok --------------7Or7TOJU1vPNu0asNNeH5zI2 Content-Type: text/plain; charset="UTF-8"; name="0004-openmp-Add-support-for-streaming-metadirectives-and-.patch" Content-Disposition: attachment; filename*0="0004-openmp-Add-support-for-streaming-metadirectives-and-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4NTgyNmQwNWUwMjk1NzFmZDAwM2RkNjI5YWEwNGNlM2UxN2Q5YzcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLd29rIENoZXVuZyBZZXVuZyA8a2N5QGNvZGVzb3Vy Y2VyeS5jb20+CkRhdGU6IE1vbiwgNiBEZWMgMjAyMSAyMjo1NjowNyArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggNC83XSBvcGVubXA6IEFkZCBzdXBwb3J0IGZvciBzdHJlYW1pbmcgbWV0YWRp cmVjdGl2ZXMgYW5kCiByZXNvbHZpbmcgdGhlbSBhZnRlciBMVE8KClRoaXMgcGF0Y2ggYWRk cyBzdXBwb3J0IGZvciBzdHJlYW1pbmcgbWV0YWRpcmVjdGl2ZSBHaW1wbGUgc3RhdGVtZW50 cyBkdXJpbmcKTFRPLCBhbmQgYWRkcyBhIG1ldGFkaXJlY3RpdmUgZXhwYW5zaW9uIHBhc3Mg dGhhdCBydW5zIGFmdGVyIExUTy4gIFRoaXMgaXMKcmVxdWlyZWQgZm9yIG1ldGFkaXJlY3Rp dmVzIHdpdGggc2VsZWN0b3JzIHRoYXQgY2FuIG9ubHkgYmUgcmVzb2x2ZWQgZnJvbQp3aXRo aW4gdGhlIGFjY2VsIGNvbXBpbGVyLgoKMjAyMS0xMi0xMCAgS3dvayBDaGV1bmcgWWV1bmcg IDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4KCglnY2MvCgkqIE1ha2VmaWxlLmluIChPQkpTKTog QWRkIG9tcC1leHBhbmQtbWV0YWRpcmVjdGl2ZS5vLgoJKiBnaW1wbGUtc3RyZWFtZXItaW4u YyAoaW5wdXRfZ2ltcGxlX3N0bXQpOiBBZGQgY2FzZSBmb3IKCUdJTVBMRV9PTVBfTUVUQURJ UkVDVElWRS4gIEhhbmRsZSBtZXRhZGlyZWN0aXZlIGxhYmVscy4KCSogZ2ltcGxlLXN0cmVh bWVyLW91dC5jIChvdXRwdXRfZ2ltcGxlX3N0bXQpOiBMaWtld2lzZS4KCSogb21wLWV4cGFu ZC1tZXRhZGlyZWN0aXZlLmNjOiBOZXcuCgkqIHBhc3Nlcy5kZWY6IEFkZCBwYXNzX29tcF9l eHBhbmRfbWV0YWRpcmVjdGl2ZS4KCSogdHJlZS1wYXNzLmggKG1ha2VfcGFzc19vbXBfZXhw YW5kX21ldGFkaXJlY3RpdmUpOiBOZXcgcHJvdG90eXBlLgotLS0KIGdjYy9NYWtlZmlsZS5p biAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jICAg ICAgICB8ICAxMCArKwogZ2NjL2dpbXBsZS1zdHJlYW1lci1vdXQuYyAgICAgICB8ICAgNiAr CiBnY2Mvb21wLWV4cGFuZC1tZXRhZGlyZWN0aXZlLmNjIHwgMTkxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBnY2MvcGFzc2VzLmRlZiAgICAgICAgICAgICAgICAgIHwg ICAxICsKIGdjYy90cmVlLXBhc3MuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogNiBmaWxl cyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy9v bXAtZXhwYW5kLW1ldGFkaXJlY3RpdmUuY2MKCmRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUu aW4gYi9nY2MvTWFrZWZpbGUuaW4KaW5kZXggMmEwYmU5ZTY2YTYuLjM0YTE3ZjM2OTIyIDEw MDY0NAotLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrIGIvZ2NjL01ha2VmaWxlLmluCkBAIC0x NTE5LDYgKzE1MTksNyBAQCBPQkpTID0gXAogCW9tcC1vYWNjLWtlcm5lbHMtZGVjb21wb3Nl Lm8gXAogCW9tcC1vYWNjLW5ldXRlci1icm9hZGNhc3QubyBcCiAJb21wLXNpbWQtY2xvbmUu byBcCisJb21wLWV4cGFuZC1tZXRhZGlyZWN0aXZlLm8gXAogCW9wdC1wcm9ibGVtLm8gXAog CW9wdGFicy5vIFwKIAlvcHRhYnMtbGliZnVuY3MubyBcCmRpZmYgLS1naXQgYS9nY2MvZ2lt cGxlLXN0cmVhbWVyLWluLmMgYi9nY2MvZ2ltcGxlLXN0cmVhbWVyLWluLmMKaW5kZXggMWM5 NzlmNDM4YTUuLmI4MjFhYTNjYTMwIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXN0cmVhbWVy LWluLmMKKysrIGIvZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jCkBAIC0xNTEsNiArMTUxLDcg QEAgaW5wdXRfZ2ltcGxlX3N0bXQgKGNsYXNzIGx0b19pbnB1dF9ibG9jayAqaWIsIGNsYXNz IGRhdGFfaW4gKmRhdGFfaW4sCiAgICAgY2FzZSBHSU1QTEVfQ09ORDoKICAgICBjYXNlIEdJ TVBMRV9HT1RPOgogICAgIGNhc2UgR0lNUExFX0RFQlVHOgorICAgIGNhc2UgR0lNUExFX09N UF9NRVRBRElSRUNUSVZFOgogICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9vcHM7IGkrKykK IAl7CiAJICB0cmVlICpvcHAsIG9wID0gc3RyZWFtX3JlYWRfdHJlZSAoaWIsIGRhdGFfaW4p OwpAQCAtMTg4LDYgKzE4OSwxNSBAQCBpbnB1dF9naW1wbGVfc3RtdCAoY2xhc3MgbHRvX2lu cHV0X2Jsb2NrICppYiwgY2xhc3MgZGF0YV9pbiAqZGF0YV9pbiwKIAkgIGVsc2UKIAkgICAg Z2ltcGxlX2NhbGxfc2V0X2ZudHlwZSAoY2FsbF9zdG10LCBzdHJlYW1fcmVhZF90cmVlIChp YiwgZGF0YV9pbikpOwogCX0KKyAgICAgIGlmIChnb21wX21ldGFkaXJlY3RpdmUgKm1ldGFk aXJlY3RpdmVfc3RtdAorCSAgICA9IGR5bl9jYXN0IDxnb21wX21ldGFkaXJlY3RpdmUqPiAo c3RtdCkpCisJeworCSAgZ2ltcGxlX2FsbG9jX29tcF9tZXRhZGlyZWN0aXZlIChtZXRhZGly ZWN0aXZlX3N0bXQpOworCSAgZm9yIChpID0gMDsgaSA8IG51bV9vcHM7IGkrKykKKwkgICAg Z2ltcGxlX29tcF9tZXRhZGlyZWN0aXZlX3NldF9sYWJlbCAobWV0YWRpcmVjdGl2ZV9zdG10 LCBpLAorCQkJCQkJc3RyZWFtX3JlYWRfdHJlZSAoaWIsCisJCQkJCQkJCSAgZGF0YV9pbikp OworCX0KICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBHSU1QTEVfTk9QOgpkaWZmIC0tZ2l0 IGEvZ2NjL2dpbXBsZS1zdHJlYW1lci1vdXQuYyBiL2djYy9naW1wbGUtc3RyZWFtZXItb3V0 LmMKaW5kZXggZmNiZjkyMzAwZDQuLmMxOWRmZjc0MjYxIDEwMDY0NAotLS0gYS9nY2MvZ2lt cGxlLXN0cmVhbWVyLW91dC5jCisrKyBiL2djYy9naW1wbGUtc3RyZWFtZXItb3V0LmMKQEAg LTEyNyw2ICsxMjcsNyBAQCBvdXRwdXRfZ2ltcGxlX3N0bXQgKHN0cnVjdCBvdXRwdXRfYmxv Y2sgKm9iLCBzdHJ1Y3QgZnVuY3Rpb24gKmZuLCBnaW1wbGUgKnN0bXQpCiAgICAgY2FzZSBH SU1QTEVfQ09ORDoKICAgICBjYXNlIEdJTVBMRV9HT1RPOgogICAgIGNhc2UgR0lNUExFX0RF QlVHOgorICAgIGNhc2UgR0lNUExFX09NUF9NRVRBRElSRUNUSVZFOgogICAgICAgZm9yIChp ID0gMDsgaSA8IGdpbXBsZV9udW1fb3BzIChzdG10KTsgaSsrKQogCXsKIAkgIHRyZWUgb3Ag PSBnaW1wbGVfb3AgKHN0bXQsIGkpOwpAQCAtMTY5LDYgKzE3MCwxMSBAQCBvdXRwdXRfZ2lt cGxlX3N0bXQgKHN0cnVjdCBvdXRwdXRfYmxvY2sgKm9iLCBzdHJ1Y3QgZnVuY3Rpb24gKmZu LCBnaW1wbGUgKnN0bXQpCiAJICBlbHNlCiAJICAgIHN0cmVhbV93cml0ZV90cmVlIChvYiwg Z2ltcGxlX2NhbGxfZm50eXBlIChzdG10KSwgdHJ1ZSk7CiAJfQorICAgICAgaWYgKGdpbXBs ZV9jb2RlIChzdG10KSA9PSBHSU1QTEVfT01QX01FVEFESVJFQ1RJVkUpCisJZm9yIChpID0g MDsgaSA8IGdpbXBsZV9udW1fb3BzIChzdG10KTsgaSsrKQorCSAgc3RyZWFtX3dyaXRlX3Ry ZWUgKG9iLCBnaW1wbGVfb21wX21ldGFkaXJlY3RpdmVfbGFiZWwgKHN0bXQsIGkpLAorCQkJ ICAgICB0cnVlKTsKKwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdJTVBMRV9OT1A6CmRp ZmYgLS1naXQgYS9nY2Mvb21wLWV4cGFuZC1tZXRhZGlyZWN0aXZlLmNjIGIvZ2NjL29tcC1l eHBhbmQtbWV0YWRpcmVjdGl2ZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYWFmMDQ4YTY5OWEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mvb21wLWV4cGFu ZC1tZXRhZGlyZWN0aXZlLmNjCkBAIC0wLDAgKzEsMTkxIEBACisvKiBFeHBhbmQgYW4gT3Bl bk1QIG1ldGFkaXJlY3RpdmUuCisKKyAgIENvcHlyaWdodCAoQykgMjAyMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorCitH Q0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdCB1bmRlcgordGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCit2ZXJzaW9u LgorCitHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCitXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCitm b3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBHQ0M7IHNlZSB0 aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJzeXN0ZW0u aCIKKyNpbmNsdWRlICJjb3JldHlwZXMuaCIKKyNpbmNsdWRlICJiYWNrZW5kLmgiCisjaW5j bHVkZSAidGFyZ2V0LmgiCisjaW5jbHVkZSAidHJlZS5oIgorI2luY2x1ZGUgImxhbmdob29r cy5oIgorI2luY2x1ZGUgImdpbXBsZS5oIgorI2luY2x1ZGUgInRyZWUtcGFzcy5oIgorI2lu Y2x1ZGUgImNncmFwaC5oIgorI2luY2x1ZGUgImZvbGQtY29uc3QuaCIKKyNpbmNsdWRlICJn aW1wbGlmeS5oIgorI2luY2x1ZGUgImdpbXBsZS1pdGVyYXRvci5oIgorI2luY2x1ZGUgImdp bXBsZS13YWxrLmgiCisjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKKyNpbmNsdWRlICJv bXAtZ2VuZXJhbC5oIgorI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgorI2luY2x1ZGUg InRyZWUtY2ZnLmgiCisjaW5jbHVkZSAiY2ZnYW5hbC5oIgorI2luY2x1ZGUgInNzYS5oIgor I2luY2x1ZGUgInRyZWUtaW50by1zc2EuaCIKKyNpbmNsdWRlICJjZmdob29rcy5oIgorCitz dGF0aWMgdm9pZAorb21wX2V4cGFuZF9tZXRhZGlyZWN0aXZlIChmdW5jdGlvbiAqZnVuLCBi YXNpY19ibG9jayBiYikKK3sKKyAgZ2ltcGxlICpzdG10ID0gbGFzdF9zdG10IChiYik7Cisg IHZlYzxzdHJ1Y3Qgb21wX21ldGFkaXJlY3RpdmVfdmFyaWFudD4gY2FuZGlkYXRlcworICAg ID0gb21wX3Jlc29sdmVfbWV0YWRpcmVjdGl2ZSAoc3RtdCk7CisKKyAgLyogVGhpcyBpcyB0 aGUgbGFzdCBjaGFuY2UgZm9yIHRoZSBtZXRhZGlyZWN0aXZlIHRvIGJlIHJlc29sdmVkLiAg Ki8KKyAgaWYgKGNhbmRpZGF0ZXMuaXNfZW1wdHkgKCkpCisgICAgZ2NjX3VucmVhY2hhYmxl ICgpOworCisgIGF1dG9fdmVjPHRyZWU+IGxhYmVsczsKKworICBmb3IgKHVuc2lnbmVkIGlu dCBpID0gMDsgaSA8IGNhbmRpZGF0ZXMubGVuZ3RoICgpOyBpKyspCisgICAgbGFiZWxzLnNh ZmVfcHVzaCAoY2FuZGlkYXRlc1tpXS5kaXJlY3RpdmUpOworCisgIC8qIERlbGV0ZSBCQnMg Zm9yIGFsbCB2YXJpYW50cyBub3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LiAgKi8KKyAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IGdpbXBsZV9udW1fb3BzIChzdG10KTsgaSsrKQorICAg IHsKKyAgICAgIHRyZWUgbGFiZWwgPSBnaW1wbGVfb21wX21ldGFkaXJlY3RpdmVfbGFiZWwg KHN0bXQsIGkpOworICAgICAgaWYgKCFsYWJlbHMuY29udGFpbnMgKGxhYmVsKSkKKwl7CisJ ICBlZGdlIGUgPSBmaW5kX2VkZ2UgKGJiLCBsYWJlbF90b19ibG9jayAoZnVuLCBsYWJlbCkp OworCSAgcmVtb3ZlX2VkZ2VfYW5kX2RvbWluYXRlZF9ibG9ja3MgKGUpOworCX0KKyAgICB9 CisKKyAgLyogUmVtb3ZlIHRoZSBtZXRhZGlyZWN0aXZlIHN0YXRlbWVudC4gICovCisgIGdp bXBsZV9zdG10X2l0ZXJhdG9yIGdzaSA9IGdzaV9sYXN0X2JiIChiYik7CisgIGdzaV9yZW1v dmUgKCZnc2ksIHRydWUpOworCisgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCAoKSA9PSAxKQor ICAgIHsKKyAgICAgIC8qIFNwZWNpYWwgY2FzZSBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzZWxl Y3RvciAtIHRoZXJlIHNob3VsZCBiZSBvbmUKKwkgcmVtYWluaW5nIGVkZ2UgZnJvbSBCQiB0 byB0aGUgc2VsZWN0ZWQgdmFyaWFudC4gICovCisgICAgICBlZGdlIGUgPSBmaW5kX2VkZ2Ug KGJiLCBsYWJlbF90b19ibG9jayAoZnVuLAorCQkJCQkgICAgICBjYW5kaWRhdGVzLmxhc3Qg KCkuZGlyZWN0aXZlKSk7CisgICAgICBlLT5mbGFncyB8PSBFREdFX0ZBTExUSFJVOworCisg ICAgICByZXR1cm47CisgICAgfQorCisgIGJhc2ljX2Jsb2NrIGN1cl9iYiA9IGJiOworCisg IC8qIEZvciBlYWNoIGNhbmRpZGF0ZSwgY3JlYXRlIGEgY29uZGl0aW9uYWwgdGhhdCBjaGVj a3MgdGhlIGR5bmFtaWMKKyAgICAgY29uZGl0aW9uLCBicmFuY2hpbmcgdG8gdGhlIGNhbmRp ZGF0ZSBkaXJlY3RpdmUgaWYgdHJ1ZSwgdG8gdGhlCisgICAgIG5leHQgY2FuZGlkYXRlIGNo ZWNrIGlmIGZhbHNlLiAgKi8KKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbmRpZGF0 ZXMubGVuZ3RoICgpIC0gMTsgaSsrKQorICAgIHsKKyAgICAgIGJhc2ljX2Jsb2NrIG5leHRf YmIgPSBOVUxMOworICAgICAgZ2NvbmQgKmNvbmRfc3RtdCA9IGdpbXBsZV9idWlsZF9jb25k X2Zyb21fdHJlZSAoY2FuZGlkYXRlc1tpXS5zZWxlY3RvciwKKwkJCQkJCSAgICAgIE5VTExf VFJFRSwgTlVMTF9UUkVFKTsKKyAgICAgIGdzaSA9IGdzaV9sYXN0X2JiIChjdXJfYmIpOwor ICAgICAgZ3NpX2luc2VydF9zZXFfYWZ0ZXIgKCZnc2ksIGNvbmRfc3RtdCwgR1NJX05FV19T VE1UKTsKKworICAgICAgaWYgKGkgPCBjYW5kaWRhdGVzLmxlbmd0aCAoKSAtIDIpCisJewor CSAgZWRnZSBlX2ZhbHNlID0gc3BsaXRfYmxvY2sgKGN1cl9iYiwgY29uZF9zdG10KTsKKwkg IGVfZmFsc2UtPmZsYWdzICY9IH5FREdFX0ZBTExUSFJVOworCSAgZV9mYWxzZS0+ZmxhZ3Mg fD0gRURHRV9GQUxTRV9WQUxVRTsKKwkgIGVfZmFsc2UtPnByb2JhYmlsaXR5ID0gcHJvZmls ZV9wcm9iYWJpbGl0eTo6dW5pbml0aWFsaXplZCAoKTsKKworCSAgbmV4dF9iYiA9IGVfZmFs c2UtPmRlc3Q7CisJfQorCisgICAgICAvKiBSZWRpcmVjdCB0aGUgc291cmNlIG9mIHRoZSBl ZGdlIGZyb20gQkIgdG8gdGhlIGNhbmRpZGF0ZSBkaXJlY3RpdmUKKwkgdG8gdGhlIGNvbmRp dGlvbmFsLiAgUmV1c2luZyB0aGUgZWRnZSBhdm9pZHMgZGlzdHVyYmluZyBwaGkgbm9kZXMg aW4KKwkgIHRoZSBkZXN0aW5hdGlvbiBCQi4gICovCisgICAgICBlZGdlIGUgPSBmaW5kX2Vk Z2UgKGJiLCBsYWJlbF90b19ibG9jayAoZnVuLCBjYW5kaWRhdGVzW2ldLmRpcmVjdGl2ZSkp OworICAgICAgcmVkaXJlY3RfZWRnZV9wcmVkIChlLCBjdXJfYmIpOworICAgICAgZS0+Zmxh Z3MgfD0gRURHRV9UUlVFX1ZBTFVFOworCisgICAgICBpZiAobmV4dF9iYikKKwljdXJfYmIg PSBuZXh0X2JiOworICAgIH0KKworICAvKiBUaGUgbGFzdCBvZiB0aGUgY2FuZGlkYXRlcyBp cyBhbHdheXMgc3RhdGljLiAgKi8KKyAgZWRnZSBlID0gZmluZF9lZGdlIChjdXJfYmIsIGxh YmVsX3RvX2Jsb2NrIChmdW4sCisJCQkJCSAgICAgIGNhbmRpZGF0ZXMubGFzdCAoKS5kaXJl Y3RpdmUpKTsKKyAgZS0+ZmxhZ3MgfD0gRURHRV9GQUxTRV9WQUxVRTsKK30KKworbmFtZXNw YWNlIHsKKworY29uc3QgcGFzc19kYXRhIHBhc3NfZGF0YV9vbXBfZXhwYW5kX21ldGFkaXJl Y3RpdmUgPQoreworICBHSU1QTEVfUEFTUywgLyogdHlwZSAqLworICAib21wX2V4cGFuZF9t ZXRhZGlyZWN0aXZlIiwgLyogbmFtZSAqLworICBPUFRHUk9VUF9PTVAsIC8qIG9wdGluZm9f ZmxhZ3MgKi8KKyAgVFZfTk9ORSwgLyogdHZfaWQgKi8KKyAgUFJPUF9naW1wbGVfbGNmLCAv KiBwcm9wZXJ0aWVzX3JlcXVpcmVkICovCisgIDAsIC8qIHByb3BlcnRpZXNfcHJvdmlkZWQg Ki8KKyAgMCwgLyogcHJvcGVydGllc19kZXN0cm95ZWQgKi8KKyAgMCwgLyogdG9kb19mbGFn c19zdGFydCAqLworICBUT0RPX3VwZGF0ZV9zc2EgfCBUT0RPX2NsZWFudXBfY2ZnLCAvKiB0 b2RvX2ZsYWdzX2ZpbmlzaCAqLworfTsKKworY2xhc3MgcGFzc19vbXBfZXhwYW5kX21ldGFk aXJlY3RpdmUgOiBwdWJsaWMgZ2ltcGxlX29wdF9wYXNzCit7CitwdWJsaWM6CisgIHBhc3Nf b21wX2V4cGFuZF9tZXRhZGlyZWN0aXZlIChnY2M6OmNvbnRleHQgKmN0eHQpCisgICAgOiBn aW1wbGVfb3B0X3Bhc3MgKHBhc3NfZGF0YV9vbXBfZXhwYW5kX21ldGFkaXJlY3RpdmUsIGN0 eHQpCisgIHt9CisKKyAgLyogb3B0X3Bhc3MgbWV0aG9kczogKi8KKyAgdmlydHVhbCBib29s IGdhdGUgKGZ1bmN0aW9uICopCisgIHsKKyAgICByZXR1cm4gKGZsYWdfb3Blbm1wKTsKKyAg fQorCisgIHZpcnR1YWwgdW5zaWduZWQgaW50IGV4ZWN1dGUgKGZ1bmN0aW9uICpmdW4pOwor fTsgLy8gY2xhc3MgcGFzc19vbXBfb2FjY19rZXJuZWxzX2RlY29tcG9zZQorCit1bnNpZ25l ZCBpbnQKK3Bhc3Nfb21wX2V4cGFuZF9tZXRhZGlyZWN0aXZlOjpleGVjdXRlIChmdW5jdGlv biAqZnVuKQoreworICBiYXNpY19ibG9jayBiYjsKKyAgYXV0b192ZWM8YmFzaWNfYmxvY2s+ IG1ldGFkaXJlY3RpdmVfYmJzOworCisgIEZPUl9FQUNIX0JCX0ZOIChiYiwgZnVuKQorICAg IHsKKyAgICAgIGdpbXBsZSAqc3RtdCA9IGxhc3Rfc3RtdCAoYmIpOworICAgICAgaWYgKHN0 bXQgJiYgaXNfYTxnb21wX21ldGFkaXJlY3RpdmUgKj4gKHN0bXQpKQorCW1ldGFkaXJlY3Rp dmVfYmJzLnNhZmVfcHVzaCAoYmIpOworICAgIH0KKworICBpZiAobWV0YWRpcmVjdGl2ZV9i YnMuaXNfZW1wdHkgKCkpCisgICAgcmV0dXJuIDA7CisKKyAgY2FsY3VsYXRlX2RvbWluYW5j ZV9pbmZvIChDRElfRE9NSU5BVE9SUyk7CisKKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8 IG1ldGFkaXJlY3RpdmVfYmJzLmxlbmd0aCAoKTsgaSsrKQorICAgIG9tcF9leHBhbmRfbWV0 YWRpcmVjdGl2ZSAoZnVuLCBtZXRhZGlyZWN0aXZlX2Jic1tpXSk7CisKKyAgZnJlZV9kb21p bmFuY2VfaW5mbyAoZnVuLCBDRElfRE9NSU5BVE9SUyk7CisgIG1hcmtfdmlydHVhbF9vcGVy YW5kc19mb3JfcmVuYW1pbmcgKGZ1bik7CisKKyAgcmV0dXJuIDA7Cit9CisKK30gLy8gYW5v biBuYW1lc3BhY2UKKworCitnaW1wbGVfb3B0X3Bhc3MgKgorbWFrZV9wYXNzX29tcF9leHBh bmRfbWV0YWRpcmVjdGl2ZSAoZ2NjOjpjb250ZXh0ICpjdHh0KQoreworICByZXR1cm4gbmV3 IHBhc3Nfb21wX2V4cGFuZF9tZXRhZGlyZWN0aXZlIChjdHh0KTsKK30KZGlmZiAtLWdpdCBh L2djYy9wYXNzZXMuZGVmIGIvZ2NjL3Bhc3Nlcy5kZWYKaW5kZXggMzdlYTBkMzE4ZDEuLmI4 MGE1M2M0MDUxIDEwMDY0NAotLS0gYS9nY2MvcGFzc2VzLmRlZgorKysgYi9nY2MvcGFzc2Vz LmRlZgpAQCAtMTg5LDYgKzE4OSw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCiAgIE5FWFRfUEFTUyAocGFzc19vYWNjX2RldmljZV9s b3dlcik7CiAgIE5FWFRfUEFTUyAocGFzc19vbXBfZGV2aWNlX2xvd2VyKTsKICAgTkVYVF9Q QVNTIChwYXNzX29tcF90YXJnZXRfbGluayk7CisgIE5FWFRfUEFTUyAocGFzc19vbXBfZXhw YW5kX21ldGFkaXJlY3RpdmUpOwogICBORVhUX1BBU1MgKHBhc3NfYWRqdXN0X2FsaWdubWVu dCk7CiAgIE5FWFRfUEFTUyAocGFzc19hbGxfb3B0aW1pemF0aW9ucyk7CiAgIFBVU0hfSU5T RVJUX1BBU1NFU19XSVRISU4gKHBhc3NfYWxsX29wdGltaXphdGlvbnMpCmRpZmYgLS1naXQg YS9nY2MvdHJlZS1wYXNzLmggYi9nY2MvdHJlZS1wYXNzLmgKaW5kZXggMzU1OWMzYzlmMWIu LmU0MzE1ZTJmZTg1IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1wYXNzLmgKKysrIGIvZ2NjL3Ry ZWUtcGFzcy5oCkBAIC00MjIsNiArNDIyLDcgQEAgZXh0ZXJuIGdpbXBsZV9vcHRfcGFzcyAq bWFrZV9wYXNzX2xvd2VyX3N3aXRjaF9PMCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVy biBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19sb3dlcl92ZWN0b3IgKGdjYzo6Y29udGV4 dCAqY3R4dCk7CiBleHRlcm4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bhc3NfbG93ZXJfdmVj dG9yX3NzYSAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVybiBnaW1wbGVfb3B0X3Bhc3Mg Km1ha2VfcGFzc19vbXBfb2FjY19rZXJuZWxzX2RlY29tcG9zZSAoZ2NjOjpjb250ZXh0ICpj dHh0KTsKK2V4dGVybiBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19vbXBfZXhwYW5kX21l dGFkaXJlY3RpdmUgKGdjYzo6Y29udGV4dCAqY3R4dCk7CiBleHRlcm4gZ2ltcGxlX29wdF9w YXNzICptYWtlX3Bhc3NfbG93ZXJfb21wIChnY2M6OmNvbnRleHQgKmN0eHQpOwogZXh0ZXJu IGdpbXBsZV9vcHRfcGFzcyAqbWFrZV9wYXNzX2RpYWdub3NlX29tcF9ibG9ja3MgKGdjYzo6 Y29udGV4dCAqY3R4dCk7CiBleHRlcm4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bhc3NfZXhw YW5kX29tcCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKLS0gCjIuMjUuMQoK --------------7Or7TOJU1vPNu0asNNeH5zI2--