From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 76609 invoked by alias); 10 Jun 2015 07:57:57 -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 76587 invoked by uid 89); 10 Jun 2015 07:57:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.0 required=5.0 tests=AWL,BAYES_50,KAM_ASCII_DIVIDERS,KAM_LAZY_DOMAIN_SECURITY,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mx07-00178001.pphosted.com Received: from mx07-00178001.pphosted.com (HELO mx07-00178001.pphosted.com) (62.209.51.94) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 10 Jun 2015 07:57:53 +0000 Received: from pps.filterd (m0046670.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.14.5/8.14.5) with SMTP id t5A7t2Kk014372; Wed, 10 Jun 2015 09:57:42 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 1uxa6fa06d-1 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 10 Jun 2015 09:57:42 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id C9C9334; Wed, 10 Jun 2015 07:57:38 +0000 (GMT) Received: from Webmail-eu.st.com (safex1hubcas1.st.com [10.75.90.14]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 9611728E0; Wed, 10 Jun 2015 07:57:38 +0000 (GMT) Received: from [164.129.122.197] (164.129.122.197) by webmail-eu.st.com (10.75.90.13) with Microsoft SMTP Server (TLS) id 8.3.342.0; Wed, 10 Jun 2015 09:57:38 +0200 Message-ID: <5577EDF1.8070002@st.com> Date: Wed, 10 Jun 2015 08:26:00 -0000 From: Christian Bruel User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Ramana Radhakrishnan , Kyrill Tkachov , Ramana Radhakrishnan , Sandra Loosemore CC: "gcc-patches@gcc.gnu.org" , Richard Earnshaw , "nickc@redhat.com" Subject: Re: [PATCH, ARM] (commited) attribute target (thumb,arm) [4/6] References: <554A243B.8010902@st.com> <554A9DB1.1070009@codesourcery.com> <554C7459.4000806@arm.com> <55599F54.4040807@st.com> <556C366B.8000203@arm.com> <556C4235.5060203@st.com> <556C530B.8000105@arm.com> <55755277.5070005@st.com> <55755FCF.8010706@foss.arm.com> In-Reply-To: <55755FCF.8010706@foss.arm.com> X-No-Archive: yes Content-Type: multipart/mixed; boundary="------------060705020004090803050308" X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.14.151,1.0.33,0.0.0000 definitions=2015-06-10_02:2015-06-09,2015-06-10,1970-01-01 signatures=0 X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg00735.txt.bz2 --------------060705020004090803050308 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 572 Hi, Commited [4/6] as attached (r224314) thanks Christian On 06/08/2015 11:26 AM, Ramana Radhakrishnan wrote: > > > On 08/06/15 09:45, Christian Bruel wrote: >> Hi Ramana, >> >>> >>> Ok, I see. >>> The patch looks ok to me modulo the typo nits I pointed out, but I >>> think Ramana >>> should have the final say here as he's already started reviewing it >>> and it adds quite >>> a lot of functionality. >>> >>> Thanks, >>> Kyrill >>> >> >> do you have other feedbacks for the remaining parts ? >> >> many thanks >> >> Christian > > > This is OK, thanks. > > Ramana > --------------060705020004090803050308 Content-Type: text/plain; charset="ISO-8859-1"; name="commited.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="commited.txt" Content-length: 29272 SW5kZXg6IGdjYy9kb2MvZXh0ZW5kLnRleGkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2RvYy9leHRlbmQudGV4aQkocmV2aXNpb24gMjI0MzEz KQorKysgZ2NjL2RvYy9leHRlbmQudGV4aQkocmV2aXNpb24gMjI0MzE0KQpA QCAtMzA5OCw4ICszMDk4LDkgQEAKIG9yIHNlcGFyYXRlIHRoZSBvcHRpb25z IHdpdGggYSBjb21tYSAoQHNhbXB7LH0pIHdpdGhpbiBhIHNpbmdsZSBzdHJp bmcuCiAKIFRoZSBvcHRpb25zIHN1cHBvcnRlZCBhcmUgc3BlY2lmaWMgdG8g ZWFjaCB0YXJnZXQ7IHJlZmVyIHRvIEByZWZ7eDg2Ci1GdW5jdGlvbiBBdHRy aWJ1dGVzfSwgQHJlZntQb3dlclBDIEZ1bmN0aW9uIEF0dHJpYnV0ZXN9LCBh bmQKLUByZWZ7TmlvcyBJSSBGdW5jdGlvbiBBdHRyaWJ1dGVzfSwgZm9yIGRl dGFpbHMuCitGdW5jdGlvbiBBdHRyaWJ1dGVzfSwgQHJlZntQb3dlclBDIEZ1 bmN0aW9uIEF0dHJpYnV0ZXN9LAorQHJlZntBUk0gRnVuY3Rpb24gQXR0cmli dXRlc30sYW5kIEByZWZ7TmlvcyBJSSBGdW5jdGlvbiBBdHRyaWJ1dGVzfSwK K2ZvciBkZXRhaWxzLgogCiBAaXRlbSB1bnVzZWQKIEBjaW5kZXggQGNvZGV7 dW51c2VkfSBmdW5jdGlvbiBhdHRyaWJ1dGUKQEAgLTM0NDgsOCArMzQ0OSwy OSBAQAogCiBWYXJpYWRpYyBmdW5jdGlvbnMgYWx3YXlzIHVzZSB0aGUgQGNv ZGV7ImFhcGNzIn0gY2FsbGluZyBjb252ZW50aW9uIGFuZAogdGhlIGNvbXBp bGVyIHJlamVjdHMgYXR0ZW1wdHMgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2 ZS4KKworQGl0ZW0gdGFyZ2V0IChAdmFye29wdGlvbnN9KQorQGNpbmRleCBA Y29kZXt0YXJnZXR9IGZ1bmN0aW9uIGF0dHJpYnV0ZQorQXMgZGlzY3Vzc2Vk IGluIEByZWZ7Q29tbW9uIEZ1bmN0aW9uIEF0dHJpYnV0ZXN9LCB0aGlzIGF0 dHJpYnV0ZSAKK2FsbG93cyBzcGVjaWZpY2F0aW9uIG9mIHRhcmdldC1zcGVj aWZpYyBjb21waWxhdGlvbiBvcHRpb25zLgorCitPbiBBUk0sIHRoZSBmb2xs b3dpbmcgb3B0aW9ucyBhcmUgYWxsb3dlZDoKKworQHRhYmxlIEBzYW1wCitA aXRlbSB0aHVtYgorQGNpbmRleCBAY29kZXt0YXJnZXQoInRodW1iIil9IGZ1 bmN0aW9uIGF0dHJpYnV0ZSwgQVJNCitGb3JjZSBjb2RlIGdlbmVyYXRpb24g aW4gdGhlIFRodW1iIChUMTYvVDMyKSBJU0EsIGRlcGVuZGluZyBvbiB0aGUK K2FyY2hpdGVjdHVyZSBsZXZlbC4KKworQGl0ZW0gYXJtCitAY2luZGV4IEBj b2Rle3RhcmdldCgiYXJtIil9IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgQVJNCitG b3JjZSBjb2RlIGdlbmVyYXRpb24gaW4gdGhlIEFSTSAoQTMyKSBJU0EuCiBA ZW5kIHRhYmxlCiAKK0Z1bmN0aW9ucyBmcm9tIGRpZmZlcmVudCBtb2RlcyBj YW4gYmUgaW5saW5lZCBpbiB0aGUgY2FsbGVyJ3MgbW9kZS4KKworQGVuZCB0 YWJsZQorCiBAbm9kZSBBVlIgRnVuY3Rpb24gQXR0cmlidXRlcwogQHN1YnNl Y3Rpb24gQVZSIEZ1bmN0aW9uIEF0dHJpYnV0ZXMKIApJbmRleDogZ2NjL2Rv Yy9pbnZva2UudGV4aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv ZG9jL2ludm9rZS50ZXhpCShyZXZpc2lvbiAyMjQzMTMpCisrKyBnY2MvZG9j L2ludm9rZS50ZXhpCShyZXZpc2lvbiAyMjQzMTQpCkBAIC0xMzUxMiw2ICsx MzUxMiwxMCBAQAogY29uZmlndXJpbmcgR0NDIHdpdGggdGhlIEBvcHRpb257 LS13aXRoLW1vZGU9fUB2YXJ7c3RhdGV9CiBjb25maWd1cmUgb3B0aW9uLgog CitZb3UgY2FuIGFsc28gb3ZlcnJpZGUgdGhlIEFSTSBhbmQgVGh1bWIgbW9k ZSBmb3IgZWFjaCBmdW5jdGlvbgorYnkgdXNpbmcgdGhlIEBjb2Rle3Rhcmdl dCgidGh1bWIiKX0gYW5kIEBjb2Rle3RhcmdldCgiYXJtIil9IGZ1bmN0aW9u IGF0dHJpYnV0ZXMKKyhAcHhyZWZ7QVJNIEZ1bmN0aW9uIEF0dHJpYnV0ZXN9 KSBvciBwcmFnbWFzIChAcHhyZWZ7RnVuY3Rpb24gU3BlY2lmaWMgT3B0aW9u IFByYWdtYXN9KS4KKwogQGl0ZW0gLW10cGNzLWZyYW1lCiBAb3BpbmRleCBt dHBjcy1mcmFtZQogR2VuZXJhdGUgYSBzdGFjayBmcmFtZSB0aGF0IGlzIGNv bXBsaWFudCB3aXRoIHRoZSBUaHVtYiBQcm9jZWR1cmUgQ2FsbApJbmRleDog Z2NjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjQzMTMpCisrKyBnY2MvQ2hhbmdlTG9n CShyZXZpc2lvbiAyMjQzMTQpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUtMDYt MDkgIENocmlzdGlhbiBCcnVlbCAgPGNocmlzdGlhbi5icnVlbEBzdC5jb20+ CisKKwlQUiB0YXJnZXQvNTIxNDQKKwkqIGNvbmZpZy9hcm0vYXJtLm9wdCAo VEhVTUIsIGFybV9yZXN0cmljdF9pdCwgaW5saW5lX2FzbV91bmlmaWVkKTog U2F2ZS4KKwkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChhcm1fdmFsaWRf dGFyZ2V0X2F0dHJpYnV0ZV90cmVlKTogRGVjbGFyZS4KKwkoYXJtX3Jlc2V0 X3ByZXZpb3VzX2ZuZGVjbCwgYXJtX2NoYW5nZV9tb2RlX3ApOiBMaWtld2lz ZS4KKwkqIGNvbmZpZy9hcm0vYXJtLmggKFNXSVRDSEFCTEVfVEFSR0VUKTog RGVmaW5lLgorCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3Jlc2V0X3ByZXZp b3VzX2ZuZGVjbCk6IE5ldyBmdW5jdGlvbnMuCisJKGFybV92YWxpZF90YXJn ZXRfYXR0cmlidXRlX3RyZWUsIGFybV9jaGFuZ2VfbW9kZV9wKTogTGlrZXdp c2UuCisJKGFybV92YWxpZF90YXJnZXRfYXR0cmlidXRlX3ApOiBMaWtld2lz ZS4KKwkoYXJtX3NldF9jdXJyZW50X2Z1bmN0aW9uLCBhcm1fY2FuX2lubGlu ZV9wKTogTGlrZXdpc2UuCisJKGFybV92YWxpZF90YXJnZXRfYXR0cmlidXRl X3JlYyk6IExpa2V3aXNlLgorCShhcm1fcHJldmlvdXNfZm5kZWNsKTogTmV3 IHZhcmlhYmxlLgorCShUQVJHRVRfU0VUX0NVUlJFTlRfRlVOQ1RJT04sIFRB UkdFVF9PUFRJT05fVkFMSURfQVRUUklCVVRFX1ApOiBEZWZpbmUuCisJKFRB UkdFVF9DQU5fSU5MSU5FX1ApOiBEZWZpbmUuCisJKGFybV9hc21fdHJhbXBv bGluZV90ZW1wbGF0ZSk6IEVtaXQgbW9kZS4KKwkoYXJtX2ZpbGVfc3RhcnQp OiBEb24ndCBzZXQgdW5pZmllZCBzeW50YXguCisJKGFybV9kZWNsYXJlX2Z1 bmN0aW9uX25hbWUpOiBTZXQgdW5pZmllZCBzeW50YXggYW5kIG1vZGUuCisJ KGFybV9vcHRpb25fb3ZlcnJpZGUpOiBJbml0IHRhcmdldF9vcHRpb25fZGVm YXVsdF9ub2RlLgorCWFuZCB0YXJnZXRfb3B0aW9uX2N1cnJlbnRfbm9kZS4K KwkqIGNvbmZpZy9hcm0vYXJtLm1kICgqY2FsbF92YWx1ZV9zeW1ib2wpOiBT ZXQgbW9kZSB3aGVuIHBvc3NpYmxlLgorCSgqY2FsbF9zeW1ib2wpOiBMaWtl d2lzZS4KKwkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgQVJNL1RodW1i IHRhcmdldCBhdHRyaWJ1dGUuCisJKiBkb2MvaW52b2tlLnRleGk6IExpa2V3 aXNlLgorCiAyMDE1LTA2LTA5ICBBbGV4YW5kcmUgT2xpdmEgPGFvbGl2YUBy ZWRoYXQuY29tPgogCiAJUmV2ZXJ0OgpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FybS9hdHRyX2FybS1lcnIuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2F0dHJf YXJtLWVyci5jCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FybS9hdHRyX2FybS1lcnIuYwkocmV2aXNpb24gMjI0MzE0KQpA QCAtMCwwICsxLDEzIEBACisvKiBDaGVjayB0aGF0IGF0dHJpYnV0ZSB0YXJn ZXQgYXJtIGlzIHJlamVjdGVkIGZvciBNIHByb2ZpbGUuICAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IGFybV9hcm1fb2sgfSAqLworLyogeyBkZy1za2lwLWlmICJhdm9p ZCBjb25mbGljdGluZyBtdWx0aWxpYiBvcHRpb25zIiB7ICotKi0qIH0geyAi LW1hcmNoPSoiIH0geyAiLW1hcmNoPWFybXY2LW0iIH0gfSAqLworLyogeyBk Zy1hZGQtb3B0aW9ucyBhcm1fYXJjaF92Nm0gfSAqLworCitpbnQgX19hdHRy aWJ1dGVfXygodGFyZ2V0KCJhcm0iKSkpCitmb28oaW50IGEpCit7ICAvKiB7 IGRnLWVycm9yICJkb2VzIG5vdCBzdXBwb3J0IiB9ICovCisgIHJldHVybiBh ID8gMSA6IDU7Cit9CisKKwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9hdHRyX3RodW1iLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9hdHRyX3RodW1iLmMJ KHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJt L2F0dHJfdGh1bWIuYwkocmV2aXNpb24gMjI0MzE0KQpAQCAtMCwwICsxLDEz IEBACisvKiBDaGVjayB0aGF0IGF0dHJpYnV0ZSB0YXJnZXQgdGh1bWIgaXMg cmVjb2duaXdlZC4gKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fdGh1bWIyX29rIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIi50aHVtYiIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgIml0ZSIgfSB9ICovCisKK2ludCBfX2F0 dHJpYnV0ZV9fKCh0YXJnZXQoInRodW1iIikpKQorZm9vKGludCBhKQorewor ICByZXR1cm4gYSA/IDEgOiA1OworfQorCkluZGV4OiBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYXJtL2F0dHJfdGh1bWItc3RhdGljLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9hdHRyX3RodW1iLXN0YXRpYy5jCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9hdHRyX3RodW1iLXN0YXRpYy5jCShy ZXZpc2lvbiAyMjQzMTQpCkBAIC0wLDAgKzEsMjQgQEAKKy8qIENoZWNrIHRo YXQgYSBjaGFuZ2UgbW9kZSB0byBhIHN0YXRpYyBmdW5jdGlvbiBpcyBjb3Jy ZWN0bHkgaGFuZGxlZC4gKi8KKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV90aHVtYjFfb2sgfSAq LworCitzdGF0aWMgdm9pZAorIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVf XykpIAorZm9vICh2b2lkKQoreworICBfX2FzbV9fICgiIik7Cit9CisKK3N0 YXRpYyB2b2lkCitfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSAKK19f YXR0cmlidXRlX18oKHRhcmdldCgidGh1bWIiKSkpCitiYXIgKHZvaWQpCit7 CisgIF9fYXNtX18gKCIiKTsKK30KKworaW50IG1haW4oKQoreworICBmb28o KTsKKyAgYmFyKCk7Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYXJtL2F0dHJfYXJtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9hdHRyX2FybS5jCShyZXZp c2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9hdHRy X2FybS5jCShyZXZpc2lvbiAyMjQzMTQpCkBAIC0wLDAgKzEsMTMgQEAKKy8q IENoZWNrIHRoYXQgYXR0cmlidXRlIHRhcmdldCBhcm0gaXMgcmVjb2duaXdl ZC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX2FybV9vayB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMiIgfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICIuYXJtIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci1ub3QgIml0ZSIgfSB9ICovCisKK2ludCBfX2F0dHJpYnV0ZV9f KCh0YXJnZXQoImFybSIpKSkKK2ZvbyhpbnQgYSkKK3sKKyAgcmV0dXJuIGEg PyAxIDogNTsKK30KKwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cJKHJldmlzaW9uIDIyNDMxMykKKysrIGdjYy90ZXN0c3VpdGUvQ2hh bmdlTG9nCShyZXZpc2lvbiAyMjQzMTQpCkBAIC0xLDMgKzEsMTEgQEAKKzIw MTUtMDYtMDkgIENocmlzdGlhbiBCcnVlbCAgPGNocmlzdGlhbi5icnVlbEBz dC5jb20+CisKKwlQUiB0YXJnZXQvNTIxNDQKKwkqIGdjYy50YXJnZXQvYXJt L2F0dHJfYXJtLmM6IE5ldyB0ZXN0CisJKiBnY2MudGFyZ2V0L2FybS9hdHRy X2FybS1lcnIuYzogTmV3IHRlc3QKKwkqIGdjYy50YXJnZXQvYXJtL2F0dHJf dGh1bWIuYzogTmV3IHRlc3QKKwkqIGdjYy50YXJnZXQvYXJtL2F0dHJfdGh1 bWItc3RhdGljLmM6IE5ldyB0ZXN0CisKIDIwMTUtMDYtMTAgIFJhbWFuYSBS YWRoYWtyaXNobmFuICA8cmFtYW5hLnJhZGhha3Jpc2huYW5AYXJtLmNvbT4K IAogCVBSIHRhcmdldC82NjIwMApJbmRleDogZ2NjL2NvbmZpZy9hcm0vYXJt LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NvbmZpZy9hcm0v YXJtLmMJKHJldmlzaW9uIDIyNDMxMykKKysrIGdjYy9jb25maWcvYXJtL2Fy bS5jCShyZXZpc2lvbiAyMjQzMTQpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5j bHVkZSAib3B0cy5oIgogI2luY2x1ZGUgImR1bXBmaWxlLmgiCiAjaW5jbHVk ZSAiZ2ltcGxlLWV4cHIuaCIKKyNpbmNsdWRlICJ0YXJnZXQtZ2xvYmFscy5o IgogI2luY2x1ZGUgImJ1aWx0aW5zLmgiCiAjaW5jbHVkZSAidG0tY29uc3Ry cy5oIgogI2luY2x1ZGUgInJ0bC1pdGVyLmgiCkBAIC0yNTIsNiArMjUzLDkg QEAKIHN0YXRpYyB2b2lkIGFybV9leHBhbmRfYnVpbHRpbl92YV9zdGFydCAo dHJlZSwgcnR4KTsKIHN0YXRpYyB0cmVlIGFybV9naW1wbGlmeV92YV9hcmdf ZXhwciAodHJlZSwgdHJlZSwgZ2ltcGxlX3NlcSAqLCBnaW1wbGVfc2VxICop Owogc3RhdGljIHZvaWQgYXJtX29wdGlvbl9vdmVycmlkZSAodm9pZCk7Citz dGF0aWMgdm9pZCBhcm1fc2V0X2N1cnJlbnRfZnVuY3Rpb24gKHRyZWUpOwor c3RhdGljIGJvb2wgYXJtX2Nhbl9pbmxpbmVfcCAodHJlZSwgdHJlZSk7Citz dGF0aWMgYm9vbCBhcm1fdmFsaWRfdGFyZ2V0X2F0dHJpYnV0ZV9wICh0cmVl LCB0cmVlLCB0cmVlLCBpbnQpOwogc3RhdGljIHVuc2lnbmVkIEhPU1RfV0lE RV9JTlQgYXJtX3NoaWZ0X3RydW5jYXRpb25fbWFzayAobWFjaGluZV9tb2Rl KTsKIHN0YXRpYyBib29sIGFybV9tYWNyb19mdXNpb25fcCAodm9pZCk7CiBz dGF0aWMgYm9vbCBhcm1fY2Fubm90X2NvcHlfaW5zbl9wIChydHhfaW5zbiAq KTsKQEAgLTQwMCw2ICs0MDQsOSBAQAogI3VuZGVmICBUQVJHRVRfQVNNX0ZV TkNUSU9OX0VQSUxPR1VFCiAjZGVmaW5lIFRBUkdFVF9BU01fRlVOQ1RJT05f RVBJTE9HVUUgYXJtX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZQogCisjdW5k ZWYgVEFSR0VUX0NBTl9JTkxJTkVfUAorI2RlZmluZSBUQVJHRVRfQ0FOX0lO TElORV9QIGFybV9jYW5faW5saW5lX3AKKwogI3VuZGVmICBUQVJHRVRfT1BU SU9OX09WRVJSSURFCiAjZGVmaW5lIFRBUkdFVF9PUFRJT05fT1ZFUlJJREUg YXJtX29wdGlvbl9vdmVycmlkZQogCkBAIC00MTgsNiArNDI1LDEyIEBACiAj dW5kZWYgIFRBUkdFVF9TQ0hFRF9BREpVU1RfQ09TVAogI2RlZmluZSBUQVJH RVRfU0NIRURfQURKVVNUX0NPU1QgYXJtX2FkanVzdF9jb3N0CiAKKyN1bmRl ZiBUQVJHRVRfU0VUX0NVUlJFTlRfRlVOQ1RJT04KKyNkZWZpbmUgVEFSR0VU X1NFVF9DVVJSRU5UX0ZVTkNUSU9OIGFybV9zZXRfY3VycmVudF9mdW5jdGlv bgorCisjdW5kZWYgVEFSR0VUX09QVElPTl9WQUxJRF9BVFRSSUJVVEVfUAor I2RlZmluZSBUQVJHRVRfT1BUSU9OX1ZBTElEX0FUVFJJQlVURV9QIGFybV92 YWxpZF90YXJnZXRfYXR0cmlidXRlX3AKKwogI3VuZGVmIFRBUkdFVF9TQ0hF RF9SRU9SREVSCiAjZGVmaW5lIFRBUkdFVF9TQ0hFRF9SRU9SREVSIGFybV9z Y2hlZF9yZW9yZGVyCiAKQEAgLTI3NzgsNiArMjc5MSw5IEBACiAgICAgbWF4 X2luc25zX3NraXBwZWQgPSBjdXJyZW50X3R1bmUtPm1heF9pbnNuc19za2lw cGVkOwogfQogCisvKiBPcHRpb25zIGFmdGVyIGluaXRpYWwgdGFyZ2V0IG92 ZXJyaWRlLiAgKi8KK3N0YXRpYyBHVFkoKCkpIHRyZWUgaW5pdF9vcHRpbWl6 ZTsKKwogLyogUmVzZXQgb3B0aW9ucyBiZXR3ZWVuIG1vZGVzIHRoYXQgdGhl IHVzZXIgaGFzIHNwZWNpZmllZC4gICovCiBzdGF0aWMgdm9pZAogYXJtX29w dGlvbl9vdmVycmlkZV9pbnRlcm5hbCAoc3RydWN0IGdjY19vcHRpb25zICpv cHRzLApAQCAtMjgwMCw2ICsyODE2LDEwIEBACiAgIGlmIChUQVJHRVRfVEhV TUJfUCAob3B0cy0+eF90YXJnZXRfZmxhZ3MpICYmIFRBUkdFVF9DQUxMRUVf SU5URVJXT1JLSU5HKQogICAgIG9wdHMtPnhfdGFyZ2V0X2ZsYWdzIHw9IE1B U0tfSU5URVJXT1JLOwogCisgIC8qIG5lZWQgdG8gcmVtZW1iZXIgaW5pdGlh bCB2YWx1ZXMgc28gY29tYmluYWlzb25zIG9mIG9wdGlvbnMgbGlrZQorICAg ICAtbWZsaXAtdGh1bWIgLW10aHVtYiAtZm5vLXNjaGVkdWxlLWluc25zIHdv cmsgZm9yIGFueSBhdHRyaWJ1dGUuICAqLworICBjbF9vcHRpbWl6YXRpb24g KnRvID0gVFJFRV9PUFRJTUlaQVRJT04gKGluaXRfb3B0aW1pemUpOworCiAg IGlmICghIG9wdHNfc2V0LT54X2FybV9yZXN0cmljdF9pdCkKICAgICBvcHRz LT54X2FybV9yZXN0cmljdF9pdCA9IGFybV9hcmNoODsKIApAQCAtMjgwNiwx MSArMjgyNiwxMSBAQAogICBpZiAoIVRBUkdFVF9USFVNQjJfUCAob3B0cy0+ eF90YXJnZXRfZmxhZ3MpKQogICAgIG9wdHMtPnhfYXJtX3Jlc3RyaWN0X2l0 ID0gMDsKIAorICAvKiBEb24ndCB3YXJuIHNpbmNlIGl0J3Mgb24gYnkgZGVm YXVsdCBpbiAtTzIuICAqLwogICBpZiAoVEFSR0VUX1RIVU1CMV9QIChvcHRz LT54X3RhcmdldF9mbGFncykpCi0gICAgewotICAgICAgLyogRG9uJ3Qgd2Fy biBzaW5jZSBpdCdzIG9uIGJ5IGRlZmF1bHQgaW4gLU8yLiAgKi8KLSAgICAg IG9wdHMtPnhfZmxhZ19zY2hlZHVsZV9pbnNucyA9IDA7Ci0gICAgfQorICAg IG9wdHMtPnhfZmxhZ19zY2hlZHVsZV9pbnNucyA9IDA7CisgIGVsc2UKKyAg ICBvcHRzLT54X2ZsYWdfc2NoZWR1bGVfaW5zbnMgPSB0by0+eF9mbGFnX3Nj aGVkdWxlX2luc25zOwogCiAgIC8qIERpc2FibGUgc2hyaW5rLXdyYXAgd2hl biBvcHRpbWl6aW5nIGZ1bmN0aW9uIGZvciBzaXplLCBzaW5jZSBpdCB0ZW5k cyB0bwogICAgICBnZW5lcmF0ZSBhZGRpdGlvbmFsIHJldHVybnMuICAqLwpA QCAtMjgxNyw2ICsyODM3LDggQEAKICAgaWYgKG9wdGltaXplX2Z1bmN0aW9u X2Zvcl9zaXplX3AgKGNmdW4pCiAgICAgICAmJiBUQVJHRVRfVEhVTUIyX1Ag KG9wdHMtPnhfdGFyZ2V0X2ZsYWdzKSkKICAgICBvcHRzLT54X2ZsYWdfc2hy aW5rX3dyYXAgPSBmYWxzZTsKKyAgZWxzZQorICAgIG9wdHMtPnhfZmxhZ19z aHJpbmtfd3JhcCA9IHRvLT54X2ZsYWdfc2hyaW5rX3dyYXA7CiAKICAgLyog SW4gVGh1bWIxIG1vZGUsIHdlIGVtaXQgdGhlIGVwaWxvZ3VlIGluIFJUTCwg YnV0IHRoZSBsYXN0IGluc24KICAgICAgLSBlcGlsb2d1ZV9pbnNucyAtIGRv ZXMgbm90IGFjY3VyYXRlbHkgbW9kZWwgdGhlIGNvcnJlc3BvbmRpbmcgaW5z bnMKQEAgLTI4MjgsNiArMjg1MCw4IEBACiAgICAgIGZpcGEtcmEuICAqLwog ICBpZiAoVEFSR0VUX1RIVU1CMV9QIChvcHRzLT54X3RhcmdldF9mbGFncykp CiAgICAgb3B0cy0+eF9mbGFnX2lwYV9yYSA9IDA7CisgIGVsc2UKKyAgICBv cHRzLT54X2ZsYWdfaXBhX3JhID0gdG8tPnhfZmxhZ19pcGFfcmE7CiAKICAg LyogVGh1bWIyIGlubGluZSBhc3NlbWJseSBjb2RlIHNob3VsZCBhbHdheXMg dXNlIHVuaWZpZWQgc3ludGF4LgogICAgICBUaGlzIHdpbGwgYXBwbHkgdG8g QVJNIGFuZCBUaHVtYjEgZXZlbnR1YWxseS4gICovCkBAIC0zMzMwLDYgKzMz NTQsOSBAQAogICAgICAgJiYgKCFhcm1fYXJjaDcgfHwgIWN1cnJlbnRfdHVu ZS0+cHJlZmVyX2xkcmRfc3RyZCkpCiAgICAgZmxhZ19zY2hlZHVsZV9mdXNp b24gPSAwOwogCisgIC8qIE5lZWQgdG8gcmVtZW1iZXIgaW5pdGlhbCBvcHRp b25zIGJlZm9yZSB0aGV5IGFyZSBvdmVycmlkZW4uICAqLworICBpbml0X29w dGltaXplID0gYnVpbGRfb3B0aW1pemF0aW9uX25vZGUgKCZnbG9iYWxfb3B0 aW9ucyk7CisKICAgYXJtX29wdGlvbl9vdmVycmlkZV9pbnRlcm5hbCAoJmds b2JhbF9vcHRpb25zLCAmZ2xvYmFsX29wdGlvbnNfc2V0KTsKICAgYXJtX29w dGlvbl9jaGVja19pbnRlcm5hbCAoJmdsb2JhbF9vcHRpb25zKTsKICAgYXJt X29wdGlvbl9wYXJhbXNfaW50ZXJuYWwgKCZnbG9iYWxfb3B0aW9ucyk7CkBA IC0zMzM2LDYgKzMzNjMsMTEgQEAKIAogICAvKiBSZWdpc3RlciBnbG9iYWwg dmFyaWFibGVzIHdpdGggdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgKi8KICAg YXJtX2FkZF9nY19yb290cyAoKTsKKworICAvKiBTYXZlIHRoZSBpbml0aWFs IG9wdGlvbnMgaW4gY2FzZSB0aGUgdXNlciBkb2VzIGZ1bmN0aW9uIHNwZWNp ZmljCisgICAgIG9wdGlvbnMuICAqLworICB0YXJnZXRfb3B0aW9uX2RlZmF1 bHRfbm9kZSA9IHRhcmdldF9vcHRpb25fY3VycmVudF9ub2RlCisgICAgPSBi dWlsZF90YXJnZXRfb3B0aW9uX25vZGUgKCZnbG9iYWxfb3B0aW9ucyk7CiB9 CiAKIHN0YXRpYyB2b2lkCkBAIC0zNDg5LDEzICszNTIxLDIwIEBACiBzdGF0 aWMgdm9pZAogYXJtX2FzbV90cmFtcG9saW5lX3RlbXBsYXRlIChGSUxFICpm KQogeworICBpZiAoVEFSR0VUX1VOSUZJRURfQVNNKQorICAgIGZwcmludGYg KGYsICJcdC5zeW50YXggdW5pZmllZFxuIik7CisgIGVsc2UKKyAgICBmcHJp bnRmIChmLCAiXHQuc3ludGF4IGRpdmlkZWRcbiIpOworCiAgIGlmIChUQVJH RVRfQVJNKQogICAgIHsKKyAgICAgIGZwcmludGYgKGYsICJcdC5hcm1cbiIp OwogICAgICAgYXNtX2ZwcmludGYgKGYsICJcdGxkclx0JXIsIFslciwgIzBd XG4iLCBTVEFUSUNfQ0hBSU5fUkVHTlVNLCBQQ19SRUdOVU0pOwogICAgICAg YXNtX2ZwcmludGYgKGYsICJcdGxkclx0JXIsIFslciwgIzBdXG4iLCBQQ19S RUdOVU0sIFBDX1JFR05VTSk7CiAgICAgfQogICBlbHNlIGlmIChUQVJHRVRf VEhVTUIyKQogICAgIHsKKyAgICAgIGZwcmludGYgKGYsICJcdC50aHVtYlxu Iik7CiAgICAgICAvKiBUaGUgVGh1bWItMiB0cmFtcG9saW5lIGlzIHNpbWls YXIgdG8gdGhlIGFybSBpbXBsZW1lbnRhdGlvbi4KIAkgVW5saWtlIDE2LWJp dCBUaHVtYiwgd2UgZW50ZXIgdGhlIHN0dWIgaW4gdGh1bWIgbW9kZS4gICov CiAgICAgICBhc21fZnByaW50ZiAoZiwgIlx0bGRyLndcdCVyLCBbJXIsICM0 XVxuIiwKQEAgLTI0MTkzLDcgKzI0MjMyLDI1IEBACiAgICAgbWFya19yZWdf cG9pbnRlciAoYXJnX3BvaW50ZXJfcnR4LCBQQVJNX0JPVU5EQVJZKTsKIH0K IAorLyogQ2hlY2sgdGhhdCBGVU5DIGlzIGNhbGxlZCB3aXRoIGEgZGlmZmVy ZW50IG1vZGUuICAqLwogCitib29sCithcm1fY2hhbmdlX21vZGVfcCAodHJl ZSBmdW5jKQoreworICBpZiAoVFJFRV9DT0RFIChmdW5jKSAhPSBGVU5DVElP Tl9ERUNMKQorICAgIHJldHVybiBmYWxzZTsKKworICB0cmVlIGNhbGxlZV90 cmVlID0gREVDTF9GVU5DVElPTl9TUEVDSUZJQ19UQVJHRVQgKGZ1bmMpOwor CisgIGlmICghY2FsbGVlX3RyZWUpCisgICAgY2FsbGVlX3RyZWUgPSB0YXJn ZXRfb3B0aW9uX2RlZmF1bHRfbm9kZTsKKworICBzdHJ1Y3QgY2xfdGFyZ2V0 X29wdGlvbiAqY2FsbGVlX29wdHMgPSBUUkVFX1RBUkdFVF9PUFRJT04gKGNh bGxlZV90cmVlKTsKKyAgaW50IGZsYWdzID0gY2FsbGVlX29wdHMtPnhfdGFy Z2V0X2ZsYWdzOworCisgIHJldHVybiAoVEFSR0VUX1RIVU1CX1AgKGZsYWdz KSAhPSBUQVJHRVRfVEhVTUIpOworfQorCiAvKiBMaWtlIGFybV9jb21wdXRl X2luaXRpYWxfZWxpbWluYXRpb24gb2Zmc2V0LiAgU2ltcGxlciBiZWNhdXNl IHRoZXJlCiAgICBpc24ndCBhbiBBQkkgc3BlY2lmaWVkIGZyYW1lIHBvaW50 ZXIgZm9yIFRodW1iLiAgSW5zdGVhZCwgd2Ugc2V0IGl0CiAgICB0byBwb2lu dCBhdCB0aGUgYmFzZSBvZiB0aGUgbG9jYWwgdmFyaWFibGVzIGFmdGVyIHN0 YXRpYyBzdGFjawpAQCAtMjU1MjAsOSArMjU1NzcsNiBAQAogewogICBpbnQg dmFsOwogCi0gIGlmIChUQVJHRVRfVU5JRklFRF9BU00pCi0gICAgYXNtX2Zw cmludGYgKGFzbV9vdXRfZmlsZSwgIlx0LnN5bnRheCB1bmlmaWVkXG4iKTsK LQogICBpZiAoVEFSR0VUX0JQQUJJKQogICAgIHsKICAgICAgIGNvbnN0IGNo YXIgKmZwdV9uYW1lOwpAQCAtMjkyNjksOSArMjkzMjMsMTk2IEBACiAJICAm JiBDT05TVEFOVF9QT09MX0FERFJFU1NfUCAoWEVYUCAoeCwgMCkpKTsKIH0K IAorLyogUmVtZW1iZXIgdGhlIGxhc3QgdGFyZ2V0IG9mIGFybV9zZXRfY3Vy cmVudF9mdW5jdGlvbi4gICovCitzdGF0aWMgR1RZKCgpKSB0cmVlIGFybV9w cmV2aW91c19mbmRlY2w7CisKKy8qIEludmFsaWRhdGUgYXJtX3ByZXZpb3Vz X2ZuZGVjbC4gICovCiB2b2lkCithcm1fcmVzZXRfcHJldmlvdXNfZm5kZWNs ICh2b2lkKQoreworICBhcm1fcHJldmlvdXNfZm5kZWNsID0gTlVMTF9UUkVF OworfQorCisvKiBFc3RhYmxpc2ggYXBwcm9wcmlhdGUgYmFjay1lbmQgY29u dGV4dCBmb3IgcHJvY2Vzc2luZyB0aGUgZnVuY3Rpb24KKyAgIEZOREVDTC4g IFRoZSBhcmd1bWVudCBtaWdodCBiZSBOVUxMIHRvIGluZGljYXRlIHByb2Nl c3NpbmcgYXQgdG9wCisgICBsZXZlbCwgb3V0c2lkZSBvZiBhbnkgZnVuY3Rp b24gc2NvcGUuICAqLworc3RhdGljIHZvaWQKK2FybV9zZXRfY3VycmVudF9m dW5jdGlvbiAodHJlZSBmbmRlY2wpCit7CisgIGlmICghZm5kZWNsIHx8IGZu ZGVjbCA9PSBhcm1fcHJldmlvdXNfZm5kZWNsKQorICAgIHJldHVybjsKKwor ICB0cmVlIG9sZF90cmVlID0gKGFybV9wcmV2aW91c19mbmRlY2wKKwkJICAg PyBERUNMX0ZVTkNUSU9OX1NQRUNJRklDX1RBUkdFVCAoYXJtX3ByZXZpb3Vz X2ZuZGVjbCkKKwkJICAgOiBOVUxMX1RSRUUpOworCisgIHRyZWUgbmV3X3Ry ZWUgPSBERUNMX0ZVTkNUSU9OX1NQRUNJRklDX1RBUkdFVCAoZm5kZWNsKTsK KworICBhcm1fcHJldmlvdXNfZm5kZWNsID0gZm5kZWNsOworICBpZiAob2xk X3RyZWUgPT0gbmV3X3RyZWUpCisgICAgOworCisgIGVsc2UgaWYgKG5ld190 cmVlKQorICAgIHsKKyAgICAgIGNsX3RhcmdldF9vcHRpb25fcmVzdG9yZSAo Jmdsb2JhbF9vcHRpb25zLAorCQkJCVRSRUVfVEFSR0VUX09QVElPTiAobmV3 X3RyZWUpKTsKKworICAgICAgaWYgKFRSRUVfVEFSR0VUX0dMT0JBTFMgKG5l d190cmVlKSkKKwlyZXN0b3JlX3RhcmdldF9nbG9iYWxzIChUUkVFX1RBUkdF VF9HTE9CQUxTIChuZXdfdHJlZSkpOworICAgICAgZWxzZQorCVRSRUVfVEFS R0VUX0dMT0JBTFMgKG5ld190cmVlKQorCSAgPSBzYXZlX3RhcmdldF9nbG9i YWxzX2RlZmF1bHRfb3B0cyAoKTsKKyAgICB9CisKKyAgZWxzZSBpZiAob2xk X3RyZWUpCisgICAgeworICAgICAgbmV3X3RyZWUgPSB0YXJnZXRfb3B0aW9u X2N1cnJlbnRfbm9kZTsKKworICAgICAgY2xfdGFyZ2V0X29wdGlvbl9yZXN0 b3JlICgmZ2xvYmFsX29wdGlvbnMsCisJCQkJVFJFRV9UQVJHRVRfT1BUSU9O IChuZXdfdHJlZSkpOworICAgICAgaWYgKFRSRUVfVEFSR0VUX0dMT0JBTFMg KG5ld190cmVlKSkKKwlyZXN0b3JlX3RhcmdldF9nbG9iYWxzIChUUkVFX1RB UkdFVF9HTE9CQUxTIChuZXdfdHJlZSkpOworICAgICAgZWxzZSBpZiAobmV3 X3RyZWUgPT0gdGFyZ2V0X29wdGlvbl9kZWZhdWx0X25vZGUpCisJcmVzdG9y ZV90YXJnZXRfZ2xvYmFscyAoJmRlZmF1bHRfdGFyZ2V0X2dsb2JhbHMpOwor ICAgICAgZWxzZQorCVRSRUVfVEFSR0VUX0dMT0JBTFMgKG5ld190cmVlKQor CSAgPSBzYXZlX3RhcmdldF9nbG9iYWxzX2RlZmF1bHRfb3B0cyAoKTsKKyAg ICB9CisKKyAgYXJtX29wdGlvbl9wYXJhbXNfaW50ZXJuYWwgKCZnbG9iYWxf b3B0aW9ucyk7Cit9CisKKy8qIEhvb2sgdG8gZGV0ZXJtaW5lIGlmIG9uZSBm dW5jdGlvbiBjYW4gc2FmZWx5IGlubGluZSBhbm90aGVyLiAgKi8KKworc3Rh dGljIGJvb2wKK2FybV9jYW5faW5saW5lX3AgKHRyZWUgY2FsbGVyIEFUVFJJ QlVURV9VTlVTRUQsIHRyZWUgY2FsbGVlIEFUVFJJQlVURV9VTlVTRUQpCit7 CisgIC8qIE92ZXJpZGRlIGRlZmF1bHQgaG9vazogQWx3YXlzIE9LIHRvIGlu bGluZSBiZXR3ZWVuIGRpZmZlcmVudCBtb2Rlcy4gCisgICAgIEZ1bmN0aW9u IHdpdGggbW9kZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMsIGUuZyB1c2luZyBh c20sIG11c3QgYmUgZXhwbGljaXRlbHkgCisgICAgIHByb3RlY3RlZCB3aXRo IG5vaW5saW5lLiAgKi8KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8qIElubmVy IGZ1bmN0aW9uIHRvIHByb2Nlc3MgdGhlIGF0dHJpYnV0ZSgodGFyZ2V0KC4u LikpKSwgdGFrZSBhbiBhcmd1bWVudCBhbmQKKyAgIHNldCB0aGUgY3VycmVu dCBvcHRpb25zIGZyb20gdGhlIGFyZ3VtZW50LiAgSWYgd2UgaGF2ZSBhIGxp c3QsIHJlY3Vyc2l2ZWx5CisgICBnbyBvdmVyIHRoZSBsaXN0LiAgKi8KKwor c3RhdGljIGJvb2wKK2FybV92YWxpZF90YXJnZXRfYXR0cmlidXRlX3JlYyAo dHJlZSBhcmdzLCAgc3RydWN0IGdjY19vcHRpb25zICpvcHRzKQoreworICBp ZiAoVFJFRV9DT0RFIChhcmdzKSA9PSBUUkVFX0xJU1QpCisgICAgeworICAg ICAgYm9vbCByZXQgPSB0cnVlOworICAgICAgZm9yICg7IGFyZ3M7IGFyZ3Mg PSBUUkVFX0NIQUlOIChhcmdzKSkKKwlpZiAoVFJFRV9WQUxVRSAoYXJncykK KwkgICAgJiYgIWFybV92YWxpZF90YXJnZXRfYXR0cmlidXRlX3JlYyAoVFJF RV9WQUxVRSAoYXJncyksIG9wdHMpKQorCSAgcmV0ID0gZmFsc2U7CisgICAg ICByZXR1cm4gcmV0OworICAgIH0KKworICBlbHNlIGlmIChUUkVFX0NPREUg KGFyZ3MpICE9IFNUUklOR19DU1QpCisgICAgeworICAgICAgZXJyb3IgKCJh dHRyaWJ1dGUgJTx0YXJnZXQlPiBhcmd1bWVudCBub3QgYSBzdHJpbmciKTsK KyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgY2hhciAqYXJnc3Ry ID0gQVNUUkRVUCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoYXJncykpOworICB3 aGlsZSAoYXJnc3RyICYmICphcmdzdHIgIT0gJ1wwJykKKyAgICB7CisgICAg ICB3aGlsZSAoSVNTUEFDRSAoKmFyZ3N0cikpCisJYXJnc3RyKys7CisKKyAg ICAgIGlmICghc3RyY21wIChhcmdzdHIsICJ0aHVtYiIpKQorCXsKKwkgIG9w dHMtPnhfdGFyZ2V0X2ZsYWdzIHw9IE1BU0tfVEhVTUI7CisJICBhcm1fb3B0 aW9uX2NoZWNrX2ludGVybmFsIChvcHRzKTsKKwkgIHJldHVybiB0cnVlOwor CX0KKworICAgICAgaWYgKCFzdHJjbXAgKGFyZ3N0ciwgImFybSIpKQorCXsK KwkgIG9wdHMtPnhfdGFyZ2V0X2ZsYWdzICY9IH5NQVNLX1RIVU1COworCSAg YXJtX29wdGlvbl9jaGVja19pbnRlcm5hbCAob3B0cyk7CisJICByZXR1cm4g dHJ1ZTsKKwl9CisKKyAgICAgIHdhcm5pbmcgKDAsICJhdHRyaWJ1dGUodGFy Z2V0KFwiJXNcIikpIGlzIHVua25vd24iLCBhcmdzdHIpOworICAgICAgcmV0 dXJuIGZhbHNlOworICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKKy8q IFJldHVybiBhIFRBUkdFVF9PUFRJT05fTk9ERSB0cmVlIG9mIHRoZSB0YXJn ZXQgb3B0aW9ucyBsaXN0ZWQgb3IgTlVMTC4gICovCisKK3RyZWUKK2FybV92 YWxpZF90YXJnZXRfYXR0cmlidXRlX3RyZWUgKHRyZWUgYXJncywgc3RydWN0 IGdjY19vcHRpb25zICpvcHRzLAorCQkJCSBzdHJ1Y3QgZ2NjX29wdGlvbnMg Km9wdHNfc2V0KQoreworICBpZiAoIWFybV92YWxpZF90YXJnZXRfYXR0cmli dXRlX3JlYyAoYXJncywgb3B0cykpCisgICAgcmV0dXJuIE5VTExfVFJFRTsK KworICAvKiBEbyBhbnkgb3ZlcnJpZGVzLCBzdWNoIGFzIGdsb2JhbCBvcHRp b25zIGFyY2g9eHh4LiAgKi8KKyAgYXJtX29wdGlvbl9vdmVycmlkZV9pbnRl cm5hbCAob3B0cywgb3B0c19zZXQpOworCisgIHJldHVybiBidWlsZF90YXJn ZXRfb3B0aW9uX25vZGUgKG9wdHMpOworfQorCisvKiBIb29rIHRvIHZhbGlk YXRlIGF0dHJpYnV0ZSgodGFyZ2V0KCJzdHJpbmciKSkpLiAgKi8KKworc3Rh dGljIGJvb2wKK2FybV92YWxpZF90YXJnZXRfYXR0cmlidXRlX3AgKHRyZWUg Zm5kZWNsLCB0cmVlIEFSR19VTlVTRUQgKG5hbWUpLAorCQkJICAgICAgdHJl ZSBhcmdzLCBpbnQgQVJHX1VOVVNFRCAoZmxhZ3MpKQoreworICBib29sIHJl dCA9IHRydWU7CisgIHN0cnVjdCBnY2Nfb3B0aW9ucyBmdW5jX29wdGlvbnM7 CisgIHRyZWUgY3VyX3RyZWUsIG5ld19vcHRpbWl6ZTsKKyAgZ2NjX2Fzc2Vy dCAoKGZuZGVjbCAhPSBOVUxMX1RSRUUpICYmIChhcmdzICE9IE5VTExfVFJF RSkpOworCisgIC8qIEdldCB0aGUgb3B0aW1pemF0aW9uIG9wdGlvbnMgb2Yg dGhlIGN1cnJlbnQgZnVuY3Rpb24uICAqLworICB0cmVlIGZ1bmNfb3B0aW1p emUgPSBERUNMX0ZVTkNUSU9OX1NQRUNJRklDX09QVElNSVpBVElPTiAoZm5k ZWNsKTsKKworICAvKiBJZiB0aGUgZnVuY3Rpb24gY2hhbmdlZCB0aGUgb3B0 aW1pemF0aW9uIGxldmVscyBhcyB3ZWxsIGFzIHNldHRpbmcgdGFyZ2V0Cisg ICAgIG9wdGlvbnMsIHN0YXJ0IHdpdGggdGhlIG9wdGltaXphdGlvbnMgc3Bl Y2lmaWVkLiAgKi8KKyAgaWYgKCFmdW5jX29wdGltaXplKQorICAgIGZ1bmNf b3B0aW1pemUgPSBvcHRpbWl6YXRpb25fZGVmYXVsdF9ub2RlOworCisgIC8q IEluaXQgZnVuY19vcHRpb25zLiAgKi8KKyAgbWVtc2V0ICgmZnVuY19vcHRp b25zLCAwLCBzaXplb2YgKGZ1bmNfb3B0aW9ucykpOworICBpbml0X29wdGlv bnNfc3RydWN0ICgmZnVuY19vcHRpb25zLCBOVUxMKTsKKyAgbGFuZ19ob29r cy5pbml0X29wdGlvbnNfc3RydWN0ICgmZnVuY19vcHRpb25zKTsKKworICAv KiBJbml0aWFsaXplIGZ1bmNfb3B0aW9ucyB0byB0aGUgZGVmYXVsdHMuICAq LworICBjbF9vcHRpbWl6YXRpb25fcmVzdG9yZSAoJmZ1bmNfb3B0aW9ucywK KwkJCSAgIFRSRUVfT1BUSU1JWkFUSU9OIChmdW5jX29wdGltaXplKSk7CisK KyAgY2xfdGFyZ2V0X29wdGlvbl9yZXN0b3JlICgmZnVuY19vcHRpb25zLAor CQkJICAgIFRSRUVfVEFSR0VUX09QVElPTiAodGFyZ2V0X29wdGlvbl9kZWZh dWx0X25vZGUpKTsKKworICAvKiBTZXQgZnVuY19vcHRpb25zIGZsYWdzIHdp dGggbmV3IHRhcmdldCBtb2RlLiAgKi8KKyAgY3VyX3RyZWUgPSBhcm1fdmFs aWRfdGFyZ2V0X2F0dHJpYnV0ZV90cmVlIChhcmdzLCAmZnVuY19vcHRpb25z LAorCQkJCQkgICAgICAmZ2xvYmFsX29wdGlvbnNfc2V0KTsKKworICBpZiAo Y3VyX3RyZWUgPT0gTlVMTF9UUkVFKQorICAgIHJldCA9IGZhbHNlOworCisg IG5ld19vcHRpbWl6ZSA9IGJ1aWxkX29wdGltaXphdGlvbl9ub2RlICgmZnVu Y19vcHRpb25zKTsKKworICBERUNMX0ZVTkNUSU9OX1NQRUNJRklDX1RBUkdF VCAoZm5kZWNsKSA9IGN1cl90cmVlOworCisgIERFQ0xfRlVOQ1RJT05fU1BF Q0lGSUNfT1BUSU1JWkFUSU9OIChmbmRlY2wpID0gbmV3X29wdGltaXplOwor CisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKIGFybV9kZWNsYXJlX2Z1bmN0 aW9uX25hbWUgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqbmFtZSwgdHJl ZSBkZWNsKQogeworICBpZiAoVEFSR0VUX1VOSUZJRURfQVNNKQorICAgIGZw cmludGYgKHN0cmVhbSwgIlx0LnN5bnRheCB1bmlmaWVkXG4iKTsKKyAgZWxz ZQorICAgIGZwcmludGYgKHN0cmVhbSwgIlx0LnN5bnRheCBkaXZpZGVkXG4i KTsKKwogICBpZiAoVEFSR0VUX1RIVU1CKQogICAgIHsKICAgICAgIGlmIChp c19jYWxsZWRfaW5fQVJNX21vZGUgKGRlY2wpCkBAIC0yOTI4Myw2ICsyOTUy NCw4IEBACiAgICAgICBlbHNlCiAJZnByaW50ZiAoc3RyZWFtLCAiXHQudGh1 bWJcblx0LnRodW1iX2Z1bmNcbiIpOwogICAgIH0KKyAgZWxzZQorICAgIGZw cmludGYgKHN0cmVhbSwgIlx0LmFybVxuIik7CiAKICAgaWYgKFRBUkdFVF9Q T0tFX0ZVTkNUSU9OX05BTUUpCiAgICAgYXJtX3Bva2VfZnVuY3Rpb25fbmFt ZSAoc3RyZWFtLCAoY29uc3QgY2hhciAqKSBuYW1lKTsKSW5kZXg6IGdjYy9j b25maWcvYXJtL2FybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdj Yy9jb25maWcvYXJtL2FybS5oCShyZXZpc2lvbiAyMjQzMTMpCisrKyBnY2Mv Y29uZmlnL2FybS9hcm0uaAkocmV2aXNpb24gMjI0MzE0KQpAQCAtMjI1OCw0 ICsyMjU4LDggQEAKIAogI2RlZmluZSBEUklWRVJfU0VMRl9TUEVDUyBNQ1BV X01UVU5FX05BVElWRV9TUEVDUwogI2RlZmluZSBUQVJHRVRfU1VQUE9SVFNf V0lERV9JTlQgMQorCisvKiBGb3Igc3dpdGNoaW5nIGJldHdlZW4gZnVuY3Rp b25zIHdpdGggZGlmZmVyZW50IHRhcmdldCBhdHRyaWJ1dGVzLiAgKi8KKyNk ZWZpbmUgU1dJVENIQUJMRV9UQVJHRVQgMQorCiAjZW5kaWYgLyogISBHQ0Nf QVJNX0ggKi8KSW5kZXg6IGdjYy9jb25maWcvYXJtL2FybS1wcm90b3MuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvY29uZmlnL2FybS9hcm0t cHJvdG9zLmgJKHJldmlzaW9uIDIyNDMxMykKKysrIGdjYy9jb25maWcvYXJt L2FybS1wcm90b3MuaAkocmV2aXNpb24gMjI0MzE0KQpAQCAtMjEwLDYgKzIx MCw5IEBACiBleHRlcm4gaW50IGFybV9kbGxpbXBvcnRfcCAodHJlZSk7CiBl eHRlcm4gdm9pZCBhcm1fbWFya19kbGxleHBvcnQgKHRyZWUpOwogZXh0ZXJu IHZvaWQgYXJtX21hcmtfZGxsaW1wb3J0ICh0cmVlKTsKK2V4dGVybiBib29s IGFybV9jaGFuZ2VfbW9kZV9wICh0cmVlKTsKK2V4dGVybiB0cmVlIGFybV92 YWxpZF90YXJnZXRfYXR0cmlidXRlX3RyZWUgKHRyZWUsIHN0cnVjdCBnY2Nf b3B0aW9ucyAqLAorCQkJCQkgICAgIHN0cnVjdCBnY2Nfb3B0aW9ucyAqKTsK ICNlbmRpZgogCiBleHRlcm4gdm9pZCBhcm1fcHJfbG9uZ19jYWxscyAoc3Ry dWN0IGNwcF9yZWFkZXIgKik7CkBAIC0zMjYsNiArMzI5LDggQEAKIAogZXh0 ZXJuIHZvaWQgYXJtX2VtaXRfZWFiaV9hdHRyaWJ1dGUgKGNvbnN0IGNoYXIg KiwgaW50LCBpbnQpOwogCitleHRlcm4gdm9pZCBhcm1fcmVzZXRfcHJldmlv dXNfZm5kZWNsICh2b2lkKTsKKwogLyogRGVmaW5lZCBpbiBnY2MvY29tbW9u L2NvbmZpZy9hcm0tY29tbW9uLmMuICAqLwogZXh0ZXJuIGNvbnN0IGNoYXIg KmFybV9yZXdyaXRlX3NlbGVjdGVkX2NwdSAoY29uc3QgY2hhciAqbmFtZSk7 CiAKSW5kZXg6IGdjYy9jb25maWcvYXJtL2FybS5vcHQKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL2NvbmZpZy9hcm0vYXJtLm9wdAkocmV2aXNp b24gMjI0MzEzKQorKysgZ2NjL2NvbmZpZy9hcm0vYXJtLm9wdAkocmV2aXNp b24gMjI0MzE0KQpAQCAtMTgyLDcgKzE4Miw3IEBACiBTcGVjaWZ5IHRoZSBt aW5pbXVtIGJpdCBhbGlnbm1lbnQgb2Ygc3RydWN0dXJlcwogCiBtdGh1bWIK LVRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgTWFzayhUSFVNQikKK1Rh cmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgTWFzayhUSFVNQikgU2F2ZQog R2VuZXJhdGUgY29kZSBmb3IgVGh1bWIgc3RhdGUKIAogbXRodW1iLWludGVy d29yawpAQCAtMjQ2LDcgKzI0Niw3IEBACiBPbmx5IGdlbmVyYXRlIGFic29s dXRlIHJlbG9jYXRpb25zIG9uIHdvcmQgc2l6ZWQgdmFsdWVzLgogCiBtcmVz dHJpY3QtaXQKLVRhcmdldCBSZXBvcnQgVmFyKGFybV9yZXN0cmljdF9pdCkg SW5pdCgyKQorVGFyZ2V0IFJlcG9ydCBWYXIoYXJtX3Jlc3RyaWN0X2l0KSBJ bml0KDIpIFNhdmUKIEdlbmVyYXRlIElUIGJsb2NrcyBhcHByb3ByaWF0ZSBm b3IgQVJNdjguCiAKIG1vbGQtcnR4LWNvc3RzCkBAIC0yNzUsNSArMjc1LDUg QEAKIEFzc3VtZSBsb2FkaW5nIGRhdGEgZnJvbSBmbGFzaCBpcyBzbG93ZXIg dGhhbiBmZXRjaGluZyBpbnN0cnVjdGlvbnMuCiAKIG1hc20tc3ludGF4LXVu aWZpZWQKLVRhcmdldCBSZXBvcnQgVmFyKGlubGluZV9hc21fdW5pZmllZCkg SW5pdCgwKQorVGFyZ2V0IFJlcG9ydCBWYXIoaW5saW5lX2FzbV91bmlmaWVk KSBJbml0KDApIFNhdmUKIEFzc3VtZSB1bmlmaWVkIHN5bnRheCBmb3IgVGh1 bWIgaW5saW5lIGFzc2VtYmx5IGNvZGUuCkluZGV4OiBnY2MvY29uZmlnL2Fy bS9hcm0ubWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NvbmZp Zy9hcm0vYXJtLm1kCShyZXZpc2lvbiAyMjQzMTMpCisrKyBnY2MvY29uZmln L2FybS9hcm0ubWQJKHJldmlzaW9uIDIyNDMxNCkKQEAgLTc3ODcsNiArNzc4 NywxMyBAQAogICAgJiYgIWFybV9pc19sb25nX2NhbGxfcCAoU1lNQk9MX1JF Rl9ERUNMIChvcGVyYW5kc1swXSkpIgogICAiKgogICB7CisgICBydHggb3Ag PSBvcGVyYW5kc1swXTsKKworICAgLyogU3dpdGNoIG1vZGUgbm93IHdoZW4g cG9zc2libGUuICAqLworICAgaWYgKFNZTUJPTF9SRUZfREVDTCAob3ApICYm ICFUUkVFX1BVQkxJQyAoU1lNQk9MX1JFRl9ERUNMIChvcCkpCisgICAgICAg ICYmIGFybV9hcmNoNSAmJiBhcm1fY2hhbmdlX21vZGVfcCAoU1lNQk9MX1JF Rl9ERUNMIChvcCkpKQorICAgICAgcmV0dXJuIE5FRURfUExUX1JFTE9DID8g XCJibHglP1xcdCVhMChQTFQpXCIgOiBcImJseCU/XFx0KCVhMClcIjsKKwog ICAgIHJldHVybiBORUVEX1BMVF9SRUxPQyA/IFwiYmwlP1xcdCVhMChQTFQp XCIgOiBcImJsJT9cXHQlYTBcIjsKICAgfSIKICAgWyhzZXRfYXR0ciAidHlw ZSIgImNhbGwiKV0KQEAgLTc4MDQsNiArNzgxMSwxMyBAQAogICAgJiYgIWFy bV9pc19sb25nX2NhbGxfcCAoU1lNQk9MX1JFRl9ERUNMIChvcGVyYW5kc1sx XSkpIgogICAiKgogICB7CisgICBydHggb3AgPSBvcGVyYW5kc1sxXTsKKwor ICAgLyogU3dpdGNoIG1vZGUgbm93IHdoZW4gcG9zc2libGUuICAqLworICAg aWYgKFNZTUJPTF9SRUZfREVDTCAob3ApICYmICFUUkVFX1BVQkxJQyAoU1lN Qk9MX1JFRl9ERUNMIChvcCkpCisgICAgICAgICYmIGFybV9hcmNoNSAmJiBh cm1fY2hhbmdlX21vZGVfcCAoU1lNQk9MX1JFRl9ERUNMIChvcCkpKQorICAg ICAgcmV0dXJuIE5FRURfUExUX1JFTE9DID8gXCJibHglP1xcdCVhMChQTFQp XCIgOiBcImJseCU/XFx0KCVhMClcIjsKKwogICAgIHJldHVybiBORUVEX1BM VF9SRUxPQyA/IFwiYmwlP1xcdCVhMShQTFQpXCIgOiBcImJsJT9cXHQlYTFc IjsKICAgfSIKICAgWyhzZXRfYXR0ciAidHlwZSIgImNhbGwiKV0K --------------060705020004090803050308--