From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30307 invoked by alias); 22 Dec 2014 22:40:15 -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 30287 invoked by uid 89); 22 Dec 2014 22:40:14 -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-ob0-f174.google.com Received: from mail-ob0-f174.google.com (HELO mail-ob0-f174.google.com) (209.85.214.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 22 Dec 2014 22:40:11 +0000 Received: by mail-ob0-f174.google.com with SMTP id nt9so25697619obb.5; Mon, 22 Dec 2014 14:40:09 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.60.250.164 with SMTP id zd4mr14430029oec.13.1419288009741; Mon, 22 Dec 2014 14:40:09 -0800 (PST) Received: by 10.76.185.7 with HTTP; Mon, 22 Dec 2014 14:40:09 -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: Mon, 22 Dec 2014 22:40: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=001a1134aa4aa7b50e050ad5bd07 X-IsSubscribed: yes X-SW-Source: 2014-12/txt/msg00234.txt.bz2 --001a1134aa4aa7b50e050ad5bd07 Content-Type: text/plain; charset=UTF-8 Content-length: 1870 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. --001a1134aa4aa7b50e050ad5bd07 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_i40feoa10 Content-length: 20659 RnJvbSBiNGU3M2JjOTI1ZGZmZjBkYTFmY2NhNjE1OWE5YjBjNWQ3NzkyZWE5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjAgRGVjIDIwMTQgMDU6 NDU6NTEgLTA4MDAKU3ViamVjdDogW1BBVENIXSBUcmVhdCAuZWhfZnJhbWUg c2VjdGlvbiBiZWZvcmUgY3J0YmVnaW5UIGFzIG5vcm1hbCBpbnB1dAoKRm9y Y2UgdGhlIGV4Y2VwdGlvbiBmcmFtZSBzZWN0aW9uIGZyb20gaW5wdXQgZmls ZXMgYmVmb3JlIHRoZSBjcnRiZWdpblQKZmlsZSB0byBiZSBoYW5kbGVkIGFz IGFuIG9yZGluYXJ5IGlucHV0IHNlY3Rpb24gaWYgd2UgYXJlbid0IGNyZWF0 aW5nCnRoZSBleGNlcHRpb24gZnJhbWUgaGVhZGVyLiAgSWYgd2UgZG9uJ3Qg ZG8gdGhpcywgd2Ugd29uJ3QgY29ycmVjdGx5CmhhbmRsZSB0aGUgc3BlY2lh bCBtYXJrZXIgc3ltYm9sIGluIHRoZSBleGNlcHRpb24gZnJhbWUgc2VjdGlv biBpbiB0aGUKY3J0YmVnaW5UIGZpbGUuCgoJUFIgZ29sZC8xNDY3NQoJKiBl aGZyYW1lLmNjIChFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlv bik6IEZvcmNlIHRoZQoJZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24gZnJvbSBp bnB1dCBmaWxlcyBpZiBpdCBjYW4ndCBiZQoJb3B0aW1pemVkLgoJKEVoX2Zy YW1lOjphZGRfZWhmcmFtZV9pbnB1dF9zZWN0aW9uPDMyLCBmYWxzZT4pOiBV cGRhdGVkLgoJKEVoX2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1dF9zZWN0aW9u PDMyLCB0cnVlPik6IExpa2V3aXNlLgoJKEVoX2ZyYW1lOjphZGRfZWhmcmFt ZV9pbnB1dF9zZWN0aW9uPDY0LCBmYWxzZT4pOiBMaWtld2lzZS4KCShFaF9m cmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbjw2NCwgdHJ1ZT4pOiBM aWtld2lzZS4KCSogZWhmcmFtZS5oIChFaF9mcmFtZTo6YWRkX2VoZnJhbWVf aW5wdXRfc2VjdGlvbik6IEFkZCBhCglib29sIHBhcmFtZXRlciB0byBpbmRp Y2F0ZSBpZiB0aGUgZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24KCWNhbiBiZSBv cHRpbWl6ZWQuCgkqIGxheW91dC5jYyAoTGF5b3V0OjpMYXlvdXQpOiBJbml0 aWFsaXplIGhhc19jcnRiZWdpblRfIHRvCgloYXNfY3J0YmVnaW5UIGFuZCBv cHRpbWl6ZV9laGZyYW1lXyB0byAhaGFzX2NydGJlZ2luVC4KCShMYXlvdXQ6 OmxheW91dF9laF9mcmFtZSk6IFBhc3MgdGhpcy0+b3B0aW1pemVfZWhmcmFt ZV8gdG8KCUVoX2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1dF9zZWN0aW9uLgoJ KExheW91dDo6bWFrZV9laF9mcmFtZV9zZWN0aW9uKTogU2V0IHRoaXMtPm9w dGltaXplX2VoZnJhbWVfCgl0byB0cnVlIHdoZW4gcHJvY2Vzc2luZyB0aGUg Y3J0YmVnaW5UIGZpbGUgaWYgaXQgaXMgb24gY29tbWFuZAoJbGluZS4KCShM YXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZSAoY29uc3QgY2hhciosIGNvbnN0IGNo YXIqKSk6IE5ldy4KCShMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZShjb25zdCBS ZWxvYmoqLCBjb25zdCBjaGFyKik6IFVzZSBpdC4KCSogbGF5b3V0LmggKExh eW91dDo6TGF5b3V0KTogQWRkIGhhc19jcnRiZWdpblQuCgkoTGF5b3V0Ojpt YXRjaF9maWxlX25hbWUgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikpOiBO ZXcuCgkoTGF5b3V0KTogQWRkIGhhc19jcnRiZWdpblRfIGFuZCBvcHRpbWl6 ZV9laGZyYW1lXyBtZW1iZXJzLgoJKiBtYWluLmNjIChtYWluKTogVXBkYXRl IGxheW91dC4KCSogb3B0aW9ucy5jYyAoSW5wdXRfYXJndW1lbnRzOjphZGRf ZmlsZSk6IFNldAoJdGhpcy0+aGFzX2NydGJlZ2luVF8gdG8gdHJ1ZSBpZiB0 aGVyZSBpcyBhIGNydGJlZ2luVCBmaWxlLgoJKiBvcHRpb25zLmggKElucHV0 X2FyZ3VtZW50czo6SW5wdXRfYXJndW1lbnRzKTogSW5pdGlhbGl6ZQoJaGFz X2NydGJlZ2luVF8uCgkoSW5wdXRfYXJndW1lbnRzOjpoYXNfY3J0YmVnaW5U KTogTmV3IGZ1bmN0aW9uLgoJKElucHV0X2FyZ3VtZW50czo6aGFzX2NydGJl Z2luVF8pOiBOZXcgYm9vbCBtZW1iZXIuCgkoQ29tbWFuZF9saW5lOjpjcnRi ZWdpblQpOiBOZXcgZnVuY3Rpb24uCi0tLQogZ29sZC9DaGFuZ2VMb2cgIHwg MzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZ29sZC9l aGZyYW1lLmNjIHwgMzEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LQogZ29sZC9laGZyYW1lLmggIHwgIDYgKysrKy0tCiBnb2xkL2xheW91dC5j YyAgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQog Z29sZC9sYXlvdXQuaCAgIHwgMTIgKysrKysrKysrKystCiBnb2xkL21haW4u Y2MgICAgfCAgMyArKy0KIGdvbGQvb3B0aW9ucy5jYyB8ICA0ICsrKysKIGdv bGQvb3B0aW9ucy5oICB8IDE1ICsrKysrKysrKysrKysrLQogOCBmaWxlcyBj aGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZ29sZC9DaGFuZ2VMb2cgYi9nb2xkL0NoYW5nZUxvZwpp bmRleCBmNjdkZjE3Li4xZTg0NmM5IDEwMDY0NAotLS0gYS9nb2xkL0NoYW5n ZUxvZworKysgYi9nb2xkL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisy MDE0LTEyLTIyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisK KwlQUiBnb2xkLzE0Njc1CisJKiBlaGZyYW1lLmNjIChFaF9mcmFtZTo6YWRk X2VoZnJhbWVfaW5wdXRfc2VjdGlvbik6IEZvcmNlIHRoZQorCWV4Y2VwdGlv biBmcmFtZSBzZWN0aW9uIGZyb20gaW5wdXQgZmlsZXMgaWYgaXQgY2FuJ3Qg YmUKKwlvcHRpbWl6ZWQuCisJKEVoX2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1 dF9zZWN0aW9uPDMyLCBmYWxzZT4pOiBVcGRhdGVkLgorCShFaF9mcmFtZTo6 YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbjwzMiwgdHJ1ZT4pOiBMaWtld2lz ZS4KKwkoRWhfZnJhbWU6OmFkZF9laGZyYW1lX2lucHV0X3NlY3Rpb248NjQs IGZhbHNlPik6IExpa2V3aXNlLgorCShFaF9mcmFtZTo6YWRkX2VoZnJhbWVf aW5wdXRfc2VjdGlvbjw2NCwgdHJ1ZT4pOiBMaWtld2lzZS4KKwkqIGVoZnJh bWUuaCAoRWhfZnJhbWU6OmFkZF9laGZyYW1lX2lucHV0X3NlY3Rpb24pOiBB ZGQgYQorCWJvb2wgcGFyYW1ldGVyIHRvIGluZGljYXRlIGlmIHRoZSBleGNl cHRpb24gZnJhbWUgc2VjdGlvbgorCWNhbiBiZSBvcHRpbWl6ZWQuCisJKiBs YXlvdXQuY2MgKExheW91dDo6TGF5b3V0KTogSW5pdGlhbGl6ZSBoYXNfY3J0 YmVnaW5UXyB0bworCWhhc19jcnRiZWdpblQgYW5kIG9wdGltaXplX2VoZnJh bWVfIHRvICFoYXNfY3J0YmVnaW5ULgorCShMYXlvdXQ6OmxheW91dF9laF9m cmFtZSk6IFBhc3MgdGhpcy0+b3B0aW1pemVfZWhmcmFtZV8gdG8KKwlFaF9m cmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbi4KKwkoTGF5b3V0Ojpt YWtlX2VoX2ZyYW1lX3NlY3Rpb24pOiBTZXQgdGhpcy0+b3B0aW1pemVfZWhm cmFtZV8KKwl0byB0cnVlIHdoZW4gcHJvY2Vzc2luZyB0aGUgY3J0YmVnaW5U IGZpbGUgaWYgaXQgaXMgb24gY29tbWFuZAorCWxpbmUuCisJKExheW91dDo6 bWF0Y2hfZmlsZV9uYW1lIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopKTog TmV3LgorCShMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZShjb25zdCBSZWxvYmoq LCBjb25zdCBjaGFyKik6IFVzZSBpdC4KKwkqIGxheW91dC5oIChMYXlvdXQ6 OkxheW91dCk6IEFkZCBoYXNfY3J0YmVnaW5ULgorCShMYXlvdXQ6Om1hdGNo X2ZpbGVfbmFtZSAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSk6IE5ldy4K KwkoTGF5b3V0KTogQWRkIGhhc19jcnRiZWdpblRfIGFuZCBvcHRpbWl6ZV9l aGZyYW1lXyBtZW1iZXJzLgorCSogbWFpbi5jYyAobWFpbik6IFVwZGF0ZSBs YXlvdXQuCisJKiBvcHRpb25zLmNjIChJbnB1dF9hcmd1bWVudHM6OmFkZF9m aWxlKTogU2V0CisJdGhpcy0+aGFzX2NydGJlZ2luVF8gdG8gdHJ1ZSBpZiB0 aGVyZSBpcyBhIGNydGJlZ2luVCBmaWxlLgorCSogb3B0aW9ucy5oIChJbnB1 dF9hcmd1bWVudHM6OklucHV0X2FyZ3VtZW50cyk6IEluaXRpYWxpemUKKwlo YXNfY3J0YmVnaW5UXy4KKwkoSW5wdXRfYXJndW1lbnRzOjpoYXNfY3J0YmVn aW5UKTogTmV3IGZ1bmN0aW9uLgorCShJbnB1dF9hcmd1bWVudHM6Omhhc19j cnRiZWdpblRfKTogTmV3IGJvb2wgbWVtYmVyLgorCShDb21tYW5kX2xpbmU6 OmNydGJlZ2luVCk6IE5ldyBmdW5jdGlvbi4KKwogMjAxNC0xMi0yMCAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgogCiAJUFIgZ29sZC8xNDYw OApkaWZmIC0tZ2l0IGEvZ29sZC9laGZyYW1lLmNjIGIvZ29sZC9laGZyYW1l LmNjCmluZGV4IGM3MTFiYWMuLmNlMzc0MWIgMTAwNjQ0Ci0tLSBhL2dvbGQv ZWhmcmFtZS5jYworKysgYi9nb2xkL2VoZnJhbWUuY2MKQEAgLTU3Niw3ICs1 NzYsOCBAQCBFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbigK ICAgICBzZWN0aW9uX3NpemVfdHlwZSBzeW1ib2xfbmFtZXNfc2l6ZSwKICAg ICB1bnNpZ25lZCBpbnQgc2huZHgsCiAgICAgdW5zaWduZWQgaW50IHJlbG9j X3NobmR4LAotICAgIHVuc2lnbmVkIGludCByZWxvY190eXBlKQorICAgIHVu c2lnbmVkIGludCByZWxvY190eXBlLAorICAgIGJvb2wgb3B0aW1pemVfZWhm cmFtZSkKIHsKICAgLy8gR2V0IHRoZSBzZWN0aW9uIGNvbnRlbnRzLgogICBz ZWN0aW9uX3NpemVfdHlwZSBjb250ZW50c19sZW47CkBAIC01OTUsMTUgKzU5 NiwyMSBAQCBFaF9mcmFtZTo6YWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbigK ICAgICByZXR1cm4gZmFsc2U7CiAKICAgTmV3X2NpZXMgbmV3X2NpZXM7Ci0g IGlmICghdGhpcy0+ZG9fYWRkX2VoZnJhbWVfaW5wdXRfc2VjdGlvbihvYmpl Y3QsIHN5bWJvbHMsIHN5bWJvbHNfc2l6ZSwKKyAgYm9vbCByZWNvZ25pemVk X2VoX2ZyYW1lX3NlY3Rpb24KKyAgICA9IHRoaXMtPmRvX2FkZF9laGZyYW1l X2lucHV0X3NlY3Rpb24ob2JqZWN0LCBzeW1ib2xzLCBzeW1ib2xzX3NpemUs CiAJCQkJCSAgc3ltYm9sX25hbWVzLCBzeW1ib2xfbmFtZXNfc2l6ZSwKIAkJ CQkJICBzaG5keCwgcmVsb2Nfc2huZHgsCiAJCQkJCSAgcmVsb2NfdHlwZSwg cGNvbnRlbnRzLAotCQkJCQkgIGNvbnRlbnRzX2xlbiwgJm5ld19jaWVzKSkK KwkJCQkJICBjb250ZW50c19sZW4sICZuZXdfY2llcyk7CisgIGlmICghcmVj b2duaXplZF9laF9mcmFtZV9zZWN0aW9uICYmIHRoaXMtPmVoX2ZyYW1lX2hk cl8gIT0gTlVMTCkKKyAgICB0aGlzLT5laF9mcmFtZV9oZHJfLT5mb3VuZF91 bnJlY29nbml6ZWRfZWhfZnJhbWVfc2VjdGlvbigpOworCisgIC8vIElmIHdl IGRvbid0IHVucmVjb2duaXplIHRoZSBleGNlcHRpb24gZnJhbWUgc2VjdGlv biBvciBpdCBjYW4ndAorICAvLyBiZSBvcHRpbWl6ZWQsIHRoZW4gcmV0dXJu IGZhbHNlIHRvIGZvcmNlIGl0IHRvIGJlIGhhbmRsZWQgYXMgYW4KKyAgLy8g b3JkaW5hcnkgaW5wdXQgc2VjdGlvbi4KKyAgaWYgKCFyZWNvZ25pemVkX2Vo X2ZyYW1lX3NlY3Rpb24KKyAgICAgIHx8ICh0aGlzLT5laF9mcmFtZV9oZHJf ID09IE5VTEwgJiYgIW9wdGltaXplX2VoZnJhbWUpKQogICAgIHsKLSAgICAg IGlmICh0aGlzLT5laF9mcmFtZV9oZHJfICE9IE5VTEwpCi0JdGhpcy0+ZWhf ZnJhbWVfaGRyXy0+Zm91bmRfdW5yZWNvZ25pemVkX2VoX2ZyYW1lX3NlY3Rp b24oKTsKLQogICAgICAgZm9yIChOZXdfY2llczo6aXRlcmF0b3IgcCA9IG5l d19jaWVzLmJlZ2luKCk7CiAJICAgcCAhPSBuZXdfY2llcy5lbmQoKTsKIAkg ICArK3ApCkBAIC0xMjI0LDcgKzEyMzEsOCBAQCBFaF9mcmFtZTo6YWRkX2Vo ZnJhbWVfaW5wdXRfc2VjdGlvbjwzMiwgZmFsc2U+KAogICAgIHNlY3Rpb25f c2l6ZV90eXBlIHN5bWJvbF9uYW1lc19zaXplLAogICAgIHVuc2lnbmVkIGlu dCBzaG5keCwKICAgICB1bnNpZ25lZCBpbnQgcmVsb2Nfc2huZHgsCi0gICAg dW5zaWduZWQgaW50IHJlbG9jX3R5cGUpOworICAgIHVuc2lnbmVkIGludCBy ZWxvY190eXBlLAorICAgIGJvb2wgb3B0aW1pemVfZWhmcmFtZSk7CiAjZW5k aWYKIAogI2lmZGVmIEhBVkVfVEFSR0VUXzMyX0JJRwpAQCAtMTIzOCw3ICsx MjQ2LDggQEAgRWhfZnJhbWU6OmFkZF9laGZyYW1lX2lucHV0X3NlY3Rpb248 MzIsIHRydWU+KAogICAgIHNlY3Rpb25fc2l6ZV90eXBlIHN5bWJvbF9uYW1l c19zaXplLAogICAgIHVuc2lnbmVkIGludCBzaG5keCwKICAgICB1bnNpZ25l ZCBpbnQgcmVsb2Nfc2huZHgsCi0gICAgdW5zaWduZWQgaW50IHJlbG9jX3R5 cGUpOworICAgIHVuc2lnbmVkIGludCByZWxvY190eXBlLAorICAgIGJvb2wg b3B0aW1pemVfZWhmcmFtZSk7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfVEFS R0VUXzY0X0xJVFRMRQpAQCAtMTI1Miw3ICsxMjYxLDggQEAgRWhfZnJhbWU6 OmFkZF9laGZyYW1lX2lucHV0X3NlY3Rpb248NjQsIGZhbHNlPigKICAgICBz ZWN0aW9uX3NpemVfdHlwZSBzeW1ib2xfbmFtZXNfc2l6ZSwKICAgICB1bnNp Z25lZCBpbnQgc2huZHgsCiAgICAgdW5zaWduZWQgaW50IHJlbG9jX3NobmR4 LAotICAgIHVuc2lnbmVkIGludCByZWxvY190eXBlKTsKKyAgICB1bnNpZ25l ZCBpbnQgcmVsb2NfdHlwZSwKKyAgICBib29sIG9wdGltaXplX2VoZnJhbWUp OwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1RBUkdFVF82NF9CSUcKQEAgLTEy NjYsNyArMTI3Niw4IEBAIEVoX2ZyYW1lOjphZGRfZWhmcmFtZV9pbnB1dF9z ZWN0aW9uPDY0LCB0cnVlPigKICAgICBzZWN0aW9uX3NpemVfdHlwZSBzeW1i b2xfbmFtZXNfc2l6ZSwKICAgICB1bnNpZ25lZCBpbnQgc2huZHgsCiAgICAg dW5zaWduZWQgaW50IHJlbG9jX3NobmR4LAotICAgIHVuc2lnbmVkIGludCBy ZWxvY190eXBlKTsKKyAgICB1bnNpZ25lZCBpbnQgcmVsb2NfdHlwZSwKKyAg ICBib29sIG9wdGltaXplX2VoZnJhbWUpOwogI2VuZGlmCiAKIH0gLy8gRW5k IG5hbWVzcGFjZSBnb2xkLgpkaWZmIC0tZ2l0IGEvZ29sZC9laGZyYW1lLmgg Yi9nb2xkL2VoZnJhbWUuaAppbmRleCAyYWUxMmUwLi45M2Y3MjY4IDEwMDY0 NAotLS0gYS9nb2xkL2VoZnJhbWUuaAorKysgYi9nb2xkL2VoZnJhbWUuaApA QCAtMzcxLDcgKzM3MSw4IEBAIGNsYXNzIEVoX2ZyYW1lIDogcHVibGljIE91 dHB1dF9zZWN0aW9uX2RhdGEKICAgLy8gaXMgdGhlIHJlbG9jYXRpb24gc2Vj dGlvbiBpZiBhbnkgKDAgZm9yIG5vbmUsIC0xVSBmb3IgbXVsdGlwbGUpLgog ICAvLyBSRUxPQ19UWVBFIGlzIHRoZSB0eXBlIG9mIHRoZSByZWxvY2F0aW9u IHNlY3Rpb24gaWYgYW55LiAgVGhpcwogICAvLyByZXR1cm5zIHdoZXRoZXIg dGhlIHNlY3Rpb24gd2FzIGluY29ycG9yYXRlZCBpbnRvIHRoZSAuZWhfZnJh bWUKLSAgLy8gZGF0YS4KKyAgLy8gZGF0YS4gIE9QVElNSVpFX0VIRlJBTUUg aXMgdHJ1ZSBpZiB0aGUgZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24KKyAgLy8g Y2FuIGJlIG9wdGltaXplZC4KICAgdGVtcGxhdGU8aW50IHNpemUsIGJvb2wg YmlnX2VuZGlhbj4KICAgYm9vbAogICBhZGRfZWhmcmFtZV9pbnB1dF9zZWN0 aW9uKFNpemVkX3JlbG9ial9maWxlPHNpemUsIGJpZ19lbmRpYW4+KiBvYmpl Y3QsCkBAIC0zODAsNyArMzgxLDggQEAgY2xhc3MgRWhfZnJhbWUgOiBwdWJs aWMgT3V0cHV0X3NlY3Rpb25fZGF0YQogCQkJICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIqIHN5bWJvbF9uYW1lcywKIAkJCSAgICBzZWN0aW9uX3NpemVfdHlw ZSBzeW1ib2xfbmFtZXNfc2l6ZSwKIAkJCSAgICB1bnNpZ25lZCBpbnQgc2hu ZHgsIHVuc2lnbmVkIGludCByZWxvY19zaG5keCwKLQkJCSAgICB1bnNpZ25l ZCBpbnQgcmVsb2NfdHlwZSk7CisJCQkgICAgdW5zaWduZWQgaW50IHJlbG9j X3R5cGUsCisJCQkgICAgYm9vbCBvcHRpbWl6ZV9laGZyYW1lKTsKIAogICAv LyBBZGQgYSBDSUUgYW5kIGFuIEZERSBmb3IgYSBQTFQgc2VjdGlvbiwgdG8g cGVybWl0IHVud2luZGluZwogICAvLyB0aHJvdWdoIGEgUExULiAgVGhlIEZE RSBkYXRhIHNob3VsZCBzdGFydCB3aXRoIDggYnl0ZXMgb2YgemVybywKZGlm ZiAtLWdpdCBhL2dvbGQvbGF5b3V0LmNjIGIvZ29sZC9sYXlvdXQuY2MKaW5k ZXggMGE3MWEyYS4uMDU4NzNiNSAxMDA2NDQKLS0tIGEvZ29sZC9sYXlvdXQu Y2MKKysrIGIvZ29sZC9sYXlvdXQuY2MKQEAgLTQxOCw3ICs0MTgsOCBAQCBM YXlvdXRfdGFza19ydW5uZXI6OnJ1bihXb3JrcXVldWUqIHdvcmtxdWV1ZSwg Y29uc3QgVGFzayogdGFzaykKIAogLy8gTGF5b3V0IG1ldGhvZHMuCiAKLUxh eW91dDo6TGF5b3V0KGludCBudW1iZXJfb2ZfaW5wdXRfZmlsZXMsIFNjcmlw dF9vcHRpb25zKiBzY3JpcHRfb3B0aW9ucykKK0xheW91dDo6TGF5b3V0KGlu dCBudW1iZXJfb2ZfaW5wdXRfZmlsZXMsIFNjcmlwdF9vcHRpb25zKiBzY3Jp cHRfb3B0aW9ucywKKwkgICAgICAgYm9vbCBoYXNfY3J0YmVnaW5UKQogICA6 IG51bWJlcl9vZl9pbnB1dF9maWxlc18obnVtYmVyX29mX2lucHV0X2ZpbGVz KSwKICAgICBzY3JpcHRfb3B0aW9uc18oc2NyaXB0X29wdGlvbnMpLAogICAg IG5hbWVwb29sXygpLApAQCAtNDY5LDYgKzQ3MCw4IEBAIExheW91dDo6TGF5 b3V0KGludCBudW1iZXJfb2ZfaW5wdXRfZmlsZXMsIFNjcmlwdF9vcHRpb25z KiBzY3JpcHRfb3B0aW9ucykKICAgICB1bmlxdWVfc2VnbWVudF9mb3Jfc2Vj dGlvbnNfc3BlY2lmaWVkXyhmYWxzZSksCiAgICAgaW5jcmVtZW50YWxfaW5w dXRzXyhOVUxMKSwKICAgICByZWNvcmRfb3V0cHV0X3NlY3Rpb25fZGF0YV9m cm9tX3NjcmlwdF8oZmFsc2UpLAorICAgIGhhc19jcnRiZWdpblRfKGhhc19j cnRiZWdpblQpLAorICAgIG9wdGltaXplX2VoZnJhbWVfKCFoYXNfY3J0YmVn aW5UKSwKICAgICBzY3JpcHRfb3V0cHV0X3NlY3Rpb25fZGF0YV9saXN0Xygp LAogICAgIHNlZ21lbnRfc3RhdGVzXyhOVUxMKSwKICAgICByZWxheGF0aW9u X2RlYnVnX2NoZWNrXyhOVUxMKSwKQEAgLTE0MjgsNyArMTQzMSw4IEBAIExh eW91dDo6bGF5b3V0X2VoX2ZyYW1lKFNpemVkX3JlbG9ial9maWxlPHNpemUs IGJpZ19lbmRpYW4+KiBvYmplY3QsCiAJCQkJCQkJIHN5bWJvbF9uYW1lc19z aXplLAogCQkJCQkJCSBzaG5keCwKIAkJCQkJCQkgcmVsb2Nfc2huZHgsCi0J CQkJCQkJIHJlbG9jX3R5cGUpKQorCQkJCQkJCSByZWxvY190eXBlLAorCQkJ CQkJCSB0aGlzLT5vcHRpbWl6ZV9laGZyYW1lXykpCiAgICAgewogICAgICAg b3MtPnVwZGF0ZV9mbGFnc19mb3JfaW5wdXRfc2VjdGlvbihzaGRyLmdldF9z aF9mbGFncygpKTsKIApAQCAtMTQ4NSw2ICsxNDg5LDExIEBAIExheW91dDo6 bWFrZV9laF9mcmFtZV9zZWN0aW9uKGNvbnN0IFJlbG9iaiogb2JqZWN0KQog ICBpZiAob3MgPT0gTlVMTCkKICAgICByZXR1cm4gTlVMTDsKIAorICBpZiAo b2JqZWN0ICE9IE5VTEwKKyAgICAgICYmIHRoaXMtPmhhc19jcnRiZWdpblRf CisgICAgICAmJiBMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFtZShvYmplY3QsICJj cnRiZWdpblQiKSkKKyAgICB0aGlzLT5vcHRpbWl6ZV9laGZyYW1lXyA9IHRy dWU7CisKICAgaWYgKHRoaXMtPmVoX2ZyYW1lX3NlY3Rpb25fID09IE5VTEwp CiAgICAgewogICAgICAgdGhpcy0+ZWhfZnJhbWVfc2VjdGlvbl8gPSBvczsK QEAgLTUwOTIsMTkgKzUxMDEsMTggQEAgTGF5b3V0OjpvdXRwdXRfc2VjdGlv bl9uYW1lKGNvbnN0IFJlbG9iaiogcmVsb2JqLCBjb25zdCBjaGFyKiBuYW1l LAogICByZXR1cm4gbmFtZTsKIH0KIAotLy8gUmV0dXJuIHRydWUgaWYgUkVM T0JKIGlzIGFuIGlucHV0IGZpbGUgd2hvc2UgYmFzZSBuYW1lIG1hdGNoZXMK LS8vIEZJTEVfTkFNRS4gIFRoZSBiYXNlIG5hbWUgbXVzdCBoYXZlIGFuIGV4 dGVuc2lvbiBvZiAiLm8iLCBhbmQgbXVzdAotLy8gYmUgZXhhY3RseSBGSUxF X05BTUUubyBvciBGSUxFX05BTUUsIG9uZSBjaGFyYWN0ZXIsICIubyIuICBU aGlzIGlzCisvLyBSZXR1cm4gdHJ1ZSBpZiBGSUxFIGlzIGFuIGlucHV0IGZp bGUgd2hvc2UgYmFzZSBuYW1lIG1hdGNoZXMKKy8vIE1BVENILiAgVGhlIGJh c2UgbmFtZSBtdXN0IGhhdmUgYW4gZXh0ZW5zaW9uIG9mICIubyIsIGFuZCBt dXN0CisvLyBiZSBleGFjdGx5IE1BVENILm8gb3IgTUFUQ0gsIG9uZSBjaGFy YWN0ZXIsICIubyIuICBUaGlzIGlzCiAvLyB0byBtYXRjaCBjcnRiZWdpbi5v IGFzIHdlbGwgYXMgY3J0YmVnaW5TLm8gd2l0aG91dCBnZXR0aW5nIGNvbmZ1 c2VkCiAvLyBieSBvdGhlciBwb3NzaWJpbGl0aWVzLiAgT3ZlcmFsbCBtYXRj aGluZyB0aGUgZmlsZSBuYW1lIHRoaXMgd2F5IGlzCiAvLyBhIGRyZWFkZnVs IGhhY2ssIGJ1dCB0aGUgR05VIGxpbmtlciBkb2VzIGl0IGluIG9yZGVyIHRv IGJldHRlcgogLy8gc3VwcG9ydCBnY2MsIGFuZCB3ZSBuZWVkIHRvIGJlIGNv bXBhdGlibGUuCiAKIGJvb2wKLUxheW91dDo6bWF0Y2hfZmlsZV9uYW1lKGNv bnN0IFJlbG9iaiogcmVsb2JqLCBjb25zdCBjaGFyKiBtYXRjaCkKK0xheW91 dDo6bWF0Y2hfZmlsZV9uYW1lKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo YXIqIG1hdGNoKQogewotICBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZV9uYW1l KHJlbG9iai0+bmFtZSgpKTsKLSAgY29uc3QgY2hhciogYmFzZV9uYW1lID0g bGJhc2VuYW1lKGZpbGVfbmFtZS5jX3N0cigpKTsKKyAgY29uc3QgY2hhciog YmFzZV9uYW1lID0gbGJhc2VuYW1lKGZpbGUpOwogICBzaXplX3QgbWF0Y2hf bGVuID0gc3RybGVuKG1hdGNoKTsKICAgaWYgKHN0cm5jbXAoYmFzZV9uYW1l LCBtYXRjaCwgbWF0Y2hfbGVuKSAhPSAwKQogICAgIHJldHVybiBmYWxzZTsK QEAgLTUxMTQsNiArNTEyMiwxNyBAQCBMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFt ZShjb25zdCBSZWxvYmoqIHJlbG9iaiwgY29uc3QgY2hhciogbWF0Y2gpCiAg IHJldHVybiBtZW1jbXAoYmFzZV9uYW1lICsgYmFzZV9sZW4gLSAyLCAiLm8i LCAyKSA9PSAwOwogfQogCisvLyBSZXR1cm4gdHJ1ZSBpZiBGSUxFIGlzIGFu IGlucHV0IGZpbGUgd2hvc2UgYmFzZSBuYW1lIG1hdGNoZXMKKy8vIE1BVENI LiAgVGhlIGJhc2UgbmFtZSBtdXN0IGhhdmUgYW4gZXh0ZW5zaW9uIG9mICIu byIsIGFuZCBtdXN0CisvLyBiZSBleGFjdGx5IE1BVENILm8gb3IgTUFUQ0gs IG9uZSBjaGFyYWN0ZXIsICIubyIuCisKK2Jvb2wKK0xheW91dDo6bWF0Y2hf ZmlsZV9uYW1lKGNvbnN0IFJlbG9iaiogcmVsb2JqLCBjb25zdCBjaGFyKiBt YXRjaCkKK3sKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVfbmFtZShyZWxv YmotPm5hbWUoKSk7CisgIHJldHVybiBMYXlvdXQ6Om1hdGNoX2ZpbGVfbmFt ZShmaWxlX25hbWUuY19zdHIoKSwgbWF0Y2gpOworfQorCiAvLyBDaGVjayBp ZiBhIGNvbWRhdCBncm91cCBvciAuZ251LmxpbmtvbmNlIHNlY3Rpb24gd2l0 aCB0aGUgZ2l2ZW4KIC8vIE5BTUUgaXMgc2VsZWN0ZWQgZm9yIHRoZSBsaW5r LiAgSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHNlY3Rpb24sCiAvLyAqS0VQVF9T RUNUSU9OIGlzIHNldCB0byBwb2ludCB0byB0aGUgZXhpc3Rpbmcgc2VjdGlv biBhbmQgdGhlCmRpZmYgLS1naXQgYS9nb2xkL2xheW91dC5oIGIvZ29sZC9s YXlvdXQuaAppbmRleCAwMzJmNWYzLi4wMmViZjFmIDEwMDY0NAotLS0gYS9n b2xkL2xheW91dC5oCisrKyBiL2dvbGQvbGF5b3V0LmgKQEAgLTQ4OCw3ICs0 ODgsNyBAQCBlbnVtIE91dHB1dF9zZWN0aW9uX29yZGVyCiBjbGFzcyBMYXlv dXQKIHsKICBwdWJsaWM6Ci0gIExheW91dChpbnQgbnVtYmVyX29mX2lucHV0 X2ZpbGVzLCBTY3JpcHRfb3B0aW9ucyopOworICBMYXlvdXQoaW50IG51bWJl cl9vZl9pbnB1dF9maWxlcywgU2NyaXB0X29wdGlvbnMqLCBib29sIGhhc19j cnRiZWdpblQpOwogCiAgIH5MYXlvdXQoKQogICB7CkBAIC03NTcsNiArNzU3 LDEyIEBAIGNsYXNzIExheW91dAogCSAgICB8fCBzdHJuY21wKG5hbWUsICIu c3RhYiIsIHNpemVvZigiLnN0YWIiKSAtIDEpID09IDApOwogICB9CiAKKyAg Ly8gUmV0dXJuIHRydWUgaWYgRklMRSBpcyBhbiBpbnB1dCBmaWxlIHdob3Nl IGJhc2UgbmFtZSBtYXRjaGVzCisgIC8vIEZJTEVfTkFNRS4gIFRoZSBiYXNl IG5hbWUgbXVzdCBoYXZlIGFuIGV4dGVuc2lvbiBvZiAiLm8iLCBhbmQKKyAg Ly8gbXVzdCBiZSBleGFjdGx5IEZJTEVfTkFNRS5vIG9yIEZJTEVfTkFNRSwg b25lIGNoYXJhY3RlciwgIi5vIi4KKyAgc3RhdGljIGJvb2wKKyAgbWF0Y2hf ZmlsZV9uYW1lKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZpbGVf bmFtZSk7CisKICAgLy8gUmV0dXJuIHRydWUgaWYgUkVMT0JKIGlzIGFuIGlu cHV0IGZpbGUgd2hvc2UgYmFzZSBuYW1lIG1hdGNoZXMKICAgLy8gRklMRV9O QU1FLiAgVGhlIGJhc2UgbmFtZSBtdXN0IGhhdmUgYW4gZXh0ZW5zaW9uIG9m ICIubyIsIGFuZAogICAvLyBtdXN0IGJlIGV4YWN0bHkgRklMRV9OQU1FLm8g b3IgRklMRV9OQU1FLCBvbmUgY2hhcmFjdGVyLCAiLm8iLgpAQCAtMTQyMCw2 ICsxNDI2LDEwIEBAIGNsYXNzIExheW91dAogICBJbmNyZW1lbnRhbF9pbnB1 dHMqIGluY3JlbWVudGFsX2lucHV0c187CiAgIC8vIFdoZXRoZXIgd2UgcmVj b3JkIG91dHB1dCBzZWN0aW9uIGRhdGEgY3JlYXRlZCBpbiBzY3JpcHQKICAg Ym9vbCByZWNvcmRfb3V0cHV0X3NlY3Rpb25fZGF0YV9mcm9tX3NjcmlwdF87 CisgIC8vIFdoZXRoZXIgdGhlcmUgaXMgYSBjcnRiZWdpblQgZmlsZS4KKyAg Ym9vbCBoYXNfY3J0YmVnaW5UXzsKKyAgLy8gV2hldGhlciB0byBvcHRpbWl6 ZSB0aGUgZXhjZXB0aW9uIGZyYW1lIHNlY3Rpb24uCisgIGJvb2wgb3B0aW1p emVfZWhmcmFtZV87CiAgIC8vIExpc3Qgb2Ygb3V0cHV0IGRhdGEgdGhhdCBu ZWVkcyB0byBiZSByZW1vdmVkIGF0IHJlbGF4YXRpb24gY2xlYW4gdXAuCiAg IE91dHB1dF9zZWN0aW9uX2RhdGFfbGlzdCBzY3JpcHRfb3V0cHV0X3NlY3Rp b25fZGF0YV9saXN0XzsKICAgLy8gU3RydWN0dXJlIHRvIHNhdmUgc2VnbWVu dCBzdGF0ZXMgYmVmb3JlIGVudGVyaW5nIHRoZSByZWxheGF0aW9uIGxvb3Au CmRpZmYgLS1naXQgYS9nb2xkL21haW4uY2MgYi9nb2xkL21haW4uY2MKaW5k ZXggYmI4NjYxMy4uYmJlZmY2NSAxMDA2NDQKLS0tIGEvZ29sZC9tYWluLmNj CisrKyBiL2dvbGQvbWFpbi5jYwpAQCAtMjI3LDcgKzIyNyw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiAgIC8vIFRoZSBsYXlvdXQgb2Jq ZWN0LgogICBMYXlvdXQgbGF5b3V0KGNvbW1hbmRfbGluZS5udW1iZXJfb2Zf aW5wdXRfZmlsZXMoKSwKLQkJJmNvbW1hbmRfbGluZS5zY3JpcHRfb3B0aW9u cygpKTsKKwkJJmNvbW1hbmRfbGluZS5zY3JpcHRfb3B0aW9ucygpLAorCQlj b21tYW5kX2xpbmUuY3J0YmVnaW5UKCkpOwogCiAgIGlmIChsYXlvdXQuaW5j cmVtZW50YWxfaW5wdXRzKCkgIT0gTlVMTCkKICAgICBsYXlvdXQuaW5jcmVt ZW50YWxfaW5wdXRzKCktPnJlcG9ydF9jb21tYW5kX2xpbmUoYXJnYywgYXJn dik7CmRpZmYgLS1naXQgYS9nb2xkL29wdGlvbnMuY2MgYi9nb2xkL29wdGlv bnMuY2MKaW5kZXggNzMxMDYxZC4uY2Y3YWYyZCAxMDA2NDQKLS0tIGEvZ29s ZC9vcHRpb25zLmNjCisrKyBiL2dvbGQvb3B0aW9ucy5jYwpAQCAtMzgsNiAr MzgsNyBAQAogI2luY2x1ZGUgInNjcmlwdC5oIgogI2luY2x1ZGUgInRhcmdl dC1zZWxlY3QuaCIKICNpbmNsdWRlICJvcHRpb25zLmgiCisjaW5jbHVkZSAi bGF5b3V0LmgiCiAjaW5jbHVkZSAicGx1Z2luLmgiCiAKIG5hbWVzcGFjZSBn b2xkCkBAIC0xMzQ2LDYgKzEzNDcsOSBAQCBJbnB1dF9hcmd1bWVudHM6OmFk ZF9maWxlKElucHV0X2ZpbGVfYXJndW1lbnQmIGZpbGUpCiAgICAgICByZXR1 cm4gdGhpcy0+aW5wdXRfYXJndW1lbnRfbGlzdF8uYmFjaygpLmxpYigpLT5h ZGRfZmlsZShmaWxlKTsKICAgICB9CiAgIHRoaXMtPmlucHV0X2FyZ3VtZW50 X2xpc3RfLnB1c2hfYmFjayhJbnB1dF9hcmd1bWVudChmaWxlKSk7CisgIGlm ICghdGhpcy0+aGFzX2NydGJlZ2luVF8KKyAgICAgICYmIExheW91dDo6bWF0 Y2hfZmlsZV9uYW1lKGZpbGUubmFtZSgpLCAiY3J0YmVnaW5UIikpCisgICAg dGhpcy0+aGFzX2NydGJlZ2luVF8gPSB0cnVlOwogICByZXR1cm4gdGhpcy0+ aW5wdXRfYXJndW1lbnRfbGlzdF8uYmFjaygpOwogfQogCmRpZmYgLS1naXQg YS9nb2xkL29wdGlvbnMuaCBiL2dvbGQvb3B0aW9ucy5oCmluZGV4IDZkODI3 ZjEuLjdlODgxZGYgMTAwNjQ0Ci0tLSBhL2dvbGQvb3B0aW9ucy5oCisrKyBi L2dvbGQvb3B0aW9ucy5oCkBAIC0xOTcwLDcgKzE5NzAsOCBAQCBjbGFzcyBJ bnB1dF9hcmd1bWVudHMKICAgdHlwZWRlZiBJbnB1dF9hcmd1bWVudF9saXN0 Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIAogICBJbnB1dF9h cmd1bWVudHMoKQotICAgIDogaW5wdXRfYXJndW1lbnRfbGlzdF8oKSwgaW5f Z3JvdXBfKGZhbHNlKSwgaW5fbGliXyhmYWxzZSksIGZpbGVfY291bnRfKDAp CisgICAgOiBpbnB1dF9hcmd1bWVudF9saXN0XygpLCBpbl9ncm91cF8oZmFs c2UpLCBpbl9saWJfKGZhbHNlKSwKKyAgICAgIGZpbGVfY291bnRfKDApLCBo YXNfY3J0YmVnaW5UXyhmYWxzZSkKICAgeyB9CiAKICAgLy8gQWRkIGEgZmls ZS4KQEAgLTIwMzAsMTEgKzIwMzEsMTggQEAgY2xhc3MgSW5wdXRfYXJndW1l bnRzCiAgIG51bWJlcl9vZl9pbnB1dF9maWxlcygpIGNvbnN0CiAgIHsgcmV0 dXJuIHRoaXMtPmZpbGVfY291bnRfOyB9CiAKKyAgLy8gUmV0dXJuIHdoZXRo ZXIgdGhlcmUgaXMgYSBjcnRiZWdpblQgZmlsZS4KKyAgYm9vbAorICBoYXNf Y3J0YmVnaW5UKCkgY29uc3QKKyAgeyByZXR1cm4gdGhpcy0+aGFzX2NydGJl Z2luVF87IH0KKwogIHByaXZhdGU6CiAgIElucHV0X2FyZ3VtZW50X2xpc3Qg aW5wdXRfYXJndW1lbnRfbGlzdF87CiAgIGJvb2wgaW5fZ3JvdXBfOwogICBi b29sIGluX2xpYl87CiAgIHVuc2lnbmVkIGludCBmaWxlX2NvdW50XzsKKyAg Ly8gV2hldGhlciB0aGVyZSBpcyBhIGNydGJlZ2luVCBmaWxlLgorICBib29s IGhhc19jcnRiZWdpblRfOwogfTsKIAogCkBAIC0yMTAzLDYgKzIxMTEsMTEg QEAgY2xhc3MgQ29tbWFuZF9saW5lCiAgIGVuZCgpIGNvbnN0CiAgIHsgcmV0 dXJuIHRoaXMtPmlucHV0c18uZW5kKCk7IH0KIAorICAvLyBXaGV0aGVyIHRo ZXJlIGlzIGEgY3J0YmVnaW5UIGZpbGUuCisgIGJvb2wKKyAgY3J0YmVnaW5U KCkgY29uc3QKKyAgeyByZXR1cm4gdGhpcy0+aW5wdXRzXy5oYXNfY3J0YmVn aW5UKCk7IH0KKwogIHByaXZhdGU6CiAgIENvbW1hbmRfbGluZShjb25zdCBD b21tYW5kX2xpbmUmKTsKICAgQ29tbWFuZF9saW5lJiBvcGVyYXRvcj0oY29u c3QgQ29tbWFuZF9saW5lJik7Ci0tIAoxLjkuMwoK --001a1134aa4aa7b50e050ad5bd07--