From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AEA0C10F11 for ; Wed, 24 Apr 2019 10:36:40 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CE05C21773 for ; Wed, 24 Apr 2019 10:36:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="qMjF6CAy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CE05C21773 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=UrGArdImMJmUmkdWtnIQaAbJdQCTCLF+ChfMFMD/m4Y=; b=qMjF6CAyeK970n nxrOMWFI9j+O4VRN2xH8I9u8sQkSDccXHfaoVjLi7dMidTITdH5734Eh/t6a8AqcdeXmaxISelia1 SBNWIgbKFAiiYi98coM/rkScuBU7Pd0IHU2fiHwtn3Bco+5/ONtkO9cg105GDfDSLJ3qKGvrmTC8t Z7I9Vqr2JYh9B/5tGrRzWrIwSxTzbye/dCxxJEhL7/VwDee1PftaA2tQJjuhXxLQv9GKk29eAxJXX zJprKbwmr0OFxuuFRA0qdpnAvVgu1dV16UXTM6rQvoPCkMK5LdqtKkTaTwk+u6OnNEBeFXmi6byGk unhrENHIsMGXo6cXN/Nw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJFGQ-0005UM-LU; Wed, 24 Apr 2019 10:36:30 +0000 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70] helo=foss.arm.com) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJFGK-0005Jn-TA for linux-arm-kernel@lists.infradead.org; Wed, 24 Apr 2019 10:36:28 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C4FFFA78; Wed, 24 Apr 2019 03:36:22 -0700 (PDT) Received: from [10.1.197.45] (e112298-lin.cambridge.arm.com [10.1.197.45]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B0CE03F5AF; Wed, 24 Apr 2019 03:36:20 -0700 (PDT) Subject: Re: [RFC 3/6] objtool: arm64: Adapt the stack frame checks and the section analysis for the arm architecture To: Raphael Gault , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20190409135243.12424-1-raphael.gault@arm.com> <20190409135243.12424-4-raphael.gault@arm.com> From: Julien Thierry Message-ID: Date: Wed, 24 Apr 2019 11:36:18 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <20190409135243.12424-4-raphael.gault@arm.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190424_033625_102212_72E046FC X-CRM114-Status: GOOD ( 34.39 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peterz@infradead.org, catalin.marinas@arm.com, will.deacon@arm.com, jpoimboe@redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgUmFwaGHDq2wsCgpJIHRoaW5rIHlvdSBjb3VsZCBzcGxpdCB0aGUgcGF0Y2ggaW4gYXQgbGVh c3QgMzoKCi0gSGFuZGxpbmcgdGhlIHNwbGl0IGluc3RydWN0aW9ucwotIEhhbmRsaW5nIHRoZSBq dW1wIG9mZnNldAotIER5bmFtaWMganVtcHMvc3dpdGNoIHRhYmxlCgoKT24gMDkvMDQvMjAxOSAx NDo1MiwgUmFwaGFlbCBHYXVsdCB3cm90ZToKPiBTaW5jZSB0aGUgd2F5IHRoZSBpbml0aWFsIHN0 YWNrIGZyYW1lIHdoZW4gZW50ZXJpbmcgYSBmdW5jdGlvbiBpcyBkaWZmZXJlbnQgdGhhdCB3aGF0 IGlzIGRvbmUKCk5pdDogImRpZmZlcmVudCBmcm9tIHdoYXQgaXMgZG9uZSIKCj4gaW4gdGhlIHg4 Nl82NCBhcmNoaXRlY3R1cmUsIHdlIG5lZWQgdG8gYWRkIHNvbWUgbW9yZSBjaGVjayB0byBzdXBw b3J0IHRoZSBkaWZmZXJlbnQgY2FzZXMuCj4gQXMgb3Bwb3NlZCBhcyBmb3IgeDg2XzY0LCB0aGUg cmV0dXJuIGFkZHJlc3MgaXMgbm90IHN0b3JlZCBieSB0aGUgY2FsbCBpbnN0cnVjdGlvbiBidXQg aXMgaW5zdGVhZAo+IGxvYWRlZCBpbiBhIHJlZ2lzdGVyLiBUaGUgaW5pdGlhbCBzdGFjayBmcmFt ZSBpcyB0aHVzIGVtcHR5IHdoZW4gZW50ZXJpbmcgYSBmdW5jdGlvbiBhbmQgMiBwdXNoCj4gb3Bl cmF0aW9ucyBhcmUgbmVlZGVkIHRvIHNldCBpdCB1cCBjb3JyZWN0bHkuIEFsbCB0aGUgZGlmZmVy ZW50IGNvbWJpbmF0aW9ucyBuZWVkIHRvIGJlCj4gdGFrZW4gaW50byBhY2NvdW50Lgo+IAo+IE9u IGFybTY0LCB0aGUgLmFsdGluc3RyX3JlcGxhY2VtZW50IHNlY3Rpb24gaXMgbm90IGZsYWdnZWQg YXMgY29udGFpbmluZyBleGVjdXRhYmxlIGluc3RydWN0aW9ucwo+IGJ1dCB3ZSBzdGlsbCBuZWVk IHRvIHByb2Nlc3MgaXQuCj4gCj4gU3dpdGNoIHRhYmxlcyBhcmUgYWxzZSBzdG9yZWQgaW4gYSBk aWZmZXJlbnQgd2F5IG9uIGFybTY0IHRoYW4gb24geDg2XzY0IHNvIHdlIG5lZWQgdG8gYmUgYWJs ZQoKTml0OiBhbHNvCgo+IHRvIGlkZW50aWZ5IGluIHdoaWNoIGNhc2Ugd2UgYXJlIHdoZW4gbG9v a2luZyBmb3IgaXQuCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFwaGFlbCBHYXVsdCA8cmFwaGFlbC5n YXVsdEBhcm0uY29tPgo+IC0tLQo+ICB0b29scy9vYmp0b29sL2FyY2guaCAgICAgICAgICAgICAg fCAgMiArCj4gIHRvb2xzL29ianRvb2wvYXJjaC9hcm02NC9kZWNvZGUuYyB8IDI3ICsrKysrKysr Kwo+ICB0b29scy9vYmp0b29sL2FyY2gveDg2L2RlY29kZS5jICAgfCAgNSArKwo+ICB0b29scy9v Ymp0b29sL2NoZWNrLmMgICAgICAgICAgICAgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tCj4gIHRvb2xzL29ianRvb2wvZWxmLmMgICAgICAgICAgICAgICB8ICAzICstCj4gIDUg ZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS90b29scy9vYmp0b29sL2FyY2guaCBiL3Rvb2xzL29ianRvb2wvYXJjaC5oCj4g aW5kZXggMGVmZjE2NmNhNjEzLi5mM2JlZjNmMmNlZjMgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvb2Jq dG9vbC9hcmNoLmgKPiArKysgYi90b29scy9vYmp0b29sL2FyY2guaAo+IEBAIC04OCw0ICs4OCw2 IEBAIHVuc2lnbmVkIGxvbmcgYXJjaF9jb21wdXRlX2p1bXBfZGVzdGluYXRpb24oc3RydWN0IGlu c3RydWN0aW9uICppbnNuKTsKPiAgCj4gIHVuc2lnbmVkIGxvbmcgYXJjaF9jb21wdXRlX3JlbGFf c3ltX29mZnNldChpbnQgYWRkZW5kKTsKPiAgCj4gK2Jvb2wgYXJjaF9pc19pbnNuX3NpYmxpbmdf Y2FsbChzdHJ1Y3QgaW5zdHJ1Y3Rpb24gKmluc24pOwo+ICsKPiAgI2VuZGlmIC8qIF9BUkNIX0gg Ki8KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvb2JqdG9vbC9hcmNoL2FybTY0L2RlY29kZS5jIGIvdG9v bHMvb2JqdG9vbC9hcmNoL2FybTY0L2RlY29kZS5jCj4gaW5kZXggMGZlYjNhZTNhZjVkLi44YjI5 M2VhZTJiMzggMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvb2JqdG9vbC9hcmNoL2FybTY0L2RlY29kZS5j Cj4gKysrIGIvdG9vbHMvb2JqdG9vbC9hcmNoL2FybTY0L2RlY29kZS5jCj4gQEAgLTEwNSw2ICsx MDUsMzMgQEAgdW5zaWduZWQgbG9uZyBhcmNoX2NvbXB1dGVfcmVsYV9zeW1fb2Zmc2V0KGludCBh ZGRlbmQpCj4gIAlyZXR1cm4gYWRkZW5kOwo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBJbiBvcmRlciB0 byBrbm93IGlmIHdlIGFyZSBpbiBwcmVzZW5jZSBvZiBhIHNpYmxpbmcKPiArICogY2FsbCBhbmQg bm90IGluIHByZXNlbmNlIG9mIGEgc3dpdGNoIHRhYmxlIHdlIGxvb2sKPiArICogYmFjayBhdCB0 aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb25zIGFuZCBzZWUgaWYgd2UgYXJlCj4gKyAqIGp1bXBpbmcg aW5zaWRlIHRoZSBzYW1lIGZ1bmN0aW9uIHRoYXQgd2UgYXJlIGFscmVhZHkKPiArICogaW4uCj4g KyAqLwo+ICtib29sIGFyY2hfaXNfaW5zbl9zaWJsaW5nX2NhbGwoc3RydWN0IGluc3RydWN0aW9u ICppbnNuKQo+ICt7Cj4gKwlzdHJ1Y3QgaW5zdHJ1Y3Rpb24gKnByZXY7Cj4gKwlzdHJ1Y3QgbGlz dF9oZWFkICpsOwo+ICsJc3RydWN0IHN5bWJvbCAqc3ltOwo+ICsJbGlzdF9mb3JfZWFjaF9wcmV2 KGwsICZpbnNuLT5saXN0KSB7Cj4gKwkJcHJldiA9ICh2b2lkICopbDsKClBsZWFzZSB1c2UgbGlz dF9lbnRyeSgpIGluc3RlYWQgb2YgY2FzdGluZywgdGhpcyBvbmx5IGhhcHBlbnMgdG8gd29yawpi ZWNhdXNlIGxpc3QgaXMgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGluc3RydWN0aW9u LgoKPiArCQlpZiAoIXByZXYtPmZ1bmMKPiArCQkJfHwgcHJldi0+ZnVuYy0+cGZ1bmMgIT0gaW5z bi0+ZnVuYy0+cGZ1bmMpCj4gKwkJCXJldHVybiBmYWxzZTsKPiArCQlpZiAocHJldi0+c3RhY2tf b3Auc3JjLnJlZyAhPSBBRFJfU09VUkNFKQo+ICsJCQljb250aW51ZTsKPiArCQlzeW0gPSBmaW5k X3N5bWJvbF9jb250YWluaW5nKGluc24tPnNlYywgaW5zbi0+aW1tZWRpYXRlKTsKPiArCQlpZiAo IXN5bSB8fCBzeW0tPnR5cGUgIT0gU1RUX0ZVTkMKPiArCQkJfHwgc3ltLT5wZnVuYyAhPSBpbnNu LT5mdW5jLT5wZnVuYykKPiArCQkJcmV0dXJuIHRydWU7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwly ZXR1cm4gdHJ1ZTsKPiArfQo+ICBzdGF0aWMgaW50IGlzX2FybTY0KHN0cnVjdCBlbGYgKmVsZikK PiAgewo+ICAJc3dpdGNoKGVsZi0+ZWhkci5lX21hY2hpbmUpewo+IGRpZmYgLS1naXQgYS90b29s cy9vYmp0b29sL2FyY2gveDg2L2RlY29kZS5jIGIvdG9vbHMvb2JqdG9vbC9hcmNoL3g4Ni9kZWNv ZGUuYwo+IGluZGV4IDFhZjdiNDk5NjMwNy4uODhjM2Q5OWM3NmJlIDEwMDY0NAo+IC0tLSBhL3Rv b2xzL29ianRvb2wvYXJjaC94ODYvZGVjb2RlLmMKPiArKysgYi90b29scy9vYmp0b29sL2FyY2gv eDg2L2RlY29kZS5jCj4gQEAgLTg1LDYgKzg1LDExIEBAIHVuc2lnbmVkIGxvbmcgYXJjaF9jb21w dXRlX3JlbGFfc3ltX29mZnNldChpbnQgYWRkZW5kKQo+ICAJcmV0dXJuIGFkZGVuZCArIDQ7Cj4g IH0KPiAgCj4gK2Jvb2wgYXJjaF9pc19pbnNuX3NpYmxpbmdfY2FsbChzdHJ1Y3QgaW5zdHJ1Y3Rp b24gKmluc24pCj4gK3sKPiArCXJldHVybiB0cnVlOwoKVGhlIG5hbWluZyBhbmQgd2hhdCB0aGUg ZnVuY3Rpb24gcmV0dXJucyBkb2VzIHNlZW0gdG8gYmUgcmVhbGx5IGZpdHRpbmcuCk1ha2VzIGl0 IHNlZW0gbGlrZSBldmVyeSB4ODYgaW5zdHJ1Y3Rpb24gaXMgYSBzaWJsaW5nIGNhbGwsIHdoaWNo IGlzCnVubGlrZWx5IHRvIGJlIHRoZSBjYXNlLgoKPiArfQo+ICsKPiAgaW50IGFyY2hfb3JjX3Jl YWRfdW53aW5kX2hpbnRzKHN0cnVjdCBvYmp0b29sX2ZpbGUgKmZpbGUpCj4gIHsKPiAgCXN0cnVj dCBzZWN0aW9uICpzZWMsICpyZWxhc2VjOwo+IGRpZmYgLS1naXQgYS90b29scy9vYmp0b29sL2No ZWNrLmMgYi90b29scy9vYmp0b29sL2NoZWNrLmMKPiBpbmRleCAxN2ZjZDhjOGY5YzEuLmZhNjEw NjIxNDMxOCAxMDA2NDQKPiAtLS0gYS90b29scy9vYmp0b29sL2NoZWNrLmMKPiArKysgYi90b29s cy9vYmp0b29sL2NoZWNrLmMKPiBAQCAtMjYxLDEwICsyNjEsMTIgQEAgc3RhdGljIGludCBkZWNv ZGVfaW5zdHJ1Y3Rpb25zKHN0cnVjdCBvYmp0b29sX2ZpbGUgKmZpbGUpCj4gIAl1bnNpZ25lZCBs b25nIG9mZnNldDsKPiAgCXN0cnVjdCBpbnN0cnVjdGlvbiAqaW5zbjsKPiAgCWludCByZXQ7Cj4g KwlzdGF0aWMgaW50IGNvbXBvc2VkX2luc24gPSAwOwo+ICAKPiAgCWZvcl9lYWNoX3NlYyhmaWxl LCBzZWMpIHsKPiAgCj4gLQkJaWYgKCEoc2VjLT5zaC5zaF9mbGFncyAmIFNIRl9FWEVDSU5TVFIp KQo+ICsJCWlmICghKHNlYy0+c2guc2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKQo+ICsJCQkmJiAo c3RyY21wKHNlYy0+bmFtZSwgIi5hbHRpbnN0cl9yZXBsYWNlbWVudCIpIHx8ICFJR05PUkVfU0hG X0VYRUNfRkxBRykpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAoc3RyY21wKHNlYy0+bmFt ZSwgIi5hbHRpbnN0cl9yZXBsYWNlbWVudCIpICYmCj4gQEAgLTI5NywxMCArMjk5LDIyIEBAIHN0 YXRpYyBpbnQgZGVjb2RlX2luc3RydWN0aW9ucyhzdHJ1Y3Qgb2JqdG9vbF9maWxlICpmaWxlKQo+ ICAJCQkJV0FSTl9GVU5DKCJpbnZhbGlkIGluc3RydWN0aW9uIHR5cGUgJWQiLAo+ICAJCQkJCSAg aW5zbi0+c2VjLCBpbnNuLT5vZmZzZXQsIGluc24tPnR5cGUpOwo+ICAJCQkJcmV0ID0gLTE7Cj4g LQkJCQlnb3RvIGVycjsKPiArCQkJCWZyZWUoaW5zbik7Cj4gKwkJCQljb250aW51ZTsKPiAgCQkJ fQo+IC0KPiAtCQkJaGFzaF9hZGQoZmlsZS0+aW5zbl9oYXNoLCAmaW5zbi0+aGFzaCwgaW5zbi0+ b2Zmc2V0KTsKPiArCQkJLyoKPiArCQkJICogRm9yIGFybTY0IGFyY2hpdGVjdHVyZSwgd2Ugc29t ZXRpbWUgc3BsaXQgaW5zdHJ1Y3Rpb25zIHNvIHRoYXQKPiArCQkJICogd2UgY2FuIHRyYWNrIHRo ZSBzdGF0ZSBldm9sdXRpb24gKGkuZS4gbG9hZC9zdG9yZSBvZiBwYWlycyBvZiByZWdpc3RlcnMp Lgo+ICsJCQkgKiBXZSB0aHVzIG5lZWQgdG8gdGFrZSBib3RoIGludG8gYWNjb3VudCBhbmQgbm90 IGVyYXNlIHRoZSBwcmV2aW91cyBvbmVzLgo+ICsJCQkgKi8KPiArCQkJaWYgKGNvbXBvc2VkX2lu c24gPiAwKQo+ICsJCQkJaGFzaF9hZGQoZmlsZS0+aW5zbl9oYXNoLCAmaW5zbi0+aGFzaCwgaW5z bi0+b2Zmc2V0ICsgY29tcG9zZWRfaW5zbik7Cj4gKwkJCWVsc2UKPiArCQkJCWhhc2hfYWRkKGZp bGUtPmluc25faGFzaCwgJmluc24tPmhhc2gsIGluc24tPm9mZnNldCk7Cgpjb21wb3NlZF9pbnNu IGhhcyBubyByZWFzb24gdG8gYmUgbmVnYXRpdmUsIHJpZ2h0PyBTbyB0aGlzIGlmIGlzCmVxdWl2 YWxlbnQgdG86CgoJaGFzaF9hZGQoZmlsZS0+aW5zbl9oYXNoLCAmaW5zbi0+aGFzaCwKCQkgaW5z bi0+b2Zmc2V0ICsgY29tcG9zZWRfaW5zbik7CgoKQWxzbywgdGhhdCBtZWFucyB0aGF0IHRoaXMg b25seSB3b3JrcyBiZWNhdXNlIGFsbCBhcm02NCBpbnN0cnVjdGlvbnMgYXJlCjQgYnl0ZXMgbG9u Zy4gT3RoZXJ3aXNlIHlvdSBjb3VsZCBoYXZlIGFuIG92ZXJsYXAgYmV0d2VlbiB0aGUgInNlY29u ZCIKcGFydCBvZiB0aGUgY29tcG9zZWQgaW5zdHJ1Y3Rpb24gYW5kIHRoZSBpbnN0cnVjdGlvbiB0 aGF0IGZvbGxvd3MgaXQuCgpJdCBmZWVscyBhIGJpdCB0b28gaGFja2lzaCBmb3IgdGhlIGFyY2gg aW5kZXBlbmRlbnQgY29kZS4KCklmIHdlIHdhbnQgdG8gdXNlIHRoYXQgdHJpY2ssIG1heWJlIGl0 IHNob3VsZCBiZSB0aGUgYXJtNjQgZGVjb2RlIHRoYXQKc2hvdWxkIHJldHVybiBhIGxlbmd0aCBv ZiAxIG9yIDIgZm9yIGNvbXBvc2VkIGluc24sIGFuZCB3aGVuIGRlY29kaW5nIGFuCmluc3RydWN0 aW9uIHRoYXQgaXNuJ3QgNC1ieXRlcyBhbGlnbmVkLCB3ZSB3b3VsZCBrbm93IHRvIGxvb2sgMiBi eXRlcwpiZWZvcmUgdG8gZmluZCB3aGF0IHdlIHdlcmUgZGVjb2RpbmcsIHRoZW4gcmV0dXJuICg0 IC0gbGVuKSBzbyB0aGF0IHdlCmVuZCB1cCBvbiB0aGUgbmV4dCBpbnN0cnVjdGlvbiBvbiB0aGUg bmV4dCBpdGVydGF0aW9uLgoKVGhpcyB3YXkgd2UgZG9uJ3QgaGF2ZSB0byBjaGFuZ2UgYW55dGhp bmcgdG8gdGhlIGRlY29kZSBsb29wLgoKQWxzbywgSSd2ZSBnb3QgdGhlIGltcHJlc3Npb24gdGhh dCB0aGlzIGhhc2ggdGFibGUgaXMgbW9zdCBvZnRlbiB1c2UgdG8KZmluZCB0aGUgaW5zdHJ1Y3Rp b24gYXQgdGhlIHN0YXJ0aW5nIG9mZnNldCBvZiBhIGZ1bmN0aW9uLiBNZWFuaW5nIGl0IGlzCnVu bGlrZWx5IHdlJ2xsIGVuZCB1cCBsb29raW5nIHVwIHRoYXQgY29tcG9zZWQgaW5zdHJ1Y3Rpb24u IE1pZ2h0IGJlCndvcnRoIGNoZWNraW5nIHdoZXRoZXIgdGhpcyBpcyB0aGUgY2FzZSBhbmQgaWYg c28sIG1heWJlIHdlIGNhbiBqdXN0IGFkZAp0aGUgb25lIHJlYWwgaW5zdHJ1Y3Rpb24gdG8gdGhl IGhhc2ggdGFibGUgYW5kIGZvY3VzIG9uIHRoZSBpbnN0cnVjdGlvbgpsaXN0IGZvciBvdXIgaW5z dHJ1Y3Rpb24gc3BsaXR0aW5nLgoKPiArCQkJaWYgKGluc24tPmxlbiA9PSAwKQo+ICsJCQkJY29t cG9zZWRfaW5zbisrOwo+ICsJCQllbHNlCj4gKwkJCQljb21wb3NlZF9pbnNuID0gMDsKPiAgCQkJ bGlzdF9hZGRfdGFpbCgmaW5zbi0+bGlzdCwgJmZpbGUtPmluc25fbGlzdCk7Cj4gIAkJfQo+ICAK ClRoYW5rcywKCi0tIApKdWxpZW4gVGhpZXJyeQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=