From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7326 invoked by alias); 11 Jul 2017 21:22:03 -0000 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 Received: (qmail 7249 invoked by uid 89); 11 Jul 2017 21:22:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 11 Jul 2017 21:21:59 +0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A78EB80F63 for ; Tue, 11 Jul 2017 21:21:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A78EB80F63 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=law@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com A78EB80F63 Received: from localhost.localdomain (ovpn-116-33.phx2.redhat.com [10.3.116.33]) by smtp.corp.redhat.com (Postfix) with ESMTP id 61A824141 for ; Tue, 11 Jul 2017 21:21:57 +0000 (UTC) From: Jeff Law Subject: [PATCH][RFA/RFC] Stack clash mitigation patch 08/08 To: gcc-patches Message-ID: Date: Tue, 11 Jul 2017 21:22:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------AFDC0D9D472E82CCCE01BD8D" X-IsSubscribed: yes X-SW-Source: 2017-07/txt/msg00564.txt.bz2 This is a multi-part message in MIME format. --------------AFDC0D9D472E82CCCE01BD8D Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 1617 This patch adds s390 support for stack-clash mitigation. s390's most interesting property is that the caller allocates space for the callee to save registers into. So much like aarch64, we start with a very conservative assumption about the offset between SP and the most recent stack probe. As we encounter those register saves we may be able to decrease that offset. And like aarch64 as we allocate space, the offset increases. If the offset crosses PROBE_INTERVAL, we must emit probes. Because the register saves hit the caller's frame s390 in some ways generates code more like x86/ppc. Though if there aren't any register saves, then the resulting code looks more like aarch64. For large frames, I did not implement an allocate/probe in a loop. Someone with a better understanding of the architecture is better suited for that work. I'll note that you're going to need another scratch register :-) This is the cause of the xfail of one test which expects to see a prologue allocate/probe loop. s390 has a -mbackchain option. I'm not sure where it's used, but we do try to handle it in the initial offset computation. However, we don't handle it in the actual allocations that occur when -fstack-check=clash is enabled. s390 does not have a -fstack-check=specific implementation. I have not tried to add one. But I have defined STACK_CHECK_STATIC_BUILTIN. I haven't investigated what side effects that might have. Other than the xfail noted above, the s390 uses the same tests as the x86, ppc and aarch64 ports. I suspect we're going to need further iteration here. Thoughts/Comments? Jeff --------------AFDC0D9D472E82CCCE01BD8D Content-Type: text/plain; charset=UTF-8; name="P8" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="P8" Content-length: 12457 CgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoUFJPQkVfSU5URVJWQUwpOiBEZWZp bmUuCgkoYWxsb2NhdGVfc3RhY2tfc3BhY2UpOiBOZXcgZnVuY3Rpb24sIHBh cnRpYWxseSBleHRyYWN0ZWQgZnJvbQoJczM5MF9lbWl0X3Byb2xvZ3VlLgoJ KHMzOTBfZW1pdF9wcm9sb2d1ZSk6IFRyYWNrIG9mZnNldCB0byBtb3N0IHJl Y2VudCBzdGFjayBwcm9iZS4KCUNvZGUgdG8gYWxsb2NhdGUgc3BhY2UgbW92 ZWQgaW50byBhbGxvY2F0ZV9zdGFja19zcGFjZS4KCUR1bXAgYWN0aW9ucyB3 aGVuIG5vIHN0YWNrIGlzIGFsbG9jYXRlZC4KCSogY29uZmlnL3MzOTAvczM5 MC5oIChTVEFDS19DSEVDS19TVEFUSUNfQlVJTFRJTik6IERlZmluZS4KCnRl c3RzdWl0ZS8KCgkqIGdjYy5kZy9zdGFjay1jaGVjay02LmM6IHhmYWlsIGZv ciBzMzkwKi0qLSouCgkKY29tbWl0IDU2NTIzMDU5ZDQ4ZjU1OTkxZTc2MDdk YmRlMjQ4ZjJhYWJlM2U3ZTMKQXV0aG9yOiBKZWZmIExhdyA8bGF3QGRldmVs MS5zMzkwLmJvcy5yZWRoYXQuY29tPgpEYXRlOiAgIEZyaSBKdWwgNyAxNzoy NTozNSAyMDE3ICswMDAwCgogICAgUzM5MCBpbXBsZW1lbnRhdG9pbgoKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvczM5MC9zMzkwLmMgYi9nY2MvY29uZmln L3MzOTAvczM5MC5jCmluZGV4IDk1OGVlM2IuLmNkZGIzOTMgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvczM5MC9zMzkwLmMKKysrIGIvZ2NjL2NvbmZpZy9z MzkwL3MzOTAuYwpAQCAtMTA5OTksNiArMTA5OTksMTA3IEBAIHBhc3NfczM5 MF9lYXJseV9tYWNoOjpleGVjdXRlIChmdW5jdGlvbiAqZnVuKQogCiB9IC8v IGFub24gbmFtZXNwYWNlCiAKKyNkZWZpbmUgUFJPQkVfSU5URVJWQUwgKDEg PDwgU1RBQ0tfQ0hFQ0tfUFJPQkVfSU5URVJWQUxfRVhQKQorCisvKiBBbGxv Y2F0ZSBTSVpFIGJ5dGVzIG9mIHN0YWNrIHNwYWNlLCB1c2luZyBURU1QX1JF RyBhcyBhIHRlbXBvcmFyeQorICAgaWYgbmVjZXNzYXJ5LiAgTEFTVF9QUk9C RV9PRkZTRVQgY29udGFpbnMgdGhlIG9mZnNldCBvZiB0aGUgY2xvc2VzdAor ICAgcHJvYmUgcmVsYXRpdmUgdG8gdGhlIHN0YWNrIHBvaW50ZXIuCisKKyAg IE5vdGUgdGhhdCBTSVpFIGlzIG5lZ2F0aXZlLiAKKworICAgVE1QX1JFR19J U19MSVZFIGluZGljYXRlcyB0aGF0IFRFTVBfUkVHIGFjdHVhbGx5IGhvbGRz IGEgbGl2ZQorICAgdmFsdWUgYW5kIG11c3QgYmUgcmVzdG9yZWQgaWYgd2Ug Y2xvYmJlciBpdC4gICovCitzdGF0aWMgdm9pZAorYWxsb2NhdGVfc3RhY2tf c3BhY2UgKHJ0eCBzaXplLCBIT1NUX1dJREVfSU5UIGxhc3RfcHJvYmVfb2Zm c2V0LAorCQkgICAgICBydHggdGVtcF9yZWcsIGJvb2wgdG1wX3JlZ19pc19s aXZlKQoreworICBydHggaW5zbjsKKworICAvKiBJZiB3ZSBhcmUgZW1pdHRp bmcgc3RhY2sgcHJvYmVzIGFuZCBhIFNJWkUgYWxsb2NhdGlvbiB3b3VsZCBj cm9zcworICAgICB0aGUgUFJPQkVfSU5URVJWQUwgYm91bmRhcnksIHRoZW4g d2UgbmVlZCBzaWduaWZpY2FudGx5IGRpZmZlcmVudAorICAgICBzZXF1ZW5j ZXMgdG8gYWxsb2NhdGUgYW5kIHByb2JlIHRoZSBzdGFjay4gICovCisgIGlm IChmbGFnX3N0YWNrX2NoZWNrID09IFNUQUNLX0NMQVNIX0JVSUxUSU5fU1RB Q0tfQ0hFQ0sKKyAgICAgICYmIGxhc3RfcHJvYmVfb2Zmc2V0ICsgLUlOVFZB TCAoc2l6ZSkgPCBQUk9CRV9JTlRFUlZBTCkKKyAgICBkdW1wX3N0YWNrX2Ns YXNoX2ZyYW1lX2luZm8gKE5PX1BST0JFX1NNQUxMX0ZSQU1FLCB0cnVlKTsK KyAgZWxzZSBpZiAoZmxhZ19zdGFja19jaGVjayA9PSBTVEFDS19DTEFTSF9C VUlMVElOX1NUQUNLX0NIRUNLCisgICAgICAmJiBsYXN0X3Byb2JlX29mZnNl dCArIC1JTlRWQUwgKHNpemUpID49IFBST0JFX0lOVEVSVkFMKQorICAgIHsK KyAgICAgIHJ0eCBtZW1yZWY7CisKKyAgICAgIEhPU1RfV0lERV9JTlQgcm91 bmRlZF9zaXplID0gLUlOVFZBTCAoc2l6ZSkgJiAtUFJPQkVfSU5URVJWQUw7 CisKKyAgICAgIGVtaXRfbW92ZV9pbnNuICh0ZW1wX3JlZywgR0VOX0lOVCAo UFJPQkVfSU5URVJWQUwgLSA4KSk7CisKKyAgICAgIC8qIFdlIHJlYWxseSBz aG91bGQgaGF2ZSBhIHJ1bnRpbWUgbG9vcCB2ZXJzaW9uIGFzIHdlbGwuICAq LworICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByb3VuZGVk X3NpemU7IGkgKz0gUFJPQkVfSU5URVJWQUwpCisJeworCSAgaW5zbiA9IGVt aXRfaW5zbiAoZ2VuX2FkZDJfaW5zbiAoc3RhY2tfcG9pbnRlcl9ydHgsCisJ CQkJCSAgIEdFTl9JTlQgKC1QUk9CRV9JTlRFUlZBTCkpKTsKKwkgIFJUWF9G UkFNRV9SRUxBVEVEX1AgKGluc24pOworCisJICAvKiBXZSBqdXN0IGFsbG9j YXRlZCBQUk9CRV9JTlRFUlZBTCBieXRlcyBvZiBzdGFjayBzcGFjZS4gIFRo dXMsCisJICAgICBhIHByb2JlIGlzIG1hbmRhdG9yeSBoZXJlLCBidXQgTEFT VF9QUk9CRV9PRkZTRVQgZG9lcyBub3QKKwkgICAgIGNoYW5nZS4gICovCisJ ICBtZW1yZWYgPSBnZW5fcnR4X01FTSAoUG1vZGUsIGdlbl9ydHhfUExVUyAo UG1vZGUsIHRlbXBfcmVnLAorCQkJCQkJCSBzdGFja19wb2ludGVyX3J0eCkp OworCSAgTUVNX1ZPTEFUSUxFX1AgKG1lbXJlZik7CisJICBlbWl0X21vdmVf aW5zbiAobWVtcmVmLCB0ZW1wX3JlZyk7CisJfQorCisgICAgICAvKiBIYW5k bGUgYW55IHJlc2lkdWFsIGFsbG9jYXRpb24gcmVxdWVzdC4gICovCisgICAg ICBIT1NUX1dJREVfSU5UIHJlc2lkdWFsID0gLUlOVFZBTCAoc2l6ZSkgLSBy b3VuZGVkX3NpemU7CisgICAgICBpbnNuID0gZW1pdF9pbnNuIChnZW5fYWRk Ml9pbnNuIChzdGFja19wb2ludGVyX3J0eCwKKwkJCQkgICAgICAgR0VOX0lO VCAoLXJlc2lkdWFsKSkpOworICAgICAgUlRYX0ZSQU1FX1JFTEFURURfUCAo aW5zbikgPSAxOworICAgICAgbGFzdF9wcm9iZV9vZmZzZXQgKz0gcmVzaWR1 YWw7CisgICAgICBpZiAobGFzdF9wcm9iZV9vZmZzZXQgPj0gUFJPQkVfSU5U RVJWQUwpCisJeworCSAgZW1pdF9tb3ZlX2luc24gKHRlbXBfcmVnLCBHRU5f SU5UIChyZXNpZHVhbAorCQkJCQkgICAgIC0gR0VUX01PREVfU0laRSAod29y ZF9tb2RlKSkpOworCSAgbWVtcmVmID0gZ2VuX3J0eF9NRU0gKFBtb2RlLCBn ZW5fcnR4X1BMVVMgKFBtb2RlLCB0ZW1wX3JlZywKKwkJCQkJCSAgICAgc3Rh Y2tfcG9pbnRlcl9ydHgpKTsKKwkgIE1FTV9WT0xBVElMRV9QIChtZW1yZWYp OworCSAgZW1pdF9tb3ZlX2luc24gKG1lbXJlZiwgdGVtcF9yZWcpOworCX0K KworICAgICAgLyogV2UgY2xvYmJlcmVkIFRFTVBfUkVHLCBidXQgaXQgcmVh bGx5IGlzbid0IGEgdGVtcG9yYXJ5IGF0IHRoaXMgcG9pbnQsCisJIHJlc3Rv cmUgaXRzIHZhbHVlLiAgKi8KKyAgICAgIGlmICh0ZW1wX3JlZ19pc19saXZl KQorCXsKKwkgIGVtaXRfbW92ZV9pbnNuICh0ZW1wX3JlZywgR0VOX0lOVCAo LUlOVFZBTCAoc2l6ZSkpKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX2FkZDJfaW5z biAodGVtcF9yZWcsIHN0YWNrX3BvaW50ZXJfcnR4KSk7CisJfQorCisgICAg ICBkdW1wX3N0YWNrX2NsYXNoX2ZyYW1lX2luZm8gKFBST0JFX0lOTElORSwg cmVzaWR1YWwgIT0gMCk7CisgICAgICBlbWl0X2luc24gKGdlbl9ibG9ja2Fn ZSAoKSk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIC8qIFN1YnRyYWN0 IGZyYW1lIHNpemUgZnJvbSBzdGFjayBwb2ludGVyLiAgKi8KKworICBpZiAo RElTUF9JTl9SQU5HRSAoSU5UVkFMIChzaXplKSkpCisgICAgeworICAgICAg aW5zbiA9IGdlbl9ydHhfU0VUIChzdGFja19wb2ludGVyX3J0eCwKKwkJCSAg Z2VuX3J0eF9QTFVTIChQbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgsIHNpemUp KTsKKyAgICAgIGluc24gPSBlbWl0X2luc24gKGluc24pOworICAgIH0KKyAg ZWxzZQorICAgIHsKKyAgICAgIGlmICghQ09OU1RfT0tfRk9SX0sgKElOVFZB TCAoc2l6ZSkpKQorCXNpemUgPSBmb3JjZV9jb25zdF9tZW0gKFBtb2RlLCBz aXplKTsKKworICAgICAgaW5zbiA9IGVtaXRfaW5zbiAoZ2VuX2FkZDJfaW5z biAoc3RhY2tfcG9pbnRlcl9ydHgsIHNpemUpKTsKKyAgICAgIGFubm90YXRl X2NvbnN0YW50X3Bvb2xfcmVmcyAoJlBBVFRFUk4gKGluc24pKTsKKyAgICB9 CisKKyAgUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAxOworICBydHgg cmVhbF9mcmFtZV9vZmYgPSBHRU5fSU5UICgtY2Z1bl9mcmFtZV9sYXlvdXQu ZnJhbWVfc2l6ZSk7CisgIGFkZF9yZWdfbm90ZSAoaW5zbiwgUkVHX0ZSQU1F X1JFTEFURURfRVhQUiwKKwkJZ2VuX3J0eF9TRVQgKHN0YWNrX3BvaW50ZXJf cnR4LAorCQkJICAgICBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzdGFja19wb2lu dGVyX3J0eCwKKwkJCQkJICAgcmVhbF9mcmFtZV9vZmYpKSk7Cit9CisKIC8q IEV4cGFuZCB0aGUgcHJvbG9ndWUgaW50byBhIGJ1bmNoIG9mIHNlcGFyYXRl IGluc25zLiAgKi8KIAogdm9pZApAQCAtMTEwMjMsNiArMTExMjQsMTYgQEAg czM5MF9lbWl0X3Byb2xvZ3VlICh2b2lkKQogICBlbHNlCiAgICAgdGVtcF9y ZWcgPSBnZW5fcnR4X1JFRyAoUG1vZGUsIDEpOwogCisgIC8qIFdoZW4gcHJv YmluZyBmb3Igc3RhY2stY2xhc2ggbWl0aWdhdGlvbiwgd2UgaGF2ZSB0byB0 cmFjayB0aGUgZGlzdGFuY2UKKyAgICAgYmV0d2VlbiB0aGUgc3RhY2sgcG9p bnRlciBhbmQgY2xvc2VzdCBrbm93biByZWZlcmVuY2UuCisKKyAgICAgTW9z dCBvZiB0aGUgdGltZSB3ZSBoYXZlIHRvIG1ha2UgYSB3b3JzdCBjYXN0IGFz c3VtcHRpb24uICBUaGUKKyAgICAgb25seSBleGNlcHRpb24gaXMgd2hlbiBU QVJHRVRfQkFDS0NIQUlOIGlzIGFjdGl2ZSwgaW4gd2hpY2ggY2FzZQorICAg ICB3ZSBrbm93ICpzcCAob2Zmc2V0IDApIHdhcyB3cml0dGVuLiAgKi8KKyAg SE9TVF9XSURFX0lOVCBsYXN0X3Byb2JlX29mZnNldAorICAgID0gKFRBUkdF VF9CQUNLQ0hBSU4KKyAgICAgICA/IDAgOiBQUk9CRV9JTlRFUlZBTCAtIChT VEFDS19CT1VOREFSWSAvIFVOSVRTX1BFUl9XT1JEKSk7CisKICAgczM5MF9z YXZlX2dwcnNfdG9fZnBycyAoKTsKIAogICAvKiBTYXZlIGNhbGwgc2F2ZWQg Z3Bycy4gICovCkBAIC0xMTAzNCw2ICsxMTE0NSwxNCBAQCBzMzkwX2VtaXRf cHJvbG9ndWUgKHZvaWQpCiAJCQkJCSAgLSBjZnVuX2ZyYW1lX2xheW91dC5m aXJzdF9zYXZlX2dwcl9zbG90KSwKIAkJCWNmdW5fZnJhbWVfbGF5b3V0LmZp cnN0X3NhdmVfZ3ByLAogCQkJY2Z1bl9mcmFtZV9sYXlvdXQubGFzdF9zYXZl X2dwcik7CisKKyAgICAgIC8qIFRoaXMgaXMgbm90IDEwMCUgY29ycmVjdC4g IElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSByZWdpc3RlciBzYXZlZCwKKwkg dGhlbiBMQVNUX1BST0JFX09GRlNFVCBjYW4gbW92ZSBldmVuIGNsb3NlciB0 byBzcC4gICovCisgICAgICBsYXN0X3Byb2JlX29mZnNldAorCT0gKGNmdW5f ZnJhbWVfbGF5b3V0LmdwcnNfb2Zmc2V0ICsKKwkgICBVTklUU19QRVJfTE9O RyAqIChjZnVuX2ZyYW1lX2xheW91dC5maXJzdF9zYXZlX2dwcgorCQkJICAg ICAtIGNmdW5fZnJhbWVfbGF5b3V0LmZpcnN0X3NhdmVfZ3ByX3Nsb3QpKTsK KwogICAgICAgZW1pdF9pbnNuIChpbnNuKTsKICAgICB9CiAKQEAgLTExMDUw LDYgKzExMTY5LDggQEAgczM5MF9lbWl0X3Byb2xvZ3VlICh2b2lkKQogICAg ICAgaWYgKGNmdW5fZnByX3NhdmVfcCAoaSkpCiAJewogCSAgc2F2ZV9mcHIg KHN0YWNrX3BvaW50ZXJfcnR4LCBvZmZzZXQsIGkpOworCSAgaWYgKG9mZnNl dCA8IGxhc3RfcHJvYmVfb2Zmc2V0KQorCSAgICBsYXN0X3Byb2JlX29mZnNl dCA9IG9mZnNldDsKIAkgIG9mZnNldCArPSA4OwogCX0KICAgICAgIGVsc2Ug aWYgKCFUQVJHRVRfUEFDS0VEX1NUQUNLIHx8IGNmdW4tPnN0ZGFyZykKQEAg LTExMDYzLDYgKzExMTg0LDggQEAgczM5MF9lbWl0X3Byb2xvZ3VlICh2b2lk KQogICAgICAgaWYgKGNmdW5fZnByX3NhdmVfcCAoaSkpCiAJewogCSAgaW5z biA9IHNhdmVfZnByIChzdGFja19wb2ludGVyX3J0eCwgb2Zmc2V0LCBpKTsK KwkgIGlmIChvZmZzZXQgPCBsYXN0X3Byb2JlX29mZnNldCkKKwkgICAgbGFz dF9wcm9iZV9vZmZzZXQgPSBvZmZzZXQ7CiAJICBvZmZzZXQgKz0gODsKIAog CSAgLyogSWYgZjQgYW5kIGY2IGFyZSBjYWxsIGNsb2JiZXJlZCB0aGV5IGFy ZSBzYXZlZCBkdWUgdG8KQEAgLTExMDg1LDYgKzExMjA4LDggQEAgczM5MF9l bWl0X3Byb2xvZ3VlICh2b2lkKQogCWlmIChjZnVuX2Zwcl9zYXZlX3AgKGkp KQogCSAgewogCSAgICBpbnNuID0gc2F2ZV9mcHIgKHN0YWNrX3BvaW50ZXJf cnR4LCBvZmZzZXQsIGkpOworCSAgICBpZiAob2Zmc2V0IDwgbGFzdF9wcm9i ZV9vZmZzZXQpCisJICAgICAgbGFzdF9wcm9iZV9vZmZzZXQgPSBvZmZzZXQ7 CiAKIAkgICAgUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAxOwogCSAg ICBvZmZzZXQgLT0gODsKQEAgLTExMTA0LDcgKzExMjI5LDYgQEAgczM5MF9l bWl0X3Byb2xvZ3VlICh2b2lkKQogICBpZiAoY2Z1bl9mcmFtZV9sYXlvdXQu ZnJhbWVfc2l6ZSA+IDApCiAgICAgewogICAgICAgcnR4IGZyYW1lX29mZiA9 IEdFTl9JTlQgKC1jZnVuX2ZyYW1lX2xheW91dC5mcmFtZV9zaXplKTsKLSAg ICAgIHJ0eCByZWFsX2ZyYW1lX29mZjsKIAogICAgICAgaWYgKHMzOTBfc3Rh Y2tfc2l6ZSkKICAgCXsKQEAgLTExMTc3LDMxICsxMTMwMSw4IEBAIHMzOTBf ZW1pdF9wcm9sb2d1ZSAodm9pZCkKICAgICAgIGlmIChUQVJHRVRfQkFDS0NI QUlOIHx8IG5leHRfZnByKQogCWluc24gPSBlbWl0X2luc24gKGdlbl9tb3Zl X2luc24gKHRlbXBfcmVnLCBzdGFja19wb2ludGVyX3J0eCkpOwogCi0gICAg ICAvKiBTdWJ0cmFjdCBmcmFtZSBzaXplIGZyb20gc3RhY2sgcG9pbnRlci4g ICovCi0KLSAgICAgIGlmIChESVNQX0lOX1JBTkdFIChJTlRWQUwgKGZyYW1l X29mZikpKQotCXsKLQkgIGluc24gPSBnZW5fcnR4X1NFVCAoc3RhY2tfcG9p bnRlcl9ydHgsCi0JCQkgICAgICBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzdGFj a19wb2ludGVyX3J0eCwKLQkJCQkJICAgIGZyYW1lX29mZikpOwotCSAgaW5z biA9IGVtaXRfaW5zbiAoaW5zbik7Ci0JfQotICAgICAgZWxzZQotCXsKLQkg IGlmICghQ09OU1RfT0tfRk9SX0sgKElOVFZBTCAoZnJhbWVfb2ZmKSkpCi0J ICAgIGZyYW1lX29mZiA9IGZvcmNlX2NvbnN0X21lbSAoUG1vZGUsIGZyYW1l X29mZik7Ci0KLSAgICAgICAgICBpbnNuID0gZW1pdF9pbnNuIChnZW5fYWRk Ml9pbnNuIChzdGFja19wb2ludGVyX3J0eCwgZnJhbWVfb2ZmKSk7Ci0JICBh bm5vdGF0ZV9jb25zdGFudF9wb29sX3JlZnMgKCZQQVRURVJOIChpbnNuKSk7 Ci0JfQotCi0gICAgICBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7 Ci0gICAgICByZWFsX2ZyYW1lX29mZiA9IEdFTl9JTlQgKC1jZnVuX2ZyYW1l X2xheW91dC5mcmFtZV9zaXplKTsKLSAgICAgIGFkZF9yZWdfbm90ZSAoaW5z biwgUkVHX0ZSQU1FX1JFTEFURURfRVhQUiwKLQkJICAgIGdlbl9ydHhfU0VU IChzdGFja19wb2ludGVyX3J0eCwKLQkJCQkgZ2VuX3J0eF9QTFVTIChQbW9k ZSwgc3RhY2tfcG9pbnRlcl9ydHgsCi0JCQkJCSAgICAgICByZWFsX2ZyYW1l X29mZikpKTsKLQorICAgICAgYWxsb2NhdGVfc3RhY2tfc3BhY2UgKGZyYW1l X29mZiwgbGFzdF9wcm9iZV9vZmZzZXQsIHRlbXBfcmVnLAorCQkJICAgIFRB UkdFVF9CQUNLQ0hBSU4gfHwgbmV4dF9mcHIpOwogICAgICAgLyogU2V0IGJh Y2tjaGFpbi4gICovCiAKICAgICAgIGlmIChUQVJHRVRfQkFDS0NIQUlOKQpA QCAtMTEyMjUsNiArMTEzMjYsOCBAQCBzMzkwX2VtaXRfcHJvbG9ndWUgKHZv aWQpCiAJICBlbWl0X2Nsb2JiZXIgKGFkZHIpOwogCX0KICAgICB9CisgIGVs c2UgaWYgKGZsYWdfc3RhY2tfY2hlY2sgPT0gU1RBQ0tfQ0xBU0hfQlVJTFRJ Tl9TVEFDS19DSEVDSykKKyAgICBkdW1wX3N0YWNrX2NsYXNoX2ZyYW1lX2lu Zm8gKE5PX1BST0JFX05PX0ZSQU1FLCBmYWxzZSk7CiAKICAgLyogU2F2ZSBm cHJzIDggLSAxNSAoNjQgYml0IEFCSSkuICAqLwogCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL3MzOTAvczM5MC5oIGIvZ2NjL2NvbmZpZy9zMzkwL3MzOTAu aAppbmRleCA3ODQ3MDQ3Li44MTY5NjI0IDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL3MzOTAvczM5MC5oCisrKyBiL2djYy9jb25maWcvczM5MC9zMzkwLmgK QEAgLTExMjQsNCArMTEyNCw1IEBAIGV4dGVybiBjb25zdCBpbnQgcHJvY2Vz c29yX2ZsYWdzX3RhYmxlW107CiAgICAgczM5MF9yZWdpc3Rlcl90YXJnZXRf cHJhZ21hcyAoKTsJCVwKICAgfSB3aGlsZSAoMCkKIAorI2RlZmluZSBTVEFD S19DSEVDS19TVEFUSUNfQlVJTFRJTiAxCiAjZW5kaWYgLyogUzM5MF9IICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdGFjay1jaGVj ay02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdGFjay1jaGVjay02LmMK aW5kZXggOTQyMmU3MS4uNGUwODA3NCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvc3RhY2stY2hlY2stNi5jCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3N0YWNrLWNoZWNrLTYuYwpAQCAtNDQsOCArNDQsOCBAQCBm NyAodm9pZCkKICAgZm9vIChidWYpOwogfQogCi0vKiB7IGRnLWZpbmFsIHsg c2Nhbi1ydGwtZHVtcC10aW1lcyAiU3RhY2sgY2xhc2ggaW5saW5lIHByb2Jl cyIgMiAicHJvX2FuZF9lcGlsb2d1ZSIgfSB9ICovCi0vKiB7IGRnLWZpbmFs IHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiU3RhY2sgY2xhc2ggcHJvYmUgbG9v cCIgMiAicHJvX2FuZF9lcGlsb2d1ZSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiU3RhY2sgY2xhc2ggaW5saW5lIHBy b2JlcyIgMiAicHJvX2FuZF9lcGlsb2d1ZSIgeyB4ZmFpbCBzMzkwKi0qLSp9 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMg IlN0YWNrIGNsYXNoIHByb2JlIGxvb3AiIDIgInByb19hbmRfZXBpbG9ndWUi IHsgeGZhaWwgczM5MCotKi0qfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBz Y2FuLXJ0bC1kdW1wLXRpbWVzICJTdGFjayBjbGFzaCByZXNpZHVhbCBhbGxv Y2F0aW9uIGluIHByb2xvZ3VlIiA0ICJwcm9fYW5kX2VwaWxvZ3VlIiB9IH0g Ki8KIC8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJTdGFj ayBjbGFzaCBub3Qgbm9yZXR1cm4iIDQgInByb19hbmRfZXBpbG9ndWUiIH0g fSAqLwogCg== --------------AFDC0D9D472E82CCCE01BD8D--