From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2365 invoked by alias); 24 Aug 2016 11:01: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 2334 invoked by uid 89); 24 Aug 2016 11:01:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,KAM_LOTSOFHASH,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=Structure, Ignore, 1346, 134,6 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; Wed, 24 Aug 2016 11:00:51 +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 A86642F for ; Wed, 24 Aug 2016 04:02:29 -0700 (PDT) Received: from [10.2.206.221] (e107157-lin.cambridge.arm.com [10.2.206.221]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B500B3F220 for ; Wed, 24 Aug 2016 04:00:49 -0700 (PDT) Subject: [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> From: "Andre Vieira (lists)" Message-ID: <57BD7E60.3000501@arm.com> Date: Wed, 24 Aug 2016 11:01: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: <5796123D.6020702@arm.com> Content-Type: multipart/mixed; boundary="------------010705030409060507070104" X-IsSubscribed: yes X-SW-Source: 2016-08/txt/msg01709.txt.bz2 This is a multi-part message in MIME format. --------------010705030409060507070104 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 2302 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. --------------010705030409060507070104 Content-Type: text/plain; charset=UTF-8; name="diff2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff2" Content-length: 10875 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5oIGIvZ2NjL2NvbmZp Zy9hcm0vYXJtLmgKaW5kZXggZTM2OTdiYmNiNDI1OTk5ZGIzMWFjMmI0ZjQ3 ZTE0YmIzZjJmZmE4OS4uNTMwN2VjOGY5MDQyMzBkYjVlYTQ0MTUwZWY0NzFk OTI4OTI2YWI2ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmgK KysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmgKQEAgLTEzNzMsNiArMTM3Myw3 IEBAIGVudW0gcmVnX2NsYXNzCiAjZGVmaW5lIEFSTV9GVF9WT0xBVElMRQkJ KDEgPDwgNCkgLyogRG9lcyBub3QgcmV0dXJuLiAgKi8KICNkZWZpbmUgQVJN X0ZUX05FU1RFRAkJKDEgPDwgNSkgLyogRW1iZWRkZWQgaW5zaWRlIGFub3Ro ZXIgZnVuYy4gICovCiAjZGVmaW5lIEFSTV9GVF9TVEFDS0FMSUdOCSgxIDw8 IDYpIC8qIENhbGxlZCB3aXRoIG1pc2FsaWduZWQgc3RhY2suICAqLworI2Rl ZmluZSBBUk1fRlRfQ01TRV9FTlRSWQkoMSA8PCA3KSAvKiBBUk12OC1NIG5v bi1zZWN1cmUgZW50cnkgZnVuY3Rpb24uICAqLwogCiAvKiBTb21lIG1hY3Jv cyB0byB0ZXN0IHRoZXNlIGZsYWdzLiAgKi8KICNkZWZpbmUgQVJNX0ZVTkNf VFlQRSh0KQkodCAmIEFSTV9GVF9UWVBFX01BU0spCkBAIC0xMzgxLDYgKzEz ODIsNyBAQCBlbnVtIHJlZ19jbGFzcwogI2RlZmluZSBJU19OQUtFRCh0KSAg ICAgICAgCSh0ICYgQVJNX0ZUX05BS0VEKQogI2RlZmluZSBJU19ORVNURUQo dCkgICAgICAgCSh0ICYgQVJNX0ZUX05FU1RFRCkKICNkZWZpbmUgSVNfU1RB Q0tBTElHTih0KSAgICAgICAJKHQgJiBBUk1fRlRfU1RBQ0tBTElHTikKKyNk ZWZpbmUgSVNfQ01TRV9FTlRSWSh0KQkodCAmIEFSTV9GVF9DTVNFX0VOVFJZ KQogCiAKIC8qIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIGZ1bmN0aW9u IHN0YWNrIGZyYW1lIGxheW91dC4gIE9mZnNldHMgYXJlCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FybS9hcm0uYyBiL2djYy9jb25maWcvYXJtL2FybS5j CmluZGV4IDk5MDNkOWNkOGM1ZmY2OGEyMzE4YTY0M2JkZjMxY2Y0ODAxNmVi YTQuLjExNDE3YWIzYzJmNzEwMTg2NmVlNWQ2YjEwMDkxMzQ4MGU1YzMzNmUg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2FybS5jCisrKyBiL2djYy9j b25maWcvYXJtL2FybS5jCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RhdGljIHRy ZWUgYXJtX2hhbmRsZV9pc3JfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRy ZWUsIGludCwgYm9vbCAqKTsKICNpZiBUQVJHRVRfRExMSU1QT1JUX0RFQ0xf QVRUUklCVVRFUwogc3RhdGljIHRyZWUgYXJtX2hhbmRsZV9ub3RzaGFyZWRf YXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsK ICNlbmRpZgorc3RhdGljIHRyZWUgYXJtX2hhbmRsZV9jbXNlX25vbnNlY3Vy ZV9lbnRyeSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBz dGF0aWMgdm9pZCBhcm1fb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlIChGSUxF ICosIEhPU1RfV0lERV9JTlQpOwogc3RhdGljIHZvaWQgYXJtX291dHB1dF9m dW5jdGlvbl9wcm9sb2d1ZSAoRklMRSAqLCBIT1NUX1dJREVfSU5UKTsKIHN0 YXRpYyBpbnQgYXJtX2NvbXBfdHlwZV9hdHRyaWJ1dGVzIChjb25zdF90cmVl LCBjb25zdF90cmVlKTsKQEAgLTM0Myw2ICszNDQsOSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGFybV9hdHRyaWJ1dGVfdGFibGVb XSA9CiAgIHsgIm5vdHNoYXJlZCIsICAgIDAsIDAsIGZhbHNlLCB0cnVlLCBm YWxzZSwgYXJtX2hhbmRsZV9ub3RzaGFyZWRfYXR0cmlidXRlLAogICAgIGZh bHNlIH0sCiAjZW5kaWYKKyAgLyogQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNp b25zIHN1cHBvcnQuICAqLworICB7ICJjbXNlX25vbnNlY3VyZV9lbnRyeSIs IDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwKKyAgICBhcm1faGFuZGxlX2Nt c2Vfbm9uc2VjdXJlX2VudHJ5LCBmYWxzZSB9LAogICB7IE5VTEwsICAgICAg ICAgICAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBOVUxMLCBmYWxzZSB9 CiB9OwogDApAQCAtMzYzMyw2ICszNjM3LDkgQEAgYXJtX2NvbXB1dGVfZnVu Y190eXBlICh2b2lkKQogICBlbHNlCiAgICAgdHlwZSB8PSBhcm1faXNyX3Zh bHVlIChUUkVFX1ZBTFVFIChhKSk7CiAKKyAgaWYgKGxvb2t1cF9hdHRyaWJ1 dGUgKCJjbXNlX25vbnNlY3VyZV9lbnRyeSIsIGF0dHIpKQorICAgIHR5cGUg fD0gQVJNX0ZUX0NNU0VfRU5UUlk7CisKICAgcmV0dXJuIHR5cGU7CiB9CiAK QEAgLTY2MzQsNiArNjY0MSwxMTAgQEAgYXJtX2hhbmRsZV9ub3RzaGFyZWRf 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 ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQppbmRleCA4NWVmZWYyOWI5OWMy NjM1MGE2NzA3OWMwZmJjYWUwMmIwMzZhYzIwLi4xNTMxZWQ2NmJkZDBiNTFj MjY4YzJhNjY2YzJlMDc4YjRmMGQ3ZWE2IDEwMDY0NAotLS0gYS9nY2MvZG9j L2V4dGVuZC50ZXhpCisrKyBiL2djYy9kb2MvZXh0ZW5kLnRleGkKQEAgLTEy NDIxLDYgKzEyNDIxLDkgQEAgU2VjdXJpdHkgRXh0ZW5zaW9uczogUmVxdWly 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= --------------010705030409060507070104--