From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 61504 invoked by alias); 25 Oct 2016 16:28:53 -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 61491 invoked by uid 89); 25 Oct 2016 16:28:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=BAYES_00,KAM_LOTSOFHASH,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=diagnosis, offsets, variadic, Engineering X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 25 Oct 2016 16:28:42 +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 10B4528; Tue, 25 Oct 2016 09:28:41 -0700 (PDT) Received: from [10.2.206.246] (e107157-lin.cambridge.arm.com [10.2.206.246]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 95B053F220; Tue, 25 Oct 2016 09:28:40 -0700 (PDT) Subject: Re: [PATCHv2 2/7, GCC, ARM, V8M] Handling ARMv8-M Security Extension's cmse_nonsecure_entry attribute To: gcc-patches@gcc.gnu.org References: <5796116C.6010100@arm.com> <5796123D.6020702@arm.com> <57BD7E60.3000501@arm.com> Cc: Kyrill Tkachov From: "Andre Vieira (lists)" Message-ID: <580F8836.1050203@arm.com> Date: Tue, 25 Oct 2016 16:28:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <57BD7E60.3000501@arm.com> Content-Type: multipart/mixed; boundary="------------040802060608050909030901" X-IsSubscribed: yes X-SW-Source: 2016-10/txt/msg02046.txt.bz2 This is a multi-part message in MIME format. --------------040802060608050909030901 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 2530 On 24/08/16 12:00, Andre Vieira (lists) wrote: > On 25/07/16 14:21, Andre Vieira (lists) wrote: >> This patch adds support for the ARMv8-M Security Extensions >> 'cmse_nonsecure_entry' attribute. In this patch we implement the >> attribute handling and diagnosis around the attribute. See Section 5.4 >> of ARM®v8-M Security Extensions >> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). >> >> *** gcc/ChangeLog *** >> 2016-07-25 Andre Vieira >> Thomas Preud'homme >> >> * config/arm/arm.c (arm_handle_cmse_nonsecure_entry): New. >> (arm_attribute_table): Added cmse_nonsecure_entry >> (arm_compute_func_type): Handle cmse_nonsecure_entry. >> (cmse_func_args_or_return_in_stack): New. >> (arm_handle_cmse_nonsecure_entry): New. >> * config/arm/arm.h (ARM_FT_CMSE_ENTRY): New macro define. >> (IS_CMSE_ENTRY): Likewise. >> >> *** gcc/testsuite/ChangeLog *** >> 2016-07-25 Andre Vieira >> Thomas Preud'homme >> >> * gcc.target/arm/cmse/cmse-3.c: New. >> > > Added more documentation as requested. > > ---- > > This patch adds support for the ARMv8-M Security Extensions > 'cmse_nonsecure_entry' attribute. In this patch we implement the > attribute handling and diagnosis around the attribute. See Section 5.4 > of ARM®v8-M Security Extensions > (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). > > *** gcc/ChangeLog *** > 2016-07-xx Andre Vieira > Thomas Preud'homme > > * config/arm/arm.c (arm_handle_cmse_nonsecure_entry): New. > (arm_attribute_table): Added cmse_nonsecure_entry > (arm_compute_func_type): Handle cmse_nonsecure_entry. > (cmse_func_args_or_return_in_stack): New. > (arm_handle_cmse_nonsecure_entry): New. > * config/arm/arm.h (ARM_FT_CMSE_ENTRY): New macro define. > (IS_CMSE_ENTRY): Likewise. > * doc/extend.texi (ARM ARMv8-M Security Extensions): New attribute. > > *** gcc/testsuite/ChangeLog *** > 2016-07-xx Andre Vieira > Thomas Preud'homme > > * gcc.target/arm/cmse/cmse-3.c: New. > Hi, Rebased previous patch on top of trunk as requested. No changes to ChangeLog. Cheers, Andre --------------040802060608050909030901 Content-Type: text/plain; charset=UTF-8; name="diff2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff2" Content-length: 10875 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5oIGIvZ2NjL2NvbmZp Zy9hcm0vYXJtLmgKaW5kZXggYTM3MGRjY2RhYTlmYTRjOTgwYzFkZjExY2I5 NWE2NWNhZDE2YWM4NS4uNDRkMWFjNDViMDNkZWMyMTBlNjk4NmYxMDNiZjg1 ODgxMTlhOGFhOCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmgK KysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmgKQEAgLTEzODYsNiArMTM4Niw3 IEBAIGVudW0gcmVnX2NsYXNzCiAjZGVmaW5lIEFSTV9GVF9WT0xBVElMRQkJ KDEgPDwgNCkgLyogRG9lcyBub3QgcmV0dXJuLiAgKi8KICNkZWZpbmUgQVJN X0ZUX05FU1RFRAkJKDEgPDwgNSkgLyogRW1iZWRkZWQgaW5zaWRlIGFub3Ro ZXIgZnVuYy4gICovCiAjZGVmaW5lIEFSTV9GVF9TVEFDS0FMSUdOCSgxIDw8 IDYpIC8qIENhbGxlZCB3aXRoIG1pc2FsaWduZWQgc3RhY2suICAqLworI2Rl ZmluZSBBUk1fRlRfQ01TRV9FTlRSWQkoMSA8PCA3KSAvKiBBUk12OC1NIG5v bi1zZWN1cmUgZW50cnkgZnVuY3Rpb24uICAqLwogCiAvKiBTb21lIG1hY3Jv cyB0byB0ZXN0IHRoZXNlIGZsYWdzLiAgKi8KICNkZWZpbmUgQVJNX0ZVTkNf VFlQRSh0KQkodCAmIEFSTV9GVF9UWVBFX01BU0spCkBAIC0xMzk0LDYgKzEz OTUsNyBAQCBlbnVtIHJlZ19jbGFzcwogI2RlZmluZSBJU19OQUtFRCh0KSAg ICAgICAgCSh0ICYgQVJNX0ZUX05BS0VEKQogI2RlZmluZSBJU19ORVNURUQo dCkgICAgICAgCSh0ICYgQVJNX0ZUX05FU1RFRCkKICNkZWZpbmUgSVNfU1RB Q0tBTElHTih0KSAgICAgICAJKHQgJiBBUk1fRlRfU1RBQ0tBTElHTikKKyNk ZWZpbmUgSVNfQ01TRV9FTlRSWSh0KQkodCAmIEFSTV9GVF9DTVNFX0VOVFJZ KQogCiAKIC8qIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIGZ1bmN0aW9u IHN0YWNrIGZyYW1lIGxheW91dC4gIE9mZnNldHMgYXJlCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FybS9hcm0uYyBiL2djYy9jb25maWcvYXJtL2FybS5j CmluZGV4IDQ0Njc3YzFiY2NhZDQyYzVhZDYwM2VhMDk1MWQ2MmFiY2JkNmYw NWQuLjk5NmY5MTdhZTFkYzhlMTZmMjE5OTg0NzM4YzNhYzNmOGI0MmYwOWYg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2FybS5jCisrKyBiL2djYy9j b25maWcvYXJtL2FybS5jCkBAIC0xMzUsNiArMTM1LDcgQEAgc3RhdGljIHRy ZWUgYXJtX2hhbmRsZV9pc3JfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRy ZWUsIGludCwgYm9vbCAqKTsKICNpZiBUQVJHRVRfRExMSU1QT1JUX0RFQ0xf QVRUUklCVVRFUwogc3RhdGljIHRyZWUgYXJtX2hhbmRsZV9ub3RzaGFyZWRf YXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsK ICNlbmRpZgorc3RhdGljIHRyZWUgYXJtX2hhbmRsZV9jbXNlX25vbnNlY3Vy ZV9lbnRyeSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBz dGF0aWMgdm9pZCBhcm1fb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlIChGSUxF ICosIEhPU1RfV0lERV9JTlQpOwogc3RhdGljIHZvaWQgYXJtX291dHB1dF9m dW5jdGlvbl9wcm9sb2d1ZSAoRklMRSAqLCBIT1NUX1dJREVfSU5UKTsKIHN0 YXRpYyBpbnQgYXJtX2NvbXBfdHlwZV9hdHRyaWJ1dGVzIChjb25zdF90cmVl LCBjb25zdF90cmVlKTsKQEAgLTM0Nyw2ICszNDgsOSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGFybV9hdHRyaWJ1dGVfdGFibGVb XSA9CiAgIHsgIm5vdHNoYXJlZCIsICAgIDAsIDAsIGZhbHNlLCB0cnVlLCBm YWxzZSwgYXJtX2hhbmRsZV9ub3RzaGFyZWRfYXR0cmlidXRlLAogICAgIGZh bHNlIH0sCiAjZW5kaWYKKyAgLyogQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNp b25zIHN1cHBvcnQuICAqLworICB7ICJjbXNlX25vbnNlY3VyZV9lbnRyeSIs IDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwKKyAgICBhcm1faGFuZGxlX2Nt c2Vfbm9uc2VjdXJlX2VudHJ5LCBmYWxzZSB9LAogICB7IE5VTEwsICAgICAg ICAgICAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBOVUxMLCBmYWxzZSB9 CiB9OwogDApAQCAtMzY2Miw2ICszNjY2LDkgQEAgYXJtX2NvbXB1dGVfZnVu Y190eXBlICh2b2lkKQogICBlbHNlCiAgICAgdHlwZSB8PSBhcm1faXNyX3Zh bHVlIChUUkVFX1ZBTFVFIChhKSk7CiAKKyAgaWYgKGxvb2t1cF9hdHRyaWJ1 dGUgKCJjbXNlX25vbnNlY3VyZV9lbnRyeSIsIGF0dHIpKQorICAgIHR5cGUg fD0gQVJNX0ZUX0NNU0VfRU5UUlk7CisKICAgcmV0dXJuIHR5cGU7CiB9CiAK QEAgLTY2NjEsNiArNjY2OCwxMTAgQEAgYXJtX2hhbmRsZV9ub3RzaGFyZWRf YXR0cmlidXRlICh0cmVlICpub2RlLAogfQogI2VuZGlmCiAKKy8qIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIGEgZnVuY3Rpb24gd2l0aCBkZWNs YXJhdGlvbiBGTkRFQ0wsIG5hbWUKKyAgIE5BTUUgYW5kIHR5cGUgRk5UWVBF IHVzZXMgdGhlIHN0YWNrIHRvIHBhc3MgYXJndW1lbnRzIG9yIHJldHVybiB2 YXJpYWJsZXMKKyAgIGFuZCBmYWxzZSBvdGhlcndpc2UuICBUaGlzIGlzIHVz ZWQgZm9yIGZ1bmN0aW9ucyB3aXRoIHRoZSBhdHRyaWJ1dGVzCisgICAnY21z ZV9ub25zZWN1cmVfY2FsbCcgb3IgJ2Ntc2Vfbm9uc2VjdXJlX2VudHJ5JyBh bmQgdGhpcyBmdW5jdGlvbiB3aWxsIGlzc3VlCisgICBkaWFnbm9zdGljIG1l c3NhZ2VzIGlmIHRoZSBzdGFjayBpcyB1c2VkLiAgKi8KKworc3RhdGljIGJv b2wKK2Ntc2VfZnVuY19hcmdzX29yX3JldHVybl9pbl9zdGFjayAodHJlZSBm bmRlY2wsIHRyZWUgbmFtZSwgdHJlZSBmbnR5cGUpCit7CisgIGZ1bmN0aW9u X2FyZ3NfaXRlcmF0b3IgYXJnc19pdGVyOworICBDVU1VTEFUSVZFX0FSR1Mg YXJnc19zb19mYXJfdjsKKyAgY3VtdWxhdGl2ZV9hcmdzX3QgYXJnc19zb19m YXI7CisgIGJvb2wgZmlyc3RfcGFyYW0gPSB0cnVlOworICB0cmVlIGFyZ190 eXBlLCBwcmV2X2FyZ190eXBlID0gTlVMTF9UUkVFLCByZXRfdHlwZTsKKwor ICAvKiBFcnJvciBvdXQgaWYgYW55IGFyZ3VtZW50IGlzIHBhc3NlZCBvbiB0 aGUgc3RhY2suICAqLworICBhcm1faW5pdF9jdW11bGF0aXZlX2FyZ3MgKCZh cmdzX3NvX2Zhcl92LCBmbnR5cGUsIE5VTExfUlRYLCBmbmRlY2wpOworICBh cmdzX3NvX2ZhciA9IHBhY2tfY3VtdWxhdGl2ZV9hcmdzICgmYXJnc19zb19m YXJfdik7CisgIEZPUkVBQ0hfRlVOQ1RJT05fQVJHUyAoZm50eXBlLCBhcmdf dHlwZSwgYXJnc19pdGVyKQorICAgIHsKKyAgICAgIHJ0eCBhcmdfcnR4Owor ICAgICAgbWFjaGluZV9tb2RlIGFyZ19tb2RlID0gVFlQRV9NT0RFIChhcmdf dHlwZSk7CisKKyAgICAgIHByZXZfYXJnX3R5cGUgPSBhcmdfdHlwZTsKKyAg ICAgIGlmIChWT0lEX1RZUEVfUCAoYXJnX3R5cGUpKQorCWNvbnRpbnVlOwor CisgICAgICBpZiAoIWZpcnN0X3BhcmFtKQorCWFybV9mdW5jdGlvbl9hcmdf YWR2YW5jZSAoYXJnc19zb19mYXIsIGFyZ19tb2RlLCBhcmdfdHlwZSwgdHJ1 ZSk7CisgICAgICBhcmdfcnR4ID0gYXJtX2Z1bmN0aW9uX2FyZyAoYXJnc19z b19mYXIsIGFyZ19tb2RlLCBhcmdfdHlwZSwgdHJ1ZSk7CisgICAgICBpZiAo IWFyZ19ydHgKKwkgIHx8IGFybV9hcmdfcGFydGlhbF9ieXRlcyAoYXJnc19z b19mYXIsIGFyZ19tb2RlLCBhcmdfdHlwZSwgdHJ1ZSkpCisJeworCSAgZXJy b3IgKCIlcUUgYXR0cmlidXRlIG5vdCBhdmFpbGFibGUgdG8gZnVuY3Rpb25z IHdpdGggYXJndW1lbnRzICIKKwkJICJwYXNzZWQgb24gdGhlIHN0YWNrIiwg bmFtZSk7CisJICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgICBmaXJzdF9wYXJh bSA9IGZhbHNlOworICAgIH0KKworICAvKiBFcnJvciBvdXQgZm9yIHZhcmlh ZGljIGZ1bmN0aW9ucyBzaW5jZSB3ZSBjYW5ub3QgY29udHJvbCBob3cgbWFu eQorICAgICBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgYW5kIHRodXMgc3Rh Y2sgY291bGQgYmUgdXNlZC4gIHN0ZGFyZ19wICgpIGlzIG5vdAorICAgICB1 c2VkIGZvciB0aGUgY2hlY2tpbmcgdG8gYXZvaWQgYnJvd3NpbmcgYXJndW1l bnRzIHR3aWNlLiAgKi8KKyAgaWYgKHByZXZfYXJnX3R5cGUgIT0gTlVMTF9U UkVFICYmICFWT0lEX1RZUEVfUCAocHJldl9hcmdfdHlwZSkpCisgICAgewor ICAgICAgZXJyb3IgKCIlcUUgYXR0cmlidXRlIG5vdCBhdmFpbGFibGUgdG8g ZnVuY3Rpb25zIHdpdGggdmFyaWFibGUgbnVtYmVyICIKKwkgICAgICJvZiBh cmd1bWVudHMiLCBuYW1lKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0K KworICAvKiBFcnJvciBvdXQgaWYgcmV0dXJuIHZhbHVlIGlzIHBhc3NlZCBv biB0aGUgc3RhY2suICAqLworICByZXRfdHlwZSA9IFRSRUVfVFlQRSAoZm50 eXBlKTsKKyAgaWYgKGFybV9yZXR1cm5faW5fbWVtb3J5IChyZXRfdHlwZSwg Zm50eXBlKSkKKyAgICB7CisgICAgICBlcnJvciAoIiVxRSBhdHRyaWJ1dGUg bm90IGF2YWlsYWJsZSB0byBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdmFsdWUg b24gIgorCSAgICAgInRoZSBzdGFjayIsIG5hbWUpOworICAgICAgcmV0dXJu IHRydWU7CisgICAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIENhbGxl ZCB1cG9uIGRldGVjdGlvbiBvZiB0aGUgdXNlIG9mIHRoZSBjbXNlX25vbnNl Y3VyZV9lbnRyeSBhdHRyaWJ1dGUsIHRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwg Y2hlY2sgd2hldGhlciB0aGUgYXR0cmlidXRlIGlzIGFsbG93ZWQgaGVyZSBh bmQgd2lsbCBhZGQgdGhlCisgICBhdHRyaWJ1dGUgdG8gdGhlIGZ1bmN0aW9u IGRlY2xhcmF0aW9uIHRyZWUgb3Igb3RoZXJ3aXNlIGlzc3VlIGEgd2Fybmlu Zy4gICovCisKK3N0YXRpYyB0cmVlCithcm1faGFuZGxlX2Ntc2Vfbm9uc2Vj dXJlX2VudHJ5ICh0cmVlICpub2RlLCB0cmVlIG5hbWUsCisJCQkJIHRyZWUg LyogYXJncyAqLywKKwkJCQkgaW50IC8qIGZsYWdzICovLAorCQkJCSBib29s ICpub19hZGRfYXR0cnMpCit7CisgIHRyZWUgZm5kZWNsOworCisgIGlmICgh dXNlX2Ntc2UpCisgICAgeworICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7 CisgICAgICByZXR1cm4gTlVMTF9UUkVFOworICAgIH0KKworICAvKiBJZ25v cmUgYXR0cmlidXRlIGZvciBmdW5jdGlvbiB0eXBlcy4gICovCisgIGlmIChU UkVFX0NPREUgKCpub2RlKSAhPSBGVU5DVElPTl9ERUNMKQorICAgIHsKKyAg ICAgIHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywgIiVxRSBhdHRyaWJ1dGUg b25seSBhcHBsaWVzIHRvIGZ1bmN0aW9ucyIsCisJICAgICAgIG5hbWUpOwor ICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CisgICAgICByZXR1cm4gTlVM TF9UUkVFOworICAgIH0KKworICBmbmRlY2wgPSAqbm9kZTsKKworICAvKiBX YXJuIGZvciBzdGF0aWMgbGlua2FnZSBmdW5jdGlvbnMuICAqLworICBpZiAo IVRSRUVfUFVCTElDIChmbmRlY2wpKQorICAgIHsKKyAgICAgIHdhcm5pbmcg KE9QVF9XYXR0cmlidXRlcywgIiVxRSBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVj dCBvbiBmdW5jdGlvbnMgIgorCSAgICAgICAid2l0aCBzdGF0aWMgbGlua2Fn ZSIsIG5hbWUpOworICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CisgICAg ICByZXR1cm4gTlVMTF9UUkVFOworICAgIH0KKworICAqbm9fYWRkX2F0dHJz IHw9IGNtc2VfZnVuY19hcmdzX29yX3JldHVybl9pbl9zdGFjayAoZm5kZWNs LCBuYW1lLAorCQkJCQkJVFJFRV9UWVBFIChmbmRlY2wpKTsKKyAgcmV0dXJu IE5VTExfVFJFRTsKK30KKwogLyogUmV0dXJuIDAgaWYgdGhlIGF0dHJpYnV0 ZXMgZm9yIHR3byB0eXBlcyBhcmUgaW5jb21wYXRpYmxlLCAxIGlmIHRoZXkK ICAgIGFyZSBjb21wYXRpYmxlLCBhbmQgMiBpZiB0aGV5IGFyZSBuZWFybHkg Y29tcGF0aWJsZSAod2hpY2ggY2F1c2VzIGEKICAgIHdhcm5pbmcgdG8gYmUg Z2VuZXJhdGVkKS4gICovCmRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50 ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQppbmRleCAzZjZmYzI3OTUwZmFm YTJlNzY0OWRlYjlkYzVkYjQ0NzM3Y2JiNjkxLi5lNWIyODAzMmU1NjEwYjg5 NjkwODEzOWVjMjg1Y2U5MGE5ZGZmZDhhIDEwMDY0NAotLS0gYS9nY2MvZG9j L2V4dGVuZC50ZXhpCisrKyBiL2djYy9kb2MvZXh0ZW5kLnRleGkKQEAgLTEy NjA3LDYgKzEyNjA3LDkgQEAgU2VjdXJpdHkgRXh0ZW5zaW9uczogUmVxdWly ZW1lbmV0cyBvbiBEZXZlbG9wbWVudCBUb29scyBFbmdpbmVlcmluZwogU3Bl Y2lmaWNhdGlvbiwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0CiBAdXJlZntodHRw Oi8vaW5mb2NlbnRlci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2Mu ZWNtMDM1OTgxOC9FQ00wMzU5ODE4X2FybXY4bV9zZWN1cml0eV9leHRlbnNp b25zX3JlcXNfb25fZGV2X3Rvb2xzXzFfMC5wZGZ9LgogCitBcyBwYXJ0IG9m IHRoZSBTZWN1cml0eSBFeHRlbnNpb25zIEdDQyBpbXBsZW1lbnRzIGEgbmV3 IGZ1bmN0aW9uIGF0dHJpYnV0ZQorQGNvZGV7Y21zZV9ub25zZWN1cmVfZW50 cnl9LgorCiBBcyBwYXJ0IG9mIHRoZSBTZWN1cml0eSBFeHRlbnNpb25zIEdD QyBpbXBsZW1lbnRzIHRoZSBpbnRyaW5zaWNzIGJlbG93LiAgRlBUUgogaXMg dXNlZCBoZXJlIHRvIG1lYW4gYW55IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZS4K IApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9j bXNlL2Ntc2UtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9j bXNlL2Ntc2UtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMjkyMGUx ZGMzMTAxMDZkODMyMDNlYjUxZTFhNjhhMjc1ZDAxNTIKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2UvY21z ZS0zLmMKQEAgLTAsMCArMSwzNyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLW1jbXNlIiB9ICAqLworCitzdHJ1Y3Qg c3BhbiB7CisgIGludCBhLCBiOworfTsKK3N0cnVjdCBzcGFuMiB7CisgIGZs b2F0IGEsIGIsIGMsIGQ7Cit9OworCit1bmlvbiB0ZXN0X3VuaW9uCit7Cisg IGxvbmcgbG9uZyBhOworICBpbnQgYjsKKyAgc3RydWN0IHNwYW4yIGM7Cit9 IHRlc3RfdW5pb247CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKGNtc2Vfbm9u c2VjdXJlX2VudHJ5KSkKK2ZvbyAobG9uZyBsb25nIGEsIGludCBiLCBsb25n IGxvbmcgYykge30gLyogeyBkZy1lcnJvciAibm90IGF2YWlsYWJsZSB0byBm dW5jdGlvbnMgd2l0aCBhcmd1bWVudHMgcGFzc2VkIG9uIHRoZSBzdGFjayIg fSAqLworCit2b2lkIF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9l bnRyeSkpCitiYXIgKGxvbmcgbG9uZyBhLCBpbnQgYiwgc3RydWN0IHNwYW4g Yykge30gLyogeyBkZy1lcnJvciAibm90IGF2YWlsYWJsZSB0byBmdW5jdGlv bnMgd2l0aCBhcmd1bWVudHMgcGFzc2VkIG9uIHRoZSBzdGFjayIgfSAqLwor Cit2b2lkIF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNlY3VyZV9lbnRyeSkp CitiYXogKGludCBhLCAuLi4pIHt9IC8qIHsgZGctZXJyb3IgIm5vdCBhdmFp bGFibGUgdG8gZnVuY3Rpb25zIHdpdGggdmFyaWFibGUgbnVtYmVyIG9mIGFy Z3VtZW50cyIgfSAqLworCitzdHJ1Y3Qgc3BhbiBfX2F0dHJpYnV0ZV9fICgo Y21zZV9ub25zZWN1cmVfZW50cnkpKQorcXV4ICh2b2lkKSB7IC8qIHsgZGct ZXJyb3IgIm5vdCBhdmFpbGFibGUgdG8gZnVuY3Rpb25zIHRoYXQgcmV0dXJu IHZhbHVlIG9uIHRoZSBzdGFjayIgfSAqLworICBzdHJ1Y3Qgc3BhbiByZXQg PSB7MCwgMH07CisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgX19hdHRyaWJ1 dGVfXyAoKGNtc2Vfbm9uc2VjdXJlX2VudHJ5KSkKK25vcmYgKHN0cnVjdCBz cGFuMiBhKSB7fQorCit2b2lkIF9fYXR0cmlidXRlX18gKChjbXNlX25vbnNl Y3VyZV9lbnRyeSkpCitmb28yIChsb25nIGxvbmcgYSwgaW50IGIsIHVuaW9u IHRlc3RfdW5pb24gYykge30gLyogeyBkZy1lcnJvciAibm90IGF2YWlsYWJs ZSB0byBmdW5jdGlvbnMgd2l0aCBhcmd1bWVudHMgcGFzc2VkIG9uIHRoZSBz dGFjayIgfSAqLwo= --------------040802060608050909030901--