From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11732 invoked by alias); 23 Dec 2014 00:58:11 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 11711 invoked by uid 89); 23 Dec 2014 00:58:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-oi0-f44.google.com Received: from mail-oi0-f44.google.com (HELO mail-oi0-f44.google.com) (209.85.218.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 23 Dec 2014 00:58:07 +0000 Received: by mail-oi0-f44.google.com with SMTP id e131so12030956oig.3; Mon, 22 Dec 2014 16:58:05 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.182.215.136 with SMTP id oi8mr14871728obc.18.1419296285779; Mon, 22 Dec 2014 16:58:05 -0800 (PST) Received: by 10.76.185.7 with HTTP; Mon, 22 Dec 2014 16:58:05 -0800 (PST) In-Reply-To: References: <20140330045552.GX18201@bubble.grove.modra.org> <20140330050615.7DC5774481@topped-with-meat.com> <20140331200446.A09B074430@topped-with-meat.com> <20140331214025.E61517447E@topped-with-meat.com> <20140910225238.0B6362C39CF@topped-with-meat.com> <20141220135811.GA7161@gmail.com> Date: Tue, 23 Dec 2014 00:58:00 -0000 Message-ID: Subject: Re: PATCH: PR gold/14675: No eh_frame info registered in exception_static_test From: "H.J. Lu" To: Cary Coutant Cc: Ian Lance Taylor , Roland McGrath , Alan Modra , "GNU C. Library" , Binutils , =?UTF-8?Q?Rafael_=C3=81vila_de_Esp=C3=ADndola?= Content-Type: multipart/mixed; boundary=001a11c24f28f2028f050ad7aa79 X-IsSubscribed: yes X-SW-Source: 2014-12/txt/msg00237.txt.bz2 --001a11c24f28f2028f050ad7aa79 Content-Type: text/plain; charset=UTF-8 Content-length: 2148 On Mon, Dec 22, 2014 at 2:40 PM, H.J. Lu wrote: > On Mon, Dec 22, 2014 at 9:37 AM, Cary Coutant wrote: >>> Here is an idea. Does it look OK? >> >> I don't like the idea of making a file named "crtbegin" magic, and >> with this patch, any link *without* such a file will no longer >> optimize eh data. >> >> -cary > > How about this? We do this only when there is a crtbeginT file > on command line? > > -- > H.J. > --- > PR gold/14675 > * ehframe.cc (Eh_frame::add_ehframe_input_section): Force the > exception frame section from input files if it can't be > optimized. > (Eh_frame::add_ehframe_input_section<32, false>): Updated. > (Eh_frame::add_ehframe_input_section<32, true>): Likewise. > (Eh_frame::add_ehframe_input_section<64, false>): Likewise. > (Eh_frame::add_ehframe_input_section<64, true>): Likewise. > * ehframe.h (Eh_frame::add_ehframe_input_section): Add a > bool parameter to indicate if the exception frame section > can be optimized. > * layout.cc (Layout::Layout): Initialize has_crtbeginT_ to > has_crtbeginT and optimize_ehframe_ to !has_crtbeginT. > (Layout::layout_eh_frame): Pass this->optimize_ehframe_ to > Eh_frame::add_ehframe_input_section. > (Layout::make_eh_frame_section): Set this->optimize_ehframe_ > to true when processing the crtbeginT file if it is on command > line. > (Layout::match_file_name (const char*, const char*)): New. > (Layout::match_file_name(const Relobj*, const char*): Use it. > * layout.h (Layout::Layout): Add has_crtbeginT. > (Layout::match_file_name (const char*, const char*)): New. > (Layout): Add has_crtbeginT_ and optimize_ehframe_ members. > * main.cc (main): Update layout. > * options.cc (Input_arguments::add_file): Set > this->has_crtbeginT_ to true if there is a crtbeginT file. > * options.h (Input_arguments::Input_arguments): Initialize > has_crtbeginT_. > (Input_arguments::has_crtbeginT): New function. > (Input_arguments::has_crtbeginT_): New bool member. > (Command_line::crtbeginT): New function. Slightly updated patch. We don't need to add a has_crtbeginT_ member to Layout. optimize_ehframe_ is sufficient. -- H.J. --001a11c24f28f2028f050ad7aa79 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Treat-.eh_frame-section-before-crtbeginT-as-normal-i.patch" Content-Disposition: attachment; filename="0001-Treat-.eh_frame-section-before-crtbeginT-as-normal-i.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i40kbx181 Content-length: 20785 RnJvbSBjYWRlM2M2Njk5MzMyNzhkNzhkNWE4OTAwNDU4MzI0YWFkZDY4YjE0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjAgRGVjIDIwMTQgMDU6 NDU6NTEgLTA4MDAKU3ViamVjdDogW1BBVENIXSBUcmVhdCAuZWhfZnJhbWUg c2VjdGlvbiBiZWZvcmUgY3J0YmVnaW5UIGFzIG5vcm1hbCBpbnB1dAoKRm9y Y2UgdGhlIGV4Y2VwdGlvbiBmcmFtZSBzZWN0aW9uIGZyb20gaW5wdXQgZmls ZXMgYmVmb3JlIHRoZSBjcnRiZWdpblQKZmlsZSB0byBiZSBoYW5kbGVkIGFz IGFuIG9yZGluYXJ5IGlucHV0IHNlY3Rpb24gaWYgd2UgYXJlbid0IGNyZWF0 aW5nCnRoZSBleGNlcHRpb24gZnJhbWUgaGVhZGVyLiAgSWYgd2UgZG9uJ3Qg ZG8gdGhpcywgd2Ugd29uJ3QgY29ycmVjdGx5CmhhbmRsZSB0aGUgc3BlY2lh bCBtYXJrZXIgc3ltYm9sIGluIHRoZSBleGNlcHRpb24gZnJhbWUgc2VjdGlv biBpbiB0aGUKY3J0YmVnaW5UIGZpbGUuCgoJUFIgZ29sZC8xNDY3NQoJKiBl aGZyYW1lLmNjIChFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlv bik6IEZvcmNlIHRoZQoJZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24gZnJvbSBp bnB1dCBmaWxlcyBpZiBpdCBjYW4ndCBiZQoJb3B0aW1pemVkLgoJKEVoX2Zy YW1lOjphZGRfZWhmcmFtZV9pbnB1dF9zZWN0aW9uPDMyLCBmYWxzZT4pOiBV cGRhdGVkLgoJKEVoX2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1dF9zZWN0aW9u PDMyLCB0cnVlPik6IExpa2V3aXNlLgoJKEVoX2ZyYW1lOjphZGRfZWhmcmFt ZV9pbnB1dF9zZWN0aW9uPDY0LCBmYWxzZT4pOiBMaWtld2lzZS4KCShFaF9m cmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbjw2NCwgdHJ1ZT4pOiBM aWtld2lzZS4KCSogZWhmcmFtZS5oIChFaF9mcmFtZTo6YWRkX2VoZnJhbWVf aW5wdXRfc2VjdGlvbik6IEFkZCBhCglib29sIHBhcmFtZXRlciB0byBpbmRp Y2F0ZSBpZiB0aGUgZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24KCWNhbiBiZSBv cHRpbWl6ZWQuCgkqIGxheW91dC5jYyAoTGF5b3V0OjpMYXlvdXQpOiBJbml0 aWFsaXplIG9wdGltaXplX2VoZnJhbWVfIHRvCgkhaGFzX2NydGJlZ2luVC4K CShMYXlvdXQ6OmxheW91dF9laF9mcmFtZSk6IFBhc3MgdGhpcy0+b3B0aW1p emVfZWhmcmFtZV8gdG8KCUVoX2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1dF9z ZWN0aW9uLgoJKExheW91dDo6bWFrZV9laF9mcmFtZV9zZWN0aW9uKTogU2V0 IHRoaXMtPm9wdGltaXplX2VoZnJhbWVfCgl0byB0cnVlIHdoZW4gcHJvY2Vz c2luZyB0aGUgY3J0YmVnaW5UIGZpbGUgaWYgaXQgaXMgb24gY29tbWFuZAoJ bGluZS4KCShMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZSAoY29uc3QgY2hhcios IGNvbnN0IGNoYXIqKSk6IE5ldy4KCShMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFt ZShjb25zdCBSZWxvYmoqLCBjb25zdCBjaGFyKik6IFVzZSBpdC4KCSogbGF5 b3V0LmggKExheW91dDo6TGF5b3V0KTogQWRkIGhhc19jcnRiZWdpblQuCgko TGF5b3V0OjptYXRjaF9maWxlX25hbWUgKGNvbnN0IGNoYXIqLCBjb25zdCBj aGFyKikpOiBOZXcuCgkoTGF5b3V0KTogQWRkIGFuIG9wdGltaXplX2VoZnJh bWVfIG1lbWJlci4KCSogbWFpbi5jYyAobWFpbik6IFVwZGF0ZSBsYXlvdXQu CgkqIG9wdGlvbnMuY2M6IEluY2x1ZGUgImxheW91dC5oIi4KCShJbnB1dF9h cmd1bWVudHM6OmFkZF9maWxlKTogU2V0IHRoaXMtPmhhc19jcnRiZWdpblRf IHRvIHRydWUKCWlmIHRoZXJlIGlzIGEgY3J0YmVnaW5UIGZpbGUuCgkqIG9w dGlvbnMuaCAoSW5wdXRfYXJndW1lbnRzOjpJbnB1dF9hcmd1bWVudHMpOiBJ bml0aWFsaXplCgloYXNfY3J0YmVnaW5UXyB0byBmYWxzZS4KCShJbnB1dF9h cmd1bWVudHM6Omhhc19jcnRiZWdpblQpOiBOZXcgZnVuY3Rpb24uCgkoSW5w dXRfYXJndW1lbnRzOjpoYXNfY3J0YmVnaW5UXyk6IE5ldyBib29sIG1lbWJl ci4KCShDb21tYW5kX2xpbmU6OmNydGJlZ2luVCk6IE5ldyBmdW5jdGlvbi4K LS0tCiBnb2xkL0NoYW5nZUxvZyAgfCAzNSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZ29sZC9laGZyYW1lLmNjIHwgMzEgKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLQogZ29sZC9laGZyYW1lLmggIHwg IDYgKysrKy0tCiBnb2xkL2xheW91dC5jYyAgfCAzNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tCiBnb2xkL2xheW91dC5oICAgfCAx MCArKysrKysrKystCiBnb2xkL21haW4uY2MgICAgfCAgMyArKy0KIGdvbGQv b3B0aW9ucy5jYyB8ICA0ICsrKysKIGdvbGQvb3B0aW9ucy5oICB8IDE1ICsr KysrKysrKysrKysrLQogOCBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9u cygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ29sZC9DaGFu Z2VMb2cgYi9nb2xkL0NoYW5nZUxvZwppbmRleCA0NTdmYTZiLi5lZTU2Yjk4 IDEwMDY0NAotLS0gYS9nb2xkL0NoYW5nZUxvZworKysgYi9nb2xkL0NoYW5n ZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTEyLTIyICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwlQUiBnb2xkLzE0Njc1CisJKiBl aGZyYW1lLmNjIChFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlv bik6IEZvcmNlIHRoZQorCWV4Y2VwdGlvbiBmcmFtZSBzZWN0aW9uIGZyb20g aW5wdXQgZmlsZXMgaWYgaXQgY2FuJ3QgYmUKKwlvcHRpbWl6ZWQuCisJKEVo X2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1dF9zZWN0aW9uPDMyLCBmYWxzZT4p OiBVcGRhdGVkLgorCShFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2Vj dGlvbjwzMiwgdHJ1ZT4pOiBMaWtld2lzZS4KKwkoRWhfZnJhbWU6OmFkZF9l aGZyYW1lX2lucHV0X3NlY3Rpb248NjQsIGZhbHNlPik6IExpa2V3aXNlLgor CShFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbjw2NCwgdHJ1 ZT4pOiBMaWtld2lzZS4KKwkqIGVoZnJhbWUuaCAoRWhfZnJhbWU6OmFkZF9l aGZyYW1lX2lucHV0X3NlY3Rpb24pOiBBZGQgYQorCWJvb2wgcGFyYW1ldGVy IHRvIGluZGljYXRlIGlmIHRoZSBleGNlcHRpb24gZnJhbWUgc2VjdGlvbgor CWNhbiBiZSBvcHRpbWl6ZWQuCisJKiBsYXlvdXQuY2MgKExheW91dDo6TGF5 b3V0KTogSW5pdGlhbGl6ZSBvcHRpbWl6ZV9laGZyYW1lXyB0bworCSFoYXNf Y3J0YmVnaW5ULgorCShMYXlvdXQ6OmxheW91dF9laF9mcmFtZSk6IFBhc3Mg dGhpcy0+b3B0aW1pemVfZWhmcmFtZV8gdG8KKwlFaF9mcmFtZTo6YWRkX2Vo ZnJhbWVfaW5wdXRfc2VjdGlvbi4KKwkoTGF5b3V0OjptYWtlX2VoX2ZyYW1l X3NlY3Rpb24pOiBTZXQgdGhpcy0+b3B0aW1pemVfZWhmcmFtZV8KKwl0byB0 cnVlIHdoZW4gcHJvY2Vzc2luZyB0aGUgY3J0YmVnaW5UIGZpbGUgaWYgaXQg aXMgb24gY29tbWFuZAorCWxpbmUuCisJKExheW91dDo6bWF0Y2hfZmlsZV9u YW1lIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopKTogTmV3LgorCShMYXlv dXQ6Om1hdGNoX2ZpbGVfbmFtZShjb25zdCBSZWxvYmoqLCBjb25zdCBjaGFy Kik6IFVzZSBpdC4KKwkqIGxheW91dC5oIChMYXlvdXQ6OkxheW91dCk6IEFk ZCBoYXNfY3J0YmVnaW5ULgorCShMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZSAo Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSk6IE5ldy4KKwkoTGF5b3V0KTog QWRkIGFuIG9wdGltaXplX2VoZnJhbWVfIG1lbWJlci4KKwkqIG1haW4uY2Mg KG1haW4pOiBVcGRhdGUgbGF5b3V0LgorCSogb3B0aW9ucy5jYzogSW5jbHVk ZSAibGF5b3V0LmgiLgorCShJbnB1dF9hcmd1bWVudHM6OmFkZF9maWxlKTog U2V0IHRoaXMtPmhhc19jcnRiZWdpblRfIHRvIHRydWUKKwlpZiB0aGVyZSBp cyBhIGNydGJlZ2luVCBmaWxlLgorCSogb3B0aW9ucy5oIChJbnB1dF9hcmd1 bWVudHM6OklucHV0X2FyZ3VtZW50cyk6IEluaXRpYWxpemUKKwloYXNfY3J0 YmVnaW5UXyB0byBmYWxzZS4KKwkoSW5wdXRfYXJndW1lbnRzOjpoYXNfY3J0 YmVnaW5UKTogTmV3IGZ1bmN0aW9uLgorCShJbnB1dF9hcmd1bWVudHM6Omhh c19jcnRiZWdpblRfKTogTmV3IGJvb2wgbWVtYmVyLgorCShDb21tYW5kX2xp bmU6OmNydGJlZ2luVCk6IE5ldyBmdW5jdGlvbi4KKwogMjAxNC0xMi0yMiAg Q2FyeSBDb3V0YW50ICA8Y2NvdXRhbnRAZ29vZ2xlLmNvbT4KIAogCSogcG93 ZXJwYy5jYyAoVGFyZ2V0X3Bvd2VycGM6OnJlbG9jYXRlKTogRml4IG92ZXJm bG93IGNoZWNrLgpkaWZmIC0tZ2l0IGEvZ29sZC9laGZyYW1lLmNjIGIvZ29s ZC9laGZyYW1lLmNjCmluZGV4IGM3MTFiYWMuLmNlMzc0MWIgMTAwNjQ0Ci0t LSBhL2dvbGQvZWhmcmFtZS5jYworKysgYi9nb2xkL2VoZnJhbWUuY2MKQEAg LTU3Niw3ICs1NzYsOCBAQCBFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRf c2VjdGlvbigKICAgICBzZWN0aW9uX3NpemVfdHlwZSBzeW1ib2xfbmFtZXNf c2l6ZSwKICAgICB1bnNpZ25lZCBpbnQgc2huZHgsCiAgICAgdW5zaWduZWQg aW50IHJlbG9jX3NobmR4LAotICAgIHVuc2lnbmVkIGludCByZWxvY190eXBl KQorICAgIHVuc2lnbmVkIGludCByZWxvY190eXBlLAorICAgIGJvb2wgb3B0 aW1pemVfZWhmcmFtZSkKIHsKICAgLy8gR2V0IHRoZSBzZWN0aW9uIGNvbnRl bnRzLgogICBzZWN0aW9uX3NpemVfdHlwZSBjb250ZW50c19sZW47CkBAIC01 OTUsMTUgKzU5NiwyMSBAQCBFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRf c2VjdGlvbigKICAgICByZXR1cm4gZmFsc2U7CiAKICAgTmV3X2NpZXMgbmV3 X2NpZXM7Ci0gIGlmICghdGhpcy0+ZG9fYWRkX2VoZnJhbWVfaW5wdXRfc2Vj dGlvbihvYmplY3QsIHN5bWJvbHMsIHN5bWJvbHNfc2l6ZSwKKyAgYm9vbCBy ZWNvZ25pemVkX2VoX2ZyYW1lX3NlY3Rpb24KKyAgICA9IHRoaXMtPmRvX2Fk ZF9laGZyYW1lX2lucHV0X3NlY3Rpb24ob2JqZWN0LCBzeW1ib2xzLCBzeW1i b2xzX3NpemUsCiAJCQkJCSAgc3ltYm9sX25hbWVzLCBzeW1ib2xfbmFtZXNf c2l6ZSwKIAkJCQkJICBzaG5keCwgcmVsb2Nfc2huZHgsCiAJCQkJCSAgcmVs b2NfdHlwZSwgcGNvbnRlbnRzLAotCQkJCQkgIGNvbnRlbnRzX2xlbiwgJm5l d19jaWVzKSkKKwkJCQkJICBjb250ZW50c19sZW4sICZuZXdfY2llcyk7Cisg IGlmICghcmVjb2duaXplZF9laF9mcmFtZV9zZWN0aW9uICYmIHRoaXMtPmVo X2ZyYW1lX2hkcl8gIT0gTlVMTCkKKyAgICB0aGlzLT5laF9mcmFtZV9oZHJf LT5mb3VuZF91bnJlY29nbml6ZWRfZWhfZnJhbWVfc2VjdGlvbigpOworCisg IC8vIElmIHdlIGRvbid0IHVucmVjb2duaXplIHRoZSBleGNlcHRpb24gZnJh bWUgc2VjdGlvbiBvciBpdCBjYW4ndAorICAvLyBiZSBvcHRpbWl6ZWQsIHRo ZW4gcmV0dXJuIGZhbHNlIHRvIGZvcmNlIGl0IHRvIGJlIGhhbmRsZWQgYXMg YW4KKyAgLy8gb3JkaW5hcnkgaW5wdXQgc2VjdGlvbi4KKyAgaWYgKCFyZWNv Z25pemVkX2VoX2ZyYW1lX3NlY3Rpb24KKyAgICAgIHx8ICh0aGlzLT5laF9m cmFtZV9oZHJfID09IE5VTEwgJiYgIW9wdGltaXplX2VoZnJhbWUpKQogICAg IHsKLSAgICAgIGlmICh0aGlzLT5laF9mcmFtZV9oZHJfICE9IE5VTEwpCi0J dGhpcy0+ZWhfZnJhbWVfaGRyXy0+Zm91bmRfdW5yZWNvZ25pemVkX2VoX2Zy YW1lX3NlY3Rpb24oKTsKLQogICAgICAgZm9yIChOZXdfY2llczo6aXRlcmF0 b3IgcCA9IG5ld19jaWVzLmJlZ2luKCk7CiAJICAgcCAhPSBuZXdfY2llcy5l bmQoKTsKIAkgICArK3ApCkBAIC0xMjI0LDcgKzEyMzEsOCBAQCBFaF9mcmFt ZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbjwzMiwgZmFsc2U+KAogICAg IHNlY3Rpb25fc2l6ZV90eXBlIHN5bWJvbF9uYW1lc19zaXplLAogICAgIHVu c2lnbmVkIGludCBzaG5keCwKICAgICB1bnNpZ25lZCBpbnQgcmVsb2Nfc2hu ZHgsCi0gICAgdW5zaWduZWQgaW50IHJlbG9jX3R5cGUpOworICAgIHVuc2ln bmVkIGludCByZWxvY190eXBlLAorICAgIGJvb2wgb3B0aW1pemVfZWhmcmFt ZSk7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfVEFSR0VUXzMyX0JJRwpAQCAt MTIzOCw3ICsxMjQ2LDggQEAgRWhfZnJhbWU6OmFkZF9laGZyYW1lX2lucHV0 X3NlY3Rpb248MzIsIHRydWU+KAogICAgIHNlY3Rpb25fc2l6ZV90eXBlIHN5 bWJvbF9uYW1lc19zaXplLAogICAgIHVuc2lnbmVkIGludCBzaG5keCwKICAg ICB1bnNpZ25lZCBpbnQgcmVsb2Nfc2huZHgsCi0gICAgdW5zaWduZWQgaW50 IHJlbG9jX3R5cGUpOworICAgIHVuc2lnbmVkIGludCByZWxvY190eXBlLAor ICAgIGJvb2wgb3B0aW1pemVfZWhmcmFtZSk7CiAjZW5kaWYKIAogI2lmZGVm IEhBVkVfVEFSR0VUXzY0X0xJVFRMRQpAQCAtMTI1Miw3ICsxMjYxLDggQEAg RWhfZnJhbWU6OmFkZF9laGZyYW1lX2lucHV0X3NlY3Rpb248NjQsIGZhbHNl PigKICAgICBzZWN0aW9uX3NpemVfdHlwZSBzeW1ib2xfbmFtZXNfc2l6ZSwK ICAgICB1bnNpZ25lZCBpbnQgc2huZHgsCiAgICAgdW5zaWduZWQgaW50IHJl bG9jX3NobmR4LAotICAgIHVuc2lnbmVkIGludCByZWxvY190eXBlKTsKKyAg ICB1bnNpZ25lZCBpbnQgcmVsb2NfdHlwZSwKKyAgICBib29sIG9wdGltaXpl X2VoZnJhbWUpOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1RBUkdFVF82NF9C SUcKQEAgLTEyNjYsNyArMTI3Niw4IEBAIEVoX2ZyYW1lOjphZGRfZWhmcmFt ZV9pbnB1dF9zZWN0aW9uPDY0LCB0cnVlPigKICAgICBzZWN0aW9uX3NpemVf dHlwZSBzeW1ib2xfbmFtZXNfc2l6ZSwKICAgICB1bnNpZ25lZCBpbnQgc2hu ZHgsCiAgICAgdW5zaWduZWQgaW50IHJlbG9jX3NobmR4LAotICAgIHVuc2ln bmVkIGludCByZWxvY190eXBlKTsKKyAgICB1bnNpZ25lZCBpbnQgcmVsb2Nf dHlwZSwKKyAgICBib29sIG9wdGltaXplX2VoZnJhbWUpOwogI2VuZGlmCiAK IH0gLy8gRW5kIG5hbWVzcGFjZSBnb2xkLgpkaWZmIC0tZ2l0IGEvZ29sZC9l aGZyYW1lLmggYi9nb2xkL2VoZnJhbWUuaAppbmRleCAyYWUxMmUwLi45M2Y3 MjY4IDEwMDY0NAotLS0gYS9nb2xkL2VoZnJhbWUuaAorKysgYi9nb2xkL2Vo ZnJhbWUuaApAQCAtMzcxLDcgKzM3MSw4IEBAIGNsYXNzIEVoX2ZyYW1lIDog cHVibGljIE91dHB1dF9zZWN0aW9uX2RhdGEKICAgLy8gaXMgdGhlIHJlbG9j YXRpb24gc2VjdGlvbiBpZiBhbnkgKDAgZm9yIG5vbmUsIC0xVSBmb3IgbXVs dGlwbGUpLgogICAvLyBSRUxPQ19UWVBFIGlzIHRoZSB0eXBlIG9mIHRoZSBy ZWxvY2F0aW9uIHNlY3Rpb24gaWYgYW55LiAgVGhpcwogICAvLyByZXR1cm5z IHdoZXRoZXIgdGhlIHNlY3Rpb24gd2FzIGluY29ycG9yYXRlZCBpbnRvIHRo ZSAuZWhfZnJhbWUKLSAgLy8gZGF0YS4KKyAgLy8gZGF0YS4gIE9QVElNSVpF X0VIRlJBTUUgaXMgdHJ1ZSBpZiB0aGUgZXhjZXB0aW9uIGZyYW1lIHNlY3Rp b24KKyAgLy8gY2FuIGJlIG9wdGltaXplZC4KICAgdGVtcGxhdGU8aW50IHNp emUsIGJvb2wgYmlnX2VuZGlhbj4KICAgYm9vbAogICBhZGRfZWhmcmFtZV9p bnB1dF9zZWN0aW9uKFNpemVkX3JlbG9ial9maWxlPHNpemUsIGJpZ19lbmRp YW4+KiBvYmplY3QsCkBAIC0zODAsNyArMzgxLDggQEAgY2xhc3MgRWhfZnJh bWUgOiBwdWJsaWMgT3V0cHV0X3NlY3Rpb25fZGF0YQogCQkJICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIqIHN5bWJvbF9uYW1lcywKIAkJCSAgICBzZWN0aW9u X3NpemVfdHlwZSBzeW1ib2xfbmFtZXNfc2l6ZSwKIAkJCSAgICB1bnNpZ25l ZCBpbnQgc2huZHgsIHVuc2lnbmVkIGludCByZWxvY19zaG5keCwKLQkJCSAg ICB1bnNpZ25lZCBpbnQgcmVsb2NfdHlwZSk7CisJCQkgICAgdW5zaWduZWQg aW50IHJlbG9jX3R5cGUsCisJCQkgICAgYm9vbCBvcHRpbWl6ZV9laGZyYW1l KTsKIAogICAvLyBBZGQgYSBDSUUgYW5kIGFuIEZERSBmb3IgYSBQTFQgc2Vj dGlvbiwgdG8gcGVybWl0IHVud2luZGluZwogICAvLyB0aHJvdWdoIGEgUExU LiAgVGhlIEZERSBkYXRhIHNob3VsZCBzdGFydCB3aXRoIDggYnl0ZXMgb2Yg emVybywKZGlmZiAtLWdpdCBhL2dvbGQvbGF5b3V0LmNjIGIvZ29sZC9sYXlv dXQuY2MKaW5kZXggMGE3MWEyYS4uYTcyM2QwMyAxMDA2NDQKLS0tIGEvZ29s ZC9sYXlvdXQuY2MKKysrIGIvZ29sZC9sYXlvdXQuY2MKQEAgLTQxOCw3ICs0 MTgsOCBAQCBMYXlvdXRfdGFza19ydW5uZXI6OnJ1bihXb3JrcXVldWUqIHdv cmtxdWV1ZSwgY29uc3QgVGFzayogdGFzaykKIAogLy8gTGF5b3V0IG1ldGhv ZHMuCiAKLUxheW91dDo6TGF5b3V0KGludCBudW1iZXJfb2ZfaW5wdXRfZmls ZXMsIFNjcmlwdF9vcHRpb25zKiBzY3JpcHRfb3B0aW9ucykKK0xheW91dDo6 TGF5b3V0KGludCBudW1iZXJfb2ZfaW5wdXRfZmlsZXMsIFNjcmlwdF9vcHRp b25zKiBzY3JpcHRfb3B0aW9ucywKKwkgICAgICAgYm9vbCBoYXNfY3J0YmVn aW5UKQogICA6IG51bWJlcl9vZl9pbnB1dF9maWxlc18obnVtYmVyX29mX2lu cHV0X2ZpbGVzKSwKICAgICBzY3JpcHRfb3B0aW9uc18oc2NyaXB0X29wdGlv bnMpLAogICAgIG5hbWVwb29sXygpLApAQCAtNDY5LDYgKzQ3MCw3IEBAIExh eW91dDo6TGF5b3V0KGludCBudW1iZXJfb2ZfaW5wdXRfZmlsZXMsIFNjcmlw dF9vcHRpb25zKiBzY3JpcHRfb3B0aW9ucykKICAgICB1bmlxdWVfc2VnbWVu dF9mb3Jfc2VjdGlvbnNfc3BlY2lmaWVkXyhmYWxzZSksCiAgICAgaW5jcmVt ZW50YWxfaW5wdXRzXyhOVUxMKSwKICAgICByZWNvcmRfb3V0cHV0X3NlY3Rp b25fZGF0YV9mcm9tX3NjcmlwdF8oZmFsc2UpLAorICAgIG9wdGltaXplX2Vo ZnJhbWVfKCFoYXNfY3J0YmVnaW5UKSwKICAgICBzY3JpcHRfb3V0cHV0X3Nl Y3Rpb25fZGF0YV9saXN0XygpLAogICAgIHNlZ21lbnRfc3RhdGVzXyhOVUxM KSwKICAgICByZWxheGF0aW9uX2RlYnVnX2NoZWNrXyhOVUxMKSwKQEAgLTE0 MjgsNyArMTQzMCw4IEBAIExheW91dDo6bGF5b3V0X2VoX2ZyYW1lKFNpemVk X3JlbG9ial9maWxlPHNpemUsIGJpZ19lbmRpYW4+KiBvYmplY3QsCiAJCQkJ CQkJIHN5bWJvbF9uYW1lc19zaXplLAogCQkJCQkJCSBzaG5keCwKIAkJCQkJ CQkgcmVsb2Nfc2huZHgsCi0JCQkJCQkJIHJlbG9jX3R5cGUpKQorCQkJCQkJ CSByZWxvY190eXBlLAorCQkJCQkJCSB0aGlzLT5vcHRpbWl6ZV9laGZyYW1l XykpCiAgICAgewogICAgICAgb3MtPnVwZGF0ZV9mbGFnc19mb3JfaW5wdXRf c2VjdGlvbihzaGRyLmdldF9zaF9mbGFncygpKTsKIApAQCAtMTQ4NSw2ICsx NDg4LDE0IEBAIExheW91dDo6bWFrZV9laF9mcmFtZV9zZWN0aW9uKGNvbnN0 IFJlbG9iaiogb2JqZWN0KQogICBpZiAob3MgPT0gTlVMTCkKICAgICByZXR1 cm4gTlVMTDsKIAorICAvLyBvcHRpbWl6ZV9laGZyYW1lXyBpcyBmYWxzZSBv bmx5IGlmIHRoZXJlIGlzIGEgY3J0YmVnaW5UIGZpbGUgb24KKyAgLy8gY29t bWFuZCBsaW5lLiAgV2UgY2FuJ3Qgb3B0aW1pemUgdGhlIGV4Y2VwdGlvbiBm cmFtZSBzZWN0aW9uCisgIC8vIHVudGlsIHdlIGhhdmUgc2VlbiB0aGUgY3J0 YmVnaW5UIGZpbGUuCisgIGlmICghdGhpcy0+b3B0aW1pemVfZWhmcmFtZV8K KyAgICAgICYmIG9iamVjdCAhPSBOVUxMCisgICAgICAmJiBMYXlvdXQ6Om1h dGNoX2ZpbGVfbmFtZShvYmplY3QsICJjcnRiZWdpblQiKSkKKyAgICB0aGlz LT5vcHRpbWl6ZV9laGZyYW1lXyA9IHRydWU7CisKICAgaWYgKHRoaXMtPmVo X2ZyYW1lX3NlY3Rpb25fID09IE5VTEwpCiAgICAgewogICAgICAgdGhpcy0+ ZWhfZnJhbWVfc2VjdGlvbl8gPSBvczsKQEAgLTUwOTIsMTkgKzUxMDMsMTgg QEAgTGF5b3V0OjpvdXRwdXRfc2VjdGlvbl9uYW1lKGNvbnN0IFJlbG9iaiog cmVsb2JqLCBjb25zdCBjaGFyKiBuYW1lLAogICByZXR1cm4gbmFtZTsKIH0K IAotLy8gUmV0dXJuIHRydWUgaWYgUkVMT0JKIGlzIGFuIGlucHV0IGZpbGUg d2hvc2UgYmFzZSBuYW1lIG1hdGNoZXMKLS8vIEZJTEVfTkFNRS4gIFRoZSBi YXNlIG5hbWUgbXVzdCBoYXZlIGFuIGV4dGVuc2lvbiBvZiAiLm8iLCBhbmQg bXVzdAotLy8gYmUgZXhhY3RseSBGSUxFX05BTUUubyBvciBGSUxFX05BTUUs IG9uZSBjaGFyYWN0ZXIsICIubyIuICBUaGlzIGlzCisvLyBSZXR1cm4gdHJ1 ZSBpZiBGSUxFIGlzIGFuIGlucHV0IGZpbGUgd2hvc2UgYmFzZSBuYW1lIG1h dGNoZXMKKy8vIE1BVENILiAgVGhlIGJhc2UgbmFtZSBtdXN0IGhhdmUgYW4g ZXh0ZW5zaW9uIG9mICIubyIsIGFuZCBtdXN0CisvLyBiZSBleGFjdGx5IE1B VENILm8gb3IgTUFUQ0gsIG9uZSBjaGFyYWN0ZXIsICIubyIuICBUaGlzIGlz CiAvLyB0byBtYXRjaCBjcnRiZWdpbi5vIGFzIHdlbGwgYXMgY3J0YmVnaW5T Lm8gd2l0aG91dCBnZXR0aW5nIGNvbmZ1c2VkCiAvLyBieSBvdGhlciBwb3Nz aWJpbGl0aWVzLiAgT3ZlcmFsbCBtYXRjaGluZyB0aGUgZmlsZSBuYW1lIHRo aXMgd2F5IGlzCiAvLyBhIGRyZWFkZnVsIGhhY2ssIGJ1dCB0aGUgR05VIGxp bmtlciBkb2VzIGl0IGluIG9yZGVyIHRvIGJldHRlcgogLy8gc3VwcG9ydCBn Y2MsIGFuZCB3ZSBuZWVkIHRvIGJlIGNvbXBhdGlibGUuCiAKIGJvb2wKLUxh eW91dDo6bWF0Y2hfZmlsZV9uYW1lKGNvbnN0IFJlbG9iaiogcmVsb2JqLCBj b25zdCBjaGFyKiBtYXRjaCkKK0xheW91dDo6bWF0Y2hfZmlsZV9uYW1lKGNv bnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIG1hdGNoKQogewotICBjb25z dCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1lKHJlbG9iai0+bmFtZSgpKTsKLSAg Y29uc3QgY2hhciogYmFzZV9uYW1lID0gbGJhc2VuYW1lKGZpbGVfbmFtZS5j X3N0cigpKTsKKyAgY29uc3QgY2hhciogYmFzZV9uYW1lID0gbGJhc2VuYW1l KGZpbGUpOwogICBzaXplX3QgbWF0Y2hfbGVuID0gc3RybGVuKG1hdGNoKTsK ICAgaWYgKHN0cm5jbXAoYmFzZV9uYW1lLCBtYXRjaCwgbWF0Y2hfbGVuKSAh PSAwKQogICAgIHJldHVybiBmYWxzZTsKQEAgLTUxMTQsNiArNTEyNCwxNyBA QCBMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZShjb25zdCBSZWxvYmoqIHJlbG9i aiwgY29uc3QgY2hhciogbWF0Y2gpCiAgIHJldHVybiBtZW1jbXAoYmFzZV9u YW1lICsgYmFzZV9sZW4gLSAyLCAiLm8iLCAyKSA9PSAwOwogfQogCisvLyBS ZXR1cm4gdHJ1ZSBpZiBGSUxFIGlzIGFuIGlucHV0IGZpbGUgd2hvc2UgYmFz ZSBuYW1lIG1hdGNoZXMKKy8vIE1BVENILiAgVGhlIGJhc2UgbmFtZSBtdXN0 IGhhdmUgYW4gZXh0ZW5zaW9uIG9mICIubyIsIGFuZCBtdXN0CisvLyBiZSBl eGFjdGx5IE1BVENILm8gb3IgTUFUQ0gsIG9uZSBjaGFyYWN0ZXIsICIubyIu CisKK2Jvb2wKK0xheW91dDo6bWF0Y2hfZmlsZV9uYW1lKGNvbnN0IFJlbG9i aiogcmVsb2JqLCBjb25zdCBjaGFyKiBtYXRjaCkKK3sKKyAgY29uc3Qgc3Rk OjpzdHJpbmcmIGZpbGVfbmFtZShyZWxvYmotPm5hbWUoKSk7CisgIHJldHVy biBMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZShmaWxlX25hbWUuY19zdHIoKSwg bWF0Y2gpOworfQorCiAvLyBDaGVjayBpZiBhIGNvbWRhdCBncm91cCBvciAu Z251LmxpbmtvbmNlIHNlY3Rpb24gd2l0aCB0aGUgZ2l2ZW4KIC8vIE5BTUUg aXMgc2VsZWN0ZWQgZm9yIHRoZSBsaW5rLiAgSWYgdGhlcmUgaXMgYWxyZWFk eSBhIHNlY3Rpb24sCiAvLyAqS0VQVF9TRUNUSU9OIGlzIHNldCB0byBwb2lu dCB0byB0aGUgZXhpc3Rpbmcgc2VjdGlvbiBhbmQgdGhlCmRpZmYgLS1naXQg YS9nb2xkL2xheW91dC5oIGIvZ29sZC9sYXlvdXQuaAppbmRleCAwMzJmNWYz Li4zMTcyNGEyIDEwMDY0NAotLS0gYS9nb2xkL2xheW91dC5oCisrKyBiL2dv bGQvbGF5b3V0LmgKQEAgLTQ4OCw3ICs0ODgsNyBAQCBlbnVtIE91dHB1dF9z ZWN0aW9uX29yZGVyCiBjbGFzcyBMYXlvdXQKIHsKICBwdWJsaWM6Ci0gIExh eW91dChpbnQgbnVtYmVyX29mX2lucHV0X2ZpbGVzLCBTY3JpcHRfb3B0aW9u cyopOworICBMYXlvdXQoaW50IG51bWJlcl9vZl9pbnB1dF9maWxlcywgU2Ny aXB0X29wdGlvbnMqLCBib29sIGhhc19jcnRiZWdpblQpOwogCiAgIH5MYXlv dXQoKQogICB7CkBAIC03NTcsNiArNzU3LDEyIEBAIGNsYXNzIExheW91dAog CSAgICB8fCBzdHJuY21wKG5hbWUsICIuc3RhYiIsIHNpemVvZigiLnN0YWIi KSAtIDEpID09IDApOwogICB9CiAKKyAgLy8gUmV0dXJuIHRydWUgaWYgRklM RSBpcyBhbiBpbnB1dCBmaWxlIHdob3NlIGJhc2UgbmFtZSBtYXRjaGVzCisg IC8vIEZJTEVfTkFNRS4gIFRoZSBiYXNlIG5hbWUgbXVzdCBoYXZlIGFuIGV4 dGVuc2lvbiBvZiAiLm8iLCBhbmQKKyAgLy8gbXVzdCBiZSBleGFjdGx5IEZJ TEVfTkFNRS5vIG9yIEZJTEVfTkFNRSwgb25lIGNoYXJhY3RlciwgIi5vIi4K KyAgc3RhdGljIGJvb2wKKyAgbWF0Y2hfZmlsZV9uYW1lKGNvbnN0IGNoYXIq IGZpbGUsIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSk7CisKICAgLy8gUmV0dXJu IHRydWUgaWYgUkVMT0JKIGlzIGFuIGlucHV0IGZpbGUgd2hvc2UgYmFzZSBu YW1lIG1hdGNoZXMKICAgLy8gRklMRV9OQU1FLiAgVGhlIGJhc2UgbmFtZSBt dXN0IGhhdmUgYW4gZXh0ZW5zaW9uIG9mICIubyIsIGFuZAogICAvLyBtdXN0 IGJlIGV4YWN0bHkgRklMRV9OQU1FLm8gb3IgRklMRV9OQU1FLCBvbmUgY2hh cmFjdGVyLCAiLm8iLgpAQCAtMTQyMCw2ICsxNDI2LDggQEAgY2xhc3MgTGF5 b3V0CiAgIEluY3JlbWVudGFsX2lucHV0cyogaW5jcmVtZW50YWxfaW5wdXRz XzsKICAgLy8gV2hldGhlciB3ZSByZWNvcmQgb3V0cHV0IHNlY3Rpb24gZGF0 YSBjcmVhdGVkIGluIHNjcmlwdAogICBib29sIHJlY29yZF9vdXRwdXRfc2Vj dGlvbl9kYXRhX2Zyb21fc2NyaXB0XzsKKyAgLy8gV2hldGhlciB0byBvcHRp bWl6ZSB0aGUgZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24uCisgIGJvb2wgb3B0 aW1pemVfZWhmcmFtZV87CiAgIC8vIExpc3Qgb2Ygb3V0cHV0IGRhdGEgdGhh dCBuZWVkcyB0byBiZSByZW1vdmVkIGF0IHJlbGF4YXRpb24gY2xlYW4gdXAu CiAgIE91dHB1dF9zZWN0aW9uX2RhdGFfbGlzdCBzY3JpcHRfb3V0cHV0X3Nl Y3Rpb25fZGF0YV9saXN0XzsKICAgLy8gU3RydWN0dXJlIHRvIHNhdmUgc2Vn bWVudCBzdGF0ZXMgYmVmb3JlIGVudGVyaW5nIHRoZSByZWxheGF0aW9uIGxv b3AuCmRpZmYgLS1naXQgYS9nb2xkL21haW4uY2MgYi9nb2xkL21haW4uY2MK aW5kZXggYmI4NjYxMy4uYmJlZmY2NSAxMDA2NDQKLS0tIGEvZ29sZC9tYWlu LmNjCisrKyBiL2dvbGQvbWFpbi5jYwpAQCAtMjI3LDcgKzIyNyw4IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgIC8vIFRoZSBsYXlvdXQg b2JqZWN0LgogICBMYXlvdXQgbGF5b3V0KGNvbW1hbmRfbGluZS5udW1iZXJf b2ZfaW5wdXRfZmlsZXMoKSwKLQkJJmNvbW1hbmRfbGluZS5zY3JpcHRfb3B0 aW9ucygpKTsKKwkJJmNvbW1hbmRfbGluZS5zY3JpcHRfb3B0aW9ucygpLAor CQljb21tYW5kX2xpbmUuY3J0YmVnaW5UKCkpOwogCiAgIGlmIChsYXlvdXQu aW5jcmVtZW50YWxfaW5wdXRzKCkgIT0gTlVMTCkKICAgICBsYXlvdXQuaW5j cmVtZW50YWxfaW5wdXRzKCktPnJlcG9ydF9jb21tYW5kX2xpbmUoYXJnYywg YXJndik7CmRpZmYgLS1naXQgYS9nb2xkL29wdGlvbnMuY2MgYi9nb2xkL29w dGlvbnMuY2MKaW5kZXggNzMxMDYxZC4uY2Y3YWYyZCAxMDA2NDQKLS0tIGEv Z29sZC9vcHRpb25zLmNjCisrKyBiL2dvbGQvb3B0aW9ucy5jYwpAQCAtMzgs NiArMzgsNyBAQAogI2luY2x1ZGUgInNjcmlwdC5oIgogI2luY2x1ZGUgInRh cmdldC1zZWxlY3QuaCIKICNpbmNsdWRlICJvcHRpb25zLmgiCisjaW5jbHVk ZSAibGF5b3V0LmgiCiAjaW5jbHVkZSAicGx1Z2luLmgiCiAKIG5hbWVzcGFj ZSBnb2xkCkBAIC0xMzQ2LDYgKzEzNDcsOSBAQCBJbnB1dF9hcmd1bWVudHM6 OmFkZF9maWxlKElucHV0X2ZpbGVfYXJndW1lbnQmIGZpbGUpCiAgICAgICBy ZXR1cm4gdGhpcy0+aW5wdXRfYXJndW1lbnRfbGlzdF8uYmFjaygpLmxpYigp LT5hZGRfZmlsZShmaWxlKTsKICAgICB9CiAgIHRoaXMtPmlucHV0X2FyZ3Vt ZW50X2xpc3RfLnB1c2hfYmFjayhJbnB1dF9hcmd1bWVudChmaWxlKSk7Cisg IGlmICghdGhpcy0+aGFzX2NydGJlZ2luVF8KKyAgICAgICYmIExheW91dDo6 bWF0Y2hfZmlsZV9uYW1lKGZpbGUubmFtZSgpLCAiY3J0YmVnaW5UIikpCisg ICAgdGhpcy0+aGFzX2NydGJlZ2luVF8gPSB0cnVlOwogICByZXR1cm4gdGhp cy0+aW5wdXRfYXJndW1lbnRfbGlzdF8uYmFjaygpOwogfQogCmRpZmYgLS1n aXQgYS9nb2xkL29wdGlvbnMuaCBiL2dvbGQvb3B0aW9ucy5oCmluZGV4IDZk ODI3ZjEuLjdlODgxZGYgMTAwNjQ0Ci0tLSBhL2dvbGQvb3B0aW9ucy5oCisr KyBiL2dvbGQvb3B0aW9ucy5oCkBAIC0xOTcwLDcgKzE5NzAsOCBAQCBjbGFz cyBJbnB1dF9hcmd1bWVudHMKICAgdHlwZWRlZiBJbnB1dF9hcmd1bWVudF9s aXN0Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIAogICBJbnB1 dF9hcmd1bWVudHMoKQotICAgIDogaW5wdXRfYXJndW1lbnRfbGlzdF8oKSwg aW5fZ3JvdXBfKGZhbHNlKSwgaW5fbGliXyhmYWxzZSksIGZpbGVfY291bnRf KDApCisgICAgOiBpbnB1dF9hcmd1bWVudF9saXN0XygpLCBpbl9ncm91cF8o ZmFsc2UpLCBpbl9saWJfKGZhbHNlKSwKKyAgICAgIGZpbGVfY291bnRfKDAp LCBoYXNfY3J0YmVnaW5UXyhmYWxzZSkKICAgeyB9CiAKICAgLy8gQWRkIGEg ZmlsZS4KQEAgLTIwMzAsMTEgKzIwMzEsMTggQEAgY2xhc3MgSW5wdXRfYXJn dW1lbnRzCiAgIG51bWJlcl9vZl9pbnB1dF9maWxlcygpIGNvbnN0CiAgIHsg cmV0dXJuIHRoaXMtPmZpbGVfY291bnRfOyB9CiAKKyAgLy8gUmV0dXJuIHdo ZXRoZXIgdGhlcmUgaXMgYSBjcnRiZWdpblQgZmlsZS4KKyAgYm9vbAorICBo YXNfY3J0YmVnaW5UKCkgY29uc3QKKyAgeyByZXR1cm4gdGhpcy0+aGFzX2Ny dGJlZ2luVF87IH0KKwogIHByaXZhdGU6CiAgIElucHV0X2FyZ3VtZW50X2xp c3QgaW5wdXRfYXJndW1lbnRfbGlzdF87CiAgIGJvb2wgaW5fZ3JvdXBfOwog ICBib29sIGluX2xpYl87CiAgIHVuc2lnbmVkIGludCBmaWxlX2NvdW50XzsK KyAgLy8gV2hldGhlciB0aGVyZSBpcyBhIGNydGJlZ2luVCBmaWxlLgorICBi b29sIGhhc19jcnRiZWdpblRfOwogfTsKIAogCkBAIC0yMTAzLDYgKzIxMTEs MTEgQEAgY2xhc3MgQ29tbWFuZF9saW5lCiAgIGVuZCgpIGNvbnN0CiAgIHsg cmV0dXJuIHRoaXMtPmlucHV0c18uZW5kKCk7IH0KIAorICAvLyBXaGV0aGVy IHRoZXJlIGlzIGEgY3J0YmVnaW5UIGZpbGUuCisgIGJvb2wKKyAgY3J0YmVn aW5UKCkgY29uc3QKKyAgeyByZXR1cm4gdGhpcy0+aW5wdXRzXy5oYXNfY3J0 YmVnaW5UKCk7IH0KKwogIHByaXZhdGU6CiAgIENvbW1hbmRfbGluZShjb25z dCBDb21tYW5kX2xpbmUmKTsKICAgQ29tbWFuZF9saW5lJiBvcGVyYXRvcj0o Y29uc3QgQ29tbWFuZF9saW5lJik7Ci0tIAoxLjkuMwoK --001a11c24f28f2028f050ad7aa79--